不好意思,少加了一行代码,按下列代码试试 procedure TForm1.Button1Click(Sender: TObject); Var form3:Tform3; begin form3:=nil form3:=Tform3.Create(self); form3.Show; end; 再在处理Form3的OnClose事件 在OnClose中加入 Action:=caFree;
你的意思是为无模式窗体Form3.在单击事件中,如果有Form3窗体,则直接显示这个窗体,如果没有这个窗体,就先创建,然后在显示。如果是这样,可以通过Screen.Forms来遍历一下是否有TForm3类型的窗体。 procedure TForm1.Button1Click(Sender: TObject); Var frmFind:Tform3; begin frmFind := ExistForm(TForm3); if not Assigned(frmFind) then begin frmFind:=Tform3.Create(self); frmFind.Show; end; procedure TForm1.ExistForm(const clsForm: TFormClass); var iIndex: Integer; begin Result := nil; if clsForm = nil then Exit; for iIndex := 0 to Screen.FormCount - 1 do beign if (Screen.Forms[iIndex] is clsForm) then begin Result := Screen.Forms[iIndex]; Exit; end; end;
end;
Sorry. 方法ExistForm应该有一个返回值:TForm类型
implementation Uses Unit2,unit3; procedure TForm1.Button1Click(Sender: TObject); begin if application.FindComponent('form3')=nil then application.CreateForm(Tform3,form3); form3.Show; end; .... 即可
form3:=Tform3.Create(self);
form3.Show;
Var
form3:Tform3;
begin
if form3=nil then
form3:=Tform3.Create(self);
form3.Show;
end;
好象不可以吧:
为什么我在编译的时候总是说form2,form3没有被初始划呢?
而且即使能运行,在触发了事件后,也不响应呀?
等待
Var
form3:Tform3;
begin
form3:=Tform3.Create(Application);
form3.Show;
end;
在处理Form3的OnClose事件
在OnClose中加入 Action:=caFree;
真的有问题
希望有人指点一下
procedure TForm1.Button1Click(Sender: TObject);
Var
form3:Tform3;
begin
form3:=nil
form3:=Tform3.Create(self);
form3.Show;
end; 再在处理Form3的OnClose事件
在OnClose中加入 Action:=caFree;
procedure TForm1.Button1Click(Sender: TObject);
Var
frmFind:Tform3;
begin
frmFind := ExistForm(TForm3);
if not Assigned(frmFind) then begin
frmFind:=Tform3.Create(self);
frmFind.Show;
end; procedure TForm1.ExistForm(const clsForm: TFormClass);
var
iIndex: Integer;
begin
Result := nil;
if clsForm = nil then Exit;
for iIndex := 0 to Screen.FormCount - 1 do beign
if (Screen.Forms[iIndex] is clsForm) then begin
Result := Screen.Forms[iIndex];
Exit;
end;
end;
end;
implementation
Uses Unit2,unit3;
procedure TForm1.Button1Click(Sender: TObject);
begin
if application.FindComponent('form3')=nil then
application.CreateForm(Tform3,form3);
form3.Show;
end;
....
即可