Form1.FormStyle := fsMDIForm
Form2.FormStyle := fsMDIChild
Form2的Close事件中
action:=cafree;当Form2被关闭以后,点击Form1中的按纽要显示Form2procedure TForm1.Button1Click(Sender: TObject);
var
a:=TForm2;
begin
if not assigned(a) then
begin
a.create(application);
a.showmodal;
end;
end;显示不能
不知道是哪里出问题了,希望各位不吝赐教。另外,还有什么办法能判断窗体是否存在或显示?
开始时如何设置能让Form2不在程序运行时就显示出来?
Form2.FormStyle := fsMDIChild
Form2的Close事件中
action:=cafree;当Form2被关闭以后,点击Form1中的按纽要显示Form2procedure TForm1.Button1Click(Sender: TObject);
var
a:=TForm2;
begin
if not assigned(a) then
begin
a.create(application);
a.showmodal;
end;
end;显示不能
不知道是哪里出问题了,希望各位不吝赐教。另外,还有什么办法能判断窗体是否存在或显示?
开始时如何设置能让Form2不在程序运行时就显示出来?
TMainForm=class(TForm)
...
public
FSpecChild:TForm;
...
end;创建子窗体时:
if FSpecChild <> nil then
FSpecChild := TChildForm.Create(self);
...在ChildForm的OnClose事件中:
implementation
uses Main;//主窗体的单元.
...
TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MainForm.FSpecChild := nil;
end;
那个是我觉得或许可以这样……
当然,可能事实证明我很傻lovend(颓废之吻) :
FSpecChild := TChildForm.Create(self);和FSpecChild := TChildForm.Create(application)有什么不一样呢?还有,如果是多个子窗体的话那窗体的判断是不是就不能用FSpecChild <> nil了?
如果不能的话应该用什么来判断?我见过一种是用capion……觉得不好……
if not assigned(frm_child) then //----判断子窗体指针是否存在?
application.createform(Tfrm_child,frm_child)
else
begin
frm_child.bringtofont;
end;关闭子窗体;
Tfrm_child.onclose();
begin
action:=cafree;
frm_child:=nil;//---将指针清除;
end;
a:=TForm2; ???????????????????还"觉得或许可以这样"!!我真的搞不清楚了!
要在每个要创建的子窗体创建之前都要判断的。你慢慢研究吧。
Form1.FormStyle := fsMDIForm
Form2.FormStyle := fsMDIChild
a.showmodal;//这里一定有问题啊 试一下a.show;
你这个是 子窗体的怎么可以用 showmodal
所以可能表达上出些问题
不好意思我自己再看看吧
不知道什么书有MDI入门的讲解
很多书都只是一点带过……