我想在标题栏显示上下箭头以表示按升序子降序排列,但我想自己写SQL语句,不想用第三方控件,因为那会让程序变慢,请问有没有办法画出那箭头表示?

解决方案 »

  1.   

    处理dbgridtitleclick事件:
    procedure Tf_cpjg.DBGrid1TitleClick(Column: TColumn);
    begin
      if pos('DESC',t1.Sort)=0 then
      t1.sort:=Column.Field.FieldName+' DESC'
      else
      t1.Sort:=Column.Field.FieldName+' ASC'
    end;
    自己画好小箭头的图片
    然后用imagelist导入,DBGRID和这个imagelist绑定
    在DGGRIDColumnClick事件中写column.ImageIndex:=XXXX;
      

  2.   

    在dbgrid1titleclick事件:
    procedure Tf_cpjg.DBGrid1TitleClick(Column: TColumn);
    begin
    adoquery1.close;
    adoquery1.clear;
    adoquery1.sql.add('select * from tablename order by fieled')
    end;
      

  3.   

    DBGRID可以和imagelist绑定吗?我怎么没看到?我用的是D6
      

  4.   

    **********抢分行动***********
    碰到问题查不到,花了半天时间作了一个,不敢独享。
    ADO类的数据集有Sort,但是TClientDataSet没有,故作。procedure SortCDS(Column:TColumn);
    function FindColumn(Grid:TDbGrid;Name:string):TColumn;
    var
      i:integer;
    begin
      Result:=nil;
      for i:=0 to Grid.Columns.Count-1 do
        if Grid.Columns.Items[i].FieldName=Name then
          Result:=Grid.Columns.Items[i];
    end;
    var
      DataSet:TClientDataSet;
      ASC:boolean;      
      Clm:TColumn;
    begin
      DataSet:=TClientDataSet(Column.Field.DataSet);
      if Assigned(DataSet) and (not DataSet.IsEmpty) then
      begin
        if DataSet.IndexName=Column.Fieldname then
          ASC:=StrPos(PChar(Column.Title.Caption),'▼')<>nil;
        Clm:=FindColumn(TDbGrid(Column.Grid),DataSet.IndexName);
        if Assigned(Clm) then
        begin
          DataSet.DeleteIndex(DataSet.IndexName);
          Clm.Title.Caption:=Copy(Clm.Title.Caption,1,Length(Clm.Title.Caption)-2);
        end;
        if Asc then
        begin
          DataSet.AddIndex(Column.Fieldname,Column.FieldName,
                          [ixCaseInsensitive,ixDescending]);
          Column.Title.Caption:=Column.Title.Caption+'▲';
        end
        else begin
          DataSet.AddIndex(Column.Fieldname,Column.FieldName,[ixCaseInsensitive]);
          Column.Title.Caption:=Column.Title.Caption+'▼';
        end;
        DataSet.IndexName:=Column.Fieldname;
      end;
    end;
      

  5.   

    不如用EHLIB的DBGRIDEH和昆腾DEV EXPRESS组件的DXDBGRID,WWW。51DELPHI。COM,只用设置属性就可以了