2016-04-22 79 views
-1

有人可以请解释我哪个控件更好地创建自定义组件? twincontrol和tcustomcontrol有什么区别?德尔福tcustomcontrol/twincontrol

预先感谢您

+0

@DavidHeffernan:'TCustomControl'是窗口。也许你正在想'TGraphicControl'呢? –

回答

4

是否有人可以给我解释一下其控制的比较好,以创建自定义componens?

这取决于你正在做什么样的组件以及它的要求是什么。

它是可视的吗?

  • 如果否,请使用TComponent

  • 如果是,是否需要自己的HWND(输入焦点,窗口消息等)?

    • 如果否,请使用TGraphicControl

    • 如果是,是否需要自定义颜料本身?

      • 如果是,请使用TCustomControl。如果不是,请使用TWinControl

是什么twincontrol和tcustomcontrol之间的区别?

TCustomControlTWinControl后代,增加了一些额外的处理为WM_PAINT消息,在什么TWinControl做顶。 TCustomControl公开您可以绘制的公共Canvas属性。在绘画过程中,它会启用ControlState属性中的csCustomPaint标志,然后调用组件可以覆盖的虚拟Paint()方法。所以TCustomControl的好处是它可以让自定义绘画更容易管理。而已。

+0

谢谢雷米Lebeau对我来说是非常好的解释,它给了我一个非常好的理解,我可以问一个hwnd对组件做些什么?它是用来获得重点吗? –

+1

'HWND'是一个表示窗口的Win32数据类型。操作系统级的所有UI控件都是windows,因此需要一个'HWND'。是的,输入焦点是该系统的一部分(但除此之外还有更多)。除了* windowed *控件外,Delphi还通过引入* graphical *控件来进一步推进。图形控件位于窗口控件的内部。因此,用户仍然可以看到它,甚至可以点击它,但无法从操作系统接收输入焦点。只有窗口控件才能关注。 –