//在dbgrid中的OnTitleClick事件写,注意事先要把数据集中所有字段加到dbgrid1的colums中 procedure TForm1.DBGrid1TitleClick(Column: TColumn); begin if trim(Column.FieldName) = '' then exit; Query1.Close; Query1.SQL.Text := 'select * from animals order by ' + Column.FieldName;//按升序 Query1.Open; end;procedure TForm1.FormCreate(Sender: TObject); begin Query1.Close; Query1.SQL.Text := 'select * from animals'; Query1.Open; end;
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
if trim(Column.FieldName) = '' then exit;
Query1.Close;
Query1.SQL.Text := 'select * from animals order by ' + Column.FieldName;//按升序
Query1.Open;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Text := 'select * from animals';
Query1.Open;
end;
column.Title.Caption就是你单击的列的caption
大家继续讨论,还可以怎能么实现。
可以考虑用TClientDataSet控件啊。
这个控件可以建立临时索引啊。
还可以多个字段升降序排的,
功能很强啊。
begin
if (Query1.Sort=Column.FieldName+' ASC') then //升序
Query1.Sort:=Column.FieldName+' DESC' //降序
else
Query1.Sort:=Column.FieldName+' ASC';
end;