内置的Delphi组件中存在故障滚动条

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

字体对话框中有故障的滚动条

颜色下拉组件中的垂直滚动无法使用(用红色标出),只能使用鼠标滚动,用户无法点击箭头或拖动滚动条。

TOpenPictureDialog示例

TOpenPictureDialog.Create(Form1);
TOpenPictureDialog.Execute;

图片对话框中的有故障的滚动条

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

BrowseForFolder示例

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

浏览文件夹中的错误滚动条

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

我尝试了@RRUZ在另一个问题的建议(Delphi 10 Seattle-Vista对话框带有VCL样式的错误),添加VCL Styles Utils项目文件,但我不能检测到使用部分的任何更改。

编辑:Delphi 10.2版本25.0.29899.2631


无法在10.2.2中重现。一个好的解决方法是不使用VCL样式。 - Andreas Rejbrand
很不幸,该应用程序允许用户切换样式,但我会尝试禁用相关组件的VCL样式。 - pskiebe
1个回答

2

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

@RRUZ在如何在Delphi中禁用外部DLL窗体的VCL样式中描述了如何将TStyleManager.SystemHooks设置为空,而@AriochThe在Delphi. 如何禁用TFileOpenDialog和TOpenDialog的Vcl主题中描述了如何将TStyleManager.SystemHooks设置为空以针对特定组件。这让我想到了在TForm1.FormCreate中采用以下解决方法:

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

TFontDialog并没有太大的变化(除了向下箭头),但现在垂直滚动条已经完全可用。

working vertical scrollbar


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接