![]() |
TreeView Verwaltung
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Delphi-PRAXIS,
ich lade in ein TreeView alle Pfade und Unterpfade aus einem bestimmten Verzeichnis um damit arbeiten zu können. Das sieht dann etwa so aus wie in dem Screenshot, nur mit verschiedenen anderen Ordnern und Dateien. Jetzt möchte ich zwei Dinge realisieren: 1) Wie kann ich die aktuelle Auswahl sichern, also sprich: den aktuell geöffneten Ordner und das markierte Dokument Das ist dafür notwendig, wenn ich eines der Dokumente mit meinem Programm rauslösche, dann lade ich die Verzeichnisse/Dateien neu in das TreeView, mach es also tot und schreibe die Verzeichnisse wieder neu rein. Dabei gehen dann natürlich alle Ordner zu. Ich möchte dann den Ordner der vor dem löschen offen war wieder automatisch 'öffnen', also markieren lassen. 2) Ich lege die Dateinamen so an, dass die Erstellungszeit im Namen beinhaltet ist, also "17:30 Neues Dokument.txt" und "17:35 Veränderung.txt". Wie kann ich die Liste so sortieren lassen, dass das neuer Dokument, also "17:35 Veränderung.txt", oben steht? (Oder siehe Screenshot: 4.txt 3.txt 2.txt 1.txt 0.txt sortieren) Ich hoffe jemand kennt sich damit aus und kann es mir nachvollziehbar erklären, denn mit TreeViews und deren Struktur kenne ich mich noch nicht so gut aus... FG Dunkelbunt |
AW: TreeView Verwaltung
Für die Sortierung würde ich die Eigenschaft SortType entsprechend setzen.
|
AW: TreeView Verwaltung
Danke für die Antwort.
Das Problem beim Sortieren war immer, dass alles absteigend sortiert wurde, also oben das Älteste und unten das Neuer angezeigt wurde. Das Sortieren klappt jetzt (halbwegs) so wie ich es wollte. _____________________________________________ Erklärung für andere mit dem selben Problem: Ich habe
Delphi-Quellcode:
gesetzt,
TreeView.SortType := stText
nach dem Beschreiben des TreeView, dann
Delphi-Quellcode:
aufgerufen
ATreeViewlphaSort(True);
(true, damit auch die Unterzweige sortiert werden). AlphaSort sucht dann ob im OnCompare etwas steht, also habe ich in das OnCompare folgenden Code geschrieben:
Delphi-Quellcode:
Wichtig in meinem Fall war das MINUS vor Compare, weil dadurch die Sortierung umgekehrt wurde.
Compare := -AnsiCompareStr(Node1.Text, Node2.Text);
Jetzt wird so sortiert 4,3,2,1,0 anstelle von 0,1,2,3,4. Das erste Problem ist dadurch aber noch nicht gelöst :/ |
AW: TreeView Verwaltung
Es gibt ein wunderbares Tutorial zu TreeView in Internet, das läßt zum Schluß kaum Fragen offen:
![]() Ist zwar schon sehr alt (ja, so spartanisch sah das Internet in seinen Anfängen 1997 aus), aber immer noch gut. |
AW: TreeView Verwaltung
Zitat:
Kenne mich mit dem TTreeView nicht aus, arbeite fast ausschließlich mit dem TVirtualStringTree, aber ich glaube im TTreeView gibt's auch einen "OnCompareNode"-Event? :stupid: |
AW: TreeView Verwaltung
Okay, danke Leute.
Das Tutorial schau ich mir dann mal an, ist wirklich schon etwas älter :-D |
AW: TreeView Verwaltung
Wozu extrahieren?
Wenn die Zeit immer im Format HH:MM ist, also mit führenden Nullen ala 01:02, dann kann man dieses auch problemlos per String vergleichen, da die höherwertigen Werte immer vorne und deren Reihenfolge immer gleich sind. Genauso läßt sich ein Datum wie YYYY-MM-DD oder eine Zahl 0000002 (solang es immer gleichviel Ziffern mit führernder Null gibt) völlig ohne Probleme als String vergleichen. Nur eben DD.MM.YYYY geht natürlich nicht, da hier die größten Werte hinten stehen, oder wenn der Wochentag als Wort/Abkürzung vorkommt, da diese ebenfalls nicht alphabetisch sortierbar sind. |
AW: TreeView Verwaltung
Zitat:
Wenn du lieber Strings vergleichst, um vlt. den Aufwand zu sparen und das Datum zu vergleichen (was es ja nunmal ist), dann tu das. Ich persönlich bevorzuge den Weg, dann in so einem Fall auch mit einem Datum zu arbeiten, statt einem String. |
AW: TreeView Verwaltung
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03: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-2025 by Thomas Breitkreuz