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实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

Python pickle模块的使用指南

《Pythonpickle模块的使用指南》Pythonpickle模块用于对象序列化与反序列化,支持dump/load方法及自定义类,需注意安全风险,建议在受控环境中使用,适用于模型持久化、缓存及跨... 目录python pickle 模块详解基本序列化与反序列化直接序列化为字节流自定义对象的序列化安全注

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

python pymodbus模块的具体使用

《pythonpymodbus模块的具体使用》pymodbus是一个Python实现的Modbus协议库,支持TCP和RTU通信模式,支持读写线圈、离散输入、保持寄存器等数据类型,具有一定的参考价值... 目录一、详解1、 基础概念2、核心功能3、安装与设置4、使用示例5、 高级特性6、注意事项二、代码示例

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决