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

unitmain;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Fo... 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.
说明:想实现的功能:点击主窗体按钮,在另一窗体显示文本
外行切勿添乱!!
按123avc123 说述,解决了一些问题,并且把memo换成了richedit1.但仍没有解决根本问题-出现异常信息:找不到richedit1.Lines.LoadFromFile('f:\text\strAdd.rtf');文件。反复检查F盘的文件无误。并且在主窗体中是可以显示的。那么问题仍然存在于两窗体的调用中(好像是strAdd:=concat(header,'译文');)中的header的置主窗体传不过来.
请高手能否亲自做一做?
展开
 我来答
经朔S8
2008-04-19 · TA获得超过761个赞
知道小有建树答主
回答量:647
采纳率:0%
帮助的人:893万
展开全部
绝对引用
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出来。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式