zoukankan      html  css  js  c++  java
  • VB6-ListView的排序和点滴

    在VB6 的ListView的排序是比较烦人的,因为它只是按照字符串进行排序,因此,数值的排序就惨不忍睹了,周六在陪老婆值班的时候,看到了一片文章,很爽,今天试验了一下,还好,代码如下:

    Public Enum ListviewSortOrder
        lsoAscending 
    = 0
        lsoDescending 
    = 1
    End Enum

    Public Sub SortItem(lvwObject As ListView, ColumnHeader As MSComctlLib.ColumnHeader, SortOrder As ListviewSortOrder, Optional FormatString As String = "##########.##########")
        
    Dim TempColumnHeader As ColumnHeader
        
    Dim i As Integer
        
    With lvwObject
            
    Set TempColumnHeader = lvwObject.ColumnHeaders.Add(, "TempColumn")
            
    For i = 1 To .ListItems.Count
                
    If ColumnHeader.Index = 1 Then
                    .ListItems(i).SubItems(TempColumnHeader.Index 
    - 1= Format(.ListItems(i).Text, FormatString)
                
    Else
                    .ListItems(i).SubItems(TempColumnHeader.Index 
    - 1= Format(.ListItems(i).SubItems(ColumnHeader.Index - 1), FormatString)
                
    End If
            
    Next
            .Sorted 
    = True
            .SortOrder 
    = SortOrder
            .SortKey 
    = TempColumnHeader.Index - 1
            .Sorted 
    = False
            .ColumnHeaders.Remove 
    "TempColumn"
        
    End With
    End Sub

    这段代码的用意比较明显,就是通过创建一个临时的列来保存经过格式化的数值,然后在临时列进行排序,就可以避免字符串比较带来的漏洞了,当然使用完成后要干掉那个临时列了。

    在使用中需要进行测试各种格式的排序效果,想使用VBUnit或者ComUnit,但是刚刚使用,效果不是很好,还在弄,现在的关键不是使用,而是想了解,它是如何做的,慢慢来吧。

    这几天还是比较关心如何在VB6实现AOP功能,其实还是觉得G#的语法比较优秀的,而且看起来也清楚多了。但是如何在VB里边嵌入新的语法格式呢,这些天一直困扰我,在经过试验后,觉得下边两种方法还是可以的:
    (1)将新语言放到条件编译中,如下边代码
    #If Aop then
        .....
    #End if
    但是我认为如果将语法这样定义,还不如使用配置文件痛快,而且代码在注入后是明码的,不爽。

    (2)采用一个比较变态的办法,就是在文件中任意嵌入新定义的语法,然后在编译的时候做手脚,就是在VB执行编译前将代码注入,当然这种注入的代码是符合VB语法的,然后在进行编译,当然这种手法也是换汤不换药,不过我还是比较喜欢这一种,当然需要对VB的IDE进行一些改造了,可能比较麻烦了。

    通过对G#比较可以看到,在与VB6 Aop Add-Ins相比,功能要强大的多:
    (1)继承的使用
    (2)语法的灵活性
    (3)支持正则表达式格式的多匹配
    (4)支持插入代码的插入前执行,这个有点难弄

  • 相关阅读:
    轻量级数据库sqlite的使用
    Integer引发的思考
    css限制显示行数
    数据库 chapter 17 数据仓库与联机分析处理技术
    数据库 chapter 15 对象关系数据库系统
    数据库 chapter 16 XML数据库
    数据库 chapter 14 分布式数据库系统
    数据库 chapter 11 并发控制
    数据库 chapter 12 数据库管理系统
    数据库 chapter 13 数据库技术新发展
  • 原文地址:https://www.cnblogs.com/Duiker/p/256671.html
Copyright © 2011-2022 走看看