如题,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;(客户端过滤);