![]() |
VirtualStringTree: Falsche Spalte bei Doppelklick
Hallo,
ich nutze seit Jahren das geniale VirtualTreeView. Ich habe nach dem Update auf Delphi 2009 auch die Komponente neu installieren müssen. Seitdem kann ich beim Doppelklick nicht mehr abfragen, in welcher Spalte sich der Cursor befindet. Mein Lösung sah bisher so aus:
Delphi-Quellcode:
Gibt es eine neue Einstellung, die ich vorher aktivieren muss?
procedure TMainDlg.VSTDblClick(Sender: TObject);
var Node: PVirtualNode; Data: PTreeData; // meine Struktur begin Node := VST.FocusedNode; if not Assigned(Node) then Exit; Data := VST.GetNodeData(Node); showmessage(IntToStr(VST.FocusedColumn)); // zur Anzeige der fokussierten Spalte Case VST.FocusedColumn of ... end; end; Vielen Dank, wenn mir jemand einen Tipp geben könnte. |
Re: VirtualStringTree: Falsche Spalte bei Doppelklick
Hast du den GridSupport an?
|
Re: VirtualStringTree: Falsche Spalte bei Doppelklick
Danke für die schnelle Reaktion. Ich komme leider erst jetzt dazu :roll:
Was ist mit GridSupport gemeint? Ich finde eine solche Einstellung nicht. Oder soll es TreeOptions.PaintOptions = TreeOptions.PaintOptions - [toShowButtons] sein? Folgende Einstellungen sind bei mir gesetzt:
Delphi-Quellcode:
Ich hoffe, es hilft bei der Fehlersuche. Danke.
TreeOptions
AnimationOptions := [] AutoOptions := [toAutoDropExpand,toAutoScrollOnExpand,toAutoTristateTracking,toAutoDeleteMovedNodes] MiscOptions := [toCheckSupport,toFullRepaintOnResize,toInitOnSave,toReportMode,toToggleOnDblClick,toWheelPanning] PaintOptions := [toShowHorzGridLines,toShowVertGridLines,toUseBlendedImages] SelectionOptions := [toExtendedFocus,toFullRowSelect,toCenterScrollIntoView] StringOptions := [toSaveCaptions,toAutoAcceptEditChange] Nachtrag: Ich dachte jetzt gerade, es liegt vielleicht am toToggleOnDblClick. Habe es deaktiviert, bringt aber auch nix. |
Re: VirtualStringTree: Falsche Spalte bei Doppelklick
Hallo,
ich würde die Frage gern noch einmal nach vorn schieben wollen, da ich bisher selbst noch keine Lösung gefunden habe. Nutzt denn hier kaum jemand den VirtualStringTree? |
Re: VirtualStringTree: Falsche Spalte bei Doppelklick
Habe gerade mal ein Form mit einem neuen VST erstellt und ein OnDblClick Event definiert, welches mit den ColumnIndex der geklickten Spalte ausgibt. Das funktioniert soweit. Meine VST Version ist die aktuelle aus dem SVN.
Welchen Wert liefert denn FocusedColumn bei dir zurück? |
Re: VirtualStringTree: Falsche Spalte bei Doppelklick
Also bei mir gibt er bei VST.FocusedColumn immer 0 zurück. Ich nutze Version 4.8.6
Kannst Du Deine OnClick-Routine einmal hier posten, damit ich mir das einmal anschauen kann? Besten Dank im voraus. |
Re: VirtualStringTree: Falsche Spalte bei Doppelklick
Liste der Anhänge anzeigen (Anzahl: 1)
Hab dir einfach das Test-Projekt angehangen.
P.S.: Mir ist aufgefallen, dass wahrscheinlich dein Problem daher kommt, dass du evtl in der Column, in welche du klickst, keinen Text zum fokusieren hast und sich daher nix rührt. Folgendes im OnDblClick-Event sollte da helfen:
Delphi-Quellcode:
VirtualStringTree1.Header.Columns.ColumnFromPosition(VirtualStringTree1.ScreenToClient(Mouse.CursorPos));
|
Re: VirtualStringTree: Falsche Spalte bei Doppelklick
Das kann auch passieren, wenn die Aufklicksymbole doppelt geklickert werden.
Diese befinden sich nicht in einer Spalte. |
Re: VirtualStringTree: Falsche Spalte bei Doppelklick
Liste der Anhänge anzeigen (Anzahl: 1)
@Stevie:
Danke für den Tipp mit dem DBLClick-Event. Merkwürdigerweise stehen bei mir aber Werte in den einzelnen Zeilen bzw. Spalten. Unter Delphi 5 hatte ich bisher auch keine Probleme, nur das Delphi 2009 ziert sich. Nach unzähligen Stunden des Vergleichens der Einstellungen Deines und meines Projekts bin ich zu zu keiner wirklichen Erkenntnis gekommen. Ich habe Optionen aktiviert/deaktiviert. Bei Deinem Projekt gab es keine Probleme, bei meinem kein erwartetes Ergebnis. Ich habe sogar einen neuen TreeView eingefügt und nach und nach die Einstellungen meines Projekts angepasst. Irgendwann kam kein Resultat zurück, ließ sich aber nicht wieder rückgängig machen...
Delphi-Quellcode:
Das hilft mir erst einmal weiter, jedoch ist die Abfrage irgendwie ein paar Pixel zu ungenau. Es scheint, als würde die am Anfang einer jeden Zeile eingeblendete Checkbox die Berechnung der Positionierung beeinflussen. Zum besseren Verständnis hänge ich eine Grafik dran.
VirtualStringTree1.Header.Columns.ColumnFromPosition(VirtualStringTree1.ScreenToClient(Mouse.CursorPos));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 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-2025 by Thomas Breitkreuz