2. Một số điều khiển cơ bản
2.3 Điều khiển Textbox
Textbox là một trong những điều khiển được dùng khá rộng rãi. Nó thường
được sử dụng vào việc hiển thị, nhập và sửa dữ liệu dạng văn bản trên các ô dữ
liệu đặt trên form. Hình dưới đây minh họa việc sử dụng Textbox trên một form: Các đối tượng Label
Đặc biệt, đối tượng textbox có thể hiển thị trên được nhiều dòng và như hộp
Ghi chú form trên. Để làm được như vậy cần thiết lập thuộc tắnh Multiline =
True và thuộc tắnh ScrollBar (để tùy chọn thanh cuộn cho Textbox) một cách phù hợp.
Giá trị trên ô TextBox được thể hiện qua thuộc tắnh Text. Thông thường, VB sẽ ngầm hiểu giá trị các ô textbox là kiểu xâu ký tự (Text) nên lập trình viên phải hết sức chú ý tới việc sử dụng phép tắnh cộng Ề+Ể kiểu số, vì máy tắnh sẽ hiểu là phép ghép xâu (cộng hai xâu). Khi đó có thể sử dụng hàm Val (hàm chuyển đổi xâu ậ số) như sau:
Dim num As Double
num = Val(Text1.Text) + Val(Text2.Text)
‘Viết như thế này sẽ bị sai kết quả
num = Text1.Text + Text2.Text
Tuy nhiên trong VB nếu chỉ viết nguyên tên đối tượng Textbox (vắ dụ Text1 chẳng hạn), máy tắnh cũng hiểu là lấy giá trị của thuộc tắnh Text của đối tượng này. Tức là:
‘Lệnh
num = Text1.Text + Text2.Text
‘cũng tương đương với lệnh
num = Text1 + Text2
Khuyến cáo:
Chúng tôi khuyến cáo không nên viết tắt như vậy, sẽ tạo thành một thói quen không tốt khi sử dụng những công cụ lập trình chuyên nghiệp sau này.
Sự kiện của Textbox rất nhiều, ởđây sẽ giới thiệu 2 sự kiện hay được sử dụng nhất với Textbox:
Sự kiện Validate
Một sự kiện rất quan trọng trong việc kiểm tra tắnh đúng đắn dữ liệu khi nhập vào một điều khiển. Vắ dụ sau đây minh họa điều đó:
Yêu cầu tạo form cho phép nhập vào Họ tên và Tuổi như sau:
Trong đó ô Họ tên không được để trắng, ô Tuổi phải nhập vào một số. Giả sử
thuộc tắnh Name (tên) của ô Họ tên là txtHoten, ô Tuổi là txtTuoi. Khi đó mã lệnh để kiểm tra tắnh đúng đắn 2 ô Textbox trên là 2 thủ tục đáp ứng sự kiện
Validate như sau:
'kiểm tra tắnh đúng đắn ô Họ tên '
Private Sub txtHoten_Validate(Cancel As Boolean) If txtHoten = "" Then
Cancel = True
MsgBox "Họ tên không được để trắng !" End If
End Sub
'kiểm tra tắnh đúng đắn cho ô nhập Tuổi '
Private Sub txtTuoi_Validate(Cancel As Boolean) If Not IsNumeric(txtTuoi) Then
Cancel = True
End If End Sub
Sự kiện LostFocus
Sự kiện này thường dùng khi dịch điểm Tab qua đối tượng vừa làm việc. Trong vắ dụ về Textbox, sẽ trình bày vắ dụ về tách lấy Tên ngay sau khi Nhập xong dữ liệu cho ô Họ tên (có Name là txtHoten). Vắ dụ này sử dụng đến hàm GetTen, toàn bộ mã lệnh như sau:
Private Sub txtHoten_LostFocus()
Msgbox "Tên vừa nhập là : " + GetTen(txtHoten) End Sub
Function GetTen(st As String) As String Dim pos As Integer
pos = 1
If InStr(pos, Trim(st), " ") = 0 Then GetTen = st
Exit Function End If
While InStr(pos + 1, Trim(st), " ") > 0 pos = InStr(pos + 1, Trim(st), " ") Wend
GetTen = Trim(Mid(st, pos)) End Function