当前位置:编程学习 > Delphi >>

万望delphi高手指点一下窗体调用中的问题!

unit main;
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TmainForm = class(TForm)

TreeView1: TTreeView;

CheckBox1: TCheckBox;

procedure CheckBox1Click(Sender: TObject);
private

{ Private declarations }
public

{ Public declarations }
end;

var
mainForm: TmainForm;
header:string;//用来存储Treeview1节点的项目字符串
implementation

uses version;

{$R *.dfm}

procedure TmainForm.CheckBox1Click(Sender: TObject);
begin
if Treeview1.Selected.Level<>1 then

begin

showmessage('请先在文选列表中选择篇目');

Treeview1.SetFocus ;

end
else

begin

header:=TreeView1.Selected.Text;//把篇目字符串赋给变量

if application.MessageBox(pchar(concat('您可以自己先尝试翻译一下再参考翻译文本,效果可能会更好'

+#13+#10+#10+'
您现在就要看《',header,'》的译文吗?')),'提示',mb_yesno)=idYes then

begin

Version.Show ;

end;
end;
end;
end.
------------
unit version;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TversionForm = class(TForm)

Memo1: TMemo;

Button1: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);
private

{ Private declarations }
public

{ Public declarations }
end;

var
versionForm: TversionForm;

implementation

uses main;

{$R *.dfm}

procedure TversionForm.FormCreate(Sender: TObject);
var
strAdd:string;
begin
header:=TreeView1.Selected.Text ;//取得点击主窗体treeview节点时的标题文本

{问题出在这一句,运行就说TreeView1:未声明的标识符}

strAdd:=concat(header,'译文'); //在原标题字符串后增加“译文”
memo1.Lines.LoadFromFile('f:\\text\\strAdd.rtf');

end;

procedure TversionForm.Button1Click(Sender: TObject);
begin
versionform.Close;//关闭窗体
end;
end.
说明:想实现的功能:点击主窗体按钮,在另一窗体显示文本
外行切勿添乱!!
答案:绝对引用
header:=mainform.TreeView1.Selected.Text;
其实,你的变量header,在versionForm的show之前不是已经取得了TreeView1.Selected.Text的值了吗?那么在versionForm的Create之前,干嘛还要取一次呢?直接strAdd:=header不就行了吗?
另外,在mainform里面,Version.Show;,是不是应该改为versionform.show;呢?

我试过了,代码是没有问题的。不过strAdd:=concat(header,'译文')这句并没有什么用处,因为在代码中strAdd没有使用出来。但这行没有出现问题。编译能正常通过。

我现在怀疑你的窗体构造有问题。因为你的versionForm在Create的时候要调用mainform的东西,所以versionform不能让程序一运行就自动构造。你只能把versionform设置为手动创建。在mainform的versionform.Show这行之前,先创建versionform,然后再show出来。

上一个:用Delphi 编译的记事本如何随txt文件自动打开?
下一个:求懂Delphi的翻译下此段描述

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,