Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Stringgrid inkl. Umlaute richtig sortieren

  Alt 15. Jul 2007, 09:47
Guten Morgen Steven.

Das Ereignis OnCustomCompare() wird nicht unbedingt benötigt.

Wenn du beim Ereignis OnGetFormat() die richtigen Angaben zu den einzelnen Spalten machst, dann sortiert das AdvStringGrid wie von selbst. Ich gehe von nicht-virtualisierten Zellinhalten aus:

Delphi-Quellcode:
const // edit
  SIZE_SUFFIX = ' Kb'; // Anpassen!
  SIZE_COLINDEX = 3; // Anpassen!

procedure TDemoForm.AdvStringGridGetFormat(Sender: TObject; ACol: Integer;
  var AStyle: TSortStyle; var aPrefix, aSuffix: String);
begin
  with Sender as TAdvStringGrid do
    case ACol of // edit
      SIZE_COLINDEX: // edit
      begin
        AStyle := ssNumeric;
        aSuffix := SIZE_SUFFIX;
      end;
    else
      AStyle := ssAnsiAlphaNoCase; // edit
    end;
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
begin
  with AdvStringGrid do
    SortByColumn(SIZE_COLINDEX);
end;
Getippt und nicht getestet.

EDIT:

(1) resourcestring durch const ersetzt: wegen SIZE_COLINDEX
(2) case selector vereinfacht
(3) erstes case label korrigiert: Konstante statt Literal
(4) sort mode umgestellt: ssAlphabetic kennt keine lokalisierten strings

Grüße vom marabu
  Mit Zitat antworten Zitat