送你个实例:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;type TForm1 = class(TForm) DBGrid1: TDBGrid; ADOQuery1: TADOQuery; DataSource1: TDataSource; Button1: TButton; procedure DBGrid1TitleClick(Column: TColumn); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DBGrid1TitleClick(Column: TColumn); var i:integer; field_name:string; begin i:=column.Index; field_name:=adoquery1.Fields[i].FieldName; with adoquery1 do begin active := false; sql.Clear; sql.Add('select * from dbgrid_auto_wide order by '+field_name+''); active:=true; end; end;end.
定义变量 var AscOrDesc: Boolean; procedure TFormOrder.DBGrid1TitleClick(Column: TColumnEh); begin AscOrDesc := not AscOrDesc; if AscOrDesc then begin
ADODataSetOrder.Sort := Column.FieldName + ' ASC'; end else begin ADODataSetOrder.Sort := Column.FieldName + ' DESC'; end; end;
不知道sql串也可以 procedure sort_the_grid(source_column:TColumn;source_dataset:TADOQuery); var substr,sqlstr:String; I:Integer; begin if not source_dataset.Active then Exit; if source_dataset.SQL.Text='' then Exit; substr :=' order by ' + source_column.FieldName; sqlstr:=source_dataset.SQL.Text; I:=Pos('order',sqlstr); if I>0 then sqlstr:=copy(sqlstr,1,I-1); sqlstr:=sqlstr+substr; Active_adoDataSet(source_dataset,sqlstr); end;
procedure TMainFrm.DBGrid1TitleClick(Column: TColumn); begin Table1.IndexFieldNames = Column.FieldName; end; 随手写的
Select * From TableJiaoTongInfo Order By '''+Column.FileName+'''
帮帮我把
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
Button1: TButton;
procedure DBGrid1TitleClick(Column: TColumn);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
i:integer;
field_name:string;
begin
i:=column.Index;
field_name:=adoquery1.Fields[i].FieldName;
with adoquery1 do begin
active := false;
sql.Clear;
sql.Add('select * from dbgrid_auto_wide order by '+field_name+'');
active:=true;
end;
end;end.
var
AscOrDesc: Boolean; procedure TFormOrder.DBGrid1TitleClick(Column: TColumnEh);
begin
AscOrDesc := not AscOrDesc;
if AscOrDesc then
begin
ADODataSetOrder.Sort := Column.FieldName + ' ASC';
end
else
begin ADODataSetOrder.Sort := Column.FieldName + ' DESC';
end;
end;
procedure sort_the_grid(source_column:TColumn;source_dataset:TADOQuery);
var
substr,sqlstr:String;
I:Integer;
begin
if not source_dataset.Active then Exit;
if source_dataset.SQL.Text='' then Exit;
substr :=' order by ' + source_column.FieldName;
sqlstr:=source_dataset.SQL.Text;
I:=Pos('order',sqlstr);
if I>0 then
sqlstr:=copy(sqlstr,1,I-1);
sqlstr:=sqlstr+substr;
Active_adoDataSet(source_dataset,sqlstr);
end;
begin
Table1.IndexFieldNames = Column.FieldName;
end;
随手写的