问一个静态创建mdi窗体的问题?

wangxd 2003-08-22 01:10:21
动态创建mdi我知道。
现在我想静态创建mdi,就是不用new创建。但我这样建好的窗体在主窗体运行后就自动显示了,我不想让它随着主窗体显示,我想点击菜单后显示,而且要求按子窗体的关闭按钮后能够将其关闭,点击菜单后还能将其显示,我该怎么办?
之所以不想动态创建,是因为我动态创建mdi后,如果再点击创建的菜单,则会重复创建该窗体,为了避免重复,我使用遍历子窗体的方法来避免,但觉得比较费劲,不知道有没有更好的办法避免重复创建子窗体。delphi中可以用assigned(窗体名)的办法来避免,我用bcb就只能用遍历子窗体的方法来避免,不知道有没有更好的方法?
...全文
43 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mitoko 2003-09-09
  • 打赏
  • 举报
回复
guanshangming()
第二遍還是打錯啊...是form 不是from
我復製好多遍都不對...-___-#|||
勉励前行 2003-08-28
  • 打赏
  • 举报
回复
你也可以簡單地把MDI窗口的Top , left 設為一個足夠大的數,如10000,10000.要顯示的時候再設回來。
勉励前行 2003-08-28
  • 打赏
  • 举报
回复
可以這樣達到隐藏mdi窗体的目的:

Form2->FormStyle = fsNormal ;
Form2->Hide();

這樣顯示:

Form2->FormStyle = fsMDIChild ;
Form2->Show();

//這樣做,要注意一些其他問題,試試吧

Cocoky 2003-08-28
  • 打赏
  • 举报
回复
mdi窗体不能被隐藏
同意guanshangming()
wangxd 2003-08-25
  • 打赏
  • 举报
回复
mdi窗体是不能被隐藏的。
guanshangming 2003-08-22
  • 打赏
  • 举报
回复
void __fastcall TFrom2::FormClose(TObject *Sender, TCloseAction &Action)
{
Form1->SubForm2=NULL;
Action = caFree;
}
guanshangming 2003-08-22
  • 打赏
  • 举报
回复
我的MDI窗口的动态创建的,也可以避免重复创建的问题
一、在主窗口创建一个子窗口的子针变量,可以是全局变量或是主窗口的公有变量。
TForm2 * SubForm2;
初始化为NULL
SubForm2 = NULL;
动态创建,显示
if(SubForm2 == NULL)
{
SubForm2 = new TForm2(this);
SubForm2->Show();
}
else
{
SubForm2->Show();
}

在子窗口TForm2中声明外部变量(定义为全局变量时)
extern TForm2 * SubForm2;
或包含主窗口的头文件
include "Form1.h"

在子窗口销毁时
void __fastcall TFrmZiKe::FormClose(TObject *Sender, TCloseAction &Action)
{
SubForm2=NULL;
Action = caFree;
}
Iamsnowgirl 2003-08-22
  • 打赏
  • 举报
回复
可以静态创建好了,先隐藏它,mdi的主窗口就是在程序运行时显示的

13,825

社区成员

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

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