用ehlib控件,你可在dbgrideh的onsortmakingchange事件中写如下如下代码,就可以按任意
字段进行排序。
procedure SortbyColumn(FQuery: TQuery; Fgrid: TdbGridEh);
var
i: Integer;
s, Strupper: string;
begin
s := '';
for i := 0 to Fgrid.SortMarkedColumns.Count - 1 do
if Fgrid.SortMarkedColumns.Title.SortMarker = smUpEh then
s := s + Fgrid.SortMarkedColumns.FieldName + ' DESC , '
else
s := s + Fgrid.SortMarkedColumns.FieldName + ', ';
if s <> '' then s := ' ORDER BY ' + Copy(s, 1, Length(s) - 2);
StrUpper := UpperCase(FQuery.SQL.Text);
if Pos('ORDER BY', StrUpper) = 0 then
StrUpper := StrUpper + s
else
begin
Delete(StrUpper, Pos('ORDER BY', StrUpper),
length(StrUpper) - Pos('ORDER BY', StrUpper));
end;
FQuery.Close;
FQuery.SQL.Text := StrUpper;
FQuery.Open;
end;