cxGridでソートをプリフォームする方法 Latin-2(ISO-8859-2)エンコーディング?cxGrid Unicodeソート
グリッドをWindowsの地域設定に依存させたくありません。 問題は私がスロベニアにいることですが、私はクロアチア語でソートする必要があります。 (現在、Ć、Č、Šは適切にソートされていません)
できますか?
cxGridでソートをプリフォームする方法 Latin-2(ISO-8859-2)エンコーディング?cxGrid Unicodeソート
グリッドをWindowsの地域設定に依存させたくありません。 問題は私がスロベニアにいることですが、私はクロアチア語でソートする必要があります。 (現在、Ć、Č、Šは適切にソートされていません)
できますか?
あなたはcxGridためDBTableViewのDataControllerによって公開さOnCompare・イベントをフックして、このようなハンドラの何かを実現することができます。
procedure TMyForm.cxGrid1DBTableView1DataControllerCompare(
ADataController: TcxCustomDataController;
ARecordIndex1, ARecordIndex2, AItemIndex: Integer;
const V1, V2: Variant;
var Compare: Integer);
var
S1, S2 : String;
CompareResult: Integer;
begin
S1 := V1;
S2 := V2;
CompareResult := CompareStringW(LANG_CROATIAN, 0, pWideChar(S1), -1,
pWideChar(S2), -1);
case CompareResult of
CSTR_LESS_THAN : Compare := -1;
CSTR_EQUAL : Compare := 0;
CSTR_GREATER_THAN : Compare := 1;
end;
end;
S1 =「C、C、S」とS2 = 'の場合Č、Ć、Š '、そしてS1> S2となる。 LOCALE_NEUTRALに切り替えると、逆の結果になります。
V1とV2を文字列にキャストするときには注意が必要です。すべての列が望ましい方法でキャストできないためです。例えば、日付は特別な扱いが必要かもしれません。
また、CompareStringWは、関数が失敗すると0を返します。これを完全に実装する必要があります。
これは実際にdevexpressサポートが提案したものです。 – user763539
私はこのことについてDevexのサポートに尋ねるのが一番良いと思います。 Googleは、あなたのqから離れて、 "tcxgrid latin-2"に関連するものの隣にあるようです。 – MartynA