点击DBGRID的TITLE按钮,分别按’升序‘和’降序‘排列数据,降序的怎么做?解决了一定给分!!!

「已注销」 2003-08-18 04:15:49
点击DBGRID的TITLE按钮,分别按’升序‘和’降序‘排列数据,其它列不做排序,也不显示排序状态标记,但”降序“的怎么做?解决了一定给分!!!
self.L_strcaption保存TITLE的
self.L_b_order 保存排序状态

self.ClientDataSet1.IndexFieldNames:= column.fieldname;
begin
if trim(self.L_strcaption)='' then self.L_strcaption:= Column.Title.Caption;
if self.L_b_order then
begin
column.Title.Caption := self.L_strcaption+' ▲';//加排序状态标记
self.L_b_order:=false;
end
else
begin
column.Title.Caption := self.L_strcaption+' ▼';//加排序状态标记
self.L_b_order:=true;
end;
end;
...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jenemery 2003-08-18
  • 打赏
  • 举报
回复
mark
「已注销」 2003-08-18
  • 打赏
  • 举报
回复
我用的是CLIENTDATASET不可能用ADOQUERY,况且我的程序中有主从结构的表也要有排序功能,怎么办?解决了一定送分!!!!!!!!!!!!
东部一绝 2003-08-18
  • 打赏
  • 举报
回复
function ClickDBGridTitle(DBGird:TDBGrid;Query:TADOQuery;i:integer):boolean;
var Fieldname:string;
begin
if BSort then
begin
if Query.FieldByName(DBGird.Columns[i].FieldName).FieldKind=fkLookup then
FieldName:=Query.FieldByName(DBGird.Columns[i].FieldName).KeyFields+' ASC'
else
FieldName:=DBGird.Columns[i].FieldName+' ASC';
BSort:=false;
end
else
begin
if Query.FieldByName(DBGird.Columns[i].FieldName).FieldKind=fkLookup then
FieldName:=Query.FieldByName(DBGird.Columns[i].FieldName).KeyFields+' DESC'
else
FieldName:=DBGird.Columns[i].FieldName+' DESC';
BSort:=true;
end;
Query.Sort:=FieldName;
end;
fansnaf 2003-08-18
  • 打赏
  • 举报
回复
1,其它列不做排序?
这好像不行吧,因为操作的都是数据集,不
可能一列变化,其他列不排序。
2,
title这样的很多的,搜索一下,:)

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧