单击其中一个列名不写代码是否可以实现排序(类似PB)?

解决方案 »

  1.   

    要写少量代码,可以在本版中搜索看看,也可以去www.nssoft.net 网的DELPHID 在线帮助中找找看.
      

  2.   

    要写几行代码,如下:
    procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    begin
      if (ADOQuery1.Sort=Column.FieldName+' ASC')  then//升序
        ADOQuery1.Sort:=Column.FieldName+' DESC'//降序
      else
        ADOQuery1.Sort:=Column.FieldName+' ASC'
    end;
      

  3.   

    to:wlxyk(文淮)
    我试过,没问题.
      

  4.   

    请参考我的这个函数!//DBGRID组件的排序
    procedure DBGridTitleSort(ADODataSet: TADODataSet;Column: TColumn);
    var
      s1,s2: string;
      FField: TField;
    begin
      //数据排序
      FField := Column.Field;  case FField.FieldKind of
        fkData      : s1 := FField.FieldName;
        //fkCalculated: s1 := FField.Origin;
        fkLookup    : s1 := FField.KeyFields;
      else abort;
      end;  s2 := ADODataSet.Sort ;  //限制排序字段
      if FField.DataType in [ftString, ftSmallint, ftInteger,
          ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD,ftDate, ftTime,
          ftDateTime, ftBytes, ftAutoInc, ftWideString] then
      begin
        if pos(s1,s2)>0 then
        begin
          if pos('ASC',s2)>0 then
            s2 := s1+' DESC'
          else
            s2 := s1+' ASC';
        end
        else
          s2 := s1+' ASC';
        ADODataSet.Sort := s2;
      end;
    end;