显示不同样式按钮的最简单方法

Easiest way to show differently styled buttons

我想对基于设计模板的旧 VCL 应用程序进行现代化改造。该设计模板包含不同的按钮样式。假设有三种类型的按钮:LightButtonDarkButtonGreenButton

由于超过 50% 的按钮将显示为 DarkButton,因此我使用 Bitmap Style DesignerTButton 的外观修改为深色设计。

现在我想将其他按钮样式添加到 .vsf 文件中并在我的应用程序中使用它。最好的方法是什么?

我是否需要创建新按钮 类 和 TStyleHook 的新后代来绘制全新按钮?如果是,是否有办法重用来自 Vcl.StdCtrls.TButtonStyleHook 的尽可能多的代码?

还有其他方法、最佳实践或示例吗?

Q : 现在我想将其他按钮样式添加到 .vsf 文件并在我的应用程序中使用它。最好的方法是什么?

A:VCL 样式内部结构不允许使用 vsf 文件中的多个按钮样式。 (VCL Styles 文件中的图像用于模仿和替换 Windows Themes states and parts)。


Q : 我是否需要创建新按钮 classes 和绘制全新按钮的 TStyleHook 的新后代?

A : 是的,就是这样,你必须创建一个新的 styleHook 来自己绘制按钮。


Q : 有没有办法尽可能多地重用 Vcl.StdCtrls.TButtonStyleHook 中的代码?

A :是的,您只需要从 TButtonStyleHook class 继承您的 样式挂钩 和然后覆盖 Paint 方法。

  TNewButtonStyleHook = class(TButtonStyleHook)
  protected
    procedure Paint(Canvas: TCanvas); override;
  end;

Q : 还有其他方法、最佳实践或示例吗?

A :尝试这些自定义 TButton 样式挂钩示例。