有没有一种方法让一个父控件检测到子控件的大小调整呢?我正在考虑编写一个面板控件,当其子控件调整大小时,它也会相应地调整大小(类似于HTML DIV元素根据其内容扩展)。
有没有一种方法让一个父控件检测到子控件的大小调整呢?我正在考虑编写一个面板控件,当其子控件调整大小时,它也会相应地调整大小(类似于HTML DIV元素根据其内容扩展)。
AlignControls
方法会被调用。TControl.SetBounds
调用 RequestAlign
,导致父控件的 AlignControls
被调用。 - Sertac AkyuzAlignControl()
和AlignControls()
用于相对于指定的子控件对齐父控件的其他子控件。对齐后,如果AutoSize
为真,则调用父控件的CanAutoSize()
和CanResize()
方法来调整父控件自身的大小。 - Remy LebeauTControl
和TWinControl
内置支持自动调整大小功能。您只需将TControl.AutoSize
属性设置为True即可。该属性在TControl
中声明为protected
,因此如果您希望组件用户设置它,则需要将其提升为public
或published
。否则,只需在组件的构造函数中设置即可。CanAutoSize()
。
TPanel
只是继承并提升了TControl.AutoSize
属性。实际工作都由TControl
完成。 - Remy LebeauTWinControl
的子类才能在第一位拥有子控件。 - Andreas RejbrandTControl
并不能完成所有工作,TWinControl
也有贡献。但是,TControl
确实公开了与自动调整大小相关的虚拟方法,而TWinControl
则覆盖这些方法以便于调整客户区域、锚点等。 - Remy Lebeau