cxGrid에서 정렬을 수행하는 방법 Latin-2 (ISO-8859-2) 인코딩을 사용하고 있습니까?cxGrid 유니 코드 정렬
그리드가 Windows의 국가 별 설정에 종속되지 않게하고 싶습니다. 문제는 내가 슬로베니아에 있지만 크로아티아어 언어로 정렬해야한다는 것입니다. (지금은 Ć, Č, Š가 제대로 정렬되지 않았습니다)
할 수 있습니까?
cxGrid에서 정렬을 수행하는 방법 Latin-2 (ISO-8859-2) 인코딩을 사용하고 있습니까?cxGrid 유니 코드 정렬
그리드가 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은 "tcxgrid latin-2"와 관련이없는 옆에있는 것으로 보입니다. – MartynA