如何使我的鼠标点击dbgrid时按列自动排序

解决方案 »

  1.   

    在OnTitleClick中
    Select * From TableJiaoTongInfo Order By '''+Column.FileName+'''
      

  2.   

    用第三方控件dev express的cxgrid就可以很轻松的实现!!
      

  3.   

    我没有dev express 的 cxgrid有给我一个,: cjs5210(我是菜鸟) 的方法也不行啊
    帮帮我把
      

  4.   

    送你个实例: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.
      

  5.   

    定义变量
    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;
      

  6.   

    不知道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;
      

  7.   

    procedure TMainFrm.DBGrid1TitleClick(Column: TColumn);
    begin
     Table1.IndexFieldNames = Column.FieldName;
    end;
    随手写的