AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid inkl. Umlaute richtig sortieren

Ein Thema von Steven2 · begonnen am 14. Jul 2007 · letzter Beitrag vom 8. Sep 2007
Antwort Antwort
marabu

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

Re: Stringgrid inkl. Umlaute richtig sortieren

  Alt 17. Jul 2007, 16:37
Hallo Steven,

ich habe meinen Code aus deinem Test-Projekt jetzt so angepasst, dass abgesehen von der vierten Spalte (3 wegen nullbasiertem Index) mit den Kilobyte-Angaben alle anderen Spalten nach Art der deutschen Telefonbücher sortiert werden. Diese Anpassungen wären überflüssig, wenn TMS mit der ThreadLocale arbeiten würde.

Delphi-Quellcode:
const // edit
  SIZE_SUFFIX = ' Kb'; // so werden Angaben wie '123 Kb' numerisch korrrekt sortiert
  SIZE_COLINDEX = 3; // nur in der vierten Spalte, der Rest sind Strings

procedure TForm1.Button1Click(Sender: TObject);
begin
  AdvStringGrid1.LoadFromCSV(ExtractFilePath(Application.ExeName)+'test.CSV');
end;

procedure TForm1.AdvStringGrid1GetFormat(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 := ssCustom; // edit
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  with AdvStringGrid1 do
    SortByColumn(2);
end;

// Event Handler für OnCustomCompare() im OI erzeugen:
procedure TForm1.AdvStringGrid1CustomCompare(Sender: TObject; str1,
  str2: String; var Res: Integer);
begin
  // die Locale solltest du in deinem Programm an zentraler Stelle
  // gleich zu Beginn zwischenspeichern, damit der ständige Aufruf
  // von GetThreadLocale hier unterbleiben kann.
  Res := CompareString(GetThreadLocale or SORT_GERMAN_PHONE_BOOK shl 16,
      NORM_IGNORECASE, PChar(str1), Length(str1), Pchar(str2), Length(str2)) - 2;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz