procedure TForm1.DBGrid1TitleClick(Column: TColumn); begin with adoquery do begin sql.clear; sql.add('select * from table order by'+column.fieldname); open; end; end;
bSort是一个全局变量,要求ado 代码: procedure TForm.DBGrid1TitleClick(Column: TColumnEh); var i: integer; fieldname: string; begin //排序 i := Column.Index; if bSort then begin fieldname := DBGrid1.Columns[i].FieldName + ' ASC'; bSort := False; end else begin fieldname := DBGrid1.Columns[i].FieldName + ' DESC'; bSort := True; end; DM.PhysicInfoADOQuery.sort := fieldname; end;
TitleClick事件 var DataSet: TDataSet; begin {点击标题栏,排序} //▼ ▲ if not ADOQExecl.Active then exit; DataSet := Column.Field.DataSet;
if DataSet is TCustomADODataSet then with TCustomADODataSet(DataSet) do begin if (Pos(Column.Field.FieldName, Sort) = 1) and (Pos(' DESC', Sort) = 0) then begin Sort := Column.Field.FieldName + ' DESC'; end else begin Sort := Column.Field.FieldName + ' ASC'; end; end;
if not ADOQExecl.Active then exit;改成 if not DataSet.Active then exit;表示如果没有数据则退出此事件
procedure TDocMainform.DBGDocTitleClick(Column: TColumn); var SortType: string; begin if Column.Index <> 0 then begin if SortType = ' ASC' then SortType := ' DESC' else SortType := ' ASC'; DATASET1.Sort := Column.FieldName + SortType end;end;
begin
with adoquery do begin
sql.clear;
sql.add('select * from table order by'+column.fieldname);
open;
end;
end;
代码:
procedure TForm.DBGrid1TitleClick(Column: TColumnEh);
var
i: integer;
fieldname: string;
begin
//排序
i := Column.Index;
if bSort then
begin
fieldname := DBGrid1.Columns[i].FieldName + ' ASC';
bSort := False;
end
else
begin
fieldname := DBGrid1.Columns[i].FieldName + ' DESC';
bSort := True;
end;
DM.PhysicInfoADOQuery.sort := fieldname;
end;
var
DataSet: TDataSet;
begin
{点击标题栏,排序} //▼ ▲
if not ADOQExecl.Active then exit; DataSet := Column.Field.DataSet;
if DataSet is TCustomADODataSet then
with TCustomADODataSet(DataSet) do
begin
if (Pos(Column.Field.FieldName, Sort) = 1) and (Pos(' DESC', Sort) = 0) then
begin
Sort := Column.Field.FieldName + ' DESC';
end
else
begin
Sort := Column.Field.FieldName + ' ASC';
end;
end;
var
SortType: string;
begin
if Column.Index <> 0 then
begin
if SortType = ' ASC' then
SortType := ' DESC'
else
SortType := ' ASC'; DATASET1.Sort := Column.FieldName + SortType
end;end;