MDI子窗体的关闭

lst_prince 2010-05-12 11:34:48
我用 f1 = new TForm2(Application);
f2 = new TForm2(Application);
f3 = new TForm2(Application); //TForm *f1,*f2,*f3
创建了3个子窗体.
在关闭时
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
}
我如何知道关闭的是f1,f2还是f3呢?
...全文
88 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lst_prince 2010-05-12
  • 打赏
  • 举报
回复
suine你好! ObjectList怎么用啊!能具体一点吗
lst_prince 2010-05-12
  • 打赏
  • 举报
回复
妖哥说的对,可以用窗体的Tag属性吗?
f1 = new TForm2(Application);
f1->Tag=1;

void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
}
事件中我如何知道子窗体的Tag属性?
suine 2010-05-12
  • 打赏
  • 举报
回复
或者加上ObjectList里,根据ObjectList的索引来确定是哪个窗体.
ccrun.com 2010-05-12
  • 打赏
  • 举报
回复
楼主要的是在多个Form2实例中,判断当前是哪个窗口。

可以在Form2中定义一个变量,在主窗体中生成这个子窗体时,同时给这个变量赋个值,用来区别这个子窗体。
周药师 2010-05-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lst_prince 的回复:]

不同的子窗体中我要显示不同的内容,要显示的内容我不知道要写到哪一个子窗体中啊,
[/Quote]
f1 = new TForm2(Application);
f2 = new TForm2(Application);
f3 = new TForm2(Application); //TForm *f1,*f2,*f3
你这里都是从TForm2而来的
你可以多建立几个窗体
new TForm3(Application);
new TForm4(Application);
等来做不同的事情
lst_prince 2010-05-12
  • 打赏
  • 举报
回复
不同的子窗体中我要显示不同的内容,要显示的内容我不知道要写到哪一个子窗体中啊,
周药师 2010-05-12
  • 打赏
  • 举报
回复

//打开MDI子窗体
if (Form2== NULL)//判断一下
Form2= new TForm2(this);
Form2->Show();
//-----------------------------------------------------
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Form2 =NULL ;
Action = caFree;
}

多次创建应该要控制一下,避免客户胡乱操作,打开N多的同样的窗体
ccrun.com 2010-05-12
  • 打赏
  • 举报
回复
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
ShowMessage(Name);
Action = caFree;
}
lst_prince 2010-05-12
  • 打赏
  • 举报
回复
哦,谢谢!
ccrun.com 2010-05-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lst_prince 的回复:]
妖哥说的对,可以用窗体的Tag属性吗?
f1 = new TForm2(Application);
f1->Tag=1;

void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
}
事件中我如何知道子窗体的Tag属性?
[/Quote]

在Form2的OnClose事件中,直接读取Tag的值就行了,如:
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
if (Tag == 1)
....

Action = caFree;
}
lst_prince 2010-05-12
  • 打赏
  • 举报
回复
我主要是想在
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
}
事件中,判断是哪个子窗体,如果是f1,我可以f1=NULL,这样可以再次打开f1子窗体

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧