想要分可来拿!不过可能有点难度噢!(关于如何设计容器类控件)(100分)

  • 主题发起人 主题发起人 snappy
  • 开始时间 开始时间
S

snappy

Unregistered / Unconfirmed
GUEST, unregistred user!

设计一新控件,里面包函控件TPanel,如何在设计期间能且只能让这个Panel容入别
的控件?或如何设计一个容器控件(如类似TPanel的东西),并且在容器内规定客户区
范围和大小,其它区域为控件本身所用?
 
在Delphi中,一个控件上能否成为其它控件的父控件取决于此控件的ControlStyle属性。
ControlStyle属性是集合类型的,如果此集合包含csAcceptsControls元素,则它能接受
其它控件;否则,它就不能成为其它控件的父控件。ControlStyle属性只能在控件的构
造函数(Constructor)中指定,在程序运行时它是不能被改变的。
所以只需要在继承类中重载控件的Constructor函数,并且让控件的集合属性
ControlStyle中包含或不包含csAcceptsControls即可。
 
可我的意思是只让用户使用一定的区域,也就是说在我给定的区域内用户可放下别的控件,
但控件其它区域不能放控件,只由控件本身所用,比如在非用户区域内画图啦等,你怎不想
让用户放下的控件挡住它吧?!
 
你需要在控件中对 WM_NCCALCSIZE 消息进行处理,返回你所要的客户区的大小,具体你可
以参考 TWinControl 中对该消息的处理过程。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
585
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部