请问高手:我用access+ado,怎样实现在dbgrid的字段名上单击一下鼠标,下面所有的内容都按序排列呢?是不是dbgrid的一个什么titleclick事件?谢谢。

解决方案 »

  1.   

    EhLib3.3 里面的DBGridEh 就有这个能功 
    排序功能使用方法:    1、TDBGridEh的OptionsEh/SghAutoSortMarking属性设置为:True;
        2、TDBGridEh.Columns[*]的Title/TitleButton属性设置为:True。
      

  2.   

    dbgReceBatch: TDBGrid;
    var
     LLSort: Boolean;
    procedure TfrmEnqHistByAccount.dbgReceBatchTitleClick(Column: TColumn);
    begin
      try
        if LLSort then
        begin
          (dbgReceBatch.DataSource.DataSet as TCustomADODataSet).Sort :=             Column.FieldName + ' DESC';
          LLSort := False;
        end
        else
        begin
          (dbgReceBatch.DataSource.DataSet as TCustomADODataSet).Sort := Column.FieldName + ' ASC';
          LLSort := True;
        end;
      except  end;
    end;
    试试吧
      

  3.   

    你可以在titleclick中写
    var orderby:boolean;//设置一变量以识别重复单击价格的排序 
    begin
      case dbgrid1.selectefield of
    query1名称:
      begin
        with query1 do
         begin 
            close;
            sql.clear;
            sql.add('select 名称,规格,价格  from product');
            sql.add(' order by  名称 ');
            open;
          end;
     end;
    query1规格:
      begin
        with query1 do
         begin 
            close;
            sql.clear;
            sql.add('select 名称,规格,价格  from product');
            sql.add(' order by  规格 ');
            open;
          end;
      end;
    query1价格:
     begin
       with query1 do
         begin
           if orderby=true then  //为真时从小到大排序;
            begin 
              close;
              sql.clear;
              sql.add('select 名称,规格,价格  from product');
              sql.add(' order by  价格 ');
              open;
              orderby=false;
            end
           else
             begin 
              close;
              sql.clear;
              sql.add('select 名称,规格,价格  from product');
              sql.add(' order by  价格 desc');
              open;
              orderby=true;
             end;
      end;
    end; 
      

  4.   

    procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    begin
      query1.close;
      query1.sql.clear;
      query1.sql.add('select *  from product');
      query1.SQL.Add('order by '+column.FieldName);
      query1.open;
    end;或者用其它的控件