我正在尝试为我的应用程序模拟 Outlook 2013 左窗格树视图菜单。我使用 CustomDraw 是因为我只想更改一些简单的字体和背景属性。
这就是我想要的:
但是,我总是为选定节点和热跟踪节点获得默认选定图形。我没有 Windows 7 或 XP 来查看这是正常行为还是与我的操作系统(Windows 8)有关。
这是我得到的:
这是我的代码:
procedure TMainForm.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Node.Level = 1 then
Sender.Canvas.Font.Size := Sender.Canvas.Font.Size + 2;
if cdsHot in State then
Sender.Canvas.Brush.Color := $00F7E6CD
else if (cdsSelected in State) or (cdsFocused in State) or
(cdsChecked in State) then
Sender.Canvas.Brush.Color := $00F2F2F2
else
Sender.Canvas.Brush.Color := $00DEDEDE;
DefaultDraw := true;
end;
如何为选定和热门项目绘制不同颜色的背景?