4

http://screenshots.en.sftcdn.net/en/scrn/39000/39972/xentient-labels-1.jpg

是否可以像应用程序一样更改 Windows 资源管理器中项目的背景颜色Xentient Labels?是否可以从 Windows 7 中的 Delphi XE2 执行此操作?

4

2 回答 2

11

在Windows 7 中无法执行此操作,因为 Windows 资源管理器的列表视图使用的DirectUIHWND不是SysListView32Windows XP 中的。类DirectUIHWND控件不侦听列表视图消息,因此您不能ListView_SetTextBkColor像在 Windows XP 上那样使用宏来更改文本背景颜色。

通过以下简单的测试,您可以验证它。让我们在表单上有一个编辑框和按钮。在该编辑框中输入 Windows 资源管理器的列表视图控件的句柄(例如通过 Spy++ 获得),然后在按下按钮时运行以下代码:

uses
  Winapi.CommCtrl;

procedure TForm1.Button1Click(Sender: TObject);
var
  ListViewHandle: HWND;
begin
  ListViewHandle := StrToInt(Edit1.Text);
  ListView_SetTextBkColor(ListViewHandle, $0000CCFF);
end;

这个来自 Windows 7 的 Spy++ 屏幕截图显示了资源管理器列表视图的类名(在 Windows XP 中,它SysListView32可以通过标准列表视图消息控制,DirectUIHWND不会对它们做出反应)。

在此处输入图像描述

于 2012-05-21T08:01:39.597 回答
2

你不能给文本上色,但你可以添加像 TortoiseSVN/CVS/Git/Groove/Dropbox/etc 这样的覆盖。做。

带有叠加图标的 Explorer 的屏幕截图

(来自https://tortoisesvn.net/screenshots.html

于 2012-05-21T07:56:12.733 回答