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