DBGridEh 合理的排序使用

查看网上代码后个人完善得出 可共用于任何DBGridEh

复制粘贴过去即可 ^_^b ~ 更加合理哦~

 

procedure TFormSort.dbgRespTitleClick(Column: TColumnEh);
var
  i: Integer;
  sKeyFieldName: string;
  dataSet: TClientDataSet;
begin
  inherited;
  if not Assigned(Column.Field.dataSet) then Exit;
  dataSet:= TClientDataSet(Column.Field.dataSet);
  sKeyFieldName:= Column.FieldName;
  if dataSet.FieldByName(sKeyFieldName).FieldKind = fkLookup then
    sKeyFieldName:= dataSet.FieldByName(sKeyFieldName).KeyFields;

  case Column.Title.SortMarker of
    smNoneEh:
      begin                                     
        Column.Title.SortMarker:= smUpEh;
        dataSet.IndexName:= '';
        dataSet.IndexFieldNames:= sKeyFieldName;
      end;
    smUpEh:
      begin
        Column.Title.SortMarker:= smDownEh;
        i:= TClientDataSet(dataSet).IndexDefs.IndexOf('i' + sKeyFieldName);
        if i = -1 then
        begin
          with dataSet.IndexDefs.AddIndexDef do
          begin
            Name:= 'i' + sKeyFieldName;
            Fields:= sKeyFieldName;
            DescFields:= sKeyFieldName;
          end;
        end;
        dataSet.IndexFieldNames:= '';
        dataSet.IndexName:= 'i' + sKeyFieldName;
      end;
    smDownEh:
      begin             
        Column.Title.SortMarker:= smNoneEh;
        dataSet.IndexName:= '';
        dataSet.IndexFieldNames:= '';
      end;
  end;
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值