Mục tiêu: Giúp làm quen với tập tin resource của VB, nhất là củng cố các thao tác trên tập tin.
Bước 1: Tạo thư mục Basic\Bt3-2. Tạo một dự án mới trong thư mục này.
Bước 2: Tạo giao diện như hình sau:
51234679108
Hình III.2: Tập tin resource
Trong đó:
Item 1: Caption: Thong tin nguoi su dung
BorderStyle: 3-Fixed Dialog
StartUpPosition: 2-Center Screen
Item 2: Label
Name: lblHelp
Index: 0
Item 3: Label
Name: lblHelp
Index: 1
Item 4: Label
Name: lblHelp
Index: 2
Item 5: TextBox
Name: txtHelp
Index: 0
Item 6: TextBox
Name: txtHelp
Index: 1
Item 7: TextBox
Name: txtHelp
Index: 2
Item 8: CommandButton
Name: cmdHelp
Index: 0
Item 9: CommandButton
Name: cmdHelp
Index: 1
Item 10: CommandButton
Name: cmdHelp
Index: 2
Bước 3: Ta nhận thấy các điều khiển có cùng một tên hiển thị (Thong tin). Mục tiêu của ta là sử dụng tập tin resource (tài nguyên) để thay đổi tên hiển thị trên các điều khiển. Để tạo tập tin tài nguyên, ta vào mục ADD-IN\ADD-IN MANAGER trên menu của VB. Trong các mục của ADD-IN MANAGER nhấp đúp vào resource editor và đóng mục ADD-IN MANAGER lại.
Bước 4: Chọn Tools\Resource Editor trên menu. Mở String Table Editor bằng cách nhấp chuột lên biểu tượng abc của Resource Editor. Cửa sổ soạn thảo cho tập tin tài nguyên sẽ mở ra. Ta nhập các hàng như sau:
Bảng 1
| ID |
RESOURCE STRING |
ID |
RESOURCE STRING |
| 1 |
Ten |
7 |
So dt |
| 2 |
Ho |
8 |
So CMND |
| 3 |
Ma nv |
9 |
T. trang hn |
| 4 |
Huy bo |
10 |
Huy bo |
| 5 |
Vo hieu hoa |
11 |
Ve truoc |
| 6 |
Ke |
12 |
Hoan tat |
Bước 5: Lưu tập tin tài nguyên lại.
Bước 6: Mở cửa sổ soạn thảo mã lệnh. Tạo kiểu do người dùng định nghĩa để lưu dữ liệu cần nhập vào. Thêm đoạn mã sau:
Private Type yeucau
ho As String
ten As String
manv As String
sodt As String
socmnd As String
tinhtranghn As String
End Type
Bước 7: Ta thêm 2 biến nữa; một biến lưu thông tin về người sử dụng (theo kiểu ở trên), một biến lưu thứ tự các bước mà người sử dụng đã nhập thông tin của mình vào.
Private chisobuoc As Integer
Private cacyeucau As yeucau
Bước 8: Trong chương trình này, người sử dụng phải nhập thông tin của mình vào thông qua các bước nhập, trong đó các điều khiển được sử dụng như một mảng các điều khiển. Để tận dụng chúng ta cần khai báo các hằng số để biết hiện thời người dùng đang ở bước thứ mấy của quá trình nhập thông tin cũng như biết được mình đã nhấp vào nút nhấn nào trong quá trình trên. Do đó, ta thêm đoạn khai báo sau:
' cac hang so
Private Enum buoc
buoc1 = 1
buoc2 = 2
buoc3 = 3
End Enum
Private Enum nhannut
nuttrai
nutgiua
nutphai
End Enum
Bước 9: Chương trình này thể hiện trên một form duy nhất và sử dụng mảng các điều khiển để tạo các bước để người dùng nhập thông tin vào. Do đó ta sử dụng tập tin tài nguyên để hiển thị các tên của điều khiển nhằm hiển thị cho chính xác. Vì thế ta cần có một hàm (thủ tục) để cập nhật thông tin nhập vào dựa vào các bước của người dung khi nhập thông tin vào. Vào Tools\Add Procedure để thêm thủ tục sau:
Public Sub Hienthi()
Dim i As Integer
' Kiem tra cac buoc
Debug.Assert chisobuoc = 1 Or chisobuoc = 2
For i = 0 To 2
‘ Nhan
lblHelp(i).Caption = LoadResString((chisobuoc - 1) * 6 + (i + 1))
' Nut
cmdHelp(i).Caption = LoadResString((chisobuoc - 1) * 6 + (i + 4))
If UCase(cmdHelp(i).Caption) = "VO HIEU HOA" Then
cmdHelp(i).Visible = False
Else
cmdHelp(i).Visible = True
End If
txtHelp(i).Text = ""
Next
End Sub
Bước 10: Khi chương trình thực hiện, ta phải ở bước thứ nhất của quá trình nhập liệu
⇒⇒ size 12{ drarrow } {} Thêm đoạn mã sau trong thủ tục xử lý sự kiện Form_Load:
chisobuoc = 1
Hienthi
Bước 11: Mỗi khi có một nút nhấn được nhấp, quá trình nhập liệu chuyển sang bước kế tiếp; người sử dụng có thể đi đến bước kế tiếp hay trở về bước trước đó trong quá trình này. Vì các nút nhấn (button) là một mảng điều khiển (control array) nên chúng có cùng một sự kiện Click tác động vào gọi là cmdHelp_Click. Hàm xử lý này có tham số là một chỉ số kiểu Integer để nhận biết nút nhấn nào được nhấp. Ở đây, ta thêm đoạn mã sau trong hàm xử lý sự kiện này.
Private Sub cmdHelp_Click(Index As Integer)
Select Case chisobuoc
Case buoc1
cacyeucau.ten = txtHelp(0).Text
cacyeucau.ho = txtHelp(1).Text
cacyeucau.manv = txtHelp(2).Text
Case buoc2
cacyeucau.sodt = txtHelp(0).Text
cacyeucau.socmnd = txtHelp(1).Text
cacyeucau.tinhtranghn = txtHelp(2).Text
End Select
' Cac nut nhan
Select Case Index
Case nuttrai
' Huy bo
End
Case nutgiua
' ve truoc
chisobuoc = buoc1
Hienthi
Case nutphai
' di toi
chisobuoc = chisobuoc + 1
If chisobuoc = buoc2 Then
Hienthi
Else
Guiyeucau
End If
End Select
End Sub
Bước 12: Khi quá trình nhập thông tin kết thúc, thông tin này được lưu vào trong một tập tin văn bản, nhờ thủ tục Guiyeucau. Thêm thủ tục Guiyeucau vào nhờ mục Tools\Add Procedure và nhập đoạn mã sau:
Public Sub Guiyeucau()
On Error GoTo Guiloi
' Lay the tap tin
Dim intFile As Integer
intFile = FreeFile()
' Viet len tap tin
Open App.Path & "\yeucau.txt" For Output As #intFile
Print #1, "ho: " & cacyeucau.ho
Print #1, "ten: " & cacyeucau.ten
Print #1, "manv: " & cacyeucau.manv
Print #1, "sodt: " & cacyeucau.sodt
Print #1, "socmnd: " & cacyeucau.socmnd
Print #1, "tinhtranghn: " & cacyeucau.tinhtranghn
Close #intFile
MsgBox "Yeu cau cua ban da duoc goi di", vbOKOnly + vbInformation, _
"Goi yeu cau"
End
Exit Sub
Guiloi:
MsgBox Err.Description, vbOKOnly + vbExclamation, "Goi yeu cau"
Exit Sub
End Sub
Bước 13: Lưu và thực thi chương trình.