zoukankan      html  css  js  c++  java
  • 【转】VB 技巧一

    改变 ListIndex而不发生 Click 事件

        在修改 Combo 或 Listview 的ListIndex 时, 会发生 Click 事件, 下面的函数可以阻止该事件。
        声明:
    Private Declare Function SendMessage Lib _
    "user32" Alias "SendMessageA" (ByVal _
    hWnd As Long, ByVal wMsg As Long, ByVal _
    wParam As Long, lParam As Any) As Long
    Const CB_GETCURSEL = &H147
    Const CB_SETCURSEL = &H14E
    Const LB_SETCURSEL = &H186
    Const LB_GETCURSEL = &H188
        函数:
    Public Function SetListIndex(lst As Control, _
    ByVal NewIndex As Long) As Long
     
    If TypeOf lst Is ListBox Then
    Call SendMessage(lst.hWnd, _
    LB_SETCURSEL, NewIndex, 0&)
    SetListIndex = SendMessage(lst.hWnd, _
    LB_GETCURSEL, NewIndex, 0&)
    ElseIf TypeOf lst Is ComboBox Then
    Call SendMessage(lst.hWnd, _
    CB_SETCURSEL, NewIndex, 0&)
    SetListIndex = SendMessage(lst.hWnd, _
    CB_GETCURSEL, NewIndex, 0&)
    End If
    End Function
    调整 Combo 下拉部分的宽度
        声明:
    Private Declare Function SendMessage Lib _
    "USER32" Alias "SendMessageA" _
    (ByVal hwnd As Long, ByVal Msg As Long, _
    ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Const CB_GETDROPPEDWIDTH = &H15F
    Private Const CB_SETDROPPEDWIDTH = &H160
    Private Const CB_ERR = -1
        函数:
    ' 取得 Combo 下拉的宽度
    ' 可以利用该函数比例放大或缩小宽度
    Public Function GetDropdownWidth(cboHwnd As Long) As Long
    Dim lRetVal As Long
    lRetVal = SendMessage(cboHwnd, CB_GETDROPPEDWIDTH, 0, 0)
    If lRetVal <> CB_ERR Then
    GetDropdownWidth = lRetVal
    '单位为 pixels
    Else
    GetDropdownWidth = 0
    End If
    End Function
    '设置 Combo 下拉的宽度
    '单位为 pixels
    Public Function SetDropdownWidth(cboHwnd As _
    Long, NewWidthPixel As Long) As Boolean
    Dim lRetVal As Long
    lRetVal = SendMessage(cboHwnd, _
    CB_SETDROPPEDWIDTH, NewWidthPixel, 0)
    If lRetVal <> CB_ERR Then
    SetDropdownWidth = True
    Else
    SetDropdownWidth = False
    End If
    End Function
    Combo的自动查询技术
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Public Const CB_FINDSTRING = &H14C
    Private Sub Combo1_Change()
    Dim iStart As Integer
    Dim sString As String
    Static iLeftOff As Integer
    iStart = 1
    iStart = Combo1.SelStart
    If iLeftOff <> 0 Then
    Combo1.SelStart = iLeftOff
    iStart = iLeftOff
    End If
    sString = CStr(Left(Combo1.Text, iStart))
    Combo1.ListIndex = SendMessage(Combo1.hwnd, _
    B_FINDSTRING, -1, ByVal CStr(Left( _
    ombo1.Text, iStart)))
     
    If Combo1.ListIndex = -1 Then
    iLeftOff = Len(sString)
    combo1.Text = sString
    End If
    Combo1.SelStart = iStart
    iLeftOff = 0
    End Sub
        静态变量 iLeftOff 指定了字符长度。
    自动选择 Text 的内容
        在使用 VFP 的应用进行录入时,每进入一个录入框,就自动选择该框中的所有内容。利用以下的代码,也可实现类似的功能。
    Private Sub MyTextBox_GotFocus()
    AutoSelect MyTextBox
    End Sub
     
    Sub AutoSelect(SelObject As Control)
    SelObject.SelStart = 0
    If TypeOf SelObject Is MaskEdBox Then
    SelObject.SelLength = Len(SelObject.FormattedText)
    Else
    If TypeOf SelObject Is TextBox Then
    SelObject.SelLength = Len(SelObject.Text)
    End If
    End If
    End Sub
  • 相关阅读:
    深度学习中的基本概念——梯度相关
    模型训练中涉及到的技巧
    ubuntu swapfile
    ubuntu install opencv
    Jetson TX1 安装ROS操作系统
    Redis介绍以及安装(Linux)
    C# url信息获取
    贝茨视觉训练法
    PHP设计模式浅析
    MySQL相关知识
  • 原文地址:https://www.cnblogs.com/rosesmall/p/2735064.html
Copyright © 2011-2022 走看看