D7+Ehlib 7.0.133 DBGridEh,点击列标题排序属性设置好之后,有时无法排序的解决办法

在Delphi 7中使用Ehlib 7.0.133的DBGridEh控件遇到点击列标题无法排序的问题。设置DBGridEh.OptionsEh.dghmultisortmarking、sortlocal和sumlist.active属性后,通过在DBGridEh的onTitleBtnClick事件中添加代码或者引入EhLibMTE和EhlibADO单元,调整相关属性,可以解决这个问题并实现排序功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如题,Delphi 7下安装了Ehlib 7.0.133 版本,使用DBGridEh-->DataSource-->TMemTableEh-->TADODataDriverEh连接这些控件,设置了DBGridEh的各个属性如下:

设置
       DBGridEh.OptionsEh.dghmultisortmarking := true; 
       DBGridEh.sortlocal := true; 
       DBGridEh.sumlist.active := true; 
   然后再设置所要排序的标题的Title.TitleButton := true;(DBgrideh.column[0].title.titlebutton := true;) 


但是不知道为何,点击列标题无任何反应,可能是Ehlib存在的bug,通过实际测试,在DBGridEh的onTitleBtnClick事件中增加以下代码,即可实现点击列标题排序

procedure TFAttemperOrder.gridFishTitleBtnClick(Sender: TObject;
  ACol: Integer; Column: TColumnEh);
var
      sortstring:string; //排序列
begin
    if TMemTableEh(TDBGridEh(Sender).DataSource.DataSet).Active = False then
    begin
        Exit;
    end;

    //进行排序
    with Column do
    begin
        if FieldName = '' then
            Exit;
        case Title.SortMarker of
            smNoneEh:
            begin
                Title.SortMarker := smDownEh;
                sortstring := Column.FieldName + ' ASC';
            end;
            smDownEh: sortstring := Column.FieldName + ' ASC';
            smUpEh: sortstring := Column.FieldName + ' DESC';
        end;
        //进行排序
        try
            TMemTableEh(TDBGridEh(Sender).DataSource.DataSet).SortOrder := sortstring //dataset为实际数据集变量名
        except
        end;
    end;


end;



补充:无意中看到这位高手的博客http://blog.youkuaiyun.com/csm2432/article/details/6891579,大受启发,在USES中增加EhLibMTE, EhlibADO; 通过设置DBGrid的排序相关属性后,运行,居然可以排序了,神奇!


备忘:

要实现下拉过滤或排序的功能,下面这些必不可少;

1、uses EhLibMTE, EhlibADO; 
2、DBGridEh.STFilter.Visible := True; 
3、DBGridEh.STFilter.Local = True;(客户端过滤); 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值