//---------------------------------------------------------------------------
/*
首先将一个列表框控件安放在Form上,并将其名称设为ListView1。
然后在其中添加若干项目作为试验对象。方法为:用鼠标右键单击控件,
在弹出的对话框中选择Columns Editor用来添加列和子列;
再选Items Editor用来添加项目(包含子列和主列上的内容)。
为了显示出子项目内容,需要在Object Inspector中修改ListView属性值,
将ViewStyle设置为vsReport。另外,还必须将SortType设置为None,
以使我们的排序程序起作用。这样,程序的外观已经符合需要,
下面应该增加排序功能的代码了。为此需要添加类的方法到源代码中。
*/
void __fastcall TFormVBS::listViewColumnClick(TObject *Sender, TListColumn *Column)
{
int i,m,n,j;
static bool od=true; /* od代表用户点击的次数,奇数时为true,偶数时为false。
注意此处od的存储类型设定为static,可以保证其数值的连续性。
用n记录用户点击的列号,m记录列表框中的总项目数。*/
od=!od; n=Column->Index;
m=listView->Items->Count; /* 在列表框中临时添加一个项目作为排序中交换用的临时空间 */
listView->Items->Add(); /* 当用户点击第一列列标头时,
排序按listView->Items->Item[i]->Caption进行,
与其它列不同,所以要单独进行排序。 */ if (n==)
{
for(i=;i < m-;i++)
{
for(j=i+;j< m;j++)
{
if(od)
{
if(listView->Items->Item[i]->Caption >
listView->Items->Item[j]->Caption)
{
listView->Items->Item[m]= listView->Items->Item[i];
listView->Items->Item[i]= listView->Items->Item[j];
listView->Items->Item[j]= listView->Items->Item[m];
}
}
else
{
if(listView->Items->Item[i]->Caption < listView->Items->Item[j]->Caption)
{
listView->Items->Item[m]= listView->Items->Item[i];
listView->Items->Item[i]= listView->Items->Item[j];
listView->Items->Item[j]= listView->Items->Item[m];
}
}
}
}
} listView->Items->Delete(m);
return;
/* 编译运行程序后,即会看到我们预期的结果。
另外,本程序是按照字符串方式进行排序的,如果需要按照数字或其它方式排序,
只需进行相应的类型转换即可。
理解本程序后,读者即掌握了对ListView控件编程的一条基本思路,
对今后使用BCB以及对Windows编程起到良好作用。 */
}
//---------------------------------------------------------------------------

c++ builder TListView控件按字符串排序(根据网上代码亲测ok)的更多相关文章

  1. Delphi的TListView控件拖放选定行操作

    http://www.tansoo.cn/?p=401 Delphi的TListView控件拖放选定行操作的例子,效果图如下:TListView控件拖动选定行到指定位置 具体实现步骤: 一.新建一个D ...

  2. Victor 串口 VCL 控件 - 简单实用, 功能强大的 C++ Builder 串口控件!

    源:Victor 串口 VCL 控件 - 简单实用, 功能强大的 C++ Builder 串口控件! 2014年02月06日发布控件的重要更新版本: Victor 串口控件 1.5.0.2 版本 (包 ...

  3. C# WinForm中 让控件全屏显示的实现代码

    夏荣全 ( lyout(at)163.com )原文 C#中让控件全屏显示的实现代码(WinForm) 有时候需要让窗口中某一块的内容全屏显示,比如视频播放.地图等等.经过摸索,暂时发现两种可行方法, ...

  4. 圆环,扇形控件基本算法一种实现 - 代码库 - CocoaChina_让移动开发更简单

    圆环,扇形控件基本算法一种实现 - 代码库 - CocoaChina_让移动开发更简单   ////  CircleCore.h//  Quartz////  Created by 仙人掌 on 12 ...

  5. Duilib的控件拖拽排序,支持跨容器拖拽(网易云信版本)

    完整代码见:https://github.com/netease-im/NIM_Duilib_Framework/pull/151 核心代码(思路): appitem.h #pragma once # ...

  6. 最佳实践扩展Windows窗体DataGridView控件 .net 4.5 附示例代码

    Windows窗体DataGridView控件的性能调优.net 4.5   在处理大量数据时, DataGridView 控制可以消耗大量的内存开销,除非你仔细地使用它. 在客户有限的内存,你可以避 ...

  7. .net 用户控件ascx.cs注册js脚本代码无效果

    在.net web项目中碰到一个比较奇怪的问题,网上没找到解决方案,先自己mark一下 问题描述: 添加一个用户控件ascx,在后端.cs添加js注册脚本,执行后没有弹出框 注册脚本为: this.P ...

  8. [iOS基础控件 - 6.7.1] 微博展示 代码

      Controller: // // ViewController.m // Weibo // // Created by hellovoidworld on 14/12/4. // Copyrig ...

  9. [iOS基础控件 - 6.7] 微博展示 使用代码自定义TableCell(动态尺寸)

    A.需求 1.类似于微博内容的展示 2.头像 3.名字 4.会员标志 5.内容 6.分割线 7.配图(可选,可有可无)   code source: https://github.com/hellov ...

随机推荐

  1. (转)linux中fork()函数详解

    一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同, ...

  2. KEIL编译错误总结:

    1 expected an identifier:#define宏定义常量后,如果再用前面定义的常量作为枚举常量就会报错,方法,去掉#define宏定义

  3. UCOS-2 消息邮箱与队列

    一个有趣的网络解释: 信号量就是中央政府发给官人做一方大员的官印,有很多种官印但是不能一印多发,得到官印者才能掌权鱼肉一方百姓(任务得到信号量才能运行),否则你就只要等官跑官.(当然官印也可随时被政府 ...

  4. 怎么安装phpcms?PHPCMS V9安装图文教程

    Phpcms是国内领先的网站内容管理系统, 同时也是一个开源的PHP开发框架.PHPCMS V9目前已提供文章.图片.下载等内容模型,在此基础上可非常方便的扩展出信息.房产.交友.点评等功能.已有的模 ...

  5. java中使用正则表达式

    1.用正则表达式分割字符串 Pattern SPLIT2 = Pattern.compile("[,]"); String[] tmpStrings1 = SPLIT2.split ...

  6. RunJS - 在线编辑、展示、分享、交流你的 JavaScript 代码

    发现一个很好玩,很强大的网站 RunJS - 在线编辑.展示.分享.交流你的 JavaScript 代码   http://runjs.cn/ 比如: http://runjs.cn/detail/l ...

  7. jQuery 常见操作实现方式

    一个优秀的 JavaScript 框架,一篇 jQuery 常用方法及函数的文章留存备忘. jQuery 常见操作实现方式 $("标签名") //取html元素 document. ...

  8. C# 操作网页标签

    1  元素的 显示与隐藏   C# HTML: <div Id="div1" runat="server" style="display:non ...

  9. Quartz.net一个简要示例

    下面描述了一个Quartz.net最常用的应用场景,按特定秒数触发执行特定任务. 1.任务要继承自:IJob,在Execute方法中填入自己需要执行的任务. public virtual void E ...

  10. 解决WinForm(C#)中MDI子窗体最大化的问题

    “用MDI方式打开一个子窗口体后,总是不能最大化显示,明明子窗口体的WindowState设置为Maximized?”,相信有很多人会遇到这的样问题,请按下面的方法设置即可使MDI子窗体最大化: 1. ...