导航
  • 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发
  • 问答

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

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

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
社区公告
暂无公告