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 Listview sortieren über Button? (https://www.delphipraxis.net/33779-listview-sortieren-ueber-button.html)

Waaaghboss 12. Nov 2004 13:58


Listview sortieren über Button?
 
Hi Profies 8) ,

ich möchte meine Listview Auf- bzw. Abwärts sortieren konnen. Das habe ich ja auch schon erfahren, aber ich möchte nicht auf den "Column Sort Button" der Listview drücken, sondern auf ein Label, das dann quasi dadrauf verlinkt!

Kann mir wer Helfen?

Delphi-Quellcode:
procedure TFMain.ListColumnClick(Sender: TObject; Column: TListColumn);
begin
  ColumnToSort := Column.Index;
  if ColumnToSort = LastSorted then
    SortDir := 1 - SortDir
  else
    SortDir := 0;
  LastSorted := ColumnToSort;
  (Sender as TCustomListView).AlphaSort;
end;

procedure TFMain.ListCompare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
var
  ix: integer;
begin
  if ColumnToSort = 0 then
  begin
    if SortDir = 0 then
      Compare := CompareText(Item1.Caption,Item2.Caption)
    else
      Compare := CompareText(Item2.Caption,Item1.Caption);
  end //if ColumnToSort = 0 then
  else
  begin
   ix := ColumnToSort - 1;
   if SortDir = 0 then
     Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix])
   else
     Compare := CompareText(Item2.SubItems[ix],Item1.SubItems[ix]);
  end;
end;

procedure TFMain.AnredeClick(Sender: TObject);
begin
  ...   <-- WAS MUSS HIER REIN?
end;
Ich habe es schon mit folgendem probiert, aber er sortiert dabei nur einmal von A bis Z und dann passiert nach erneuten clicken nichts mehr. Ich hätte gerne eine Auf-/Abwärts Sortierung.

Delphi-Quellcode:
procedure TFMain.AnredeClick(Sender: TObject);
begin
  ColumnToSort := 0;
  List.AlphaSort;
end;
Danke schonmal im Voraus, MfG Waaaghboss

alcaeus 12. Nov 2004 14:06

Re: Listview sortieren über Button?
 
Hi Waaaghboss,

du musst nur den Click auf eine Spalte simulieren:
Delphi-Quellcode:
ListColumnClick(Sender, ListView1.Columns[0]);
Greetz
alcaeus

Waaaghboss 12. Nov 2004 14:13

Re: Listview sortieren über Button?
 
Hi alcaeus,

das habe ich auch schon gemacht, aber dann trat immer ein Fehler auf, wenn ich das Label gedrückt habe "...Exeption der Klasse EInvalid Cast ist aufgetreten..."

Ich weiß nicht, was ich falsch mache...

MfG Waaaghboss

alcaeus 12. Nov 2004 14:16

Re: Listview sortieren über Button?
 
Hi Waaaghboss,

zeig doch mal den Aufruf, welcher den Fehler produziert hat. Du hast versucht, nicht kompatible Typen zu casten (also z.B. TListColumn auf TListView oder umgekehrt).

Greetz
alcaeus

Waaaghboss 12. Nov 2004 14:30

Re: Listview sortieren über Button?
 
Hi alcaeus,

Mit der möchte ich die Procedur aufrufen, da ich die ShowColumnHeaders später auf False setzen möchte, deswegen brauche ich ein Objekt z.B. Das Label "Anrede" um trotzdem sortieren zu können. Ich habe auf dem Gebiet wenig Ahnung, deswegen ist es möglich, das ich etwas vergessen habe oder so.

Delphi-Quellcode:
procedure TFMain.AnredeClick(Sender: TObject); <-- Anrede ist ein Label
begin
  ListColumnClick(Sender, List.Columns[0]);
end;
Wenn ich es so aufrufe kommt in der Zeile ein grüner Pfeil und der Text ist blau unterlegt.

Delphi-Quellcode:
procedure TFMain.ListColumnClick(Sender: TObject; Column: TListColumn);
begin
  ColumnToSort := Column.Index;
  if ColumnToSort = LastSorted then
    SortDir := 1 - SortDir
  else
    SortDir := 0;
  LastSorted := ColumnToSort;
  (Sender as TCustomListView).AlphaSort; <--  Hier kommt der Fehler
end;
MfG Waaaghboss

alcaeus 12. Nov 2004 14:40

Re: Listview sortieren über Button?
 
:wall: Ist klar, ich hab dir einen falschen Aufruf gesagt :oops:

Probiers mal so:
Delphi-Quellcode:
ListColumnClick(ListView1, ListView1.Columns[0]);
Greetz
alcaeus

Waaaghboss 12. Nov 2004 14:50

Re: Listview sortieren über Button?
 
:bounce2:

Es klappt, nice ...

Vielen, Vielen Dank!!!

Ich habe quasi nen Crashkurz in Delphi genommen und habe deshalb paar Lücken bei manchen Dingen. :wink:

MfG Waaaghboss & schönen Tag noch

Ps: cu cuz, i´ve probs very often :mrgreen:


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