![]() |
Virtual Tree View und Mauscursor
Hallo zusammen.
Ich nutze in meiner Anwendung den Virtual String Tree - das klappt soweit auch sehr gut. In einer Spalte zeige ich einen Hyperlink an, den ich über OnGetText schön blau und unterstrichend darstelle. Wie kriege ich es denn jetzt hin, dass der Text einen eigenen Cursor (die bekannte Hand) bekommt und bei Klick auf den Text die Webseite öffnet (ich suche nur das Ereignis, das Öffnen kriege ich schon hin). Grüße |
Re: Virtual Tree View und Mauscursor
Wäre das nicht mit einem HotTrack einfacher zu machen?
|
Re: Virtual Tree View und Mauscursor
HotTrack kenne ich nur vom Namen. Wie genau meinst du das?
|
Re: Virtual Tree View und Mauscursor
In VST.TreeOptions.PaintOptions kannst Du toHotTrack hinzufügen, mit VST.Colors.HotColor die Farbe des HotTracks festlegen und mit HotCursor den Cursor. Das geht natürlich auch per Code.
Delphi-Quellcode:
Entspricht das in etwa dem, was Du erreichen wolltest?
procedure TMainForm.FormCreate(Sender: TObject);
begin VST.TreeOptions.PaintOptions := VST.TreeOptions.PaintOptions + [toHotTrack]; VST.Colors.HotColor := clNavy; VST.HotCursor := crHandPoint; end; |
Re: Virtual Tree View und Mauscursor
Das ist fast die Lösung. Das Problem ist: Ich möchte HotTrack nur für eine Spalte (eben die mit dem Hyperlink). Alle anderen Spalten sollen normal bleiben.
|
Re: Virtual Tree View und Mauscursor
Versuch einmal, im OnHotChange-Event das Level des aktuellen Nodes zu ermitteln und dementsprechend HotTrack zu setzen oder eben nicht. Ich bin kein VST-Experte, aber das sollte IMO funktionieren.
|
Re: Virtual Tree View und Mauscursor
Danke DeddyH, aber das brachte leider auch nichts. OnHotChange wird bei einem Zeilenwechel ausgelöst, aber jede Zeile ist ja eine Node -> Alle haben Level 0. Ich habe schon überlegt es ins OnMouseMove zu bauen, aber wirklich performant kommt mir das nicht vor, bei jeder Mausbewegung zu ermitteln wo ich denn genau bin.
|
Re: Virtual Tree View und Mauscursor
Da weiß ich im Moment auch nicht weiter, man müsste die zur Node gehörige Column ermitteln. Leider habe ich mich gerade auch in den Weiten meiner Doku-PDF verlaufen und finde aktuell nichts Passendes.
[edit] Da ich nun meine eigene Unknenntnis bzgl. des VST offenbaren musste, will ich wenigstens noch auf den Video vom 2. virtuellen Stammtisch verweisen, falls Du das noch nicht kennst: ![]() |
Re: Virtual Tree View und Mauscursor
Die aktuelle Spalte kann man ja folgendermaßen auslesen:
vst_treeview.Header.Columns.ColumnFromPosition(); |
Re: Virtual Tree View und Mauscursor
Hallo,
ich habe hier mal unverschämterweise den Tipp von Rakshasa in meinen Code eingebaut:
Delphi-Quellcode:
Gruß Hawkeye
procedure TDemoForm.TreeDrawText(Sender: TBaseVirtualTree; TargetCanvas: TCanvas;
Node: PVirtualNode; Column: TColumnIndex; const Text: WideString; const CellRect: TRect; var DefaultDraw: Boolean); const LINKCOLUMN = 2; var P: TPoint; HotColumn: TColumnIndex; begin if ((Node = Tree.HotNode) and (toHotTrack in Tree.TreeOptions.PaintOptions)) then begin P := Tree.ScreenToClient(Mouse.CursorPos); HotColumn := Tree.Header.Columns.ColumnFromPosition(P); if ((Column = LINKCOLUMN) and (HotColumn = LINKCOLUMN)) then TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsUnderline] else TargetCanvas.Font.Style := TargetCanvas.Font.Style - [fsUnderline]; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz