procedure TMainForm.DBGrid1TitleClick(Column: TColumn);
begin
  if Column <> nil then
   
      DBGrid1.DataSource.DataSet.IndexFieldNames := Column.FieldName;
end;

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, DBTables, Grids, DBGrids;type
      TForm1 = class(TForm)
        DBGrid1: TDBGrid;
        Query1: TQuery;
        DataSource1: TDataSource;
        procedure FormCreate(Sender: TObject);
        procedure DBGrid1TitleClick(Column: TColumn);
      private
        str : string;
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      str :='select * from items';
      query1.Close;
      query1.SQL.Clear;
      query1.SQL.Add(str);
      query1.Open;
    end;procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    var
      s : string;
    begin
     s :=str+' order by '+column.Field.FieldName;
     query1.Close;
     query1.SQL.Clear;
     query1.SQL.Add(s);
     query1.Open;end;end.
      

  2.   

    在GRID的TitleClick
    中重写SQL(替换ORDER BY 部分)再OPEN
      

  3.   

    在GRID的TitleClick
    中重写SQL(替换ORDER BY 部分)再OPEN