AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sortierung in einem Treeview

Ein Thema von torud · begonnen am 9. Mär 2005 · letzter Beitrag vom 21. Jul 2005
Antwort Antwort
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Sortierung in einem Treeview

  Alt 9. Mär 2005, 13:12
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???
Danke
Tom
  Mit Zitat antworten Zitat
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#2

Re: Sortierung in einem Treeview

  Alt 9. Mär 2005, 13:37
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:
procedure TForm1.Absteigend1Click(Sender: TObject);
begin
  TV1.CustomSort(@CustomSortProc, 0);
end;
Gruß
s14
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Sortierung in einem Treeview

  Alt 9. Mär 2005, 13:50
Hallo s14!

Habe es gerade probiert und bin begeistert!
Genau das war es, was ich brauchte!

Spitze, Super, Danke!
Danke
Tom
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#4

Re: Sortierung in einem Treeview

  Alt 20. Jul 2005, 15:48
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
F_Main.TreeView.CustomSort(@F_Main.CustomSortProc,(Coursorposition)0,true); diese Fehlermeldung:
Zitat:
[Error] (...): Variable required
Innerhalb der F_Main meldet der Compiler keinen Fehler diesbezüglich. Da ich die SortProc nicht public deklarieren darf, weiß ich gerade nicht weiter. Hat jemand ne Antwort darauf?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Sortierung in einem Treeview

  Alt 21. Jul 2005, 01:03
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
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#6

Re: Sortierung in einem Treeview

  Alt 21. Jul 2005, 01:14
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]
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 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