qrymt.sort:=sortstring; 这个关键执行语句 (用网格控件 关联到查询控件 是不行的 因为没有 sort 属性)
通用方法:Twwdbgrid 、Tdbgrideh
procedure Tfrmtest.DBGridEh1TitleClick(Column: TColumnEh);
var sortstring,fieldname:string;
Adoquery:Tadoquery;
begin
adoquery:=qrytem1; // 与网格控件(数据感知控件) 绑定在一起 数据源控件
if (adoquery.Active=false)or(adoquery.IsEmpty) then exit; //数据源没有打开或为空 不用排序
fieldname:=column.FieldName; // 该列 对应的数据库字段
sortstring:=adoquery.Sort; // sort 属性 数据源控件 排序的关键属性
if copy(sortstring,length(sortstring)-3,4)='DESC' then
sortstring:=fieldname+' ASC'
else sortstring:=fieldname+' DESC';
adoquery.Sort:=sortstring;
end;
procedure Tfrmtest.wwDBGrid1TitleButtonClick(Sender: TObject;
AFieldName: String);
var sortstring,fieldname:string;
Adoquery:Tadoquery;
begin
adoquery:=qrytem1; // 与网格控件(数据感知控件) 绑定在一起 数据源控件
if (adoquery.Active=false)or(adoquery.IsEmpty) then exit; //数据源没有打开或为空 不用排序
fieldname:=AFieldName; // 该列 对应的数据库字段
sortstring:=adoquery.Sort; // sort 属性 数据源控件 排序的关键属性
if copy(sortstring,length(sortstring)-3,4)='DESC' then
sortstring:=fieldname+' ASC'
else sortstring:=fieldname+' DESC';
adoquery.Sort:=sortstring;
end;
1. Twwdbgrid 其中Twwdbgrid.titlebuttons:=true;
procedure TfrmBbrandQ.wwDBGrid1TitleButtonClick(Sender: TObject; AFieldName: String);
var sortstring:string;
begin
sortstring:=qrymt.sort;
if copy(sortstring,length(sortstring)-3,4)='DESC' then
sortstring:=AFieldName+' ASC'
else sortstring:=AFieldName+' DESC';
qrymt.Sort:=sortstring;
end;
2. Tdbgrideh ontitleclick();
procedure TFrmNDFXB.DBGridEh1TitleClick(Column: TColumnEh);
var
sortstring: string; //排序列
begin
//进行排序
with Column do
begin
if FieldName = '' then Exit;
if (Title.SortMarker = smNoneEh) or (Title.SortMarker = smDownEh) then
begin
sortstring := Column.FieldName + ' ASC';;
Title.SortMarker := smUpEh;
end else
begin
sortstring := Column.FieldName + ' DESC';
Title.SortMarker := smDownEh;
end;
try
qrystore.Sort := sortstring; //dataset为实际数据集变量名
except
MessageBox(Handle,'排序出错,请核实后重试!', '提示', MB_ICONError);
end;
end;
end;