很简单,SHOWMODAL问题。进来都有分。onlin waiting....e 比如FORM1有button1,点击button1就可以form2.showmodal,在FORM2中有button1,点击实现FORM3.showmodal.而form3上有BUtton1,点击则form2.button1.enabled:=false;但是程序报错?指点? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 showmodal時后面的窗體停止運行showmodal的窗口關閉時﹐向后台的窗體發wm_activeapp消息﹐通知其運行Show窗体时,后台程序继续运行! 在unit1中 uses unit2;在unit2中 uses unit3;在unit3中 uses unit2;把上面的引用语句都放在implementation下面,肯定是可以的。 同意 sysu(死树);应该是其它的地方出错! to sysu:报的是地址性错误。to ESU:RURr如果可以解决,请写具体步骤,OK?THANKS.TO 大力:确定已经添加单元文件。不可能可以。 unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementationuses Unit2;{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);var Dlg:tform2;begin try Dlg:=nil; Dlg:=Tform2.Create(Application); Dlg.ShowModal; finally Dlg.Free; end;end;end.-------------------unit Unit2;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm2 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form2: TForm2;implementationuses Unit1,Unit3;{$R *.DFM}procedure TForm2.Button1Click(Sender: TObject);var Dlg:tform3;begin try Dlg:=nil; Dlg:=Tform3.Create(Application); Dlg.ShowModal; finally Dlg.Free; end;end;end.--------------------unit Unit3;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm3 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form3: TForm3;implementationuses Unit2;{$R *.DFM}procedure TForm3.Button1Click(Sender: TObject);begin form2.edit1.text:='ddd';end;end. 你的Form2根本没有创建啊,当然就错了,创建的只是在Unit1中的dlg. 把Unit1中的改为下面的就行了:procedure TForm1.Button1Click(Sender: TObject);begin form2:=Tform2.Create(Application); // 这样才是创建了form2实例,原来只是声明而已 form2.ShowModal;end; 哦!你要把Unit2和Unit3单元中的//var// Form2: TForm2;//var// Form3: TForm3;语句都屏蔽掉。 form2全部变量未定义,因为使用dlg局部变量显示form2的,把form2显示那段的dlg全部改为form2即可 To sysu:能不能不改变FORM1中的代码?而也实现FORM2的创建? 只能修改FORM2,FORM3中代码,再想一下,THANKS. 可以的,在Unit2中创建时,Dlg:=Tform3.Create(Self);在Unit3中用 TForm2(Self.Owner).Edit1.Text := 'ddd'; to fancier(OP&&(C/C++)):你的方法不行。 同意,你所调用的form2根本没创建,你创建的是在Unit1中的dlg建议procedure TForm1.Button1Click(Sender: TObject);var Dlg:tform2;begin try Dlg:=nil; Dlg:=Tform2.Create(self); Dlg.ShowModal; finally Dlg.Free; end;end---------------------------------------------------procedure TForm2.Button1Click(Sender: TObject);var Dlg:tform3;begin try Dlg:=nil; Dlg:=Tform3.Create(self); Dlg.ShowModal; finally Dlg.Free; end;end;----------------------------------------procedure TForm3.Button1Click(Sender: TObject);begin (self.owner as TForm2).edit1.text:='ddd';end; showmodal 是模态窗口我在编是也出现过问题,我是用form1.visible来解决问题的,你可以试一试 to sysu:你的方法非常好,在此再次接着表示感谢!90分送上!10分是给其他人的,说了要 进来都有分的,绝不食言,希望不要介意。 mwy654321 兄弟领分 请问腾迅的QQlive是p2p的吗? 关于文件拷贝的简单问题,谢谢大家! 关于cxGrid的一个奇怪问题(急!在线等,如能解决,一定给分) 头文件的位置 为什么让它执行刷新,它就是不刷!!! locate的用法和原理是什么????? 请问高手怎样用listbox和api函数(openprocess,terminateprocess)杀进程?(有源代码更好哈)谢谢了啊~~~ 请问打印报表问题 dbgrid数据录入聚焦下一行??? 很晚了,有人吗?简单问题,求助如何复制、比较数组 文件拖动问题,高手进来,顺便散分
showmodal的窗口關閉時﹐向后台的窗體發wm_activeapp消息﹐
通知其運行
Show窗体时,后台程序继续运行!
在unit2中 uses unit3;
在unit3中 uses unit2;
把上面的引用语句都放在implementation下面,肯定是可以的。
应该是其它的地方出错!
to ESU:RURr如果可以解决,请写具体步骤,OK?THANKS.
TO 大力:确定已经添加单元文件。不可能可以。
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var Dlg:tform2;
begin
try
Dlg:=nil;
Dlg:=Tform2.Create(Application);
Dlg.ShowModal;
finally
Dlg.Free;
end;
end;end.-------------------
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm2 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementationuses Unit1,Unit3;{$R *.DFM}procedure TForm2.Button1Click(Sender: TObject);
var Dlg:tform3;
begin
try
Dlg:=nil;
Dlg:=Tform3.Create(Application);
Dlg.ShowModal;
finally
Dlg.Free;
end;
end;end.
--------------------
unit Unit3;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm3 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form3: TForm3;implementationuses Unit2;{$R *.DFM}procedure TForm3.Button1Click(Sender: TObject);
begin
form2.edit1.text:='ddd';
end;end.
创建的只是在Unit1中的dlg.
procedure TForm1.Button1Click(Sender: TObject);
begin
form2:=Tform2.Create(Application); // 这样才是创建了form2实例,原来只是声明而已
form2.ShowModal;
end;
你要把Unit2和Unit3单元中的
//var
// Form2: TForm2;//var
// Form3: TForm3;
语句都屏蔽掉。
只能修改FORM2,FORM3中代码,再想一下,THANKS.
在Unit3中用 TForm2(Self.Owner).Edit1.Text := 'ddd';
procedure TForm1.Button1Click(Sender: TObject);
var Dlg:tform2;
begin
try
Dlg:=nil;
Dlg:=Tform2.Create(self);
Dlg.ShowModal;
finally
Dlg.Free;
end;
end
---------------------------------------------------
procedure TForm2.Button1Click(Sender: TObject);
var Dlg:tform3;
begin
try
Dlg:=nil;
Dlg:=Tform3.Create(self);
Dlg.ShowModal;
finally
Dlg.Free;
end;
end;
----------------------------------------
procedure TForm3.Button1Click(Sender: TObject);
begin
(self.owner as TForm2).edit1.text:='ddd';
end;
进来都有分的,绝不食言,希望不要介意。