In den meisten Fällen hast Du doch ein Objekt im Hintergrund liegen, aus dem z.B. der Anzeigetext bezogen wird. Erweitere das Objekt um eine Eigenschaft "IsDblClicked" und setze diese für die aktuelle Node (FocusedNode) im DblClick auf True.
Im DrawText kannst Du diese aus dem dahinterliegenden Objekt dann auswerten und die Farbe entsprechend anpassen, dort gibt es einen manipulierbaren Canvas.
Delphi-Quellcode:
procedure TfMain.vtDblClick(Sender: TObject);
var daten: TMyObject;
aktnode: : PVirtualNode;
begin
aktnode := vt.FocusedNode;
daten := TMyObject(vt.GetNodeData(aktnode)^);
daten.IsDblClicked := True;
end;
..
//
procedure TfMain.vtDrawText(Sender: TBaseVirtualTree; TargetCanvas: TCanvas;
Node: PVirtualNode; Column: TColumnIndex; const Text: WideString;
const CellRect: TRect; var DefaultDraw: Boolean);
var daten: TMyObject;
begin
daten := TMyObject(vt.GetNodeData(Node)^);
if assigned(daten) and (TMyObject(daten).IsDblClicked) then
TargetCanvas.Font.Color := clGreen;
end;
... so hab ich es verstanden. Code ungetestet, aber so ungefähr würde ich es auch machen
Kämpfe mich nämlich gerade auch durch die Tiefen des Virtual Treeview bzgl. Drag&Drop usw.