13 个解决方案
#1
MDIApplication?
应该很简单的呀。所有的打开的子窗体(子窗体实例)都被存储在一个数组中(若是你自己的Form--Dialog你也可构造一个这样的结构<数组或链表>),然后对他遍历不就行了吗。
应该很简单的呀。所有的打开的子窗体(子窗体实例)都被存储在一个数组中(若是你自己的Form--Dialog你也可构造一个这样的结构<数组或链表>),然后对他遍历不就行了吗。
#2
检查每一个form的visible属性,决定是否要close
#3
是要关闭MDI子窗体吗?
#4
for(int n=Screen->FormCount-1; n--) {
if (Screen->Forms[n]!=Application->MainForm)
Screen->Forms[n]->Close();
}
if (Screen->Forms[n]!=Application->MainForm)
Screen->Forms[n]->Close();
}
#5
MDIChildCount是MDI子窗体
MDIChildren[i]->Close关闭第i个MDI窗体
MDIChildren[i]->Close关闭第i个MDI窗体
#6
要关闭MDI子窗体!
void __fastcall TMainForm::CloseallExecute(TObject *Sender)
{
//关闭所有
int Counter;
for(Counter=0;Counter<MDIChildCount;Counter++)
MDIChildren[Counter]->Close();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::CloseallExecute(TObject *Sender)
{
//关闭所有
int Counter;
for(Counter=0;Counter<MDIChildCount;Counter++)
MDIChildren[Counter]->Close();
}
//---------------------------------------------------------------------------
#7
to:JSP
如果其中几个窗口是模式显示的
是不是也可以用你的方法关闭掉
如果其中几个窗口是模式显示的
是不是也可以用你的方法关闭掉
#8
采用MDI窗口,将子窗口的formstyle高为MdiChild:
for(i=0;i<MDIChildCount;i++)
MDIChildren[i]->Close();
for(i=0;i<MDIChildCount;i++)
MDIChildren[i]->Close();
#9
在 Project->Options里设,把form的Auto-create forms中的子窗口去掉就可以了。
#10
晚了
#11
用FormCount历遍,然后判断是不是主窗口,如果不是就Close
#12
一个程序里只会有一个Form为模式显示(除非你在Timer里将Form以模式方式显示,或者其它的办法,但是用户操作的话,只会有一个为模式显示)。即使
真的有多个Form为模式显示,也可以用上面我说的方法关闭。如果是Windows
的打开,保存,替换,选择颜色,打印机设定之类的窗口,用上面的方法就不
可以关闭窗口了,因为这些窗口不是VCL的Form。
真的有多个Form为模式显示,也可以用上面我说的方法关闭。如果是Windows
的打开,保存,替换,选择颜色,打印机设定之类的窗口,用上面的方法就不
可以关闭窗口了,因为这些窗口不是VCL的Form。
#13
To :TSP
有问题啊,我没有试过,但是单纯从代码看:好像屏幕上别的程序的窗体也会被关闭阿!包括不可见窗体!这不会出乱子ma ?
有问题啊,我没有试过,但是单纯从代码看:好像屏幕上别的程序的窗体也会被关闭阿!包括不可见窗体!这不会出乱子ma ?
#1
MDIApplication?
应该很简单的呀。所有的打开的子窗体(子窗体实例)都被存储在一个数组中(若是你自己的Form--Dialog你也可构造一个这样的结构<数组或链表>),然后对他遍历不就行了吗。
应该很简单的呀。所有的打开的子窗体(子窗体实例)都被存储在一个数组中(若是你自己的Form--Dialog你也可构造一个这样的结构<数组或链表>),然后对他遍历不就行了吗。
#2
检查每一个form的visible属性,决定是否要close
#3
是要关闭MDI子窗体吗?
#4
for(int n=Screen->FormCount-1; n--) {
if (Screen->Forms[n]!=Application->MainForm)
Screen->Forms[n]->Close();
}
if (Screen->Forms[n]!=Application->MainForm)
Screen->Forms[n]->Close();
}
#5
MDIChildCount是MDI子窗体
MDIChildren[i]->Close关闭第i个MDI窗体
MDIChildren[i]->Close关闭第i个MDI窗体
#6
要关闭MDI子窗体!
void __fastcall TMainForm::CloseallExecute(TObject *Sender)
{
//关闭所有
int Counter;
for(Counter=0;Counter<MDIChildCount;Counter++)
MDIChildren[Counter]->Close();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::CloseallExecute(TObject *Sender)
{
//关闭所有
int Counter;
for(Counter=0;Counter<MDIChildCount;Counter++)
MDIChildren[Counter]->Close();
}
//---------------------------------------------------------------------------
#7
to:JSP
如果其中几个窗口是模式显示的
是不是也可以用你的方法关闭掉
如果其中几个窗口是模式显示的
是不是也可以用你的方法关闭掉
#8
采用MDI窗口,将子窗口的formstyle高为MdiChild:
for(i=0;i<MDIChildCount;i++)
MDIChildren[i]->Close();
for(i=0;i<MDIChildCount;i++)
MDIChildren[i]->Close();
#9
在 Project->Options里设,把form的Auto-create forms中的子窗口去掉就可以了。
#10
晚了
#11
用FormCount历遍,然后判断是不是主窗口,如果不是就Close
#12
一个程序里只会有一个Form为模式显示(除非你在Timer里将Form以模式方式显示,或者其它的办法,但是用户操作的话,只会有一个为模式显示)。即使
真的有多个Form为模式显示,也可以用上面我说的方法关闭。如果是Windows
的打开,保存,替换,选择颜色,打印机设定之类的窗口,用上面的方法就不
可以关闭窗口了,因为这些窗口不是VCL的Form。
真的有多个Form为模式显示,也可以用上面我说的方法关闭。如果是Windows
的打开,保存,替换,选择颜色,打印机设定之类的窗口,用上面的方法就不
可以关闭窗口了,因为这些窗口不是VCL的Form。
#13
To :TSP
有问题啊,我没有试过,但是单纯从代码看:好像屏幕上别的程序的窗体也会被关闭阿!包括不可见窗体!这不会出乱子ma ?
有问题啊,我没有试过,但是单纯从代码看:好像屏幕上别的程序的窗体也会被关闭阿!包括不可见窗体!这不会出乱子ma ?