请问 DbGridEh 用 clientdataset 作数据源时 怎样 实现 点击 列头 时 实现 排序 ??????????
请给 出 详细 的代码 ,谢谢!!
请给 出 详细 的代码 ,谢谢!!
解决方案 »
- 苦难的日子结束了,散分
- 对当前线程(非主线程)调用sleep,为什么主线程(窗口)也没反应了
- 如何用listview 做出如此效果的控件?有图片参考
- 诚聘Delphi程序员
- 请问哪位达人有dbtreeview组件?
- 我现在主要不知道怎么循环读这个流,怎么判断文件结束?!流的写法取行数据比较奇怪,如果按流这样读我怎么像以前读文件那样判断我每行的
- Easy2
- delphi 如何备份sql server数据库,请高手赐教!
- 用database,table连接数据库,可delphi 总是管我要密码,怎么办压?????????
- 如何在NT或2000下拦截系统键?
- 怎样把INTRAWEB5写的东西移植到INTRAWEB7下?
- 请问:在panel上画image后遮住了panel的caption显示,可不可以把image放到panel底下呢?
1. 把 EhLib 中的 common 和 DataService 文件拷贝到 Delphi7 目录中.
2.在 TOOLS->Environment Options->Library->Library Path 中添入EHLIB路径。
3.打开新建文件夹中的 EHLIB70.DPK ,编译一下,但不要安装。
4.打开Ehlib中的DclEhLib70.DPK,编译,安装
5. 在Delphi 7中打开DclEhLib70.dpk,编译并安装。自动显示标题行的升降排序标志符(▽降序△升序)并做相应排序
DBGridEh组件可以在标题行单元格中显示小三角形升、降排序标志符图片,在运行时可点击标题行,图片自动切换并做相应排序。具体属性设置如下:uses EhLibAdo;(如果客户端用ADO控件)
DBGridEh1.ColumnDefValues.Title.TitleButton:=True(每列都排序)
DBGridEh1.OptionsEh:=dghAutoSortMarking
DBGridEh1.SortLocal:=True
切记lookup型字段不可做上述设置,否则系统会提示错误。
procedure Tform1.DBGridEh1TitleBtnClick(Sender: TObject;
ACol: Integer; Column: TColumnEh);
begin
inherited;
if DBGridEh1.DataSource.DataSet.Active then
begin
DBGridEh1.DataSource.DataSet.DisableControls;
try
if Column.Title.SortMarker = smDownEh
then Tclientdataset(DBGridEh1.DataSource.DataSet).Sort := Column.FieldName
else Tclientdataset(DBGridEh1.DataSource.DataSet).Sort := Column.FieldName+' DESC';
finally
DBGridEh1.DataSource.DataSet.EnableControls;
end;
end;
end;
试试这个函数:
function GridSort(Grid: TDBGridEh):String; //列表框抬头排序
var i :Integer;
s:String;
function DeleteStr(str:String; sunstr:String): String;
var i:Integer;
begin
i := Pos(sunstr,str);
if i <> 0 then Delete(str,i,Length(sunstr));
Result := str;
end;
begin
s := '';
for i := 0 to Grid.SortMarkedColumns.Count-1 do
if Grid.SortMarkedColumns[i].Title.SortMarker = smUpEh then
s := s + Grid.SortMarkedColumns[i].FieldName + ' DESC , '
else
s := s + Grid.SortMarkedColumns[i].FieldName + ', ';
if s <> '' then s := ' ORDER BY ' + Copy(s,1,Length(s)-2);
// s := DeleteStr(s,'1');
Result :=s;
end;
procedure Tfrom1.Button1Click(Sender: TObject);
begin
with clientdataset1 do
begin
Close;
CommandText :='Select * from table ' + GridSort(DBGridEh1);
Open;
end;
end;
table1.sort := columns.title.caption;相信dbgrideh类似