如何突出显示VST的选定节点?

时间:2011-05-06 05:50:29

标签: delphi

这是我的代码:

procedure TfrmMain.vstListPaintText(Sender: TBaseVirtualTree;
  const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
  TextType: TVSTTextType);
begin
  if vsSelected in Node.States then
    begin
      TargetCanvas.brush.color := clBlue;
      TargetCanvas.FillRect(targetcanvas.ClipRect);
    end;
end;

但这就是发生的事情:

  1. 我点击节点
  2. 除了之前选择的节点
  3. 之外,整个VST被涂成蓝色
  4. 所选节点为蓝色(VST恢复为默认颜色)
  5. 如何避免#2?

2 个答案:

答案 0 :(得分:4)

错误的事件,如果你想绘制单元格 - ... PaintText用于设置颜色和字体样式。

尝试其他事件(OnBeforeCellPaint),您将自动获得该单元格的TRect。

答案 1 :(得分:2)

简单:你是FillRect整个画布。不要那样做。使用OnAfterCellPaint或OnAfterItemPaint。在这些活动中,您将获得特定的CellRect来进行自定义绘画。