用 with TFrom2.Create(application) do try ShowModal; finally Free; end;
呵呵,如果是Button的事件处理中建非模式窗体,最好先判断是否已建过, 你的程序看起来好像没什么问题,但你要注意几点,可写成:if Form2 = nil then Form2 := TForm2.Create(nil); if (Form2 <> nil) and (not Form2.Visible) then begin Form2.Show; Form2.BringToFront; end;Form2就是个全局变量, 且,最好在Form1的OnClose或OnDestroy事件中写: if (Form2 <> nil) and (Form2.HandleAllocated) then FreeAndNil(Form2);
我用参数nil,application,self都试过 我以前也是这样用的但没有错
你声明变量了吗? var form2:Tform2; 如果没有请加上,或者将TFrom2.Create(..)改为application.createform(tform2,form2);
不过就你的程序似乎不会出什么错误? form2:=tform2.create(nil);应该没错。
with TFrom2.Create(application) do
try
ShowModal;
finally
Free;
end;
你的程序看起来好像没什么问题,但你要注意几点,可写成:if Form2 = nil then Form2 := TForm2.Create(nil);
if (Form2 <> nil) and (not Form2.Visible) then
begin
Form2.Show;
Form2.BringToFront;
end;Form2就是个全局变量, 且,最好在Form1的OnClose或OnDestroy事件中写:
if (Form2 <> nil) and (Form2.HandleAllocated) then FreeAndNil(Form2);
我以前也是这样用的但没有错
var
form2:Tform2;
如果没有请加上,或者将TFrom2.Create(..)改为application.createform(tform2,form2);
try
form2:=Tform2.create(nil);
form2.showmodal;
form2.free;
except
form2.free;
end;
这种方法我用过,没用
要在form1的运行中产生form2,那么首先得在form1的uses中声明form2,比如:
uses
unit2;另外,动态生成窗体可以试试下面这一段代码:
application.create(tform2,form2);
form2.showmodal;而用完释放时,可在form2的colse事件中使用:
action:=cafree;
这样可以不占系统资源!
至于你所说的那种方法,直到现在小弟还没用过!
但这种方法也不失为一种好的动态产生窗体的方法!