【发布时间】:2015-10-11 11:11:07
【问题描述】:
windows 主题更改后,TListView 的列内容不正确。我已将其缩小到 CM_RECREATE 消息,即 VCL 重新创建 TListView 的窗口句柄以响应系统主题更改。下面是一些说明问题的屏幕截图。
原始列表视图状态
最后一列已移至第一位置。一切正常。
Windows 主题更改后,列位置保留,但内容不再正确。
目前,我只需在自定义 CM_RECREATEWND 处理程序中手动重新创建列即可解决此问题。它是一个错误吗?重新创建列是一个很好的解决方案还是有更好的方法?
我使用的是 Delphi10,但在以前的版本中也观察到了相同的行为。
【问题讨论】:
-
这是您期望的行为还是记录在案?如果不是,则将其视为错误或未记录的行为并将其报告给 emba 以修复或记录它
-
您的解决方法听起来不错。您应该提交错误报告。
-
@Sir Rufo,我很确定这是一个错误。没有人(尤其是用户)期望在例如之后出现错误的列内容。通过远程桌面连接(它还会触发 WM_SYSCOLORCHANE 和窗口句柄重新创建)。
-
@David 可以。我发布了一个问题,以确保它确实是一个错误,而不是我错过了什么:)
-
好吧,在我的一些错误报告中,我要求修复或记录该行为,只是为了确保它不会因“按设计工作”而关闭。他们可以选择错误是在代码中还是在文档中。但是在文档中描述一个奇怪的行为通常比修复需要更多的时间;o)
标签: delphi tlistview delphi-10-seattle