AGB  ·  Datenschutz  ·  Impressum  







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

TreeView nach Nodes sortieren

Ein Thema von Opa Knack · begonnen am 5. Mai 2008 · letzter Beitrag vom 5. Mai 2008
Antwort Antwort
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#1

TreeView nach Nodes sortieren

  Alt 5. Mai 2008, 01:16
Hallo,

ich hoffe, ich kann's richtig erklären:

Ich habe ein TreeView, bei welchem ich Records zu den Nodes hinterlegt habe (das, was hier im Forum meist mit TreeNodeEx bezeichnet wird). Dabei zeigt ein Record auf ein Feld "Datum", welches ein String im Format "mm/yyyy" ist (z. B. 05/2008). Ein weiterer Record enthält den Titel, welcher dann in Verbindung mit dem Datum den Nodetext ergibt (z. B. "05/2008: Eintrag 01").

Mein Ansinnen ist nun, die Nodes dem Datum entsprechend zu sortieren. Rein nach dem Nodetext zu gehen, funktioniert natürlich leider nicht, da dabei 09/2007 natürlich nach 05/2008 käme, der Definition nach aber davor liegen sollte.

Mein Gedanke war nun, die Nodes in eine Stringlist zu transportieren, die Datumsfelder in ein Timestamp zu konvertieren (Problem 1), dann nach diesem Timestamp zu sortieren (Problem 2) und dann wieder ins TreeView zu schreiben (Problem 3).

Nachdem ich nun wirklich lange gesucht und dabei nur die Funktion CustomSort gefunden habe (welche mich allerdings nicht weitergebracht hat), hoffe ich nun, dass ich nicht der einzige Mensch auf Erden bin, der dieses Problem hat und dass es bereits eine Lösung oder einen Ansatz zur Findung derselben gibt. Falls ihr mir da helfen könntet, wäre euch mein nahezu ewiger Dank gewiss

Gute Nacht und Danke
Opi
  Mit Zitat antworten Zitat
christian_r
(Gast)

n/a Beiträge
 
#2

Re: TreeView nach Nodes sortieren

  Alt 5. Mai 2008, 01:57
Nach der Methode Code vom Layout trennen, folgende Idee:

- Record => Code
- TreeView => Layout

Den Timestamp als Ordinalzahl im Record speichern, die Records nach Timestamp sortieren und den Treeview anschließend neu aufbauen.

Damit kannst Du Deinem Algorhythmus in Zukunft wesentlich schneller immer wieder ein neues Layout verpassen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: TreeView nach Nodes sortieren

  Alt 5. Mai 2008, 08:02
Moin,

wenn ich den String MM/YYYY als gegeben ansehe, dann funktioniert die Sortierung so:

Delphi-Quellcode:
type
  TDemoForm = class(TForm)
    TreeView: TTreeView;
    Button: TButton;
    procedure FormCreate(Sender: TObject);
    procedure TreeViewCompare(Sender: TObject; Node1, Node2: TTreeNode;
      Data: Integer; var Compare: Integer);
    procedure ButtonClick(Sender: TObject);
  private
    fs: TFormatSettings;
  end;

var
  DemoForm: TDemoForm;

implementation

{$R *.dfm}

uses
  DateUtils;

procedure TDemoForm.FormCreate(Sender: TObject);
begin
  GetLocaleFormatSettings(GetSystemDefaultLCID, fs);
  fs.DateSeparator := '/';
  fs.ShortDateFormat := 'dd/mm/yyyy';
end;

procedure TDemoForm.TreeViewCompare(Sender: TObject; Node1,
  Node2: TTreeNode; Data: Integer; var Compare: Integer);
var
  d1, d2: TDate;
begin
  d1 := StrToDate('01/' + Copy(Node1.Text, 1, 7), fs);
  d2 := StrToDate('01/' + Copy(Node2.Text, 1, 7), fs);
  Compare := CompareDate(d1, d2);
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
begin
  TreeView.AlphaSort(False);
end;
Grüße vom marabu
  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 01:38 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