Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.588 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: VirtualTreeView MouseOver Color

  Alt 11. Jan 2021, 07:36
Die TVirtualStringTree kann schon selbst HotTrack. Leider gibt es nach außen keine Information zur Spalte, so dass man diese selbst ermitteln müsste.

Am einfachsten ist aber das interne Feld dafür schlicht zu veröffentlichen (VirtualTrees.pas):
Delphi-Quellcode:
  TBaseVirtualTree = class(TCustomControl)
[..]
  public
[..]
    property HotNode: PVirtualNode read FCurrentHotNode write SetHotNode;
    property HotColumn: TColumnIndex read FCurrentHotColumn; // NEU
[..]
In der aktuellen Version ist das die Zeile 3219.

Und dann kannst du einfach OnBeforeCellPaint verwenden (toHotTrack muss natürlich in den TreeOptions unter PaintOptions aktiviert sein!):
Delphi-Quellcode:
procedure TForm118.VirtualStringTree1BeforeCellPaint(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
  CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect);
begin
  if (Node = VirtualStringTree1.HotNode) and (Column = VirtualStringTree1.HotColumn) then
    TargetCanvas.Brush.Color := clLime
  else
    TargetCanvas.Brush.Color := clWhite;
  TargetCanvas.FillRect(ContentRect);
end;
Ich werde einmal einen Pull Request für diese Änderung senden.
// EDIT:
Erledigt, pull request ist drin.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (11. Jan 2021 um 11:23 Uhr)
  Mit Zitat antworten Zitat