Bài giảng môn Tin học xây dựng
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng môn Tin học xây dựng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_mon_tin_hoc_xay_dung.pdf
Nội dung text: Bài giảng môn Tin học xây dựng
- Bài giảng TIN HỌC XÂY DỰNG ĐẠI HỌC GIAO THƠNG VẬN TẢI BỘ MƠN TỰ ĐỘNG HĨA THIẾT KẾ CẦU ĐƯỜNG BÀI GIẢNG TIN HỌC XÂY DỰNG DraftLê Đắc Hiền Bộ mơn Tự động hĩa Thiết kế Cầu đường 1
- Bài giảng TIN HỌC XÂY DỰNG MỤC LỤC MỤC LỤC 2 PHẦN 1 TỔNG QUAN MƠN HỌC 6 PHẦN 2 CƠ BẢN VỀ NGƠN NGỮ LẬP TRÌNH VISUAL BASIC 11 CHƯƠNG I. TỔNG QUAN VỀ VISUAL BASIC 12 I.1 GIỚI THIỆU VỀ VISUAL BASIC 12 I.2 Integrated Development Environment (IDE) 12 I.2.1 Cấu trúc một dự án VB 13 I.2.2 Các thành phần của IDE 13 I.2.3 Soạn thảo mã lệnh 14 I.3 TRỢ GIÚP TRONG QUÁ TRÌNH LÀM VIỆC (Help) 14 CHƯƠNG II. NGƠN NGỮ LẬP TRÌNH VISUAL BASIC 16 II.1 QUY TẮC VIẾT MÃ LỆNH 16 II.2 CÁC TỪ KHĨA TRONG VB6 17 II.3 CÁC KIỂU DỮ LIỆU CƠ BẢN 17 II.3.1 Boolean 17 II.3.2 Byte 18 II.3.3 Integer (Kiểu nguyên) 18 II.3.4 Long 18 II.3.5 Single 18 II.3.6 Double (Kiểu thực) 18 II.3.7 String (Kiểu chuỗi) 19 II.3.8 Date (Kiểu thời gian) 20 II.3.9 Kiểu mảng (array) 21 II.3.10 Kiểu tự định nghĩa 21 II.3.11 Kiểu lớp (class) 21 II.3.12 Kiểu Variant 21 II.3.13 Chuyển đổi (convert) kiểu dữ liệu 22 II.4 CÁC KHAI BÁO 23 II.4.1 Khai báo biến với các kiểu dữ liệu thơng thường 23 II.4.2 Khai báo hằng 23 II.4.3 Khai báo kiểu tự định nghĩa. 23 II.4.4 Khai báo mảng 24 II.4.5 Khai báo, tạo và làm việc với biến đối tượng 26 II.4.6 Các chú ý khi khai báo 26 II.5 BIỂU THỨC 27 II.5.1 Các khái niệm 27 II.5.2 Các loại phép tốn 27 II.6 CÁC CÂU LỆNH 29 II.6.1 Lệnh gán 29 II.6.2 Lệnh rẽ nhánh If 29 II.6.3 Câu lệnh lựa chọn Select Case 31 II.6.4 Câu lệnh lặp xác định 32 II.6.5 Câu lệnh lặp xác định trong một tập hợp 33 II.6.6 Câu lệnh lặp khơng xác định 33 II.7 CHƯƠNG TRÌNH CON (HÀM VÀ THỦ TỤC) 34 II.7.1 Khái niệm 34 II.7.2 Hàm - Function 34 II.7.3 Thủ tục - Sub 35 II.7.4 Truyền tham số cho chương trình con 36 II.8 TRUY XUẤT DỮ LIỆU TRONG VISUAL BASIC 38 II.8.1 Các khái niệm 38 II.8.2 Biến tồn cục 38 II.8.3 Biến cục bộ 38 II.8.4 Biến Draftmodule 39 II.9 GỠ LỖI TRONG VISUAL BASIC (Debug) 39 Bộ mơn Tự động hĩa Thiết kế Cầu đường 2
- Bài giảng TIN HỌC XÂY DỰNG II.9.1 Phân loại lỗi lập trình 39 II.9.2 Phát hiện và khắc phục lỗi trong lập trình 40 II.9.3 Dùng khai báo Option Explicit 42 II.9.4 Dùng Breakpoints 42 II.9.5 Dùng Immediate Window 42 II.9.6 Dùng Watch Window 43 II.9.7 Dùng Comment (chú thích) 43 II.10 TỔ CHỨC CHƯƠNG TRÌNH 43 CHƯƠNG III. FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN 45 III.1 CÁC VẤN ĐỀ CHUNG 45 III.1.1 Thao tác tạo Form và các thành phần điều khiển trong VBIDE 46 III.1.2 Các thuộc tính của Form và các thành phần điều khiển 47 III.1.3 Các phương thức của Form và các thành phần điều khiển. 48 III.1.4 Các sự kiện trên giao diện 49 III.2 LÀM VIỆC VỚI FORM 51 III.3 CÁC ĐIỀU KHIỂN THƠNG DỤNG 52 1 Điểu khiển nút lệnh (Command Button) 52 2 Điều khiển hộp văn bản (TextBox) 53 3 Điều khiển nhãn (Label) 55 4 Điều khiển hộp đánh dấu (CheckBox) 55 5 Điều khiển nút tuỳ chọn (OptionButton) 56 6 Điều khiển hộp danh sách (ListBox) 57 7 Điều khiển hộp danh sách tổ hợp (ComboBox) 60 8 Điều khiển khung (Frame) 60 9 Thanh cuộn ngang (HscrollBar) 61 10 Thanh cuộn đứng (VScrollBar) 61 11 Thời gian (Timer) 61 12 Danh sách ổ đĩa (DriveListbox), Thư mục (DirListbox), Tập tin (FileListbox) .62 CHƯƠNG IV. LÀM VIỆC VỚI TẬP TIN (FILE) 63 IV.1 HÀM I/O VÀ LỆNH XỬ LÝ TẬP TIN 63 IV.1.1 Mở tập tin 63 IV.1.2 Đọc nội dung tập tin 64 IV.1.3 Ghi dữ liệu lên tập tin 64 IV.1.4 Đĩng tập tin 66 IV.1.5 Ví dụ 66 IV.2 MƠ HÌNH File System Object (FSO) 67 IV.2.1 Tạo đối tượng FileSystemObject 68 IV.2.2 Truy cập ổ đĩa, thư mục, tập tin 68 IV.2.3 Đối tượng ổ đĩa 68 IV.2.4 Đối tượng thư mục, làm việc với thư mục 69 IV.2.5 Đối tượng tập tin, làm việc với tập tin 69 IV.2.6 Ví dụ 71 PHẦN 3 TIN HỌC XÂY DỰNG 74 CHƯƠNG I. TIN HỌC HĨA TRONG XÂY DỰNG CƠNG TRÌNH 75 I.1 KHẢ NĂNG CỦA MÁY TÍNH 75 I.2 TẠI SAO PHẢI TIN HỌC HĨA 76 I.3 PHƯƠNG PHÁP THỰC HIỆN TIN HỌC HĨA 76 CHƯƠNG II. THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG 78 II.1 LỰA CHDraftỌN GIAO DIỆN 78 II.2 TRÌNH TỰ XÂY DỰNG GIAO DIỆN 81 Bộ mơn Tự động hĩa Thiết kế Cầu đường 3
- Bài giảng TIN HỌC XÂY DỰNG II.3 THIẾT KẾ MENU 81 II.3.1 Khái niệm 81 II.3.2 Các thuộc tính 81 II.3.3 Cách tạo menu 82 II.4 CÁC HỘP THOẠI THƠNG DỤNG 83 II.4.1 Khái niệm 83 II.4.2 Hộp thoại thơng điệp 83 II.4.2.1 Loại chỉ xuất thơng báo 83 II.4.2.2 Loại tương tác với người dùng 84 II.4.3 Hộp thoại nhập 84 II.4.4 Hộp thoại dựa trên điều khiển Common Dialog 84 II.4.4.1 Hộp thoại mở và lưu tập tin 85 II.4.4.2 Hộp thoại Chọn màu 85 II.4.4.3 Hộp thoại chọn Font chữ 86 II.4.4.4 Hộp thoại In ấn 87 II.5 SỰ KIỆN CHUỘT VÀ BÀN PHÍM 87 II.5.1 Sự kiện chuột 87 II.5.2 Sự kiện bàn phím 88 II.6 SỬ DỤNG GIAO DIỆN ĐA TÀI LIỆU (MDI) 88 II.6.1 Khái niệm 88 II.6.2 Thiết lập ứng dụng MDI 89 II.7 GIAO DIỆN Wizard (Thuật sĩ) 90 CHƯƠNG III. ĐỒ HỌA TRONG VISUAL BASIC 92 III.1 TỌA ĐỘ MÀN HÌNH 92 III.2 MÀU (Color) 93 III.3 CÁC THUỘC TÍNH ĐỒ HỌA CỦA Form & PictureBox 94 III.4 CÁC PHƯƠNG THỨC ĐỒ HỌA 94 III.4.1 Phương thức Print 94 III.4.2 Phương thức PSet 95 III.4.3 Phương thức Line 95 III.4.4 Phương thức Circle 98 III.4.5 Phương thức PaintPicture 98 III.4.6 Vẽ đa giác bất kỳ 100 III.5 CÁC ĐIỀU KHIỂN ĐỒ HỌA 102 III.5.1 Điều khiển hộp hình ảnh (Picture Box) 102 III.5.2 Điều khiển hình ảnh (Image) 103 III.5.3 Điều khiển hình dạng (Shape) 103 III.5.4 Điều khiển Line 104 III.6 CÁC PHÉP BIẾN ĐỔI TRONG ĐỒ HỌA 2 CHIỀU 104 III.6.1 Phép tịnh tiến 104 III.6.2 Phép biến đổi tỷ lệ 104 III.6.3 Phép quay 105 III.6.4 Phép đối xứng trục 106 III.6.5 Phép biến dạng 106 III.6.6 Phép biến đổi ngược 106 III.6.7 Một số tính chất của phép biến đổi 107 CHƯƠNG IV. LÀM VIỆC VỚI AUTOCAD/EXCEL 108 IV.1 TỔNG QUAN VỀ Component Object Model (COM) 108 IV.1.1 Khái niệm cơ bản về COM 108 IV.1.2 Cấu trúc cơ bản của một COM Object 108 IV.1.3 Các dạng đối tượng COM 109 IV.1.4 Quản lý các đối tượng COM trong hệ thống 110 IV.1.5 Sử dụng các đối tượng COM 110 IV.2 LÀM VIỆC VỚI AutoCAD 111 IV.2.1 Hệ thống các đối tượng trong AutoCAD 111 IV.2.1.1 Mơ hình đối tượng trong AutoCAD 111 IV.2.1.2 DraftMột số đối tượng chính trong AutoCAD 112 Bộ mơn Tự động hĩa Thiết kế Cầu đường 4
- Bài giảng TIN HỌC XÂY DỰNG IV.2.2 Kết nối VB với AutoCAD 116 IV.2.3 Các thao tác cơ bản trong AutoCAD 118 IV.2.3.1 Điều khiển AutoCAD 118 IV.2.3.2 Tạo mới đối tượng hình học 121 IV.3 LÀM VIỆC VỚI Microsoft Excel 127 IV.3.1 Hệ thống các đối tượng trong Excel 128 IV.3.1.1 Mơ hình đối tượng trong Excel 128 IV.3.1.2 Một số đối tượng cơ bản trong Excel 130 IV.3.2 Kết nối VB với MS Excel 135 IV.3.3 Các thao tác cơ bản trong Excel 138 IV.3.3.1 Làm việc với Workbook 138 IV.3.3.2 Làm việc với Worksheet 139 IV.3.3.3 Làm việc với Range và Cells 140 IV.3.3.4 Sử dụng các hàm cĩ sẵn trong Excel 142 CHƯƠNG V. TRÌNH BÀY KẾT QUẢ 143 V.1 HIỂN THỊ TRỰC TIẾP TRONG CHƯƠNG TRÌNH 143 V.2 THƠNG QUA AutoCAD, Excel 145 V.3 XUẤT FILE KẾT QUẢ 145 CHƯƠNG VI. CÁC BÀI TỐN CƠ BẢN TRONG XÂY DỰNG 148 VI.1 PHÂN TÍCH KẾT CẤU CẦU 148 VI.1.1 Khái quát 148 VI.1.2 Mục đích chính 148 VI.1.3 Trình tự thực hiện 149 VI.1.3.1 Giao diện (Nhập số liệu + Điều khiển chương trình) 149 VI.1.3.2 Tính tốn (Thuật tốn + kiến thức chuyên mơn) 149 VI.1.3.3 Xuất kết quả 149 VI.2 VẼ ĐỐI TƯỢNG HÌNH HỌC 149 VI.2.1 Khái quát 149 VI.2.2 Mục đích chính 149 VI.2.3 Trình tự thực hiện 149 VI.2.3.1 Giao diện 149 VI.2.3.2 Tính tốn 149 VI.2.3.3 Xuất kết quả 149 VI.3 THIẾT KẾ CẤU KIỆN 150 VI.3.1 Khái quát 150 VI.3.2 Mục đích chính 150 VI.3.3 Trình tự thực hiện 150 VI.3.3.1 Giao diện 150 VI.3.3.2 Tính tốn 151 VI.3.3.3 Xuất kết quả 151 VI.4 XỬ LÝ DỮ LIỆU ĐO ĐẠC 151 VI.4.1 Khái quát 151 VI.4.2 Mục đích chính 151 VI.4.3 Trình tự thực hiện 152 VI.4.3.1 Giao diện 152 VI.4.3.2 Tính tốn 152 VI.4.3.3 Xuất kết quả 152 PHỤ LỤC 153 Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 5
- Bài giảng TIN HỌC XÂY DỰNG PHẦN 1 TỔNG QUAN MƠN HỌC Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 6
- Bài giảng TIN HỌC XÂY DỰNG Trong lĩnh vực xây dựng cơng trình giao thơng cũng như xây dựng dân dụng, sự ra đời của một cơng trình bao giờ cũng là một quá trình, mà ở đĩ hàng loạt các cơng việc được thực hiện trong phịng cũng như ngồi cơng trường theo một trình tự nhất định. Trong hàng loạt cơng việc đĩ, để cĩ được kết quả tốt nhất, người ta sử dụng những cơng cụ hỗ trợ, mà đắc lực nhất cho những cơng việc nội nghiệp là hệ thống thơng tin chuyên dùng cho xây dựng. Hệ thống thơng tin bao gồm hai thành phần cơ bản: ¾ Phần cứng: bao gồm các thiết bị tin học như: máy tính, máy in, máy quét, mạng Những thiết bị này là nền tảng cho các phần mềm hoạt động và chính chúng tạo ra kết quả cuối cùng của cơng việc (bản vẽ, báo cáo, bảng biểu in trên giấy hoặc số liệu) ¾ Phần mềm: là hệ thống các chương trình do con người tạo ra để thực hiện một mục tiêu nào đĩ. Nĩ là cầu nối cho việc biểu diễn và mơ hình hĩa ý tưởng của con người trên hệ thống máy tính. Nhờ cĩ phần mềm mà hệ thống máy tính mới vận hành được, và từ đĩ, sức mạnh của phần cứng được khai thác để phục vụ cho các cơng việc khác nhau trong mọi lĩnh vực, ví dụ trong xây dựng, nhờ cĩ sự phối hợp hoạt động của phần mềm và phần cứng mà ta cĩ được mơ hình 3 chiều của cơng trình (hình 1) hay hệ thống các bản vẽ (hình 2) hoặc bản tính kết cấu (hình 3) với tốc độ nhanh chĩng và chính xác hơn hẳn so với làm thủ cơng. DraftHình 1 – Mơ hình 3 chiều của cơng trình được xây dựng trên máy tính Bộ mơn Tự động hĩa Thiết kế Cầu đường 7
- Bài giảng TIN HỌC XÂY DỰNG Hình 2 – Hầu hết các bản vẽ kỹ thuật hiện nay đều thực hiện trên máy tính DraftHình 3 – Phân tích kết cấu cơng trình trên máy tính Bộ mơn Tự động hĩa Thiết kế Cầu đường 8
- Bài giảng TIN HỌC XÂY DỰNG Thơng thường, khả năng của một hệ thống thơng tin được biết đến ở khía cạnh chính sau: ¾ Tốc độ tính tốn rất lớn, cĩ thể thực hiện được hàng tỷ phép tính trong một giây. ¾ Cho phép dựng mơ hình nhanh và chi tiết (hình 1) với các phần mềm hỗ trợ. ¾ Tạo bản vẽ, báo cáo, tài liệu trên giấy rõ ràng, đẹp và nhanh. ¾ Lưu trữ và sử dụng lại dữ liệu rất hiệu quả. Hệ thống thơng tin chuyên dụng cho ngành xây dựng bao gồm các thiết bị phần cứng và các phần mềm, mà ở đĩ, các chức năng chính của chúng là phục vụ cho các cơng việc liên quan đến xây dựng cơng trình như: dựng mơ hình, tạo bản vẽ, in bản vẽ, tính tốn kết cấu, tổng hợp khối lượng, tính dự tốn, lập kế hoạch Thơng thường, phần cứng bao gồm các máy tính (cĩ thể nối mạng với nhau) và các thiết bị phụ trợ cho việc nhập dữ liệu (máy quét, bàn số hĩa) và xuất kết quả (máy in). Phần mềm là thành phần cĩ sự khác biệt lớn nhất giữa các hệ thống thơng tin với nhau. Trong lĩnh vực xây dựng, phần mềm bao gồm các loại cơ bản sau: ¾ Hệ thống các phần mềm văn phịng (tạo văn bản, bảng tính, biểu đồ, báo cáo, kế hoạch ) mà phổ biến nhất là bộ phần mềm Office của Microsoft. ¾ Các phần mềm phân tích kết cấu như: SAP, MIDAS/Civil, Piling ¾ Các phần mềm sử lý dữ liệu khảo sát và mơ hình hĩa địa hình: Topo, Land Desktop ¾ Các phần mềm lập dự tốn: CE++, ACITT ¾ Các phần mềm dựng bản vẽ kỹ thuật và phối cảnh: AutoCAD, 3DS Max, Micro Station Khi người ta triển khai hệ thống thơng tin cĩ đặc điểm trên (về phần cứng và phần mềm) vào quá trình xây dựng cơng trình thì quá trình này gọi là tin học hĩa trong xây dựng. Tùy thuộc vào khả năng của hệ thống phần cứng và phần mềm mà mức độ tin học hĩa hay tự động hĩa được xác định ở mức cao hay thấp. Xét về tổng quát thì hiện nay ở Việt Nam, mức độ tin học hĩa theo hệ thống là chưa cao nhưng về chi tiết từng bước trong quá trình xây dựng thì khá tốt. Do đặc điểm của quá trình xây dựng, cho nên phần mềm cĩ vai trị quan trọng nhất trong quá trình tin học hĩa vì thế hiện nay mức độ tin học hĩa chủ yếu được đánh giá dựa trên hệ thống phần mềm mà đơn vị đĩ sử dụng. Hệ thống phần mềm dùng trong xây dựng, về xuất xứ, được chia làm hai loại cơ bản: ¾ Phần mềm do các cơng ty chuyên về tin học làm ra (phần mềm thương mại), chúng cĩ khả năng hoạt động tốt, đáp ứng được hầu hết các vấn đề cơ bản trong quá trình thiết kế, quản lý và tổ chức thi cơng của cơng trình. ¾ Phần mềm do chính các cơng ty hoạt động trong lĩnh vực xây dựng thực hiện (phần mềm tự tạo), chúng được tạo ra chủ yếu với mục đích giải quyết những vấn đề phát sinh cục bộ của cơng ty mà những phần mềm thương mại khơng đáp ứng được hoặc chưa cĩ phần mềm thương mại phù hợp. Để cĩ được những phần mềm thương mại và triển khai chúng một cách hiệu quả địi hỏi đơn vị hoặc cơng ty đĩ phải cĩ được nhiều yếu tố như: nhân lực cĩ trình độ tin học nhất định, kinh tế, quy trình sản xuất phù hợp Trong khi đĩ các phần mềm tự tạo lại cĩ thể ứng dụng được ngay do chúng xuất phát từ nhu cầu thiết thực của cơng ty cũng như người làm ra nĩ cũng chính là người sử dụng, và đương nhiên, nĩ phù hợp hồn tồn với quy trình làm việc của cơng ty đĩ. Hơn nữa, các phần mềm thương mại khơng thể bao quát hết mọi vấn đề trong lĩnh vực xây dựng cơng trình cho nên các cơng ty tin học thường tập trung vào các bài tốn cơ bản, vào những phần chính của quá trình thiết kế. Do đĩ chúng giải quyết tốt những vấn đề này và những vấn đề khác của cơng việc thường được giải quyết bằng thủ cơng hoặc dựa trên phần mềm tự tạo trên nền tảng kết quả của những phần mềm thương mại. Ví dụ, trong thiết kế cầu, phần phân tích nội lực của kết cấu (phần trên và phần dưới) Draftđều cĩ các phần mềm thương mại làm rất tốt (SAP, MIDAS/Civil, Piling ) Bộ mơn Tự động hĩa Thiết kế Cầu đường 9
- Bài giảng TIN HỌC XÂY DỰNG trong khi đĩ triển khai bản vẽ kỹ thuật cho kết cấu cầu lại chưa cĩ phần mềm thương mại hỗ trợ cho nên hầu hết chúng được tạo ra một cách thủ cơng hoặc nhờ phần mềm tự tạo. Phần mềm tự tạo, để cĩ thể làm được nĩ, thì những kỹ sư chuyên ngành cơng trình cần nắm được: ¾ Cơng cụ lập trình thích hợp, thường bao gồm: o Ngơn ngữ lập trình: là cơng cụ để thể hiện những ý tưởng, kiến thức chuyên mơn, quy trình thực hiện, định dạng kết quả thành ngơn ngữ mà máy tính cĩ thể hiểu được. o Mơi trường lập trình: là cơng cụ giúp cho việc xây dựng chương trình được thuận lợi. Thơng thường người ta tích hợp ngơn ngữ lập trình và mơi trường lập trình thành một sản phẩm thống nhất dưới tên gọi của ngơn ngữ lập trình. o Thư việc lập trình: là những bổ trợ giúp cho việc lập trình được nhanh và hiệu quả, đây là thành phần khơng bắt buộc phải cĩ thì mới lập được chương trình. ¾ Phương pháp phân tích và tổng hợp vấn đề theo hướng cĩ thể lập trình được. Thơng thường khi gặp một vấn đề và cần giải quyết nĩ bằng một chương trình tự tạo thì sự tổng hợp và khái quát vấn đề sẽ đưa ra cách giải tổng quát, giúp cho khả năng của phần mềm sẽ rộng hơn và tính ứng dụng tốt hơn. Trong khi đĩ việc phân tích theo hướng chức năng hĩa sẽ giúp cho việc xây dựng và bảo trì phần mềm thuận lợi. Như vậy cĩ thể thấy rằng, vai trị và phạm vi ứng dụng của phần mềm tự tạo là rất lớn và rất rộng, trong khi đĩ, việc xây dựng nĩ lại dựa chủ yếu vào nhân lực của chính cơng ty xây dựng cơng trình, cho nên việc tin học hĩa quá trình xây dựng, ngồi việc triển khai hiệu quả các hệ thống phần mềm thương mại, thì việc xây dựng phần mềm tự tạo là một yếu tố quan trong khơng kém và trong nhiều trường hợp nĩ mang lại hiệu quả cao hơn là đầu tư phần mềm thương mại. Xét về mức độ phức tạp thì việc triển khai các phần mềm thương mại đơn giản hơn rất nhiều so với việc tự xây dựng phần mềm. Thơng thường các phần mềm thương mại được chuyển giao thành một gĩi bao gồm: ¾ Phần mềm ¾ Đào tạo, hướng dẫn sử dụng phần mềm. ¾ Bảo hành, trợ giúp kỹ thuật trong quá trình sử dụng phần mềm. Quá trình triển khai này thường khá nhanh và yêu cầu nhân lực cĩ trình độ tin học ở mức trung bình. Trong khi đĩ, để xây dựng phần mềm tự tạo, địi hỏi nhân lực cĩ trình độ về chuyên mơn và tin học cao hơn. Chính vì lý do này, cho nên mục tiêu đào tạo kỹ sư trong các trường đại học thuộc khối xây dựng (Giao thơng, Xây dựng, Mỏ địa chất, Thủy lợi ) luơn dành một lượng thời gian thích hợp cho những mơn học cĩ thể giúp sinh viên lập trình được và mơn học này là một phần chính trong mảng kiến thức đĩ. Với những kiến thức này, sinh viên cĩ thể tự xây dựng những chương trình phục vụ cho quá trình học tập trong trường đại học cũng như trong cơng tác sau này. Do đĩ, mục tiêu chính của mơn học này là hướng đến các mảng kiến thức giúp cho người học cĩ thể xây dựng được những chương trình ứng dụng cho ngành xây dựng cơng trình nĩi chung. Nĩi cách khác, tin học xây dựng ở đây được tập trung vào phần xây dựng các chương trình tựDraft tạo. Bộ mơn Tự động hĩa Thiết kế Cầu đường 10
- Bài giảng TIN HỌC XÂY DỰNG PHẦN 2 CƠ BẢN VỀ NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 11
- CHƯƠNG I: TỔNG QUAN VỀ VISUAL BASIC CHƯƠNG I. TỔNG QUAN VỀ VISUAL BASIC Mục tiêu: Chương này giới thiệu về mơi trường phát triển tích hợp (IDE) Microsoft Visual Basic 6.0; cũng như giúp sinh viên cĩ cái nhìn tổng quan về Visual Basic. Nội dung chính: - Sử dụng mơi trường phát triển tích hợp VB 6.0 để phát triển ứng dụng. - Cách tạo dự án mới (New Project) trong VB 6.0. - Sử dụng tốt hệ thống trợ giúp trong quá trình làm việc Kiến thức cĩ liên quan: - Sử dụng hệ điều hành Windows. I.1 GIỚI THIỆU VỀ VISUAL BASIC Visual Basic 6.0 (VB6) là một phiên bản của bộ cơng cụ lập trình Visual Basic (VB), cho phép người dùng tiếp cận nhanh cách thức lập trình trên mơi trường Windows. Visual Basic là gì? Phần "Basic" đề cập đến ngơn ngữ BASIC (Beginners All-Purpose Symbolic Instruction Code), một ngơn ngữ lập trình đơn giản, dễ học, được phát triển cho những người khơng chuyên sâu về lập trình. VB được phát triển và mở rộng dựa trên BASIC. Phần "Visual" đề cập đến phương pháp được sử dụng để tạo giao diện đồ họa người dùng (Graphical User Interface hay viết tắt là GUI). VB cĩ sẵn các thành phần điều khiển trực quan (controls), các điểu khiển này được lập trình viên sắp xếp trên form tạo thành giao diện người dùng. Chính bởi sự đơn giản, dễ học nên VB6 là cách nhanh và tốt nhất để lập trình trong mơi trường Microsoft Windows. VB6 cung cấp bộ cơng cụ hồn chỉnh để đơn giản hĩa việc lập trình ứng dụng dựa trên giao diện đồ họa. Visual Basic cịn cĩ hai dạng khác: Visual Basic for Application (VBA) và VBScript. VBA là ngơn ngữ nằm phía sau các chương trình Word, Excel, MSAccess, AutoCAD, .v.v cịn gọi là Macros. Dùng VBA trong MSOffice, ta cĩ thể làm tăng chức năng bằng cách tự động hĩa các chương trình. VBScript được dùng cho Internet và chính Operating System. Cài đặt Visual Basic Phiên bản: Visual Basic 6.0 Cấu hình tối thiểu: 32 MB RAM, CPU Pentium II, Windows 98. Sử dụng các file cài đặt (1CD) để cài, sửa đổi, xĩa VB. Ngồi ra cĩ thể cài thêm thư viện MSDN – Help (3CD) I.2 IntegratedDraft Development Environment (IDE) IDE là tên tắt của mơi trường phát triển tích hợp, đây là nơi tạo ra các chương trình VB. Bộ mơn Tự động hĩa Thiết kế Cầu đường 12
- CHƯƠNG I: TỔNG QUAN VỀ VISUAL BASIC I.2.1 Cấu trúc một dự án VB - Dự án (Project) là tập hợp các file để hình thành nên chương trình ứng dụng. - Dự án VB (VB Project) = Code Modules + Class Modules + Form - Code Module: mã lệnh chính của chương trình - Class Module: thiết kế các lớp của dự án - Form: giao diện dạng hộp thoại của dự án để nhập số liệu và xuất kết quả. VB hỗ trợ tạo nhiều kiểu ứng dụng khác nhau. Để tạo mới một dự án thực thi ta chọn Standard EXE rồi chọn Open. I.2.2 Các thành phần của IDE - Form trắng để thiết kế giao diện cho ứng dụng - Cửa sổ dự án hiển thị các file được tạo trong ứng dụng. - Cửa sổ thuộc tính hiển thị các thuộc tính của đối tượng và điều khiển được chọn. - Toolbox chứa các điều khiển cần thiết đễ xây dựng một ứng dụng VB. - Cửa sổ viết mã chương trình (Code). - MenuBar, Toolbar, Layout, Immediate Window,ViewCode, ViewForm Menu Bar Chứa đầy đủ các lệnh để làm việc với VB6, kể cả các menu để truy cập các chức năng đặc biệt dành cho viDraftệc lập trình như Project, Format, hoặc Debug Bộ mơn Tự động hĩa Thiết kế Cầu đường 13
- CHƯƠNG I: TỔNG QUAN VỀ VISUAL BASIC Toolbars (Debug, Edit, form Editor, Standard) Các toolbars gồm các biểu tượng cho phép chọn nhanh các chức năng cần thiết. Sử dụng Menu View | Toolbars để tắt hoặc mở các toolbars. Các toolbars cĩ thể sửa đổi theo ý thích bằng chức năng: View | Toolbars | Customize Toolbox Bao gồm các điều khiển (controls), dùng thiết kế giao diện đồ họa. Khi cĩ nhiều các control, cĩ thể sử dụng Add Tab để sắp xếp lại vị các control theo ý muốn. Project Explorer Là nơi liệt kê các forms, modules và class trong dự án hiện hành. Properties window Cửa sổ thuộc tính hiển thị các thuộc tính của đối tượng và điều khiển được chọn. Một property là một đặc tính của một đối tượng chẳng hạn như size, caption, hoặc color. Khi bạn sửa đổi một property bạn sẽ thấy hiệu quả ngay lập tức, thí dụ thay đổi property Font của một Label sẽ thấy Label ấy được display bằng Font chữ mới. Form Layout Dùng form Layout để chỉnh vị trí của các form khi form hiện ra lần đầu lúc chương trình chạy. Immediate Window Dùng để gở rối (debug) quá trình kiểm tra ứng dụng. Ta cĩ thể xem các thơng số khi chạy chương trình hay khi đang tạm ngừng. Cĩ thể thay đổi giá trị các biến hay chạy một dịng chương trình. I.2.3 Soạn thảo mã lệnh Trong Visual Basic IDE, cửa sổ mã lệnh (Code) cho phép soạn thảo mã chương trình với một số chức năng (Tắt mở trong Tools|Option) - Đánh dấu (Bookmarks): Chức năng này cho phép đánh dấu các dịng lệnh của chương trình giúp việc xem lại các phần mã lệnh dễ dàng. Sử dụng tính năng này qua thanh cơng cụ hoặc menu Edit. - Tự động kiểm tra cú pháp (Auto Syntax Check). Khi chức năng này bật, nếu viết một dịng chứa lỗi, VB sẽ thơng báo về lỗi và hiển thị con trỏ ngay dịng chương trình lỗi. Nếu khơng cĩ chức năng này, VB chỉ hiển thị dịng mã sai với màu đỏ khơng kèm chú thích. - Yêu cầu khai báo biến (Require Variable Declaration) (Tùy chọn): VB sẽ thơng báo lỗi khi một biến được dùng mà khơng khai báo và sẽ chỉ ra vị trí của biến đĩ. - Gợi nhớ mã lệnh: (Auto List Members) Tự động hiển thị gợi ý khi ta gõ vào tên của chúng. Sử dụng Ctrl+Space để sử dụng chức năng tự động hồn thành mã chương trình. I.3 TRỢ GIÚP TRONG QUÁ TRÌNH LÀM VIỆC (Help) Trong khi lập trình cĩ thể cần tìm hiểu thơng tin liên quan đến các câu lệnh, hàm .v.v của VB6. Các thơng tin này được Microsoft cung cấp rất đầy đủ trong thư viện trợ giúp Microsoft Developer Network | MSDN Library Visual Studio 6.0. Truy cập thơng qua menu Help | Contents của VB6, hoặc chọn (bơi đen) một từ khĩa trong mã lệnh rồi ấnDraft F1. Bộ mơn Tự động hĩa Thiết kế Cầu đường 14
- CHƯƠNG I: TỔNG QUAN VỀ VISUAL BASIC Phần trợ giúp được thiết kế giống như 1 quyển sách, kết hợp với chức năng tìm kiếm theo từ khĩa khiến người đọc dễ dàng tra cứu. Các thơng tin được liên kết với nhau đầy đủ giúp việc tham khảo đạt hiệu quả cao. Yêu cầu: Máy tính phải cài đầy đủ thư viện MSDN (3CD) Context Sensitive Help (trợ giúp đúng tình huống) Nhiều phần của VB6 hỗ trợ context sensitive, cĩ nghĩa là khi gặp lỗi hoặc cần trợ giúp chỉ cần ấn F1 hoặc bơi đen từ khĩa rồi nhấn F1. Chương trình sẽ hiển thị thơng tin liên quan đến vấn đề cần trợ giúp. Các phần context sensitive là: • Các Windows của VB6 như Properties, Code .v.v • Các control trong Toolbox. • Các Object trên một form hoặc Object tài liệu. • Các đặc tính trong Window Properties. • Các keywords của VB6 • Các thơng báo lỗi (error messages) Ngồi ra, trong Help thường cĩ Example là các ví dụ minh họa cách dùng cho một đối tượng nào đĩ dùng tham khảo rất phù hợp. Tìm kiếm trợ giúp trên Internet Việc tìm kiếm thơng tin trên Internet là hết sức cần thiết, dù trong lĩnh vực nào. Đặc biệt là trong cơng việc lập trình. Chúng ta cĩ thể tra cứu, tìm kiếm ví dụ, thảo luận về vấn đề mắc phải Một số website hữu ích: - Trang chủ của Microsoft Developer Network - Trang tìm kiếm nhanh và hiệu quả - Mã nguồn miễn phí và nhiều ví dụ hữu ích Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 15
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC CHƯƠNG II. NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Mục tiêu: Chương này giới thiệu về các cấu trúc lập trình trong VB; đây là các cấu trúc cốt lõi để xây dựng nên một chương trình VB. Nội dung chính: - Sử dụng mơi trường lập trình VB để viết mã lệnh, các quy tắc, từ khĩa. - Các kiểu dữ liệu trong VB. - Cách khai báo hằng, biến trong VB. - Biểu thức trong VB. - Các câu lệnh đơn cũng như các câu lệnh cĩ cấu trúc. - Chương trình con trong VB. - Truy xuất dữ liệu, tổ chức chương trình trong VB. - Gỡ lỗi trong VB. Kiến thức cĩ liên quan: - Cách sử dụng mơi trường phát triển của VB II.1 QUY TẮC VIẾT MÃ LỆNH Cũng giống như các ngơn ngữ lập trình khác, VB đưa ra những quy tắc cho người lập trình trong quá trình viết mã lệnh. Người lập trình cần phải tuân theo các quy tắc này để trình biên dịch cĩ thể dịch mã lệnh mà khơng phát sinh lỗi cú pháp. - Các câu lệnh phải là các dịng riêng biệt. Nếu cĩ nhiều lệnh trên cùng một dịng thì giữa các lệnh ngăn cách nhau bằng dấu hai chấm (:). Nếu dịng lệnh quá dài, muốn ngắt lệnh thành hai dịng thì sử dựng dấu cách và dấu gạch dưới (_). - Dịng chú thích được bắt đầu bằng (‘) Qui ước đặt tên biến của ngơn ngữ VB cũng tương tự như các ngơn ngữ khác: • Chỉ dùng được ký tự (hoa và thường), số, và ký tự gạch chân. • Phải bắt đầu bằng ký tự, dài khơng quá 255 ký tự. • Khơng cĩ khoảng trống, khơng trùng tên từ khĩa. Ví dụ: Đúng Sai My_Car My.Car ThisYear 1NewBoy Long_Name_Can_beUSE He&HisFather Các lỗi cú pháp sẽ được VBIDE phát hiện và báo lỗi cho người lập trình ngay trong quá trình viết mã lệDraftnh. Bộ mơn Tự động hĩa Thiết kế Cầu đường 16
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC II.2 CÁC TỪ KHĨA TRONG VB6 Từ khố là tập hợp các từ cấu thành một ngơn ngữ lập trình. Mỗi ngơn ngữ lập trình cĩ một bộ từ khố riêng, dưới đây là danh sách các từ khố trong ngơn ngữ lập trình VB6: As For Mid Print String Binary Friend New Private Then ByRef Get Next Property Time ByVal Input Nothing Public To Date Is Null Resume True Else Len On Seek WithEvents Empty Let Option Set Error Lock Optional Static False Me ParamArray Step II.3 CÁC KIỂU DỮ LIỆU CƠ BẢN Kiểu dữ liệu là một tập hợp các giá trị mà một biến của kiểu cĩ thể nhận và một tập hợp các phép tốn cĩ thể áp dụng trên các giá trị đĩ. Trong VB6 cĩ rất nhiều kiểu dữ liệu khác nhau như: Boolean, Double, Integer, Object, String, Variant Từng kiểu cĩ mục đích riêng và việc sử dụng đúng sẽ giúp chương trình chạy nhanh. Chúng ta sẽ đi tìm hiểu các kiểu dữ liệu cơ bản II.3.1 Boolean Đặc điểm: Chỉ cĩ 2 trạng thái: True và False. Khi chuyển từ các dữ liệu dạng số sang kiểu logic, 0 sẽ được chuyển thành FALSE cịn giá trị khác sẽ được chuyển thành TRUE. Khi chuyển từ kiểu logic sang kiểu số, giá trị FALSE sẽ được chuyển thành 0 cịn giá trị TRUE sẽ được chuyển thành -1. Phạm vi áp dụng: các bài tốn lặp, if then, thường dùng làm cờ hiệu (flags). Ví dụ: Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 17
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC ‘Cách 1: DKTuoi = (Tuoi = 1000000) If DKTuoi And DKThuNhap Then LaTrieuPhuTre End If ‘Cách 2: If (Tuoi = 1000000) Then DKThuNhap = 1 Else DKThuNhap = 0 End If If (DKTuoi = 1) And (DKThuNhap = 1) Then LaTrieuPhuTre End If II.3.2 Byte Đặc điểm: Sử dụng 8-bit để lưu trữ giá trị, tức cĩ thể lưu giá trị dương từ 0 đến 255 Phạm vi áp dụng: hữu ích trong việc lưu dữ liệu nhị phân II.3.3 Integer (Kiểu nguyên) Đặc điểm: Kiểu số nguyên, sử dụng 16-bit để lưu trữ, Khoảng giá trị: từ -32768 đến 32767 Phạm vi áp dụng: Khi trong chương trình khơng sử dụng giá trị thập phân II.3.4 Long Đặc điểm: Kiểu số nguyên, sử dụng 32-bit để lưu trữ, thường được gọi là số nguyên dài. Khoảng giá trị: từ -2,147,483,648 đến 2,147,483,647 Phạm vi áp dụng: Kiểu Long giống như Integer chỉ chứa số nguyên. II.3.5 Single Đặc điểm: Kiểu số thực, sử dụng 32-bit để lưu trữ, kiểu dữ liệu này cịn được gọi là độ chính xác đơn. Khoảng giá trị: -3.402823e38 đến -1.401298e-45 với số âm và từ 1.401298e-45 đến 3.402823e38 cho số dương Phạm vi áp dụng: Sử dụng với giá trị thập phân nằm trong khoảng trên. II.3.6 Double (Kiểu thực) Đặc điểm: Kiểu số thực, sử dụng 64-bit để lưu trữ, kiểu dữ liệu này được gọi là độ chính xác kép. Khoảng giá trị: -1.79769313486232e308 đến -4.94065645841247e-324 với số âm và từ 4.94065645841247e-324 đến 1.79769313486232e308 cho số dương Phạm vi áp dụDraftng: Khi cần tính tốn với yêu cầu độ chính xác cao. Bộ mơn Tự động hĩa Thiết kế Cầu đường 18
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC II.3.7 String (Kiểu chuỗi) Đặc điểm: Chuỗi dữ liệu chứa từ 0 đến 65.500 ký tự. Từng ký tự cĩ khoảng giá trị từ 0 đến 255 trong bảng ASCII. Cĩ sẵn một số hàm liên quan đến chuỗi ví dụ: cắt chuỗi, tách chuỗi, nhập chuỗi, Cĩ thể tra cứu các hàm này trong các tài liệu tham khảo như MSDN hoặc Object Browser (thư viện Strings). Phạm vi áp dụng: Khi cần làm việc với dữ liệu văn bản (Text). Được sử dụng nhiều trong các bài tốn quản lý, các bài tốn yêu cầu nhập xuất dữ liệu. Việc dùng string cũng giúp cho các bài tốn cĩ giao diện thân thiện hơn. Ví dụ: Private Sub Command1_Click() Dim sText As String Dim lTextLength As Long Dim sChar As String Dim bASCII As Byte Dim x As Long sText = " VB that la don gian!" lTextLength = Len(sText) 'So ky tu trong sText For x = 1 To lTextLength ‘Lap den ky tu cuoi cung trong sText sChar = Mid$(sText, x, 1)'Lay ky tu thu x trong sText bASCII = Asc(sChar) 'Lay gia tri ASCII cua ky tu MsgBox "Ma ASCII cua ky tu '" & sChar & "' la " & bASCII ‘Hien thi ket qua Next x End Sub Các hàm xử lý chuỗi - Ghép chuỗi: cho phép ghép 2 hay nhiều chuỗi lại với nhau nhờ tốn tử &. Ví dụ: FirstWord = "Hello" SecondWord = "World" Greeting = FirstWord & SecondWord ' Greeting bây giờ là "HelloWorld" - Len: trả về chiều dài một chuỗi được chỉ định. Ví dụ: iLen = Len(Greeting) ' iLen bằng 8 - Left: Trích chuỗi con từ phần đầu chuỗi gốc Left (String, [length]). - Right: Trích chuỗi con từ phần đuơi chuỗi gốc Right (String, [length]) - Mid: Trích chuỗi con từ giữa chuỗi gốc Mid(String, Start As Long, [length]) Ví dụ: Today = "24/05/2001" StrDay = Left(Today,2) ' StrDay = "24" ' StrYear = Right(Today,4) ' StrYear = "2001" ' StrMonth = Mid(Today,4,2) ' StrMonth = "05" - InStr: Tìm chuỗi con trong chuỗi gốc. Nếu hàm InStr trả về 0, nghĩa là khơng tìm thấy. Cú pháp: InStr([start,]Draft string1, string2, [compare]) Bộ mơn Tự động hĩa Thiết kế Cầu đường 19
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Trong đĩ: Start: Xác định vị trí trong chuỗi bắt đầu việc tìm kiếm. Nếu giá trị là Null thì sẽ bắt đầu từ đầu chuỗi. Nếu như tham số Compare cĩ đặc tả thì bắt buộc phải khai báo tham số Start. String1: Biểu thức chuỗi để so sánh. String2: Chuỗi cần tìm. Compare: Xác định kiểu so sánh chuỗi. Giá trị: vbTextCompare, vbBinaryCompare. Ví dụ 1: myString = "The *rain in Spain mainly " Position = Instr(myString,"*") ' Position sẽ là 5 Nếu trong myString khơng cĩ dấu "*" thì Position sẽ bằng 0 Ví dụ 2: KeyValuePair = "BeatlesSong=Yesterday" Pos = Instr(KeyValuePair, "=") Key = Left(KeyValuePair, Pos-1) ‘Key= “BeatlesSong” Value = Mid(KeyValuePair, Pos+1) ‘Key= “Yesterday” - Replace: tìm và thay thế chuỗi. Cú pháp: Replace(Expression, find, replace[, start[, count[, compare]]]) Trong đĩ: - Expression: Biểu thức chuỗi chứa chuỗi cần thay thế. - find: Chuỗi cần tìm. - replace: Chuỗi thay thế chuỗi tìm được. - start: Tương tự như hàm InStr. - count: Xác định số lần thay thế. Mặc định là 1. - compare: Kiểu so sánh chuỗi. Giá trị: vbTextCompare, vbBinaryCompare - LTrim (RTrim): cắt tất cả các khoảng trắng bên trái (bên phải của chuỗi) - UCase: đổi chuỗi sang chuỗi gồm các ký tự là chữ hoa. Cú pháp: UCase(string) - Asc: cho mã Ascii của một ký tự. - Chr: trả về ký tự ứng với mã Ascii được chỉ định. - InstrRev: tương tự như InStr nhưng việc tìm kiếm được tiến hành từ phải sang. - Val: Hàm đổi chuỗi sang số. - Str: Hàm đổi số sang chuỗi. II.3.8 Date (Kiểu thời gian) Đặc điểm: Dùng để lưu trữ và thao tác trên các giá trị thời gian (ngày và giờ). Để cho VB biết dữ liệu là kiểu Date ta cần đặt giữa dấu ## hoặc “”. Việc định dạng hiển thị tùy thuộc vào việc thiết lập trong Control Panel. Phạm vi áp dụng: Lưu trữ các giá trị thời gian, ngày tháng. Ví dụ: Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 20
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Dim D As Date D = #01/02/98# ‘ Hay “01/02/98” Nếu hiểu theo kiểu người Mỹ, đây là ngày 2 tháng 1 năm 1998, cịn nếu theo kiểu Vietnam thì đây là ngày 1 tháng 2 năm 1998. Chọn kiểu ngày tháng trong Control Panel|Regional Setting. - Hàm Now: trả về ngày giờ hiện tại. Ví dụ: MsgBox "NOW IS " & Format (Now, "ddd dd-mmm-yyyy hh:nn:ss") ' sẽ hiển thị NOW IS Tue 05-Oct-2004 16:15:53 II.3.9 Kiểu mảng (array) Đặc điểm: - Mảng là một khối dữ liệu gồm các phần tử cĩ cùng tên và kiểu dữ liệu. Các phần tử trong mảng phân biệt với nhau bởi các chỉ số. - Mảng cĩ thể cĩ một chiều hoặc nhiều chiều. - Trong VB cĩ hai loại biến mảng: mảng cĩ chiều dài cố định và mảng động (chiều dài cĩ thể thay đổi lúc thi hành). Phạm vi áp dụng: Đơi khi chúng ta cĩ nhiều biến tương tự nhau, thí dụ như điểm thi của 10 học sinh, nếu phải đặt tên khác nhau cho từng biến (VD: HoaMark, TaiMark, SonMark, TamMark, NgaMark, HuongMark .v.v ) thì bất tiện. Chúng ta cĩ thể dùng Array để cĩ một tên chung cho cả nhĩm, rồi nĩi đến điểm của từng người một bằng cách dùng một con số gọi là ArrayIndex. Việc lưu trữ dùng mảng cịn giúp chúng ta xử lý dữ liệu dễ dàng hơn. Ví dụ việc tổng hợp điểm của danh sách trên. II.3.10 Kiểu tự định nghĩa Đặc điểm: Kiểu dữ liệu do người dùng định nghĩa tương tự như kiểu bản ghi (Record) trong Pascal hay kiểu cấu trúc (Struct) trong C. - Kiểu dữ liệu này gồm các trường, cĩ thể là các kiểu dữ liệu khác nhau. Phạm vi áp dụng: Trong các trường hợp cần lưu một giá trị cĩ nhiều thuộc tính. Ví dụ các thơng số của một lỗ khoan. II.3.11 Kiểu lớp (class) Đặc điểm: Lớp được xây dựng trong Class Module hoặc trong các thư viện cĩ sẵn. - Lớp bao gồm: • Các thuộc tính (Property): thực chất là các biến thành viên khai báo trong lớp đĩ. • Các phương thức (Method): thực chất là các chương trình con được khai báo trong lớp - các hàm (Function) và thủ tục (Procedure) thành viên. - Ngồi ra trong VB, lớp cĩ thể cĩ sự kiện (Event). Sự kiện tạo ra khả năng linh động trong xây dựng quan hệ giữa đối tượng với nhau và với mơ mơi trường. II.3.12 Kiểu Variant Đặc điểm: Kiểu Variant là một kiểu dữ liệu đặc biệt trong VB. Biến kiểu Variant cĩ thể chứa mọi giá trị của các kiểu dữ liệu khác, kể cả mảng. Tuy Variant tiDraftện dụng nhưng nếu Variant được dùng nhiều chỗ, trong nhiều tình huống, cần xác định rõ hiện đang là kiểu nào. Bộ mơn Tự động hĩa Thiết kế Cầu đường 21
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Phạm vi sử dụng: Hạn chế dùng Variant vì sẽ gây lãng phí bộ nhớ và giảm tốc độ thực thi của chương trình. Một số chú ý khi dùng biến kiểu Variant: - Nếu muốn thi hành các hàm tốn học, Variant phải chứa giá trị kiểu số. - Nếu muốn nối chuỗi, dùng tốn tử & thay vì tốn tử +. Giá trị Empty: - Đây là giá trị đặc biệt xuất hiện khi một biến chưa được gán giá trị. Ta dùng hàm IsEmpty để kiểm tra giá trị Empty. - Giá trị Empty biến mất khi cĩ một giá trị bất kỳ được gán cho biến Variant, để trở về giá trị Empty, ta gán từ khố Empty cho biến Variant. Giá trị Null: Biến Variant chứa giá trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khơng cĩ dữ liệu hoặc dữ liệu khơng xác định. Giá trị Error: Trong một biến kiểu Variant, Error là một giá trị đặc biệt cho biết đã cĩ một lỗi đã xảy ra bên trong thủ tục. Ví dụ: Private Sub cmdShowDataTypes_Click() Dim sMess As String Dim vVariant As Variant vVariant = "Xin chao" 'String sMess = TypeName(vVariant) & vbCrLf ' xuống dịng & về đầu dịng vVariant = 25 ' Integer sMess = sMess & TypeName(vVariant) & vbCrLf vVariant = True ' Boolean sMess = sMess & TypeName(vVariant) & vbCrLf 'Date vVariant = #1/1/2001# 'trong cặp dấu # sMess = sMess & TypeName(vVariant) MsgBox sMess End Sub Khi chạy chương trình kết quả là: II.3.13 Chuyển đổi (convert) kiểu dữ liệu VB cung cấp một số hàm để chuyển kiểu dữ liệu của một biến từ loại này sang loại khác. Val (str): Trả về giá trị kiểu thực của một chuỗi: a= Val(“1245.43 asd”) Nếu trong chuỗi cĩ chứa ký tự khác số, hàm sẽ loại bỏ ký tự đĩ. CDbl (x):Trả về giá trị kiểu thực của chuỗi, chuỗi này phải là các số (number). CInt (x): Trả về giá trị kiểu nguyên (Integer). CStr (x): Trả về giá trị kiểu chuỗi. Str (x): Trả về giá trị kiểu chuỗi của một số. Các lưu ý: - Kiểu dữ liệu số nguyên: Byte, Integer, Long khi gán giá trị thập phân thì VB sẽ gán giá trị nguyên làm trịn.Draft Lấy VD. Bộ mơn Tự động hĩa Thiết kế Cầu đường 22
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC - Thực hiện các phép tính số nguyên với số thực sẽ cho kết quả là số thực. VD: Integer + Double = Double. Question for today! II.4 CÁC KHAI BÁO VB cho phép dùng một biến mà khơng cần khai báo, tuy nhiên chúng ta nên định nghĩa các biến, hằng, đối tượng sẽ dùng , Khai báo một biến sẽ cho VB biết về sự tồn tại của nĩ để cấp phát bộ nhớ lưu trữ. Để VB yêu cầu tất cả các biến trong mã lệnh phải được khai báo tường minh ta thêm khai báo vào đầu mã lệnh (Sẽ nhắc lại ở phần sau): Option Explicit II.4.1 Khai báo biến với các kiểu dữ liệu thơng thường Khái niệm biến: Biến (Variable) là vùng lưu trữ được đặt tên để chứa dữ liệu tạm thời trong quá trình tính tốn, so sánh và các cơng việc khác. Cách khai báo Dim as - Dùng các từ khĩa Public hay Private nhằm xác định phạm vi hoạt động của biến (sẽ giải thích ở phần sau). Public as Hay: Private as Nếu khai báo biến khơng xác định kiểu dữ liệu thì biến đĩ cĩ kiểu Variant. Ví dụ: Dim sHoTen As String Public iTuoi As Integer Private iKetHon As Boolean II.4.2 Khai báo hằng. - Là kiểu dữ liệu dùng lưu những giá trị khơng bao giờ thay đổi. Việc sử dụng kiểu hằng số giúp chúng ta hạn chế những nhầm lần. Đơn cử như việc sử dụng một thơng số nhiều lần trong chương trình. [Public/ Private] Const = Ví dụ: Const g = 9.8 Const Num As Integer = 4*5 II.4.3 Khai báo kiểu tự định nghĩa. - Khai báo các kiểu dữ liệu dạng bản ghi gồm các trường theo nhu cầu của người sử dụng. Cú pháp khai báoDraft như sau: Bộ mơn Tự động hĩa Thiết kế Cầu đường 23
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC [Pravite/Public] Type as as as End Type Sau khai báo, để truy cập tới một trường của biến kiểu bản ghi, dùng tốn tử (.) và cặp từ khĩa With End With Ví dụ: Dữ liệu về điểm đo trong khảo sát địa hình cĩ thể được xây dựng gồm: chỉ số của điểm (id), tên điểm (name), tọa độ x, tọa độ y, cao độ z, mã địa vật (madiavat) Private Type diemdo ‘ Khai báo kiểu Id as Long Ten as String X as Double, Y as Double, Z as Double Madiavat as Long End Type Private Sub Command1_Click() Dim diem as diemdo ‘ Tạo biến và gán dữ liệu With diem .Id = 1 .x = 1.5: .y = 24: .z = 11.3 .Ten = “Điểm 1” .Madiavat = 1 End With End Sub II.4.4 Khai báo mảng • Mảng tĩnh (mảng cĩ kích thước cố định) [Public/ Private/ Dim] ( ) as Các thơng số về chiều cĩ thể biểu diễn qua các ví dụ sau: Dim a(1 to 4) as Integer: mảng 1 chiều chỉ số từ 1 đến 4 kiểu nguyên. Dim a(3) as Long: mảng 1 chiều chỉ số tới 3 kiểu Long (chỉ số xuất phát mặc định là 0 hoặc được xác định thơng qua khai báo Option Base) Option Base 0 hoặc Option Base 1 Dim a(1 to 4,2 to 6) as Double: mảng 2 chiều chỉ số từ 1 tới 4 và 2 tới 6. Dim a(2,2,3) as String: mảng 3 chiều với miền chỉ số trên tương là 2, 2 và 3. • Mảng động (mảng cĩ kích thước thay đổi) [Public/Draft Private/ Dim] () as Trong khai báo trên khơng cĩ các thơng số về chiều, thuần túy chỉ là một khai báo. Bộ mơn Tự động hĩa Thiết kế Cầu đường 24
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC - Các phần tử của mảng chưa được tạo ra (hay mảng chưa được cấp phát bộ nhớ). - Dữ liệu của mảng chỉ được tạo ra hoặc thay đổi khi cĩ lệnh Redim. Lệnh này cĩ tác dụng tạo ra mảng thực sự (cĩ kích thước và các phần tử tương ứng) hoặc thay đổi kích thước của một mảng động. Redim ( ) as - Chú ý rằng phải đúng như khai báo, các thơng số về chiều cĩ thể khác trước cả về số chiều và kích thước của từng chiều. - Dữ liệu mảng cũ sẽ bị, thay vào đĩ là phần tử của mảng mới được khởi tạo. Ví dụ: Dim diem as diemdo Dim a() as Long Redim a(1 to 5) as Long a(1) = 100: a(2) = 200 ‘a(1) và a(2) cĩ giá trị tương ứng 100 và 200 Redim a(1 to 3, 2 to 4) as Long ‘Mảng được làm mới hồn tồn là một mảng 2 chiều, các giá trị a(1) và a(2) khơng cịn ý nghĩa nữa - Trong trường hợp muốn thay đổi kích thước của mảng mà khơng mất dữ liệu, dùng lệnh ReDim với từ khĩa Preserve. Tuy nhiên chỉ thay đổi được biên trên của chiều cuối cùng trong mảng. Nếu thay đổi các chiều khác sẽ phát sinh lỗi. Ví dụ Dim a() as Long ReDim a(1 to 5) as Long a(1) = 100: a(2) = 200 ReDim Preserve a(1 to 6) as Long ‘Thay đổi mở rộng mảng thêm một phần tử mà khơng ảnh hưởng đến các dữ liệu trước a(1)vẫn cĩ giá trị 100, a(2)=200 Khơng thêm được chỉ số 0 vào mảng trên: ReDim Preserve a(0 to 6) as Long (Lỗi) Một số thao tác trên mảng - Hàm UBound trả về biên trên của một mảng. - Hàm LBound trả về biên dưới của một mảng. - Truy xuất từng phần tử trong mảng: ( ) - Sao chép mảng: Đối với VB6, ta cĩ thể gán một mảng cho một mảng khác, hoặc kết quả trả về của một hàm cĩ thể là một mảng. Ví dụ: Sub ByteCopy (old () As Byte, New () As Byte) New = old End Sub Cách này cũng chỉ áp dụng được cho mảng khai báo động. - Mảng là kếtDraft quả trả về của hàm. Chẳng hạn như: Bộ mơn Tự động hĩa Thiết kế Cầu đường 25
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Public Function ArrayFunction (b As Byte) As Byte() Dim x(2) As Byte x(0) = b x(1) = b + 2 x(2) = b + b ArrayFunction = x End Function II.4.5 Khai báo, tạo và làm việc với biến đối tượng. Khai báo và tạo biến đối tượng phải dùng thêm từ khĩa New Dim as New Phép gán đối tượng được thực hiện với từ khĩa Set Set = - Chú ý rằng nếu thực hiện khai báo một biến đối tượng như thơng thường (khơng cĩ từ khĩa New) thì biến thực sự chưa được tạo ra. Trong trường hợp ấy, sau đĩ phải cĩ thao tác tạo đối tượng với các từ khĩa Set và New. Dim as Set = New - Các phép tốn, các tốn tử cĩ được áp dụng cho đối tượng hay khơng tùy thuộc vào lớp tạo ra nĩ. - Làm việc với một biến đối tượng tức là làm việc với các thuộc tính, phương thức và các sự kiện của nĩ. Để truy cập tới các thuộc tính và phương thức của đối tượng, sử dụng tốn tử (.) . . (Các tham số) Sẽ cụ thể hơn trong các chương sau. II.4.6 Các chú ý khi khai báo - Cĩ thể khai báo nhiều biến cùng lúc: Dim passw As String, yourName As String, firstnum As Integer, - Nếu kiểu dữ liệu khơng được định nghĩa, VB sẽ tự động khai báo là kiểu Variant. - Dữ liệu kiểu chuỗi (String) cĩ hai cách khai báo, ngồi cách thơng thường, cĩ thể khai báo độ dài của giá trị. Dim VariableName as String * n trong đĩ n là số lượng ký tự mà biến cĩ thể lưu trữ. Ví dụ: Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 26
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Dim yourName as String * 10 yourName sẽ khơng giữ lớn hơn 10 ký tự. II.5 BIỂU THỨC II.5.1 Các khái niệm - Biểu thức: là tập hợp các tốn hạng và các tốn tử kết hợp lại với nhau theo quy tắc nhất định để tính tốn ra một giá trị nào đĩ. - Tốn tử hay phép tốn (Operator): là từ hay ký hiệu nhằm thực hiện phép tính và xử lý dữ liệu. - Tốn hạng: là giá trị dữ liệu (biến, hằng ). II.5.2 Các loại phép tốn Các phép tốn số học: Thao tác trên các giá trị cĩ kiểu dữ liệu số. Tốn tử Mơ tả ^ Lũy thừa * Nhân / Chia \ Chia lấy phần nguyên Mod Chia lấy dư + Cộng - Trừ Các phép tốn quan hệ: Đây là các phép tốn mà giá trị trả về của chúng là một giá trị kiểu Boolean (TRUE hay FALSE). Phép tốn Ý nghĩa = So sánh bằng nhau So sánh lớn hơn = So sánh lớn hơn hoặc bằng <= So sánh nhỏ hơn hoặc bằng Các phép tốn logic: Là các phép tốn tác động trên kiểu Boolean và cho kết quả là kiểu Boolean. Các phép tốn này bao gồm AND (và), OR (hoặc), NOT (phủ định). Sau đây là bảng giá trị của các phép tốn: Tốn tử Mơ tả Not DraftNot TRUE = FALSE; Not FALSE = TRUE And TRUE And TRUE = TRUE; FALSE And FALSE = FALSE Bộ mơn Tự động hĩa Thiết kế Cầu đường 27
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Các trường hợp khác cho kết quả FALSE FALSE Or FALSE = FALSE; Or Các trường hợp khác cho kết quả TRUE Xor A Xor B: A hoặc B nhưng khơng phải cả hai. Eqv A Eqv B; So sánh tương đương. Giống nhau cho giá trị True Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 28
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Một số hàm tốn học thơng dụng Các hàm tốn học cĩ thể tra cứu trong Object Browser (thư viện Math) Abs (x): Hàm giá trị tuyệt đối Exp (x): Hàm mũ cơ số tự nhiên ex Log (x): Logarit cơ số tự nhiên Sqr (x): lấy bình phương Các hàm lượng giác: Cos (x), Sin (x), Tan (x) Hàm lượng giác ngược: Atn (x) Arctg. Fix (x): Hàm lấy phần nguyên chẵn. Ví dụ Fix (5.1) = 5; Fix (5.6) = 5 Int (x): Hàm lấy phần nguyên làm trịn. Round (x, num) làm trịn số thực x đến (num) chữ số thập phân. II.6 CÁC CÂU LỆNH Một câu lệnh (statement) xác định một cơng việc mà chương trình phải thực hiện để xử lý dữ liệu đã được mơ tả và khai báo. Các câu lệnh được ngăn cách với nhau bởi ký tự xuống dịng. II.6.1 Lệnh gán Cú pháp: = Ví dụ: Giả sử ta cĩ khai báo sau: Dim TodayTemp As Single, MinAge As Integer Dim Sales As Single, NewSales As Single, FullName As String Các lệnh sau gán giá trị cho các biến trên: MinAge = 18 Sales = 200000 NewSales = Sales * 1.2 Giả sử người dùng cần nhập họ và tên vào ơ nhập liệu TextBox cĩ thuộc tính Name là txtName, câu lệnh dưới đây sẽ lưu giá trị của ơ nhập liệu vào trong biến FullName: FullName = txtName.Text Lưu ý: Kiểu dữ liệu của biểu thức (vế phải của lệnh gán) phải phù hợp với biến ta cần gán trị. II.6.2 Lệnh rẽ nhánh If Từ khĩa: If, Then, Else, End If Dạng 1 Sơ đồ khối Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 29
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Điều kiện True IF Khối lệnh False THEN END IF Cú pháp Một dịng lệnh: If Then Nhiều dịng lệnh: If Then Các dịng lệnh End If Dạng 2 Sơ đồ khối Điều kiện True IF False Khối lệnh Khối lệnh ELSE THEN END IF Cú pháp If Then [Khối lệnh 1] ElseIf Then [Khối lệnh 2] [Else Draft[Khối lệnh n]] End If Bộ mơn Tự động hĩa Thiết kế Cầu đường 30
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC VB sẽ kiểm tra các điều kiện, nếu điều kiện nào đúng thì khối lệnh tương ứng sẽ được thi hành. Ngược lại nếu khơng cĩ điều kiện nào đúng thì khối lệnh sau từ khĩa Else sẽ được thi hành. Ví dụ: If (TheColorYouLike = vbRed) Then MsgBox "You are a lucky person" ElseIf (TheColorYouLike = vbGreen) Then MsgBox "You are a hopeful person" ElseIf (TheColorYouLike = vbBlue) Then MsgBox "You are a brave person" ElseIf (TheColorYouLike = vbMagenta) Then MsgBox "You are a sad person" Else MsgBox "You are an average person" End If II.6.3 Câu lệnh lựa chọn Select Case Trong trường hợp cĩ quá nhiều các điều kiện cần phải kiểm tra, nếu ta dùng cấu trúc rẽ nhánh If Then thì đoạn lệnh khơng được rõ ràng, khĩ kiểm tra, sửa đổi khi cĩ sai sĩt. Ngược lại với cấu trúc Select Case, biểu thức điều kiện sẽ được tính tốn một lần vào đầu cấu trúc, sau đĩ VB sẽ so sánh kết quả với từng trường hợp (Case). Nếu bằng nĩ thi hành khối lệnh trong trường hợp (Case) đĩ. Các từ khĩa: Select Case, Case, End Select Sơ đồ khối Vế trái Vế phải 1 Khối lệnh 1 Vế phải 1 Khối lệnh 1 Vế phải n Khối lệnh n Cú pháp Select Case Case [Khối lệnh 1] Case [Khối lệnh 2] [Case Else [Khối lệnh n]] End Select Mỗi danh sách kết quả biểu thức sẽ chứa một hoặc nhiều giá trị. Trong trường hợp cĩ nhiều giá trị thì mỗi Draftgiá trị cách nhau bởi dấu phẩy (,). Nếu cĩ nhiều Case cùng thỏa điều kiện thì khối lệnh của Case đầu tiên sẽ được thực hiện. Bộ mơn Tự động hĩa Thiết kế Cầu đường 31
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Ví dụ: Select Case TheColorYouLike Case vbRed MsgBox "You are a lucky person" Case vbGreen MsgBox "You are a hopeful person" Case vbBlue MsgBox "You are a brave person" Case vbMagenta MsgBox "You are a sad person" Case Else MsgBox "You are an average person" End Select Tốn tử Is & To Tốn tử Is: Được dùng để so sánh với một biểu thức nào đĩ. Tốn tử To: Dùng để xác lập miền giá trị của . Ví dụ: Select Case Tuoi Case Is = to [Step ] Khối_lệnh Next Biến đếm, điểm đầu, điểm cuối, bước nhảy là những giá trị số (Integer, Single, ). Bước nhảy cĩ thể là âm hoặc dương. Nếu bước nhảy là số âm thì điểm đầu phải lớn hơn điểm cuối, nếu khơng khối lệnh sẽ khơng được thi hành. Khi Step khơng được chỉ ra, VB sẽ dùng bước nhảy mặc định là 1. Ví dụ: Tính N! - Xây dựng giao diện Draft - Viết mã cho sự kiện Command1_Click Bộ mơn Tự động hĩa Thiết kế Cầu đường 32
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Private Sub Command1_Click() Dim i As Integer, n As Integer, Kq As Long n = Val(txtNum.Text) Kq = 1 For i = 1 To n Kq = Kq * i Next KQ.Caption = Str(Kq) End Sub II.6.5 Câu lệnh lặp xác định trong một tập hợp Thực hiện một khối lệnh lặp theo một biến chạy trong một tập hợp xác định. Các từ khĩa: For Each, In, Next Cú pháp For Each In Khối_lệnh Next Lưu ý: - Phần tử trong tập hợp chỉ cĩ thể là biến Variant, biến Object, hoặc một đối tượng trong Object Browser. - Khơng dùng For Each Next với mảng chứa kiểu tự định nghĩa vì Variant khơng chứa kiểu tự định nghĩa. Ví dụ: Dim DanhSach(1) As String Dim HoTen As Variant DanhSach(0) = "Tran Van A": DanhSach(1) = "Nguyen Thi B" For Each HoTen In DanhSach MsgBox HoTen Next II.6.6 Câu lệnh lặp khơng xác định Thực hiện một khối lệnh với số lần lặp khơng định trước, theo một biểu thức điều kiện. (biểu thức điều kiện cĩ giá trị Boolean: True hoặc False). Kiểu 1: Lặp trong điều kiện là True Do While Khối_lệnh Loop Nếu muốn vịng lặp luơn cĩ ít nhất một lần: Do Khối_lệnh Loop While Kiểu 2: Lặp trongDraft điều kiện là False Bộ mơn Tự động hĩa Thiết kế Cầu đường 33
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Do Until Khối_lệnh Loop Nếu muốn vịng lặp luơn cĩ ít nhất một lần thi hành khối lệnh sử dụng cú pháp Do Khối lệnh Loop Until Ví dụ minh họa: Dim Check, Counter Check = False: Counter = 0 ' Khởi tạo Do While Counter True . Counter = Counter + 1 ' Tăng biến đếm. MsgBox Counter ‘ Thơng báo giá trị biến đếm Loop ‘ Cĩ thể chuyến While Counter < 5 xuống đây, lúc đĩ Counter sẽ chạy đến 5 Do Until Check ' Check cĩ giá trị False Counter = Counter + 1 ' Tăng biến đếm. If Counter = 5 Then Check= True Loop Để thốt khỏi vịng lặp, sử dụng câu lệnh Exit Do II.7 CHƯƠNG TRÌNH CON (HÀM VÀ THỦ TỤC) II.7.1 Khái niệm Trong những chương trình lớn, cĩ thể cĩ những đoạn chương trình viết lặp đi lặp lại nhiều lần, để tránh rườm rà và mất thời gian khi viết chương trình người ta thường phân chia chương trình thành nhiều module, mỗi module giải quyết một cơng việc nào đĩ. Các module như vậy gọi là các chương trình con. Một tiện lợi khác của việc sử dụng chương trình con là ta cĩ thể dễ dàng kiểm tra xác định tính đúng đắn của nĩ trước khi ráp nối vào chương trình chính và do đĩ việc xác định sai sĩt để tiến hành hiệu đính trong chương trình chính sẽ thuận lợi hơn. Trong Visual Basic, chương trình con cĩ hai dạng là hàm (Function) và thủ tục (Sub). Hàm khác thủ tục ở chỗ hàm trả về cho lệnh gọi một giá trị thơng qua tên của nĩ cịn thủ tục thì khơng. Do vậy ta chỉ dùng hàm khi và chỉ khi thoả mãn đồng thời các yêu cầu sau đây: - Ta muốn nhận lại một kết quả (chỉ một mà thơi) khi gọi chương trình con. - Ta cần dùng tên chương trình con (cĩ chứa kết quả) để viết trong các biểu thức. Nếu khơng thỏa mãn hai điều kiện ấy thì dùng thủ tục. II.7.2 Hàm - Function Hàm (Function) là một chương trình con cĩ nhiệm vụ tính tốn và cho ta một kết quả. Kết quả này được trDraftả về trong tên hàm. Cách khai báo: Bộ mơn Tự động hĩa Thiết kế Cầu đường 34
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC [Private | Public | Static] Function ([ [As ]]) [As ] hay End Function Trong đĩ: - : Tên hàm được đặt giống quy tắc tên biến, hằng, - [As ]: cĩ thể cĩ hay khơng. Nếu cĩ nhiều tham số thì mỗi tham số phân cách nhau dấu phẩy. Nếu khơng xác định kiểu tham số thì tham số cĩ kiểu Variant. - : Kết quả trả về của hàm, trong trường hợp khơng khai báo As , mặc định, VB hiểu kiểu trả về kiểu Variant. Cú pháp gọi hàm: [(tham số)]. Ví dụ: Tính giai thừa N. II.7.3 Thủ tục - Sub Thủ tục là một chương trình con thực hiện một hay một số tác vụ nào đĩ. Thủ tục cĩ thể cĩ hay khơng cĩ tham số. Cách khai báo: [Private | Public] [Static] Sub ([ [As ]]) hay End Sub Trong đĩ: - : Tên được đặt giống quy tắc tên biến, hằng, - ([ [As ] : cĩ thể cĩ hay khơng. Nếu cĩ nhiều tham số thì mỗi tham số phân cách nhau dấu phẩy. Nếu khơng xác định kiểu tham số thì tham số cĩ kiểu Variant. Để gọi thủ tục để thực thi, cĩ 2 cách: [ ] Hoặc Call ([ ]) Ví dụ: Thủ tục kiểm tra xem số nguyên N cĩ phải là số nguyên tố hay khơng? Sub KTraNgTo(N As Integer) Dim i As Integer i = 2 Do While (i 0) i = i + 1 Loop If (i > Sqr(N)) And (N <> 1) Then MsgBox Str(N) & " la so nguyen to" Else MsgBox Str(N) & " khong la so nguyen to" End If End Sub Cĩ hai cách gọi thủ tục: KTraNgTo Val(txtNum.Text) Hoặc Call KtraNgTo(Val(txtNum.Text)) Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 35
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC II.7.4 Truyền tham số cho chương trình con Cĩ hai cách truyền tham số cho chương trình con: - ByVal – Truyền tham số theo tham trị (giá trị) Một bản sao của biến được truyền vào chương trình con. Chương trình con khơng làm việc với biến mà chỉ làm việc với bản sao giá trị của biến. Do đĩ, nếu trong chương trình con cĩ sự thay đổi giá trị của biến thì chỉ cĩ bản sao bị ảnh hưởng mà khơng liên quan đến giá trị của biến. Trong VB, truyền tham số theo tham trị phải được chỉ rõ bằng từ khĩa ByVal. Ví dụ: Sub Twice (ByVal Num As Integer) Num = Num * 2 Print Num End Sub Private Sub Form_Click() Dim A As Integer A = 4 Print A Twice A Print A End Sub Kết quả thực hiện của đoạn chương trình trên: 4 8 4 - ByRef – Truyền tham số theo tham biến (địa chỉ) Địa chỉ của biến sẽ được truyền cho chương trình con. Do đĩ bất kì thay đổi nào của thủ tục trên biến sẽ tác động trực tiếp lên giá trị của biến. Trong VB, truyền tham số theo tham biến là mặc định. Dùng từ khĩa ByRef Ví dụ: Sub Twice (Num As Integer) Num = Num * 2 Print Num End Sub Private Sub Form_Click() Dim A As Integer A = 4 Print A Twice A Print A End Sub Kết quả thực hiện của đoạn chương trình trên: 4 8 8 Các ví dụ tạo chương trình con đơn giản - Cách tạo chươDraftng trình con trong VB: Tools > Add Procedure Bộ mơn Tự động hĩa Thiết kế Cầu đường 36
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Public Function GiaiThua(ByVal A As Integer) As Integer GiaiThua=1 Dim i As Integer i = 1 Do While i < A i = i+1 GiaiThua=GiaiThua * i Loop End Function Private Sub Form_Load() MsgBox GiaiThua (4) End Sub Public Sub TrungBinhCong(ByVal A As Double, ByVal B As Double, ByRef C As Double) C = (A + B) / 2 End Sub Private Sub Form_Load() Dim X As Double TrungBinhCong 3, 5, X ‘Cĩ thể dùng Call TrungBinhCong(3, 5,X) MsgBox X End Sub - Truyền tham số dạng mảng (Byref) Function TrungBinhCong(X() As Integer) As Double Dim vItem As Variant Dim iTong As Integer iTong = 0 For Each vItem In X Tong = Tong + vItem Next TrungBinhCong = Tong / UBound(X) End Function Private Sub Form_Load() Dim List(1 To 5) As Integer List(1) = 1 List(2) = 2 List(3) = 3 List(4) = 4 List(5) = 5 MsgBox TrungBinhCong(List) End Sub - Tham số cĩ tùyDraft chọn cĩ hoặc khơng (Optional) Bộ mơn Tự động hĩa Thiết kế Cầu đường 37
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Function DienTichCN(X As Double, Optional Y As Variant) As Double ‘Cĩ thể gán Y 1 giá trị mặc định If IsMissing(Y) Then ‘ Trường hợp khơng cĩ Y DienTichCN = X * X Else DienTichCN = X * Y End If End Function Private Sub Form_Load() MsgBox DienTichCN(3) ‘Diện tích hình vuơng MsgBox DienTichCN(3, 4) ‘Diện tích hình chữ nhật End Sub II.8 TRUY XUẤT DỮ LIỆU TRONG VISUAL BASIC II.8.1 Các khái niệm a. Module: Một ứng dụng đơn giản cĩ thể chỉ cĩ một Form, lúc đĩ tất cả mã lệnh của ứng dụng đĩ được đặt trong cửa sổ mã lệnh của Form đĩ (gọi là Form Module). Khi ứng dụng được phát triển lớn lên, chúng ta cĩ thể cĩ thêm một số Form nữa và lúc này khả năng lặp đi lặp lại nhiều lần của một đoạn mã lệnh trong nhiều Form khác nhau là rất lớn. Để tránh việc lặp đi lặp lại trên, ta tạo ra một Module riêng rẽ chứa các chương trình con được dùng chung. Visual Basic cho phép 3 loại Module: Module Form: đi kèm với mỗi một Form là một module của Form đĩ để chứa mã lệnh của Form này. Với mỗi điều khiển trên Form, module Form chứa các chương trình con và chúng sẵn sàng được thực thi để đáp ứng lại các sự kiện mà người sử dụng ứng dụng tác động trên điều khiển. Module Form được lưu trong máy tính dưới dạng các tập tin cĩ đuơi là *.frm. Module chuẩn (Standard module): Mã lệnh khơng thuộc về bất cứ một Form hay một điều khiển nào sẽ được đặt trong một module đặc biệt gọi là module chuẩn (được lưu với đuơi *.bas). Các chương trình con được lặp đi lặp lại để đáp ứng các sự kiện khác nhau của các điều khiển khác nhau thường được đặt trong module chuẩn. Module lớp (Class module): được sử dụng để tạo các đối tượng. Các đối tượng sẽ cĩ các thuộc tính và phương thức của lớp mà nĩ tạo ra. (Class module được lưu với đuơi *.cls). b. Phạm vi của biến(scope): xác định biến cĩ thể sử dụng trong phạm vi nào. Một biến sẽ thuộc một trong 3 loại phạm vi: Phạm vi biến cục bộ. Phạm vi biến module. Phạm vi biến tồn cục. II.8.2 Biến tồn cục Khái niệm: Biến tồn cục là biến cĩ phạm vi hoạt động trong tồn bộ ứng dụng. Khai báo: Global [As ] II.8.3 Biến cục bộ Khái niệm: BiDraftến cục bộ là biến chỉ cĩ hiệu lực trong những khối chương trình mà chúng được định nghĩa. Bộ mơn Tự động hĩa Thiết kế Cầu đường 38
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Khai báo: Dim [As ] Lưu ý: Biến cục bộ được định nghĩa bằng từ khĩa Dim sẽ kết thúc ngay khi việc thi hành thủ tục kết thúc. II.8.4 Biến module Khái niệm: Biến Module là biến được định nghĩa trong phần khai báo (General|Declaration) của Module và mặc nhiên phạm vi hoạt động của nĩ là tồn bộ Module ấy. Khai báo: Biến Module được khai báo bằng từ khĩa Dim hay Private & đặt trong phần khai báo của Module. Ví dụ: Private Num As Integer Tuy nhiên, các biến Module này cĩ thể được sử dụng bởi các khối chương trình khác trong các Module khác. Muốn thế chúng phải được khai báo là Public trong phân Khai báo (General|Declaration) của Module. Ví dụ: Public Num As Integer Lưu ý: Khơng thể khai báo biến với từ khĩa là Public trong chương trình con. II.9 GỠ LỖI TRONG VISUAL BASIC (Debug) Trong quá trình viết mã lệnh và chạy thử một dự án, việc phát sinh các lỗi là khơng thể tránh khỏi. Vì vậy, việc phát hiện và xử lý lỗi là điều tất yếu. Trình tự của cơng việc này như sau: 1 Phát hiện lỗi và phân loại lỗi phát sinh. 2 Tìm kiếm vị trí mã lệnh phát sinh lỗi. 3 Sửa lỗi. 4 Xử lý, ngăn chặn lỗi cĩ thể xảy ra trong tương lai (bẫy lỗi). (Dù các lỗi xảy ra trong khi xây dựng chương trình đã được khắc phục, nhưng khơng thể đảm bảo rằng sẽ khơng phát sinh lỗi khi chương trình hoạt động trong tương lai. Vì vậy, người lập trình phải xem xét trước tới những khả năng cĩ thể xảy ra và cĩ xử lý tương ứng). Chúng ta cĩ các cơng cụ hỗ trợ quá trình gỡ lỗi Debug Toolbar: View | Toolbars | Debug II.9.1 Phân loại lỗi lập trình Cĩ các loại lỗi cơ bản thường gặp: Các lỗi cú pháp (Syntax Error) Các lỗi phát sinh do viết mã lệnh sai quy tắc. - Vi phạm khi Draftđặt hay gọi tên biến và hàm: Lỗi loại này thường rất dễ tìm ra trong lúc phát triển mã. Bộ mơn Tự động hĩa Thiết kế Cầu đường 39
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC - Lỗi chính tả: người viết mã cĩ thể viết hay gọi sai tên hàm, tên biến. Trong VB nếu khơng sử dụng khai báo Option Explicit thì sẽ cĩ thể gây sai sĩt nghiêm trọng vì trong quá trình dịch VB khơng phát hiện ra. - Vượt quá khả năng tính tốn: Bản thân máy tính và hệ điều hành cũng cĩ rất nhiều giới hạn về phần cứng, phần mềm và các đặc diểm chuyên biệt. Khi người lập trình yêu cầu máy làm quá khả năng sẽ gây ra các lỗi mà đơi khi khơng xác định được. - Gán sai dữ liệu: Tức là dùng một dữ liệu cĩ kiểu khác với kiểu của biến để gán cho biến đĩ một cách khơng chủ ý. Khi biên soạn, Visual Basic sẽ dị lỗi cú pháp tửng lệnh mỗi khi Enter, và thơng báo ngay lỗi đĩ. Nếu đúng cú pháp, nĩ sẽ chỉnh lại khoảng cách giữa 2 từ, viết lại các từ khĩa hay tên các hàm của Basic. Các lỗi khi chạy chương trình (Runtime Error) Các lỗi phát sinh khi chương trình được thực thi. Tất nhiên, các lỗi này thường khơng do nguyên nhân lỗi cú pháp mà tuỳ thuộc điều kiện cụ thể khi chương trình được thực thi. Ví dụ các lỗi do hệ thống khơng đáp ứng được yêu cầu của mã lệnh thực thi như tràn bộ nhớ, các tài nguyên mà chương trình sử dụng khơng cĩ trong hệ thống, Các lỗi thực thi thường dẫn tới sự chấm dứt hoạt động của chương trình thậm chí của tồn bộ hệ thống. Các lỗi do thuật giải Các lỗi xảy ra do sự sai sĩt trong thuật tốn xử lý hoặc trong quá trình cài đặt và sử dụng các thuật tốn. Các lỗi thuật giải thường dẫn tới kết quả xử lý của chương trình bị sai, trong nhiều trường hợp các lỗi thuật giải cũng cĩ thể là nguyên nhân làm phát sinh các lỗi thực thi. Các lỗi thuật giải là những lỗi khơng được mơi trường biên dịch phát hiện. Việc phát hiện và sửa lỗi chỉ cĩ thể được thực hiện bởi người lập trình. Vì vậy, đây là loại lỗi khĩ phát hiện và khắc phục nhất. II.9.2 Phát hiện và khắc phục lỗi trong lập trình Ø Các lỗi cú pháp Các lỗi cú pháp cĩ thể được khắc phục khá dễ dàng do người lập trình được thơng báo của trình biên dịch ngay trong quá trình viết mã lệnh. Ø Các lỗi thực thi và lỗi thuật giải Trước hết người dùng phải xác định rõ loại lỗi, nguyên nhân và tiến trình gây lỗi. Từ đĩ phát hiện ra đoạn mã lệnh gây lỗi và tiến hành sửa chữa. Trong các trình biên dịch hiện đại nĩi chung và VBIDE nĩi riêng, người dùng được hỗ trợ rất nhiều thơng qua các tính năng gỡ rối như biên dịch theo từng bước, theo các điểm dừng, hiển thị các kết quả trung gian. Các tính năng này được tổ chức trong menu Debug của VBIDE. Cụ thể như sau: - Chạy từng bước (Step Into – phím tắt F8): chương trình được dịch theo từng dịng lệnh. - Chạy từng bước với khối lệnh (Step Over – phím tắt SHIFT+F8): tương tự như chạy từng bước (Step Into) nhưng việc thực thi một chương trình con được coi như thực thi một dịng lệnh. Vì vậy nếu trong chương trình hiện tại cĩ một lời gọi chương trình con thì chương trình con sẽ được thực thi như một lệnh và do đĩ con trỏ biên dịch sau đĩ sẽ nhảy tới dịng lệnh tiếp theo của chương trình hiện tại (Trong khi đĩ nếu thực hiện biên dịch với lệnh Step Into, con trỏ biên dịch sẽ nhảy tới dịng lệnh đầu tiên của chương trình con được gọi). - Chạy ra ngồi chương trình con (Step Out – phím tắt CTRL+SHIFT+F8): nếu con trỏ biên dịch đang ở trong một chương trình con, thì lệnh biên dịch Step Out sẽ dịch tồn bộ các lệnh cịn lại trong chương trình con đĩ và đưa con trỏ lệnh tới vị trí tiếp sau vị trí cĩ lời gọi chương trình con. - Chạy tới vDraftị trí con trỏ chuột (Run to Cursor – phím tắt CTRL+F8): Chạy từ vị trí con trỏ biên dịch hiện tại tới vị trí cĩ con trỏ chuột. Bộ mơn Tự động hĩa Thiết kế Cầu đường 40
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC - Tạo điểm dừng (Break point) khi chạy chương trình: tạo điểm dừng bằng cách chọn dịng lệnh tương ứng và nhấn phím F9. Khi người dùng nhấn phím F5 để thực thi chương trình, trình biên dịch sẽ dừng lại tại các vị trí dịng lệnh đã được đánh dấu. Vị trí con trỏ biên dịch hiện tại Điểm dừng (Break point) Như đã trình bày ở trên, việc bẫy lỗi nhằm xử lý các tình huống lỗi cĩ thể xảy ra trong tương lai mà người lập trình dự tính. Trong VB, việc phát hiện và xử lý lỗi xảy ra bằng mã lệnh được thực hiện thơng qua khai báo On Error. Trong một chương trình con, tất cả các lệnh sau khai báo này nếu gây lỗi sẽ được xử lý tuỳ theo nội dung của khai báo. Các cú pháp cụ thể như sau: Khai báo Mơ tả On Error GoTo Khi cĩ lỗi xảy ra, con trỏ biên dịch sẽ nhảy tới vị trí cĩ nhãn để tiếp tục thực thi mã lênh. Khi dùng bẫy lỗi kiểu này, trước nhãn thường cĩ lệnh Exit Sub, Exit Function hoặc Exit Property (tuỳ thuộc chương trình con được bẫy lỗi) nhằm tránh thực thi các lệnh xử lý sau nhãn (thường là các lệnh ứng với xử lý lỗi) trong trường hợp lỗi khơng xảy ra. On Error Resume Next Khi cĩ lỗi xảy ra, con trỏ biên dịch sẽ nhảy tới vị trí ngay sau dịng lệnh gây lỗi để tiếp tục thực thi mã lệnh. On Error GoTo 0 Từ khai báo này, các lỗi sẽ khơng được đưa vào trong bẫy lỗi (nghĩa là bẫy lỗi sẽ bị vơ hiệu hố) cho đến khi cĩ một khai báo bẫy lỗi khác. Như vậy ngay sau khai báo này, chương trình cĩ thể ngưng hoạt động nếu cĩ lỗi xảy ra. Ngồi ra, VB cịn cho phép truy xuất đến các thơng tin về lỗi thơng qua đối tượng Err. Ví dụ: đoạn chương trình sau sẽ minh hoạ xử lý bẫy lỗi trong trường hợp đọc file khi đường dẫn khơng tồn tại. Sub SolveErrorExample() On Error GoTo lbErr Open "C:\fileABC.txt" For Input As 1 Close 1 Exit Sub lbErr: MsgBox "Loi xay ra: " & Err.Description, vbCritical, "Thong bao loi" End Sub Kết quả như sau:Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 41
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC II.9.3 Dùng khai báo Option Explicit Chúng ta thường nhìn thấy dịng chữ Option Explicit ở dịng trên cùng của các đoạn mã VB. Vậy tại sao lại cĩ nĩ và nĩ cĩ tác dụng gì? Khai báo Option Explicit yêu cầu bạn phải khai báo các biến trước khi sử dụng. Việc này giúp ta cĩ thế bảo đảm chúng ta sẽ khơng bị sai tên một biến nào cả. Ví dụ: Private Sub Command1_Click() Dim sMississippi As String sMississipi = "Hello" '< Note the missing "p" MsgBox sMississippi End Sub So sánh 2 trường hợp cĩ hoặc khơng cĩ Option Explicit. Thêm nữa việc sử dụng Option Explicit là rất quan trọng vì nếu khơng khai báo biến trước, VB sẽ mặc định kiểu của biến đĩ là Variant. Như vậy khi chạy chương trình sẽ chiếm nhiều bộ nhớ hơn, chậm hơn. II.9.4 Dùng Breakpoints Breakpoint làm chương trình ngừng lại ở vị trí mà ta muốn trong code, tiếp đĩ ta cĩ thể cho chương trình chạy từng bước và ta cĩ thể kiểm tra các biến xem chúng làm việc cĩ đúng khơng. Để sử dụng Breakpoint chọn đoạn cần kiểm tra rồi click bên trái của hàng code. Một cách khác để đặt một breakpoint là đưa con trỏ soạn thảo đến dịng cần đặt rồi chọn F9 để tắt mở Breakpoint. Lúc chương trình đang dừng, ta cĩ thể xem trị số của một biến bằng cách để con trỏ trên biến đĩ, giá trị của biến sẽ hiện ra như hình dưới: Muốn hủy bỏ tất cả breakpoints: Debug | Clear All Breakpoints. II.9.5 Dùng Immediate Window Immediate WindowDraft cho phép ta thực thi những câu lệnh VB trong khi chương trình đang dừng. Bộ mơn Tự động hĩa Thiết kế Cầu đường 42
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC Ví dụ: Dùng Print để hiển thị trị số của một biến hay kết quả của một Function, gọi một Sub hay thay đổi trị số một biến trước khi tiếp tục cho chương trình chạy lại. Thay vì dùng "Print ICounter" ta cĩ thể dùng "? ICounter". II.9.6 Dùng Watch Window Watch Window giúp chúng ta kiểm sốt biến hay một biểu thức nào đĩ trong quá trình thực thi. Cửa sổ Watch: View | Watch Window. Để thêm một Watch: Debug | Add Watch Cĩ 3 kiểu giám sát: Watch Expression – Code sẽ khơng dừng lại nhưng khi ta chạy chương trình từng bước, giá trị của biểu thức sẽ hiển thị trong cửa sổ Watch. Break When Value Is True - Visual Basic sẽ dừng việc thực thi khi biểu thức cĩ giá trị True (Giá trị khác 0) Break When Value Changes - Visual Basic sẽ dừng lại khi giá trị của biểu thức thay đổi. II.9.7 Dùng Comment (chú thích) Lúc viết mã chương trình cần thêm Comment đầy đủ để bất cứ khi nào đọc lại đoạn mã đĩ ta cĩ thể hiểu ngay mục đích của nĩ. Ta chỉ nên viết chú thích ở những điểm nào khác thường, khĩ hiểu nhằm giải thích tại sao lại làm như thế. Bên cạnh đĩ nếu là một lập trình viên chuyên nghiệp, gần như chắc chắn code bạn viết sẽ được người khác đọc và bảo trì. Do đĩ code phải đơn giản, dễ hiểu và cĩ những chú thích cụ thể. Trong VB, để viết một dịng chú thích ta sử dụng ký tự “’” ở đầu dịng. II.10 TỔ CHỨC CHƯƠNG TRÌNH Với những chương trình phức tạp, việc xây dựng chương trình theo cấu trúc để cĩ thể quản lý và bảo trì dễ dàng là hết sức cần thiết. Điều đĩ được thực hiện bằng cách chia thành các khối chức năng, trong các khối này sẽ cĩ các chương trình con, các biến, hằng liên quan đến chức năng ấy. Trong VB, các khối chức năng đĩ được tổ chức thành các Module. Ví dụ để xây dựng một chương trình tính tốn và kiểm tốn một dầm giản đơn, cĩ thể thực hiện theo một cấu trúc thơng thường như sau: - Nhập, lưu trữ và xử lý dữ liệu về hình học - Nhập, lưu trữ và xử lý dữ liệu về vật liệu - Nhập, lưu trữ và xử lý dữ liệu về cáp DƯL - Tính tốnDraft tải trọng và tổ hợp tải trọng. Bộ mơn Tự động hĩa Thiết kế Cầu đường 43
- CHƯƠNG II: NGƠN NGỮ LẬP TRÌNH VISUAL BASIC - Phân tích kết cấu: tính tốn nội lực và biến dạng. - Kiểm tốn. - Xuất kết quả. Tổ chức các khối chức năng thể hiện bằng sơ đồ như sau: Nhập dữ liệu Module Hình_học Module Vật_liệu Module Cáp_DƯL Module Nội_lực Module Kiểm_tốn Module hiển thị kết quả Kết thúc Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 44
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN CHƯƠNG III. FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Mục tiêu: Chương này giới thiệu về một số điều khiển cơ bản để tạo nên giao diện cho các ứng dụng cũng như một số khái niệm trong lập trình với VB; Nội dung chính: - Khái niệm về điều khiển, thuộc tính, phương thức, sự kiện, lập trình sự kiện - Quy tắc đặt tên điều khiển trong VB. - Sử dụng Form trong thiết kế giao diện. - Sử dụng các điều khiển thơng dụng. Kiến thức cĩ liên quan: - Cách thức sử dụng mơi trường phát triển VB. - Các cấu trúc lập trình trong VB. - Cách thức xử lý sự kiện. III.1 CÁC VẤN ĐỀ CHUNG Form thực chất là mẫu các hộp thoại (cửa sổ) được tạo ra theo yêu cầu của người dùng. Trên một Form luơn chứa những thành phần phục vụ cho nhu cầu tương tác giữa người dùng và chương trình: nhập các dữ liệu cần thiết, ra lệnh xử lý, lựa chọn dữ liệu theo tình huống, hiển thị kết quả xử lý một cách trực quan, Những thành phần đĩ được gọi là các điều khiển (Control). Điều khiển cho phép nhập dữ liệu dạng văn Điều khiển cho phép người dùng ra lệnh thơng qua việc Điều khiển cho phép chèn hình Điều khiển (Controls): Các thành phần cĩ sẵn để người lập trình tạo giao diện tương tác với người dùng. Mỗi điều khiển thực chất là một đối tượng, do vậy nĩ sẽ cĩ một số điểm đặc trưng cho đối tượng, chẳng hạn như các thuộc tính, các phương thức & các sự kiện. Thuộc tính: CácDraft đặc trưng của một điều khiển tạo nên dáng vẻ của điều khiển đĩ. Bộ mơn Tự động hĩa Thiết kế Cầu đường 45
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Phương thức: Các điều khiển cĩ thể thực thi một số tác vụ nào đĩ, các tác vụ này được định nghĩa sẵn bên trong các phương thức (cịn gọi là chương trình con: hàm & thủ tục), người lập trình cĩ thể gọi thực thi các phương thức này nếu cần. III.1.1 Thao tác tạo Form và các thành phần điều khiển trong VBIDE Trình tự tạo các Form: 1 Xác định sự cần thiết phải tạo giao diện nhập-xuất dữ liệu. 2 Xác định các cách thức và trình tự tương tác của người sử dụng trên giao diện. 3 Xác định các Form cần phải tạo cho quá trình nhập dữ liệu cũng như việc hiển thị các kết quả và xuất dữ liệu. 4 Xác định các dữ liệu nhập, các dữ liệu theo tình huống và các minh hoạ kèm theo. Từ đĩ xác định các thành phần điều khiển phù hợp và đưa vào các Form tương ứng. Chú ý rằng: các điều khiển ngồi việc đáp ứng yêu cầu về mặt chức năng cũng cần cĩ tính dễ hiểu và mỹ thuật phù hợp. 5 Lựa chọn các điều khiển phục vụ cho việc xác nhận dữ liệu nhập hoặc ra lệnh cho quá trình xử lý và đưa vào các Form tương ứng. 6 Lựa chọn hình thức hiển thị kết quả từ đĩ lựa chọn các thành phần điều khiển phù hợp và đưa vào các Form tương ứng. 7 Viết các mã lệnh tương ứng cho các thành phần điều khiển để thoả mãn cách thức và trình tự tương tác của người sử dụng trên giao diện. Trong VBIDE thêm một Form bằng cách chọn menu Project Ư Add Form Sau khi tạo Form, thêm các thành phần điều khiển vào Form bằng cách lựa chọn điều khiển từ hộp cơng cụ điều khiển (Control Toolbox), dùng phím chuột trái xác định vị trí và kích thước trên Form. Điều khiển được Điều khiển được tạo bằng cách rê và thả chuột trái lựa chọn trên trên Form. Trong hộp cơng cụ này luơn luơn chứa các thành phần điều khiển chuẩn của VB. Ngồi ra, người dùng cĩ thể bổ sung những thành phần điều khiển mở rộng vào hộp cơng cụ trong giao diện Components. Hiển thị giao diện này bằng cách nhấn chuột phải vào hộp cơng cụ và chọn Components.Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 46
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN III.1.2 Các thuộc tính của Form và các thành phần điều khiển. Các thuộc tính phản ánh đặc điểm, tính chất cũng như trạng thái của Form hay các điều khiển. Ví dụ: đặc điểm về màu nền của một điểu khiển được thể hiện qua thuộc tính BackColor. Một số thuộc tính cơ bản của Form và các điều khiển Ø Thuộc tính Name: thể hiện tên của Form hay điều khiển. Đây là thuộc tính rất quan trọng, là yếu tố xác định điều khiển khi lập trình. Thuộc tính này chỉ được thay đổi lúc thiết kế giao diện (trong của sổ Properties của VBIDE). Thuộc tính Name phải cĩ giá trị theo quy tắc sau: Tên cĩ thể dài từ 1 - 40 ký tự. Tên phải bắt đầu với ký tự chữ, cĩ thể chữ hoa hay thường. Sau ký tự đầu tiên, tên cĩ thể chứa ký tự, số hay dấu gạch dưới. Ø Thuộc tính BackColor: là một giá trị kiểu Long thể hiện màu nền của Form hay điều khiển. Ø Thuộc tính Caption: là một giá trị kiểu String thể hiện tiêu đề của Form hay điều khiển. Ø Thuộc tính Enable: là một giá trị kiểu logic (Boolean) xác định trạng thái làm việc của điều khiển, giá trị bằng True ứng với trạng thái hoạt động, giá trị bằng False ứng với trạng thái khơng hoạt động (điều khiển coi như bị vơ hiệu hố). Ø Thuộc tính Visible: là một giá trị kiểu logic (Boolean) xác định trạng thái hiển thị của điều khiển, giá trị bằng True ứng với sự hiển thị điều khiển, giá trị bằng False ứng với sự ẩn điều khiển. Ø Thuộc tính Font: thể hiện kiểu chữ hiển thị trên Form hoặc điều khiển. Ø Thuộc tính Picture: thể hiện hình ảnh trên nền Form hoặc điều khiển. Ø Thuộc tính ControlTipText: là một giá trị kiểu String thể hiện chú thích về điều khiển (ToolDraft tip). Ø Thuộc tính MouseIcon: thể hiện biểu tượng con trỏ chuột hiển thị trên điều khiển. Bộ mơn Tự động hĩa Thiết kế Cầu đường 47
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Ø Thuộc tính MousePointer: thể hiện loại con trỏ chuột hiển thị trên nút lệnh. Ngồi ra, ứng với mỗi loại điều khiển cĩ thể cĩ rất nhiều thuộc tính khác nữa hoặc khơng cĩ một số các thuộc tính trong số trên. Người dùng cĩ thể tìm hiểu các thuộc tính này trong Object Browser hoặc trong Help của VBIDE. Việc thay đổi thuộc tính của các điều khiển cĩ thể được thực hiện bằng hai cách: 1 Cách 1: Thay đổi trực tiếp trong quá trình thiết kế: lựa chọn điều khiển và thay đổi giá trị của các thuộc tính trong cửa sổ Properties của VBIDE. Cách này rất trực quan và cho phép áp dụng với đa số các thuộc tính và điều khiển. Ví dụ: để thay đổi tiêu đề cho một Form dưới đây, kích chuột chọn Form sau đĩ gõ giá trị tiêu đề cho Form trong phần Caption của cửa sổ Properties. 2 Cách 2: Thay đổi trong quá trình chạy bằng mã lệnh. Cú pháp thực hiện giống như với biến đối tượng: . = giá trị thuộc tính . = giá trị thuộc tính Tên_điều_khiển hay Tên_Form ở đây chính là giá trị thuộc tính Name của điều khiển đã được đặt khi thiết kế. Khi viết mã lệnh trong một Form thì cĩ thể thay việc dùng tên của Form đĩ bằng từ khố Me. Ví dụ, ứng với Form cĩ tên là Form1 như ở trên, cĩ thể thay đổi tiêu đề của nĩ bằng mã lệnh như sau: Form1.Caption = “Cua so chinh” III.1.3 Các phương thức của Form và các thành phần điều khiển. Các phương thức được gọi khi người lập trình muốn Form hay điều khiển thực hiện một hoạt động hoặDraftc một biến đổi nào đĩ. Các phương thức chỉ được thực hiện bởi mã lệnh của Bộ mơn Tự động hĩa Thiết kế Cầu đường 48
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN người lập trình. Cú pháp của một lời gọi phương thức cho một điều khiển hay Form cũng tương tự như với biến đối tượng: . . Ví dụ: muốn hiển thị Form1 như ở trên, gọi phương thức Show của nĩ với mã lệnh như sau: Form1.Show Trong phạm vi của giáo trình, khơng thể liệt kê tất cả các phương thức của các điều khiển. Trong phần sau sẽ trình bày một số các phương thức đặc trưng của một số loại điều khiển thơng dụng. Để biết chi tiết về những phương thức khác, người đọc cĩ thể tra cứu trong Object Browser hoặc trong Help của VBIDE III.1.4 Các sự kiện trên giao diện. Các sự kiện trên Form hoặc các điều khiển được phát sinh khi cĩ một hoạt động nào đĩ xảy ra – thường được phát sinh từ phía người dùng (sự kiện cũng cĩ thể được phát sinh một cách gián tiếp từ quá trình thực hiện một phương thức nào đĩ). Ví dụ, khi người dùng rê chuột trên bề mặt Form sẽ phát sinh sự kiện MouseMove, khi người dùng kích chuột trên Form sẽ phát sinh sự kiện Click. Đi cùng với sự kiện cịn cĩ thủ tục sự kiện: là chương trình được thi hành khi sự kiện xảy ra. Thủ tục sự kiện cho phép người lập trình xử lý các tương tác của người dùng trên giao diện bằng cách viết các mã lệnh trong thủ tục sự kiện. Để viết mã lệnh cho một thủ tục sự kiện trên một Form, vào cửa sổ mã lệnh của Form đĩ (nháy đúp chuột vào Form), chọn điều khiển và loại sự kiện tương ứng. Sau đĩ viết mã lệnh vào trong thủ tục sự kiện đã được tạo ra. Chọn đối tượng Chọn sự kiện Thủ tục sự kiện gắn với đối tượng được phát sinh Một ứng dụng trên Windows thường được thực hiện nhờ vào việc đáp ứng lại các sự kiện của người dùng.Draft Khái niệm Lập trình sự kiện: Bộ mơn Tự động hĩa Thiết kế Cầu đường 49
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Các thành phần giao diện cĩ khả năng nhận biết được các sự kiện từ phía người dùng. Tuy nhiên khả năng đáp ứng lại các sự kiện được thực hiện bởi người lập trình. Khi một thành phần giao diện được sử dụng, người lập trình phải xác định chính xác hành động của thành phần giao diện đĩ để đáp ứng lại một sự kiện cụ thể. Lúc đĩ người lập trình phải viết đoạn mã lệnh mà đoạn mã lệnh này sẽ được thực thi khi sự kiện xảy ra. Chẳng hạn, trong ứng dụng Paint của Windows; khi người sử dụng nhấp chuột vào nút vẽ hình elip sau đĩ dùng chuột vẽ nĩ trên cửa sổ vẽ, một hình elip được vẽ ra. Trong lập trình sự kiện, một ứng dụng được xây dựng là một chuỗi các đáp ứng lại sự kiện. Tất cả các hành động của ứng dụng là đáp ứng lại các sự kiện. Do vậy người lập trình cần phải xác định các hành động cần thiết của ứng dụng; phân loại chúng; sau đĩ viết các đoạn mã lệnh tương ứng. Ví dụ về đáp ứng lại sự kiện: Mã lệnh - Mã lệnh cho sự kiện Click của Ghi đĩa. - Mã lệnh cho sự kiện Click của In giấy - Khi người dùng khơng tác động vào ứng dụng, ứng dụng khơng làm gì cả. - Khi người dùng nhập dữ liệu vào các ơ nhập Họ và tên, Địa chỉ; sự kiện bàn phím xảy ra trên các ơ nhập. Tuy nhiên, ứng dụng vẫn khơng làm gì cả vì khơng cĩ đoạn mã lệnh nào đáp ứng các sự kiện này. - Khi người dùng nhấp nút chọn Ghi đĩa, ứng dụng tìm kiếm trong mã lệnh của mình thấy cĩ đoạn mã lệnh đáp ứng lại sự kiện này; lúc đĩ đoạn mã lệnh được thực thi. - Tương tự như vậy đối với nút chọn In giấy. Một số sự kiện cơ bản của Form và các điều khiển: Ø Sự kiện Click: xảy ra khi người dùng kích chuột trên Form hoặc trên điều khiển Ø Sự kiện DblClick: xảy ra khi người dùng kích đúp chuột trên Form hoặc trên điều khiển Ø Sự kiện KeyPress: xảy ra khi người dùng nhấn một phím. Ø Sự kiện KeyUp: xảy ra khi người dùng nhả một phím (sau khi đã nhấn xuống). Ø Sự kiện KeyDown: xảy ra khi người dùng nhấn một phím (nhưng chưa nhả ra). Ø Sự kiện MouseMove: xảy ra khi người dùng rê chuột ngang qua một điều khiển hoặc trên Form. Ø Sự kiện MouseUp: xảy ra khi người dùng nhả phím chuột (sau khi đã nhấn chuột). Ø Sự kiện MouseDown: xảy ra khi người dùng nhấn phím chuột (nhưng chưa nhả ra). Ví dụ Tạo một Form và viết mã lệnh để khi kích chuột vào Form sẽ hiển thị số lần kích chuột trên tiêu đề của nĩ đồng thời đổi màu nền của Form theo tình huống: nếu số lần kích chuột là chẵn thì màu đDraften, là lẻ thì màu trắng. Bộ mơn Tự động hĩa Thiết kế Cầu đường 50
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Các thao tác như sau: 1 Thêm Form vào trong dự án bằng cách chọn Insert Ư Form. 2 Đặt tên Form là “usfCuaso1” trong thuộc tính Name của cửa sổ Properties; đặt tiêu đề xuất phát của Form là “Cua so chinh” trong thuộc tính Caption của cửa số Properties. 3 Viết mã lệnh cho sự kiện Click của Form (hiển thị cửa sổ lệnh của Form bằng cách nháy đúp chuột vào Form, chọn Form và sự kiện Click). Mã lệnh cho thủ tục sự kiện Click như sau: Private Sub Form_Click() Static numClick As Long numClick = numClick + 1 If numClick Mod 2 = 0 Then Me.BackColor = vbBlack Else Me.BackColor = vbWhite End If usfCuaso1.Caption = "Number of Click: " & Str(numClick) End Sub Trong đoạn mã trên, vbBlack là hằng số tương ứng với màu đen, vbWhite là hằng số tương ứng với màu trắng. III.2 LÀM VIỆC VỚI FORM Các nguyên tắc làm việc với Form như thiết lập và thay đổi thuộc tính, gọi các phương thức hay xử lý các sự kiện đã được trình bày ở phần trước. Dưới đây chỉ giới thiệu một số phương thức khác của Form. Ø Hiển thị Form: thực hiện phương thức Show Tên_Form.Show [vbModal/ vbModeless] Nếu dùng vbModal (hoặc 1): hộp thoại (Form) sẽ hiển thị ở dạng Modal – tức là luơn tiếp nhận tương tác người dùng với hộp thoại, người dùng chỉ cĩ thể chuyển hướng tương tác sang nơi khác Draftkhi đĩng hộp thoại. Đây là kiểu hiển thị mặc định của hộp thoại. Bộ mơn Tự động hĩa Thiết kế Cầu đường 51
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Nếu dùng vbModeless (hoặc 0): hộp thoại sẽ hiển thị ở dạng – tức là người dùng cĩ thể chuyển hướng tương tác từ hộp thoại sang nơi khác mà khơng cần đĩng hộp thoại. Ø Ẩn Form: thực hiện phương thức Hide Tên_Form.Hide Các thuộc tính khác Thuộc tính Mơ tả Icon Biểu tượng được dùng trong thanh tiêu đề của Form. WindowState Xác định Form sẽ cĩ kích thước bình thường (Normal=0), hay Minimized (=1), Maximized =(2). Font Xác lập Font cho Form. Thuộc tính này sẽ được các điều khiển nằm trên nĩ thừa kế. Tức là khi ta đặt một điều khiển lên Form, thuộc tính Font của điều khiển ấy sẽ tự động trở nên giống y của Form. Sự kiện Sự kiện Mơ tả Form_Initialize Sự kiện này xảy ra trước nhất và chỉ một lần khi Form được tạo ra. Form_Load Sự kiện này xảy ra mỗi lần Form được gọi hiển thị. Thường dùng sự kiện Form_Load để khởi tạo các biến, điều khiển. Form_Activate Mỗi lần một Form được kích hoạt (active) thì một sự kiện Activate phát sinh. Ta thường dùng sự kiện này để cập nhật lại giá trị các điều khiển trên Form. Form_QueryUnload Khi người sử dụng chương trình nhấp chuột vào nút X phía trên bên phải để đĩng Form thì một sự kiện QueryUnload được sinh ra. Đoạn chương trình con dưới đây mơ tả thủ tục xử lý sự kiện QueryUnload. Ví dụ: Ta cĩ thể hủy hành động đĩng Form bằng cách đặt Cancel = 1. Form_Resize Sự kiện này xảy ra mỗi khi Form thay đổi kích thước. III.3 CÁC ĐIỀU KHIỂN THƠNG DỤNG Một số điều khiển thơng dụng 1 Điểu khiển nút lệnh (Command Button) Ø Điều khiển nút lệnh thường được dùng nhằm phục vụ cho việc thực hiện một quyết định nào đĩ từ phía người dùng (thơng qua việc kích chuột vào nút lệnh hoặc nhấn Enter tạiDraft nút lệnh). Bộ mơn Tự động hĩa Thiết kế Cầu đường 52
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Ø Các nút lệnh nên cĩ thuộc tính Caption (tiêu đề) và Picture (hình ảnh) phản ánh đúng tính năng mà nĩ đảm nhận. Sự kiện dùng với nút lệnh thường là sự kiện Click hoặc DblClick (kích đúp chuột). Ø Để thay đổi vị trí của nút lệnh trong khi chạy chương trình, dùng phương thức Move Tên_nút_lệnh.Move [Left ], [Top], [Width], [Height] Trong đĩ các tham số thể hiện vị trí gĩc trái trên (left, top) và kích thước (Width, Height) mới của nút lệnh sau khi di chuyển. Ø Để thiết lập trạng thái nhận lệnh (nhận tiêu điểm – focus) cho nút lệnh, sử dụng phương thức SetFocus Tên_nút_lệnh.SetFocus Các phương thức Move và SetFocus như ở trên khơng chỉ áp dụng đối với nút lệnh mà cịn được áp dụng với đa số các điều khiển. Các thuộc tính khác Thuộc tính Mơ tả Default Nếu giá trị của thuộc tính này là True thì ta cĩ thể chọn nút lệnh bằng cách nhấn phím Enter. Cancel Nếu giá trị của thuộc tính này là True thì ta cĩ thể chọn nút lệnh nào đĩ bằng cách nhấn phím ESC. 2 Điều khiển hộp văn bản (TextBox) Điều khiển hộp văn bản (TextBox) được dùng nhằm phục vụ cho yêu cầu nhập dữ liệu dạng văn bản (text)Draft của người dùng. Bộ mơn Tự động hĩa Thiết kế Cầu đường 53
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Các thuộc tính, phương thức và sự kiện chủ yếu của các điều khiển về cơ bản đã trình bày ở các phần trước. Vì vậy, trong phần dưới đây chỉ trình bày những đặc điểm riêng biệt của điều khiển TextBox nhằm mục đích sử dụng một cách hợp lý nhất. Ø Thuộc tính Thuộc tính Mơ tả Ghi chú Text Nội dung văn bản chứa trong điều khiển. Kiểu String TextAlign Cách thức hiển thị văn bản trong điều khiển Tham khảo Object Browser MaxLength Qui định độ dài tối đa của văn bản trong điều Kiểu Long khiển (Nếu đặt MaxLength=0, độ dài của văn bản là tuỳ ý) MultiLine Hiển thị nhiều dịng hay một dịng Kiểu Boolean ScrollBars Hiển thị thanh cuộn ngang hay dọc nếu nội Tham khảo Object dung văn bản lớn hơn kích thước của điều Browser khiển Locked Thuộc tính cho phép người dùng thay đổi nội dung của ơ nhập liệu được hay khơng? Nhận 2 giá trị True hoặc False. Nếu False thì người dùng cĩ thể thay đổi nội dung của ơ nhập liệu. Mặc định là False. PasswordChar Thuộc tính này quy định cách hiển thị thơng tin do người dùng nhập vào. Chẳng hạn, nếu ta nhập vào giá trị thuộc tính này là * thì các ký tự nhập vào điều hiển thị bởi dấu * . Thuộc tính này thường được dùng trong trường hợp thơng tin nhập vào cần được che giấu. Ví dụ mật khẩu đăng nhập. SelLength Trả về hoặc gán số lượng ký tự được chọn. Ba thuộc tính SelStart Trả về hoặc xác định điểm bắt đầu của chuỗi SelLength, SelStart, được chọn. Đây là vị trí bắt đầu chèn một SelText chỉ cĩ tác dụng chuỗi mới trong trường hợp khơng cĩ đánh tại thời điểm chạy ứng dấu chọn chuỗi. dụng. SelText Trả về chuỗi được chọn hoặc thay thế chuỗi được chọn bằng chuỗi. Chuỗi trả về sẽ là rỗng nếu như khơng đánh dấu chọn chuỗi nào. Ø Các sự kiện KeyPress và Change Sự kiện Change xảy ra khi nội dung của văn bản trong TextBox bị thay đổi. Sự kiện KeyPress xảy ra khi cĩ một phím được nhấn trong điều khiển. Thủ tục sự kiện ứng với KeyPress cĩ một tham số là KeyAscii. Tham số này cĩ kiểu Integer và trả về mã Ascii của phím được nhấn (để biết mã Ascii của các phím, tham khảo KeyCodeConstants trong Object Browser). Trong ví dụ dưới đây, TextBox Text1 sẽ chỉ nhận biết các phím là số (0 - 9), khơng nhận biết các phím khác: Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii 57 Then ‘ Mã Ascii của 0 là 48, của 9 là 57 KeyAscii = 0 End If End Sub Draft Ø KeyDown, KeyUp: Bộ mơn Tự động hĩa Thiết kế Cầu đường 54
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Mỗi sự kiện KeyPress lại cho ta một cặp sự kiện KeyDown/KeyUp. Sự kiện KeyDown/KeyUp cĩ 2 tham số là KeyCode và Shift. Sự kiện này cho phép ta nhận biết được các phím đặc biệt trên bàn phím. Trong ví dụ dưới đây, ta hiển thị tên các phím chức năng mà người sử dụng chương trình nhấn vào: Private Sub Text3_KeyDown(KeyCode As Integer, Shift As Integer) If (KeyCode >= 112) And (KeyCode <= 123) Then MsgBox "Ban vua nhan phim chuc nang: F" & Trim(Str(KeyCode - 111)) EndIf End Sub 3 Điều khiển nhãn (Label) Điều khiển nhãn thường được sử dụng để hiển thị một văn bản ngắn gọn trên Form hoặc đặt kèm với một điều khiển nào đĩ trên Form để giải thích tính năng, bổ sung thơng tin cho điều khiển đĩ. Nội dung văn bản trong điều khiển Label được thiết lập hoặc thay đổi thơng qua thuộc tính Caption (đã được trình bày ở phần trên). Điều khiển nhãn để giải thích cho dữ liệu trong Điều khiển nhãn để hiển thị kết quả dạng ắ 4 Điều khiển hộp đánh dấu (CheckBox) Điều khiển CheckBox (Đánh dấu) để nhận thơng tin từ người dùng theo dạng Yes/No hoặc True/False. Khi Check Box được chọn, nĩ cĩ giá trị 1 và ngược lại cĩ giá trị 0. Điều khiển hộp đánh dấu thường được sử dụng cho việc lựa chọn những thơng tin bổ sung cho dữ liệu nhDraftập hay những tính năng bổ sung cho xử lý dữ liệu. Bộ mơn Tự động hĩa Thiết kế Cầu đường 55
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Để thiết lập hay nhận về trạng thái của hộp đánh dấu (được chọn hay khơng được chọn) - sử dụng thuộc tính Value. Thuộc tính này cĩ kiểu Boolean, giá trị True ứng với trạng thái được chọn, giá trị False ứng với trạng thái khơng được chọn. Ví dụ: tạo giao diện nhập dữ liệu và tính tốn tổng các số từ 1 đến n với lựa chọn bổ sung tính tổng các số chẵn. Thiết kế Form với các thành phần như hình dưới đây: Label Name: lblSo TextBox Name: txtSo TextBox Name: txtSo Command Button Name: cmdTinh Label Name: lbKetqua Viết mã lênh cho thủ tục sự kiện Click của nút lệnh cmdTinh như sau: Private Sub cmdTinh_Click() Dim i As Long Dim so As Long so = CLng(txtSo.Text) ' chuyen doi du lieu tu txtSo vao bien so Dim tong As Double tong = 0 Dim buocnhay As Long ' buoc nhay cua bien chay If chkChonsochan.Value Then ‘ xet lua chon chi tinh tong so chan buocnhay = 2 Else buocnhay = 1 End If For i = 0 To so Step buocnhay tong = tong + i Next lblKetqua.Caption = "Ket qua: " & Str(tong) ‘ hien thi ket qua End Sub 5 Điều khiển nút tuỳ chọn (OptionButton) Điều khiển Option button (Tùy chọn) cũng tương tự như điều khiển CheckBox. Điểm khác nhau cơ bản là: Trong một nhĩm các nút tuỳ chọn (tương ứng tập hợp các khả năng), người sử dụng chỉ cĩDraft thể lựa chon một nút (tương ứng với một khả năng, một phương án). Bộ mơn Tự động hĩa Thiết kế Cầu đường 56
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Điều khiển nút tuỳ chọn thường được sử dụng cho việc lựa chọn các khả năng, phương án của người dùng. Để tạo nhĩm các nút tuỳ chọn cĩ thể đặt chúng trong một điều khiển khung (Frame), Picture box hoặc đặt chúng trên Form. Hai điều khiển nút chọn phục vụ cho việc lựa chọn loại hình dự án. Người dùng chỉ cĩ thể chọn đánh dấu vào một trong hai điều khiển này Để thiết lập trạng thái chọn hay khơng chọn cho nút tuỳ chọn - sử dụng thuộc tính Value. Thuộc tính này cĩ kiểu Boolean, giá trị True ứng với trạng thái được chọn, giá trị False ứng với trạng thái khơng được chọn. Ví dụ mã lệnh sau tương đương với việc người dùng lựa chọn vào nút chọn cĩ tên optDAmoi optDAmoi.Value=True 6 Điều khiển hộp danh sách (ListBox) Điểu khiển hộp danh sách cho phép liệt kê một nhĩm các đối tượng. Từ đĩ người dùng cĩ thể quan sát, lựa chọn một hoặc một vài phần tử trong danh sách. Mỗi phần tử trong danh sách luơn cĩ chỉ số (Index) và nội dung (Text). Ø Thuộc tính Thuộc tính Mơ tả Ghi chú List Trả về danh sách các phần tử trong điều Tham khảo Object khiển Browser ListCount Trả về số lượng các phần tử trong danh Kiểu Long sách ListIndex Trả về chỉ số của phần tử được chọn trong Kiểu Variant danh sách Text Trả về nội dung của phần tử được chọn Kiểu String Selected(i) DraftKiểm tra xem phần tử thứ I cĩ được chọn Kiểu Boolean Bộ mơn Tự động hĩa Thiết kế Cầu đường 57
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN hay khơng. Ø Phương thức Phương thức Mơ tả Ghi chú AddItem Thêm một phần tử vào trong danh sách Tham khảo trong Object RemoveItem Xố một phần tử khỏi danh sách Browser hoặc Help Clear Xố tồn bộ danh sách Ví dụ: tạo Form với ListBox như hình vẽ dưới đây Form: usfMc ListBox: lstDsMc Yêu cầu: khi Form được tải lên, trong danh sách mặt cắt sẽ Viết mã lệnh cho sự kiện Initialize của Form như sau: Private Sub Form_Initialize() lstDsMc.AddItem "Mat cat dau", 0 lstDsMc.AddItem "Mat cat L/4", 1 lstDsMc.AddItem "Mat cat L/2", 2 lstDsMc.AddItem "Mat cat 3L/4", 3 lstDsMc.AddItem "Mat cat cuoi", 4 End Sub Phương thức AddItem cĩ hai tham số đều là tham số tuỳ chọn: tham số thứ nhất là nội dung của phần tử, tham số thứ hai là vị trí chèn phần tử trong danh sách. Kết quả khi Form được tải lên như hình dưới đây: Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 58
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Để biết người dùng đã lựa chọn phần tử nào trong danh sách, viết mã lệnh cho sự kiện Click của hộp danh sách như sau: Private Sub lstDsMc_Click() Me.Caption = lstDsMc.Text ‘ hiển thị phần tử lên tiêu đề cửa sổ End Sub Kết quả khi người dùng chọn một phần tử trong danh sách: Các thuộc tính khác Phương thức Mơ tả MultiSelect Thuộc tính này xác định ListBox cĩ thể chọn nhiều đề mục khơng? Sorted ListBox cĩ sắp xếp hay khơng? ListIndex Vị trí của phần tử được lựa chọn trong ListBox. Selected ( ): cho biết phần tử thứ trong List Box cĩ được chọn hay khơng? Text Giá trị của đề mục được chọn List Truy xuất nội dung đề mục bất kỳ trong List Box Trả về một mảng và mỗi đề mục là một phần tử của mảng. Phương thức o AddItem: Thêm một phần tử vào ListBox. Cú pháp: .AddIem(Item As String, [Index]) Tham số Diễn giải Name Tên của ListBox. Item Chuỗi (đề mục) cần thêm vào. Index Xác định vị trí đề mục mới được chèn vào, giá trị 0 xác định cho vị trí đầu tiên. Khi khơng chỉ định rõ Index thì phần tử thêm vào là mục cuối cùng trong ListBox mới. Thêm mới đề mục tại thời điểm thiết kế: Sử dụng thuộc tính List của điều khiển ListBox, dùng tổ hợp phím CTRL+ENTER. o RemoveItem: Xĩa một phần tử ra khỏi List Box. Cú pháp: .RemoveItem Index o Clear: Xĩa tDraftất cả các mục trong List Box. Cú pháp .Clear Bộ mơn Tự động hĩa Thiết kế Cầu đường 59
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN 7 Điều khiển hộp danh sách tổ hợp (ComboBox) Điều khiển ComboBox cĩ thể được xem là tích hợp giữa hai điều khiển TextBox và ListBox. Người dùng cĩ thể chọn một đề mục bằng cách nhập chuỗi văn bản vào ComboBox hoặc chọn một đề mục trong danh sách. Các thuộc tính và phương thức của ComboBox tương tự như ListBox. Các dạng của điều khiển Combo Box: Cĩ tất cả 3 dạng của điều khiển Combo Box. Ta cĩ thể chọn dạng của Combo tại thời điểm thiết kế bằng cách dùng giá trị hoặc hằng chuỗi của VB. Kiểu Giá trị Hằng Drop-down Combo Box 0 VbComboDropDown Simple Combo Box 1 VbComboSimple Drop-down List Box 2 vbComboDropDownList - Drop-down Combo Box: Đây là dạng mặc nhiên của ComboBox. Người dùng cĩ thể nhập vào trực tiếp hoặc chọn từ danh sách các đề mục. - Simple Combo Box: Cĩ thể hiển thị nhiều đề mục cùng một lúc. Để hiển thị tất cả đề mục, cần thiết kế ComboBox đủ lớn. Ở dạng này, người dùng vẫn cĩ thể nhập một chuỗi vào trực tiếp hoặc chọn từ danh sách các đề mục. - Drop down List Box: Dạng này rất giống như một Listbox nhưng chỉ cho người dùng lựa chọn một giá trị. 8 Điều khiển khung (Frame) Điều khiển khung cho phép nhĩm các điều khiển trên Form nhằm thuận tiện cho việc nhận biết chức năng, thao tác của người dùng. Điều khiển khung cịn được dùng để tập hợp các nút tuỳ chọn thành một nhĩm. Khi tạo nhĩm điều khiển trong điều khiển khung, nên tạo điều khiển khung trước rồi mới tạo các điều khiển thành phần trong điều khiển khung (khi đĩ các điều khiển tạo sau sẽ được gắn và trongDraft điều khiển khung). Bộ mơn Tự động hĩa Thiết kế Cầu đường 60
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Điều khiển khung nhĩm các điều khiển phục vụ việc nhập dữ liệu cho các vật liệu 9 Thanh cuộn ngang (HscrollBar) Là điều khiển cĩ thanh trượt cho phép cuộn ngang và người dùng cĩ thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc. Ví dụ ta thiết kế volume cho một trị chơi trên máy tính hoặc để diễn đạt cĩ bao nhiêu thời gian trơi qua trong một khoảng định thời nhất định. Khi người dùng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thì người dùng cần xác định giá trị cho hai thuộc tính Max và Min để đưa ra khoảng thay đổi thích hợp. Các thuộc tính Thuộc tính Mơ tả Min Là giá trị nhỏ nhất trên thanh cuộn Max Giá trị lớn nhất của thanh cuộn Large change Thuộc tính này dùng để xác định khoảng thay đổi khi người dùng ấn chuột lên Hscrollbar Small change Thuộc tính này dùng để xác định khoảng thay đổi khi người dùng ấn lên mũi tên phía cuối thanh cuộn Value Thuộc tính này trả về giá trị tại một thời điểm của thanh cuộn nằm trong khoảng giá trị [Min, Max] mà người dùng đã xác định. Sự kiện o Change: Xảy ra mỗi khi HScrollBar thay đổi giá trị. o Scroll: Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộn. 10 Thanh cuộn đứng (VScrollBar) Các thuộc tính và cơng dụng của VScrollBar cũng tương tự như HScrollBar. 11 Thời gian (Timer) Điều khiển TimerDraft đáp ứng lại sự trơi đi của thời gian. Nĩ độc lập với người sử dùng và ta cĩ thể lập trình để thực hiện một cơng việc nào đĩ cứ sau một khoảng thời gian đều nhau. Bộ mơn Tự động hĩa Thiết kế Cầu đường 61
- CHƯƠNG III: FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN Việc đưa một điều khiển Timer và trong một Form cũng tương tự như những điều khiển khác. Điều khiển Timer chỉ thấy được tại giai đoạn thiết kế Form, khơng hiển thị khi chạy ứng dụng. Các thuộc tính: o Interval: Đây là thuộc tính chỉ rõ số ms giữa hai sự kiện kế tiếp nhau. Trừ khi nĩ bị vơ hiệu hĩa, mỗi điều khiển Timer sẽ luơn nhận được một sự kiện sau một khoảng thời gian đều nhau. Thuộc tính Interval nhận giá trị trong khoảng 0 64.767 ms cĩ nghĩa là khoảng thời gian dài nhất giữa hai sự kiện chỉ cĩ thể là khoảng một phút (64.8 giây). o Enabled: nếu giá trị là True nghĩa là điều khiển Timer được kích hoạt và ngược lại. Sự kiện o Timer: xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xác định trong thuộc tính Interval). Điều khiển Timer hữu ích trong việc tính tốn thời gian cho một cơng việc, Ví dụ ta cần khởi tạo hoặc ngương một cơng việc tại thời điểm nào đĩ. 12 Danh sách ổ đĩa (DriveListbox), Thư mục (DirListbox), Tập tin (FileListbox) o Điều khiển DriveListbox trình bày những ổ đĩa của hệ thống và cho phép người dùng chọn một trong những ổ đĩa đĩ. o Điều khiển DirListbox cho phép trình bày những thư mục và đường dẫn tại thời điểm chạy ứng dụng. Sử dụng điều khiển này để trình bày một danh sách cĩ thứ bậc của các thư mục, cĩ nghĩa là người dùng cĩ thể mở một tài liệu từ danh sách các tài liệu đã cĩ sẵn. o Điều khiển FileListbox cho phép trình bày những tài liệu cĩ sẵn trong thư mục hiện hành. Ta cĩ thể dùng thuộc tính Partten để xác định kiểu tập tin nào được hiển thị trong danh sách. Thơng thường các ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trên là DriveListbox, DirListbox và FileListbox. Draft Bộ mơn Tự động hĩa Thiết kế Cầu đường 62