按照网友提示:
1.在窗体上放置一个 DBGridEh 组件,并将其连接到相应的 BDE 数据集;
2.将该组件的[OptionsEn]中的 dgAutoSortMarking 属性设置为 True;
3.双击该组件,在其弹出的属性编辑器中添加相关字段;
4.将要排序的字段的属性列表的 [Title]的 TitleButton 属性设置为 True;
5。在 uses 子句中加上 EhlibBDE单元。虽然数据能正常显示,并在TITLE出现指示排序的小三角形,但排序并不按照鼠标点击时三角形变化而变化?为什么?另外请问 DBGridEh 和 dxDBGrid(也有上面的问题)哪一个更好一些?有网友说用了Ehlib的程序在其它机器上运行时会出现问题?!
1.在窗体上放置一个 DBGridEh 组件,并将其连接到相应的 BDE 数据集;
2.将该组件的[OptionsEn]中的 dgAutoSortMarking 属性设置为 True;
3.双击该组件,在其弹出的属性编辑器中添加相关字段;
4.将要排序的字段的属性列表的 [Title]的 TitleButton 属性设置为 True;
5。在 uses 子句中加上 EhlibBDE单元。虽然数据能正常显示,并在TITLE出现指示排序的小三角形,但排序并不按照鼠标点击时三角形变化而变化?为什么?另外请问 DBGridEh 和 dxDBGrid(也有上面的问题)哪一个更好一些?有网友说用了Ehlib的程序在其它机器上运行时会出现问题?!
解决方案 »
- delphi 程序无法运行
- delphi中的空格符怎么产生?
- 请问用delphi+sqlserver怎么实现数学公式
- 当ENTER键模拟TAB键时遇到的问题
- 谁能给我一个用到“存储过程storedProc”的例子吗??
- IntraWeb中Session保存对象,200分散分,高手请进!
- 为什么这个 控件在win2000下面使用不了?
- 关于图像显示!
- 电费暴高,求秘方~
- TClientDatase中createDataset创建一个数据集合,但是不能modify为false,怎样才能可修改
- 初学者:if showmodal = mrok then这个里面的一个弹出窗口怎么没显示,这到底是什么机制啊?
- 我的数据库密码会经常被改掉??
Column: TColumnEh);调用
begin
sort(column.FieldName,ADataSet:TQuery);//AdataSet为你DBGRID连接的数据集
end;Procedure Sort(AField:string;ADataSet:TQuery);
begin
If SortType='' Then SortType:='ASC';
if SortField=AField Then
If SortType='ASC' Then SortType:='DESC' else SortType:='ASC'
else
SortType:='ASC';
SortField:=AField;
ADataSet.sort:=trim(AField)+' '+SortType;
End;
谢谢回复,我用的是BDE不是ADO!实际上我的测试程序上只放了三个控件:DataSource,Table和DBGridEh!
rlpcdk
那个设置就ok了
现在设置了也不能用
郁闷
可以下载v3.22
1、新建一个窗体,添加ADOConnection1,ADODataSet1,DataSourse1,PDBGridEh1,Button1,
2、建立连接后在设计窗体中PDBGridEh1可以正常显示一个表的数据了
3、Button1中写入:
procedure TForm1.Button1Click(Sender: TObject);
begin
ADODataSet1.Insert;
ADODataSet1.FieldByName('COIL_Weight').AsInteger:=3110;
ADODataSet1.FieldByName('PRODUCTION_TIME').AsDateTime :=Now;
ADODataSet1.Post ;
end;
4、如果这张表只有这两个字段的话,我要实现每次按下Button1后,新添加的记录都显示在PDBGridEh1表格的第一行,也就是按PRODUCTION_TIME字段排倒序,
1.在Unit1单元中的Uses中加入EhlibADO;
2.把PRODUCTION_TIME字段属性的title->titlebutton属性设置位true
3.PDBGridEh1的OptionsEh的dgAutoSortMarking 属性设置为 True;问题如下:
1、排序完全是乱的,点击表中的PRODUCTION_TIME列值,也得不到预定效果
2、如果把把PRODUCTION_TIME字段属性的title->titlebutton属性设置位false,点击表中的PRODUCTION_TIME列值使按降序排列,这时添加的记录才能在最上面一行显示,但每次都要点击,也不是我的预期效果,请问怎么才能达到我的要求呢?问题出在哪里了呢?
Unit DataSet Local sorting Server sorting Local filtering Server filteringEhLibBDE TQuery, TTable N Y Y Y
EhLibADO TADOQuery, Y Y Y YTADODataSet EhLibCDS TClientDataSet Y Y Y Y
EhLibDBX TSQLQuery,TSQLDataSet N Y N YEhLibIBX TIBQuery,TIBDataSet N Y Y YEhLib Software
请问是怎么回事?
DBGRIDEH 组件在Borland开发工具中应用全攻略 【陈文彬】
DBGridEh.OptionsEh := DBGridEh.OptionsEh + [dghDblClickOptimizeColWidth,dghAutoSortMarking];DBGridEh.ColumnDefValues.Title.TitleButton := True;DBGridEh.SortLocal := True;然后引入EhLibADO单元,不需要任何排序代码就可以的了。关键在于DBGridEh.SortLocal := True;具体细节Ehlib的帮助里面写的很清楚了:)楼主可以试一下!
i:=TDBGridEh(ActiveControl).SelectedIndex;
field:=TDBGridEh(ActiveControl).Columns[i].Title.Caption;
if not (ads.FieldByName(field).Lookup) then
ads.Sort:=field+' ASC'
else
begin
ads.Sort:=ads.FieldByName(field).LookupKeyFields+' ASC';
end;
降
i:=TDBGridEh(ActiveControl).SelectedIndex;
field:=TDBGridEh(ActiveControl).Columns[i].Title.Caption;
if not ADS.FieldByName(field).Lookup then
ADS.Sort:=field+' DESC'
else
begin
ads.Sort:=ads.FieldByName(field).LookupKeyFields+' DESC';
end;