giáo trình visual basic
(Các bài tập thực hành và một số nội dung cơ bản)
Tạo một Form gồm 1 textbox (txt), 3 nút command (cmd1,cmd2,cmd3)
(hien thi loi chao, Clea, Exit) để điều khiển dòng chữ lời chào trên
Textbox.
Giải:
Tạo Form theo mẫu:
Và viết lệnh cho các sự kiện:
Private Sub cmd1_Click()
txt = "Visual Basic xin kinh chao tat ca cac ban"
End Sub
Private Sub cmd2_Click()
txt = " "
End Sub
Private Sub cmd3_Click()
End
End Sub
Tạo Form gồm 1 Picturebox(ảnh), khi chạy form thì ta kích chuột vào
đâu trong Form thì ảnh hiện đến ở vị trí đó.
Giải:
Tạo form theo mẫu:
Tạo 1 Picturebox, vào thuộc tính Picture để chọn ảnh cho mục này, và vào
mục Name: pt.
1
Viết lệnh cho sự kiện:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
pt.Move X, Y (phải gõ vào)
End Sub
Tạo Form gồm:3 Picturebox (pt1, pt2, pt3) (theo mẫu tơng tự trên) và 3
Optionbuttom (ot1, ot2, ot3) để chọn ảnh, khi ta chọn ảnh cần di chuyển
và kích vào đâu trên form thì ảnh đó sẽ di chuyển đến đó.
Giải
Tạo Form theo mẫu:
Viết lệnh cho sự kiện:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
If ot1.Value = True Then
pt1.Move X, Y
End If
If ot2.Value = True Then
2
pt2.Move X, Y
End If
If ot3.Value = True Then
pt3.Move X, Y
End If
End Sub
Nhập thông tin hoten và tuoi cua SV, khi nhập tuoi nếu ta nhập ký tự thì
nó sẽ không cho nhập mà chỉ hiện mã và kt vừa nhập, còn các trờng
hợp khác thì nó sẽ cho nhập và hiển thị KT, mã của kt vừa nhập.
Giải:
Tạo Form theo mẫu:
Tạo 1 Textbox để nhập DL, 2 Label (L1, L2) để hiển thị mã và kt vừa nhập,
tạo thêm các Label để thông báo (chú thích), tạo 2 Option Buttom (ot1, ot2)
để chọn nhập Ten hay Tuoi.
Và viết lệnh cho các sự kiện:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If ot2.Value = True Then
L1.Caption = Chr(KeyAscii)
L2.Caption = KeyAscii
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then KeyAscii = 0
End If
If ot1.Value = True Then
L1.Caption = Chr(KeyAscii)
L2.Caption = KeyAscii
End If
End Sub
3
Tạo Form gồm 1 HscrollBar (hs), và 1 Textbox để hiển thị giá trị phần
trăm của HscrollBar, giá trị của HscrollBar từ 0 đến 100 và gía trị khi
bắt đầu chạy là 50, khi ta kéo con trỏ thì Textbox hiển thị số % tơng
ứng.
Giải:
Tạo Form theo mẫu:
1 Textbox (txt), vào các sự kiện của HscrollBar chọn:
Max: 100, Min: 0, Value: 50.
Viết các câu lệnh cho các sự kiện nh sau:
Private Sub Form_Load()
txt.Text = hs.Value
End Sub
Private Sub hs_Scroll()
txt.Text = hs.Value
End Sub
Tạo Form gồm: 1 Textbox (txt), 3 Checkbox (c1, c2, c3) để hiển thị in
đậm, in nghiêng, gạch chân cho dòng chữ trong Textbox.
Giải:
Tạo Form 1 Textbox để chọn Lop, khi đó sẽ hiện thông tin của lớp đó và
tạo nút Command để in danh sách của lớp đó.
Giải:
B1: Kích phải vào Project chọn Add > Data Enviconents (Nếu không có
thì vào Add File để tìm)
4
Tạo Form theo mẫu sau:
Với cơ sở DL: Nhom1_quan ly tuyen sinh.mdb với các Table:
- HSTS(masv,hoten, ngaysinh, quequan, . , matinh (tenlop)).
- bangtinh(matinh, tentinh).
Các Bớc làm:
B1: Tạo Form gồm: 1 DataCombo(Name: dc1)(để chọn tên lớp ; 1
DataGrid (Name: dr1: bảng để hiển thị thông tin); 1 nút Command (Name:
cmd1; Caption: IN: nút in).
B2: Viết lệnh:
Tạo 1 Adodc:
kích phải vào Adodc chọn ADODC Propeties sẽ xuất hiện hộp thoại:
kích vào nút Build : chọn Microsoft ject4.0 OLE sau đó chọn Next sẽ
xuất hiện hộp thoại:
5
Ta kích vào dấu , chọn tệp cơ sở DL cần lấy để xử lý (VD: Nhom1_quan
ly tuyen sinh.mdb , sau đó chọn OK> (sau đó copy dòng lệnh ở mục Use
Connection Strinh
VD: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\hoc tap\thuc
hanh\Visual Basic\BAi 1\Nhom1_quan ly tuyen sinh.mdb;Persist Security
Info=False
Chý ý:
Ta nên xoá đờng dẫn địa chỉ để thành:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Nhom1_quan ly tuyen
sinh.mdb;Persist Security Info=False
Rồi Copy để sau này Pate ở sự kiện Form_Load()sau đó ta chọn Nút Cancel
và xoá luôn cả ADODC luôn.
1) ở Modul ta viết:
Option Explicit
Public cnn As ADODB.Connection
Public rs As ADODB.Recordset
Public DataName As String
Sub kiemtraDl(txtcontrol As TextBox, KTgo As Integer)
Dim maxlen As String
Dim skey As String * 1
If KTgo < 32 Or KTgo > 126 Then Exit Sub
maxlen = Right(txtcontrol.Tag, Len(txtcontrol.Tag) - 1)
If Len(txtcontrol.Text) > Val(maxlen) Then
Beep
KTgo = 0
Exit Sub
End If
Select Case Left(txtcontrol.Tag, 1)
Case "A"
If KTgo < 65 Or KTgo > 122 Then
Beep
KTgo = 0
Exit Sub
End If
Case "N"
6
If KTgo < 48 Or KTgo > 57 Then
Beep
KTgo = 0
Exit Sub
End If
End Select
End Sub
Sub SetControls(frm As Form, Edit As Boolean)
Dim ctrl As Control
For Each ctrl In frm
If TypeOf ctrl Is TextBox Then ctrl.Enabled = Edit
Next
frm.cmdnew.Enabled = Not Edit
frm.cmdedit.Enabled = Not Edit
frm.cmddelete.Enabled = Not Edit
frm.cmdsave.Enabled = Edit
frm.cmdcancel.Enabled = Edit
End Sub
Sub ClearTexts(frm As Form)
Dim ctrl As Control
For Each ctrl In frm
If TypeOf ctrl Is TextBox Then ctrl.Text = ""
Next
End Sub
Public Function OpenDB(DataName As String) As Boolean
Dim sConnect As String
OpenDB = True
On Error GoTo thoat
sConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
DataName & ";Persist Security Info=False"
Set cnn = New ADODB.Connection
cnn.ConnectionString = sConnect
cnn.ConnectionTimeout = 10
cnn.CursorLocation = adUseClient
cnn.Open
Exit Function
thoat:
MsgBox Err.Description
OpenDB = False
End Function
2) Khai b¸o ë trªn cïng cña cöa sæ Project … Form:
Dim rs As ADODB.Recordset
Dim cnn As ADODB.Connection
7
3) Vào sự kiện dc1_Change() ******* (dc1: Datacombol để chọn
matinh) viết lệnh:
Private Sub dc1_Change()
Dim ssql As String ******* (khai báo ssql)
If dc1.Text <> "" Then
ssql = "select * from hsts where mahuyen='" & dc1.Text & "'"
Else
ssql = "select * from hsts"
End If
rs.Close **** (rs là biến đợc khai báo ở đầu tiên)
rs.Open ssql, cnn, adOpenDynamic, adLockOptimistic
Set dr1.DataSource = rs
dr1.Refresh
End Sub
4) Vào s kiện Form_Load() viết:
Private Sub Form_Load()
Dim ssql As String
Dim nutnew As Boolean
Set cnn = New ADODB.Connection ******* (cnn là biến đợc khai báo
ở đầu tiên)
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=Nhom1_quan ly tuyen sinh.mdb;Persist Security Info=False"
cnn.Open
cnn.CursorLocation = adUseClient
Set rs = New ADODB.Recordset
rs.Open "select matinh from bangtinh", cnn, adOpenDynamic
Set dc1.RowSource = rs
dc1.ListField = "matinh"
Set rs = Nothing
ssql = "select * from hsts"
Set rs = New ADODB.Recordset
rs.Open ssql, cnn, adOpenDynamic, adLockBatchOptimistic
Set dr1.DataSource = rs
dr1.Refresh
End Sub
B3: Tạo DataReport và liên kết với nút In:
1) - Kích phải chuột vào cửa sổ Project chọn Add > DataEnvironment sẽ
xuất hiện cửa sổ:
8
- Kích phải chuột vào mục Connection1 chọn Add Command và đặt tên
cho Command vừa tạo là cmd1.
Đổi tên cho DataEnvironment là de1.
- Kích phải chuột vào mục Connection1 (nút ở phía trên nút cmd1) chọn
Properties sẽ xuất hiện cửa số sau:
Chọn Microsoft Ject 4.0 OLE và chọn Next
9
Click vào dấu để lấu tệp dữ liệu cần kết nối DL:: VD: chọn:
Nhom1_quan ly tuyen sinh (ở Access.
- Kích phải chuột vào Command cmd1 chọn Properties sẽ xuất hiện hộp
thoại:
Ta chọn Kiểu Table và Table hsts ở lần lợt các mục Database Object và
Object name (để sau này hiển thị các trờng trong nút command (cmd1)) và
chọn nút OK.
Khi đó de1 sẽ có các trờng ở cmd1 nh sau:
- Kích phải chuột vào Project chọn Add > DataReport và đặt tên cho nó là
name: dr1.
- Kéo các trờng cần hiển thị trên Report vào dr1 từ nút command cmd1 (bố
trí 1 cách hợp lý)
Chú ý: để xoá đợc các Label đi kèm với các Textbox khi ta kéo thì ta kích ra
ngoài dr1 rồi kích vào Label cần xoá và ấn phím Delete.
Sau khi kéo xong nên thử chạy 1 mình Report này để xem có lỗi không.
- Đặt thuộc tính cho dr1:
Datasource: de1(tên của DataEnvironment.
DataMember: cmd1 (tên của command chữa dl kéo vào)
2) Kết nối mới nút In:
Vào sự kiện cmd1_Click() viết lệnh:
10
‘Private Sub cmd1_Click()
If de1.rsCommand1.State = 1 Then de1.rsCommand1.Close
de1.Command1 Trim(dt1.Text)
rp1.Show
‘End Sub
Private Sub Form_Load()
Dim ssql As String
Dim nutnew As Boolean
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=Nhom1_quan ly tuyen sinh.mdb;Persist Security Info=False"
cnn.Open
cnn.CursorLocation = adUseClient
Set rs = New ADODB.Recordset
rs.Open "select matinh from bangtinh", cnn, adOpenDynamic
Set dc1.RowSource = rs
dc1.ListField = "matinh"
Set rs = Nothing
ssql = "select * from hsts"
Set rs = New ADODB.Recordset
rs.Open ssql, cnn, adOpenDynamic, adLockBatchOptimistic
Set dr1.DataSource = rs
dr1.Refresh
End Sub
11