![]() |
Sortieren im VirtualStringTree
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
soweit hat es ja ganz ordentlich funktioniert. Das erstellen von Items, Folder und Root klappt. Auch das löschen der Items funktioniert tadellos. Nur das sortieren der Items funktioniert nicht. Eigentlich möchte ich nur das Ordner unter Ordner stehen und darunter dann die normalen Items. Wie ich es gerne hätte ist auf den 2 Bildern zu sehen. Also erst einmal nach Typen sortieren. Danach wäre eine Sortierung nach Namen wünschenswert aber nicht zwingend. Ich habe mir das schon einmal mit dem CompareNodes angeschaut, komme aber nicht klar. So definiere ich meine Items:
Delphi-Quellcode:
Ich muß wohl irgendwie erst nach dem ItemType sortieren und dann nach dem Caption.
type
TItemType = (itRoot, itFolder, itItem); type PCodeData = ^TCodeData; TCodeData = record Caption: string; Text: string[255]; ItemType: TItemType; OpenIndex: Integer; CloseIndex: Integer; end; Kann mir bitte hier jemand einen Tipp geben?! gruss Andreas |
Re: Sortieren im VirtualStringTree
Liste der Anhänge anzeigen (Anzahl: 1)
hallo,
die komponente hat eine funktion "vst.SortTree". im anhang findest du eine pdf-datei mit nützlichen beispielen. siehe auch: ![]() |
Re: Sortieren im VirtualStringTree
Hallo,
erst einmal danke für die Info. Werde mich heute mal mit dem Thema beschäftigen. gruss. |
Re: Sortieren im VirtualStringTree
Zitat:
|
Re: Sortieren im VirtualStringTree
Liste der Anhänge anzeigen (Anzahl: 1)
Hi
Schau Dir einmal beil. Demo an, ich habe es für ein früheres Posting erstellt. Es handelt sich nur um ein Demo und ist sicher kein "schöner Code", doch die Sort-Funktion funzt einwandfrei. Ich hoffe, das hilft weiter. Gruss |
Re: Sortieren im VirtualStringTree
Hallo,
erst einmal danke für die Tipps. Habe eine Lösung für mein Problem gefunden. Hier der Code:
Delphi-Quellcode:
gruss Andreastype TItemType = (itRoot, itFolder, itItem); type PCodeData = ^TCodeData; TCodeData = record Caption: string; Text: string; ItemType: TItemType; OpenIndex: Integer; CloseIndex: Integer; end; ... //------------------------------------------------------------------------------ // Procedure : tvCodeCompareNodes //------------------------------------------------------------------------------ procedure TCodeForm.tvCodeCompareNodes(Sender: TBaseVirtualTree; Node1, Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer); var Data1: PCodeData; Data2: PCodeData; begin Data1 := tvCode.GetNodeData(Node1); Data2 := tvCode.GetNodeData(Node2); if (not Assigned(Data1)) or (not Assigned(Data2)) then Result := 0; if (Data1.ItemType = itFolder) and (Data2.ItemType = itFolder) then Result := CompareText(Data1.Caption, Data2.Caption); if (Data1.ItemType = itItem) and (Data2.ItemType = itItem) then Result := CompareText(Data1.Caption, Data2.Caption); if (Data1.ItemType = itFolder) and (Data2.ItemType = itItem) then Result := -1; if (Data1.ItemType = itItem) and (Data2.ItemType = itFolder) then Result := 1; end; |
Re: Sortieren im VirtualStringTree
Hallo Andreas,
die Prozedur könnte zu einer AV führen, falls deine Knotendaten nicht existieren. Also: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:01 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