【发布时间】:2021-06-28 02:31:27
【问题描述】:
一个使用 Delphi 7 的旧应用程序,但在 2010 年之前的旧 Delphi 版本中应该是类似的代码。我需要更改 TListView 标题的背景颜色,以便提供深色主题。我可以改变其他一切的颜色。我发现下面的线程显然适用于更改列标题上的字体颜色,但我还需要调整整个标题的背景颜色。
Delphi: ListView (vsReport) single column header caption with custom font color?
我迷路了,有人可以帮忙吗? Windows 消息通知超出了我的理解范围。
非常感谢。
【问题讨论】:
-
阅读Header Controls 上的文档后,似乎没有一种简单的方法可以更改标题背景颜色。您必须自己实现标题项目的所有者绘图。
-
链接的问题提供了两种不同的方法来自定义列标题,一种使用
NM_CUSTOMDRAW,另一种使用WM_DRAWITEM。这两个代码只是设置文本颜色,但它们都可以访问HDC,你可以在上面画任何你想要的东西。例如,将FillRect()与所需颜色的画笔一起使用。 -
谢谢雷米。我实现了 NM_CUSTOMDRAW 代码并将以下代码行放在 SetColorText 上方,但它什么也没做。 FillRect(NMCustomDraw.hdc,NMCustomDraw.rc,COLOR_GRAYTEXT+1)。 SetTextColor 虽然有效。还尝试了 SetBkColor 没有效果。我错过了什么?
-
我设法使用 Message.Result := CDRF_SKIPDEFAULT 而不是 CDRF_NEWFONT 为背景着色,然后在我在其他地方找到的处理左/右列对齐的代码中使用 DrawText。但是,没有列分隔符。我可以左右拖动不可见的列分隔符。我将如何正确绘制这些?左对齐的列标题被绘制到左边太远,而右对齐的标题离右边太远,我认为这是由于缺少分隔线。
标签: windows listview delphi columnheader