dbgridEh的排序功能在Bpl中的窗体不能使用。 ( 积分: 100 )

  • 主题发起人 主题发起人 shbjkl
  • 开始时间 开始时间
S

shbjkl

Unregistered / Unconfirmed
GUEST, unregistred user!
dbgridEh的排序功能在Bpl中的窗体不能使用。有无解决方法?
在exe或dll中编译是正常的。
 
你试试这个过程
procedure Sort(grid: TDBGridEh);
begin
Grid.OptionsEh := Grid.OptionsEh + [dghAutoSortMarking];
Grid.ColumnDefValues.Title.TitleButton := True;
Grid.OptionsEh := Grid.OptionsEh + [dghMultiSortMarking];
Grid.SortLocal:=True;
end;
 
还是不能排序,我的是3.3版本
 
是用的动态调用BPL模块包吧,是DELPHI7以上版本吧?
最好在调用主程序中放个GRIDEH的控件,否则调动态包的控件容易出错,INDY控件也有这个问题
 
在调用的主程序中,加了还是不启作用
 
试一下这个,我经常用没有遇到问题!
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
dataset.Sort := sortstring //dataset为实际数据集变量名
except
end;
end;
end;
 
DataSet没有Sort属性
 
我用的 是ClientDataset
 
TAdoquery(ClientDataset).sort
 
靠,TAdoquery(ClientDataset) 能转换吗?试过没有啊。
 
uses
EhlibAdo,EhlibBde,EhlibCDS 中的一个。
根据所用数据集控件,选择上面的一个单元,引用。
然后再加上排序的代码即可。
我的是这么做的,没有问题。
 
具体排序代码是怎样的?
 
为了点分,我又登录了一次,这个方法是我写的:
procedure SetEhAutoSort(DBGridEH: TDBGridEh);
var
i: integer;
begin
try
//显示箭头图标
DBGridEH.OptionsEh := DBGridEH.OptionsEh + [dghAutoSortMarking];
//设置排序为True, 对于不用SQL得到数据集要用此方法
DBGridEh.SortLocal := True;
//设置TitleButton
DBGridEH.DataSource.Dataset.DisableControls;
for i := 0 to DBGridEH.Columns.Count - 1 do
begin
DBGridEH.Columns.Title.TitleButton := True;
DBGridEH.Columns.Title.Alignment := taCenter;
end;
DBGridEH.DataSource.Dataset.EnableControls;
except
on E: Exception do
//SaveLog(E.Message); //这是我自己的方法,你自己修改一下。
end;
end;
 
你在USE中加入EHLIBADO试试,我用的加入这个就可以了
 
后退
顶部