显示不同样式按钮的最简单方法
Easiest way to show differently styled buttons
我想对基于设计模板的旧 VCL 应用程序进行现代化改造。该设计模板包含不同的按钮样式。假设有三种类型的按钮:LightButton
、DarkButton
和 GreenButton
。
由于超过 50% 的按钮将显示为 DarkButton
,因此我使用 Bitmap Style Designer 将 TButton
的外观修改为深色设计。
现在我想将其他按钮样式添加到 .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 样式挂钩示例。
- Fixing a VCL Style bug in the TButton component
- Disabling TButton issue on a VCL styled form
我想对基于设计模板的旧 VCL 应用程序进行现代化改造。该设计模板包含不同的按钮样式。假设有三种类型的按钮:LightButton
、DarkButton
和 GreenButton
。
由于超过 50% 的按钮将显示为 DarkButton
,因此我使用 Bitmap Style Designer 将 TButton
的外观修改为深色设计。
现在我想将其他按钮样式添加到 .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 样式挂钩示例。
- Fixing a VCL Style bug in the TButton component
- Disabling TButton issue on a VCL styled form