VirtualStringTree.HotColor 不与 toHotTrack 一起使用



我在VST.TreeOptions.PaintOptions中添加了toHotTrack并将VST.Colors.HotColor更改为clGreen,但HotColor不应用于HotNode,只有节点的文本带有下划线。

  1. 如何解决这个问题?
  2. 是否可以删除下划线并仅对其应用HotColor

Colors.HotColor用于更改Font.Color,而不是Brush.Color。使用 toHotTrack 只会更改Font.Color并将fsUnderLine添加到Font.Style ,请参阅实现部分。

if (toHotTrack in FOptions.FPaintOptions) and (Node = FCurrentHotNode) then
begin
  if not (tsUseExplorerTheme in FStates) then
  begin
    Canvas.Font.Style := Canvas.Font.Style + [fsUnderline];
    Canvas.Font.Color := FColors.HotColor;
  end;
end;

但是,更改很容易,例如在OnBeforeCellPaint中。如果你不想要fsUnderline,你需要从TreeOptions.PaintOptions中删除toHotTrack,在这种情况下不需要。

procedure VSTBeforeCellPaint(Sender: TBaseVirtualTree; TargetCanvas: TCanvas;
  Node: PVirtualNode; Column: TColumnIndex; CellPaintMode: TVTCellPaintMode; 
  CellRect: TRect; var ContentRect: TRect);
begin
  if (CellPaintMode = cpmPaint) and (Node = vstStrom.HotNode) then
  begin
    TargetCanvas.Brush.Color := clGreen;
    TargetCanvas.FillRect(CellRect);
  end;
end;

相关内容

  • 没有找到相关文章

最新更新