点击DBGRID的TITLE按钮,分别按’升序‘和’降序‘排列数据,其它列不做排序,也不显示排序状态标记,但”降序“的怎么做?解决了一定给分!!!
self.L_strcaption保存TITLE的
self.L_b_order   保存排序状态self.ClientDataSet1.IndexFieldNames:= column.fieldname;
begin
  if trim(self.L_strcaption)='' then  self.L_strcaption:= Column.Title.Caption;
  if  self.L_b_order then
  begin
  column.Title.Caption := self.L_strcaption+' ▲';//加排序状态标记
  self.L_b_order:=false;
  end
  else
  begin
  column.Title.Caption := self.L_strcaption+' ▼';//加排序状态标记
  self.L_b_order:=true;
  end;
  end;

解决方案 »

  1.   

    1,其它列不做排序?
    这好像不行吧,因为操作的都是数据集,不
    可能一列变化,其他列不排序。
    2,
     title这样的很多的,搜索一下,:)
      

  2.   

    function ClickDBGridTitle(DBGird:TDBGrid;Query:TADOQuery;i:integer):boolean;
    var Fieldname:string;
    begin
      if BSort then
      begin
      if Query.FieldByName(DBGird.Columns[i].FieldName).FieldKind=fkLookup then
         FieldName:=Query.FieldByName(DBGird.Columns[i].FieldName).KeyFields+' ASC'
      else
         FieldName:=DBGird.Columns[i].FieldName+' ASC';
      BSort:=false;
      end
      else
      begin
      if Query.FieldByName(DBGird.Columns[i].FieldName).FieldKind=fkLookup then
         FieldName:=Query.FieldByName(DBGird.Columns[i].FieldName).KeyFields+' DESC'
      else
         FieldName:=DBGird.Columns[i].FieldName+' DESC';
      BSort:=true;
      end;
      Query.Sort:=FieldName;
    end;
      

  3.   

    我用的是CLIENTDATASET不可能用ADOQUERY,况且我的程序中有主从结构的表也要有排序功能,怎么办?解决了一定送分!!!!!!!!!!!!