在继承于DBGrid控件的组件中,需要实现点击标题栏进行排序,不管DataSource是什么类型都要通用的,也就是说不管用TADOTable,TADOQuery,TTable,TQuery等的联接都可以通用的代码

解决方案 »

  1.   

    //通用标题排序
    procedure DBGridEhTitleClick(Column: TColumn);
    begin
      with Column do
      if Field <> nil then
      if Field.DataSet is Tadoquery  then
      with Field.DataSet as Tadoquery  do
      if active then
      begin
        if tag = 0 then
         begin
          sort := '';
          tag := 1;
         end
         else if tag = 1 then
         begin
          sort := column. fieldname + ' DESC';
          tag := 2;
         end
         else
         begin
          sort := Column.FieldName + ' ASC';
          tag := 0;
         end;
      end;
    end;
      

  2.   

    如果是ado的话:DBGrid.DataSource.DataSet.Sort 
    你可以在程序中做个判断啊,楼上写的不全
      

  3.   

    可是,我不能用类似 is TADOQuery等的代码呀,那样就没有通用性了,我是指不论用哪一种联接(TADOTable,TADOQuery,TTable,TQuery)代码
      

  4.   

    DBGrid-cliendataset-datasetprovider-任意数据集
      

  5.   

    谢谢了,我从TCustomDBGrid继承,用它的DataLink属性读数据,先排序,根据排序索引画出界面,解决了,只是界面上还要调整一下。