单击 DBGrid 标题实现数据自动排序
var i : integer;
begin
for i:= 1 to DBGrid1.Columns.Count do
begin
//恢复所有标题字体为默认
DBGrid1.Columns[i-1].Title.Font.Color := clWindowText;
DBGrid1.Columns[i-1].Title.Font.Style := [];
end;
if ADOQuery1.Sort<>(Column.FieldName+' ASC') then //判断原排序方式
begin
ADOQuery1.Sort := Column.FieldName+' ASC';
Column.Title.Font.Color := clRed; //改变标题行字体为红色,表示当前的排序方式为升序
Column.Title.Font.Style := [fsBold];
end
else begin
ADOQuery1.Sort := Column.FieldName+' DESC';
Column.Title.Font.Color := clBlue; //改变标题行字体为红色,表示当前的排序方式为降序
Column.Title.Font.Style := [fsBold];
end;
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
一、先在public
blOrder:boolean;
二、
procedure TDlgK3t_icitemForm.DBGrid1TitleClick(Column: TColumn);
begin
if adoquery1.State=dsbrowse then
begin
if blOrder then
begin
ADOQuery1.Sort := Column.FieldName + ' ASC';
dbgrid1.Columns[Column.Field.FieldNo-1].Title.Caption:=Column.FieldName+ '△';
blOrder:=false;
end
else
begin
ADOQuery1.Sort := Column.FieldName + ' DESC';
blOrder:=true;
dbgrid1.Columns[Column.Field.FieldNo-1].Title.Caption:=Column.FieldName+ '▽';
end;
end;
end;