2011-05-06 52 views
1

這是我的代碼:如何突出顯示VST的選定節點?

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. 全VST塗除了先前選擇的節點
  3. 選擇的節點藍是藍色的(並且VST回到它的默認顏色)

我如何oid#2?

回答

4

如果要繪製單元格,則會出現錯誤事件... PaintText用於設置顏色和字體樣式。

改爲嘗試其他事件(OnBeforeCellPaint),您將自動獲取單元格的TRect。

2

簡單:你是FillRect-整個畫布。不要這樣做。使用OnAfterCellPaint或OnAfterItemPaint。在這些活動中,你會得到特定的CellRect來做你的自定義繪畫。

相關問題