内置Delphi组件中的错误滚动条

时间:2018-04-03 10:03:19

标签: delphi vcl vcl-styles

在我的Delphi 10.2 VCL应用程序中,默认的现代Windows10 VCL样式似乎存在问题。在内置的Delphi组件上,如TFontDialog,用户无法在下拉组件中使用垂直滚动。无法点击箭头,也无法拖动滚动条,只能在鼠标滚轮工作的情况下上下滚动。如果我使用较旧的VCL样式(例如旧的XP样式Windows),这不是问题,用户可以使用所有控件,一切都按预期工作。

TFontDialog示例

TFontDialog.Create(Form1);
TFontDialog.Execute;

faulty scrollbars in a fontdialog

颜色下拉组件中的垂直滚动不可用(以红色突出显示),只能滚动鼠标,用户无法单击箭头或拖动滚动条。

TOpenPictureDialog示例

TOpenPictureDialog.Create(Form1);
TOpenPictureDialog.Execute;

faulty scrollbars in a picturedialog

下拉组件中的垂直滚动不可用(以红色突出显示)。

BrowseForFolder示例

TDirectoryListBox.directory := BrowseForFolder('Choose a folder', '', false);

faulty scrollbars in browseforfolder

颜色下拉组件中的垂直滚动不可用(以红色突出显示),只能滚动鼠标,用户无法单击箭头或拖动滚动条。

我尝试了来自@RRUZ的建议,以回应另一个问题(Delphi 10 Seattle - Vista Dialogs bug with VCL Styles)来添加VCL Styles Utils项目文件,但我无法检测到我的其他文件中的任何更改使用部分。

编辑:Delphi 10.2版本25.0.29899.2631

1 个答案:

答案 0 :(得分:2)

这并不能解决问题,但作为一种解决方法,我可以接受。 @AndreasRejbrand在评论中建议我不要使用VCL样式。我无法做到这一点,但我从他那里得到了禁用相关组件样式的想法。

@RRUZ在How to disable vcl styles on external dll forms in delphi中描述如何使TStyleManager.SystemHooks和@Arioch在Delphi. How to disable Vcl Themes for TFileOpenDialog and TOpenDialog中描述如何为特定组件取消TStyleManager.SystemHooks。这导致我在TForm1.FormCreate中采用以下解决方法:

with TStyleManager do
    SystemHooks := SystemHooks - [shDialogs];

TFontDialog看起来并没有什么不同(向下箭头除外),但垂直滚动条现在功能齐全。

working vertical scrollbar