巧用DBGrid控件的Sort属性实现“点击标题栏自动排序功能”。(改进版本)

TDBGridEh控件的使用 <br />TDBGrid是是Ehlib组件包中一个功能非常强大的组件,我在这里总结一下常用的使用技巧:<br />1、增加合计<br />(1)、属性设置<br />FooterRowCount 设置为 1 ;<br />sumlist->Active 设置为 true ;<br />(2)、增加合计函数:<br />void AddSumField(TDBGridEh *AGrid,AnsiString AField)<br />{<br />    for(int i=0;i<AGrid->Colum 阅读详情

曾看见优快云文档中有介绍到:通过ADOQuery或其它数据集组件的Sort属性配合DBGrid的OnTitleClick事件,可以方便地实现此功能。因为Sort属性可以让活动数据集按指定的字段进行排序,也可以选择排序方式(升序/降序)。这个功能的确很实用。(http://blog.youkuaiyun.com/jlee084/archive/2004/12/20/223284.aspx)。我改进了一下这功能,在单击标题后分别在标题加上三角(▲)和倒三角形(▼)表示当前排序方式为升序和降序;写成一个函数可以方便重复使用:

function TitleSort(DBGrid:TDBGrid;ADOQuery:TADOQuery;Column: TColumn):Boolean;
var
  i,ii:Integer;
  cStr:
string;
  c:TColumn;
begin
    
for ii:=0 to DBGrid.Columns.Count-1 do
    
begin
      c:=DBGrid.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;

    
for i:= 1 to DBGrid.Columns.Count do
    
begin
      
//恢复所有标题字体为默认
      DBGrid.Columns[i-1].Title.Font.Color := clWindowText;
      DBGrid.Columns[i-1].Title.Font.Style := [];
    
end;
    
if ADOQuery.Sort<>(Column.FieldName+' ASC') then  //判断原排序方式
    
begin
      ADOQuery.Sort := Column.FieldName+
' ASC';
      Column.Title.Font.Style := [fsBold];
      Column.Title.Caption:=
'▲'+Column.Title.Caption; //标题加上三角形表示当前排序方式为升序;
    
end
    
else
    
begin
      ADOQuery.Sort := Column.FieldName+
' DESC';
      Column.Title.Font.Style := [fsBold];
      Column.Title.Caption:=
'▼'+Column.Title.Caption;  //标题加上倒三角形表示当前排序方式为降序;
    
end;
end;

调用时:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
   TitleSort(DBGrid1,ADOQuery1,Column);
end;

delphi DBGrid_添加点击排序功能 dbgrid 添加点击字段名自动排序功能,注意空数据时候需要加入判断。 立即下载

相关推荐

delphi DBGrid排序的两种方法(自己代码中,测试成功的)

在delphi有些第三方控件确实有自带的排序功能,可是对于原始的DBGrid控件不存在自动排序功能,下面是两种不同显示的排序方法。我自己写成函数,可以调用。(自己程序中测试成功的)

DBGrid点击标题栏实现自动排序功能

通过ADOQuery控件的Sort属性,配合DBGrid的OnTitleClick事件,可以方便地实现此功能。Sort属性可以让活动数据集按指定的字段进行排序,与SQL语句Order后面的写法一样(升序ASC/降序DESC)。 Form1; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; DataSource1: TDataSource;...

weixin_44823889的博客 517

避坑指南:RFSoC数据转换器多片同步配置的7个致命错误

本文深入剖析了在配置RFSoC多片同步功能时,工程师最常遇到的七个致命错误。从Tile 0的强制启用、时钟域与SYSREF时序,到跨代器件兼容性、电源序列以及动态重配置的陷阱,文章结合实战经验,提供了从原理到调试的完整RF数据转换器配置指南,旨在帮助开发者高效构建相位一致的大规模射频采样系统。

weixin_28452161的博客 533

DBGrid排序

给DBGrid加入排序功能在实际数据库管理系统中,用户对表中数据的操作,最频繁的莫过于浏览查询了,而查询中若能提供为某字段建立的排序功能,则非常有利于用户对“关键数据”的了解。 Windows的用户都知道,在“我的电脑”或“资源管理器”中打开任一文件夹,若以“详细资料”方式查看,系统会显示出该文件夹下的子文件夹和文件相关信息,如:名称、类型 、大小、修改时间,用户只需要单击标题栏中的相应项,则系统

softworkman的专栏 2518

开源WorkBuddy实战课:从零搭建AI Agent办公自动化工作台

AI Agent作为大语言模型之上的智能体,正在重塑办公效率。它通过工具调用、任务规划与长期记忆,将被动问答升级为主动执行。WorkBuddy作为图形化智能体工作台,降低了搭建门槛,让非技术人员也可配置自动化流程。本文开源整套实战资料,涵盖JDK环境配置、模型接入、日报邮件处理、表格清洗、批量文档生成等场景,并讲解自定义指令、Skills扩展与MCP协议。从基础概念到工程实践,帮助读者快速上手,构建属于自己的办公自动化助手。

weixin_29083475的博客 224

bcftools学习笔记(一)

欢迎关注"生信修炼手册"!本篇主要介绍index, view, query, sort, reheader这五个命令。1. indexindex命令用于对VCF文件建立索...

庐州月光的博客 6010

巧用DBGrid控件的Sort属性实现“点击标题栏自动排序功能

巧用DBGrid控件的Sort属性实现“点击标题栏自动排序功能 很多朋友在使用DBGrid控件时,抱怨没有点击标题栏便可自动排序的功能,实际上通过ADOQuery或其它数据集组件的Sort属性配合DBGrid的OnTitleClick事件,可以方便地实现此功能。因为Sort属性可以让活动数据集按指定的字段进行排序,也可以选择排序方式(升序/降序),所以我们只要在OnTitleClick事件中设

fyl_077的专栏 997

微信爬虫服务器,微信文章爬虫使用教程 - 八爪鱼采集器

对于某些用户来说,直接自定义规则可能有难度,所以在这种情况下,我们提供了网页简易模式,网页简易模式下存放了国内一些主流网站爬虫采集规则,在你需要采集相关网站时可以直接调用,节省了制作规则的时间以及精力。微信文章采集下来有很多作用,比如可以将自己行业中最近一个月之内发布的内容采集下来,然后分析文章标题和内容的一个方向与趋势。所以本次介绍八爪鱼简易采集模式下“搜狗公众号”的使用教程以及注意要点。步骤一...

weixin_26712065的博客 3256

php ado query sort,如何使adoquery排序正常工作

我只是一个adoquery,当我尝试adoquery1.sort := 'Cost';它不会对查询中的项目进行排序。{Gets starting cards and put them into the correct rows}//***************************************************************************procedure...

weixin_39996096的博客 296

GameFramework专栏目录

本专栏是专门介绍GameFramework框架的,持续更新中,如有疑问可留言,24小时内回复。

TxNet 4726

SAP FICO应付票据平台开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP FICO应付票据平台开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

我好像病了的博客 378

用DBGrid控件配合数据集组件的Sort属性实现“点击标题栏自动排序功能”。

        很多朋友在使用DBGrid控件时,抱怨没有点击标题栏便可自动排序的功能,实际上通过ADOQuery或其它数据集组件的Sort属性配合DBGrid的OnTitleClick事件,可以方便地实现此功能。因为Sort属性可以让活动数据集按指定的字段进行排序,也可以选择排序方式(升序/降序),所以我们只要在OnTitleClick事件中设置排序字段和排序方式即可,如以下代码:procedu

木子之井的专栏 3368

Debezium系列之:深入理解 Debezium Topic的设置要求

Debezium系列之:配置 Debezium Topic

zhengzaifeidelushang的博客 1009

用DBGrid控件的Sort属性实现“点击标题栏自动排序功能”

用DBGrid控件的Sort属性实现“点击标题栏自动排序功能”         很多朋友在使用DBGrid控件时,抱怨没有点击标题栏便可自动排序的功能,实际上通过ADOQuery或其它数据集组件的Sort属性配合DBGrid的OnTitleClick事件,可以方便地实现此功能。因为Sort属性可以让活动数据集按指定的字段进行排序,也可以选择排序方式(升序/降序),所以我们只要在OnTitl

1322

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

如何用DBGrid实现排序

我找到了使用 ADOQUERY 控件实现的方法,可做参考: 巧用DBGrid控件的Sort属性实现“点击标题栏自动排序功能 很多朋友在使用DBGrid控件时,抱怨没有点击标题栏便可自动排序的功能,实际上通过ADOQuery或其它数据集组件的Sort属性配合DBGrid的OnTitleClick事件,可以方便地实现此功能。因为Sort属性可以让活动数据集按指定的字段进行排序,也可以选择排序方式(

普森备忘录 3259

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

用DBGrid控件配合数据集组件的Sort属性实现“点击标题栏自动排序功能”

procedure TForm1.DBGrid1TitleClick(Column: TColumn); var i : Integer; begin for i:= 1 to DBGrid1.Columns.Count do begin //恢复所有标题字体为默认 DBGrid1.Columns[i-1].Title.Font.Color := cl...

weixin_34413357的博客 124

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

单击dbgrid的title进行排序

我找到了使用 ADOQUERY 控件实现的方法,可做参考:巧用DBGrid控件的Sort属性实现"点击标题栏自动排序功能很多朋友在使用DBGrid控件时,抱怨没有点击标题栏便可自动排序的功能,实际上通过ADOQuery或其它数据集组件的Sort属性配合 DBGrid的OnTitleClick事件,可以方便地实现此功能。因为Sort属性可以让活动数据集按指定的字段进行排序,也可以选择排序方式(升序 ...

注重长远 天天积累 cqujsjcyj 265

当单击DBGrid中的标题栏时,进行排序 (转)

当单击DBGrid中的标题栏时,进行排序 (转)[@more@]方法: 关键是用dbGrid的事件 OnTitleClick 首先判断单击是哪一列, i:=Column.Index; 然后要确定是哪个字段 Fi...

csd3176的博客 80

DBGrid单击表头排序

procedure TMainFrm.DBGrid2TitleClick(Column: TColumn);var flag:Boolean; tempstr:string;begin tempstr:=Column.Title.Caption; if Pos('▲',tempstr)>0 then flag:=False else flag:=True; if (Pos('▲...

weixin_30696427的博客 199

以ADO数据集相连的DBGrid按单一字段排序通用过程

//适用范围:与ADO数据集相连的DBGrid按单一字段排序//传入参数:Column(排序字段对应的DBGridColumn),DefaultSort(缺省排序串)//使用建议:在DBGrid的OnTitleClick中直接调用之。第一次单击某Column标题栏时,按改字段升序排列,连续第二次单击时改为降序,连续第三次单击时,改为缺省方式排序(如PrimaryKey等)procedure Sor

484

delphi的dbgrid控件点击title排序

procedure TfrmMain.DBGridEhTitleClick(Column: TColumnEh);var i : integer;begin for i:= 1 to DBGridEh.Columns.Count do begin//恢复所有标题字体为默认 DBGridEh.Columns[i-1].Title.Font.Color := clWindowText; ...

weixin_30900589的博客 456

VCL(四) 如何写出象TTable, TAdoTable ,Tquery,TAdoQuery 等控件一样的自动下拉显示Field属性

如何写出象TTable, TAdoTable ,Tquery,TAdoQuery 等控件一样的自动下拉显示Field属性Delphi VCL在Delphi 中有很多源码,但是有些关键的属性编辑器却找不到,下面我将举几个例子来说明一下我们可以研究一下TDBEdit的两个关键属性一个Datasource,DataField.示例如下TTestcontrol=class(TWinControl) pri

donson wan的专栏 1942
上一篇: 2005年1月8日——最伤心的一天
下一篇: 天下无贼中经典的句子
SafeF8
博客等级 码龄22年 10粉丝 104原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值