【问题标题】:Placeholder Text in VB6VB6 中的占位符文本
【发布时间】:2012-11-14 13:27:41
【问题描述】:

我知道这很奇怪,但是有没有办法在 VB6 中模拟占位符文本功能?如果没有,有没有人知道一个好的 OCX 控件我可以找到可以做到这一点的地方?我确信它可以通过一组功能进行编程来做到这一点,只是寻找已经完成的事情。

我要询问的占位符不是 VB6 中的“格式”,而是您在网络表单上看到的文本而不是标签。

文本框内的文本,告诉您该框中的信息,或提供您希望用户在该特定框中输入的信息的示例。

非常感谢任何帮助,一如既往。

【问题讨论】:

    标签: vb6 textbox placeholder ocx


    【解决方案1】:

    听起来你想要提示横幅。这些也适用于 ComboBox 控件。

    Private Const CBM_FIRST As Long = &H1700&
    Private Const CB_SETCUEBANNER As Long = CBM_FIRST + 3
    Private Const ECM_FIRST As Long = &H1500&
    Private Const EM_SETCUEBANNER As Long = ECM_FIRST + 1
    
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" ( _
        ByVal hWnd As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Long, _
        ByVal lParam As Long) As Long
    
    Private Sub SetCueBannerTXT(ByVal TextBox As TextBox, ByVal CueText As String)
        SendMessage TextBox.hWnd, EM_SETCUEBANNER, 0, StrPtr(CueText)
    End Sub
    
    Private Sub SetCueBannerCBO(ByVal ComboBox As ComboBox, ByVal CueText As String)
        SendMessage ComboBox.hWnd, CB_SETCUEBANNER, 0, StrPtr(CueText)
    End Sub
    

    注意要使用此 API,您必须提供一个清单来指定 Comclt32.dll 6.0 版。

    【讨论】:

    • +1 见MSDN
    • 由于需要 CC6,您通常在运行已编译的 EXE 之前不会看到它们。如果确实需要,您可以使用 VB6.EXE.manifest 强制对 IDE 测试运行进行可见性。
    【解决方案2】:

    让我们看看我是否正确理解您想要的内容。您想要一个显示(例如):“名字”的文本框来向用户显示要输入的内容?

    这可以通过在设计模式中将文本值设置为“名字”来实现。然后,在 GotFocus 事件中,删除里面的文本,给用户一个空白文本框来输入他们的信息。

    为了使其更加用户友好,您可以在只是标签时使用灰色文本,在用户输入时使用黑色文本。您还可以测试文本颜色,以便在用户重新输入文本框时不会删除用户信息。

    【讨论】:

    • 这就是我要找的。我得试一试。当我想一些复杂的事情并且有人给我一个很好的简单答案时,我喜欢它。如果有效,我会将其设置为正确答案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2017-03-13
    • 2020-05-27
    • 2011-07-23
    • 2014-04-05
    相关资源
    最近更新 更多