Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi VirtualStringTree: Falsche Spalte bei Doppelklick (https://www.delphipraxis.net/145031-virtualstringtree-falsche-spalte-bei-doppelklick.html)

amigage 22. Dez 2009 10:45


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:
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;
Gibt es eine neue Einstellung, die ich vorher aktivieren muss?

Vielen Dank, wenn mir jemand einen Tipp geben könnte.

generic 22. Dez 2009 11:11

Re: VirtualStringTree: Falsche Spalte bei Doppelklick
 
Hast du den GridSupport an?

amigage 23. Dez 2009 12:39

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:
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]
Ich hoffe, es hilft bei der Fehlersuche. Danke.

Nachtrag:
Ich dachte jetzt gerade, es liegt vielleicht am toToggleOnDblClick. Habe es deaktiviert, bringt aber auch nix.

amigage 5. Mär 2010 09:46

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?

Stevie 5. Mär 2010 10:48

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?

amigage 5. Mär 2010 13:23

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.

Stevie 5. Mär 2010 13:47

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));

generic 5. Mär 2010 14:51

Re: VirtualStringTree: Falsche Spalte bei Doppelklick
 
Das kann auch passieren, wenn die Aufklicksymbole doppelt geklickert werden.
Diese befinden sich nicht in einer Spalte.

amigage 5. Mär 2010 17:18

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:
VirtualStringTree1.Header.Columns.ColumnFromPosition(VirtualStringTree1.ScreenToClient(Mouse.CursorPos));
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz