Delphi tcustomcontrol/twincontrol

Delphi tcustomcontrol/twincontrol

谁能解释一下哪个控件更适合创建自定义组件? twincontrol和tcustomcontrol有什么区别?

提前致谢

Can someone please explain me which control is better to create custom componens?

这取决于您制作的组件类型及其要求。

它是视觉的吗?

  • 如果没有,使用TComponent.

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

    • 如果没有,使用TGraphicControl.

    • 如果是,是否需要自己自定义画图?

      • 如果是,使用TCustomControl.

      • 如果没有,使用TWinControl

What is the difference between twincontrol and tcustomcontrol?

TCustomControlTWinControl 的后代,它在 TWinControl 所做的事情之上为 WM_PAINT 消息添加了一些额外的处理。 TCustomControl 公开了一个 public Canvas 属性 供您使用。在绘画期间,它启用 ControlState 属性 中的 csCustomPaint 标志,然后调用您的组件可以覆盖的虚拟 Paint() 方法。所以 TCustomControl 的好处是它使自定义绘画更容易管理。仅此而已。