gpt4 book ai didi

Delphi: ListView 中不必要的列线和没有 RowSelect (SysListView32)

转载 作者:行者123 更新时间:2023-12-02 01:47:28 28 4
gpt4 key购买 nike

有一个带有风格 ListView (感谢Sertac Akyuz提供的解决方案:))

ListView_SetExtendedListViewStyle(ListView1.Handle, LVS_EX_DOUBLEBUFFER);

但是现在 ListView 有两个不足:即使RowSelect:=True;,也无法选择不必要的列蓝线和行。如果要选择项目,则选择行,对于子项目不起作用。

如果执行 GridLines:=True 那么网格将不会出现, ListView 的背景会发生一些变化...

enter image description here

如果使用OwnerDraw绘制项目,则线条不会出现,而只会出现在项目下方。我可以绘制整个背景,但这是隐藏那些蓝线的最简单方法吗?

我可以处理这些吗?

感谢您的宝贵回答!

最佳答案

当你打电话时

ListView_SetExtendedListViewStyle(ListView1.Handle, LVS_EX_DOUBLEBUFFER);

您取消设置所有其他扩展样式标志,仅设置LVS_EX_DOUBLEBUFFER。所以使用

ListView_SetExtendedListViewStyle(ListView1.Handle,
ListView_GetExtendedListViewStyle(ListView1.Handle) or LVS_EX_DOUBLEBUFFER);

保留现有标志。


垂直线可能是 VCL 尽可能模仿系统 ListView 的产物。启用主题后,VCL 调用 SetWindowTheme在 ListView 上将“explorer”作为“SubAppName”参数传递,因此您可以在资源管理器文件夹 View 中看到的垂直线是重复的。要撤消该操作,您可以自己再次调用该函数:

  SetWindowTheme(ListView1.Handle, nil, nil);

请注意,您可能不喜欢 ListView 变成的样子:)。

关于Delphi: ListView 中不必要的列线和没有 RowSelect (SysListView32),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7087829/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com