文本框常用于文本的输入、显示和编辑。在VFB工具栏上找到文本框控件,选择,拖动到窗口,如图:
一、控件属性
1、Name(名称)
和窗口一样,Name属性是文本框类的实例化,我们可以用【名称.属性/方法】来使用文本框控件。
2、TextScrollBars(滚动条)
该属性可以设置文本框的滚动条是否显示(必须在MultiLine属性为True的时候),0 - 无滚动条,1 - 垂直滚动条,2 - 水平滚动条,3 - 垂直和水平滚动条。
3、Text(文本)
该属性设置文本框显示的文本。
4、Enabled(可用)、Visible(显示)
使能和显示文本框。
5、MaxLength(最大字数)
该属性设置文本框的最大允许输入字符数。
6、ForeColor(文字色)、BackColor(背景色)
该属性设置文本框的前景色和背景色。
7、TextAlign(对齐)
该属性设置文本框内文本的对齐方式,0 - 左对齐,1 - 居中,2 - 右对齐
8、PasswordChar(密码文字)
该属性在文本框作为密码输入时,设置输入密码显示的字符。
9、Locked(锁住)
该属性设置文本框是否被锁定,锁定后只读(不可手动修改)。
10、MultiLine(多行编辑)
该属性设置文本框是否是多行编辑控件,如果为False,则文本框只能单行输入。如果为True,则可以多行输入和显示。
11、AcceptFiles(拖放)
该属性设置文本框是否接受文件拖放。
二、事件
1、EN_Change事件
Sub Form1_Text2_EN_Change(hWndForm As hWnd, hWndControl As hWnd) '文本已经被修改(修改前用 EN_UPDATE
End Sub
只要文本框的文本发生改变就会触发该属性。
2、WM_Char事件
Sub Form1_Text2_WM_Char(hWndForm As hWnd, hWndControl As hWnd, chCharCode As Long, lKeyData As Long) '字符消息(在 WM_KEYDOWN、WM_KEYUP 消息之后)
'chCharCode 字符代码,Unicode 编码
End Sub
输入字符后产生的消息,跟VB6的Keypress消息差不多。
3、Custom事件
Function Form1_Text2_Custom(hWndForm As hWnd, hWndControl As hWnd, wMsg As UInteger, wParam As wParam, lParam As lParam) As LResult '自定义消息(全部消息),在其它事件处理后才轮到本事件。
Select Case wMsg
Case
Case
Case
End Select
Function = FALSE ' 若不想系统继续处理此消息,则应返回 TRUE (俗称吃掉消息)。
End Function
自定义消息,如果需要用到默认消息以外的消息,则需要使用自定义消息来实现。
三、使用示例
针对文本框属性,做一个示例。包括文本设置、使能,显示、移动、修改字体等。窗体设计如下:其中Text2控件的属性做如下修改:1、TextScrollBars设置为3 - 垂直和水平滚动条,2、Text设置为空,3、MultiLine设置为True,4、AcceptFiles设置为True(代码中有实现文件拖放的例子,可以显示拖放文件的路径)。
代码如下:
Sub Form1_WM_Create(hWndForm As hWnd,UserData As Integer) '完成创建窗口及所有的控件后,此时窗口还未显示。注:自定义消息里 WM_Create 此时还未创建控件和初始赋值。
Text1.Text = "" '通过代码来清除显示
Text2.ForeColor = &HFF0000 '设置前景色
Text2.BackColor = &HA0FFFF '设置背景色 ’颜色必须在Create事件中设置,而不能在Shown事件中设置,否则显示不正常
End Sub
Sub Form1_Command1_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
Text1.Text = "12345678" '设置文本
Text2.Text = "这是第一行" & Chr(13, 10) & _
"这是第二行" & Chr(13, 10) & _
"这是第三行" & Chr(13, 10) & _
"这是第四行"
End Sub
Sub Form1_Command2_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
if Text1.Enabled Then '设置使能
Text1.Enabled = False
Else
Text1.Enabled = True
End If
End Sub
Sub Form1_Command3_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
if Text1.Visible Then '设置显示
Text1.Visible = False
Else
Text1.Visible = True
End If
End Sub
Sub Form1_Command4_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
Text2.Locked = True '锁定文本
End Sub
Sub Form1_Command5_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
Static IsMove As BOOLEAN = False '标志位,是否移动控件,方便恢复控件
if IsMove = false Then '移动控件
IsMove = true
Text2.Move 10,45,200,100
Else
IsMove = false
Text2.Move 14,47,409,167
End If
End Sub
Sub Form1_Command6_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
Text1.MaxLength = 22
End Sub
Sub Form1_Command9_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
Text2.Font = "微软雅黑,22,0,0,0,0" ' 格式为:字体,字号,加粗,斜体,下划线,删除线 中间用英文豆号分割
End Sub
Sub Form1_Command10_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
Text1.PasswordChar = "*"
End Sub
Function Form1_Text2_Custom(hWndForm As hWnd, hWndControl As hWnd, wMsg As UInteger, wParam As wParam, lParam As lParam) As LResult '自定义消息(全部消息),在其它事件处理后才轮到本事件。
Select Case wMsg
Case WM_DROPFILES
dim as HDROP hdrop = cast(HDROP,wParam)
Dim u As Long = DragQueryFile(hDrop, -1, Null, 0) '获取文件个数
If u Then
Dim nFile As wString * (MAX_PATH + 1), re As Long, i As Long
For i = 0 To u -1
re = DragQueryFileW(hDrop, i, @nFile, MAX_PATH) '获取文件名,返回文件名的字符个数
If re Then
PrintA nFile 'nFile 包含路径的文件名,这里是宽字符版,要获取 A字符,使用 Dim nFile As zString 和 DragQueryFileA
End If
Next
End If
Case else
End Select
Function = FALSE ' 若不想系统继续处理此消息,则应返回 TRUE (俗称吃掉消息)。
End Function
运行效果:
完整例子:
https://github.com/rainheart311/VisualFreeBASIC/tree/master/TextBox