EhLib的DEMO1里DBGridEh1 排序是如何实现的? ( 积分: 10 )

  • 主题发起人 主题发起人 delphibbsme
  • 开始时间 开始时间
D

delphibbsme

Unregistered / Unconfirmed
GUEST, unregistred user!
对于只用到TQuery,TDataSource,我知道该怎么设置来实现排序,但
这个例子用到了TQuery,TDataSetDriverEh,TMemTableEh,TDataSource,我看半天没找到设置的关键,我想可能是TMemTableEh没设置好.
令我费解的是 ,我新建了一个Application,在new Application和DEMO1里做相同的操作,也就是放置一样的控件TQuery,TDataSetDriverEh,TMemTableEh,TDataSource,TDBGridEh,做一样的设置,一样的SQL,查询同一张表,都在uses 里写了EhLibBDE,可是,new Application里就是不能实现排序,哪位前辈能给指点迷津?
 
加入单元EhLibMTE
 
加入单元EhLibADO
 
DEMO1的Unit1.pas
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
{$IFDEF VER140} Variants, {$ENDIF}
{$IFDEF VER150} Variants, {$ENDIF}
{$IFDEF CIL}
Types, System.ComponentModel, Variants, System.Runtime.InteropServices,
{$ELSE}
{$ENDIF}
StdCtrls, DBCtrls, ExtCtrls, DBGridEh, ComCtrls, Db, DBTables,
Buttons, PrViewEh, PrnDbgeh, ToolWin, Menus, DBGridEhImpExp,
Mask, DBLookupEh, DBCtrlsEh, ImgList, EhLibBDE, PropStorageEh, GridsEh;

在这里没有EhLibMTE,不知这个例子是如何实现的?

但uses EhLibMTE后确实可以实现排序了.但对 calculated field不行,这有办法解决吗?
 
3、自动显示标题行的升降排序标志符(▽降序△升序)并做相应排序
DBGridEh组件可以在标题行单元格中显示小三角形升、降排序标志符图片,在运行时可点击标题行,图片自动切换并做相应排序。具体属性设置如下:

OptionsEh=dghAutoSortMarking
Column.Title.TitleButton=true

SortMarkedColumns 为当前排序列可在运行时使用.
然后在该列的ontitleclick事件中添加代码:
procedure TForm_Query.DBGridEh1TitlebtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh);
var
sortstring:string; //排序列
begin
//进行排序
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
ADOQuery1.Sort := sortstring //dataset为实际数据集变量名
except
end;
end;
end;
 
楼上的资料先前看过,不能解决calculate field的排序
 
DM1.pas里面就有增加了EhlibMTE单元;

calculated field是在TMemTableEh里面建的字段,还是TQuery里面的?
 
TMemTableEh里的
 
接受答案了.
 
后退
顶部