如何解决带有 ListView 的 Delphi 样式中的错误? 字幕在编辑模式下消失
我的应用程序中有一个 ListView,它在标准 VCL 样式 (Delphi XE8) 中运行良好。但是使用自定义样式(来自菜单项目/选项和选项卡应用程序/外观)我遇到了一个问题。当我单击所选项目或开始编辑标题时,标题消失,而插入符号只是在灰色空白区域闪烁。离开编辑模式后,标题重新出现。问题仅在于自定义样式以及 ViewStyles vsIcon 和 vsList 。
我用谷歌搜索了一下,似乎没有人遇到过这样的问题!我尝试在其窗口过程中捕获 ListView 的 WM_CTLCOLOREDIT 消息,如下面的测试代码,以控制就地编辑器的背景和字体颜色。颜色变了,问题依旧:在编辑模式下点击或按键,标题消失,出现灰色空白区域。
我注意到了一种奇怪的行为。当我在进入编辑模式后立即单击选定的标题时,标题不会消失。进入编辑模式后点击延迟数秒消失。
感谢任何帮助。
procedure TfrmFirst.LVNewWndProc(var Message: TMessage);
begin
FLVOldWndProc(Message);
case Message.Msg of
WM_CTLCOLOREDIT:
if Message.LParam = ListView_GetEditControl(ListView1.Handle) then
begin
SetBkColor(Message.WParam,RGB(250,250,0));
Message.Result := CreateSolidBrush(RGB(250,0));
end;
end;
end;
更新: 通过对 Windows 消息的艰苦监控,我发现了一个嫌疑人!:WM_NCHITTEST。
在编辑模式下鼠标指针停留在ListView的客户区时出现问题。通过将 WM_NCHITTEST 的消息结果设置为零,问题就会消失,但是在 ListView 的客户区中不会捕获鼠标单击事件。所以,我不知道我应该如何处理这些信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。