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 VirtualTreeView: Header Drag'n Drop (https://www.delphipraxis.net/144172-virtualtreeview-header-dragn-drop.html)

Rakshasa 1. Dez 2009 22:37


VirtualTreeView: Header Drag'n Drop
 
Hallo Leute,

ich habe hier ein Problem, von dem ich nicht weiß, ob's ein Bug oder ein Feature ist:

Ich habe bei meinem VirtualStringTree das Dragging von Columns aktiviert, das funktioniert natürlich auch automatisch.
Wenn ich nun aber in der Methode
Code:
 HeaderDragged(Sender: TVTHeader; Column: TColumnIndex; OldPosition: Integer);
Column und OldPosition mir anschaue, so sind beide immer vollkommen identisch. Warum ist das so? Müsste in OldPosition nicht der Start-Spaltenindex der Drag'n Drop Vorganges gespeichert sein?

Weiteres:

Wenn die Columns nun über Drag'n Drop verschiebe, so werden ja auch die jeweiligen Werte der Spalten richtig verschoben, soweit in Ordnung (also wenn ich Spalte A nach B verschiebe, so verschieben sich auch die Werte von A nach B). NWenn ich nun aber alle Columns in einer Schleife abfrage:

Code:
For x := 0 to vst.header.Columns.Count -1 do begin
  Showmessage(Vst.header.Columns[x].Text);
end;
Dann ist die Reihenfolge immer noch die alte, d.h. die Werte und Spaltenüberschriften werden zwar der nach neuen (verschobenen) Reihenfolge angezeigt, aber wenn ich die neue Reihenfolge über eine Schleife ermitteln will, so erhalte ich immer noch die alten Positionen. Irgendwie scheint es so, als ob die dargestellte (also defacto verschobene) Reihenfolge nicht über die Eigenschaft .Columns abgefragt werden kann?

Kann mir jemand erklären, ob das so ist? Und warum? :-/

Gollum 2. Dez 2009 06:21

Re: VirtualTreeView: Header Drag'n Drop
 
Hallo,

die (interne) Reihenfolge der Columns ändert sich nicht.
Die aktuelle Position des Columns bekommst Du mit der Property Position
Delphi-Quellcode:
with vst.header do
  for x := 0 to Columns.Count -1 do
    ShowMessage(Columns[Columns[x].Position].Text);

Rakshasa 2. Dez 2009 19:09

Re: VirtualTreeView: Header Drag'n Drop
 
Aaah, super!

Danke!! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:12 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