Label Frame CheckBox ComboBox HScrollBar Timer DirListBox Shape Image.[r]
(1)CHƯƠNG V: CÁC ĐIỀU KHIỂN CƠ BẢN
Hình 26: Các điều khiển Visual Basic công cụ
I FORM (BIỂU MẪU)
Form nơi dùng để dùng để đặt đối tượng Khi chạy chương trình Form
xuất dạng cửa sổ Một chương trình Visual Basic có nhiều Form, để
chèn thêm Form ta vào Project – AddForrm, số có Form xuất đầu
tiên chạy chương trình gọi Form chính:
Hình 27: Một Form Visual Basic
I.1 Một số thuộc tính Form
- Top, Left: Xác định vị trí Form hình (khoảng cách phía bên trái)
- Height, Width: Kích thước Form (chiều cao chiều rộng)
- Caption: Nội dung xuất dòng tiêu đề Form
PictureBox TextBox
Command Button Option Button ListBox
VScrollBar DriveListBox FileListBox Line
Data Pointer
(2)- Border Style: Quy định kiểu đường biên Form (0: None, 1: Fixed Single, 2: Sizeable, 3: Fixed Dialog, 4: Fixed ToolWindow, )
- Icon: Chọn biểu tượng hình ảnh xuất bên trái tiêu đề Form
- BackColor: Màu Form
- WindowState: Kích thước Form chạy chương trình (0: Normal, 1:
Minimized, 2: Maxminzed)
Ví dụ: Thay đổi màu cửa sổ di chuyển đến hình: Private Sub_FormLoad()
Form1.WindowState = ‘ Cửa sổ phóng lớn hình Form1.BackColor = QBColor(4) ‘ Đặt màu màu đỏ (4) Form1.Left = (Screen.Width – Form.Width)/2 ‘ Screen.Width: chiều rộng mh Form1.Right = (Screen.Height – Form.Height)/2 ‘ Screen.Height: chiều cao mh End Sub
I.2 Một số phương thức Form
- Show: Hiển thị Form, cú pháp: <Tên Form>.Show [Style], Style 0:
Modeless 1: Modal
- Hide: Không cho Form hiển thị, cú pháp: <Tên Form>.Hide
- Move: Thực di chuyển Form đến vị trí khác hình, cú pháp:
Sub Move(Left As Single, [Top], [Width], [Height])
Các tham số cặp [] phần tùy chọn Phương thức di chuyển Form đến vị trí
cách bên trái Left, cách Top kích thước thay đổi thành Width Heigth
Ví dụ: Form1.Move 200, 300, 500, 800
- Line: Là phương thức dùng để vẽđoạn thẳng Cú pháp:
Sub Line(X1 As Single, Y1 As Single) - ( X2 As Single, Y2 As Single), Color As Long Ä (x1, y1): điểm đầu, (x2, y2): điểm cuối, Color: màu nét vẽ
Ví dụ: Form1.Line (100, 200)-(300, 400), QBColor(4)
- Circle: Là phương thức dùng để vẽđường trịn, Elíp cung trịn Cú pháp:
Sub Circle(X As Single, Y As Single), Radius As Single, Color As Long, Start As Single, End As Single, Aspect As Single
Ä (x , y): tâm đường trịn, Radius: bán kính, Color: màu vẽ, Start, End: góc đầu góc cuối để vẽ cung trịn, Aspect: sử dụng để vẽ Elíp
Ví dụ: Form1.Circle(500, 500), RGB(200, 190, 45)
- Các phương thức khác: SetFocus (nhận Focus), Refresh (cập nhật lại nội dung
Form),
I.3 Một số kiện Form
- Click, DblClick: Xảy người dùng nhắp nhắp đúp chuột vào Form
- KeyDown, KeyPress, KeyUp: xảy người dùng nhấn xuống phím
(KeyDown), nhấn phím ASCII (KeyPress), nhả phím nhấn (KeyUp) Cú
pháp:
Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
Ä KeyCode: mã phím vừa nhấn, Shift: phím kết hợp Shift, Ctrl, Alt
nhấn, giá trị Shift cho bảng sau:
Giá trị Shift Tổ hợp phím
(3)2 Ctrl
3 Shift+Ctrl
4 Alt
5 Shift+Alt
6 Ctrl+Alt
7 Shift+Ctrl+Alt
Hình 28: Mã kết hợp phím Private Sub Command1_KeyPress(KeyAscii As Integer) Ä KeyAscii: chứa mã phím ASCII vừa nhấn
Private Sub Command1_KeyUp(KeyCode As Integer, Shift As Integer) Ä Các tham số KeyCode Shift tương tự kiện KeyDown
- MouseDown, MouseMove, MouseUp: Xảy nhấn chuột (MouseDown), di
chuyển chuột (MouseMove) nhả chuột (MouseUp) Form Cú pháp:
Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Ä Button: xác định phím chuột nhấn (1: phím trái, phím phải, 4: phím giữa); (x,y) tọa độ nơi xảy kiện nhấn chuột Shift: cho biết phím kết hợp (Shift, Ctrl, Alt) nhấn đồng thời với chuột
- Load, Unload: xảy nạp Form vào nhớ (Load) hủy bỏ Form khỏi nhớ
(UnLoad)
Ví dụ: Khi nhắp chuột vào Form1 xuấn câu thông báo:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) MsgBox "Chào bạn! Bây :" & Time()
End Sub
II LABEL (NHÃN)
Dùng để hiển thị dòng văn biểu mẫu, thường sử dụng để thích
cho điều khiển khác:
Hình 29: Điều khiển Label dùng kết hợp với điều khiển khác
II.1 Một số thuộc tính Label
- Caption: Nội dung dòng văn Label
- AutoSize: Cho phép kích thước Label tựđộng thay đổi cho phù hợp với Caption
- Alignment: Căn chỉnh nội dung Caption (0: Left, 1: Right, 2: Center)
(4)- ForeColor, BackColor: xác định màu chữ màu Label, màu
xác định hàm: QBColor(n) RGB(r, g, b)
II.3 Một số kiện Label
- Label có số kiện Click, DblClick, MouseMove, MouseDown, MouseUp
giống Form
III TEXTBOX (HỘP VĂN BẢN)
TextBox (thường gọi hộp văn bản) nơi chứa thông tin người sử dụng nhập
vào từ bàn phím, ngồi có thểđược sử dụng để hiển thị liệu
Hình 30: Điều khiển TextBox dùng để nhập số liệu
III.1 Một số thuộc tính TextBox
- Text: Nội dung văn xuất TextBox
- Multiline: Cho phép hiển thị nhiều dòng hộp văn (True, False)
- ScrollBar: Sử dụng cuộn để xem nội dung TextBox (0: None, 1: Thanh
cuộn ngang, 2: Thanh cuộn dọc, 3: Cả hai cuộn)
- Password Char: Sử dụng ký tự xuất thay cho ký tự TextBox, thường
được sử dụng dùng TextBox để nhập mật
- Các thuộc tính khác: Font, ForeColor, BackColor,
- Các thuộc tính dùng CSDL: DataChanged, DataField, DataSource,
III.2 Một số phương thức TextBox
- Move: di chuyển đối tượng TextBox tương tự nhưđối với Form, cú pháp:
Sub Move(Left As Single, [Top], [Width], [Height])
- Refresh: Cập nhật lại nội dung TextBox
- SetFocus: Cho đối tượng nhận Focus (sự quan tâm đến đối tượng)
Ví dụ: Sử dụng phương thức SetFocus kiện LostFocus để yêu cầu người sử
dụng phải nhập vào TextBox giá trị ngày tháng:
Private Sub Text1_LostFocus()
If Not IsDate(Text1.Text) Then ‘ Nếu nội dung nhập vào ngày MsgBox(“Bạn nhập lại !”) ‘ Thông báo
Text1.SetFocus ‘ Cho Text1 nhận Focus Exit Sub ‘ Thoát khỏi kiện End If
End Sub
III.3 Một số kiện TextBox
(5)Private Sub Text1_KeyPress(KeyAscii As Integer) If Not (KeyAscii >= 97 And KeyAscii <= 122) Then KeyAscii =
End If End Sub
Ví dụ 2: Chỉ cho phép nhập vào chữ in hoa xóa bỏ khoảng trống, hàm Asc(ch) trả
mã ký tự ch hàm Chr(x) trả ký tự có mã x
Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAscii = Asc(Ucase$(Chr$(KeyAscii)
If KeyAscii = Asc(" ") Then KeyAscii = End Sub
Ví dụ 3: Kiểm tra người dùng nhấn Ctrl+F2 hiển thị ngày vào Text1,
vbKeyF2 chứa mã phím F2, vbCtrlMask: giá trị Shift nhấn Ctrl
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyF2 And Shift = vbCtrlMask Then
Text1.Text = Date$ ‘ hiển thị ngày End If
End Sub
- Change: kiện xảy người sử dụng thay đổi nội dung TextBox
Ví dụ: Khi nhập liệu vào TextBox, độ dài nội dung > độ dài tối đa thực
nhấn phím Tab cách thực hàm SendKeys “{Tab}”
Private Sub Text1_Change()
If Len(Text1.Text) = Text1.MaxLength Then SendKeys "{Tab}" End Sub
- LostFocus: xảy TextBox Focus
Ví dụ: Thay đổi định dạng số hàm Format( ) kiện LostFocus Private Sub txtNumber_LostFocus()
On Error Resume Next
txtNumber.Text = Format(CDbl(txtNumber.Text), "#,###,###,##0.######")
End Sub
IV COMMAND BUTTON (NÚT LỆNH)
Command Button điều khiển nút lệnh cho phép người sử dụng nhắp vào để thực
các công việc Do bị nhắp nút lệnh thường lún xuống nên gọi Push Button:
(6)IV.1 Một số thuộc tính
- Caption: Nội dung nút bấm, để sử dụng phím nóng kết hợp với phím Alt như:
OK ta thêm dấu & vào trước chữ làm phím nóng: &OK (được OK), Re&Set
(được ReSet)
- Default: = True nút mặc định, nút sẽđược thực nhấn Enter
- Cancel: =True, nút sẽđược thực nhấn phím ESC
- Style: kiểu nút (0: Standard - kiểu bình thường, 1: Graphical - kiểu đồ họa,
đưa hình ảnh vào nút)
- Pictute: Chọn hình ảnh để đưa vào nút, thuộc tính có tác dụng thuộc tính
Style=1 Ngồi ta cịn dùng thuộc tính DownPicture DisablePicture
để chọn hình ảnh nút bị nhấn xuống nút bị Disable
Hình 32: Minh họa nút nhấn đồ họa Visual Basic
IV.2 Một số phương thức
- Move, SetFocus, Refresh
IV.3 Một số kiện
- Click, GotFocus, KeyDown, KeyUp, KeyPress
Ví dụ: Thơng báo giờ nhắp vào nút Command1 Private Sub Command1_Click()
MsgBox "Bây :" & Time() End Sub
V OPTION BUTTON (NÚT CHỌN)
Thuộc tính điều khiển có dạng nút chọn hình trịn, thường sử dụng để biểu
(7)Hình 33: Minh họa điều khiển Option Button
V.1 Một số thuộc tính
- Caption: Nội dung nút chọn, Hình 33: là: “Âm nhạc”, “Thể thao”,
- Value: Chỉ nhận giá trị True (khi hộp chọn, ví dụ: mục Thể thao)
hoặc False (khi hộp khơng chọn, ví dụ: mục Âm nhạc)
- Style: kiểu nút chọn (0: Standard, 1: Graphics), với kiểu Graphics người sử dụng
có thểđưa hình ảnh (trong thuộc tính Picture) vào nút chọn
V.2 Một số phương thức
- Refresh, Move, SetFocus, Drag: ý nghĩa giống điều khiển
V.3 Một số kiện
- Click (nhắp chuột), KeyUp (nhả phím bấm), KeyDown (nhấn phím bấm), KeyPress
(gõ phím ASCII), GotFocus (Nhận Focus), LostFocus (mất Focus)
Chú ý: Đối với điều khiển Option Button, thời điểm có đối tượng
chọn thường sử dụng để biểu diễn mục chọn cho phép chọn giá
trị Ví dụ Hình 33 cho phép chọn sở thích
VI CHECKBOX (HỘP KIỂM TRA)
Là điều khiển dùng để hiển thị hộp kiểm tra (CheckBox), thường sử dụng để
biểu diễn mục kiểm tra từ phía người sử dụng:
Hình 34: Minh họa điều khiển CheckBox
VI.1 Một số thuộc tính
- Caption: Nội dung xuất nút kiểm tra, ví dụ: Âm nhạc, Thể thao,
- Value: giá trị biểu diễn hộp kiểm tra (0: Unchecked – không chọn, 1:
Checked - chọn, 2: Grayed – giá trị không xác định)
If Check1.Value=1 Then Gioi_tinh = “Nam” ElseIf Check1.Value =
Goi_tinh = “Nu”
Else MsgBox “Khơng xác định giới tính !” End If
- Style: kiểu nút kiểm tra (0: Standard, 1: Graphics), với kiểu Graphics người sử dụng
có thểđưa hình ảnh (xác định thuộc tính Picture) vào nút kiểm tra
VI.2 Một số phương thức
(8)VI.3 Một số kiện
- Click, KeyDown, KeyPress, KeyUp, MouseDown, MouseMove, MouseUp,
Chú ý: Đối với nút kiểm tra, thời điểm có nhiều đối tượng chọn
vậy thường sử dụng để biểu diễn mục chọn cho phép chọn nhiều giá trị
lúc Ví dụ Hình 34 cho phép lúc chọn nhiều sở thích
VII LISTBOX & COMBOBOX (HỘP DANH SÁCH)
Điều khiển ListBox ComboBox thường sử dụng để biểu diễn mục
dạng danh sách cho phép người sử dụng chọn lựa hay nhiều mục cách nhắp
chuột vào mục tương ứng Các thuộc tính, phương thức kiện ListBox
ComboBox gần giống chúng khác hình thức thể hiện:
Hình 35: Minh họa điều khiển ListBox
Hình 36: Minh họa điều khiển ComboBox
VII.1 Một số thuộc tính
- ListCount: Cho biết số mục chọn danh sách
- ListIndex: Chỉ số (Số thứ tự) mục danh sách chọn, mục
đang chọn có dải màu xanh vắt ngang, sốđược tính từ
- Sorted (True, False): Các mục danh sách có xếp hay khơng
- Text: Cho biết nội dung mục chọn Khi Text1.Text tương đương
với List1.List(List1.ListIndex)
- List(i): Trả nội dung mục có số i danh sách
Ví dụ:
² List1.List(6): Nội dung phần tử thứ List1
² Combo1.List(Combo1.ListIndex): Cho biết nội dung mục chọn
(9)² List1.List(2) = “Phạm Anh Tuấn”, gán giá trị “Phạm Anh Tuấn” cho mục thứ
a) Một số thuộc tính riêng của ListBox
- MultiSelect: Cho biết thời điểm chọn nhiều mục hay khơng, có
giá trị (0-None: Chỉ cho phép chọn mục, 1-Simple: Chọn nhiều mục mục
này cách nhau, 2-Extended: Chọn nhiều mục mục cách
nhấn Ctrl lúc chọn)
- Columns: Cho danh sách thể thành nhiều cột
- Selected(i): Cho biết mục có số i danh sách có chọn hay khơng
Ví dụ:
For i = To List1.ListCount-1 If List1.Select(i) = True Then
MsgBox “Mục thứ: ” & i+1 & “ chọn !” End If
Next i
b) Một số thuộc tính riêng của ComboBox
- Style: Quy định hình dạng thể ComboBox (0-Dropdown Combo;
1-Simple Combo; 2-Dropdown List)
VII.2 Một số phương thức
- AddItem(s): Thêm mục có nội dung s vào danh sách
Ví dụ: List1.AddItem(“Hà Nội”); Combo1.AddItem(“Sài Gịn”)
- RemoveItem(i):Xóa mục có số i danh sách
Ví dụ:
² Combo1.RemoveItem(1) ‘ xóa mục có số tức mục thứ danh sách ² Combo1.RemoveItem(Combo1.ListIndex) ‘ xóa mục chọn Combo1
- Clear: Xóa tất mục danh sách
Ví dụ: Chuyển qua lại mục hai danh sách List1 List2, Form sử dụng
nút: > (Command1), >> (Command2), < (Command3), << (Command4) Nút > <
chuyển mục >> << chuyển tất mục từ danh sách sang
danh sách lại:
Hình 37: Ví dụ minh họa điều khiển ListBox
Private Sub Command2_Click() ‘ Đưa tất mục từ List1 sang List2 For i = To List1.ListCount – ‘ Đưa phần tử từ List1 sang List2 List2.AddItem (List1.List(i)) ‘ Thêm vào List2
Next i
(10)End Sub
Private Sub Command1_Click() ‘ Đưa mục từ List1 sang List2 List2.AddItem List1.List(List1.ListIndex) ‘ Thêm vào List2 mục chọn List1 List1.RemoveItem (List1.ListIndex) ‘ Xóa mục chọn List1
End Sub
Private Sub Command3_Click() ‘ Đưa mục từ List2 sang List1 List1.AddItem List2.List(List2.ListIndex) ‘ Thêm vào List1 mục chọn List2 List2.RemoveItem (List2.ListIndex) ‘ Xóa mục chọn List2
End Sub
Private Sub Command4_Click() ‘ Đưa tất mục từ List2 sang List1 For i = To List2.ListCount – ‘ Đưa phần tử từ List2 sang List1 List1.AddItem (List2.List(i)) ‘ Thêm vào List1
Next i
List2.Clear ‘ Xóa danh sách List2 sau thêm vào List1 End Sub
Private Sub Form_Load() ‘ Sự kiện khởi tạo Form List1.AddItem "Phạm Tuân" ‘ Thêm phần tử vào List1 List1.AddItem "Yến Lê"
List1.AddItem "Thanh Hiền" List1.AddItem "Văn Quyến" List1.AddItem "Phạm Thọ" List1.AddItem "Viết Hường" End Sub
VII.3 Một số kiện
- Click, DblClick, KeyDown, KeyPress, KeyUp, MouseUp, MouseDown,
MouseMove, GotFocus, LostFocus
VIII PICTUREBOX (HỘP HÌNH ẢNH)
PictureBox cho phép hiển thị nội dung ảnh chương trình Visual Basic,
ngồi cịn sử dụng để vẽ số hình ảnh đồ họa:
Hình 38: Minh họa điều khiển PictureBox
VIII.1 Một số thuộc tính
- Picture: Chỉ định đường dẫn đến tệp tin hình ảnh cần hiển thị, ta chọn hình ảnh
vào thời điểm thiết kế chương trình cách gọi hàm LoadPicture:
Ví dụ: Picture1.Picture = LoadPicture(“D:\Picture\Sample.jpg”), để xóa nội dung hình ảnh
(11)- AutoSize: (True, False) Kích thước PictureBox có tựđộng thay đổi cho với
kích thước ảnh hay khơng
- AutoRedraw: (True, False) Có tựđộng vẽ lại nội dung PictureBox hay không
VIII.2 Một số phương thức
- Circle: Là phương thức dùng để vẽđường trịn, Elíp cung trịn PictureBox
Cú pháp:
Circle(X As Single, Y As Single), Radius As Single, Color As Long, Start As Single, End As Single, Aspect As Single
Ä (x , y): tâm đường trịn, Radius: bán kính, Color: màu vẽ, Start, End: góc
đầu góc cuối để vẽ cung trịn, Aspect: sử dụng để vẽ Elíp tỉ số độ dài cạnh lớn cạnh nhỏ
Ví dụ: Picture1.Circle(500, 500), RGB(200, 190, 45)
- Line: Là phương thức dùng để vẽđoạn thẳng Cú pháp:
Sub Line(X1 As Single, Y1 As Single) - ( X2 As Single, Y2 As Single), Color As Long Ä (x1, y1): tọa độđiểm đầu, (x2, y2): tọa độ điểm cuối, Color: màu nét vẽ Ví dụ: Form1.Line (100, 200)-(300, 400), QBColor(4)
- Cls: xóa nội dung PictureBox
- PaintPicture: Cho phép lên phần ảnh PictureBox, cú
pháp:
PaintPicture(Picture, X1 As Single, Y1 As Single, [Width1], [Height1], [X2], [Y2], [Width2], [Height2], [Opcode])
Ä Picture: ảnh cần vẽ, (x1, y1, Width1, Height1): tọa độ góc bên trái kích
thước vùng ảnh cần vẽ, (x2, y2, Width2, Height2): tọa độ góc bên trái kích
thước vùng ảnh sẽđược vẽ PictureBox
IX IMAGE (HỘP HÌNH ẢNH)
Điều khiển Image dùng để chứa hình ảnh, có số thuộc tính tương
tự PictureBox như: Picture, Ngoại trừ Image có thuộc tính Stretch (True, False) cho
biết ảnh có bị kéo dãn hay co lại cho phù hợp với kích thước đối tượng Image
hay khơng
Hình 39: Bức ảnh dùng Image bị co lại thuộc tính Stretch True
PictureBox Image xét chức gần tương tự PictureBox hỗ trợ
nhiều tính bù lại lại chiếm nhiều nhớ Image, tùy tình
huống mà chọn PictureBox hay Image cho phù hợp
X VSCROLLBAR, HSCROLLBAR (THANH CUỘN)
Hai điều khiển HSCROLLBAR VSCROLLBAR cuộn ngang
(12)Hình 40: Thanh cuộn kết hợp với điều khiển khác
- Thuộc tính Min, Max, Value: Lần lượt xác định giá trị nhỏ nhất, lớn giá trị
hiện biểu diễn cuộn
- Sự kiện Change: xảy người sử dụng thay đổi giá trị cuộn,
kiện lại là: KeyDown, KeyUp, KeyPress, Scroll
Ví dụ 1: Sử dụng cuộn để điều chỉnh màu PictureBox cách sử
dụng hàm: RGB(red, green, blue), đó: red, green, blue ∈ [0÷255]
Hình 41: Ví dụ minh họa sử dụng cuộn để chọn màu Private Sub Form_Load() ‘ Khởi tạo giá trị cuộn
VScroll1.Min = 0: VScroll2.Min = 0: VScroll1.Min =
VScroll1.Max = 255: VScroll2.Max = 255: VScroll3.Max = 255 End Sub
Private Sub VScroll1_Change() ‘ Thay đổi màu PictureBox thay đổi giá trị red Picture1.BackColor = RGB(VScroll1.Value, VScroll2.Value, VScroll3.Value)
End Sub
Private Sub VScroll2_Change() ‘ Thay đổi màu PictureBox thay đổi giá trị green Picture1.BackColor = RGB(VScroll1.Value, VScroll2.Value, VScroll3.Value)
End Sub
Private Sub VScroll3_Change() ‘ Thay đổi màu PictureBox thay đổi giá trị blue Picture1.BackColor = RGB(VScroll1.Value, VScroll2.Value, VScroll3.Value)
End Sub
Chú ý: Ngoài hàm RGB(red, green, blue) ta xác định màu hàm
QBColor(n), đó: n ∈ [0÷14] Nếu n (0: Black, 1: Blue, 2: Green, 3: Cyan, 4: Red, , 14: Yellow, 15: White)
Ví dụ 2: Viết chương trình sử dụng cuộn kết hợp với điều khiển PictureBox để
(13)
(thời điểm thiết kế) (thời điểm chạy chương trình)
Hình 42: Minh họa sử dụng cuộn PictureBox để xem ảnh có kích thước lớn
Ta sử dụng hai cuộn VSCroll1, HSCroll1 Picture1, Picture2, Picture2
nằm Picture1
Private Sub Form_Load()
Form1.ScaleMode = vbPixels : Picture1.ScaleMode = vbPixels
Picture2.AutoSize = True ‘ Kích thước Picture2 tựđộng thay đổi Picture1.BorderStyle = : Picture2.BorderStyle = ‘ Kiểu đường biên ' Nạp hình ảnh nawfm File “D:\Sample.jpg” vào Picture2
Picture2.Picture = LoadPicture("D:\Sample.jpg")
Picture2.Move 0, ‘ Di chuyển Picture2 đến góc phía bên trái ' Đặt thuộc tính giá trị cho cuộn
HScroll1.Max = Picture2.Width - Picture1.Width VScroll1.Max = Picture2.Height - Picture1.Height
‘ Kiểm tra để ẩn cuộn trường hợp kích thước Picture1 < Picture2 VScroll1.Visible = (Picture1.Height < Picture2.Height)
HScroll1.Visible = (Picture1.Width < Picture2.Width) End Sub
Private Sub HScroll1_Change() ‘ Khi thay đổi giá trị HSCroll1 Picture2.Left = -HScroll1.Value
End Sub
Private Sub VScroll1_Change() ‘ Khi thay đổi giá trị VSCroll1 Picture2.Top = -VScroll1.Value
End Sub
Private Sub Form_Resize() ‘ Khi thay đổi kích thước Form Picture1.Height = Form1.Height : Picture1.Width = Form1.Width
Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, ScaleHeight - HScroll1.Height Picture2.Move 0,
HScroll1.Top = Picture1.Height : HScroll1.Left = HScroll1.Width = Picture1.Width
VScroll1.Top = : VScroll1.Left = Picture1.Width VScroll1.Height = Picture1.Height
HScroll1.Max = Picture2.Width - Picture1.Width VScroll1.Max = Picture2.Height - Picture1.Height
' Kiểm tra để ẩn cuộn trường hợp kích thước Picture1 < Picture2 VScroll1.Visible = (Picture1.Height < Picture2.Height)
(14)XI CÁC ĐIỀU KHIỂN XEM NỘI DUNG Ổ ĐĨA
Các điều khiển xem ổđĩa cho phép người sử dụng dễ dàng xem chọn nội dung ổ đĩa
có máy Các điều khiển xem nội dung ổđĩa bao gồm: DriveListBox (Hộp liệt kê ổđĩa),
DirListBox (Hộp liệt kê thư mục), FileListBox (Hộp liệt kê tệp tin):
Hình 43: Ứng dụng điều khiển xem nội dung ổđĩa
XI.1 FileListBox (Hộp liệt kê tệp tin)
Điều khiển FileListBox dùng để liệt kê tệp tin (File) nằm thư mục hành
cho phép người sử dụng xem chọn tệp tin:
Hình 44: Điều khiển FileListBox (phía bên phải)
a) Một số thuộc tính
- Path: Chỉ định đường dẫn đến thư mục hành, giá trị xác định vào
thời điểm chạy chương trình
- ListCount: Số tệp tin thư mục hành
- List(i): Trả tên tệp tin (cả phần mở rộng) có số i FileListBox
(15)- Pattern: Xác định điều kiện để lọc tệp tin xuất FileListBox, thuộc tính
này xâu ký tự có sử dụng ký tự đại diện * ? Khi có nhiều điều kiện để
lọc ta liệt kê điều kiện ngăn cách dấu “;”: Ví dụ:
File1.Pattern = “*.jpg” ‘ Chỉ hiển thị tệp tin có phần mở rộng JPG File1.Pattern = “*.bmp; *.jpg; *.gif” ‘ Chỉ liệt kê File ảnh
- ReadOnly, System, Hidden, Normal, Archive: Các thuộc tính nhận giá trị
True hay False cho biết hiển thị hay khơng hiển thị tệp tin có thuộc tính
chỉ đọc (ReadOnly), hệ thống (System), ẩn (Hidden), bình thường (Norrmal) lưu
trữ (Archive) FileListBox
b) Một số sự kiện
- Click: xảy người sử dụng nhắp chọn tên File FileListBox
Private Sub File_Click()
‘ Hiển thịđường dẫn đến File chọn cách ghép đường dẫn tên File MsgBox “File chọn: ” & File1.Path & “\” & File1.FileName
End Sub
- Một số phương thức khác: GotFocus, KeyDown, KeyUp, KeyPress, Scroll
XI.2 DirListBox (Hộp liệt kê thư mục)
Điều khiển DirListBox dùng để liệt kê cấu trúc thư mục theo phân cấp cha ổđĩa
hiện hành, thư mục thụt vào bên phải so với thư mục cha:
Hình 45: Ứng dụng điều khiển DirListBox (phía bên trái)
a) Một số thuộc tính
- Path: Chỉ định đường dẫn đến thư mục hành, giá trị xác định vào
thời điểm chạy chương trình
- ListCount: Số thư mục thư mục hành, hình VB98 thư mục
hiện hành có thư mục con: Template, Tsql, Wizards
- List(i): Chỉ định đường dẫn đến thư mục có số i thư mục hành
Hình List(2) cho kết quả: “C:\Program Files\Microsoft Visual
Studio\VB98\Wizards”
b) Một số sự kiện
- Change: Xảy người dùng thay đổi thư mục hành
- Click: Xảy người sử dụng nhắp chuột vào DirListBox
(16)c) Kết hợp giữa DirListBox FileListBox
Trong lập trình ta thường kết hợp điều khiển trên, để thay đổi thư mục
hiện hành DirListBox nội dung FileListBox thay đổi theo ta thực hiện:
Private Sub Dir1_Change()
File1.Path = Dir1.Path ‘ Cập nhật Path Dir1 sang File1 File1 thay đổi End Sub
XI.3 DriveListBox (Hộp liệt kê ổđĩa)
Điều khiển DriveListBox cho phép liệt kê danh sách ổ đĩa có máy dạng
một ComboBox kèm theo biểu tượng ổ đĩa Các ổ đĩa máy bao gồm: Đĩa mềm, đĩa
cứng, Đĩa CDROM, Đĩa mạng:
Hình 44: Ứng dụng điều khiển DriveListBox
a) Một số thuộc tính
- Drive: Chỉ định tên ổ đĩa hành (đang chọn), giá trị thuộc tính
chỉđược xác định vào thời điểm chạy chương trình, điều có nghĩa khơng thể
thay đổi giá trị vào thời điểm thiết kế
- ListCount: Số ổđĩa có máy
- ListIndex: Chỉ số (số thứ tự tính từ 0) ổđĩa hành
- List(i): Trả tên ổđĩa có số i danh sách ổđĩa
Ví dụ:
Private Sub Form_Load() Dim s As String
For i = To Drive1.ListCount – ‘ Lặp qua danh sách ổđĩa s = s + Drive1.List(i)
Next i MsgBox s End Sub
b) Một số sự kiện
- Change: xảy thay đổi nội dung ổđĩa hành
Private Sub Drive1_Change() MsgBox Drive1.Drive End Sub
- Các phương thức khác: GotFocus, KeyDown, KeyUp, KeyPress, Scroll
c) Kết hợp giữa DirListBox DriveListBox
Để ta thay đổi ổ đĩa hành DriveListBox nội dung thư mục
DirListBox thay đổi theo ta thực hiện:
Private Sub Drive1_Change()
(17)CHƯƠNG VI: CHƯƠNG TRÌNH CON
Trong lập trình ta thường gặp cơng việc gần giống thực lặp lặp lại Trong trường hợp để chương trình ngắn gọn dễ hiểu người ta đưa khái niện
chương trình Chương trình tập hợp câu lệnh thực công việc
tương đối trọn vẹn Chương trình thường có đầu vào gọi tham số, sau biến
đổi cho kết quảởđầu
Một chương trình tốt chương trình sáng sủa, dễ hiểu, dễ phát lỗi, dễ bổ sung
chức mới, chương trình có sử dụng chương trình hồn tồn đáp ứng
u cầu
Chương trình bao gồm loại: Thủ tục (Sub) hàm (Function), hàm thường có
giá trị trả cịn thủ tục khơng Sử dụng chương trình trình gồm giai
đoạn: định nghĩa gọi chương trình Ðối với chương trình có sẵn cần gọi thực hiện, ngược lại ta phải thực đầy đủ giai đoạn
I CÁC CHƯƠNG TRÌNH CON CĨ SẴN
Các chương trình có sẵn chương trình định nghĩa Visual
Basic người dùng không cần định nghĩa mà cần gọi thực Sau liệt kê
một số chương trình thường gặp:
I.1 Các hàm chuyển đổi liệu
STT Cú pháp Ý nghĩa Ví dụ
1 Str(n) Chuyển số n thành chuỗi Str(1978) → “1978
2 Val(s) Chuyển chuỗi s thành số Val(“1978”) → 1978
3 Int(x)
Fix(x)
Chỉ lấy phần nguyên, cắt bỏ phần
thập phân x
Int(3.75) → Fix(5.15) →
4
CByte(x), CDbl(x), CInt(x), CLng(x), CSng(x), CStr(x),
Lần lượt chuyển đổi x thành giá trị
thuộc kiểu Byte, Double, Int, Long,
Single, String, .Khác với Int()
Fix() hàm Cint() Clng() thực việc làm tròn
Cbyte(3.14) → Cint(3.75) →
CString(3.14) → “3.14”
5 Round(x,n) Làm tròn số x với n chữ số sau dấu
chấm thập phân
Round(3.1416,2) → 3.14 Round(3.14162,3) → 3.142
Hình 45: Các hàm chuyển đổi liệu có sẵn Visual Basic
I.2 Các hàm tính tốn
STT Cú pháp Ý nghĩa Ví dụ
1 Abs(x) Tính trị tuyệt đối x Abs(-5) →
2 Atn(x) Tính Arctang x Arctang(1) → 45
(18)Radian
4 Sin(x) Tính Sin x, x tính Radian Sin(30*3.1416/180) → 0.5
5 Exp(x) Tính e mũ x Exp(7) ≈ e7
6 Log(x) Tính Lơgarit số 10 x Log(10000) →
7 Tan(x) Tính Tang x, x tính
Radian
Tan(45*3.1416/180) →
8 Sqr(x) Tính bậc hai x Sqr(16) →
9 Rnd Cho số ngẫu nhiên từ ÷ RGB(Rnd*255, Rnd*255, Rnd*255)
Hình 46: Các hàm tính tốn có sẵn Visual Basic
Từ hàm tính tốn có sẵn ta suy hàm khác, Ví dụ:
Cotang(x) = Cos(x)/Sin(x) ‘ Tính Cotang x Arccos(x) = Arctang(Sqr(1/Cos2(x)-1)) ‘ Tính Arccos của x Arcsin(x) = Arctang(Sqr(1/(1-Sin2(x))-1)) ‘ Tính Arcsin của x
Logab = Log10b/Log10a = Log(b)/Log(a) ‘ Tính Lơgarit số a b Logex = Log10x/Log10e = Log(x)/Log(e) ‘ Tính Lơgarit số e x ab = Exp(Log
eab) = Exp(b*Logea) = Exp(b*(Log(a)/Log(e))) ‘ Tính a lũy thừa b Shx(x) = (Exp(x) + Exp(-x))/2 ‘ Tính Sin hypecbolic x
Chx(x) = (Exp(x) - Exp(-x))/2 ‘ Tính Cos hypecbolic x
I.3 Các hàm chuỗi ký tự (String)
STT Cú pháp Ý nghĩa Ví dụ
1 Asc(ch) Trả mã ký tự ch bảng
mã Ascii
Asc(“A”) → 65
2 Chr(x) Trả ký tự có mã x Chr(97) → “a”
3 LCase(s) Chuyển s thành chữ thường LCase(“Da Nang”) → “da
nang”
4 UCase(s) Chuyển s thành chữ in hoa UCase(“Anh Tuan”) → “ANH
TUAN”
5 Str(x) Chuyển x thành chuỗi Str(1978) → “1978”
6 RTrim(s) Cắt bỏ ký tự trắng bên phải s RTrim(“SDC ”) → “SDC”
7 LTrim(s) Cắt bỏ ký tự trắng bên trái s LTrim(“ SDC”) → “SDC”
8
Trim(s) Cắt bỏ ký tự trắng hai bên
s
Trim(“ SDC ”) mt → “SDC”
9 Len(s) Trả vềđộ dài xâu s Len(“Da Nang”) →
10 Mid(s, vt, [n]) Trả n ký tự s tính từ vị trí vt
Mid(“Dai hoc Da Nang”, 5, 3) → “hoc”
11 InStr(vt, s1, s2)
Trả vị trí xuất chuỗi s1 chuỗi s2 tính từ vị trí vt,
khơng tìm thấy hàm trả
InStr(2, “hoc”, “Dai hoc Da Nang”) →
(19)13 Right(s, n) Lấy n ký tự bên phải s Left(“Xuan An”, 2) → “An”
14 MonthName(n) Trả tên Tiếng Anh tháng thứ n MonthName(1) → “Januari”
15 StrReverse(s) Đảo ngược ký tự chuỗi s StrReverse(“Tuan”) →
“nauT”
16 Weekday(s) Trả thứ biểu diễn ngày s Weekday("8/14/98") → "6"
(= vbFriday)
Hình 47: Các hàm thao tác chuỗi ký tự có sẵn Visual Basic
I.4 Một số hàm khác
1 Hàm định dạng: Format(Biểu_thức [, Xâu định dạng])
- Biểu_thức: Là biểu thức số chuỗi cần định dạng
- Xâu định dạng tạo thành ký tự sau:
# : Đại diện cho chữ sô từ (không xuất khơng có giá trị)
0 : Đại diện cho chữ sô từ (không xuất số 0)
@: Đại diện cho chữ khoảng trống (Có thể xuất hiệ không)
: Hiển thị dấu chấm vị trí khai báo
, : Hiển thị dấu , ngăn cách nhóm chữ số
% : Nhân biểu thức với 100 hiển thị dấu % vị trí khai báo > : Hiển thị theo chữ in hoa
< : Hiển thị theo chữ thường
- Ví dụ:
MyTime = #5:04:23#
MyDate = #January 27, 1993#
MyStr = Format(Time, "Long Time") → “5:04:23 AM”
MyStr = Format(Date, "Long Date") → “Thurday, March 20, 2003” MyStr = Format(MyTime, "h:m:s") → "17:4:23"
MyStr = Format(MyTime, "hh:mm:ss AMPM") → "05:04:23 PM" MyStr = Format(MyDate, "dddd, mmm d yyyy") → "Wednesday” MyStr = Format(5459.4, "##,##0.00") → "5,459.40" MyStr = Format(334.9, "###0.00") → "334.90" MyStr = Format(12345.67, "#.###E+") → "1.235E+4" MyStr = Format(12345.67, "#.###E-") → "1.235E4" MyStr = Format("abcde", "@@@@@@@") →" abcde" Format("abcde", ">& & & & &") → "A B C D E" MyStr = Format(5, "0.00%") → "500.00%" MyStr = Format("HELLO", "<") → "hello" MyStr = Format("This is it", ">") → "THIS IS IT"
2 Các hàm ngày giờ:
Date : Lấy ngày Hệ thống Time : Lấy Hệ thống
Now : Lấy ngày Hệ thống
Day(d), Month(d), Year(d) : Lấy phần ngày, phần tháng, phần năm ngày d Hour(t), Minute(t), Second(t) : Lấy phần giờ, phút giây t
(20)4 IsNumeric(bt): (True/False) Kiểm tra xem biểu thức có kết kiểu số hay không
5 InputBox (Lời nhắc [, Tiêu đề] [, Giá trị mặc định] [, Left, Top])
→ Xuất hộp thoại yêu cầu người dùng nhập liệu vào ô TextBox sau
nhắp nút OK Cancel
² Lời nhắc: Là xâu ký tự dùng để hướng dẫn người sử dụng nhập số liệu
² Tiêu đề: Là xâu ký tự xuất tiêu đề hộp thoại
² Giá trị mặc định: Là giá trịđược sử dụng người dùng không nhập liệu
² Left, Top: Vị trí xuất hộp thoại hình
6 MsgBox(Thơng báo [, Kiểu] [, Tiêu đề])
→ Xuất hộp thoại chứa nội dung thông báo người dùng, hàm trả
giá trị số cho biết nút chọn:
² Thông báo: Là xâu ký tự biểu diễn nội dung thông báo
² Tiêu đề: Nội dung xuất Caption hộp thoại xuất
² Kiểu: Xác định nút xuất hộp thoại thông qua định
sẵn cho bảng sau:
Tên Value Mô tả
VbOkOnly Chỉ nút OK
VbOkCancel Hiện nút OK Cancel
VbAbortRetryIgnore Hiện nút Abort, Retry, Ignore
VbYesNoCancel Hiện nút Yes, No, Cancel
VbYesNo Hiện nút Yes, No
VbRetryCancel Hiện nút Retry, Cancel
² Giá trị trả hàm MsgBox:
VbOk Khi nhấn nút OK
VbCancel Khi nhấn nút Cancel
VbAbort Khi nhấn nút Abort
VbRetry Khi nhấn nút Retry
VbIgnore Khi nhấn nút Ignore
VbYes Khi nhấn nút Yes
VbNo Khi nhấn nút No
Ví dụ: Dùng MsgBox để hiển thị thông báo Private Sub Command1_Click()
Dim tb$, td$
Dim traloi As Boolean
tb = “Tất liệu bị xóa, Bạn đồng ý không?” td = “Xác nhận”
‘ Lệnh sau xuất hộp thoại với nút Yes, No biểu tượng dấu ? (VbQuestion) Traloi = MsgBox(tb, VBYesNo + VbQuestion, td) ‘ Nhận giá trị trả