![]() |
Sortierung in einem Treeview
Hallo Wissende!
Ich stehe vor einem echten Problem! Zumindest stellt es für mich eins dar. Ich habe einen Treeview, welcher fix 3 Parents hat. Diese Parents heissen Elemente, Klassen und ID´s. Ich parse eine CSS-Datei und weise dann diesen Parents die jeweilgen Selektoren (Childs) zu. Nun würde ich gern innerhalb dieser Gruppen alphabetisch sortieren. Das scheint aber gar nicht so einfach, oder finde ich nur den Schalter nicht!? Vielleicht ist noch wichtig zu wissen, dass ich den Inhalt einer SynEdit permanent parse und "bei Bedarf" in den Treeview schreibe. Also wenn sich ein Selektor ändert, ändere ich den Treeviewinhalt. Beim Einlesen einer Datei klappt es wunderbar mit der Sortierung, da ich alle Elemente in Stringlisten einlese, welche ich sortiere. Da ich aber den Treeview nicht bei jedem Tastaturanschlag komplett loeschen und wieder schreiben will, aktualisiere ich den Treeview nur bei Änderungen. Allerdings ohne das die Sortierung erhalten bleibt. Wer kann helfen??? |
Re: Sortierung in einem Treeview
Hallo torud,
mit dieser Funktion sollte es gehen:
Delphi-Quellcode:
function CustomSortProc(Node1, Node2: TTreeNode; Data: Integer): Integer; stdcall;
// für das Sortieren von TreeViews, als Parameter an Customsort übergeben: // Aufruf: TreeView1.CustomSort(@CustomSortProc, 0); // Data: 0 = Absteigend, 1 = Aufsteigend begin if Data = 0 then Result := AnsiStrIComp(Pchar(Node1.Text), PChar(Node2.Text)) else Result := -AnsiStrIComp(PChar(Node1.Text), PChar(Node2.Text)); end;
Delphi-Quellcode:
Gruß
procedure TForm1.Absteigend1Click(Sender: TObject);
begin TV1.CustomSort(@CustomSortProc, 0); end; s14 |
Re: Sortierung in einem Treeview
Hallo s14!
Habe es gerade probiert und bin begeistert! Genau das war es, was ich brauchte! Spitze, Super, Danke! |
Re: Sortierung in einem Treeview
Huhu,
bei diesem Thema möchte ich gern mal nachhaken^^ Ich möchte nämlich global, also von einer anderen Form aus, auf die SortProc zugreifen. Ich erhalte jedesmal bei
Delphi-Quellcode:
diese Fehlermeldung:
F_Main.TreeView.CustomSort(@F_Main.CustomSortProc,(Coursorposition)0,true);
Zitat:
|
Re: Sortierung in einem Treeview
Also, ich weiss ja nicht was du da vor hast.
Aber es ist nicht sinnvoll Zugriffe unit-übergreifend einfach über Komponenten zumachen. Eine Zugriffmethode ist in so einem Fall die einzig sinnvolle Vorgehenweise. Ich kenne deine Unit-Struktur nicht aber Zirkelschlüsse sind nicht sinnvoll. In so einem Fall hilft nur noch ein Hook, um noch einigermaßen sauber zuprogrammieren. Also mach dir erstmal gedanken über deine Programmstruktur. Überlege mal ob das sinnvoll ist, was du da vorhast. MfG Thorsten |
Re: Sortierung in einem Treeview
Ich möchte die Sortierungsmethode (Name,ImageIndex usw.) der TreeView in Form1 mit einer zweiten Form (= Optionen) ändern können. Dafür muss ich von der zweiten Form aus, die Änderungen übernehmen.
*Thinking* Mir fällt gerade ein, dass ich eine in Form1 deklarierte public Form1.Procedure, die die Function "function CustomSortProc(Node1, Node2: TTreeNode; Data: Integer): Integer; stdcall;" enthält, erstellen könnte... [edit] Ist so zwar umständlicher als der leider nicht vorhandene direkte Weg, aber es funktioniert jetzt so, wie gewünscht. Danke für den Denkanstoß, omata! [/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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