我的程序有许多窗口,但是我知道这样一次运行全部创建不合理,如何让等到调用的时候才创建,不用的时候就释放?
据我了解delphi有个project/options.../forms,左边是aoto-create forms,右面是available forms,但是问题是当我把左边一下不用创建的窗口移到右面时候就无法运行程序了,不知道要在哪里调试?
能不能给我个简单的例子?多谢了!
据我了解delphi有个project/options.../forms,左边是aoto-create forms,右面是available forms,但是问题是当我把左边一下不用创建的窗口移到右面时候就无法运行程序了,不知道要在哪里调试?
能不能给我个简单的例子?多谢了!
begin
Form2:=TForm2.Create(nil);
form2.Show;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
try
Form2:=TForm2.Create(Application); //创建窗体
Form2.ShowModal;
finally
Form2.Free; //释放窗体
Form2:= nil;
end;
end;
移到右面
2.如楼上的方法
uses unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2:=TForm2.Create(nil);
form2.Show;
end;
这种方法比
Form2:=TForm2.Create(nil);
form2.Show;
有什么区别呢?
show出来就跟正常显示一样楼主22分怎么弄的???
不用的可以放在available forms当要用的时候在调用
ex:form2:=Tform2.create(self);
form2.showmodel;
form2.free;但你的项目里面的某些功能需要用到某些窗体对象,但这些窗体又不需要显示,这些窗体也需要放在aoto-careate forms或者在主窗体创建的时候写程序加载。我怀疑你的某些窗体对象是要用而不要显示,你又不知道把auto-create forms你认为不用的全移除了,所以才出错
type
TForm2 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;function CreateWinForm2_Show:Boolean;
function CreateWinForm2_ShowModal:Boolean;implementationvar
Form2: TForm2; //将原来的定义移动到这里.{$R *.dfm}function CreateWinForm2_Show:Boolean;
begin
if Not Assigned(Form2) then
Form2:=TForm2.Create(Application); Form2.Show;
result:=true;
end;function CreateWinForm2_ShowModal:Boolean;
var
form:TForm2;
begin
result:=false;
form:=TForm2.Create(application);
form.showmodal;
result:=mrOK=form.modalresult;
form.free;