站内搜索
百度一下
搜狗搜索
谷歌搜索
360搜索
首页
编程资料
运维运营
本站发布
在线工具
PHP
C#
Android
JSP(JAVA)
前端教程
Delphi
Javascript
Yii
微信小程序
百度小程序
Python
ASP.NET
单片机
WebApp编程
nodejs
正则处理
Dedecms
ecshop
phpcms
Discuz
帝国CMS
WordPress
易语言
GO语言
GIT使用
Arduino
VBS
Cmd批处理
编程更多
IIS
Nginx
SEO优化
Linux常见
Windows常见
Mysql
Sqlserver
ORACLE
Redis
MongoDB
PHPCodeSniffer
Docker
Mac常见
运维更多
网站源码
PC软件
在线工具
安卓Android
IOS
dedecms插件
WordPress
源码工具
PNG压缩
批量改格式
历史Alexa
在线运行
为所欲为
并发测试
RSA测试
百度长尾
搜狗长尾
网页截图
爬虫生成
更多工具
主页
>
编程资料
>
Delphi
>
delphi最全面的DBGrid点击标题实现排序
发布时间:2015-09-22
作者:网络
阅读:101次
最全面的DBGrid标题排序实现方法:
procedure TSrv_SJSetForm.DBGridEh1TitleClick(Column: TColumnEh);var s,cFieldName:string; i:integer; DataSet:TDataSet; procedure setTitle; var ii:integer; cStr:string; c:TColumnEh; begin for ii:=0 to TDBGridEh(Column.Grid).Columns.Count-1 do begin c:=TDBGridEh(Column.Grid).Columns[ii]; cStr:=c.Title.Caption; if (pos('▲',cStr)=1) or (pos('▼',cStr)=1) then begin Delete(cStr,1,2); c.Title.Caption:=cStr; end; end; end;begin //setTitle; DataSet:=Column.Grid.DataSource.DataSet; if Column.Field.FieldKind=fkLookup then begin cFieldName:=Column.Field.KeyFields; Exit; end else if Column.Field.FieldKind=fkCalculated then begin cFieldName:=Column.Field.KeyFields; Exit; end else cFieldName:=Column.FieldName; setTitle; //=================================AdoDataSet===================== if DataSet is TCustomADODataSet then begin s:=TCustomADODataSet(DataSet).Sort; if s='' then begin s:=cFieldName; Column.Title.Caption:='▲'+Column.Title.Caption; end else begin if Pos(cFieldName,s)<>0 then begin i:=Pos('DESC',s); if i<=0 then begin s:=s+' DESC'; Column.Title.Caption:='▼'+Column.Title.Caption; end else begin Column.Title.Caption:='▲'+Column.Title.Caption; Delete(s,i,4); end; end else begin s:=cFieldName; Column.Title.Caption:='▲'+Column.Title.Caption; end; end; TCustomADODataSet(DataSet).Sort:=s; end //============================Clientdataset========================== else if DataSet is TClientDataSet then begin if TClientDataSet(DataSet).indexfieldnames<>'' then begin i:=TClientDataSet(DataSet).IndexDefs.IndexOf('i'+Column.FieldName); if i=-1 then begin with TClientDataSet(DataSet).IndexDefs.AddIndexDef do begin Name:='i'+cFieldName;//Column.FieldName; Fields:=cFieldName;//Column.FieldName; DescFields:=cFieldName;//Column.FieldName; end; end; TClientDataSet(DataSet).IndexFieldNames:=''; TClientDataSet(DataSet).IndexName:='i'+cFieldName;//Column.FieldName; Column.Title.Caption:='▼'+Column.Title.Caption; end else begin TClientDataSet(DataSet).IndexName:=''; TClientDataSet(DataSet).IndexFieldNames:=cFieldName;//Column.Fieldname; Column.Title.Caption:='▲'+Column.Title.Caption; end; end;end;
关键字词:
相关文章
Delphi XE5、6、7在Android或者IOS上使用AnsiString和An
delphi判断电脑连接到Internet包含代码
Delphi XE5 实现获取本地的IP地址
Delphi提取网页中的图片
Delphi中提取网页源代码
DELPHI获取网卡MAC地址
Delphi实现WebService带身份认证的数据传输
delphi 获取外网IP的函数
delphi 实现文件上传下载
delphi检测网络连接状态
栏目导航
PHP
C#
Android
JSP(JAVA)
前端教程
Delphi
Javascript
Yii
微信小程序
百度小程序
Python
ASP.NET
单片机
WebApp编程
nodejs
正则处理
Dedecms
ecshop
phpcms
Discuz
帝国CMS
WordPress
易语言
GO语言
GIT使用
Arduino
VBS
Cmd批处理
编程更多
最新文章
Delphi结合WinRAR生成自解压文件
Delphi XE android LocationSensor GPS 定位功能
Delphi IdHttpServer实现webservice
Delphi实现Ftp客户端下载(支持断点续传,多线程
Indy 中IdHttp元件出现http status 302错误
Delphi Indy 组件包里的 IDHTTP 组件使用 Get 方法下载
点击排行
Delphi IdHttpServer实现webservice
Delphi XE6调用Android手机标准功能
Delphi xe程序的主题(Theme)设置
Delphi XE6 在两个图片切换的时候实现翻书效果
Delphi实现屏幕截图、窗口截图、指定区域截图
Delphi XE5实现Slide Menu(左侧为系统菜单如易信、百
推荐文章
打赏