Tiếp nội dung phần 1, Giáo trình Lập trình Windows: Phần 2 cung cấp cho người học những kiến thức như: Lập trình với các điều khiển mở rộng; Lập trình cơ sở dữ liệu. Mời các bạn cùng tham khảo!
Trang 1CHƯƠNG 4 LẬP TRÌNH VỚI CÁC ĐIỀU KHIỂN MỞ RỘNG
4.1 Điều khiển Common Dialog
Điều khiển hộp thoại thông dụng (Common Dialog) cung cấp một tập các hộp thoại chuẩn cho các thao tác như mở và lưu trữ tệp tin, thiết lập các tuỳ chọn in, lựa chọn font chữ, màu Điều khiển hộp thoại thông dụng cho phép ta hiển thị 6 loại hộp thoại thông dụng đó là: Open, Save As, Color, Font, Print, Help Điều khiển hộp thoại thông dụng không phải điều khiển nội tại trong hộp công cụ Muốn đưa điều khiển hộp thoại thông dụng ra hộp công cụ, ta thực hiện các thao tác: Từ thực đơn Project ta chọn Components, xuất hiện hộp thoại Components, trong tab Control của hộp thoại ta tích vào mục Microsoft Common Dialog Control, sau đó kích OK Muốn hiển thị hộp thoại thông dụng nào, ta đưa điều khiển hộp thoại thông dụng lên Form, sau đó thiết lập các thuộc tính và gọi phương thức hiển thị hộp thoại phù hợp Các phương thức tương ứng để hiển thị các hộp thoại thông dụng:
Phương thức Hiển thị hộp thoại
4.1.1 Open Dialog, Save Dialog
Hộp thoại Open Dialog dùng để hiển thị hộp thoại Open (mở file) Hộp thoại Save Dialog dùng để hiển thị hộp thoại Save As (lưu file) Hai hộp thoại này có một số thuộc tính chung, thông dụng gồm:
CancelError Dùng để bắt lỗi khi người sử dụng nhấn nút Cancel nếu được
gán giá trị True
DefaultExt Xác định phần mở rộng ngầm định của file
DialogTitle Xác định tiêu đề của hộp thoại
FileName Xác định tên và đường dẫn của tệp tin mà người sử dụng đã
chọn FileTitle Xác định tên tệp tin được chọn, không chứa đường dẫn
Filter Dùng để lọc kiểu tệp tin mà hộp thoại sẽ hiển thị
Trang 2FilterIndex Chỉ ra bộ lọc được sử dụng đầu tiên
InitDir Xác định thư mục sẽ hiển thị khi hộp thoại xuất hiện
Ví dụ:
Viết chương trình sử dụng điều khiển hộp thoại Open và hộp thoại Save As để
thực hiện mở, lưu tập tin văn bản theo thiết kế sau:
Giải:
Bước 1 Thiết kế form theo mẫu bằng cách đưa vào form 4 commandbutton, 1
textbox, sau đó xác định vị trí, kích thước cho các điều khiển cho phù hợp
Bước 2 Thiết lập một số thuộc tính cho các điều khiển như bảng sau:
Bước 3 Mở cửa sổ lệnh của Form1 và gõ vào các dòng lệnh sau:
Dim f As Integer 'khai bao bien tep
Private Sub cmdappend_Click()
Mở tệp văn bản và hiển thị nội dung tệp trên textbox
Mở tệp văn bản và lưu nội dung trong textbox vào tệp
Trang 3Open cdlhopthoai.FileName For Input As #f 'Mo tep de doc
Do While EOF(f) = False
Open cdlhopthoai.FileName For Output As #f
Print #f, Txtnd.Text 'Ghi van ban vao tep
Hộp thoại Color cho phép người sử dụng chọn và hiển thị một màu từ bảng màu
Để hiển thị hộp thoại khi thi hành ta thực hiện như sau:
Thiết lập giá trị cdlCCRGBInit cho thuộc tính Flags
Sử dụng phương thức ShowColor để hiển thị hộp thoại
Trang 4 Sử dụng thuộc tính Color để lấy ra giá trị RGB của màu mà người sử dụng đã chọn
Color Trả về màu đã được người sử dụng chọn
FontBold Cho biết kiểu chữ đậm có được chọn hay không
FontItalic Cho biết kiểu chữ nghiêng có được chọn hay không
FontStrikethru Cho biết kiểu chữ gạch ngang (strikethrough)có được chọn hay
không FontUnderline Cho biết kiểu chữ gạch dưới (underline)có được chọn hay không FontName Trả về tên của font đã được người sử dụng chọn
FontSize Trả về cỡ chữ đã được người sử chọn
Để hiển thị hộp thoại font ta thực hiện như sau:
Thiết lập một trong các giá trị hằng cho thuộc tính Flags:
o cdlCFScreenFonts (fonts màn hình)
o cdlCFPrinterFonts (fonts máy in)
o cdlCFBoth (fonts màn hình và fonts máy in)
Sử dụng phương thức ShowFont để hiển thị hộp thoại
4.2 Điều khiển Image List
Điều khiển này chứa các hình ảnh để dùng với các điều khiển khác như là ListView, TreeView, TabStrip, ToolBar, PictureBox, Image ImageList hỗ trợ các loại file ảnh như : bitmap (*.bmp), biểu tượng (*.ico), GIF (*.gif), JPEG (*.jpg) và con trỏ (*.cur)
Để có thể dùng các điều khiển ImageList, ToolBar, StatusBar, ListView, TreeView trong đề án Visual Basic ta thực hiện như sau: Từ menu Project ta chọn Components xuất hiện hộp thoại Components, trong danh sách các thành phần ta tích mục “Microsoft Windows Common Controls 6.0 (SP6) sau đó nhấn OK Các điều khiển trên được thêm vào hộp công cụ của Visual Basic
Trang 54.2.1 Thêm phần tử ảnh cho ImageList lúc thiết kế
Sau khi đã tạo một thể hiện của điều khiển ImageList lên form ta thực hiện các bước sau:
Nhấn nút phải chuột lên điều khiển ImageList và chọn Properties
Chọn Tab Images để xem trang thuộc tính của điều khiển
Nhấn Insert Picture để hiển thị hộp thoại Select picture
Dùng hộp thoại để tìm tệp tin hình ảnh, rồi nhấn Open Ta có thể chọn nhiều tệp tin cùng lúc
Chỉ ra thuộc tính Key bằng cách chọn hộp Key và nhập một chuỗi
Hình 4.1 Hộp thoại Property Pages
4.2.2 Thêm phần tử ảnh cho ImageList vào lúc thi hành
Để thêm hình ảnh lúc thi hành ta sử dụng phương thức Add của thuộc tính ListImage của đối tượng ImageList với cú pháp như sau:
ListImage.Add([Index], [Key], [Picture])
Trang 64.2.3 Gỡ bỏ phần tử ảnh khỏi ImageList vào lúc thi hành
Để gỡ bở một phần tử ảnh khỏi danh sách, ta sử dụng phương thức Remove của thuộc tính ListImage của đối tượng ImageList và truyền cho nó Index hoặc Key của phần tử cần loại bỏ
Ví dụ:
ImageList1.ListImages.Remove “Cut”
4.2.4 Truy xuất phần tử ảnh trong ImageList
Để truy xuất hình ảnh từ ImageList và gán cho các đối tượng khác ta sử dụng thuộc tính Picture của ListImage
Ví dụ: Lập chương trình sử dụng các điều khiển: ImageList, Image,
Commandbutton, Timer, Commondialog tạo album ảnh bằng cách bổ sung ảnh vào
ImageList lúc thi hành rồi hiển thị ảnh lần lượt 2 giây một ảnh, theo form mẫu:
Giải:
Bước 1 Thiết kế form bằng cách đưa các điều khiểnImageList, Image, Commandbutton, Timer, Commondialog lên form sau đó xác định vị trí, kích thước của các điều khiển cho phù hợp
Bước 2 Xác định giá trị cho một số thuộc tính của các điều khiển theo bảng sau:
Caption Album
Trang 7Interval 2000
5 Commandbutton Name cmdadd Bổ sung ảnh vào
Imagelist Caption Add
6 Commandbutton Name cmddisplay Hiển thị ảnh
Caption Display
7 Commondialog Name Commondialog1
Bước 3 Mở cửa sổ Code của form1 và gõ vào các dòng lệnh sau:
Dim i As Byte
Private Sub cmdAdd_Click()
commondialog1.Filter = "Graphics file|*.jpg"
commondialog1.ShowOpen
imagelist1.ListImages.Add imagelist1.ListImages.Count + 1, , LoadPicture(commondialog1.FileName)
Trang 84.3 Điều khiển MicroSoft Masked Edit
Điều khiển MicroSoft Masked Edit cho phép định dạng dữ liệu nhập theo một định dạng được ấn định Nó không những cung cấp một gợi ý trực quan để người sử dụng nhập liệu trong một trường cụ thể mà còn cung cấp kiểm tra ở mức giao diện người sử dụng, để ngăn cản người sử dụng nhập các thông tin không hợp lệ vào điều khiển
Điều khiển MaskedEdit không có sẵn trong hộp công cụ Nếu muốn sử dụng nó,
ta thực hiện các thao tác sau để đưa điều khiển vào hộp công cụ: Trong Visual Basic, chọn menu Project / Components Hộp thoại Components xuất hiện Trong danh sách các thành phần, tích vào mục “Microsoft MaskedEdit Control 6.0” rồi nhấn
OK
4.3.1 Dùng thuộc tính Mask để quy định mặt nạ nhập
Khi dùng điều khiển MaskedEdit, ta có khả năng ép người sử dụng nhập những thông tin theo một điều kiện nào đó Ví dụ, với trường mã khách hàng, ta có thể ép người sử dụng nhập tự 6 ký tự Các quy tắc để quản lý những gì người sử dụng nhập vào trong một điều khiển Masked Edit được gọi là “Mặt nạ nhập- Masked” Ta dùng thuộc tính Mask của điều khiển để gán mặt nạ nhập cho một điều khiển Masked Edit
Thuộc tính Mask được cấu tạo gồm một chuỗi ký tự thể hiện một mẫu để nhập dữ liệu trong hộp Masked Edit Sau đây là các ký tự có thể được dùng trong chuỗi ký tự:
, Dấu phân cách hàng nghìn
: Dấu phân cách giờ và phút
/ Dấu phân cách ngày tháng
\ Mã escape để xử lý ký tự kế tiếp trong chuỗi tường minh theo tứ tự
từ trái qua phải
& Dành chỗ cho ký tự
> Chuyển đổi ký tự thành ký tự in hoa
< Chuyển đổi ký tự thành ký tự thường
A Yêu cầu ký tự thuộc bảng chữ cái hay chữ số
a Tuỳ chọn ký tự thuộc bảng chữ cái hay chữ số
Trang 9C Tuỳ chọn ký tự hay khoảng trắng
lệ sẽ không được chấp nhận
4.3.2 Dùng thuộc tính Format để thay đổi hiển thị thông tin
Ngoài việc sử dụng thuộc tính Mask để yêu cầu người sử dụng nhập thông tin theo một điều kiện nào đó, ta còn có thể chỉ ra thông tin trong điều khiển sẽ được định dạng như thế nào trên màn hình Ta thực hiện điều này bằng cách sử dụng thuộc tính Format của điều khiển Masked Edit Ví dụ, nếu một trường chứa 1 số điện thoại ta định hiển thị với dấu ngoặc và dấu gạch nối, ta dùng chuỗi Format như sau: (# # #) # # # - # # # #
Điều này có nghĩa là người sử dụng chỉ cần nhập số điện thoại 10 chữ số Các ký
tự định dạng mở rộng, như là dấu ngoặc, được hiển thị tự động
4.4 Điều khiển ToolBar
Điều khiển ToolBar là một thanh công cụ chứa các nút (botton) mà ta có thể điều khiển được Ta có thể chèn hình ảnh lên các nút nhờ đối tượng ImageList Điều khiển ToolBar nằm trong nhóm các điều khiển thông dụng của Windows, nó cùng nhóm với điều khiển ImageList
4.4.1 Thêm một nút lên thanh ToolBar
Kích chuột phải vào điều khiển ToolBar và chọn Properties, hộp thoại Property Pages sẽ xuất hiện với 3 tab: General, Buttons và Picture Chọn tab Button sau đó kích vào nút Insert Button để thêm một nút trên thanh ToolBar Ta cần đưa vào thuộc tính Key để phân biệt giữa các nút
4.4.2 Chèn hình ảnh từ ImageList lên các nút
Trong tab General của hộp thoại Property Pages chọn thuộc tính Imagelist là tên đối tượng ImageList mà ta đã đặt lên Form
Trang 10Trong tab Buttons, thuộc tính Image sẽ lấy chỉ số của hình cần chèn được đặt trong ImageList, chỉ số này cho biết hình cần chèn là hình nào
4.2.3 Các thuộc tính chính của Button trên ToolBar
Trong tab Buttons thể hiện thuộc tính của các nút, Trong đó:
Index: Xác định chỉ số của Button
Caption: Xác định xâu ký tự hiển thị trên Button
Key: Là xâu ký tự có thể dùng để phân biệt các Button
Style: Xác định dạng hiển thị của Button, nó có thể nhận một trong các giá trị
0 – tbrDefault: Dạng mặc định của Button
1 – tbrCheck: Giống như CheckBox, nó lún xuống khi kích lần thứ nhất và trở về trạng thài ban đầu khi nhấn lần nữa
2 – tbrButtonGroup: Khi ta lập 2 nút trở lên thành một nhóm thì khi kích nút nào thì nút đó sẽ nhấn xuống, khi kích một nút khác trong nhóm thì nút được kích sẽ lún xuống và nút đang lún trước đó sẽ nổi lên
3 - tbrSeparator: Tạo một dấu gạch ngăn cách giữa các nút hay nhóm nút
4 - tbrPlaceHolder: Cho phép làm vật chứa cho nút điều khiển khác
5 – tbrDropDown: Nút có thêm một phím mũi tên, cho phép liệt kê một số nút khác khi kích vào mũi tên này
Value: Xác định trạng thái của Button khi chương trình thi hành là nhấn hay chưa được nhấn, nó nhận một trong hai giá trị:
0 – tbrUnpressed: Mặc định nút chưa được nhấn
1 – tbrPressed: Mặc định nút được nhấn
4.5 Điều khiển TreeView
Là điều khiển dùng để trình bày cấu trúc tổ chức của một đối tượng như cấu trúc cây thư mục, tổ chức một cơ quan, một đơn vị
4.5.1 Các thuộc tính
Nodes: Thuộc tính quan trọng nhất của TreeView, là một danh sách các đối tượng
Node (nút) Mỗi Node được xem là một cây con, có các nút con, nút cháu
ImageList: Tham chiếu đến đối tượng ImageList chứa danh sách hình ảnh liên kết
với TreeView Ta có thể gán giá trị cho thuộc tính này trong hộp thoại Property Pages hoặc bằng câu lệnh như sau:
Set TreeView1.ImageList = ImageList1
CheckBoxes (True/False): Làm xuất hiện CheckBox bên trái mỗi nút
LabelEdit: Xác định chế độ sửa giá trị nhãn (0-tvwAutomatic, 1-tvwManual)
Trang 11LineStyle: Xác định kiểu đường nối giữa nút cha và các nút con (0-tvwTreeLines,
1-tvwRootLines)
SelectedItem: Trả về một Node được chọn trong TreeView hoặc dùng để chọn một
Node trong TreeView
Chọn nút gốc trong TreeView:
Set TreeView1.SelectedItem = TreeView1.Nodes(“Root”)
In giá trị nút đang được chọn
Dim nd As Node Set nd = TreeView1.SelectedItem Debug.Print nd.Text
Các thuộc tính của đối tượng Node
Child: Tham chiếu đến nút con đầu tiên
Children: Trả về số con
Expanded (True/False): Làm xuất hiện/ẩn các nút con của một nút, tương
đương với việc kích chuột vào nút +/- để triển khai/thu gọn một nút
FirstSubling: Tham chiếu đến nút con đầu tiên ở cùng cấp
LastSubling: Tham chiếu đến nút con cuối cùng ở cùng cấp
Next:Tham chiếu đến nút con tiếp theo ở cùng cấp
Previous:Tham chiếu đến nút con liền trước ở cùng cấp
Parent: Tham chiếu đến nút cha của một nút
Root: Tham chiếu đến nút gốc
Sorted: Sắp xếp các nút cùng cấp theo thứ tự Alphabet
Text: Chuỗi xuất hiện bên trái của nút
Index: Số thứ tự của nút trong mảng chứa các nút cùng cấp
Chương trình con sau in ra nhãn (text) của nút con của một nút
Private Sub List Children(pnod As Node)
Dim pnodeCurrent As Node Set pnodeCurrent = pnod.Child For i = 1 to pnod.Children
Debug.Print pnodCurrent.Text Set pnodeCurrent = pnodeCurrent.Next Next
End Sub
In các nút con của nút gốc
Private Sub Command1_Click()
Dim nd As Node Set nd = TreeView1.Nodes(“Root”) ListChildren nd
End Sub
Trang 124.5.2 Phương thức
Thêm một nút vào danh sách
Add [Relative][,Relationship][,Key][,Text][,Image][,SelImage]
Trong đó:
Relative: Nhận giá trị là Key hoặc Index của nút mà nút mới được thêm vào Quan
hệ của nút mới thêm vào và nút đó như sau:
0-tvwFirst: Nút được thêm vào là nút đầu tiên so với các nút cùng cấp với nút được cho trong tham số Relative
1-tvwLast: Nút được thêm vào là nút cuối cùng so với các nút cùng cấp với nút được cho trong tham số Relative
Key: Chuỗi văn bản duy nhất cho mỗi nút
Text: Chuỗi văn bản xuất hiện bên trái mỗi nút
Image: Hình ảnh của nút ở trạng thái bình thường
SelImage: Hình ảnh của nút ở trạng thái được chọn
Remove Index/Key: Xoá nút được xác định bởi Index/Key
Clear: Xoá toàn bộ cây trong TreeView
4.5.3 Sự kiện
NodeClick: Là sự kiện xảy ra khi người sử dụng kích chuột vào một nút
4.6 Điều khiển MultiMedia
Điều khiển Multimedia MCI quản lí việc ghi và phát các tệp tin đa phương tiện trên thiết bị giao tiếp điều khiển truyền thông (Media Control Interface - MCI) Điều khiển này chứa một loạt các nút bấm để phát ra các lệnh tới các thiết bị như CD-ROM, audio, video v.v
Điều khiển Multimedia không có sẵn trong hộp công cụ Để đưa điều khiển Multimedia vào hộp công cụ, ta làm như sau:
Trang 13- Trong Visual Basic, chọn menu Project / Components Hộp thoại Components xuất hiện
- Trong danh sách các thành phần, tích chọn “Microsoft Multimedia Control 6.0”
- Nhấn OK Điều khiển Multimedia (MMControl) được thêm vào hộp công cụ của Visual Basic
Nháy đúp chuột vào điều khiển MMControl để đưa điều khiển lên Form Khi đó Form có dạng:
Với các nút tương ứng là: Prev, Next, Play, Pause, Back, Step, Stop, Record, và Eject
Sau khi nạp điều khiển MCI vào đề án, bạn đặt nó lên biểu mẫu và định cỡ nó theo nhu cầu Do điều khiển MCI có thể truy xuất nhiều kiểu phương tiện khác nhau, chúng ta phải báo cho điều khiển biết sẽ dùng kiểu nào bằng cách thiết lập giá trị cho thuộc tính DeviceType một trong các giá trị sau:
CDAudio CD audio DAT Digital Audio Tape DigitalVideo Digital video
Overlay Overlay Scanner Scanner Sequencer Sequencer
AVIVideo AVI Videodisc Videodisc Waveaudio Wave audio
Sau khi xác lập DeviceType, ta phải mở thiết bị sử dụng lệnh Open Lệnh này có
cú pháp như sau:
MMControl1.Command = “Open”
Trong đó, MMControl1 là tên của điều khiển của MMControl
Thông thường trước khi sử dụng lệnh Open ta thiết lập giá trị cho một số thuộc tính Ví dụ:
Trang 14bị MCI Tính chất này được ấn định theo True nếu nó được phép và False nếu như không Giá trị của các tính chất này có thể thay đổi trong các chương trình, nhưng điều quan trọng phải biết đó là nếu dự định xác lập các giá trị này, chúng phải được
Ta cũng có thể phát các lệnh khác tuỳ ý, như Pause và Stop Để phát các lệnh này,
ta dùng cú pháp giống như với lệnh Play
Khi phát xong kiểu phương tiện mong muốn, ta phải đóng thiết bị, cũng như phải đóng một tập tin Visual Basic sau khi mở nó để bảo toàn tài nguyên Để đóng thiết
bị, ta phát lệnh Close, giống cú pháp của lệnh Play ở trên
4.7 Menu
Có hai loại menu thường gặp là menu thả xuống (drop-down menu) và menu hiện lên (pop-up menu) Chúng ta thường dùng menu drop-down làm menu chính cho chương trình, nó thường nằm theo chiều ngang, nếu ta nhấp chuột vào một mục chọn (menu command) thì chương trình sẽ thả xuống một menu với những mục chọn con (MenuItems) nằm dọc theo chiều thẳng đứng Nếu ta nhấp chuột lên mục chọn con nào đó có dấu hình tam giác nhỏ bên phải thì chương trình sẽ hiện lên một
Trang 15menu như trong ví dụ sau đây: Nhấp chuột vào mục chọn đơn “Mầu sắc” chương trình sẽ thả xuống một menu (drop-down menu); nhấp chuột vào mục chọn con
“Chọn mầu”, chương trình sẽ hiện lên một menu (pop-up menu)
Ví dụ:
Chúng ta quy ước gọi lệnh đơn (mục chọn đơn) là Menu Command, và lệnh con (mục chọn con) là MenuItems Thiết kế menu gồm 2 công việc:
- Thiết kế giao diện
- Viết lệnh cho các thủ tục đáp ứng sự kiện chọn các mục menu
Chúng ta sẽ trình bày phần này bằng chương trình chọn mầu nền cho Form và thay đổi kích thước của Form Chương trình sẽ cung cấp một menu gồm có 2 trình đơn: “Mầu sắc” và “Kích thước” Trình đơn “Mầu sắc” cho phép ta thay đổi mầu nền của Form, trình đơn “Kích thước” cho phép ta thay đổi kích thước Form
- Trong trình đơn “Mầu sắc” có 2 mục là “Chọn mầu” và “Thoát” Khi chọn mục
“Chọn mầu” trong trình đơn “Mầu sắc”, một menu xuất hiện với 3 mục là “Xanh”,
“Đỏ” và “Trắng”, đay là các mầu ta có thể chọn làm mầu nền Form Khi ta chọn mục “Thoát” trong trình đơn “Mầu sắc”, chương trình kết thúc
- Trong trình đơn “Kích thước” có 2 mục là “Phóng to” và “Thu nhỏ” Khi chọn mục “Phóng to”, kích thước của Form sẽ phóng to chiếm toàn bộ màn hình Khi chọn mục “Thu nhỏ”, kích thước của Form sẽ thu nhỏ như lúc ban đầu
a) Thiết kế giao diện
Bước 1 Chọn một Form để thiết kế menu Ví dụ Form có tên là frmMenu, có thuộc tính Caption là “Chon mau nen va kich thuoc Form”
Bước 2 Gọi Menu Editor bằng 2 cách:
Cách 1: Trên menu của Visual Basic chọn Tools -> chọn mục Menu Editor
Trang 16Hình 4.2 Lệnh đơn Menu Editor Cách 2: Nhấn nút lệnh Menu Editor ( ) trên thanh công cụ chuẩn
Hình 4.3 Công cụ Menu Editor Bước 3 Tạo các mục chọn trên menu:
Sau khi gọi Menu Editor thì cửa sổ “Menu Editor” sẽ xuất hiện:
Hình 4.4 Hộp thoại Menu Editor
- Gõ tên mục chọn trong hộp gõ văn bản Caption Ví dụ ta gõ “&Mầu sắc” Nếu muốn dùng phím thay thế khi sử dụng menu, ta có thể đặt dấu & ở ngay trước ký tự
mà ta muốn trong phần Caption này, ví dụ nhấn Alt-M sẽ cho chọn mục “Mầu sắc”
Để tạo gạch ngang phân cách giữa các mục chọn, tại hộp gõ văn bản ta gõ dấu trừ
“-“
Menu Editor
Trang 17- Gõ tên mục chọn trong hộp văn bản “Name”, quy ƣớc có “mnu” ở tên để phân biệt với các đối tƣợng khác trong Form Ví dụ, đặt tên cho mục chọn đơn là
Nếu muốn tạo MenuItems có cấp thấp hơn nữa thì ta lại tiếp tục nhấp mũi tên sang phải , MenuItems lại thụt tiếp một bậc nữa
Trang 18Tương tự, nếu ta nhấp mũi tên sang trái thì MenuItems đang chỉnh sửa sẽ mất
4 dấu chấm “….” phía trước, tức là nó đã được trồi ra một bậc
Ta tạo các MenuItems cho Menu Command “Mầu sắc” gồm: “Chọn mầu”, dấu gạch ngang và “Thoát” Menu Command “Kích thước” có các MenuItems là “Phóng to” và “Thu nhỏ” bằng cách tạo như các Menu Command rồi nhấp vào mũi tên sang phải để nó trở thành các MenuItems, ta cũng có thể thay đổi thứ tự các mục chọn trong menu sử dụng các phím mũi tên lê, mũi tên xuống Để chèn một dòng mới vào menu đã có sẵn, ta đặt thanh sáng ở dòng muốn chèn vào trước nó rồi nhấn vào nút “Insert” Để xoá một dòng trong menu, ta chọn dòng muốn xoá rồi nhấn nút
“Delete”
Mỗi MenuItems có thêm một tính năng nữa, đó là ta có thể tạo phím tắt cho nó trong mục “Shortcut” Ví dụ, ta có thể dùng phím tắt Ctrl-E để thay cho việc chọn lệnh đơn “Thoát”
Có một số tuỳ chọn trong Menu Editor chúng ta có thể chọn như
Mục “Visible” dùng để hiện/ẩn một mục chọn trong menu
Mục “Enable” dùng để cho phép/vô hiệu hoá một mục chọn trong menu
Mục “Check” dùng để thêm/không thêm dấu kiểm bên trái một mục chọn trong menu khi nó được chọn
Sau đây là bảng danh mục các mục chọn trên menu của Form “frmMenu”:
Chọn mầu ….&Chọn mầu mnuchonmau
Trang 19Dấu gạch ngang ….- mnugach
Kích thước &Kích thước mnukichthuoc
Ghi chú: Muốn hiển thị được menu tiếng Việt, ta chọn bộ mã TCVN3 để gõ tên
mục chọn trong Menu Editor Trước khi chạy chương trình ta thiết lập thuộc tính font cho menu của hệ thống như sau: Kích phải chuột vào màn hình nền, chọn Properties để hiển thị hộp thoại Display Properties, chọn Tab Appearance, rồi nhấn nút Advanced, trong mục Item chọn Menu, sau đó chọn font vntime, cỡ 12 rồi nhấn nút OK, tiếp đó nhấn nút Apply và cuối cùng là nhấn nút OK Đừng bận tâm nếu trong hộp thoại Menu Editor không hiển thị đúng tiếng Việt
b) Viết lệnh cho các thủ tục đáp ứng sự kiện chọn (Click) mục chọn
Mỗi mục chọn trên menu có một thủ tục đáp ứng sự kiện Click của người sử dụng chương trình Ví dụ, khi người sử dụng chọn mục “Thoát” trong trình đơn “Mầu sắc” thì thủ tục mnuthoat_Click( ) được thực hiện
Thủ tục Form_Load ( )
Thủ tục này thực hiện ngay khi ta khởi động chương trình Thủ tục làm nhiệm vụ
ẩn đi 2 mục “Trắng” và “Thu nhỏ” bằng cách đặt thuộc tính “Enable” có giá trị là False
Private Sub Form_Load()
Private Sub mnuDo_Click()
frmMenu.BackColor = vbRed ' Đặt mầu nền là đỏ
mnudo.Enabled = False ' Vô hiệu hoá mục chọn “Đỏ”
mnuxanh.Enabled = True ' Cho phép sử dụng mục chọn “Xanh”
mnutrang.Enabled = True ' Cho phép sử dụng mục chọn “Trắng”
End Sub
Thủ tục mnuTrang_Click ( )
Trang 20Tương tự thủ tục mnuDo_Click(), nhưng đổi mầu nền của Form thành mầu trắng
và cho vô hiệu hoá mục chọn “Trắng”
Thủ tục mnuXanh_Click ( )
Tương tự thủ tục mnuDo_Click(), nhưng đổi mầu nền của Form thành màu xanh
và cho vô hiệu hoá mục chọn “Xanh”
Thủ tục mnuTo_Click ( )
Thủ tục thực hiện khi ta chọn mục “Phóng to” Thủ tục làm nhiệm vụ đưa cửa sổ Form về dạng lớn và vô hiệu hoá mục chọn “Phóng to” đi, đồng thời bật mục “Thu nhỏ”
Private Sub mnuTo_Click()
frmMenu.WindowState = 2 'Đặt thủ tục Form ở dạng lớn
mnuTo.Enabled = False 'Vo hiệu hoá mục chọn “Phóng to”
mnunho.Enabled = True 'Cho phép đổi cửa sổ Form sang dạng nhỏ
4.8 Điều khiển RichTextBox
Điều khiển RichTextBox cho phép người sử dụng nhập và sửa văn bản đồng thời cũng tạo ra nhiều đặc tính định dạng hơn điều khiển TextBox thông thường
Điều khiển RichTextBox tạo ra một số các thuộc tính mà ta có thể sử dụng để thay đổi định dạng của bất cứ phần nào thuộc văn bản trong điều khiển Sử dụng các thuộc tính này ta có thể thay đổi màu chữ, chữ đậm hoặc nghiêng, tạo chỉ số trên, chỉ
Trang 21số dưới Ta cũng có thể điều chỉnh định dạng đoạn như canh lề trái, lề phải của đoạn
Muốn sử dụng điều khiển RichTextBox thì trên thanh công cụ phải có biểu tượng Trường hợp nó không xuất hiện ta thực hiện như sau: Từ thực đơn Project ta chọn Components, xuất hiện hộp thoại Components, trong tab Control của hộp thoại
ta tích chọn mục Microsoft Rich TextBox Control 6.0 (SP4) sau đó nhấn nút OK
Có thể sử dụng RichTextBox như một hộp văn bản (TextBox) có khả năng lưu trữ cao cho phép một ứng dụng có thể đọc các tệp tin văn bản có kích thước lớn, cũng
có thể dùng RichTextBox để tạo một bộ soạn thảo văn bản với đầy đủ các đặc tính vào một ứng dụng bất kì
4.8.1 Các thuộc tính
SelFontName Xác định tên Font chữ cho phần văn bản được chọn trong
RichTextBox SelFontSize Xác định cỡ chữ (Font Size) cho phần văn bản được chọn
trong RichTextBox SelFontColor Xác định màu chữ (Font Color) cho phần văn bản được
chọn trong RichTextBox SelColor Xác định màu chữ (Font Color) cho phần văn bản được
chọn trong RichTextBox SelBold Xác định chữ đậm (Bold) cho phần văn bản được chọn
trong RichTextBox SelItalic Xác định chữ nghiêng (Italic) cho phần văn bản được chọn
trong RichTextBox
4.8.2 Các phương thức
LoadFile Filename: Mở và đọc file có định dạng RTF và ASCII
SaveFile Filename: Mở và ghi file có định dạng RTF và ASCII
SelPrint- In tất cả hoặc một phần của văn bản trong điều khiển
Add- Nhúng các đối tượng như: ảnh bitmap, các biểu tượng (Icons) vào trong điều khiển khi thi hành Đây là phương thức của đối tượng OLEObject của RichTextBox
4.9 Câu hỏi trắc nghiệm
1) Chọn loại hộp thoại mà điều khiển CommonDialog có thể hiển thị được
a Open
Trang 22b Font
c Color
d Cả 3 loại hộp thoại trên
2) Chọn loại định dạng file ảnh mà điều khiển ImageList có thể chứa:
Trang 234.9 Bài tập
Bài tập 1: Tạo một chương trình hiển thị một danh sách chọn lựa cho người dùng
trong một ListBox, sau đó xử lý với cấu trúc quyết định Select Case
Mục đích của điều khiển sự kiện này là hiển thi một danh sách các quốc gia, sau đó hiển thị một thông điệp chào mừng bằng ngôn ngữ bản xứ khi người dùng chọn quốc gia của họ Chẳng hạn:
Tiếng Anh: Hello, programmer
Tiếng Đức: Hallo, programmierer
Tiếng Tây Ban Nha: Hola, programador
Tiếng Ý: Ciao, programmatori
Bài tập 2: Lập trình sử dụng các hộp thoại thông dụng : Open, Save, Font, Color để
mở, lưu tập tin văn bản, thay đổi font, màu của chữ trong hộp văn bản (RichTextbox) theo mẫu:
Bài tập 3: Lập chương trình sử dụng điều khiển Toolbar tạo một thanh công cụ trên
đó có 3 nút thực hiện các chức năng sao chép, cắt, dán đoạn văn bản trong Richtextbox sử dụng Clipboard theo mẫu sau:
Trang 24Chú ý: Hình ảnh của mỗi nút trên Toolbar do sinh viên tự lựa chọn cho phù hợp
Bài tập 4: Viết chương trình trình chiếu ảnh tự động cứ 2 giây một ảnh sử dụng điều
khiển Timer, ImageList và điều khiển Image như hình sau:
Bài tập 5: Viết chương trình trò chơi Puzzle Trò chơi được mô tả như sau: Không
gian chơi gồm 16 ô số, được xếp trên 4 hàng, mỗi hàng gồm 4 cột Trong đó có 15 ô
có giá trị từ 1 đến 15 được phân bổ theo thứ tự ngẫu nhiên và 1 ô trống, như hình sau
Trang 25Người chơi phải tiến hành sắp lại các ô số này theo thứ tự để được kết quả như hình
thì trò chơi kết thúc Chương trình hiển thị câu chúc mừng: “Chuc mung! Ban da thanh cong!!!” & tổng thời gian chơi
Người chơi có thể thực hiện chơi lại bằng cách chọn File\New Chương trình sẽ
tự động xáo lại các ô chứa số & ô trống theo thứ tự ngẫu nhiên Việc sắp xếp lại các
ô số được thực hiện bằng cách sử dụng ô trống Người dùng có thể chuyển một số từ các ô lân cận đến ô trống bằng cách nhấp chuột lên ô số đó Chú ý rằng người dùng chỉ có thể di chuyển các số thuộc những ô lân cận trống
Bài tập 6: Lập chương trình quản lý cây gia phả của một dòng họ sử dụng điều
khiển TreeView, cây gia phả được hiển thị dưới dạng cây thư mục
Bài tập 7: Thiết kế chương trình như ứng dụng Notepad của Windows Yêu cầu
Thiết kế giao diện như sau:
Xử lý các sự kiện
Trang 26 Mỗi khi Form thay đổi kích thước, TextBox cũng thay đổi theo cho phù hợp với Form
New
Open, Save, Save As: mở hộp thoại Common Dialog cho phép chọn tập tin để
mở hay lưu Sử dụng đối tượng FileSystemObject để thao tác với tập tin văn bản
Mỗi khi người dùng thay đổi nội dung của một tập tin, sau đó họ chọn Exit để đóng ứng dụng lại; một hộp thông điệp (Message Box) sẽ mở ra hỏi có lưu tập tin hay không?
Trang 27CHƯƠNG 5 LẬP TRÌNH CƠ SỞ DỮ LIỆU 5.1 Nhắc lại một số khái niệm về cơ sở dữ liệu
5.1.1 Khái niệm cơ sở dữ liệu
Cơ sở dữ liệu là một kho chứa thông tin Có nhiều loại cơ sở dữ liệu, nhưng ở đây chúng ta chỉ đề cập đến cơ sở dữ liệu quan hệ (relational database) là loại cơ sở dữ liệu phổ biến nhất hiện nay Cơ sở dữ liệu quan hệ (CSDLQH) là kho thông tin có các đặc tính sau:
- CSDLQH chứa dữ liệu trong các bảng (table) được cấu tạo bởi các bản ghi (record)
và các trường (field)
- CSDLQH cho phép lấy về (hay truy vấn) các tập hợp dữ liệu con từ các bảng
- CSDLQH cho phép kết nối các bảng dữ liệu với nhau để truy cập các bản ghi liên quan với nhau chứa trong các bảng khác nhau
5.1.2 Engine (bộ máy) CSDL
Chức năng cơ bản của một CSDL được cung cấp bởi một bộ máy (Engine) cơ sở
dữ liệu, đó là một hệ thống chương trình quản lý cách thức chứa và trả về dữ liệu
5.1.3 Bảng (Table), Trường (Field), Bản ghi (Record)
CSDL được cấu tạo từ các bảng (table) Có thể hình dung bảng như là một lưới hình chữ nhật ở đó trường (field) là tên của các cột của lưới chữ nhật, còn bản ghi (record) là một dòng của lưới chữ nhật, mỗi dòng là một bộ giá trị của các trường
Ví dụ: Bảng (table) danh sách học sinh gồm 4 cột hay là trường (field) là MaHS (mã
học sinh), HoTen (họ tên), NamSinh (năm sinh), (điểm thi):
Bảng có cấu trúc được định nghĩa sẵn và chứa dữ liệu phù hợp với cấu trúc này
Để tạo một cơ sở dữ liệu, trước hết ta phải xác định thông tin gì cần theo dõi Sau
đó, ta thiết kế cơ sở dữ liệu, tạo bảng chứa các trường định nghĩa kiểu dữ liệu sẽ có
Trang 28Sau khi tạo ra cấu trúc cơ sở dữ liệu, tạo bảng chứa các trường định nghĩa kiểu dữ liệu sẽ có
Ví dụ: ta tạo các bảng Danh sách khách hàng (tblDS_KH) và bảng Đơn đặt hàng
(tblD_DH) như sau:
Bảng tblDS_KH
Bảng tblD_DH
Ta có thể kết nối hai bảng thông qua trường Makh Đây là mối quan hệ một - nhiều, đối với một bản ghi trong tblDS_KH, có thể không có, hoặc có nhiều bản ghi tương ứng trong bảng tblD_DH
Trang 295.2 Visual Data Manager
5.2.1 Tạo cơ sở dữ liệu
Để tạo cơ sở dữ liệu dùng Visual Basic, ta có thể dùng tiện ích gọi là Visual Data Manager (VisData) Để chạy VisData, ta thực hiện các bước sau :
Bước 1 Từ menu của Visual Basic chọn mục Add-ins, VisData, cửa sổ VisData sẽ xuất hiện
Hình 5.1 Cửa sổ Visual Data Manager (VisData) Bước 2 Từ menu của VisData, chọn File, New Từ menu con, chọn Microsoft Access, Version 7.0 MDB Một hộp thoại tập tin xuất hiện Chọn thư mục ta muốn lưu cơ sở dữ liệu mới rồi gõ tên cơ sở dữ liệu chẳng hạn Education Nhấn chuột vào nút Save Cơ sở dữ liệu mới được tạo và VisData sẽ hiển thị một vài cửa sổ cho phép
ta làm việc với cơ sở dữ liệu được hiển thị như hình dưới đây
Hình 5.2 Các thành phần trong cửa sổ VisData Cửa sổ DataBase của VisData chứa tất cả các thành phần của cơ sở dữ liệu Trong cửa sổ này ta có thể xem các thuộc tính, kiểm tra các bảng và các phần tử khác và
Trang 30thêm các thành phần mới vào cơ sở dữ liệu Để xem các thuộc tính, ta nhấn chuột vào dấu cộng ở bên trái của mục Properties Mục này sẽ mở ra như hình dưới đây
Hình 5.3 Cửa sổ Data Window
5.2.2 Tạo bảng
Để tạo một bảng cơ sở dữ liệu ta thực hiện các bước sau:
Bước 1 Trong cửa sổ Database của VisData, nhấn chuột phải vào Properties Một menu ngữ cảnh của cửa sổ sẽ xuất hiện, chọn New Table Hộp thoại Table Structure
sẽ xuất hiện như hình dưới đây
Hình 5.4 Hộp thoại Table Structure Bước 2 Khai báo tên bảng (Table name);
Bước 3 Khai báo danh sách trường (Field): Tên trường, kiểu dữ liệu, độ rộng
Trang 31Ví dụ, ta sẽ tạo cấu trúc bảng để chứa danh sách khách hàng bằng cách thực hiện các thao tác:
- Gõ Student trong ô Table Name
- Nhấn chuột vào nút Add Field Hộp thoại Add Field sẽ xuất hiện cho phép ta khai báo tên trường, kiểu dữ liệu và độ rộng của trường Hộp thoại Add Field được hiển thị như hình dưới đây:
Hình 5.5 Hộp thoại Add Field Trong ô Name gõ ID Đây sẽ là tên của trường mà ta tạo trong bảng Student Trong ô size gõ 5 Điều này chỉ ra rằng mã sinh viên có thể lên đến 5 ký tự, nhưng không thể dài hơn Chọn Fixed Field để chỉ ra rằng đây không phải là trường có chiều dài biến đổi, rổi nhấn nút OK Trường được thêm vào cấu trúc cơ sở dữ liệu Bằng các thao tác tương tự sử dụng Add Field, ta thêm các trường: Name, Age, Sex, Add vào bảng Student Khi ta hoàn tất việc nhập trường, nhấn nút bấm Close
Bước 4 Chỉ định chỉ mục và khoá chính
Một chỉ mục là một thuộc tính ta có thể gán cho một trường để tạo sự dễ dàng cho
bộ máy cơ sở dữ liệu khi lấy về thông tin chứa trong trường đó Ví dụ, trong cơ sở
dữ liệu theo dõi sinh viên, ứng dụng có thể tìm kiếm các sinh viên theo họ tên sinh viên hoặc mã sinh viên Do đó, cần thiết phải tạo các chỉ mục trên những trường này
để giúp cho quy trình tìm bản ghi dựa trên các trường này nhanh hơn
Khoá chính là kiểu chỉ mục đặc biệt Một trường được coi là một khoá chính của bảng phục vụ cho việc xác định duy nhất bản ghi Vì vậy, không như các kiểu chỉ mục khác, sẽ không có hai bản ghi trên cùng một bảng mà có cùng giá trị cho trường khoá chính Tương tự, khi thiết kế một trường làm khoá chính, không có bản ghi nào chứa giá trị rỗng, giá trị NULL ở trường này Khi chỉ ra một trường làm khoá chính của bảng, ta có thể tạo mối quan hệ giữa bảng này với các bảng khác trong cơ sở dữ liệu
Trang 32Mỗi bảng mà ta thiết kế phải có ít nhất một khoá chính, và nó phải được đánh số chỉ mục trên những trường mà ta mong đợi sẽ được truy vấn nhiều nhất Trong trường hợp của bảng Student khoá chính sẽ là trường ID Các chỉ mục phụ là trường Name
Để tạo các chỉ mục và các khoá chính, ta thực hiện các thao tác sau :
- Trong hộp thoại Table Structure, nhấn chuột vào nút Add Index Hộp thoại Add Index xuất hiện
Hình 5.6 Hộp thoại Add Index to
- Gõ IDindex trong hộp văn bản Name
- Nhấn đúp chuột vào trường ID trong danh sách các trường có sẵn ID được thêm vào danh sách các trường có chỉ mục Hộp đánh dấu Primary và Unique phải được chọn theo mặc định
- Nhấn OK, giờ đây ta có thể tạo thêm chỉ mục cho trường Name
- Gõ tên chỉ mục Nameindex trong hộp văn bản Name
- Nhấn đúp chuột trên trường Name trong danh sách các trường hiện có, Name được thêm vào trong danh sách các trường có chỉ mục
- Bỏ chọn các hộp đánh dấu Primary và Unique, sau đó nhấn nút OK
- Nhấn nút chuột Close Ta sẽ gặp lại hộp hội thoại Table Structure
Bước 5 Tạo bảng, nhấn nút Build the Table Bảng sẽ được tạo và thêm vào cửa sổ Database của VisData
5.2.3 Tạo form dữ liệu tự động
Để tạo form dữ liệu (frmStudent) tự động, ta sử dụng công cụ Data Form Designer của VisData Ta thực hiện các bước sau:
Bước 1 Từ cửa sổ VisData, chọn lệnh đơn Utility/Data Form Designer
Trang 33Hình 5.7 Mục chọn Data Form Designer tạo Form tự động xuất hiện cửa sổ Data Form Designer
Bước 2 Từ cửa sổ Data Form Designer, nhập tên Student trong mục Form Name, chọn bảng Student trong mục RecordSource Danh sách trường trong bảng Student xuất hiện trong mục Available Fields
Hình 5.8 Hộp thoại Data Form Designer Bước 3 Chọn các trường sẽ thể hiện trên form
Trang 34Bước 4 Nhấn nút Build Form, ta thu form frmStudent như sau:
Bước 5 Chỉnh sửa form cho hợp lý
5.3 Các đối tượng truy cập dữ liệu
Ta có thể sử dụng một điều khiển để truy cập dữ liệu trong cơ sở dữ liệu Có một
số điều khiển thường được sử dụng như: TextBox, DBGrid, CheckBox, ComboBox,…
Trang 355.3.2 Sử dụng DBGrid
So với TextBox thì DBGrid thuận tiện hơn nhiều vì nó cho hiển thị nhiều trường
và nhiều bản ghi phụ thuộc vào số cột có thể chọn và số bản ghi của tệp dữ liệu Điều khiển này cho phép ta hiển thị dữ liệu dưới dạng bảng
Để hiển thị dữ liệu bằng một DBGrid ta thực hiện như sau:
Chọn điều kiển DBGrid trong hộp công cụ và vẽ điều khiển này lên Form Nếu điều khiển này chưa có trong hộp công cụ thì ta bổ sung vào hộp công cụ bằng các cách sau: Vào thực đơn Project chọn Components Sẽ xuất hiện hộp thoại cho phép ta bổ sung các điều khiển vào ToolBox Trong hộp thoại Components
ta chọn tab Control sau đó chọn “Microsoft Data Bound Grid Control 5.0 (SP3)” Điều khiển này có mặt ngay trong hộp TextBox
Tại thuộc tính DataSource ta chọn tên một điều khiển dữ liệu đã có
Tại thuộc tính DataMode chọn Bound Khi đó nếu nguồn dữ liệu của điều khiển
dữ liệu mà thay đổi thì dữ liệu trong bảng cũng thay đổi theo
DataGrid : Lưới hiển thị dữ liệu của cơ sở dữ liệu theo dòng và cột Phiên bản thương phẩm của điều khiển này là điều khiển Apex True DB Grid
DateTimePicker : Điều khiển này có thể rằng buộc ngày hoặc giờ trong một cơ sở
dữ liệu Nó giúp người sử dụng chọn ngày, giờ một cách dễ dàng dưới dạng đồ hoạ DBList : Điều khiển hộp danh sách này tương tự điều khiển hộp danh sách chuẩn (ListBox) của Visual Basic, nhưng nó có thể điền dữ liệu vào danh sách từ một bảng
cơ sở dữ liệu
Hierarchical FlexGrid : Điều khiển cho phép thao tác với nhiều bản ghi quan hệ trong một điều khiển lưới
PictureBox : Điều khiển hiển thị hình ảnh lấy từ cơ sở dữ liệu
Label : Điều khiển này cho phép trình bày văn bản từ một trường cơ sở dữ liệu, nhưng không cho phép người sử dụng sửa đổi nó
MaskedEdit : Điều khiển này tương tự một hộp văn bản, nhưng cung cấp một chức năng kiểm tra nội tại cũng như một hiển thị mặc định gợi ý cho người sử dụng điều kiện nhập vào hộp văn bản
MSChart : Điều khiển ràng buộc biểu đồ trực tiếp với một điều khiển dữ liệu
Trang 36MSFlexGrid : Điều khiển này cho ta trình bày dữ liệu dưới dạng lưới Ta còn có thể sử dụng điều khiển để xử lý dữ liệu, gộp nhóm và sắp xếp Phiên bản thương phẩm của điều khiển này là VideoSoft VSLEX
5.4 Truy xuất dữ liệu thông qua Data Control
Để làm việc với CSDL ta có thể dùng điều khiển Data Điều khiển này cho phép
ta truy cập đến một CSDL bất kì trong Windows Để có thể truy cập đến CSDL ta thực hiện như sau:
Trong hộp công cụ ToolBox, ta chọn điều khiển Data và đặt nó lên Form
Xác định các thuộc tính cho điều khiển
Viết các lệnh để truy xuất dữ liệu
5.4.1 Các thuộc tính
Điều khiển Data có các thuộc tính sau:
Name: Tên của điều khiển, nếu ta không đặt lại tên thì tên của nó là Data1,
Data2
Connect: Thuộc tính này qui định môi trường CSDL mà ta muốn truy cập, môi
trường ngầm định là Access Ta có thê thay đổi thuộc tính này để kết nối đến các CSDL khác như Foxpro, Excel, Dbase v.v
DataBase: Tên CSDL mà ta muốn truy cập Muốn làm việc với CSDL nào đó ta
phải gán tên cùng đường dẫn của nó cho thuộc tính này Các CSDL ngầm định là được tạo bởi Access Các CSDL trong Access có đuôi là *.mdb Ví dụ ta chọn QTKD.mdb Để gán cho điều khiển một CSDL nào đó khi thiết kế thì tại thuộc tính này ta kích nút Build và chọn CSDL trong một thư mục nào đó Nếu khi thi hành đề
án mà ta muốn thay đổi CSDL thì ta có thể dùng lệnh sau:
Data1.RecordSource = TableName
Trong đó Data1 là tên của điều khiển, còn TableName là tên của một bảng nào đó trong CSDL Ngoài ra ta có thể gán cho thuộc tính này một biểu thức là một câu lệnh SQL
Trang 37RecordSetType: Xác định kiểu tệp dữ liệu của điều khiển dữ liệu Thuộc tính này
có thể nhận một trong 3 giá trị sau: Table, Dynaset, SnapShot Nếu ta chọn thuộc tính này là Table thì ta có thể thao tác với một bảng của CSDL Nếu ta chọn Dynaset thì ta có thể thao tác với một Query thành lập từ nhiều bảng của CSDL và có thể thay đổi tập dữ liệu (RecordSet) Còn nếu ta chọn SnapShot thì ta có thể làm việc với tệp các bảng dữ liệu tĩnh mà không thay đổi được chúng Giá trị ngầm định của thuộc tính này là Dynaset
ReadOnly: Thuộc tính này có 2 giá trị là True và False (ngầm định) Nếu chọn True
thì ta không thể cập nhật được dữ liệu của RecordSet
Visible: Thuộc tính này cho phép (True) hay không cho phép (False) hiện ra điều
khiển dữ liệu Nếu ta không muốn điều khiển dữ liệu hiện ra khi thi hành thì ta gán thuộc tính này là False
Exclusive: Thuộc tính này dùng để cho phép (False) hay không cho phép (True)
nhiều người dùng CSDL hiện tại
5.4.2 Cách sử dụng điều khiển Data
a) Thao tác với CSDL
Khi thay đổi một CSDL (thay DataBaseName, thay Connect) hoặc thay một bảng mới (thay đổi tính chất của RecordSource) hoặc thay đổi tính chất của ReadOnly, Exclusive thì ta phải kích hoạt phương pháp Refresh của điều khiển dữ liệu như sau:
Data1.Refresh
Sự thay đổi trong CSDL của điều khiển dữ liệu được thực hiện bằng lệnh trong thời gian thực hiện project Sự thay đổi được thực hiện bằng cách gán các thuộc tính DataBaseName, Connect, RecordSetType, RecordSource của Data Control bằng một giá trị mới Mỗi khi có sự thay đổi như thế thì phải Refresh( ) lại điều khiển dữ liệu
b) Đối tượng RecordSet
Tập hợp các dữ liệu được chọn thông qua thuộc tính RecordSource được gọi là RercodSet của điều khiển dữ liệu Hay nói cách khác RecordSet là tập dữ liệu đã chọn của điều khiển dữ liệu Dù thuộc tính RecordSource có thay đổi như thế nào thì tập dữ liệu của điều khiển dữ liệu vẫn là RecordSet Đây là một đối tượng quan trọng nhất của điều khiển dữ liệu
Điều khiển CSDL chính là thực hiện thao tác trên RecordSet Để điều khiển RecordSet ta sử dụng các phương pháp và thuộc tính của nó
Sau đây ta xét một số phương thức và thuộc tính của nó:
Thuộc tính BOF và EOF
Trang 38Các thuộc tính EOF và BOF của RecordSet cho ta biết trạng thái cuối hay đầu của RecordSet Nếu con trỏ đang ở cuối File thì giá trị RecordSet.EOF = True Còn nếu con trỏ đang ở đầu RecordSet thì giá trị RecordSet.BOF = True
Ví dụ:
If not Data1.RecordSet.BOF Then Data1.RecordSet.MovePrevious
hoặc
If not Data1.RecordSet.EOF Then Data1.RecordSet.MoveNext
Các phương thức di chuyển trong CSDL
Muốn di chuyển trong CSDL ta sử dụng các phương pháp sau:
MoveFirst: Chuyển đến đầu RecordSet
MoveLast: Chuyển đến cuối RecordSet
MovePrevious: chuyển đến bản ghi trước RecordSet
MoveNext: Chuyển đến bản ghi sau RecordSet
Đối tượng Fields
RecordSet có các đối tượng con khác nhau trong đó có một đối tượng quan trọng
và hay được dùng đó là đối tượng Fields Đối tượng này của RecordSet cho phép ta truy cập đến từng trường của bảng dữ liệu Để trỏ tới trường thứ i nào đó ta viết Fields(i) Số hiệu của các trường bắt đầu từ 0 đến n-1, trong đó n là số lượng các trường Ngoài ra ta có thể thay đổi số hiệu trường bằng tên trường Ví dụ trường số 1
có tên là Makh thì 2 lệnh sau là tương đương
Print Data1.RecordSet.Fields(1)
Print Data1.RecordSet.Fields(“Makh”)
Cả 2 lệnh này đều cho ta nội dung trường “Makh” của bản ghi hiện thời
Thuộc tính RecordCount
Số lượng các bản ghi trong một bảng được lưu trữ trong thuộc tính RecordCount
Số hiệu các bản ghi được bắt đầu từ 0 đến RecordCount – 1
Sửa và bổ sung dữ liệu
Để thêm mới, bổ sung, sửa chữa các bản ghi của CSDL ta dùng các phương thức sau:
AddNew: Thêm bản ghi mới vào cuối bảng Khi thực hiện phương pháp này thì ta
sẽ có một bản ghi trống và ta có thể bổ sung dữ liệu cho bản ghi này
Edit: Cho phép sửa bản ghi hiện hành Sau phương pháp này ta có thể thay đổi nội
dung của bản ghi hiện tại
Update: Cập nhật bản ghi vừa được tạo hoặc sửa chữa
Delete: Xoá bản ghi hiện hành Sau khi xoá bản ghi ta phải di chuyển đến bản ghi
khác bằng các phương pháp di chuyển đã nêu ở trên
Close: Dùng để đóng một bảng
Trang 395.4.3 Ví dụ minh hoạ
Tạo cơ sở dữ liệu qltv.mdb gồm 3 bảng:
Sach(Mas, Tens, Tacgia, Nhaxb, Namxb)
Docgia(Madg, Tendg, Diachi, Dienthoai)
Muontra(Madg, Mas, Ngaym, Ngayht, Ngayt)
sử dụng Visual Data Manager Sau đó, lập một chương trình gồm 3 form: Sách- thao tác trên bảng Sach, Độc giả- thao tác trên bảng Docgia, Mượn trả- thao tác trên bảng Muontra theo mẫu:
Yêu cầu:
Form Sách tạo bằng công cụ tạo form tự động
Trang 40 Form Độc giả sử dụng công cụ Data ở mức độ đơn giản
Form Mượn trả lập trình sử dụng các thuộc tính, phương thức của điều khiển Data, đối tượng Recordset, đối tượng Fields
Giải:
Bước 1.Tạo cơ sở dữ liệu qltv.mdb sử dụng Visual Data Manager (VisData)
Bước 2 Tạo các bảng: Sach, Docgia, Muontra, trong đó: Mas là khoá chính của bảng Sach, Madg là khoá chính của bảng Docgia, Mas và Madg là khoá ngoại của bảng Muontra Khi tạo xong cơ sở dữ liệu qltv.mdb, ta thu được kết quả sau trong cửa sổ VisData
Bước 3 Tạo form Sach sử dụng công cụ Data Form Designer
- Từ cửa sổ VisData chọn Utility/Data Form Designer
- Trên cửa sổ Data Form Designer, nhập tên form trong mục Form name, chọn bảng sach trong mục RecordSource, đưa tất cả các trường trong bảng Sach trong mục Available Fields sang mục Included Fields, như hình sau:
- Nhấn nút Build Form, sau đó nhấn Close ta thu được form sau