procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; with TFrom3.Create(Application) begin ShowModal; Free; end; end;
procedure TForm2.Button1Click(Sender:TObject) ¦----------- begin ¦ Hide; //A:Close; (此时我想调用TForm2的方法关并释放Form2,即---) with TFrom3.Create(Application) begin ShowModal; Free; end; Close; end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TForm2.Button1Click(Sender:TObject) begin Close; end;procedure TForm2.OnDestory(Sender:TObject) begin TForm3.Create(Application); TForm3.ShowModal; end;
to Apollo47(阿波罗):老兄的代码并不能关闭Form2,不知老兄是否试过才贴上来的.to Musicwind(风里来雨里去).Hide可以"关闭"(隐藏),但不知能否释放掉呢?to ljhsoft(刘建华):TForm3.Create(Application); TForm3.ShowModal; 这两句代码能编译过吗?
to tzp(tangzhupeng);老兄的代码能关闭FORM2吗?再次麻烦各位,请您测试过后再贴上来行不,如果不明白我的意思,可以说一下. 请不要再贴一些无用的代码,以免浪费论坛的空间!!
奇怪的问题,得到奇怪的答案 tform1: procedure TForm1.Button1Click(Sender: TObject); begin try with Tform2.Create(application) do showmodal; except end; end;tform2: procedure TForm2.Button1Click(Sender: TObject); begin with TForm3.Create(application) do ShowModal; end;tform3: procedure TForm3.FormActivate(Sender: TObject); var i:integer; begin for i:=0 to application.ComponentCount -1 do if application.Components[i] is tform2 then begin enablewindow(tform2(application.components[i]).handle,true); tform2(application.components[i]).free; break; end; end;procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction); var i:integer; begin action := cafree; for i:=0 to application.componentcount-1 do if application.components[i] is tform3 then begin enablewindow(tform(application.components[i-1]).handle,true); break; end; end;
To yukuang: Hide以后,暂时隐藏,然后生成Form3,处理结束后, 再次调用 Close,注意,此处调用,将使程序的流程转到Form2.ShowModal句子以后 (结束了Form2 ShowModal以后的消息循环),接下来就是Free了。 没有问题!
begin
Action:=caFree;
with TFrom3.Create(Application)
begin
ShowModal;
Free;
end;
end;
begin ¦
Hide;
//A:Close; (此时我想调用TForm2的方法关并释放Form2,即---)
with TFrom3.Create(Application)
begin
ShowModal;
Free;
end;
Close;
end;
begin
Action:=caFree;
end;
procedure TForm2.Button1Click(Sender:TObject)
begin
Close;
end;procedure TForm2.OnDestory(Sender:TObject)
begin
TForm3.Create(Application);
TForm3.ShowModal;
end;
TForm3.ShowModal; 这两句代码能编译过吗?
Form3.showmodal;
Form3.free;
请不要再贴一些无用的代码,以免浪费论坛的空间!!
tform1:
procedure TForm1.Button1Click(Sender: TObject);
begin
try
with Tform2.Create(application) do
showmodal;
except end;
end;tform2:
procedure TForm2.Button1Click(Sender: TObject);
begin
with TForm3.Create(application) do
ShowModal;
end;tform3:
procedure TForm3.FormActivate(Sender: TObject);
var
i:integer;
begin
for i:=0 to application.ComponentCount -1 do
if application.Components[i] is tform2 then
begin
enablewindow(tform2(application.components[i]).handle,true);
tform2(application.components[i]).free;
break;
end;
end;procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
var i:integer;
begin
action := cafree;
for i:=0 to application.componentcount-1 do
if application.components[i] is tform3 then
begin
enablewindow(tform(application.components[i-1]).handle,true);
break;
end;
end;
Hide以后,暂时隐藏,然后生成Form3,处理结束后,
再次调用 Close,注意,此处调用,将使程序的流程转到Form2.ShowModal句子以后
(结束了Form2 ShowModal以后的消息循环),接下来就是Free了。
没有问题!