相关疑难解决方法(0)

如何在AdvancedCustomDrawItem期间绘制TTreeView的样式选择矩形?

我正在TTreeView使用OnAdvancedCustomDrawItem事件从头开始自定义绘图,我想知道如何在我的所有者绘制项目的背景中正确渲染这些选择和热矩形?它们是Vista/7风格,所以我不能简单地用一些纯色填充背景.

在此输入图像描述

我试图在cdPostPaint舞台上绘制我的项目,但是如果我DefaultDraw := TruecdPrePaint舞台上离开以绘制选择背景,则会发生完整的默认绘图,包括项目文本.

procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages,
  DefaultDraw: Boolean);
begin
  case Stage of
    cdPreErase:
    begin
      DefaultDraw := True;
    end;

    cdPostErase:
    begin
      DefaultDraw := True;
    end;

    cdPrePaint:
    begin
      // I thought this will paint only the selected/hot backgrounds, 
      // however this will paint whole item, including text.
      DefaultDraw := True;
    end;

    cdPostPaint:
    begin
      DefaultDraw := False;

      // painting my owner-draw text
      // ......... …
Run Code Online (Sandbox Code Playgroud)

delphi treeview ownerdrawn selection

8
推荐指数
1
解决办法
4849
查看次数

标签 统计

delphi ×1

ownerdrawn ×1

selection ×1

treeview ×1