Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];

Вниз

Не правильная сортировка для украинского языка   Найти похожие ветки 

 
RDA   (2005-11-03 20:37) [0]

Компонент cxGrid от DevExpress не хочет(не умеет) правильно сортировать локальные данные для украинского языка. Подсказали что нужно использовать его событие OnCompare.


procedure TMainForm.tbvMainDataControllerCompare(
 ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
 AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
begin
 //
end;


Вот такое событие, что куда ... не знаю. Подскажите кто что может.


 
sniknik ©   (2005-11-03 21:01) [1]

посмотри в справке дельфи по TListView.onCompare там даже пример есть, и сделай по аналогии.


 
RDA   (2005-11-03 21:26) [2]

Смотрел, но не понял как решить проблему с украинским языком?


 
RDA   (2005-11-03 21:28) [3]

Дочитал.


 
RDA   (2005-11-03 21:38) [4]

Но не совсем понял. Как сделать чтобы работало для всех колонок?


 
RDA   (2005-11-03 22:50) [5]

Вопрос снят.


 
RDA   (2005-11-04 15:37) [6]

Вопрос открыт.

Что делать с датой?

У меня дата храниться в текстовом формате (т.к. ее может не быть, может состоять только из года и может быть в полном формате).

Если обрабатывается событие OnCompare для некоторых колонок, то остальные (для которых нет обработки) вообще не хотят сортироваться. Как поправить?


 
RDA   (2005-11-04 18:29) [7]

Сделал так. Работает (вроде), может кто-что умнее подскажет, буду благодарен


procedure TMainForm.tbvMainDataControllerCompare(
 ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
 AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
var
 AValue1,AValue2: Variant;
begin
 if (V1 <> null) and (V2 <> null) then
   if AItemIndex <> 3 then
     Compare := AnsiCompareStr(V1,V2)
   else
   begin
     if Length(V1) = 4 then
       AValue1 := "01.01." + V1
     else
       AValue1 := V1;
     if Length(V2) = 4 then
       AValue2 := "01.01." + V2
     else
       AValue2 := V2;
     Compare := AnsiCompareStr(ReverseString(AValue1),ReverseString(AValue2));
   end
 else
   if (V1 = null) and (V2 = null) then
     Compare := 0
   else
     if V1 = null then
       Compare := -1
     else
       Compare := 1
end;


 
Polevi ©   (2005-11-05 18:16) [8]

это рука москвы


 
Step[B.M.]   (2005-11-06 20:49) [9]

не знаю будет ли в твоем случае это умнее, но сортировку украинского можно делать средствами FireBird
- при создании базы кодировка WIN1251
- в текстовых полях - пример
 TEXT_HIST VARCHAR(200) COLLATE WIN1251_UA,


 
RDA   (2005-11-07 19:51) [10]

Дело в том что здесь имеет место пересортировка и хотелось ее сделать средствами этого самого грида (он это делает быстрее) нежели пересортировка средствами FIBPlus - локальная сортировка.

Код приведенный выше, некорректен. Неправильно сортирует по дате.
Может кому понадобиться вернее (мне так кажется) было бы так
Compare := AnsiCompareStr(FarmatDateTime("yyyy.mm.dd",AValue1), FormatDateTime("yyyy.mm.dd",AValue2));



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.013 c
3-1131289782
Сафаров
2005-11-06 18:09
2005.12.25
использование триггеров


2-1134295439
Kais
2005-12-11 13:03
2005.12.25
текстовый файл


14-1133774439
Помогите
2005-12-05 12:20
2005.12.25
Пытаюсь запустить комп


3-1131211822
Дмитрий Молчанов
2005-11-05 20:30
2005.12.25
Как прикруть индексы к существующему DBF файлу


2-1134145546
FormJonh
2005-12-09 19:25
2005.12.25
Запуск процедуры в другом unit^е





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский