Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Sortierung (https://www.delphipraxis.net/1722-sortierung.html)

schitho 19. Dez 2002 17:13


Sortierung
 
Hi,

verwende ShellListView mit vsReport. Dadurch werden neben dem Dateinamen auch noch Größe, Typ, etc,) angezeigt.

Wenn man auf den Header klickt passiert gar nix. :cry:

Im Explorer von Windows, wird bei einem Klick auf den Header die jeweilige Spalte sortiert. Dies würde ich gerne auch mit ShellListView erreichen. 8)

Es gibt zwar die Eigenschaft Sorted, doch dadurch kann ich nur bestimmen, ob nach der ersten Spalte sortiert werden soll. :(

Wie kann ich nun erreichen, dass durch einen Klick am Header die jeweilige Spalte auf- bzw. absteigend sortiert wird. :?: :?: :?:

Gruß

Thomas :coder:

Hansa 19. Dez 2002 17:18

Hast Du mal doppelt gekickt auf den Header ?

schitho 19. Dez 2002 17:23

Zitat:

Zitat von Hansa
Hast Du mal doppelt gekickt auf den Header ?

Hab's gerade ausprobiert. Ändert aber nix daran. :(

Thomas

Hansa 19. Dez 2002 17:27

Tja,

dann mußt Du, so wie immer :mrgreen: schon näher erläutern, was Du vorhast. :dancer:

Gruß
Hansa

Christian Seehase 19. Dez 2002 17:32

Moin Thomas,

ich vermute mal, dass der ShellListView vom CustomListView abgeleitet ist, und über eine Methode CustomSort verfügt.
Sollte das der Fall sein, dann könntest Du es hierüber einbauen.
(zumindest in D5 ist das Beispiel in der Hilfe einigermassen brauchbar)

schitho 19. Dez 2002 17:47

Zitat:

dann mußt Du, so wie immer schon näher erläutern, was Du vorhast.
Ich dachte, dass hätte ich eh schon gemacht. :roll:

Na gut. Versuch ich es eben nochmals: :coder:

Also ich verwende in meinem Programm ShellListview, um alle Dateien eines Verzeichnisses anzuzeigen. Dabei wird neben dem Dateinamen (1.Spalte), die Dateigröße (2.Spalte), der Dateityp (3.Spalte) und das Datum der letzten Änderung (4.Spalte) angezeigt. Also genaus, wie im Windows Exlorer in der Ansicht Details.

Nun gibt es ganz oben so einen grauen Balken (den Header), in dem sich auch die Spaltenbeschriftung befindet (Dateiname, Größe, Typ und Geändert am).

Wenn man nun auf Header von Dateiname klickt, soll die Liste nach den Dateinamen (alphabetisch) sortiert werden. War sie vorher aufsteigen sortiert, dann soll sie nach einem Klick absteigend sortiert werden und umgekehrt.

Wenn man nun auf Header von Größe klickt, soll sich Liste nach der Dateigröße der einzelnen Dateien sortiert werden. War sie vorher aufsteigen sortiert, dann soll sie nach einem Klick absteigend sortiert werden und umgekehrt.

etc.

Jetzt alles klar?? :spin:

Und, wie lös ich dieses Problem. Momentan tut sich beim klicken nämlich gar nix :cry:

Gruß
Thomas :hi:

Hansa 19. Dez 2002 18:00

Hi,

So ungefähr meinte ich das ja. Da fällt mir noch ein : Ist das nicht TreeView ??

Gruß
Hansa

schitho 19. Dez 2002 18:01

Zitat:

ich vermute mal, dass der ShellListView vom CustomListView abgeleitet ist, und über eine Methode CustomSort verfügt.
So düfte es sein. Hab den Code eingebaut. Allerdings funktioniert es nicht. Was ist falsch daran??? :oops:

Code:
function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
  Result := -CompareText(Item1.Caption,Item2.Caption);
end;


procedure TFormShredExplor.ShellListView1ColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  ShellListView1.CustomSort(@CustomSortProc, 0);
  ShellListView1.Refresh;
end;
Gruß
Thomas :coder:

Luckie 19. Dez 2002 18:42

Und jetzt die eine Millionen Euro Frage: Was geht nicht? :shock:

harrybo 19. Dez 2002 20:10

Hi schitho,

TShellListView kannst Du ersetzen durch die kostenlose Komponente "Virtual TreeView", zu finden auf der Site von Mike Lischke unter http://www.delphi-gems.com/VirtualTreeview/VT.php. Zugegeben, die Installation ist trotz ausreichender Dokumentation etwas umständlich, dafür wirst Du belohnt mit einer Komponente, deren Properties-Liste etwa dreimal so lang ist. Sortieren kann die Komponente ohne zusätzliche Programmierung, außerdem gibt es hier neben vsReport auch die Miniaturansicht und einiges mehr. Angenehmer Nebeneffekt: die Komponente hat eine deutlich höhere Performance als TShellListView.
gruß, harrybo

schitho 19. Dez 2002 20:49

Zitat:

Zitat von Luckie
Und jetzt die eine Millionen Euro Frage: Was geht nicht? :shock:

Gar nix. Es tut sich einfach nix, wenn ich auf den Header klicke. Es wird zwar die Liste refreshed, aber von einer Sortierung keine Spur.

Ich werde mir zwar die von harrybo vorgeschlagen "Virtual TreeView" ansehen, trotzdem würde es mich intressieren, was ich falsch gemacht habe.

Gruß
Thomas

harrybo 20. Dez 2002 10:57

Hi schitho,

klar ist, dass die Komponente nicht selbst sortieren kann, d.h. das Sortieren muss codiert werden. Wie das im Fall der TListView geht ist sehr gut in http://www.swissdelphicenter.ch/de/showcode.php?id=1103 beschrieben. Ich habe das mal auf die TShellListView angewendet, die sortiert aber damit immer noch nicht. Vielleicht liegt es aber nur an einer Kleinigkeit. Vielleicht hilft Dir das schon mal weiter.

gruß, harrybo

schitho 20. Dez 2002 12:56

Zitat:

Zitat von harrybo
Hi schitho,

klar ist, dass die Komponente nicht selbst sortieren kann, d.h. das Sortieren muss codiert werden. Wie das im Fall der TListView geht ist sehr gut in http://www.swissdelphicenter.ch/de/showcode.php?id=1103 beschrieben. Ich habe das mal auf die TShellListView angewendet, die sortiert aber damit immer noch nicht. Vielleicht liegt es aber nur an einer Kleinigkeit. Vielleicht hilft Dir das schon mal weiter.

gruß, harrybo

Ich hab es so auch schon ausprobiert. Hat bei mir aber auch nicht funktioniert. :cry:

Hab mir die VirtualTreeView-Komonente angesehen. Ist wirklich sehr mächtig, aber auch sehr aufwendig. Eigendlich gefällt mir ShellListView sehr gut, vermisse nur folgendes:

1.) einfache Sortiermöglichkeit
2.) Filtern (z.B. nur Dateien eines bestimmten dateitypes, wie *.bak anzeigen)
3.) Ausblenden der Laufwerke (nicht nur der Folder).

Aber scheinbar geht das nicht.

Kennt jemand eine Komonente die das kann, die aber nicht so aufwendig wie VirtualTreeView ist? :?:

Gruß
Thomas :coder:

Christian Seehase 20. Dez 2002 13:05

Moin Thomas,

den ShellListView kenne ich ja nicht, deshalb kenne ich auch nicht dessen Möglichkeiten, aber hast Du schon mal darüber nachgedacht, Dir etwas vergleichbares aus dem CustomListView selber zu erstellen?

schitho 20. Dez 2002 14:14

Zitat:

Zitat von Christian Seehase
..., aber hast Du schon mal darüber nachgedacht, Dir etwas vergleichbares aus dem CustomListView selber zu erstellen?

Nein, hab ich noch nicht, weil mir ShellTreeView sonst sehr gut gefällt. Wenn da nicht das mit der Sortierung, ..... wäre.

Hmmm.... Vielleicht beschäftige ich mich doch noch genauer damit. Man hat ja sonst eh nix zu tun :wink:

Gruß
Thomas :hi:

schitho 21. Dez 2002 00:42

Hab mich mit ListView auseinandergesetzt und bin dabei auf folgende Seite gestoßen, die mir sehr geholfen hat: :spin:

http://www.delphi-fundgrube.de/files/listview.txt

Gruß
Thomas :hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19: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