Alphasort und Customsort bei Listview-Komponenten

Antworten
Michael57
Beiträge: 1
Registriert: Mo 30. Mär 2009, 00:09

Alphasort und Customsort bei Listview-Komponenten

Beitrag von Michael57 »

Nach 20 jähriger Programmierpause habe ich letztes Jahr mit Delphi angefangen und bin nun auf Lazarus umgestiegen, mein Problem: Alphasort oder Customsort bei Listview-Komponenten werden anscheinend von Lazarus nicht unterstützt, ich erhalte beim Compilieren die Fehlermeldung:

Code: Alles auswählen

(Sender as TCustomListView).AlphaSort;
Unit2.pas(55,31) Error: identifier idents no member "AlphaSort"

Habe ich nur eine Unit nicht eingebunden oder weiß jemand eine Lösung ?
Danke!

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Alphasort und Customsort bei Listview-Komponenten

Beitrag von monta »

Herzlich willkommen im Forum.

Soweit ich gerade mal geschaut hab, wird AlphaSort nur von der TCustomTreeView angeboten. Nicht aber von den ListView-Komponenten.
Zeigt zumindest die Dokumentation so:
http://www.lazarusforum.de/portal.php?c ... =AlphaSort" onclick="window.open(this.href);return false;

Ich weiß nicht, was Alphasort jetzt genau macht. Aber wenn du es nur irgendwie ordnen willst, langt es nicht vielleicht auch, die Eigenschaft SortType des ListViews entsprechend zu setzen?
Wenn nicht, musst du wohl irgendwie was eignes machen oder auf TreeView umbauen, wenns geht.
Johannes

Ralph59
Beiträge: 145
Registriert: So 22. Mär 2009, 07:48
OS, Lazarus, FPC: WIN 11 (momentan )
CPU-Target: 64 und 32Bit
Wohnort: Hessen
Kontaktdaten:

Re: Alphasort und Customsort bei Listview-Komponenten

Beitrag von Ralph59 »

Hallo,

ich weiss ja nicht, ob dass hilft, aber ich habe mit hiermit weitergeholfen:
Ich brauchte 2 sortierungen einmal für Verzeichnisse und einmal für die Dateien.

Habe alles in ein array of array of string geschrieben und werte dieses aus, danach schreibe ich das array in mein ListView. :wink:

hier der code für asc und desc:

Code: Alles auswählen

procedure sortAscStrArray(cArray: TStringStringArray; nCoumns,nColumn: integer );
{********************
Sortiert arrays ASC vorwörts
array of array of string
nach Vorgabe
Übergaben:
Das Array
Anzahl der Spalten
Nach welcher Spalte soll sortiert werden
********************}
var
  aCopy : array of string;
  x,y,z:integer;
begin
 SetLength(aCopy,nCoumns);
  for x:=0 to Length(cArray)-1 do begin
    for y:=0 to Length(cArray)-1 do begin
      if AnsiCompareStr(cArray[y,nColumn], cArray[x,nColumn]) > 0 then begin
        for z:=0 to Length(aCopy)-1 do begin
          aCopy[z]:=cArray[x,z];
          cArray[x,z]:=cArray[y,z];
          cArray[y,z]:=aCopy[z];
        end;
      end;
    end;
  end;
end;
 
procedure sortDesStrArray(cArray: TStringStringArray; nCoumns,nColumn: integer );
{********************
Sortiert arrays DESC rückwerts
array of array of string
nach Vorgabe
Übergaben:
Das Array
Anzahl der Spalten
Nach welcher Spalte soll sortiert werden
********************}
 
var
  aCopy : array of string;
  x,y,z:integer;
begin
 SetLength(aCopy,nCoumns);
  for x:=0 to Length(cArray)-1 do begin
    for y:=0 to Length(cArray)-1 do begin
      if AnsiCompareStr(cArray[y,nColumn], cArray[x,nColumn]) < 0 then begin
        for z:=0 to Length(aCopy)-1 do begin
          aCopy[z]:=cArray[x,z];
          cArray[x,z]:=cArray[y,z];
          cArray[y,z]:=aCopy[z];
        end;
      end;
    end;
  end;
end;
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.

Antworten