AGB  ·  Datenschutz  ·  Impressum  







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

TreeView Verwaltung

Ein Thema von Dunkelbunt27 · begonnen am 20. Okt 2012 · letzter Beitrag vom 21. Okt 2012
Antwort Antwort
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#1

TreeView Verwaltung

  Alt 20. Okt 2012, 12:44
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
Miniaturansicht angehängter Grafiken
screenshot.png  
FG Dunkelbunt
"Wer zuletzt lacht hat den höchsten Ping"
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

AW: TreeView Verwaltung

  Alt 20. Okt 2012, 13:52
Für die Sortierung würde ich die Eigenschaft SortType entsprechend setzen.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#3

AW: TreeView Verwaltung

  Alt 20. Okt 2012, 14:25
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 TreeView.SortType := stText gesetzt,
nach dem Beschreiben des TreeView, dann ATreeViewlphaSort(True); aufgerufen
(true, damit auch die Unterzweige sortiert werden).
AlphaSort sucht dann ob im OnCompare etwas steht, also habe ich in das OnCompare folgenden Code geschrieben:
Compare := -AnsiCompareStr(Node1.Text, Node2.Text); Wichtig in meinem Fall war das MINUS vor Compare, weil dadurch die Sortierung umgekehrt wurde.
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 :/
FG Dunkelbunt
"Wer zuletzt lacht hat den höchsten Ping"
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: TreeView Verwaltung

  Alt 20. Okt 2012, 18:17
Es gibt ein wunderbares Tutorial zu TreeView in Internet, das läßt zum Schluß kaum Fragen offen:

http://users.iafrica.com/d/da/dart/z.../TreeView.html

Ist zwar schon sehr alt (ja, so spartanisch sah das Internet in seinen Anfängen 1997 aus), aber immer noch gut.
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: TreeView Verwaltung

  Alt 21. Okt 2012, 08:03
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?
Du musst auf jeden Fall die Zeit aus dem String während der Sortierung extrahieren und gesondert verarbeiten (String -> TTime). Dann kannst du mit < und > vergleichen.

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?
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#6

AW: TreeView Verwaltung

  Alt 21. Okt 2012, 09:48
Okay, danke Leute.
Das Tutorial schau ich mir dann mal an, ist wirklich schon etwas älter
FG Dunkelbunt
"Wer zuletzt lacht hat den höchsten Ping"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#7

AW: TreeView Verwaltung

  Alt 21. Okt 2012, 09:49
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: TreeView Verwaltung

  Alt 21. Okt 2012, 12:48
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.
Sagmal stalkst du mich? Kaum schreibe ich irgendwo was, dauerts kaum paar Stunden und du hast irgendwas auszusetzen, selbst wenn's völlig banal und überflüssig ist.

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.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

AW: TreeView Verwaltung

  Alt 21. Okt 2012, 15:29
Das Tutorial schau ich mir dann mal an, ist wirklich schon etwas älter
Auf das Alter kommt es nicht an.
  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:07 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