Procedure OW_OrderADOGrid(Column: TColumn); Var DataSet: TDataSet; FieldNames:String; Begin if Column.Field=nil then Exit; if not Column.Field.DataSet.Active then Exit; if not (Column.Field.FieldKind in [fkData,fkLookup]) then exit; DataSet := Column.Field.DataSet; if Column.Field.Lookup then FieldNames:= Column.Field.KeyFields else FieldNames:=Column.Field.FieldName; if DataSet is TCustomADODataSet then with TCustomADODataSet(DataSet) do begin if (Pos(FieldNames, Sort) = 1) and (Pos(' DESC', Sort) = 0) then Sort := FieldNames + ' DESC' else Sort := FieldNames + ' ASC'; end; end; procedure TFSearchParent.myDBGridTitleClick(Column: TColumn); begin//排序——DBGRID的TitleClick事件 OW_OrderADOGrid(Column); end;只能用于ADO连接!
其中adoquery1是dbgrid的datasource procedure TMDIChild.DBGrid1TitleButtonClick(Sender: TObject; AFieldName: String); begin with datam1 do begin adoquery1.DisableControls;//提高运行速度 ADOQuery1.Close; //清除查询内容 ADOQuery1.SQL.clear; adoquery1.Parameters.Clear; //添加查询语句 ADOQuery1.SQL.Add('select * from enterprise a'); adoquery1.SQL.Add ('order by '+ afieldname); end; try datam1.ADOQuery1.Open;//打开 datam1.adoquery1.EnableControls;//启动 datam1.adoquery1.First; except //例外处理 datam1.adoquery1.Close; datam1.adoquery1.EnableControls; end; end;
Var
DataSet: TDataSet;
FieldNames:String;
Begin
if Column.Field=nil then Exit;
if not Column.Field.DataSet.Active then Exit;
if not (Column.Field.FieldKind in [fkData,fkLookup]) then exit;
DataSet := Column.Field.DataSet;
if Column.Field.Lookup then
FieldNames:= Column.Field.KeyFields
else
FieldNames:=Column.Field.FieldName; if DataSet is TCustomADODataSet then
with TCustomADODataSet(DataSet) do
begin
if (Pos(FieldNames, Sort) = 1) and (Pos(' DESC', Sort) = 0) then
Sort := FieldNames + ' DESC' else
Sort := FieldNames + ' ASC';
end;
end;
procedure TFSearchParent.myDBGridTitleClick(Column: TColumn);
begin//排序——DBGRID的TitleClick事件
OW_OrderADOGrid(Column);
end;只能用于ADO连接!
procedure TMDIChild.DBGrid1TitleButtonClick(Sender: TObject;
AFieldName: String);
begin
with datam1 do
begin
adoquery1.DisableControls;//提高运行速度
ADOQuery1.Close; //清除查询内容
ADOQuery1.SQL.clear;
adoquery1.Parameters.Clear;
//添加查询语句
ADOQuery1.SQL.Add('select * from enterprise a');
adoquery1.SQL.Add ('order by '+ afieldname);
end;
try
datam1.ADOQuery1.Open;//打开
datam1.adoquery1.EnableControls;//启动
datam1.adoquery1.First;
except
//例外处理
datam1.adoquery1.Close;
datam1.adoquery1.EnableControls;
end;
end;