VB6中的占位符文本

3

我知道这可能有点奇怪,但是是否有办法在VB6中模拟占位文本的功能呢?如果没有,有人知道我可以获得好的OCX控件吗?我相信可以编写一组函数来实现此功能,只是希望找到已经完成的东西。

我要求的占位符不是VB6中的“格式”,而更像是Web表单上看到的文本,例如标签。

文本框内的文本告诉您该文本框中输入什么信息,或提供您要求用户输入到特定框中的信息的示例。

非常感谢任何帮助。

2个回答

6
听起来你想要Cue Banners。这也适用于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 - MarkJ
由于需要CC6,通常在编译后运行EXE文件时才会看到它们。如果确实需要,在IDE测试运行中可以使用VB6.EXE.manifest来强制可见性。 - Bob77

3
让我看看我是否正确理解您的要求。您希望一个文本框内有文字(例如:“名字”),以向用户展示应输入的内容?这可以通过在设计模式下将文本值设置为“名字”来实现。然后,在GotFocus事件中,您可以删除其中的文本,使用户获得一个空白的文本框来输入他们的信息。
为了使其更加用户友好,您可以在它只是标签时使用灰色文本,在用户输入时使用黑色文本。您还可以测试文本颜色,以便如果用户重新输入文本框,则不会删除用户的信息。

这正是我正在寻找的。我得尝试一下。当我想到了一些复杂的事情,有人给了我一个简单明了的答案,我就会感到很开心。如果有效的话,我将把它设置为正确的答案。谢谢。 - Mac-Gon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接