一个关于MDI窗体的问题,请教一下各位

jack_zhong 2004-04-12 09:22:59
我想请问一下如何更改在Delphi 7中MDI子窗体所属的MDI主窗体?,我在写程序时,我先创建了一个Login窗体,再建了一个MDI主窗体和MDI子窗体,但一运行到子窗体上,就出错,说没有找到MDI主窗体,请问个位高手们应怎么样解决?
...全文
42 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangxiangsjz 2004-04-19
  • 打赏
  • 举报
回复
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
TFace *Temp=new TFace(Application);//启动窗口
Temp->Show();
Temp->Update();
Application->Initialize();
Application->CreateForm(__classid(TMainForm), &MainForm);
Application->CreateForm(__classid(TSimulator), &Simulator);
Application->CreateForm(__classid(TInputData), &InputData);
Application->CreateForm(__classid(TSet_Line), &Set_Line);
Application->CreateForm(__classid(TOpen), &Open);
Application->CreateForm(__classid(TDataModel), &DataModel);
Application->CreateForm(__classid(TShowConfig), &ShowConfig);
Application->CreateForm(__classid(TCKWHXD), &CKWHXD);
Application->CreateForm(__classid(TXZLJ), &XZLJ);
Application->CreateForm(__classid(TSysLogForm), &SysLogForm);
Application->CreateForm(__classid(TSetCom), &SetCom);
Application->CreateForm(__classid(TSearchDevice), &SearchDevice);
Application->CreateForm(__classid(TPasswordDlg), &PasswordDlg);
Application->CreateForm(__classid(TUser), &User);
Application->CreateForm(__classid(TSuper), &Super);
Application->CreateForm(__classid(TDeviceConfig), &DeviceConfig);
Application->CreateForm(__classid(TFDY_Report), &FDY_Report);
Sleep(2500);
Temp->Close();
for (int i=0;i<4;i++)
{
PasswordDlg->ShowModal(); //登陆窗口
if (PasswordDlg->Checked) //登陆成功
{
memmove(&MainForm->UserData,&PasswordDlg->UserData,sizeof(TUserData));
Application->Run();
break;
}
}
}
catch (Exception &exception)
{
// Application->ShowException(&exception);
}
catch (...)
{
try
{
// throw Exception("");
}
catch (Exception &exception)
{
// Application->ShowException(&exception);
}
}
return 0;
}
web700 2004-04-18
  • 打赏
  • 举报
回复

主窗口fsMDIForm
子窗口fsMDIForm
jack_zhong 2004-04-18
  • 打赏
  • 举报
回复
算了,看来也没什么其它的方法了,谢谢大家的帮助,大家都有分啊
仙侣步惊云 2004-04-17
  • 打赏
  • 举报
回复
在VCL体系中,只能有一个MDI主窗口,而且这个主窗口必须是第一个建立的窗口,不须多议,这是定论,否则再动盘都是徒劳的。
visual_cjiajia 2004-04-17
  • 打赏
  • 举报
回复
呵呵 为什么非得死脑筋呢?一样的效果可能有不同的方法
jack_zhong 2004-04-17
  • 打赏
  • 举报
回复
因为把login窗体设为起动时,系统说"我没有MDI主窗体运行,要先运行主窗体"
Tensionli 2004-04-17
  • 打赏
  • 举报
回复
为什么为要两个主窗体
jack_zhong 2004-04-17
  • 打赏
  • 举报
回复
叫“fim(镇江DJ)(DJ=DelphiJava)”的朋友说的没错,我是想写一个login 窗体,不过这个窗体我写的比较复杂,我在程序运行时,先让MDI先运行,再把MDI主窗体的Visble设为false,再运行我的login窗体,我想向大家请教一下,有没有好的方法先运行login,再用application.CreateForm()来创建MDI,我的这个程序在权限上分的太多了,有十多个权限,但如果login窗体不设成fsMDIForm,则程序不能运行.
「已注销」 2004-04-15
  • 打赏
  • 举报
回复
两个MDI,有意思
bottom 2004-04-15
  • 打赏
  • 举报
回复
http://www.516688.net/ergong/down/er_cdrom.exe速度慢了点 有空会升级!
bottom 2004-04-15
  • 打赏
  • 举报
回复
哎 世界之大 无奇不有啊!
fim 2004-04-15
  • 打赏
  • 举报
回复
不能有两个主窗体的,我想楼主的主窗体应该是那个登陆窗口了
jack_zhong 2004-04-12
  • 打赏
  • 举报
回复
不是啊,我在一个程序里有两个MDI主窗体,但我想把所有的MDI子窗体分成两部分,分别属于这两个MDI主窗体,不是只属于其中一个主窗体。
insert2003 2004-04-12
  • 打赏
  • 举报
回复
写错了:
子窗口fsMDIChild
insert2003 2004-04-12
  • 打赏
  • 举报
回复
主窗口fsMDIForm
子窗口fsMDIForm
menggirl 2004-04-12
  • 打赏
  • 举报
回复
找到你像设为主窗口得
FormStyle威fsmdiform
paukula 2004-04-12
  • 打赏
  • 举报
回复
up,一個程序裡不能有兩個窗體為fsMDIForm,只能有一個!!!!!可以結帖了.
Tensionli 2004-04-12
  • 打赏
  • 举报
回复
主窗体的FormStyle := fsmdiform
子窗体的FormStyle := fsMDIChild
试试吧
wangxiangsjz 2004-04-12
  • 打赏
  • 举报
回复
不能够有两个MDIForm。
sunny 2004-04-12
  • 打赏
  • 举报
回复
我想如果可以存在两个或者两个以上的MDI主窗体(我没有做过),那所有的的子窗体也只可以属于其中一个,由这个窗体来管理!不知道对否!?
因为一个窗体只有一个主窗体MainForm,而MDI子窗体的创建与一般的窗体创建过程不太一样,它是依靠MainForm中的一个窗体(就是我们看到的那个凹下去的客户区窗口)创建的.这是它的创建的关键代码:
WindowHandle := SendMessage(Application.MainForm.ClientHandle,
WM_MDICREATE, 0, Longint(@CreateStruct));
所以你的各个子窗体都是由MainForm.ClientHandle来创建的,只能属于MainForm中的这个框架,即使其他地方你还建立了MDI主窗体.
随便说说,有错误恳请指出!
加载更多回复(2)

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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