Delphi:不必要的列线和列线列表视图 (SysListView32) 中没有 RowSelect
有一个带有样式的列表视图(感谢Sertac Akyuz提供了解决方案:))
ListView_SetExtendedListViewStyle(ListView1.Handle, LVS_EX_DOUBLEBUFFER);
但是现在列表视图有两个不足:不必要的列蓝线和行不能即使 RowSelect:=True;
也会被选择。如果要选择项目,则选择行,对于子项目不起作用。
如果执行 GridLines:=True
那么网格将不会出现,列表视图的背景会发生一些变化...
如果使用 OwnerDraw
绘制项目,则线条不会出现,而只会出现在项目下方。我可以绘制整个背景,但这是隐藏那些蓝线的最简单方法吗?
我能处理这些吗?
感谢您的宝贵回答!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您调用时,
您会取消设置所有其他扩展样式标志,仅将
LVS_EX_DOUBLEBUFFER
设置为打开。因此使用来保留现有的标志。
垂直线可能是 VCL 尽可能模仿系统列表视图的产物。启用主题后,VCL 调用
SetWindowTheme
在列表视图上将“explorer”作为“SubAppName”参数传递,因此您可以在资源管理器文件夹视图中看到的垂直线是重复的。要撤消该操作,您可以自己再次调用该函数:请注意,您可能不喜欢列表视图变成的样子:)。
When you call
you unset all other extended style flags, seting only
LVS_EX_DOUBLEBUFFER
on. So useto preserve existing flags.
The vertical lines are probably a product of the VCL's effort to imitate a system listview as much as possible. When themes are enabled, VCL calls
SetWindowTheme
on the listview passing 'explorer' as 'SubAppName' parameter, so the vertical lines you can see in an explorer folder view is duplicated. To undo that, you can call the function again yourself:Note that you might not like what the listview becomes :).