易语言超级列表框排序源码.版本 2
.支持库 iext
.程序集 窗口程序集1
.程序集变量 集_中文, 文本型, , "0"
.程序集变量 集_中文排序, 整数型, , "0"
.程序集变量 集_大写字母, 文本型, , "0"
.程序集变量 集_大写字母排序, 整数型, , "0"
.程序集变量 集_小写字母, 文本型, , "0"
.程序集变量 集_小写字母排序, 整数型, , "0"
.程序集变量 集_数字, 文本型, , "0"
.程序集变量 集_数字排序, 整数型, , "0"
.程序集变量 集_其他, 文本型, , "0"
.程序集变量 集_函数地址, 整数型
.子程序 __启动窗口_创建完毕
集_函数地址 = SetWindowLong (超级列表框1.取窗口句柄 (), #GWL_WNDPROC, 到整数 (&消息返回)) ' 改变指定窗口的属性
.子程序 消息返回, , , 新地址子程序
.参数 句柄, 整数型
.参数 消息值, 整数型
.参数 参数1, 整数型
.参数 参数2, 整数型
.局部变量 A, 字节集
.局部变量 B, 整数型
.局部变量 C, 整数型
.局部变量 D, 整数型
.如果真 (消息值 = 528 且 参数1 = 513) ' 如果头被点击
A = 到字节集 (参数2)
B = 取字节集数据 (取字节集左边 (A, 2), 3, ) ' 取点击位置宽度
.计次循环首 (超级列表框1.取列数 (), C)
D = D + 超级列表框1.取列宽 (C - 1) ' 逐次增加判断宽度D
.如果真 (D > B) ' 判断宽度D是否大过点击的宽度B
排序_ (C - 1) ' 取得列索引 C - 1
跳出循环 ()
.如果真结束
.计次循环尾 ()
.如果真结束
CallWindowProc (集_函数地址, 句柄, 消息值, 参数1, 参数2) ' 传递窗口消息
.子程序 排序_, , , 首字,大写,小写,其他,插入的先后顺序可以随便调。
.参数 列索引, 整数型
.局部变量 局_分割的文本A, 文本型, , "0"
.局部变量 局_分割的文本B, 文本型, , "0"
.局部变量 局_循环变量A, 整数型
.局部变量 局_循环变量B, 整数型
.局部变量 局_插入位置, 整数型
数据保存 (列索引) ' 保存超级列表框数据
超级列表框1.全部删除 ()
' ----------------首字插入----------------
.循环判断首 ()
.计次循环首 (取数组成员数 (集_中文), 局_循环变量A)
局_分割的文本A = 分割文本 (集_中文 [局_循环变量A], “|分割线|”, ) ' 把合并的超级列表框数据分成数组
逐字分割 (局_分割的文本A [列索引 + 2], 局_分割的文本B) ' 列索引+2的意思是取他点的那列的数据作为比较的变量(列索引为0)
.如果真 (取数组成员数 (集_中文排序) = 0) ' 防止错误
到循环尾 ()
.如果真结束
.如果真 (取文本左边 (取拼音 (局_分割的文本B [1], 1), 1) = 字符 (集_中文排序 [取数组成