Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сортировка в dbgrid


123454321 ©   (2013-03-15 16:48:00) 

Для определенного столбца в DBGrid нужно написать свою сортировку (на клиенте). Столбец X может иметь значения вида:

aaa121
87bbb
ccc111cc

нужно выцепить из значений числа и сортировать по ним.

в данном случае должно выстроиться последовательность:

либо

aaa121
ccc111cc
87bbb

Как такое сделать?


Юрий Зотов   (2013-03-16 07:49:00) [1]

Если проблема в том, чтобы выцепить из значений числа, то это просто. Правда, писал "на лету" и не думая, поэтому могут быть ошибки - проверьте (особенно, для Unicode). В функцию передаем строковое значение поля, а ее результат загоняем в невидимое вычисляемое поле и сортируем по нему.

const
 Digits = ['0'...'9'];

function ExtractNumber(const S: string): cardinal;
var
 i: integer;
begin
 Result := 0;
 i := 1;
 while (i <= Length(S) and not (S[i] in Digits) do
   Inc(i);  
 while (i <= Length(S) and (S[i] in Digits) do
 begin
   Result := Result * 10 + Ord(S[i]) - Ord('0');
   Inc(i)
 end
end;


clickmaker   (2013-03-15 19:03:00) [2]

Можно взять ClientDataSet или другой MemoryData и сортировать его


turbouser   (2013-03-15 16:51:00) [3]

Добавить вычисляемое поле и сортировать по нему


Jeer   (2013-03-15 16:50:00) [4]

Сортировка делается на сервере, тем более при DBGrid.


Наверх

Титульная страница Поиск, карта сайта Написать письмо