VB6在ListBox或Combox中搜索字符串项的模块(支持模糊与精确查找)

2024-03-12 14:38

本文主要是介绍VB6在ListBox或Combox中搜索字符串项的模块(支持模糊与精确查找),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


'****************************************************************************
'模块名称:mListBoxComboBoxSearch.bas
'发布日期:2009/03/06
'描    述:VB6在ListBox或Combox中搜索字符串项的模块(支持模糊与精确查找)
'博    客:http://blog.csdn.net/tanaya
'e-mail  :vbcoder@126.com
'****************************************************************************

Option Explicit

Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" ( _
    ByVal hWnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Integer, _
    ByVal lParam As Any) As Long

Private Declare Function SendMessageByString Lib "USER32" Alias "SendMessageA" ( _
    ByVal hWnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As String) As Long

Private Const LB_FINDSTRINGEXACT = &H1A2  '在ListBox中精确查找
Private Const LB_FINDSTRING = &H18F       '在ListBox中模糊查找

Private Const CB_FINDSTRINGEXACT = &H158  '在ComboBox中精确查找
Private Const CB_FINDSTRING = &H14C       '在ComboBox中模糊查找

'其实返回值都是-1
Private Const LB_ERR = -1
Private Const CB_ERR = -1

'在ListBox或ComboBox中搜索指定字符串,并按照是否完全匹配,返回布尔值。
Public Function FindStringInListBoxOrComboBox(ByVal ctlControlSearch As Control, ByVal strSearchString As String, Optional ByVal blFindExactMatch As Boolean = True) As Boolean
    On Error Resume Next
    Dim lngRet As Long
    If TypeOf ctlControlSearch Is ListBox Then
       If blFindExactMatch = True Then
          lngRet = SendMessage(ctlControlSearch.hWnd, LB_FINDSTRINGEXACT, -1, ByVal strSearchString)
       Else
          lngRet = SendMessage(ctlControlSearch.hWnd, LB_FINDSTRING, -1, ByVal strSearchString)
       End If
       If lngRet = LB_ERR Then
          FindStringInListBoxOrComboBox = False
       Else
          FindStringInListBoxOrComboBox = True
       End If
    ElseIf TypeOf ctlControlSearch Is ComboBox Then
       If blFindExactMatch = True Then
          lngRet = SendMessage(ctlControlSearch.hWnd, CB_FINDSTRINGEXACT, -1, ByVal strSearchString)
       Else
          lngRet = SendMessage(ctlControlSearch.hWnd, CB_FINDSTRING, -1, ByVal strSearchString)
       End If
       If lngRet = CB_ERR Then
          FindStringInListBoxOrComboBox = False
       Else
          FindStringInListBoxOrComboBox = True
       End If
    End If
End Function

'在ListBox或ComboBox中搜索指定字符串,并按照是否完全匹配,返回找到字符串所在的索引值。未找到返回 -1
Public Function GetStringIndexInListBoxOrComboBox(ByVal ctlControlSearch As Control, ByVal strSearchString As String, Optional ByVal blFindExactMatch As Boolean = True) As Long
    On Error Resume Next
    Dim lngRet As Long
    GetStringIndexInListBoxOrComboBox = -1 '默认为 -1
    If TypeOf ctlControlSearch Is ListBox Then
       If blFindExactMatch = True Then
          lngRet = SendMessage(ctlControlSearch.hWnd, LB_FINDSTRINGEXACT, -1, ByVal strSearchString)
       Else
          lngRet = SendMessage(ctlControlSearch.hWnd, LB_FINDSTRING, -1, ByVal strSearchString)
       End If
       GetStringIndexInListBoxOrComboBox = lngRet
    ElseIf TypeOf ctlControlSearch Is ComboBox Then
       If blFindExactMatch = True Then
          lngRet = SendMessage(ctlControlSearch.hWnd, CB_FINDSTRINGEXACT, -1, ByVal strSearchString)
       Else
          lngRet = SendMessage(ctlControlSearch.hWnd, CB_FINDSTRING, -1, ByVal strSearchString)
       End If
       GetStringIndexInListBoxOrComboBox = lngRet
    End If
End Function

 

用法示例:在窗体上加入:Command1,Command2,List1,List2

Private Sub Command1_Click()
    MsgBox FindStringInListBoxOrComboBox(List1, "唐细", False)      '模糊查找
    MsgBox GetStringIndexInListBoxOrComboBox(List1, "唐细刚", True) '精确查找
End Sub

Private Sub Command2_Click()
    MsgBox FindStringInListBoxOrComboBox(Combo1, "唐细", False)   '模糊查找
    MsgBox GetStringIndexInListBoxOrComboBox(Combo1, "唐细刚", True) '精确查找
End Sub

Private Sub Form_Load()
    List1.AddItem "aaa"
    List1.AddItem "bbbbb"
    List1.AddItem "唐细刚"
    List1.AddItem "ccccccccc"
    List1.AddItem "ddddddddddd"
   
    Combo1.AddItem "aaa"
    Combo1.AddItem "bbbbb"
    Combo1.AddItem "唐细刚"
    Combo1.AddItem "ccccccccc"
    Combo1.AddItem "ddddddddddd"
End Sub

 

 

 

 

 

这篇关于VB6在ListBox或Combox中搜索字符串项的模块(支持模糊与精确查找)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/801588

相关文章

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Python中的getopt模块用法小结

《Python中的getopt模块用法小结》getopt.getopt()函数是Python中用于解析命令行参数的标准库函数,该函数可以从命令行中提取选项和参数,并对它们进行处理,本文详细介绍了Pyt... 目录getopt模块介绍getopt.getopt函数的介绍getopt模块的常用用法getopt模

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要