R restart0 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-05 #1 我学会了单击某个子窗体的关闭按钮关闭它的办法,可是如何逐个关闭MDI中所有打开的子窗体? 试了一下不行
Z zxl893 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-05 #2 for i:=0 to MDICHildCount-1 do MDIChildren.Close;
S sherman Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-05 #4 可以用free for i:=0 to MDIChildCount - 1 do MDIChildren.Free;
火 火龙真人 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-06 #5 这个是用BCB写的,我做的一个茶房系统,自己翻译成DELPHI都差不多一看就明白 这个我为你加了注释 这个函数是判断窗体是否已经创建,如果创建则显示,未创建则返回FALSE bool Tfmmain:penform(AnsiString fname)//建立窗口打开判断函数 { bool pd;//PD就是判断的意思用来判断窗口是否已经打开 pd=false; for (int i = MDIChildCount-1; i >= 0; i--)//用循环查找要打开的窗口是否已打开 if (MDIChildren->Name == fname) { pd=true; MDIChildren->Show(); break; } if (pd==false)return false; else return true; } 这个是调用过程,这个函数必须配合这种调用写,如果不习惯你可以改下函数 void __fastcall Tfmmain::at_hyglExecute(TObject *Sender)//会员情况窗口建立 { if (!this->openform("fmhyqk")) {//以下是如果窗口未创建的话则 Tfmhyqk* t1; //申明T1为那个窗体类 t1=new Tfmhyqk(Application); //创建窗体 t1->Show();// 显示窗体//注意一下这里SHOW还有SHOWMODEL各有用处,看你情况换 } } 还有最后一点用了代码创建得在其创建窗体的关闭事件里写Action=caFree; 不然会出错 void __fastcall Tfmhyqk::FormClose(TObject *Sender, TCloseAction &Action) { Action=caFree; } 建议大家别在运行时就把所有窗体加载,这样速度和稳定上都有好处
这个是用BCB写的,我做的一个茶房系统,自己翻译成DELPHI都差不多一看就明白 这个我为你加了注释 这个函数是判断窗体是否已经创建,如果创建则显示,未创建则返回FALSE bool Tfmmain:penform(AnsiString fname)//建立窗口打开判断函数 { bool pd;//PD就是判断的意思用来判断窗口是否已经打开 pd=false; for (int i = MDIChildCount-1; i >= 0; i--)//用循环查找要打开的窗口是否已打开 if (MDIChildren->Name == fname) { pd=true; MDIChildren->Show(); break; } if (pd==false)return false; else return true; } 这个是调用过程,这个函数必须配合这种调用写,如果不习惯你可以改下函数 void __fastcall Tfmmain::at_hyglExecute(TObject *Sender)//会员情况窗口建立 { if (!this->openform("fmhyqk")) {//以下是如果窗口未创建的话则 Tfmhyqk* t1; //申明T1为那个窗体类 t1=new Tfmhyqk(Application); //创建窗体 t1->Show();// 显示窗体//注意一下这里SHOW还有SHOWMODEL各有用处,看你情况换 } } 还有最后一点用了代码创建得在其创建窗体的关闭事件里写Action=caFree; 不然会出错 void __fastcall Tfmhyqk::FormClose(TObject *Sender, TCloseAction &Action) { Action=caFree; } 建议大家别在运行时就把所有窗体加载,这样速度和稳定上都有好处
D dhl2001 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-06 #6 定义一个 mdi窗体 onclose action:=cafree; 然后所有的mdi窗体都继承这个窗体, 然后按上面各位的写法就可以了
J jollier Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-06 #7 在子窗体的onFormClose事件里写如下代码: var i:integer; begin action:=cafree; for i:=0 to MDIChildCount - 1 do MDIChildren.close; end;
在子窗体的onFormClose事件里写如下代码: var i:integer; begin action:=cafree; for i:=0 to MDIChildCount - 1 do MDIChildren.close; end;