delphi DBGRID 升序降序排序 方法

procedure Tformbrty.DbGridSetOrder(paraDbGrid: TDbGrid;
  paraColumn: TColumn);
var  locClientDataSet :TClientDataSet;
     strColumn :String;
     nReturn :Integer;
     function CdsSetOrder(paraCds: TClientDataSet;
       paraColumn: String):Integer;  //1升2降-1出错
     var strIndexName :String;
     begin
         Result := -1;
         strIndexName :=paraCds.IndexName;
         if strIndexName = 'Asc_Index' then
         begin
             Try
                 ParaCds.AddIndex('Des_Index', paraColumn, [ixDescending],'','',0);
                 paraCds.DeleteIndex(strIndexName);
                 paraCds.IndexName := 'Des_Index';
                 Result := 2;
             Except
                 Exit;
             End;
         end
         else
         begin
             Try
                 ParaCds.AddIndex('Asc_Index', paraColumn, [],'','',0);
                 if strIndexName<>'' then
                 begin
                     paraCds.DeleteIndex(strIndexName);
                 end;
                 paraCds.IndexName := 'Asc_Index';
                 Result := 1;
             Except
                 Exit;
             End;
         end;
     end;
     procedure RestoreTitle(paraDbGrid :TDbGrid);
     var  nColCount,i:Integer;
          strCaption :String;
     begin
         nColCount := ParaDbGrid.Columns.Count;
         for i:= 0 to nColCount - 1 do
         begin
            strCaption := paraDbGrid.Columns[i].Title.Caption;
            if (Copy(strCaption,length(strCaption) - 1,2)='↑') or (Copy(strCaption,length(strCaption) - 1,2)='↓') then
            begin
                strCaption := Copy(strCaption ,1,length(strCaption) - 2);
                paraDbGrid.Columns[i].Title.Caption := strCaption;
            end;
         end;
     end;
begin
    Try
        locClientDataSet := paraDbGrid.DataSource.DataSet as TClientDataSet;
    Except
        Exit;
    end;
    Try
        strColumn := paraColumn.FieldName;
    Except
        Exit;
    end;
    nReturn := CdsSetOrder(locClientDataSet,strColumn);
    Case nReturn of
        1:
            begin
                RestoreTitle(paraDbGrid);
                paraColumn.Title.Caption := paraColumn.Title.Caption +'↑'
            end;
        2:
            begin
                RestoreTitle(paraDbGrid);
                paraColumn.Title.Caption := paraColumn.Title.Caption +'↓'
            end;
    else
    end;
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值