请问怎样关闭MDI子窗口?
关闭MDI子窗口时关不了,子窗口变成了最小化... 问题点数:20、回复次数:15Top
1 楼chenzhuo(睡到自然醒)回复于 2005-03-03 23:40:09 得分 0
upTop
2 楼Kshape(C/C++初学者~~~~)回复于 2005-03-03 23:42:07 得分 10
在FORM窗体的ONCLOSE事件中加入下面代码:即 action := caFree;
procedure TFrmBase.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
end;
Top
3 楼chenzhuo(睡到自然醒)回复于 2005-03-04 00:27:37 得分 0
可以关,但是重新打开即重新SHOW显示时会出错?为什么?Top
4 楼hjf8086(hjf)回复于 2005-03-04 09:08:05 得分 10
procedure TFrmBase.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
formchild:=nil; //+上这句
end;Top
5 楼darkread(黑色阅读)回复于 2005-03-04 10:13:48 得分 0
你已经Free了,怎么还能再Show
TXXXForm.create一下吧Top
6 楼chenzhuo(睡到自然醒)回复于 2005-03-04 21:26:53 得分 0
create要参数的...加什么参数Top
7 楼caiso(十年磨一剑)回复于 2005-03-05 11:20:27 得分 0
顶一下Top
8 楼hsgrass37301(零点)回复于 2005-03-05 12:21:53 得分 0
// 假设:tform1是你的子窗体。在tform1的close事件里面应该有action := cafree;这句正确
// 估计:原因是你设计mdi的时候主程序(菜单project-->view source)已经将该子窗体创建
// 解决:将prj的source删除创建部份(如:Application.CreateForm(TForm1, Form1);)删除,
// 在调用子窗体的部份输入类似如下的代码
var
F; tform1;
begin
f := tform1.create(application);
end;Top
9 楼real_name(*真名)回复于 2005-03-05 12:51:20 得分 0
关一个就
procedure TFrmBase.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
end;
关全部就
procedure TFrmBase.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
formchild:=nil;
end;
Top
10 楼Sunniness(逛追->理想)回复于 2005-03-05 13:04:04 得分 0
Self.replaece;
Top
11 楼zhangwei1437(zhangwei)回复于 2005-03-05 13:43:21 得分 0
如果是动态创建的必须先创建,如果是程序本身自己创建的就没事了Top
12 楼kuki84(天道酬勤)回复于 2005-03-05 17:24:42 得分 0
这是我MDI主窗口里的代码,自己看看
procedure Tmain_form.OpenForm(FormClass: TFormClass; var fm; AOwner:TComponent);
var
i: integer;
Child:TForm;
begin
for i := 0 to Screen.FormCount -1 do
if Screen.Forms[i].ClassType=FormClass then
begin
Child:=Screen.Forms[i];
if Child.WindowState=wsMinimized then
ShowWindow(Child.handle,SW_SHOWNORMAL)
else
ShowWindow(Child.handle,SW_SHOWNA);
if (not Child.Visible) then Child.Visible:=True;
Child.BringToFront;
Child.Setfocus;
TForm(fm):=Child;
exit;
end;
Child:=TForm(FormClass.NewInstance);
TForm(fm):=Child;
Child.Create(AOwner);
end;
procedure TMain_form.N11Click(Sender: TObject);
begin
OpenForm(TFrm_PDatainput,Frm_PDatainput,self);
end;
Top
13 楼kuki84(天道酬勤)回复于 2005-03-05 17:25:53 得分 0
关闭时在子窗口onclose中
action:=caFree;Top
14 楼Breakc0de(学无止境)回复于 2005-03-05 20:32:44 得分 0
在子窗体 onclose 事件中:
begin
action:=cafree;
ChildWindow:=nil; //ChildWindow为子窗体名称
end;Top
15 楼cyblueboy83(爱情白痴—电脑迷)回复于 2005-03-05 21:17:27 得分 0
呵呵,来慢了。Top




