procedure SortDBGridEh(Sender: TObject; ACol: Integer; Column: TColumnEh); var FieldName, SortStr: string; begin Screen.Cursor := crSQLWait; try if (Sender is TDBGridEh) and ((Sender as TDBGridEh).DataSource.DataSet <> nil) then begin if not ((Sender as TDBGridEh).DataSource.DataSet is TCustomADODataSet) then Exit;
if not (Sender as TDBGridEh).DataSource.DataSet.Active then Exit;
FieldName := Column.FieldName; if (Sender as TDBGridEh).DataSource.DataSet.FindField(FieldName).IsBlob then Exit;
if (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).FieldKind = fkData then SortStr := FieldName else if (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).FieldKind = fkLookup then FieldName := (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).KeyFields else FieldName := '''''''';
if (FieldName = '''''''') or (Pos('''';'''', FieldName) > 0) then Exit; case Column.Title.SortMarker of smNoneEh: begin Column.Title.SortMarker := smUpEh; TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort := FieldName;
end; smUpEh: begin Column.Title.SortMarker := smDownEh; TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort := FieldName + '''' DESC''''; end; smDownEh: begin Column.Title.SortMarker := smNoneEh; TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort := ''''''''; end; end; end; finally Screen.Cursor := crDefault; end; end;