![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сортировка в 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.