我在使用DBGRID的时候,可以显示查询的结果了,我想在点击最上面的一排的某个单元(CELL?)时,就让查询的结果按照所点击的表中的某一项排列,SQL语句我会写的,请问大虾:是什么事件处理,用的什么参数,具体怎么实现的?

解决方案 »

  1.   

    可以用dbgrid的ontitleclick事件啊
      

  2.   

    你用DBGridEh会简单的,DBGrid好久没用了,
      

  3.   

    ontitleclick事件中怎么检测不同的列啊?
      

  4.   

    DBGrid.ontitleclick() 它返回的是一个字段值,这样你可以通过它来排序
      

  5.   

    ontitleclick裡面有一個column的參數,利用這個參數來確定當前點的是哪一列。
      

  6.   

    //在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;
      

  7.   

    ontitleclick中的参数是column,
    column.Title.Caption就是你单击的列的caption
      

  8.   

    哈哈,用daoquery1.sort:=column.field.fieldname就OK了。
    大家继续讨论,还可以怎能么实现。
      

  9.   

    哦,没过ADO还不知有这个属性(sort),我一直是用BDE的
      

  10.   

    动态换SQL太麻烦了,
    可以考虑用TClientDataSet控件啊。
    这个控件可以建立临时索引啊。
    还可以多个字段升降序排的,
    功能很强啊。
      

  11.   

    procedure TForm.DBGrid1TitleClick(Column: TColumn);
    begin
      if (Query1.Sort=Column.FieldName+' ASC')  then   //升序
        Query1.Sort:=Column.FieldName+' DESC'         //降序
      else
        Query1.Sort:=Column.FieldName+' ASC';
    end;