您的位置:首页 > 其它

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

2016-06-15 10:41 543 查看
如题,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.csdn.net/csm2432/article/details/6891579,大受启发,在USES中增加EhLibMTE,
EhlibADO; 通过设置DBGrid的排序相关属性后,运行,居然可以排序了,神奇!

备忘:

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

1、uses EhLibMTE, EhlibADO; 

2、DBGridEh.STFilter.Visible := True; 

3、DBGridEh.STFilter.Local = True;(客户端过滤); 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: