![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сортировка по типам [D2005, XP]
mops © (2010-03-04 23:16:00)Здравствуйте,
у меня есть таблица (devexpress), в ней динамически создаю колонки. при клике по заголовку, для сортировки, данные в разных колонках всегда сортируются как стринг, хотя при создании колонки я указываю какой тип данных там будет. Сделал небольшую функцию, чтобы она сама определяла тип и сортировала. но что не получается :) подскажите, что
спасибо
function Compare(V1,V2: Variant): Integer;
var
vt: Integer;
begin
if (V2 = null) then
begin
Result := 1;
Exit;
end;
if (V1 = null) then
begin
Result := -1;
Exit;
end;
vt := VarType(V1) and VarTypeMask;
case vt of
varInteger, varDate, varDouble, varBoolean: begin
if (V1 > V2) then Result := 1;
if V1 = V2 then Result := 0;
if (V1 < V2) then Result := -1;
end;
varUString: begin
Result := CompareStr(String(V1), String(V2));
end;
end;
end;
mops (2010-03-05 00:08:00) [1]спасибо, попробую
Loginov Dmitry (2010-03-04 23:57:00) [2]
> vt := VarType(V1) and VarTypeMask;
> case vt of
> varInteger, varDate, varDouble, varBoolean: begin
не смог понять я этих махинаций, ну да ладно.
Для определения типа варианта служат функции VarIsXXX. Например:
VarIsOrdinal, VarIsNull, VarIsNumeric и т.д.