Delphi 是否有一种方法可以防止按钮在选中时绘制轮廓?

Delphi 是否有一种方法可以防止按钮在选中时绘制轮廓?,delphi,custom-controls,themes,Delphi,Custom Controls,Themes,我构建了一个自定义控件,它带有主题支持,看起来非常奇怪。是否有任何方法可以使它始终在关闭主题的情况下工作,即使应用程序是在打开主题支持的情况下构建的 编辑:我找到了一种关闭主题的方法,但没有多大帮助。问题是,它是TBitBtn的一个特殊按钮,每当选择该按钮时,它都会试图用虚线在其周围画一个边框,这会造成阻碍。如何关闭该功能?u可以使用UxTheme.pas中的SetWindowTheme功能禁用组件的主题 这将禁用按钮和进度条的主题 ... SetWindowTheme(Button.Handl

我构建了一个自定义控件,它带有主题支持,看起来非常奇怪。是否有任何方法可以使它始终在关闭主题的情况下工作,即使应用程序是在打开主题支持的情况下构建的


编辑:我找到了一种关闭主题的方法,但没有多大帮助。问题是,它是TBitBtn的一个特殊按钮,每当选择该按钮时,它都会试图用虚线在其周围画一个边框,这会造成阻碍。如何关闭该功能?

u可以使用
UxTheme.pas中的
SetWindowTheme
功能禁用组件的主题

这将禁用按钮和进度条的主题

...
SetWindowTheme(Button.Handle, ' ', ' ');
SetWindowTheme(ProgressBar.Handle, ' ', ' ');
...

您可以使用
UxTheme.pas

这将禁用按钮和进度条的主题

...
SetWindowTheme(Button.Handle, ' ', ' ');
SetWindowTheme(ProgressBar.Handle, ' ', ' ');
...

您可以尝试复制TBitBtn.DrawItem的实现,并根据需要进行调整。在代码内部搜索IsFocused应该可以为您提供指导


要调用修补代码,您还必须通过实现类似的消息处理程序来链接CNDrawItem方法。

您可以尝试复制TBitBtn.DrawItem的实现,并根据需要进行调整。在代码内部搜索IsFocused应该可以为您提供指导


要调用修补代码,还必须通过实现类似的消息处理程序来链接CNDrawItem方法。

谢谢!我已经必须复制该函数才能正常工作。IsFocused正是我想要的。谢谢!我已经必须复制该函数才能正常工作。IsFocused正是我想要的。