MDI子窗体如何实现ShowModal??为什么MDI子窗体调用ShowModal失败!!!请进帮忙!!

喜欢编程朋友 2005-07-14 11:36:24
如何在MDI窗体下面实现子窗体的showmodal的效果,因为如果调用子窗体的showmodal就会显示出错,这是什么原因???请高手帮忙解决!!多谢了!!!!
...全文
237 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
天行归来 2006-06-08
  • 打赏
  • 举报
回复
无意间也碰到此问题,此问题是可以解决的,虽此帖已结账,还是想贴出来,希望能给让后来者提供参考。
说明:FormStyle 为 MDIChild 对象窗口本身的确是不可ShowModal,所以我们需要在窗体创建之后作一些处理,步骤如下:
1、设计时,设置窗体的 FormStyle=fsNormal,同时设置 Visible=FALSE。
2、重载你的窗口的Create构造函数,并作一下处理。
constructor Create(AOwner: TComponent; OwnerStyle: TFormStyle); reintroduce; virtual;

constructor TXXForm.Create(AOwner: TComponent; OwnerStyle: TFormStyle);
begin
inherited Create(self);
FormStyle := OwnerStyle;
Visible := OwnerStyle=fsMDIChild;
end;

xxForm.Create(self,fsNormal)
xxForm.ShowModal;
xxForm.Free;

if xxForm=nil then xxForm.Create(self,fsMDIChild);
xxForm.Show;
conis 2005-09-16
  • 打赏
  • 举报
回复
解决方案
1.将子窗口(SubForm)FormStyle设置为fsNormal,并将Visable设置为False
2.在Mdi窗口的事件中写如下代码:
var
SubForm: TSubForm;
begin
SubForm := TSubForm.Create(nil);
SubForm.ShowModal;
end;

问题可以得到解决
如果子窗口本身为MDIChild,创建后将FormStyle设置为fsNormal,应该可以解决问题,但我没有试过,只是理论上可行
xx_adam 2005-07-14
  • 打赏
  • 举报
回复
MDI本来就是要求同时能显示多窗口,而用了showmodal只能显示一个窗口,那不是矛盾吗?
seekmydoom 2005-07-14
  • 打赏
  • 举报
回复
因为如果调用普通子窗体的showmodal不会错的,showmodal的窗体不能是字窗体类型
wlbfeihu 2005-07-14
  • 打赏
  • 举报
回复
有事能行的话就不是MDI了
就是SDI了
wzg1031 2005-07-14
  • 打赏
  • 举报
回复
MDI窗体中不能showmodal

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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