Giáo trình Lập trình trực quan

pdf 252 trang phuongnguyen 4170
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Lập trình trực quan", để 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:

  • pdfgiao_trinh_lap_trinh_truc_quan.pdf

Nội dung text: Giáo trình Lập trình trực quan

  1. ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN Tài liệu tham khảo LẬP TRÌNH TRỰC QUAN Biên soạn : Võ Trung Hùng Đà Nẵng - 2000
  2. PHẦN I MICROSOFT ACCESS iii
  3. Lập trình trực quan BÀI 1. MỞ ĐẦU Lịch sử phát triển của Tin học luôn gắn liền với việc tìm kiếm các phương pháp lập trình để giúp cho người sử dụng triển khai các ứng dụng một cách dễ dàng, nhanh chóng và hiệu quả. Như chúng ta đã biết, mỗi loại máy tính chỉ có thể hiểu và thực hiện được các lệnh cũng như chương trình theo một loại ngôn ngữ dành riêng được gọi là ngôn ngữ máy. Tuy nhiên, nếu triển khai các ứng dụng trong thực tế mà phải viết chương trình trực tiếp bằng ngôn ngữ máy thì sẽ rất phức tạp, đòi hỏi thời gian và công sức rất lớn, nhiều khi không thể thực hiện được. Vì vậy, người ta tìm cách xây dựng một ngôn ngữ lập trình riêng gần với các ngôn ngữ tự nhiên, thuận lợi cho việc triển khai các ứng dụng. Khi thực hiện các chương trình bằng ngôn ngữ này phải qua một bước dịch chương trình đó sang ngôn ngữ máy để nó có thể thực hiện. Từ trước đến nay có rất nhiều ngôn ngữ lập trình được ra đời và phục vụ đắc lực cho việc khai các ứng dụng trên máy tính. Trong giai đoạn đầu, các ngôn ngữ lập trình tuy dễ sử dụng hơn ngôn ngữ máy nhưng rất khó với các lập trình viên vì đặc điểm chưa đủ mạnh để dễ dàng triển khai các thuật toán. Chương trình chưa có tính cấu trúc chặt chẽ về mặt dữ liệu cũng như tổ chức chương trình. Vì vậy, việc triển khai các ứng dụng trong thực tế bằng các ngôn ngữ lập trình này là rất khó khăn. Giai đoạn 2 là thời kỳ của các ngôn ngữ lập trình có cấu trúc. Các ngôn ngữ lập trình này có đặc điểm là có tính cấu trúc chặt chẽ về mặt dữ liệu và tổ chức chương trình. Một loạt các ngôn ngữ lập trình có cấu trúc ra đời và dược sử dụng rộng rãi như : PASCAL, C, PROLOG Giai đoạn 3 là thời kỳ của lập trình hướng đối tượng và phương pháp lập trình có bước biến đổi mạnh. Trong các ngôn ngữ lập trình có cấu trúc thì một ứng dụng bao gồm hai thành phần riêng là dữ liệu và chương trình. Tuy chúng có quan hệ chặt chẽ nhưng là hai đối tượng riêng biệt. Trong phương pháp lập trình hướng đối tượng thì mỗi một đối tượng lập trình sẽ bao hàm cả dữ liệu và phương thức hành động trên dữ liệu đó. Vì vậy, việc lập trình sẽ đơn giản và mang tính kế thừa cao, tiết kiệm được thời gian lập trình. Tuy nhiên, với các phương pháp lập trình trên đều đòi hỏi lập trình viên phải nhớ rất nhiều câu lệnh với mỗi lệnh có một cú pháp và tác dụng riêng, khi viết chương trình phải tự lắp nối các lệnh để có một chương trình giải quyết từng bài toán riêng biệt. 1
  4. Lập trình trực quan Trong xu hướng phát triển mạnh mẽ hiện nay của Tin học, số người sử dụng máy tính tăng lên rất nhanh và máy tính được sử dụng trong hầu hết các lĩnh vực của đời sống nên đòi hỏi các ngôn ngữ lập trình cũng phải đơn giản, dễ sử dụng và mang tính đại chúng cao. Chính vì vậy phương pháp lập trình trực quan ra đời. Đặc điểm của các ngôn ngữ lập trình trực quan là dễ sử dụng, triển khai các ứng dụng một cách nhanh chóng. Hiện nay các ngôn ngữ lập trình, hệ quản trị cơ sở dữ liệu theo hướng trực quan thường dùng như : Visual Basic, Visual Foxpro, Visual C, Delphi Trong chương trình này giới thiệu một số chương trình lập trình thường dùng như Access, Basic và VB .Net để làm quen với phương pháp lập trình trực quan trong việc triển khai một số các ứng dụng. Đặc điểm nổi bật của phương pháp lập trình trực quan là : - Cho phép xây dựng chương trình theo một hướng khác gọi là event - driven programming (lập trình theo tính huống), nghĩa là một chương trình ứng dụng được viết theo kiểu này đáp ứng dựa theo tình huống xảy ra lúc thực hiện chương trình. Tình huống này bao gồm người sử dụng ấn một phím tương ứng, chọn lựa một nút lệnh hoặc gọi một lệnh từ một ứng dụng khác chạy song song cùng lúc. - Người lập trình trực tiếp tạo ra các khung giao diện (interface), ứng dụng thông qua các thao tác trên màn hình dựa vào các đối tượng (ojbect) như hộp hội thoại hoặc nút điều khiển (control button), những đối tượng này mang các thuộc tính (properties) riêng biệt như : màu sắc, Font chữ mà ta chỉ cần chọn lựa trên một danh sách cho sẵn. - Khi dùng các ngôn ngữ lập trình trực quan ta rất ít khi phải tự viết các lệnh, tổ chức chương trình một cách rắc rối mà chỉ cần khai báo việc gì cần làm khi một tình huống xuất hiện. - Máy tính sẽ dựa vào phần thiết kế và khai báo của lập trình viên để tự động tạo lập chương trình. Như vậy với lập trình trực quan người lập trình viên giống như một nhà thiết kế, tổ chức để tạo ra các biểu mẫu, đề nghị các công việc cần thực hiện và máy tính sẽ dựa vào đó để xây dựng chương trình. Trong chương trình này ta sẽ xét cách sử dụng hệ quản trị cơ sở dữ liệu Microsoft Access và ngôn ngữ lập trình Visual Basic. 2
  5. Lập trình trực quan BÀI 2. ACCESS 2.1. Giới thiệu Microsoft Access là một phần mềm quản lý cơ sở dữ liệu rất mạnh và được sử dụng rộng rãi hiện nay. Nó cho phép người sử dụng quản lý, bảo trì và khai thác số liệu được lưu trữ một cách có tổ chức trên máy tính. Access nằm trong bộ Microsoft Office của công ty Microsoft. Trong chương trình này chúng tôi giới thiệu trên phiên bản Access 98, đây là phiên bản mới có nhiều cải tiến so với các phiên bản trước đây. Để sử dụng được Access 98, máy tính phải thỏa mãn các yêu cầu cơ bản sau : - CPU Pentium trở lên. - Bộ nhớ RAM 32 MB trở lên. - Hệ điều hành Windows 95 trở đi. Trong phiên bản này chúng ta được hưởng một số công cụ bổ sung so với các phiên bản cũ trước đây như : truy cập dữ liệu Access từ các trang Web, quản lý các tập tin có chứa các liên kết đến những tập tin khác, hỗ trợ đa ngữ, quản lý dễ dàng các đối tượng đồ họa, sử dụng các Macro hỗ trợ cho tự động hóa việc quản lý dữ liệu 2.2. Khởi động ACCESS Sau khi đã cài đặt Microsoft Office (chọn component Access), mỗi lần làm việc với Access chúng ta khởi động : - Bật máy tính - Chọn Start > Program > Microsoft Access Hoặc nhấn đúp chuột tại biểu tượng của Access trên Desktop. 3
  6. Lập trình trực quan Lúc đó sẽ xuất hiện làm việc của ACCESS như sau : Tạo cơ sở dữ liệu mới Tạo cở sở dữ liệu mới theo mẫu có sẵn. Mở cơ sở dữ liệu đã có - 2.3. Khái niệm về cơ sở dữ liệu trong Access Cơ sở dữ liệu là một tập hợp các dữ liệu liên quan đến một chủ đề hay một mục đích quản lý nào đó. Các thành phần của cơ sở dữ liệu Access bao gồm : - TABLE (bảng) : là thành phần cơ bản của cơ sở dữ liệu, nó cho phép lưu trữ dữ liệu phục vụ công tác quản lý. Trong một Table, số liệu được tổ chức thành các trường (Field) và các bản ghi (Record). - QUERY (vấn tin) : là công cụ để truy vấn thông tin và thực hiện các thao tác trên dữ liệu. Query cho phép liên kết các dữ liệu từ nhiều Table khác nhau, chọn lựa các thông tin cần quan tâm, nó là nền tảng để xây dựng các báo cáo theo yêu cầu thực tế. - FORM (mẫu) : cho phép xây dựng các mẫu nhập số liệu giống như trong thực tế. Ta có thể cùng lúc nhập số liệu vào nhiều Table khác nhau thông qua SubForm. - REPORT (báo cáo) : là các báo cáo số liệu để thông báo kết quả cho người sử dụng. Trong Report ta có thể kết hợp với Query để tạo các báo cáo theo những yêu cầu khác nhau trong thực tế. Trên Report bao gồm số liệu, hình ảnh, đồ thị để mô tả cho số liệu. 4
  7. Lập trình trực quan - MACRO (lệnh ngầm) : là một tập hợp các lệnh nhằm tự động thực hiện các thao tác thường gặp. Khi gọi Macro, Access sẽ tự động thực hiện một dãy các lệnh tương ứng, nó được xem là một cụ lập trình đơn giản, cho phép người sử dụng chọn lựa công việc tùy theo tình huống hiện tại. - MODULE (đơn thể) : một dạng tự động hóa chuyên sâu hơn Macro, đó là những hàm riêng của người sử dụng được viết bằng ngôn ngữ VBA. Ta chỉ nên sử dụng Module trong trường hợp các Macro không đáp ứng được yêu cầu đó. 2.4. Các phép toán 2.4.1 Các phép toán Logic - Not : cho kết quả ngược lại - And : cho kết quả đúng chỉ khi cả hai đều đúng. - Or : cho kết quả sai chỉ khi cả hai đều sai. - Xor : cho kết quả đúng khi hai điều kiện có giá trị trái nhau. - Epv : cho kết quả đúng chỉ khi hai điều kiện có cùng giá trị. 2.4.2 Các phép toán số học - ^ : lũy thừa. - * : nhân. - / : chia - \ : chia lấy phần nguyên. - Mod : chia lấy phần dư - + : cộng - - : trừ 5
  8. Lập trình trực quan 2.4.3 Các phép toán so sánh : >, >=, 2.4.4 Dấu rào : - " " : rào giá trị chuỗi. Ví dụ : "Nguyễn Văn A" - [ ] : rào tên biến. Ví dụ : [diem1] + [diem2] - #mm/dd/yy# : rào giá trị ngày. Ví dụ : #01/01/68# 6
  9. Lập trình trực quan BÀI 3. LÀM VIỆC VỚI CƠ SỞ DỮ LIỆU 3.1. TẠO CƠ SỞ DỮ LIỆU 3.1.1 Tạo cơ sở dữ liệu bằng WIZARD Cho phép tạo cơ sở dữ liệu theo sự hướng dẫn của ACCESS thông qua các mẫu có sẵn. Thông thường các cơ sở dữ liệu này không phù hợp với cách tổ chức cơ sở dữ liệu thường dùng nên nếu tạo cơ sở dữ liệu theo kiểu này đòi hỏi phải sửa đổi nhiều. Không nên tạo cơ sở dữ liệu theo kiểu này. - Bước 1 : ngay sau khi khởi động ACEESS ta chọn vào nút Database Wizard và OK. - Bước 2 : lúc đó trên màn hình xuất hiện cửa sổ sau : Lúc này ta chọn một mẫu cơ sở dữ liệu ở trên bằng cách Double Click chuột tại biểu tượng tương ứng rồi chọn OK. - Bước 3 : lúc đó trên màn hình xuất hiện cửa sổ sau : 7
  10. Lập trình trực quan Lúc này phải vào tên của cơ sở dữ liệu trong mục : File name :, sau đó chọn Create Tiếp tục trên màn hình sẽ xuất hiện các cửa sổ yêu cầu khai báo danh sách các Table, các Field, kiểu màn hình, các mẫu báo cáo, tiêu đề và biểu tượng của cơ sở dữ liệu Trong các bước đó ta chỉ việc lựa chọn theo yêu cầu và Double Click vào Next để chuyển sang cửa sổ kế tiếp cho đến màn hình cuối thì chọn Finish. 3.1.2 Tạo cơ sở dữ liệu trống Thông thường ta phải sử dụng mục này để tạo một cơ sở dữ liệu cho mình. ACCESS sẽ tạo ra một cơ sở dữ liệu trống và ta tự định nghĩa cho mình các Table, Query, Report, Form, Macro và Module riêng. - Bước 1 : khi khởi động chọn Blank Database hoặc chọn File - New Database - Bước 2 : khai báo tên của ổ đĩa, thư mục, tập tin cần tạo. Chọn Create Lúc đó ta nhận được cơ sở dữ liệu mới, xuất hiện màn hình : 8
  11. Lập trình trực quan Thông thường ta phải sử dụng mục này để tạo một cơ sở dữ liệu cho mình. ACCESS sẽ tạo ra một cơ sở dữ liệu trống và ta tự định nghĩa cho mình các Table, Query, Report, Form, Macro và Module riêng. - Bước 1 : khi khởi động chọn Blank Database hoặc chọn File - New Database - Bước 2 : khai báo tên của ổ đĩa, thư mục, tập tin cần tạo. Chọn Create Lúc đó ta nhận được cơ sở dữ liệu mới, xuất hiện màn hình : 3.2. Hiệu chỉnh cơ sở dữ liệu Sau khi đã tạo cơ sở dữ liệu ta có thể làm việc với cơ sở dữ liệu trên thông qua Table, Report, Form, Record, Query và Module qua cửa sổ trên. Ta sẽ xét cách thao tác lên từng thành phần một của cơ sở dữ liệu trong các bài kế tiếp. 9
  12. Lập trình trực quan BÀI THỰC HÀNH Trong tập tài liệu này cuối mỗi bài sẽ có bài thực hành và bài tập, các bài này xây dựng theo một hệ thống chung và khi đến cuối chương trình sẽ có một hệ thống chương trình hoàn chỉnh để quản lý điểm cho sinh viên Tạo một cơ sở dữ liệu trống có tên là Quản lý sinh viên. - Bước 1 : Chọn File - New Database - Bước 2 : chọn nút General, bấm chuột vào biểu tượng Blank Database, sau đó chọn OK. Nếu muốn tạo CSDL theo mẫu thì chọn nút Database, sau đó chọn biểu tượng tương ứng. - Bước 3 : gõ vào tên cơ sở dữ liệu cần tạo là Quản lý sinh viên trong mục File name. Qui định thư mục cần lưu trữ Database trong mục Save in. Sau đó chọn nút Create Lúc này ta có cửa sổ làm việc với cơ sở dữ liệu Quản lý sinh viên như sau : Lúc này ta có thể làm việc với các thành phần của Database như Table, Query, Form, Report, Macro và Modules. 10
  13. Lập trình trực quan BÀI 4. LÀM VIỆC VỚI TABLE Table là thành phần cơ bản của cơ sở dữ liệu trong Access, nó có nhiệm vụ lưu trữ các số liệu phục vụ quá trình quản lý. 4.1. Tạo cấu trúc của Table Để lưu trữ số liệu trên Table trước hết ta phải tạo cấu trúc của Table bằng cách qui định tên của Table, tên và thuộc tính của các trường. Ta có thể tạo Table bằng cách chọn New trong hôp thoại cơ sở dữ liệu hoặc chọn trên thanh thực đơn Insert - Table, lúc đó xuất hiện cửa sổ cho phép chọn cách tạo Table như sau : 4.1.1 Tạo Table bằng Wizard Phương pháp này cho phép tạo Table theo các mẫu có sẵn của Access. - Bước 1: chọn Table Wizard trong hộp trên rồi OK - Bước 2: chọn tên Table, tên trường theo mẫu có sẵn của ACCESS và sửa đổi lại theo yêu cầu thực tế. Chọn NEXT để thực hiện các công việc kế tiếp như sửa tên trường, tên Table và sau cùng chọn FINISH để kết thúc. 4.1.2 Tạo Table bằng DATASHEET VIEW Phương pháp này cho phép tạo Table theo cách sử dụng một mẫu biểu cho trước và ACCESS dựa vào đó để tạo ra Table. 11
  14. Lập trình trực quan - Bước 1: chọn Datasheet View trong hộp rồi OK - Bước 2: Nhập vào nội dung của bảng mẫu khi máy đưa ra một mẫu Table với các Column có tên là Field1, Field2 Ví dụ : để tạo Table lưu trữ điểm sinh viên ta nhập : - Bước 3: hiệu chỉnh lại tên trường bằng cách đưa dấu chuột vào đỉnh cột cần sửa và nhấn nút chột bên phải rồi chọn Rename Column (Hoặc để con trỏ ở ô có cột cần sửa chọn trên thực đơn Format - Reneme Column). Sau đó gõ lại tên trường. Ví dụ ta nhập lại tên các trường trên Table cũ như sau : - Bước 4: đóng Talbe (chọn File - Close) - Máy hỏi có ghi hay không, chọn Yes. để ghi, No nếu không. - Đặt tên cho Table trong bảng Save As - Máy hỏi có đặt khóa cơ sở Primary Key hay không, nếu có thì Yes, không thì No. 12
  15. Lập trình trực quan Lúc này máy sẽ tự định nghĩa một Table theo mẫu vừa tạo. Nếu muốn hiệu chỉnh thêm thì chọn Design. Chú ý : tên trường và tên Table dài tối đa là 64 ký tự, bắt đầu bằng 0 9 hoặc A Z, có thể là ký tự trống nhưng không có dấu chấm câu. Số trường tối đa trong một Table là 255. Độ lớn tối đa một Table là 1 GB. 4.1.3 Tạo Table bằng DESIGN VIEW Phương pháp này cho phép tạo Table hoàn toàn do người sử dụng qui định. - Bước 1: chọn Design View trong hộp rồi OK - Bước 2: xuất hiện màn hình thiết kế Table như sau : • Field name : khai báo tên của trường. • Data Type : khai báo kiểu dữ liệu tương ứng của trường. • Description : nội dung mô tả cho trường. Nội dung được dùng làm tiêu đề cho trường khi thiết lập các Form hay Report khi dùng Wizard. Trong mục Data Type, chúng ta có thể chọn một trong các kiểu sau : Tên Ý nghĩa Text Chứa tập hợp các ký tự tùy ý, dài tối đa 255 ký tự Memo Dài tối đa 65535 ký tự Number Chứa giá trị số 13
  16. Lập trình trực quan Date/Time Giá trị ngày hoặc giờ Currency Tiền tệ, có đơn vị tính Auto Number Giá trị số nhưng không thay đổi được dạng thể hiện Yes/No Giá trị True hoặc False Hyperlink Nội dung là văn bản hay kết hợp giữa văn bản và số được sử dụng như một địa chỉ hyperlink (siêu liên kết) Lookup Wizard Chọn một giá trị trong danh sách các giá trị cho trước Chú ý : tương ứng với mỗi kiểu dữ liệu sẽ khai báo thêm các thuộc tính của nó trong Field Properties gồm các thuộc tính chung (General) và thuộc tính nhập số liệu (Lookup). Ví dụ : với kiểu dữ liệu Text ta khai thêm : Tên Ý nghĩa Field Size Độ rộng tối đa chừa sẵn Format Cách hiển thị giá trị Input Mask Qui định mẫu nhập liệu Caption Một chú thích khác cho Field, dùng với Form, Report Default Value Giá trị cho trước Validation Rule Qui định cách kiểm tra số liệu nhập Validation Text Thông báo khi nhập số liệu sai Required Chọn Yes nếu bắt buộc phải nhập nội dung Allow Zero Length Chọn Yes nếu chấp nhận giá trị rỗng Indexed Có chỉ mục hay không, nếu có thì được trùng hay không (No, Yes Duplicate OK, Yes No Duplicate) 4.2. Nhập số liệu vào Table Sau khi đã tạo xong Table ta có thể nhập số liệu vào đó bất kỳ lúc nào bằng cách : - Double Click vào tên Table cần nhập. - Để vệt sáng ở tên Table cần nhập rồi chọn Open Chú ý : trong quá trình nhập ta có thể điều chỉnh độ rộng các cột cho thích hợp bằng cách đưa dấu chuột về cạnh bên phải của tiêu đề cột cho xuất hiện dấu ↔ rồi Drag chuột để điều chỉnh. Khi đóng ta lưu Layout bằng cách trả lời Yes 14
  17. Lập trình trực quan 4.3. Hiệu chỉnh Table Ta có thể hiệu chỉnh Table để : thay đổi cấu trúc bản ghi, sửa đổi nội dung bản ghi hoặc cách trình bày. 4.3.1 Thay đổi cấu trúc bản ghi - Chọn tên của Table cần hiệu chỉnh. - Chọn Design - Hiệu chỉnh lại qua bảng : Ta có thể thay đổi các thông tin liên quan đến các trường trong Table từ tên trường, kiểu, các thuộc tính, thêm bớt các trường 4.3.2 Thay đổi nội dung bản ghi - Chọn tên của Table cần hiệu chỉnh. - Chọn Open hoặc Double Click tại đó. - Hiệu chỉnh số liệu giống như trong Excel. 15
  18. Lập trình trực quan 4.3.3 Thay đổi cách trình bày - Chọn tên của Table cần hiệu chỉnh. - Chọn Open hoặc Double Click tại đó. - Chọn Format để định dạng, sau đó : • Font : thay đổi kiểu chữ. • Cells : thay đổi cách thể hiện như : Gridlines Shown (che hay hiện đường lưới), Cell Effect (trình bày ô số liệu phẳng, nhô lên hoặc lõm xuống), Gridline Color (màu sắc của nét gạch), Background Color (màu nền của ô). • Column Width : qui định độ rộng cột. • Hide Column : che bớt cột. Nếu muốn hiện lại chọn Unhide Column. 4.4. Khai thác số liệu trên Table Cho phép khai thác số liệu một cách tức thời khi đang làm việc trực tiếp trên Table. Nếu muốn tự động hóa công tác khai thác thông tin và có các báo cáo đẹp mắt thì ta phải dùng Report, Query, Macro hoặc lập trình bằng Visual Basic. 4.4.1 Tìm và thay thế Cho phép tìm và thay thế nội dung trên một trường nào đó trong Table. - Đưa con trỏ về trường cần tìm và thay thế. - Chọn Edit - Replace 4.4.2 Thay đổi vị trí trường - Chọn cột cần thay đổi vị trí (đưa dấu chuột lên tiêu đề trường). - Drag chuột để đưa trường về vị trí mới. 4.4.3 Sắp xếp - Chọn trường làm khóa để sắp xếp. 16
  19. Lập trình trực quan - Chọn trên thanh thực đơn Record - Sort (hoặc chọn biểu tượng) - Chọn sắp tăng dần (Sort Ascending) hoặc giảm dần (Descending). 4.4.4 Lọc bản ghi - Chọn trên thanh thực đơn Record - Filter (hoặc chọn biểu tượng) - Chọn Filter by Form Qui định cách lọc : - Muốn lọc theo trường nào ta chỉ việc bầm chột vào trường đó và chọn giá trị làm điều kiện để lọc. - Bấm phím phải của chuột chọn Apply Filter. Lúc này chỉ còn các bản ghi thỏa mãn điều kiện. - Nếu muốn hủy lọc thì bấm phím phải của chuột chọn Remove Filter. Lúc này hiện tất cả các bản ghi như ban đầu. Chú ý : trong quá trình lọc ta có thể dùng các điều kiện với các phép toán so sánh và quan hệ. 17
  20. Lập trình trực quan BÀI THỰC HÀNH Câu 1 : Tạo Table quản lý hồ sơ sinh viên gồm các thông tin : số thẻ sinh viên, họ lót, tên, ngày sinh, giới tính, quê quán, mã lớp, địa chỉ và ghi chú. - Bước 1: chọn nút Table, sau đó New - Bước 2: chọn Design View, rồi và xuất hiện màn hình thiết kế Table và khai báo các trường như sau : Lúc đó ta có bảng sau : Field Name Data Type Field Size Format Sothe Text 6 Holot Text 27 Ten Text 6 Ngaysinh Date/Time Sort Date Gioitinh Yes/No True/False Ghichu Memo 18
  21. Lập trình trực quan - Bước 3: đóng cửa sổ khai báo cấu trúc Table (bấm chuột vào dấu X ở góc trên bên phải) và chọn Yes để ghi lại cấu trúc. - Bước 4 : gõ vào tên của Table là Ho So và chọn OK trên cửa sổ sau : - Bước 5 : qui định có định nghĩa khóa chính hay không qua màn hình sau : Chọn No (không định nghĩa khóa). Lúc này ta có một Table vừa được định nghĩa xong. Câu 2 : Nhập số liệu vào Table : - Đưa con trỏ về tên Table. - Chọn Open. - Nhập số liệu qua màn hình như sau. Chú ý : trong quá trình nhập số liệu ta thường dùng các thao tác sau : - Điều chỉnh độ rộng cột : đưa chuột về cạnh phải tiêu đề cột rồi Drag chuột. 19
  22. Lập trình trực quan - Đổi kiểu chữ : chọn Format - Font , chọn kiểu chữ thích hợp. Câu 3 : sắp xếp theo thứ tự ABC của tên - Chọn trường làm khóa để sắp xếp là Tên (để con trỏ ở trường đó). - Chọn trên thanh thực đơn Record - Sort (hoặc chọn biểu tượng) - Chọn sắp tăng dần : Sort Ascending Câu 4 : chỉ xem các sinh viên lớp 94T - Chọn trên thanh thực đơn Record - Filter (hoặc chọn biểu tượng) - Chọn Filter by Form - Qui định cách lọc theo mẫu sau : • Đưa con chuột về trường Malop Click chuột và chọn tên lớp là 94T • Bấm phím phải của chuột chọn Apply Filter. Lúc này chỉ còn các bản ghi thỏa mãn điều kiện. • Nếu muốn hủy lọc thì bấm phím phải của chuột chọn Remove Filter. Lúc này hiện tất cả các bản ghi như ban đầu. Câu 5 : xóa một bản ghi. - Bấm chuột ở phần tiêu đề dòng của bản ghi cần xóa (cả bản ghi đổi màu). - Bấm phím Delete - Máy hỏi có muốn xóa hay không (You are about to delete n records ?), chọn Yes nếu muốn xóa, No nếu không. Câu 6 : thay đổi cách thể hiện ô. 20
  23. Lập trình trực quan - Chọn Format - Cells. - Qui định cách thể hiện. Bài tập : tương tự tạo các Table để lưu trữ danh mục lớp, lưu trữ học phí, học bổng và thực hiện các thao tác lên bản ghi. 21
  24. Lập trình trực quan BÀI 5. LÀM VIỆC VỚI QUERY 5.1. Khái niệm Query là một công cụ cho phép người sử dụng thống kê số liệu, xây dựng các báo cáo tổng hợp dưới nhiều hình thức khác nhau trên dữ liệu gốc trong Table. Muốn làm việc được với Query trước hết ta phải có Database và Table với dữ liệu nhập vào sẵn. Query còn được dùng để tạo ra dữ liệu phục vụ cho các công cụ khác như Report, Form và cho cả một Query khác. Tùy theo mục đích khai thác ta có thể sử dụng một trong các loại Query sau : - Select Query : cho phép chọn lựa các bản ghi, tạo thêm các vùng tính toán và trả về kết quả là các bản ghi thỏa mãn điều kiện. Ta có thể dùng Query để thao tác trên nhiều Table cùng lúc. - Append Query : nối thêm dữ liệu từ các bản ghi của một hay nhiều Table vào cuối một Table khác. - Make-Table Query : tạo ra một Table mới từ một Dynaset (Dynamic Dataset). Cho phép tạo các Table dự phòng, trích bản ghi để lưu trữ trước khi xóa các bản ghi này khỏi Table hiện hành. - Delete Query : xóa một nhóm các bản ghi từ một hay nhiều Table. - Cross Tab Query : Query tham chiếu chéo, được dùng để tạo nhóm dữ liệu và trả về kết quả dưới dạng một bản tính kèm theo số cộng ngang, cộng dọc. Ta thường dùng loại này để tạo dữ liệu phục vụ cho các Report và Chart. - Find Duplicate Query : tìm trong Table những bản ghi có giá trị giống nhau ở trên tất cả các trường. 22
  25. Lập trình trực quan - Find Unmatched Query : tìm những bản ghi mà giá trị của nó không trùng với giá trị của bất cứ một bản ghi nào trên một Table khác. - Union Query : nối các bản ghi của hai hay nhiều Table thành một danh sách chung. - Pass-Through Query : Query chuyển giao, dùng để gửi lệnh trực tiếp đến hệ ngôn ngữ SQL (Structured Query Language) của ACCESS. - Data Definition Query : sử dụng các lệnh của ngôn ngữ SQL để tạo hoặc sửa đổi cấu trúc của một Table trong Database. 5.2. Cách tạo QUERY Muốn tạo Query ta thực hiện qua các bước sau : - Bước 1: trong hộp Database ta chọn nút Query , chọn New - Bước 2: chọn kiểu tạo Query qua cửa sổ sau - Bước 3: chọn Table phục vụ cho việc xây dựng Query qua cửa sổ sau : • Table : để xem danh sách tên các Table đã tạo trước đó. • Query : để xem danh sách các Query đã có. 23
  26. Lập trình trực quan • Both : xem danh sách cả Table và Query. • Add : bổ sung Table hoặc Query được chọn cho việc tạo Query mới. • Close : đóng cửa sổ chọn. - Bước 5: thiết kế Query theo yêu cầu. Nếu muốn thay đổi loại Query thì ta chọn trên thanh thực đơn chức năng Query sau đó chọn trọng danh sách loại Query. - Bước 6: tùy theo từng loại Query ta có cách thiết kế riêng. Sau khi tạo Query xong ta đóng lại và đặt tên cho Query khi máy yêu cầu. Sau đây ta xét cách tạo một sổ Query thường được sử dụng (chỉ làm rõ cho bước 6). 5.2.1 Select Query Sau khi chọn 5 bước trên và loại Query là Select Query màn hinh sẽ xuất hiện cửa sổ khai báo Query như sau : - Field : chọn tên các trường có liên quan đến điều kiện, sắp xếp hoặc cần xem. - Table : hiển thị tên của Table mà trường được chọn trực thuộc vào nó. 24
  27. Lập trình trực quan - Sort : qui định việc sắp xếp tăng (Ascending) hoặc giảm (Descending) theo nó. - Show : cho phép hiển thị nội dung của trường hay không ( : không, √ : có). - Criteria : qui định điều kiện để lọc các bản ghi cần ghi. Nếu các điều kiện viết trên cùng dòng này thì ngầm định là quan hệ AND nếu viết trên dòng phía dưới thì quan hệ OR Đóng cửa sổ Select Query và ghi tên của Query cần lưu trữ lên đĩa. Chú ý : - Để linh hoạt khi thay đổi điều kiện của Query trong mục Criteria thay vì gõ giá trị làm điều kiện ta nhập vào tên biến nhớ. Lúc đó mỗi khi gọi Query máy sẽ yêu cầu nhập vào giá trị tương ứng. Ví dụ : muốn xem danh sách sinh viên sinh vào một ngày nào đó ta đưa con trỏ về ô Criteria của này sinh gõ [ngay sinh]. Khi gọi Query thực hiện sẽ xuất hiện cửa sổ hỏi ngày sinh : - Nếu muốn tính tổng theo từng bộ phận thì ta bấm phím phải của chuột và chọn Total, lúc đó trong Query xuất hiện một dòng Total để ta qui định phương thức tính toán. Khi bấm vào Total ta thấy xuất hiện các hàm tính toán : Sum (tính tổng), Avg (tính giá trị trung bình), Min (tìm giá trị nhỏ nhất), Max (tìm giá trị lớn nhất), Count (đếm số lượng các giá trị), StDev (độ lệch chuẩn của các giá trị), Var (sự biến thiên của các giá trị) và các tùy chọn khác là : Group By (định nghĩa nhóm muốn tính toán), Expression (tạo ra một biểu thức tính toán, Where (chỉ định điều kiện khi tính toán). - Nếu muốn tạo ra một trường mà nội dung của nó được tính toán từ một biểu thức bất kỳ thì ta đưa con trỏ đến cột đó viết biểu thức cần tính. Cách viết : Tên trường : biểu thức. Ví dụ : DTB:([mon1+[mon2])/2 25
  28. Lập trình trực quan - Nếu muốn thay đổi thêm cho cột cần thể hiện thì ta đưa dấu chuột đến cột đó nhấn phím phải của chuột làm xuất hiện thực đơn rồi chon Properties và qui định qua : • Description : dòng chú thích. • Format : qui định khuôn dạng cách thể hiện nội dung dữ liệu. • Decimal Places : số chữ số ở phần thập phân. • Input Mask : cách thức nhập số liệu. • Caption : tiêu đề sử dụng thay cho tên trường. 5.2.2 Cross Tab Query Đây là loại Query cho phép lập bảng tham chiếu chéo : tổng hợp từ một đến nhiều chỉ tiêu theo hàng, trên mỗi hàng lại tổng hợp một chỉ tiêu khác theo cột, vùng giao nhau giữa hàng và cột thể hiện trị số tổng hợp của một chỉ tiêu thứ ba. Chọn Cross Tab Query, sau đó chọn tên các Table chứa số liệu để lập Query hoặc tên Query cơ sở để tạo Query kế tiếp. Sau đó chọn Next để xuất hiện cửa sổ : 26
  29. Lập trình trực quan • Trong Available Field ta chọn tên trường làm tiêu đề dòng. Số trường tối đa được chọn là 3. • Select Filed : chứa tên các trường được chọn. - Chọn Next để xuất hiện màn hình kế tiếp : - Chọn tên trường sử dụng làm tiêu đề cột. 27
  30. Lập trình trực quan - Chọn Next để sang bước kế tiếp. - Chọn giá trị số cần tính tại mỗi giao điểm dòng và cột. - Chọn Next để chuyển sang bước kế tiếp. - Gõ vào tên của Query cần tạo. - Chọn Finish để hoàn tất tạo Query. - Chú ý : tương tự tạo các Query còn lại. 5.3. Hiệu chỉnh QUERY Nếu muốn hiệu chỉnh lại Query thì ta đưa con trỏ về tên của Query và chọn Design để thực hiện thiết kế lại. Nếu muốn xem lệnh tạo Query thì trong quá trình Design ta bấm nút phải của chuột rồi chọn SQL View. 5.4. Thực hiện QUERY Đưa con trỏ về tên của Query và chọn Open ( hoặc Double Click chuột tại đó). 28
  31. Lập trình trực quan BÀI THỰC HÀNH Câu 1 : tạo Query để xem danh sách của một lớp bất kỳ nào đó nhập từ bàn phím. Bước 1: bấm chuột vào nút Query, chọn New. Bước 2 : chọn Simple Query Wizard, sau đó chọn OK từ bảng sau : Bước 4 : chọn tên các trường cần đưa vào danh sách là: sothe, holot, ten, ngaysinh, malop. Sau đó chọn Next Bước 5 : qui định tên của Query là DANH SACH LOP, chọn Finish đề hoàn tất. 29
  32. Lập trình trực quan Bước 6 : lúc này sẽ xuất hiện danh sách gồm các bản ghi với nội dung các trường đã chọn. Tuy nhiên lúc này trong danh sách xuất hiện sinh viên của tất cả các lớp có trong Table. Bước 7 : hiệu chỉnh lại Query để chỉ xem danh sách từng lớp tùy ý. • Đưa con trỏ về tên Query cần hiệu chỉnh (DANH SACH LOP). • Chọn Design. • Đưa con trỏ về mục Criteria, cột Malop gõ vào điều kiện là =[MA LOP] • Đóng cửa sổ Design Query. Chọn Yes để ghi lại Query mới. Lúc này mỗi khi sử dụng Query (đưa con trỏ về tên Query và chọn Open) thì máy sẽ hỏi mã của lớp cần xem qua cửa sổ: 30
  33. Lập trình trực quan Ta nhập vào mã lớp cần xem, chon OK. Lúc này danh sách của lớp được chỉ định sẽ hiện lên màn hình. Câu 2 : tạo Query để thống kê số lượng sinh viên theo từng lớp, mỗi lớp thì cho biết số lượng nam, nữ. Bước 1 : bấm chuột vào nút Query, sau đó chọn New Bước 2 :Chọn Crosstab Query Wizard • Double Click chuột tại nút OK Bước 3: chọn tên của Table là Ho So, sau đó chọn Next để chuyển sang bước kế tiếp. Bước 4: chọn tên trường làm tiêu đề dòng là MALOP, chọn Next 31
  34. Lập trình trực quan Bước 5: chọn tên trường làm tiêu đề cột là GIOITINH, sau đó chọn Next.Ta lưu ý tên trường làm tiêu đề dòng và cột là tên của trường sẽ được thống kê theo một kiểu tính nào đó. Trong trường hợp này ta đếm số lượng sinh viên theo từng lớp và trong mỗi lớp đếm số lượng nữ và nam là bao nhiêu. Bước 6 :qui định công thức tính. Trong trường hợp này ta chọn hàm COUNT theo số thẻ. Sau đó chọn Next Bước 7 :qui định tên của Query cần lưu trữ trên đĩa là THONG KE SO LUONG. Sau đó chọn Finish. 32
  35. Lập trình trực quan Bước 8: lúc này trên màn hình xuất hiện cửa sổ cho xem ố liệu sau khi đã thống kê như sau: • Đóng cửa sổ trên. Bước 9:nếu muốn thay đổi tiêu đề cột thì ta vào Design, thay chữ Total Of sothe bằng chữ Số lượng Bài tập: từ Table điểm ta thực hiện các Query để : xem bảng điểm từng lớp, xem danh sách thi lại, thống kê số lượng theo xếp loại từng lớp. 33
  36. Lập trình trực quan BÀI 6. LÀM VIỆC VỚI REPORT 6.1. Khái niệm Report cho phép người sử dụng thiết kế các mẫu báo cáo theo yêu cầu để xem và in ấn các báo cáo đó ra giấy. Report là một công cụ rất mạnh để chúng ta có thể tạo ra một báo cáo đẹp mắt. Ta dễ dàng điều chỉnh kích cỡ, kiểu dáng của mọi thành phần trong Report. Đa số các thông tin trong Report được lấy từ các Table, Query, các lệnh của SQL Có hai dạng Report chính là : - Columnar Report : báo cáo dạng cột. Thường sử dụng để in các phiếu theo mẫu cho trước. Ví dụ : in lại phiếu thu, phiếu chi, phiếu báo điểm - Tabular Report : báo cáo dạng bảng. Đây là loại thường sử dụng để in các bảng kê. Trong trường hợp này các trường bố trí trên cột đứng, bản ghi bố trí trên dòng ngang. 6.2. Cách tạo Report Bước 1 : chọn vào nút Report, tiếp đến chọn New Bước 2 : chọn phương pháp và loại Report cần tạo qua cửa sổ : 34
  37. Lập trình trực quan - Choose the table or query where the object's data comes from : chọn tên của Table hoặc Query chứa số liệu cơ sở của Report. - Design View : tự thiết kế Report từ màn hình trắng. - Report Wizard : thiết kế Report với sự trợ giúp của ACCESS. - AutoReport - Columnar : tự động tạo báo cáo dạng cột. - AutoReport - Tabular : tự động tạo báo cáo dạng bảng. - Chart Wizard : tạo đồ thị mô tả với sự trợ giúp của ACCESS - Label Wizard : tạo nhãn với sự trợ giúp của ACCESS. Chọn OK để chuyển sang bước kế tiếp khai báo Report. Sau đây giới thiệu phần thiết kế Report theo các kiểu chọn trên : Report Wizard : Sau khi chọn Report Wizard xuất hiện cửa số : - Chọn tên các trường có nội dung cần xem trong Report từ Available Fields để chuyển sang Selected Fields. - Chọn Next chuyển sang bước tiếp theo. 35
  38. Lập trình trực quan - Chọn tên trường cần dồn nhóm theo nó. Nếu không muốn kết nhóm thì bỏ qua bước này bằng cách chọn Next. Ví dụ : ta muốn in danh sách sinh viên trong trường theo từng nhóm là lớp thì chọn trường nhóm là lớp. - Grouping Option : qui định thêm thông tin về phương pháp tạo nhóm. - Chọn Next để chuyển sang bước tiếp theo : - You can sort records by up to four fields, in either ascending or descending order : qui định việc sắp xếp bản ghi theo thứ tự tắng hoặc giảm tối đa theo bốn khóa. Nếu muốn sắp xếp thì ta chọn tên trường khóa và qui định tăng hoặc giảm. 36
  39. Lập trình trực quan - Summary Option : Cho phép thực hiện tính toán theo các trường. Lúc đó xuất hiện mẫu khai báo : Lúc này ta phải qui định tên trường và công thức tính toán cho từng trường đó. Trong Table có bao nhiêu trường kiểu số thì có bấy nhiêu trường có thể được tính toán. Trong mục Show nếu chọn Detail and summary sẽ có các dòng chi tiết lẫn các dòng tóm tắt, nếu chọn Summary Only thì chỉ có các dòng tính tổng. Nếu chọn Calculate Percent thì sẽ có tính tính tỉ lệ phần trăm. - Sau đó chọn Next để tiếp tục. 37
  40. Lập trình trực quan Qui định cách trình bày Report theo một trong 6 kiểu trên mục Layout. Mục Orientation cho phép qui định cách bố trí theo chiều ngang hay dọc của trang giấy. - Chọn Next qua bước tiếp : Qui định cách trình bày tiêu đề. Sau đó chọn Next để hoàn tất việc khai báo. Lúc này khai báo tên của Report để ghi vào đĩa và chọn Finish để hoàn tất. AutoReport Columnar : tự động tạo ra một báo cáo dạng cột từ một Table cho trước. AutoReport Tabular : tự động tạo ra một báo cáo dạng bảng từ một Table cho trước Design View : cho phép người sử dụng tự thiết kế một Report từ đầu đến cuối. - Chọn tên của Table hoặc Query chứa dữ liệu cơ sở rồi chọn kiểu tự thiết kế Design View. Lúc đó trên màn hình xuất hiện cửa sổ cho phép thiết kế Report như sau : - Page Header : cho phép ghi nội dung tiêu đề đầu mỗi trang in. 38
  41. Lập trình trực quan - Detail : ghi nội dung của các dòng trong Report. - Page Footer : nội dung ở cuối mỗi trang in. - Nếu muốn tạo tiêu đề được in một lần ở đầu báo cáo ta chọn trên thanh thực đơn Cột bên trái xuất hiện thanh công cụ để phục vụ người dùng thiết kế Report, ý nghĩa của chúng như sau : Select Object : cho phép chọn đối tượng. Control Wizard : thiết kế với giúp dỡ của ACCESS Label : tạo nhãn Textbox : hộp dữ liệu Option Group : tạo một Frame Toggle Button : tạo nút Ngoài ra còn có nhiều công cụ khác. 6.3. Hiệu chỉnh Report Sau khi đã thiết kế và lưu trữ Report, nếu muốn hiệu chỉnh lại Report thì: - Trong hộp Database đưa con trỏ đến tên Report cần hiệu chỉnh. - Chọn Design. - Hiệu chỉnh giống như trong Design View. 6.4. Thực hiện Report Nếu muốn xem hoặc in Report ta chọn trên thanh thực đơn : - File Æ Print (để in) hoặc Print Preview (để xem) Hoặc bấm vào các biểu tượng tương ứng trên thanh công cụ 39
  42. Lập trình trực quan BÀI THỰC HÀNH. Tạo Report để in danh sách một lớp tùy ý nhập từ bàn phím theo mẫu : DANH SÁCH LỚP Số thẻ Họ và tên Ngày sinh Ghi chú Bước 1: bấm chuột vào nút Report, chọn New Bước 2: chọn kiểu Report là AutoReport Tabular, tên dữ liệu gốc là Query DANH SACH LOP mà ta tạo trước đó trong bài thực hành về Query. Sau đó chọn OK Bước 3: chờ một lát để máy tự động tạo ra Report theo kiểu ngầm định của ACCESS. Sau đó nó sẽ tự động thực hiện Report để cho ta xem Report vừa tạo xong. Lúc này ta nhập vào tên lớp để xem. Ví dụ ta nhập tên lớp là 94T lúc này trên màn hình sẽ xuất hiện báo cáo : Bước 4: đóng cửa sổ và lưu Report vào đĩa với tên là DANH SACH LOP Bước 5: chọn vào nút Design để hiệu chỉnh lại báo cáo theo qui định ở trên. Lúc này ta phải Design lại mẫu cho giống như yêu cầu. 40
  43. Lập trình trực quan Tương tự ta thực hiện các Report khác như bảng điểm, danh sách thi lại, thống kê 41
  44. Lập trình trực quan BÀI 7. LÀM VIỆC VỚI FORM 7.1. Khái niệm : Form là môth công cụ cho phép người sử dụng thiết kế các mẫu nhập và xem số liệu giống như mẫu biểu ngoài thực tế. Ta thấy khi nhập liệu bằng Table thì tuy việc nhập liệu rất dễ dàng nhưng các mẫu nhập của nó khác nhiều với trong thực tế tạo cảm giác khó chịu khi chưa quen. Vì vậy, khi xây dựng chương trình cho nhiều người sử dụng đặc biệt là những người không chuyên dùng máy tính thì ta phải tạo ra các mẫu biểu giống hệt trong thực tế để dễ dàng khi sử dụng. Dữ liệu sử dụng trong Form được lấy từ Query hoặc Table 7.2. Thiết kế Form : Ta có thể tạo Form bằng nhiều cách khác nhau như : - Dùng AutoForm : tự động tạo Form từ Table hoặc Query cho trước. - Dùng Wizard : tạo Form qua sự giúp đỡ của ACCESS. - Tự thiết kế Form Trên thực tế để tạo Form một cách nhanh chóng, dễ dàng và đẹp mắt ta thường sử dụng Form Wizard để tạo ra mẫu Form và sau đó tự hiệu chỉnh lại những chỗ cần thiết. Sử dụng AutoForm : Auto Form cho phép tự đọng tạo Form với tất cả các trường trong Table hoặc Query. Bước 1: Từ cửa số Database bấm vào nút Form sau đó chọn New Bước 2: Xuất hiện cửa sổ : - Chọn tên của Table hoặc Query chứa số liệu cơ sở của Form. 42
  45. Lập trình trực quan - Chọn loại Form và phương pháp tạo Form. Trong trường hợp này ta chọn AutoForm và kèm theo loại Form (Columnar : dạng cột, Tabular : dạng bảng và Datasheet : dạng bảng tính). Bước 3: Form sẽ được tự động tạo ra trên cơ sở các trường của Table hoặc Query. Ví dụ : chọn Table là DIEM và loại Form là Columnar ta sẽ nhận được kết quả là Form sau : Bước 4: đóng Form bằng cách bấm vào nút có dấu X và ghi tên của Form để lưu trữ lên đĩa qua cửa sổ sau : Sử dụng Form Wizard : Bước 1: chọn Form Wizard trên hộp thoại và tên Table hoặc Query chứa dữ liệu. 43
  46. Lập trình trực quan Bước 2: qui định tên các trường cần đưa vào Form rồi chọn Next qua cửa sổ sau : Bước 3: qui định loại Form theo các mẫu cho sẵn rồi chọn Next qua cửa sổ : Bước 4: qui định cách thức trình bày Form rồi chọn Next qua cửa sổ: 44
  47. Lập trình trực quan Bước 5: nhập vào tên của Form để lưu trữ lên đĩa rồi chọn Finish để hoàn tất việc thiết kế Form qua màn hình : Tự thiết kế Form - Chọn tên Table hoặc Query, chọn kiểu thiết kế Form là Design View rồi OK. - Xuất hiện màn hình để thiết kế Form như sau : Màn hình chứa nội dung của Form Thanh công cụ : chứa các công cụ để phục vụ cho việc thiết kế. Tên gọi và ý nghĩa của các nút chọn trên thanh công cụ theo thứ tự từ trái sang phải như sau: - Select : chọn đối tượng cần hiệu chỉnh. - Control Wizard: trợ giúp của Wizard khi tạo Control. - Label : tạo nhãn. 45
  48. Lập trình trực quan - TextBox: nội dung biểu thức hoặc trường. - Option Group: nhóm chọn việc. - Toggle Button: tạo nút bật tắt. - Option Button: tạo nút chọn một trong nhiều giá trị. - CheckBox: hộp đánh dấu để chọn nhiều giá trị cùng lúc. - ComboBox: hộp chọn cặp. - ListBox: hộp xem, chọn trong một danh sách. - Command Button: tạo nút lệnh. - Image: tranh ảnh. - Unbound Object Frame: tạo một khung hình cố định. - Bound Object Frame: tạo khung hình không cố định. - Page Break: tạo dấu phân trang. - Tab Control: tạo Tab điều khiển để chọn trang. - SubForm: tạo Form con. - Line: vẽ đường thẳng. - Rectangle: vẽ hình chữ nhật. - More Control: chọn sử dụng các nút điều khiển từ nhiều chương trình khác. Muốn đưa một công cụ vào trong Form ta có thể tự thiết kế nút đó hoặc sử dung Control Wizard của ACCESS : a. Nếu dùng Control Wizard : - Bấm nút Control Wizard (cho nó có màu sáng). - Bấm vào công cụ cần chọn để đưa vào Form. 46
  49. Lập trình trực quan - Drag chuột vào trong Form tại khu vực cần đặt công cụ đó. - Khai báo các thông tin cần thiết theo chỉ dẫn của ACCESS. b. Tự thiết kế : - Bấm chuột vào công cụ cần chọn để đưa vào Form. - Drag chuột vào trong Form tại khu vực cần đặt công cụ đó. - Khai báo các thông tin cần thiết. Nếu muốn sửa đổi các thuộc tính thì bầm đúp chuột tại công cụ vừa tạo để khai báo lại. 7.3. Hiệu chỉnh Form - Chọn tên của Form cần hiệu chỉnh, chọn Design - Sửa đổi giống như trong phần tự thiết kế. 7.4. Thực hiện Form - Chọn tên của Form. - Chọn Open 47
  50. Lập trình trực quan BÀI THỰC HÀNH Tạo Form để nhập hồ sơ. Bước 1: bấm con chuột vào Form, chon New Bước 2: chọn vào mục Form Wizard, tên Table mà ta cần nhập hoặc xem số liệu trên đó là: Ho So. Sau đó chọn OK Bước 3: chọn tên các trường mà ta cần nhập hoặc xem. Trong trường hợp này ta bẫm chuột vào >> để chọn tất cả các trường. Tiếp đến chọn Next Bước 4: chọn cách nhập hoặc xem trên Form. Ta chọn Column, tiếp đến chọn Next 48
  51. Lập trình trực quan Bước 5: chọn màu sắc và cách thể hiện dữ liệu trên Form. Ta chọn Flax sau đó bấm vào Next để chuyên sang bước kế tiếp. Bước 6: qui định tên của Form để lưu trữ lên đĩa. Chọn Finish để hoàn tất. Bước 7: lúc này ACCESS tự động tạo ra Form để ta nhập và xem số liệu. Màn hình xem và nhập như sau : Bước 8: đóng cửa sổ nhập và chọn Design để thiết kế lại Form cho nó đẹp và dễ sử dụng hơn. 49
  52. Lập trình trực quan - Đổi các tiêu đề thành tiếng Việt có dấu. Chọn Font chữ VN Times new roman. - Thêm vào các nút bấm (Command Button) là : Mới, Thoát và D.sách. - Mới : để mỗi khi bấm vào nút này ta sẽ có một màn hình trống để nhập vào bản ghi mới. Cách làm : • Bấm chuột chọn Control Wizard • Bấm chuột chọn Command Button • Drag chuột để chỉ định vị trí cần đặt nút bấm • Chọn Record Operations • Chọn AddNew Record, chọn Next • Qui định dòng ghi chú trên nút là Mới • Chọn Finish để hoàn tất công việc . - Thoát : để mỗi khi bấm vào nút này ta sẽ kết thúc làm việc với Form. Cách làm : • Bấm chuột chọn Control Wizard • Bấm chuột chọn Command Button • Drag chuột để chỉ định vị trí cần đặt nút bấm 50
  53. Lập trình trực quan • Chọn Form Operations • Chọn Close Form, chọn Next • Qui định dòng ghi chú trên nút là Thoát • Chọn Finish để hoàn tất công việc . - D.sách : để mỗi khi bấm vào nút này ta sẽ xem danh sách của một lớp tùy ý từ Report đã tạo trước đó. Cách làm : • Bấm chuột chọn Control Wizard • Bấm chuột chọn Command Button • Drag chuột để chỉ định vị trí cần đặt nút bấm • Chọn Report Operations • Chọn Preview Report, chọn Next • Qui định tên Report cần mở là : DANH SACH LOP • Qui định dòng ghi chú trên nút là D.Sách • Chọn Finish để hoàn tất công việc . 51
  54. Lập trình trực quan Bước 9: đóng cửa sổ Design và chọn Yes để ghi lại phần vừa thiết kế. Khi nào cần nhập hồ sơ ta chọn tên của Form và Open, lúc đó ta có màn hình nhập : Bài tập: tương tự hãy thêm một số chức năng khác vào Form trên. Tạo các Form để nhập điểm, nhập danh mục lớp 52
  55. Lập trình trực quan BÀI 8. MACRO VÀ HỆ THỐNG THỰC ĐƠN 8.1. MACRO 8.1.1 1. Khái niệm : Macro là một hay một tập hợp các hành động (Action) liên tiếp được định nghĩa và lưu trữ với một tên xác định. Macro cho phép tự động hóa các công việc cần thực hiện. Có ba loại Macro chính là : - Macro kết hợp nhiều hành động : là Macro được kết hợp bởi nhiều hành động liên tiếp nhau. Khi tên Macro được gọi các hành động này sẽ lần lượt được tự động thực hiện. - Macro Group : là một tập hợp các Macro có các tính năng giống nhau. Nó cho phép quản lý cơ sở dữ liệu dễ dàng hơn. Để thi hành một Macro trong Macro Group ta chỉ tên của nó như sau : Tên Macro Group.Tên Macro thực hiện. - Macro theo điều kiện : là Macro mà các hành động chỉ được thi hành khi thỏa mãn điều kiện nào đó. Điều kiện là một biểu thức được chỉ định trong Condition. 8.1.2 Cách tạo Macro - Bước 1: trong cửa số Database chọn nút Macro, tiếp đến chọn New - Bước 2 :xuất hiện cửa sổ để khai báo Macro như sau : 53
  56. Lập trình trực quan - Trong Action ta chọn một hành động cần thực hiện. Ta có thể chọn nhiều hành động tương ứng với nhiều dòng. - Trong cột Comment ta có thể ghi rõ chú thích về hành động. Cột này không bắt buộc nhưng nó giúp người sử dụng dễ dàng khi bảo trì hệ thống vì biết được ý đồ thực hiện khi thiết kế. - Trong mục Action Arguments ta có thể chỉ định các đối số cho Action nếu cần thiết. 8.1.3 Thực hiện Macro Để thực hiện Macro ta có thể chọn tên của Macro trong Database rồi chọn tiếp Open Hoặc gọi tên Macro trong khi sử dụng Form, Report 8.2. Hệ thống thực đơn Ta có thể sử dụng Macro để xây dựng hệ thống thực đơn cho phép lựa chọn công việc một cách dễ dàng và tiện lợi. Thông qua hệ thống thực đơn ta có thể liên kết tất cả các đối tượng trên Database thành một hệ thống chương trình thống nhất tiện lợi cho người sử dụng chương trình. 8.2.1 Cách tạo thực đơn: Giả sử ta muốn tạo một hệ thống thực đơn gồm các mục như sau : Mục 1 Mục 2 Mục 3 Mục 1-1 Mục 2-1 Mục 3-1 Mục 1-2 Mục 2-2 Mục 3-2 Mục 1-n Mục 2-n Mục 3-n Trong hệ thống thực đơn này các mục nằm ngang gọi là Menu cấp 1, mỗi cột đứng là một Menu cấp 2 (ta có 3 Menu cấp 2) và tương tự có thể tạo Menu các cấp thấp hơn (Ví dụ : chọn vào Mục 1-1 thì xuất hiện các mục Mục 1-1-1, Mục 1-1-2 ). 54
  57. Lập trình trực quan Bước 1: tạo menu cấp 1. - Bấm dấu chuột vào nút Macro, chọnNew. - Khai báo vào bảng sau : - Action : lựa chọn hành động là AddMenu cho cả ba - Comment : ghi dòng chú thích. Mục này không cần. - Menu Name : ghi nội dung dòng chữ sẽ hiện trên thanh thực đơn. Trong trường hợp này ta đặt tên là : Mục 1, Mục 2, Mục 3. Nếu muốn xuất hiện dấu gạch chân dười chữ cái dùng làm phím nóng thì thêm vào trước chữ & - Menu Macro Name : tên của Macro. Ta phải nhớ tên này để sau này gọi lại trong khi tạo menu cấp 2. Trong trường hợp ta đặt tên các Macro là : Muc1, Muc2, Muc3 - Status Bar Text : nội dung dòng chữ sẽ xuất hiện trên thanh Menu Bar khi ta chọn vào mục này. - Ta đóng cửa sổ này bằng cách bấm chuột vào góc trên bên phải nơi có dấu X và đặt tên cho Macro là MainMenu (Tên này ta tự qui định). Bước 2: tạo các menu cấp 2. - Vào hộp Database chọn nút Macro rồi chọn New. - Xuất hiện cửa sổ giống bước 1, ta chọn thêm View - Macro Name, sẽ xuất hiện cửa sổ mới như sau : 55
  58. Lập trình trực quan - Macro Name : gõ vào tên các mục trên Menu cấp hai thứ nhất. Những chữ này sẽ được in ra trên thanh thực đơn. - Action : hành động cần thực hiện khi ta chọn vào chức năng này. Ta chọn các Action này trong danh sách mà ACCESS cho trước. - Action Argument : khai báo các tham số liên quan đến Action. - Đóng cửa sổ này và gõ vào tên của Macro để lưa trữ lên đĩa. Tên này phải trùng với tên của Macro (mà ta đã khai báo trong Menu Macro Name ở bước1). Trong trường này ta gõ tên là Muc1. - Tương tự, ta tạo hai Macro cấp 2 khác và đặt tên là Muc2, Muc3 Bước 3: gắn Menu lên một Form hoặc Report. - Trong cửa sổ Database chọn Form (hoặc Report). Chọn New. Bấm chuột vào hộp Properties trên thanh Menu Bar để xuất hiện hộp thoại : 56
  59. Lập trình trực quan 8.2.2 Sử dụng thực đơn Khi nào muốn dụng thực đơn chọn viện ta chỉ việc mở Form có gắn với thanh thực đơn được tạo. 57
  60. Lập trình trực quan BÀI THỰC HÀNH Tạo hệ thống thực đơn để nối các Form, Report ở các bài thực hành trước vào một ứng dụng chung. Thực đơn như sau : Nhập số liệu Xem báo cáo Kết thúc Hồ sơ Danh sách lớp Tổ chức lớp Thống kê số lượng Bước 1: tạo Macro cho thực đơn nằm ngang - Trong cửa số Database chọn nút Macro, tiếp đến chọn New - Xuất hiện cửa sổ để khai báo Macro dành cho thực đơn nằm ngang. Ta gõ vào tên các Macro con, dòng thông báo trên thanh thực đơn. Ta khai vào các mục trên cửa sổ như sau : Action Menu Name Menu Macro Name AddMenu Nhap so lieu Nhap AddMenu Xem bao cao Baocao AddMenu Ket thuc Ketthuc 58
  61. Lập trình trực quan - Đóng cửa sổ và ghi tên Macro là QUAN LY SINH VIEN Bước 2: tạo các Macro đứng. - Tạo Macro nhap : • Chọn Macro, New • chọn View, Macro Name để có màn hình khai báo sau : Ta khai các mục như sau : Macro Name Action Form Name View Ho sơ OpenForm Nhap ho so Form Danh muc lop OpenForm Nhap lop Form Đóng cửa sổ trên và ghi lại tên của Macro là Nhap (tên này giống như tên trong Macro qui định trong bước trước). - Tạo Macro baocao : 59
  62. Lập trình trực quan • Chọn Macro, New • Chọn View, Macro Name để có màn hình khai báo sau : Macro Name Action Form Name View Danh sach lop OpenReport Danh sach lop Print Preview Thong ke so luong OpenQuery Thong ke so luong Print Preview Đóng cửa sổ và ghi với tên baocao - Tạo Macro Ketthuc. Tương tự như trên nwng ở mục Action ta chọn Close. Bước 3: gắn Macro với một Form. - Chọn Form, chọn New. - Double Click chuột vào nền của Form để chọn Properties. - Khai vào mục ToolBar tên của Macro ngang là : QUAN LY SINH VIEN - Đóng cửa sổ tạo Form vàaặt tên là MENU. - Như vậy, từ đây về sau nếu muốn chọn công việc trên thanh thực đơn ta chỉ việc mở Form có tên là MENU Bài tập : thêm vào thực đơn các chức năng khác. 60
  63. PHẦN II VISUAL BASIC
  64. Lập trình trực quan BÀI 9. MỞ ĐẦU 9.1. Giới thiệu Ngôn ngữ BASIC (Beginner's All Purpose Symbolic Instruction Code) đã có từ năm 1964. BASIC rất dễ học và dễ dùng. Trong vòng 15 năm đầu, có rất nhiều chuyên gia Tin Học và công ty tạo các chương trình thông dịch (Interpreters) và biên dịch (Compilers) cho ngôn ngữ này làm BASIC trở nên rất phổ dụng. Năm 1975, Microsoft tung ra thị trường sản phẩm đầu tay Microsoft BASIC và tiếp đó Quick BASIC (còn gọi là QBASIC) thành công rực rỡ. Quick BASIC phát triển trong nền Windows nhưng vẫn khó khăn khi tạo giao diện kiểu Windows. Sau đó nhiều năm, Microsoft bắt đầu tung ra một sản phẩm mới cho phép chúng ta kết hợp ngôn ngữ dễ học BASIC và môi trường phát triển lập trình với giao diện bằng hình ảnh (Graphic User Interface - GUI) trong Windows. Đó là Visual Basic Version 1.0 vào năm 1991. Trước đó, chúng ta không có một giao diện bằng hình ảnh (GUI) với một IDE (Integrated Development Environment) giúp các chuyên gia lập trình tập trung công sức và thì gìờ vào các khó khăn liên quan đến doanh nghiệp của mình. Mỗi người phải tự thiết kế giao diện qua thư viện có sẵn Windows API (Application Programming Interface) trong nền Windows. Điều này tạo ra những trở ngại không cần thiết làm phức tạp việc lập trình. Visual Basic giúp chúng ta bỏ qua những khó khăn đó, các chuyên gia lập trình có thể tự vẽ cho mình giao diện cần thiết trong ứng dụng (application) một cách dễ dàng và như vậy, tập trung nổ lực giải đáp các vấn đề cần giải quyết trong doanh nghiệp hay kỹ thuật. Ngoài ra, còn nhiều công ty phụ phát triển thêm các thủ tục, hàm (modules), công cụ (tools, controls) hay ứng dụng (application) phụ giúp dưới hình thức VBX cộng thêm vào giao diện chính nên VB càng lúc càng thêm phong phú. Khi Visual Basic phiên bản 3.0 được giới thiệu, thế giới lập trình lại thay đổi lần nữa. Với phiên bản này, chúng ta có thể thiết kế các ứng dụng (application) liên quan đến cơ sở dữ liệu (Database) trực tiếp tác động (interact) đến người dùng qua DAO (Data Access Object). Ứng dụng này thưòng gọi là ứng dụng trực diện (front-end application). 61
  65. Lập trình trực quan Phiên bản 4.0 và 5.0 mở rộng khả năng VB nhắm đến hệ điều hành Windows 95. Phiên bản 6.0 cung ứng một phương pháp mới nối với cơ sở dữ liệu (Database) qua sự kết hợp của ADO (Active Data Object). ADO còn giúp các chuyên gia phát triển mạng nối với cơ sở dữ liệu (Database) khi dùng Active Server Pages (ASP). Lưu ý ở đây, tất cả các khái niệm và công dụng của Modules, Tools, Controls, DAO, ADO hay ASP sẽ được trình bày trong các bài học sau. Tuy nhiên, VB phiên bản 6.0 (VB6) không cung ứng tất cả các đặc trưng của kiểu mẫu ngôn ngữ lập trình hướng đối tượng (Object Oriented Language - OOL) như các ngôn ngữ C++, Java. Visual Basic là một ngôn ngữ lập trình trực quan và thường được sử dụng hiện nay. Giống như các ngôn ngữ khác, khi lập trình ta buộc phải tuân theo các qui tắc, trình tự Logic nhất định nhưng nếu so với các ngôn ngữ lập trình có cấu trúc như Turbo Pascal, C thì Visual Basic đi theo một phương pháp lập trình mới. Visual Basic xây dựng một môi trường làm việc dưới dạng các biểu mẫu (Form), các hộp điều khiển (Control Box), thiên về các đối tượng (Object oriented), những thủ tục được xử lý theo tình huống và các phương thức (Method). Khi làm việc với Visual Basic người lập trình có nhiệm vụ chính là thiết kế biểu mẫu, các khung giao diện, các nút lệnh và công việc sẽ thực hiện tương ứng trên đó; các lệnh, các chỉ thị phải được viết ra sẽ hạn chế tối đa. Một trong những điểm khác biệt rõ ràng nhất giữa Visual Basic và các ngôn ngữ lập trình có cấu trúc là một ngôn ngữ xử lý theo tình huống (event - driven language) và một ngôn ngữ xử lý theo thủ tục (procedural - language). Đối với các ngôn ngữ xử lý theo thủ tục thì một chương trình ứng dụng sẽ cho thi hành một cách Logic theo từng lệnh một tùy theo cách sắp xếp, tổ chức của người viết chương trình. Còn ngôn ngữ xử lý theo tình huống thì các chỉ thị chương trình chỉ được thực hiện khi gặp một tình huống đặc biệt xảy ra. Mỗi một tình huống tương ứng một thủ tục được thực hiện và các thủ tục này trong chương trình là hoàn toàn độc lập. Visual Basic được xem là một ngôn ngữ lập trình xây dựng trên cơ sở của một phương pháp lập trình hiện đại được MicroSoft đưa vào thị trường vào năm 1991 với phiên bản 1.0. Trong hai năm sau đó thì lần lượt các phiên bản 2.0 và 3.0 ra đời. Hiện nay phiên bản 4.0 đang được sử dụng rộng rãi và có những thay đổi, bổ sung quan trọng so với các phiên bản trước. 62
  66. Lập trình trực quan 9.2. Các khái niệm thường dùng Đối tượng (Object) : là một tập hợp bao gồm chương trình và dữ liệu liên quan với nhau tạo thành một đơn vị xử lý độc lập. Khi khai báo đối tượng xong ta chỉ cần truyền cho nó các tham số cần thiết khi muốn đối tượng hoạt động. Khi đã hoàn tất khai báo, thực hiện thử để kiểm tra ta có thể lưu trữ đối tượng để sử dụng trong các chương trình khác. Trong Visual Basic các đối tượng chính là biểu mẫu (FORM) và hộp điều khiển (CONTROL). Biểu mẫu (Form) : là một khung cửa sổ hiện trên màn hình và nó có thể chứa một dãy các hộp điều khiển trên đó. Tất cả các dữ liệu muốn nhập, xem đều được trình bày trên biểu mẫu này. Hộp điều khiển (Control Box) : là một đối tượng đặt trên Form, mỗi một hộp điều khiển sẽ tương ứng với một một chức năng nào đó sẽ được thực hiện. Mỗi một đối tượng ta có thể khai báo cho nó một số các thuộc tính riêng như màu sắc, kích thước, giá trị và các thuộc tính này có thể thay đổi trong quá trình thực hiện chương trình. Thủ tục tình huống (Event procedure) : là một dãy các chỉ thị lệnh và sẽ được tự động thực hiện khi xảy ra tình huống tương ứng. Một đối tượng có thể bao gồm nhiều thủ tục tình huống như vậy. Phương thức (Method) : là các lệnh thao tác lên một đối tượng để thực hiện các xử lý theo yêu cầu nào đó (giống như một chương trình con). Mỗi phương thức sẽ mang một tên xác định và nếu muốn thực hiện phương thức ta viết như sau : . [tham số] Ví dụ : Form1.Print "In lên màn hình", trong đó đối tượng là Form1, phương thức là Print và tham số là nội dung "In lên màn hình". 9.3. Làm việc với Visual Basic 9.3.1 Cài đặt : a. Yêu cầu về thiết bị: 63
  67. Lập trình trực quan - CPU AT386 trở lên. - Ổ đĩa cứng còn trống 10MB trở lên. - RAM 2MB trở lên. - Màn hình màu EGA hoặc VGA. - Con chuột. b. Cài đặt: - Khởi động WINDOWS. - Chèn đĩa CD ROM v ào ổ. - Chọn File Æ Run, sau đó gõ D:\SETUP hoặc E:\SETUP (thông thường máy sẽ tự khởi động phần Setup) 9.3.2 Khởi động Nếu trên máy tính đang sử dụng có cài đặt chương trình Visual Basic thì ta tiến hành khởi động như sau : - Khởi động WINDOWS - Double Click tại biểu tượng của Visual Basic. 9.3.3 Màn hình làm việc Sau khi khởi động sẽ xuất hiện màn hình làm việc của Visual Basic với các cửa sổ chính như sau : Menu Bar Tools Bar Tools Box Form Project Properties a. Menu Bar (thanh thực đơn): ghi các chức năng lệnh của Visual Basic để người sử dụng có thể chọn thực hiện. Muốn chọn một chức năng trên đó ta có thể thực hiện : - Cách 1 : Click chuột tại tên chức năng cần thực hiện. - Cách 2 : Alt + 64
  68. Lập trình trực quan - Cách 3 : F10, chọn và gõ Enter tại chức năng đó. b. Tools Bar (thanh các công cụ): chứa các biểu tượng và mỗi biểu tượng sẽ tương ứng với một lệnh được thực hiện. Đây là những lệnh thường được sử dụng trong Visual Basic. Muốn chọn một lệnh nào đó ta chỉ cần Double Click tại biểu tượng tương ứng. c. Tools Box (hộp công cụ): chứa các biểu tượng và mỗi biểu tượng tương ứng với một hộp điều khiển (Control Box). Nó cho phép chọn hộp điều khiển để đưa vào biểu mẫu trong quá trình thiết kế. Muốn đưa một hộp điều khiển vào biểu mẫu ta thực hiện qua các bước sau : - Click chuột tại biểu tượng tương ứng. - Drag chuột tại khu vực cần đặt hộp điều khiển trên Form. - Khai báo các thuộc tính và thủ tục tương ứng. d. Form Window (cửa sổ biểu mẫu): là cửa sổ dành để thiết kế chương trình. Trên này ta sẽ đặt các hộp điều khiển để xem, nhập số liệu hoặc các nút để chọn thủ tục cần thực hiện. e. Project Window (cửa sổ dự án) : là cửa sổ liệt kê tên các tập tin, biểu mẫu và các đơn thể chương trình thuộc ứng dụng hiện hành. Ta có thể xem một biểu mẫu hoặc bộ mã lệnh chương trình nếu Double Click tại tên tương ứng. f. Properties (cửa sổ thuộc tính): là cửa sổ cho xem các thuộc tính gắn liền với một đối tượng. 9.3.4 Kết thúc Cho phép ngừng làm việc với Visual Basic và quay về lại môi trường WINDOWS. - Chọn File. - Chọn Exit. 65
  69. Lập trình trực quan BÀI 10. LẬP TRÌNH TRONG VISUAL BASIC Khi lập trình trong Visual Basic, mọi ứng dụng đều thường bắt đầu bằng biểu mẫu (Form), đây là nơi hiển thị tất cả các thông tin liên quan đến ứng dụng. Khi thiết kế chương trình ta thường qua các bước : - Gắn các hộp điều khiển vào biểu mẫu. - Thay đổi thuộc tính của hộp điều khiển. - Viết thủ tục tình huống cho hộp điều khiển đó. - Trong phần này ta sẽ giới thiệu tổng quát về các bước trên. 66
  70. Lập trình trực quan 10.1. Làm việc với hộp điều khiển Hộp điều khiển là thành phần cơ bản nhất của biểu mẫu, nó quyết định hình dạng và hoạt động của ứng dụng. Một ứng dụng có linh hoạt, cung cấp đủ tiện nghi cho người dùng hay không sẽ phụ thuộc phần lớn vào việc sử dụng và khai thác các hộp điều khiển. 10.1.1 Các loại hộp điều khiển : trên thanh Tools Bar có các nút điều khiển thường sử dụng như : Pointer Picture Box Label Box Text Box Frame Command Button Check Box Radio Button List Box Combo Box Horizontal Scroll Vertical Scroll Timer Drive List Directory List File List Shape Control Line Image Control Database Box Ý nghĩa các nút điều khiển như sau : Tên gọi Ý nghĩa Pointer Di chuyển điểm đặt Label Box Ghi nội dung dòng văn bản. Nội dung cố định. Frame Tạo khung hình chữ nhật chứa nhiều hộp điều khiển Check Box Dùng chọn giá trị True hoặc False, nhiều hơn một mục List Box Liệt kê các giá trị để chọn lựa Horizontal Scroll Thanh cuộn ngang để thay đổi phần màn hình cần xem Timer Dùng bẫy tình huống theo thời gian. Kiểm tra quá hạn Directory List Liệt kê tên các thư mục Shape Control Cung cấp công cụ để vẽ hình. Image Control Hiển thị hình ảnh trong tập tin Bitmap 67
  71. Lập trình trực quan Picture Box Hiển thị hình ảnh đồ họa bất kỳ. Dung lượng lớn hơn Image Text Box Giữ nội dung văn bản. Có thể sửa đổi. Command Button Nút lệnh để chọn thực hiện một lệnh nào đó Radio Button Ô đài. Cho phép chọn một trong nhiều giá trị. Combo Box Ô hốn hợp, phối hợp hộp văn bản và liệt kê Vertical Scroll Thanh cuộn đứng Drive List Liệt kê tên các ổ đĩa trên máy File List Liệt kê tên tập tin Line Cho phép vẽ đường thẳng Database Box Cho phép thao tác với cơ sở dữ liệu 10.1.2 Thêm hộp điều khiển lên biểu mẫu Để bổ sung một hộp điều khiển lên biểu mẫu ta có thể thực hiện theo một trong ba cách sau: Cách 1 : - Click chuột tại biểu tượng tương ứng với loại hộp điều khiển cần chọn cho nó đổi màu. - Drag chuột ra ngoài biểu mẫu đề tạo thành một hộp hình chữ nhật tại vị trí cần đặt biểu tượng. Cách 2 : - Double Click chuột tại biểu tượng tương ứng với loại hộp điều khiển cần chọn. Lúc này hộp điều khiển sẽ tự động được đặt vào giữa biểu mẫu. - Drag chuột để thay đổi vị trí và kích thước của nó cho đúng với yêu cầu. Cách 3 : - Nhấn giữ phím CTRL đồng thời Click chuột tại biểu tượng tương ứng với loại hộp điều khiển cần chọn. - Drag chuột ra ngoài biểu mẫu đề tạo thành một hộp hình chữ nhật tại vị trí cần đặt biểu tượng. 68
  72. Lập trình trực quan 10.1.3 Hiệu chỉnh hộp điều khiển : • Thay đổi vị trí : Drag chuột tại hộp điều khiển trên biểu mẫu. • Thay đổi kích thước : bấm chuột vào hộp, đưa dấu chuột về góc phải bên dưới rồi Drag chuột. • Xóa hộp điều khiển : bấm chuột lên hộp rồi gõ phím DELETE. • Sao chép : Ctrl + C để chép nút vào bộ nhớ. • Dán : Ctrl + V để dán nút từ bộ nhớ ra màn hình. • Nhóm các hộp thành một khối : giữ phím Ctrl đồng thời Click chuột lần lượt tại các hộp cần nhóm lại với nhau. 10.2. THUỘC TÍNH Thuộc tính là tập hợp các mô tả về đối tượng mà người sử dụng có thể thay đổi được. Ta có thể thay đổi các thuộc tính khi thiết kế biểu mẫu hoặc trong quá trình thực hiện chương trình. Thông thường, khi thiết kế biểu mẫu ta phải khai báo các thuộc tính có sẵn và ít bị thay đổi. Sau đó khi thực hiện chương trình nếu muốn thay đổi các tham số mố tả thuộc tính thì ta tiếp tục thực hiện các thay đổi đó. 10.2.1 Khi thiết kế : - Click chuột vào đối tượng (hộp điều khiểu hoặc biểu mẫu) mà ta cần thay đổi thuộc tính. - Gọi cửa sổ Properties. (nhấn phím F4 hoặc chọn Window - Properties). - Xuất hiện cửa sổ chứa các thuộc tính như bên. Ta thực hiện thay đổi các thuộc tính theo yêu cầu. - Cửa sổ thuộc tính : 69
  73. Lập trình trực quan 10.2.2 Khi thực hiện chương trình Muốn thay đổi thuộc tính trong quá trình thực hiện chương trình ta viết trong chương trình dòng lệnh: [OBJECT.] = 10.2.3 Các loại thuộc tính : Khi làm việc với các đối tượng ta thường sử dụng các thuộc tính sau : - BorderStyle : qui định dạng xuất hiện của đường viền biểu mẫu. Ta chọn : • 0 (none) : không có đường viền. Biểu mẫu không có các nút Minimize, Maximize và hộp trình đơn điều khiển. Không được xê dịch và thay đổi kích thước biểu mẫu. • 1 (Fixed Single) : đường viền là gạch đơn. Có các nút thu phóng kích thước. Không thay đổi ích thước. • 2 (Sizeble) : cho phép thay đổi kích thước. • 3 (Fixed Double): đường viến nét đôi, cố định vị trí. - Caption : thay đổi nội dung dòng chú thích sẽ hiện lên tại đối tượng. 70
  74. Lập trình trực quan - Control Box : qui định sự có mặt hay không của thanh trình đơn điều khiển trên biểu mẫu. Thuộc tính này không thay đổi được khi chạy chương trình. - MinButton và MaxButton : qui định có các nút phóng to (Maximum) hoặc thu nhỏ (Minimum) trên biểu mẫu hay không. Chọn giá trị True hoặc False. - Enable : qui định việc bật (nếu giá trị True) hoặc tắt (giá trị False) sự hoạt động của nút điều khiển hoặc biểu mẫu. - Name : khai báo tên của đối tượng. Tên này giống như tên biến, nó sẽ được sử dụng khi cần làm việc với các đối tượng trong các đoạn mã chương trình. - Font : thay đổi kiểu chữ. Ta có thể sử dụng các thuộc tính sau liên quan đến Font chữ: FontName (tên kiểu chữ), Font Size (kích thước chữ), FontBold (chữ đậm), FontItalic (chữ ngiêng), FontStrikethru (gạch xóa), FontTransparent (nếu True thì có nền), FontUnderline (gạch chân). - Height : thay đổi chiều cao của đối tượng. - Width : thay đổi độ rộng của đối tượng - Left : chuyển dịch đối tượng theo phương ngang. - Top : chuyển dịch đối tượng theo phương đứng. - ScaleMode : qui định đơn vị đo lường. • 0 : cho biết đơn vị do người dùng ấn định. • 1 : trị ngầm định là Twip (1440 Twips = 1 inch). • 2 : Point (72 Points = 1 inch). • 3 : Pixed (đơn vị đo nhỏ nhất theo độ phân giải màn hình). • 4 : Ký tự. • 5 : Inch. • 6 : mm 71
  75. Lập trình trực quan • 7 : cm - Icon : xác định biểu tượng sẽ được hiển thị vào lúc chạy chương trình khi biểu mẫu này bị thu nhỏ. - MousePointer : qui định hình dạng của dấu chuột. - Visible : qui định biểu mẫu được bật hay tắt. - WindowState : qui định trạng thái của cửa sổ. (0 : bình thường), 1 (thu nhỏ thành biểu tượng) và 2 (phóng to tối đa). - BackColor : qui định màu nền. - ForeColor : qui định màu chữ. Ngoài ra, còn có nhiều thuộc tính khác nhưng ít được dùng. Trong các phần sau nếu gặp sẽ giải thích thêm. 10.3. Thủ tục tình huống: Mỗi một đối tượng (biểu mẫu hoặc hộp điều khiển) đều có thể kèm theo một thủ tục để khi ta kích vào đối tượng này thì thủ tục sẽ được thực hiện. Các thủ tục theo tình huống này tương tự như các Valid trong FOXPRO. - Cách gọi thủ tục tình huống : Cách 1 : Double Click chuột vào đối tượng tương ứng. Cách 2 : Click chuột vào đối tượng sau đó nhấn phím F7 (hoặc chọn View - Code). - Cách viết : các chỉ thị được viết vào giữa Sub End Sub Chú ý : - Sau khi đã thiết kế xong biểu mẫu ta lưu trữ ứng dung vào đĩa bằng cách chọn File - Save rồi đặt tên cho biểu mẫu. - Muốn thực hiện biểu mẫu ta chọn Run – Start 72
  76. Lập trình trực quan BÀI THỰC HÀNH Hãy thiết kế và thực hiện một biểu mẫu để soạn thảo một đoạn văn bản và có thể thực hiện các thao tác để hiệu chỉnh, trang trí cho đoạn văn bản đó. Để thực hiện công việc trên ta tiến hành theo trình tự sau : Bổ xung hộp điều khỉển : - Khởi động Visual Basic. - Trên cửa sổ Form ta đưa vào lần lượt các hộp điều khiển như sau : • 1 hộp Text Box để soạn thảo nội dung văn bản. • 3 hộp Check Box để phục vụ việc trang trí. • 4 hộp Command Button để phục vụ việc hiệu chỉnh. - Lúc này ta nhận được mẫu Form như sau : 73
  77. Lập trình trực quan 10.4. Thay đổi thuộc tính : 10.4.1 Hộp Text : - Click chuột vào hộp Text1, gõ phím F4. - Đổi các thuộc tính : • MultiLine : True. • ScrollBar : Both. • Name : txt 10.4.2 Các hộp Command Button : - Lần lượt Click chuột vào các hộp Command1, Command2, Command3 và Command4 và nhấn phím F4. - Sau đó, ở mỗi lần ta thay đổi : • Caption : Cắt, Sao chép, Dán và Xóa (đổi tên tương ứng). • Name : cmdcut, cmdcopy, cmdpaste và cmddele 10.4.3 Các hộp Check Box : - Lần lượt Click chuột vào các hộp Check 1, Check 2, Check 3 và nhấn phím F4. - Sau đó, ở mỗi lần ta thay đổi : • Caption : In đậm, In ngiêng và Gạch chân (đổi tên tương ứng). • Name : chkbold, chkitalic, chkunder. 10.4.4 Đổi Font : - Giữ phím Control đồng thời chick chuột tại tất cả các đối tượng để tạo nhóm đối tượng. - Gõ phím F4 gọi cửa số Properties. - Đổi Font sang tên là Vntimes New Roman, Size 10. 74
  78. Lập trình trực quan 10.5. Viết các thủ tục tình huống : 10.5.1 Thủ tục của Form : đây là thủ tục chứa các chỉ thị khởi tạo giá trị ban đầu. - Bấm Double Click chuột vào nền của Form. - Gõ vào nội dung chương trình như sau : Private Sub Form_Load() txt = "" 'Khởi tạo biến trắng txt.FontBold = False 'Không đậm txt.FontItalic = False txt.FontUnderline = False chkbold.Value = 0 'Chưa chọn in đậm chkitalic.Value = 0 chkunder.Value = 0 End Sub - Sau đó vào hộp Ojbect chọn tiếp General để gõ vào chỉ thị khai báo biến nhớ ClipText : Private Sub Text1_Change() Dim ClipText As String 'Khởi tạo biến chuỗi tên là ClipText End Sub 10.5.2 Thủ tục của các hộp Command : - Lần lượt Double Click chuột tại các hộp Cắt, Sao chép, Dán và Xóa và gõ vào các thủ tục tương ứng sau : Private Sub cmdcut_Click() ClipText = txt.SelText 'Chép khối vào biến tạm ClipText txt.SelText = "" 'Xóa khối khỏi văn bản txt.SetFocus 'Tham chiếu đến biến TXT End Sub Private Sub cmdcopy_Click() ClipText = txt.SelText txt.SetFocus End Sub Private Sub cmdpaste_Click() txt.SelText = ClipText 'Gán khối bởi giá trị biến ClipText txt.SetFocus 75
  79. Lập trình trực quan End Sub Private Sub cmddel_Click() txt.Text = "" txt.SetFocus End Sub 10.5.3 Thủ tục của các hộp Check Box : - Lần lượt Double Click chuột tại các hộp In đậm, In ngiêng, Gạch chân và gõ vào các thủ tục sau : Private Sub chkbold_Click() txt.FontBold = Not (txt.FontBold) 'Ngược lại với giá trị cũ txt.SetFocus End Sub Private Sub chkitalic_Click() txt.FontItalic = Not (txt.FontItalic) txt.SetFocus End Sub Private Sub chkunder_Click() txt.FontUnderline = Not (txt.FontUnderline) txt.SetFocus End Sub 10.6. Ghi và thực hiện trương trình : - Chọn File - Save để lưu trữ biểu mẫu vào đĩa vởi tên là VANBAN - Chọn Run - Start để bắt đầu thực hiện chương trình. Chú ý : nếu muốn lưu trữ và xem nội dung chương trình dưới dạng văn bản thì ta thực hiện như sau : 10.6.1 Lưu trữ : - Chọn File. - Chọn File Save As - Chọn kiểu tập tin là TEXT, đặt tên là Vanban.TXT. 76
  80. Lập trình trực quan 10.6.2 Xem mã lệnh : - Vào một chương trình soạn thảo văn bản bất kỳ. - Gọi văn bản dạng TEXT có tên Vanban.TXT. - Lúc này ta có nội dung chương trình như sau : VERSION 4.00 Begin VB.Form Form1 Caption = "Form1" ClientHeight = 3390 ClientLeft = 1140 ClientTop = 1665 ClientWidth = 6495 Height = 3870 Left = 1080 LinkTopic = "Form1" ScaleHeight = 3390 ScaleWidth = 6495 Top = 1245 Width = 6615 Begin VB.Frame Frame1 Caption = "Frame1" BeginProperty Font name = "VNtimes new roman" charset = 1 weight = 400 size = 9.75 underline = 0 'False italic = 0 'False strikethrough = 0 'False EndProperty Height = 2055 Left = 4680 TabIndex = 5 Top = 120 Width = 1695 Begin VB.CheckBox chkunder 77
  81. Lập trình trực quan Caption = "Gạch chân" BeginProperty Font name = "VNtimes new roman" charset = 1 weight = 400 size = 9.75 underline = 0 'False italic = 0 'False strikethrough = 0 'False EndProperty Height = 375 Left = 240 TabIndex = 8 Top = 1560 Width = 1215 End Begin VB.CheckBox chkitalic Caption = "In ngiêng" BeginProperty Font name = "VNtimes new roman" charset = 1 weight = 400 size = 9.75 underline = 0 'False italic = 0 'False strikethrough = 0 'False EndProperty Height = 375 Left = 240 TabIndex = 7 Top = 960 Width = 1215 End Begin VB.CheckBox chkbold Caption = "In đậm" BeginProperty Font name = "VNtimes new roman" charset = 1 78
  82. Lập trình trực quan weight = 400 size = 9.75 underline = 0 'False italic = 0 'False strikethrough = 0 'False EndProperty Height = 375 Left = 240 TabIndex = 6 Top = 360 Width = 1215 End End Begin VB.CommandButton cmddel Caption = "Xóa" BeginProperty Font name = "VNtimes new roman" charset = 1 weight = 400 size = 9.75 underline = 0 'False italic = 0 'False strikethrough = 0 'False EndProperty Height = 495 Left = 4920 TabIndex = 4 Top = 2520 Width = 1215 End Begin VB.CommandButton cmdpaste Caption = "Dán" BeginProperty Font name = "VNtimes new roman" charset = 1 weight = 400 size = 9.75 underline = 0 'False 79
  83. Lập trình trực quan italic = 0 'False strikethrough = 0 'False EndProperty Height = 495 Left = 3480 TabIndex = 3 Top = 2520 Width = 1215 End Begin VB.CommandButton cmdcopy Caption = "Sao chép" BeginProperty Font name = "VNtimes new roman" charset = 1 weight = 400 size = 9.75 underline = 0 'False italic = 0 'False strikethrough = 0 'False EndProperty Height = 495 Left = 1920 TabIndex = 2 Top = 2520 Width = 1215 End Begin VB.CommandButton cmdcut Caption = "Cắt" BeginProperty Font name = "VNtimes new roman" charset = 1 weight = 400 size = 9.75 underline = 0 'False italic = 0 'False strikethrough = 0 'False EndProperty Height = 495 80
  84. Lập trình trực quan Left = 360 TabIndex = 1 Top = 2520 Width = 1095 End Begin VB.TextBox txt BeginProperty Font name = "VNtimes new roman" charset = 1 weight = 400 size = 9.75 underline = 0 'False italic = 0 'False strikethrough = 0 'False EndProperty Height = 2055 Left = 360 MultiLine = -1 'True ScrollBars = 3 'Both TabIndex = 0 Text = "THU1.frx":0000 Top = 120 Width = 3735 End End Attribute VB_Name = "Form1" Attribute VB_Creatable = False Attribute VB_Exposed = False Private Sub chkbold_Click() txt.FontBold = Not (txt.FontBold) txt.SetFocus End Sub Private Sub chkitalic_Click() txt.FontItalic = Not (txt.FontItalic) txt.SetFocus End Sub 81
  85. Lập trình trực quan Private Sub chkunder_Click() txt.FontUnderline = Not (txt.FontUnderline) txt.SetFocus End Sub Private Sub cmdcopy_Click() ClipText = txt.SelText txt.SetFocus End Sub Private Sub cmdcut_Click() ClipText = txt.SelText 'Chép khối lên bộ nhớ txt.SelText = "" txt.SetFocus End Sub Private Sub cmddel_Click() txt.Text = "" txt.SetFocus End Sub Private Sub cmdpaste_Click() txt.SelText = ClipText txt.SetFocus End Sub Private Sub Form_Load() Dim ClipText As String txt = "" txt.FontBold = False txt.FontItalic = False txt.FontUnderline = False chkbold.Value = 0 chkitalic.Value = 0 chkunder.Value = 0 End Sub Private Sub Text1_Change() Dim ClipText As String End Sub 82
  86. Lập trình trực quan BÀI 11. BIẾN NHỚ 11.1. Khái niệm : Trong Visual Basic ta có thể lưu trữ các giá trị để phục vụ cho quá trình xử lý dữ liệu đưới bốn hình thức là : biến, hằng, mảng và bản ghi. Biến và hằng tại mỗi thời điểm chỉ lưu trữ được một giá trị còn mảng và bản ghi thì lưu trữ được nhiều giá trị cùng lúc. Tên các đại lượng do người sử dụng tự qui địnhnhưng phải thỏa mãn : - Không dài quá 40 ký tự. - Ký tự đàu kiên là chữ cái, các ký tự đi sau có thể là số, dấu _ (gạch dưới). - Ký tự cuối cùng có thể là một trong các hậu tố cho biết kiểu dữ liệu như : %, &, !, #, @ và #. - Tên biến không được trùng với các từ dành riêng (Reserved word). - Visual Basic không phân biệt ký tự chữ in với chữ thường. 11.2. Khai báo biến : Ta có thể định nghĩa biến bằng một trong các cách sau : 11.2.1 Khai báo bằng : DIM AS Trong đó tên kiểu dữ liệu được chọn từ một trong các kiểu sau : - Integer (2 byte): là số nguyên bình thường thuộc [-32768, 32767]. - Long (4 byte): số nguyên dài thuộc [-2147483648, 2147483647]. - Single (4 byte): số thực độ chính xác đơn thuộc [-3.4E+38, -3.4E+38]. Giữ lại 7 chữ số sau dấu thập phân. 83
  87. Lập trình trực quan - Double (8 byte): số thực độ chính xác kép thuộc [-1.8E+308, 1.8E+308]. Giữ lại 16 chữ số sau dấu thập phân - Currency (8 byte) : lưu trữ các giá trị là tiền tệ. Chứa được tối đa 15 chữ số bên trái và 4 chữ số bên phải dấu thập phân. - String :chứa chuỗi ký tự có chiều dai thay đổi từ 0 đến 65535 ký tự. - String*num : chứa chuỗi ký tự có chiều dai định trước. Khi khai báo phải ấn định trước độ dài từ 0 đến 32767 ký tự. - Varian : lưu trữ đồng thời hai thông tin là : giá trị và kiểu dữ liệu. • Phạm vi : các chỉ thị DIM có thể xuất hiện ở cấp đơn thể, cấp biểu mẫu hoặc cấp thủ tục. Nếu ta khai báo DIM ở cấp nào thì các biến chỉ có hiệu lực trong cấp đó. • Ví dụ : DIM sotien AS long DIM luong AS Currency DIM hoten AS String 11.2.2 Cách viết : DIM Ta có thể không cần dùng AS mà ghi trực tiếp ký hiệu hậu tố khai báo kiểu dữ liệu vào sau tên biến để định kiểu. Ta có các ký tự hậu tố (Suffix Character) như sau : - % : Integer. - & : Long. - ! : Single. - # : Double. - @ : Currency. - $ : String. Ví dụ : 84
  88. Lập trình trực quan DIM hoten$ DIM sotien@ DIM luong% 11.2.3 Khai báo biến toàn cục : GLOBAL AS Trong trường hợp biến sẽ có hiệu lực trên tất cả các đơn thể của chương trình. Lệnh này chỉ được sử dụng ở phần declarations của đơn thể. Ví dụ : GLOBAL hoten AS String Lúc này biến hoten sẽ có hiệu lực trên toàn chương trình. 11.2.4 Khai báo nhiều biến : DefType Trong Visual Basic nếu một biến được sử dụng mà không khai báo thì Visual Basic ngầm hiểu là biến Varian. Với chỉ thị DefType ta có thể chuyển biến Varian thành một kiểu dữ liệu khác. - Visual Basic chấp nhận các chỉ thị DefType sau : • DefInt : Integer. • DefLng : Long. • DefSng : Single. • DefDbl : Double. • DefCur : Currency. • DefStr : String. - DefVar : Varian. - Miền ký tự : cho biết khoảng ký tự. Từ đây về sau những biến nào có ký tự bắt đầu thuộc miền ký tự trên sẽ có kiểu dữ liệu như trong DefType qui định. Ví dụ : DefInt S 85
  89. Lập trình trực quan Từ đây về sau các biến như : Sotien, Soluong, S đều có kiểu dữ liệu là Integer vì có ký tự mở đầu là S Tuy nhiên chỉ thị này không ảnh hưởng đến các biến được khai báo bở chỉ thị DIM hoặc mang các hậu tố qui định kiểu dữ liệu. 11.3. Khai báo hằng : Hằng (Constant) là một đại lượng có giá trị không thay đổi trong suốt thời gian thực hiện chương trình. Cách khai báo : CONST = , = , Tên hằng cũng theo qui ước giống như tên biến. Ta có thể gắn ký tự hậu tố để định kiểu (%, !, &, #, $, @) cho hằng. Tuy nhiên, sau này khi dùng tên hằng trong chương trình thì không được viết hậu tố này. Ví dụ : CONST diemgioi% = 7 Sau này trong chương trình ta chỉ viết : IF dtb% >= diemgioi THEN MsgBox "Sinh viên này xếp loại Giỏi" Phạm vi hoạt động của hằng giống như của biến. Nếu muôn khai báo hằng có tác dụng toàn cụ thì viết : GLOBAL CONST = 11.4. Khai báo mảng : Mảng (Array) là đại lượng có thể lưu trữ được nhiều giá trị khác nhau tại cùng một thời điểm thông qua các phần tử của nó. 11.4.1 Khai báo mảng : - Khai báo bằng DIM : 86
  90. Lập trình trực quan - Cách viết : DIM (phần tử) AS Hoặc DIM (phần tử) - Tên mảng do người sử dụng tự qui định. Giống như cách khai báo tên biến. - Phần tử : khai báo số lượng các phần tử trong mảng. Có nhiều cách : Số lượng tối đa. Trong trường hợp này phần tử bắt đầu là không. Ví dụ : DIM a(10) AS Integer hoặc DIM a%(10) Lúc này sẽ có các phần tử là a(0), a(1), a(10) và mỗi phần tử chứa một số nguyên. Phần tử bắt đầu đến phần tử cuối. Qui định rõ các các phần tử đầu đến cuối. Ví dụ : DIM A(5 TO 10) AS Single hoặc DIM A!(5 TO 10) Lúc này có các phần tử là a(5), a(6), , a(10) và mỗi phần tử là số thực độ chính xác đơn Mảng nhiều chiều. Giữa các chiều ngăn cách bởi dấu , (phẩy). Ví dụ : DIM a(10,20) AS Integer hoặc DIM a%(10,20) Lúc này sẽ có các phần tử là a(0,0), a(0,1), a(10,20) và mỗi phần tử chứa một số nguyên. DIM A(1 TO 5, 1 TO 7) AS Single Lúc này sẽ có các phần tử là a(1,1), a(1,2), a(5,7) và mỗi phần tử chứa một số thực. Phạm vi hoạt động của biến mảng cũng giống như các biến bình thường khác. - Khai báo bằng GLOBAL: lúc này biến sẽ có tác dụng trên toàn chương trình. Khai báo này phải đặt trong phần khai báo của đơn thể chứ không đặt trong thủ tục hoặc biểu mẫu. 11.4.2 Sử dụng mảng : Biến mảng đưọc sử dụng trong chương trình giống như các biến thông thường khác, tuy nhiên phải chỉ rõ số hiệu phần tử của nó. Ví dụ : khai báo biến mảng tháng và lưu trữ số thứ tự của tháng trong năm. Sau đó in các tên tháng ra màn hình. 87
  91. Lập trình trực quan DIM thang(1 TO 12) AS Integer FOR I = 1 TO 12 Thang(I) = I NEXT I FOR I = 1 TO 12 Print "Thang :" + Str(thang(I)) NEXT I 11.5. Khai báo bảng ghi : Bản ghi là kiểu dữ liệu đặc biệt bao gồm nhiều giá trị thuộc nhiều kiểu dữ liệu khác nhau. Biến bản ghi được sử dụng nhiệu để giải quyết các bài toán trong quản lý số liệu. 11.5.1 Khai báo : Khai báo bản ghi bắt buộc phải được đặt ở phân đoạn Declaration của đơn thể chương trình mà không thể đặt ở cấp biểu mẫu hoặc thủ tục. Biến bản ghi đương nhiên phải là biến toàn cục. Cách khai báo : TYPE AS AS AS END TYPE DIM AS Tên bản ghi do người sử dụng tự qui định theo qui tắc của tên biến. 11.5.2 Sử dụng biến bản ghi : Các biến bản ghi được sử dụng như các biến bình thường khác nhưng phải chỉ rõ tên trường ở phía sau và ngăn cách với tên biến bởi dấu . (chấm). Cách viết : . 88
  92. Lập trình trực quan 11.6. Biến đổi (convert) từ loại dữ liệu này qua loại d ữ liệu khác Nhiều lúc ta cần phải convert data type của một variable từ loại này qua loại khác, VB6 cho ta một số các Functions dưới đây. Xin lưu rằng khi gọi các Functions này, nếu chúng ta đưa một data value bất hợp lệ thì có thể bị lỗi. Function Chú thích CBool () Ðổi parameter ra True hay False. Nếu Integer khác 0 thì được đổi thành True CByte () Ðổi parameter ra một con số từ 0 đến 255 nếu có thể được, nếu không thì là 0. CDate () Ðổi parameter ra Date CDbl () Ðổi parameter ra Double precision floating point number CInt () Ðổi parameter ra Integer CSng () Ðổi parameter ra Single precision floating point number CStr () Ðổi parameter ra String Ngoài các Function nói trên chúng ta cũng có thể dùng Function Val để convert một String ra Number. Lưu ý là khi Function Val process một String nếu nó gặp một character nào không phải là digit hay decimal point thì nó không process tiếp nữa. Do đó nếu Input String là "$25.50" thì Val returns con số 0 vì $ không phải là một digit. Nếu Input String là "62.4B" thì Val returns 62.4. CDbl là Function dùng để convert một String ra số an toàn nhất. Input String có thể chứa các dấu , và . (thí dụ: 1,234,567.89) tùy theo nơi chúng ta ở trên thế giới (thí dụ như Âu Châu hay Mỹ). CSng cũng làm việc giống như CDbl nhưng nếu con số lớn hơn 1 triệu nó có thể bị bug. Cái bug hay gặp của CSng là nếu Input String không có gì cả (tức là InputString="") thì Function CSng cho chúng ta Type Mismatch Error. Do đó để khắc phục khuyết điểm này chúng ta có thể viết cho mình một Function tạm đặt tên là CSingle để dùng thế cho CSng : Function CSingle(strNumber) As Single If Trim(strNumber) = "" Then CSingle = 0# Else CSingle = CSng(strNumber) End If End Function 89
  93. Lập trình trực quan BÀI 12. CÁC CẤU TRÚC ĐIỀU KHIỂN Tương tự như các ngôn ngữ lập trình khác trong Visual Basic ta có thể sử dụng các cấu trúc điều khiển trong chương trình để có thể chọn lựa công việc thực hiện hoặc tự động lặp lại nhóm chỉ thị nhiều lần. 12.1. Cấu trúc chọn : 12.1.1 Cấu trúc : IF THEN Khi gặp cấu trúc này nếu điều kiện có giá trị True thì thực hiện chỉ thị nếu điều kiện có giá trị False thì bỏ qua chỉ thị đó. Ví dụ : IF dtb > 5 THEN Print "Bạn đủ điểm" Trong trường hợp này chỉ có duy nhất một chỉ thị. 12.1.2 Cấu trúc : IF THEN ELSE Khi gặp cấu trúc này nếu điều kiện có giá trị True thì thực hiện chỉ thị 1 nếu điều kiện có giá trị False thì thực hiện chỉ thị 2. Ví dụ : IF dtb > 5 THEN Print "Bạn đủ điểm" ELSE Print "Bạn thiếu điểm" Chú ý : - Nếu muốn sau THEN hoặc ELSE có nhiều chỉ thị cần thực hiện thì phải viết xuống dòng và cuối cấu trúc này phải có END IF. Cách viết : IF THEN 90
  94. Lập trình trực quan ELSE END IF 12.1.3 Cấu trúc : Select Case Case Case [Case Else ] End Select Trong đó : - Biểu thức : là một thức chuỗi hoặc số. Nếu giá trị của biểu thức ở đây trùng với giá trị của các biểu thức được liệt kê nào bên dưới thì khối chỉ thị tương ứng được thực hiện. - Liệt kê biểu thức I : là biểu thức sẽ được đem so sánh với biểu thức đầu. Trong phần này biểu thức liệt kê có thể được viết dưới các dạng sau : • Biểu thức : số hoặc chữ. • Biểu thức 1 TO Biểu thức 2 : chỉ ra đoạn giá trị nằm giữa biểu thức 1 và 2. • IS : chỉ ra phép so sánh và giá trị so sánh. - Khối chỉ thị I : là các chỉ thị cần thực hiện trong trường hợp giá trị của biểu thức thứ I trùng với giá trị của biểu thức đầu. Ở đây có thể gồm nhiều chỉ thị được viết trên nhiều dòng. Ví dụ : viết chương trình nhập vào tuổi một người và cho biết người đó thuộc lứa tuổi nào. Sub Form_Click() Dim Cauhoi, Tuoi 'Khai báo biến Cauhoi và Tuoi Cauhoi = "Bạn bao nhiêu tuổi :" 91
  95. Lập trình trực quan Tuoi = InputBox(Cauhoi) ' Nhập tuổi vào biến tuoi Select Case Tuoi Case 1 TO 12 MsgBox "Bạn ở tuổi Nhi đồng" 'In ra dòng thông báo Case 13 TO 18 MsgBox "Bạn ở tuổi Thiếu niên" Case 18 TO 25 MsgBox "Bạn ở tuổi Thanh niên" Case 25 TO 60 MsgBox "Bạn đã là Người lớn" Case IS > 60 MsgBox "Bạn ở tuổi Về hưu" Case Else MsgBox "Bạn không phải con người" End Select End Sub 12.2. Cấu trúc lặp : cho phép tự động lặp đi lặp lại nhóm lệnh nhiều lần. 12.2.1 Cấu trúc : FOR = TO [STEP n] [Khối chỉ thị 1] [Exit For] [Khối chỉ thị 2] NEXT - Biến đếm : là tên biến dùng để kiểm tra số lần lặp. - Giá trị đầu : là giá trị khởi gán lần đầu tiên cho biến đếm khi thực hiện vòng lặp. - Giá trị cuối : là giá trị cuối cùng của biến đếm. Khi biến đếm đạt đến giá trị này thì vòng lặp thực hiện lần cuối và dừng quá trình lặp. - STEP n : chỉ định bước nhảy n để thực hiện thay đổi giá trị của biến đếm sau mỗi lần lặp. - Khối chỉ thị : liệt kê các chỉ thị cần thực hiện trong mỗi lần lặp. - Exit For : nếu trong vòng lặp mà gặp chỉ thị này thì sẽ ngưng vòng lặp. 92
  96. Lập trình trực quan Vòng lặp trên cho phép tự động thực hiện các chỉ thị với số lần lặp xác định trước. Ví dụ : viết đoạn lệnh in ra các số nguyên từ 1 đến 10. FOR so! = 1 TO 10 'biến số là Single Print so! NEXT so! Ví dụ : viết đoạn lệnh in ra các số với bước nhảy 0.25 và từ 0 đến 10. FOR so! = 0 TO 10 STEP 0.25 'biến số là Single Print so! NEXT so! 12.2.2 Cấu trúc : WHILE [Khối chỉ thị] Wend - Điều kiện : qui định điều kiện để thực hiện vờng lặp. Nếu điều kiện có giá trị True thì thực hiện khối chỉ thị, gặp Wend sẽ quay trở lại kiểm tra điều kiện. Quá trình trên kết thúc khi điều kiện có giá trị False. - Khối chỉ thị : các chỉ thị cần thực hiện trong vòng lặp. Ví dụ : viết đoạn lệnh in ra các số nguyên từ 1 đến 10. So! = 1 While so! ] [Khối chỉ thị] [Exit Do] [Khối chỉ thị] LOOP [WHILE | UNTIL ] - Điều kiện : qui định điều kiện để thực hiện vờng lặp. 93
  97. Lập trình trực quan - Nếu dùng WHILE thì điều kiện có giá trị True thì thực hiện khối chỉ thị, nếu False kết thúc vòng lặp. - Nếu dùng UNTIL thì điều kiện có giá trị False thì thực hiện khối chỉ thị, nếu True kết thúc vòng lặp. Ta có thể đặt điều kiện ở đầu hoặc cuối vòng lặp đều được. - Khối chỉ thị : các chỉ thị cần thực hiện trong vòng lặp. - Exit Do : cho phép dừng vòng lặp mà không cần qua kiểm tra điều kiện. Ví dụ : viết đoạn lệnh in ra các số nguyên từ 1 đến 10. So! = 1 Do While so! 10 12.3. Nhãn : Trong Visual Basic ta có thể chuyển đến thực hiện ở một đoạn chương trình hoặc một dòng lệnh mới bằng cách dùng nhãn hoặc số thứ tự dòng lệnh. 94
  98. Lập trình trực quan 12.3.1 Nhãn : Là một đoạn chỉ thị lệnh bất kỳ trong chương trình được gán một tên xác định. Khi cần thực hiện đoạn chỉ thỉ này ta chỉ việc nhảy về nhãn đó. Mỗi nhãn được dùng trong biểu mẫu hoặc đơn thể phải là duy nhất. Không thể sử dụng hai nhãn trùng tên trong một biểu mẫu, thủ tục, hộp điều khiển - Cách viết tên_nhãn: - Cách gọi : • Cách 1 : sử dụng lệnh GOTO • Cách 2 : sử dụng lệnh ON GOTO Trong trường hợp này biểu thức số có giá trị từ 1 đến 255 và tên nhãn có số thứ tự tương ứng với biểu thức số sẽ được thực hiện. Ví dụ : ON stt GOTO nhan1, nhan2, nhan3 Nếu stt có giá trị 1 thì nhan1 được thực hiện, stt là 2 thì nhan2 thực hiện và stt là 3 thì nhan3 được thực hiện. Ví dụ : Sub Form_Click() Print "Giáo trình" GOTO Nhan1 Print "Không in" Nhan1: Print "Lập trình trực quan" End Sub Lúc này kết quả trên màn hình ta nhận được : Giáo trình Lập trình trực quan Còn dòng lệnh Print "Không in" sẽ không thực hiện. 95
  99. Lập trình trực quan 12.3.2 Số thứ tự dòng lệnh : Là phương pháp đánh số ở trước mỗi dòng lệnh và khi cần ta có nhảy đến vị trí này bất cứ lúc nào. Mỗi số được dùng trong biểu mẫu hoặc đơn thể phải là duy nhất. Không thể sử dụng hai số trùng giá trị để đánh số dòng lệnh trong một biểu mẫu, thủ tục, hộp điều khiển Các số dùng đánh số dòng lệnh là tùy ý không bắt buộc phải đánh số theo thứ tự tăng hay giảm dần mà ngẫu nhiên, không bắt buộc phải đánh số tất cả các chỉ thị lệnh mà thích đánh số vào dòng lệnh nào cũng được. Cách gọi : GOTO Khi thực hiện lệnh này Visual Basic sẽ chuyển đến dòng lệnh được đánh số tươnmg ứng. Ví dụ : 100 MsgBox "Dòng lệnh mang số 100" 101 MsgBox "Dòng lệnh mang số 101" 57 MsgBox "Dòng lệnh mang số 57" GOTO 101 96
  100. Lập trình trực quan BÀI 13. METHOD Method là các chương trình được xây dựng sẵn để phục vụ cho việc thực hiện các thao tác thường gặp. Method có tác dụng gần giống như lệnh, thủ tục hoặc hàm được xây dựng sẵn trong các ngôn ngữ lập trình có cấu trúc. Thông thường Method chỉ tác dụng lên một lớp các đối tượng. Sau đây ta sẽ xét một số Method thường được sử dụng. 13.1. Circle Method Cú pháp : [Object].Circle [Step] (X,Y), Radius [, [Color], [Start], [End], [Aspec]] - Object : tên của biểu mẫu hoặc khung hình mà ta cần vẽ hình tròn trên đó. - Step : cho biết đây là tọa độ tương đối so với vị trí hiện hành do hai thuộc tính CurrentX và CurrentY cung cấp. - X, Y : chỉ định tọa độ tâm của hình tròn, ellipse hoặc cung tròn. - Radius : chỉ định bán kính. - Color : chỉ định màu sắc. Màu tương ứng với giá trị là một số nguyên. - Start, End : trị số tính theo Radian, cho biết điểm xuất phát và điểm kết thúc khi vẽ một cung tròn hoặc Ellipse. - Aspect : trị số cho biết góc xoay mặt phẳng chứa hình tròn để tạo ra hình Ellipse. Tác dụng : cho phép tạo ra một hình tròn, cung tròn hoặc hình Ellipse theo yêu cầu người sử dụng. Ví dụ 1: Form.Circle (1000, 2000), 500 Vẽ hình tròn có tâm là điểm (1000,2000) và bán kính là 500. (các đơn vị tính theo Fixed). Ví dụ 2 : vẽ một dãy các hình tròn đồng tâm với màu sắc tùy ý. 97
  101. Lập trình trực quan Private Sub Hinhtron_Click() Dim CX, CY, Radius ' Declare variable. ScaleMode = 3 ' Set scale to pixels. CX = ScaleWidth / 2 ' Set X position. CY = ScaleHeight / 2 ' Set Y position. If CX > CY Then Limit = CY Else Limit = CX For Radius = 0 To Limit ' Set radius. Circle (CX, CY), Radius, RGB(Rnd * 255, Rnd * 255, Rnd * 255) Next Radius End Sub 13.2. Line Method Cú pháp : [Object].Line [Step] (X1, Y1) - [Step] (X2, Y2)[,Color][,BF] - Object : tên của biểu mẫu hoặc khung hình mà ta cần vẽ dường thẳng trên đó. - X1, Y1 : chỉ định tọa độ điểm xuất phát. - X2, Y2 : chỉ định tọa độ điểm kết thúc. - Color : chỉ định màu sắc. Màu tương ứng với giá trị là một số nguyên. - Step : cho biết đây là tọa độ tương đối so với vị trí hiện hành do hai thuộc tính CurrentX và CurrentY cung cấp. - B (Box) : vẽ một khung hình chữ nhật. Lúc này điểm xuất phát và điểm kết thúc là hai góc hình chữ nhật. - F (Fill) : khung hình chữ nhật sẽ được tô màu. Tác dụng : cho phép tạo ra một đoạn thẳng hoặc khung hình chữ nhật theo yêu cầu người sử dụng. Ví dụ : vẽ các hình và các đường thẳng với nhiều màu sắc và hình dạng khác nhau. Private Sub duongthang_Click() Dim CX, CY, F, F1, F2, I ' Declare variables ScaleMode = 3 ' Set ScaleMode to pixels. 98
  102. Lập trình trực quan CX = ScaleWidth / 2 ' Get horizontal center. CY = ScaleHeight / 2 ' Get vertical center. DrawWidth = 8 ' Set DrawWidth. For I = 50 To 0 Step -2 F = I / 50 ' Perform interim F1 = 1 - F: F2 = 1 + F ' calculations. ForeColor = QBColor(I Mod 15) ' Set foreground color. Line (CX * F1, CY * F1)-(CX * F2, CY * F2), , BF Next I DoEvents ' Yield for other processing. If CY > CX Then ' Set DrawWidth. DrawWidth = ScaleWidth / 25 Else DrawWidth = ScaleHeight / 25 End If For I = 0 To 50 Step 2 ' Set up loop. F = I / 50 ' Perform interim F1 = 1 - F: F2 = 1 + F ' calculations. Line (CX * F1, CY)-(CX, CY * F1) ' Draw upper-left. Line -(CX * F2, CY) ' Draw upper-right. Line -(CX, CY * F2) ' Draw lower-right. Line -(CX * F1, CY) ' Draw lower-left. ForeColor = QBColor(I Mod 15) ' Change color each time. Next I DoEvents ' Yield for other processing. End Sub 13.3. Cls Method Cú pháp : [object.]Cls Tác dụng : xóa màn hình của Form. Ví dụ : Private Sub Xoa_Click() Dim Msg ' Declare variable. AutoRedraw = -1 ' Turn on AutoRedraw. ForeColor = QBColor(15) ' Set foreground to white. 99
  103. Lập trình trực quan BackColor = QBColor(1) ' Set background to blue. FillStyle = 7 ' Set diagonal crosshatch. Line (0, 0)-(ScaleWidth, ScaleHeight), , B ' Put box on form. Msg = "This is information printed on the form background." CurrentX = ScaleWidth / 2 - TextWidth(Msg) / 2 ' Set X position. CurrentY = 2 * TextHeight(Msg) ' Set Y position. Print Msg ' Print message to form. Msg = "Choose OK to clear the information and background " Msg = Msg & "pattern just displayed on the form." MsgBox Msg ' Display message. Cls ' Clear form background. End Sub 13.4. Hide Method Cú pháp : [Object.]Hide Tác dụng : che cửa sổ Form. Ví dụ : che và làm xuất hiện lại cửa sổ Form đang làm việc Private Sub Chehien_Click() Dim Msg ' Declare variable. Hide ' Hide form. Msg = "Choose OK to make the form reappear." MsgBox Msg ' Display message. Show ' Show form again. End Sub 13.5. Show Method Cú pháp : [Object.]Show Tác dụng : làm xuất hiện cửa sổ Form. Private Sub Chehien_Click() Dim Msg ' Declare variable. Hide ' Hide form. Msg = "Choose OK to make the form reappear." MsgBox Msg ' Display message. 100
  104. Lập trình trực quan Show ' Show form again. End Sub 13.6. Item Method Cú pháp : [Object.]Item(Index) Tác dụng : sắp xếp lại các thành viên trong Collection theo thứ tự của khóa chỉ định trong Index. Ví dụ : Dim SmithBillBD As Object Dim SmithAdamBD As Object Set SmithBillBD = Birthdays.Item("SmithBill") Set SmithAdamBD = Birthdays("SmithAdam") 13.7. Move Method Cú pháp : [Object.]Move Left [, Top][, Width][, Height] - Object: tên Object cần chuyển dịch. - Left : qui định giá trị cần dịch chuyển sang bên trái. - Top : qui định dịch chuyển lên phía trên. - Width : qui định độ rộng mới của đối tượng. - Height : qui định độ cao mới của đối tượng. Tác dụng : cho phép di chuyển và điều chỉnh kích thước của đối tượng. Ví dụ : Private Sub dichuyen_Click() Dim Inch, Msg ' Declare variables. Msg = "Choose OK to resize and move this form by " Msg = Msg & "changing the value of properties." MsgBox Msg ' Display message. Inch = 1440 ' Set inch in twips. 101
  105. Lập trình trực quan Width = 4 * Inch ' Set width. Height = 2 * Inch ' Set height. Left = 0 ' Set left to origin. Top = 0 ' Set top to origin. Msg = "Now choose OK to resize and move this form " Msg = Msg & "using the Move method." MsgBox Msg ' Display message. Move Screen.Width-2*Inch, Screen.Height-Inch, 2*Inch, Inch End Sub 13.8. Point Method Cú pháp : [Object.]Point (X, Y) - X : Hoành độ của điểm cần vẽ. - Y : Tung độ của điểm cần vẽ. Tác dụng : trả về một điểm có toa độ xác định. Ví dụ : tô màu bằng các dấu chấm. Private Sub vediem_Click() Dim LeftColor, MidColor, Msg, RightColor 'Declare variables. AutoRedraw = -1 ' Turn on AutoRedraw. Height = 3 * 1440 ' Set height to 3 inches. Width = 5 * 1440 ' Set width to 5 inches. BackColor = QBColor(1) ' Set background to blue. ForeColor = QBColor(4) ' Set foreground to red. Line (0, 0)-(Width / 3, Height), , BF ' Red box. ForeColor = QBColor(15) ' Set foreground to white. Line (Width / 3, 0)-((Width / 3) * 2, Height), , BF LeftColor = Point(0, 0) ' Find color of left box, MidColor = Point(Width / 2, Height / 2) ' middle box, and RightColor = Point(Width, Height) ' right box. Msg = "The color number for the red box on the left side of " Msg = Msg & "the form is " & LeftColor & ". The " Msg = Msg & "color of the white box in the center is " Msg = Msg & MidColor & ". The color of the blue " Msg = Msg & "box on the right is " & RightColor & "." 102
  106. Lập trình trực quan MsgBox Msg ' Display message. End Sub 13.9. Print Method Cú pháp : [Object.]Print OutputList Tác dụng : cho phép in giá trị các biểu thức trong OutputList ra đối tượng. OutputList là một danh sách các biểu thức cần in. Object là tên đối tượng mà ta cần in lên đó. Nếu muốn in máy in thì tên Object là Printer. Ví dụ : Private Sub Command1_Click() Dim MyVar MyVar = "Chúc các bạn lập trình thật tốt với Visual Basic." Print MyVar End Sub 13.10. PrintForm Method Cú pháp : [Object.]PrintForm Tác dụng : cho phép in tất cả các hình ảnh của biểu mẫu ra giấy. Nếu không chỉ rõ tên Form thì Form đang làm việc sẽ được in. Object ở đây là tên Form cần in. Ví dụ Private Sub Command1_Click() Dim Msg ' Declare variable. On Error GoTo ErrorHandler ' Set up error handler. PrintForm ' Print form. Exit Sub ErrorHandler: Msg = "The form can't be printed." MsgBox Msg ' Display message. Resume Next End Sub 103
  107. Lập trình trực quan 13.11. PSet Method Cú pháp : [Object.]Pset [Step] (X, Y)[, Color] - Object : An object expression that evaluates to an object in the Applies To list. If object is omitted, the Form with the focus is assumed to be object. - Step : A keyword specifying that the coordinates are relative to the current graphics position given by the CurrentX and CurrentY properties. - (X, Y) : Single-precision values indicating the horizontal (x-axis) and vertical (y-axis) coordinates of the point to set. - Color: Long integer value indicating the RGB color specified for point. Tác dụng : tương tự như Point Method. Ví dụ : vẽ các chấm điểm với màu sắc và vị trí ngẫu nhiên trên cửa sổ Form. Private Sub Form_Click () Dim CX, CY, Msg, XPos, YPos ' Declare variables. ScaleMode = 3 ' Set ScaleMode to pixels. DrawWidth = 5 ' Set DrawWidth. ForeColor = QBColor(4) ' Set background to red. FontSize = 24 ' Set point size. CX = ScaleWidth / 2 ' Get horizontal center. CY = ScaleHeight / 2 ' Get vertical center. Cls ' Clear form. Msg = "Chúc mừng năm mới!" CurrentX = CX - TextWidth(Msg) / 2 ' Horizontal position. CurrentY = CY - TextHeight(Msg) ' Vertical position. Print Msg ' Print message. Do XPos = Rnd * ScaleWidth ' Get horizontal position. YPos = Rnd * ScaleHeight ' Get vertical position. PSet (XPos, YPos), QBColor(Rnd * 15) ' Draw confetti. DoEvents ' Yield to other Loop ' processing. End Sub 104
  108. Lập trình trực quan 13.12. Refresh Method Cú pháp : [Object.]Refresh Tác dụng : cho phép "làm tươi'" lại đối tượng, nghĩa là nó cho phép vẽ lại hình ảnh của Object. Ví dụ : Private Sub Form_Click () Dim FNMA, I, Msg ' Declare variables. File1.Pattern = "TestFile.*" ' Set file pattern. For I = 1 To 8 ' Do eight times. FNMA = "TESTFILE." & I Open FNMA For Output As FreeFile ' Create empty file. File1.Refresh ' Refresh file list box. Close ' Close file. Next I Msg = "Choose OK to remove the created test files." MsgBox Msg ' Display message. Kill "TESTFILE.*" ' Remove test files. File1.Refresh ' Update file list box. End Sub 13.13. Scale Method Cú pháp : [Object.]Scale [(X1, Y1) - (X2, Y2)] - Object : tên của đối tượng cần định lại hệ thống tọa độ. - (X1, Y1) : tọa độ góc trên bên trái. - (X2, Y2) : tọa độ góc phải bên dưới. Tác dụng : qui định lại hệ thống tọa độ theo yêu cầu người sử dụng. Nếu không có (X1, Y1) và (X2, Y2) thì trả hệ thống tọa độ về giá trị ngầm định. Ví dụ : 105
  109. Lập trình trực quan Private Sub Tile_Click() Dim I, OldFontSize ' Declare variables. Width = 8640: Height = 5760 ' Set form size in twips. Move 100, 100 ' Move form origin. AutoRedraw = -1 ' Turn on AutoRedraw. OldFontSize = FontSize ' Save old font size. BackColor = QBColor(7) ' Set background to gray. Scale (0, 110)-(130, 0) ' Set custom coordinate system. For I = 100 To 10 Step -10 Line (0, I)-(2, I) ' Draw scale marks every 10 units. CurrentY = CurrentY + 1.5 ' Move cursor position. Print I ' Print scale mark value on left. Line (ScaleWidth - 2, I)-(ScaleWidth, I) CurrentY = CurrentY + 1.5 ' Move cursor position. CurrentX = ScaleWidth - 9 Print I ' Print scale mark value on right. Next I ' Draw bar chart. Line (10, 0)-(20, 45), RGB(0, 0, 255), BF ' First blue bar. Line (20, 0)-(30, 55), RGB(255, 0, 0), BF ' First red bar. Line (40, 0)-(50, 40), RGB(0, 0, 255), BF Line (50, 0)-(60, 25), RGB(255, 0, 0), BF Line (70, 0)-(80, 35), RGB(0, 0, 255), BF Line (80, 0)-(90, 60), RGB(255, 0, 0), BF Line (100, 0)-(110, 75), RGB(0, 0, 255), BF Line (110, 0)-(120, 90), RGB(255, 0, 0), BF CurrentX = 18: CurrentY = 100 ' Move cursor position. FontSize = 14 ' Enlarge font for title. Print "Widget Quarterly Sales" ' Print title. FontSize = OldFontSize ' Restore font size. CurrentX = 27: CurrentY = 93 ' Move cursor position. Print "Planned Vs. Actual" ' Print subtitle. Line (29, 86)-(34, 88), RGB(0, 0, 255), BF ' Print legend. Line (43, 86)-(49, 88), RGB(255, 0, 0), BF Scale End Sub Chú ý : ta có thể thay đổi đơn vị đo trong Visual Basic bằng cách thay đổi trị số của ScaleMode trong bộ thuộc tính Properties. 106