【探讨一下】,如何让MDI的主窗体上控件不要覆盖子窗体的内容? ( 积分: 40 )

  • 主题发起人 主题发起人 青云
  • 开始时间 开始时间

青云

Unregistered / Unconfirmed
GUEST, unregistred user!
我公司现在开发的软件,基本都用MDI窗体结构,网上也有不少人用SDI结构;
不知道大家都是用什么风格,我觉得大家可以探讨一下。

言规正传,我一直遇到这个技术难题:
就是主窗上什么东西都不能放,比如button,memo,listview等等,所有这些可视控件一旦放在主窗体上,就会把要子窗体覆盖掉;
应该是子窗体覆盖主窗体啊。不知道borland为什么做反过来了。


希望能解决这个问题的朋友指点迷经
 
我公司现在开发的软件,基本都用MDI窗体结构,网上也有不少人用SDI结构;
不知道大家都是用什么风格,我觉得大家可以探讨一下。

言规正传,我一直遇到这个技术难题:
就是主窗上什么东西都不能放,比如button,memo,listview等等,所有这些可视控件一旦放在主窗体上,就会把要子窗体覆盖掉;
应该是子窗体覆盖主窗体啊。不知道borland为什么做反过来了。


希望能解决这个问题的朋友指点迷经
 
我一向不怪borland,只能怪自己太菜,连mdi结构也未搞清。
 
对你的目标控件AControl进行一下操作:
AControl.Parent :=nil;
AControl.ParentWindow :=self.ClientHandle;
 
看是解决了,实际是自找麻烦,用子窗口。
 
Jonson_sunshine朋友,您的方法:
AControl.Parent :=nil;
AControl.ParentWindow :=self.ClientHandle;
不错。
对panel等容器类的控件都有效。
但是当panel获取焦点的时候,它也恢复盖子窗体。

kinneng朋友,别人的习惯那时他自己的事情,不要答非所问。对别人毫无帮助,也浪费自己的时间。
 
象 ParentWindow := ClientHandle 这种答案,虽然可以做到不挡住子窗口,但这是不规范的做法,有些控件可能会出问题,非常麻烦,我的程序就是放在子窗口,不信就算。
 
其实MDI设计目的就是为主窗体中有多个子窗体,进行多文档编辑,在主窗体上放置一些
控件如Panel、Toolbar,设置它们的Align对齐格式,然后将控制按钮放入这些容器内,
就显得美观,子窗体也能缩进至这些控件底下。所以倒不如将你所要的控件放入Panel容
器,然后设置Align值对齐,就不会显得突兀。
应该说AControl.Parent :=nil;只是改变外观的一种方法,真正使用性还是不够的。正如
kinneng所说,有些问题会出现,关键是Parent设成了nil,在消息循环上就会出问题,例如
将一个Button.Parent :=nil; 那么这个Button连Onclick都不响应了。
想问kinneng,“我的程序就是放在子窗口”是不是说以一个另外的子窗体容纳Button等
控件,然后通过这些控件实现功能?这样会不会也太麻烦(因为子窗体是层叠的)?
 
学习学习
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
543
import
I
后退
顶部