这是我的代码:
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;
但这就是发生的事情:
如何避免#2?
答案 0 :(得分:4)
错误的事件,如果你想绘制单元格 - ... PaintText用于设置颜色和字体样式。
尝试其他事件(OnBeforeCellPaint),您将自动获得该单元格的TRect。
答案 1 :(得分:2)
简单:你是FillRect
整个画布。不要那样做。使用OnAfterCellPaint或OnAfterItemPaint。在这些活动中,您将获得特定的CellRect
来进行自定义绘画。