Giáo trình Visual Foxpro
Khởi ñộng Visual Foxpro.
Sau khi ñã cài ñặt Visual FoxPro, ta có thể khởi ñộng nó bằng cách thực hiện file
FoxProw.exe hoặc file vfp.exe ñối với Visual Foxpro theo các cách sau:
+ Kích chuột vào biểu tượng của FoxPro hoặc Visual Foxpro trên Desktop
+ Chọn menu Start/Program, chọn Microsoft Visual Foxpro và kích chuột vào ñó.
Màn hình Visual Foxpro sau khi khởi ñộng:
Visual FoxPro có 2 chế ñộ làm việc; chế ñộ tương tác (interactive) và chế ñộ chương trình
(program).
Chế ñộ tương tác: Là chế ñộ trả lời từng câu lệnh một của người sử dụng, trong chế ñộ này có 2
hình thức ñưa câu lệnh:
* ðưa câu lệnh qua menu hệ thống (system menu).
* ðưa câu lệnh từ cửa sổ lệnh (command window).
Chế ñộ chương trình: Các câu lệnh trong cửa sổ lệnh có thể tập trung thành một file và lưu trên
ñĩa (gọi là file chương trình nguồn). Khi muốn thực hiện các lệnh trong chương trình nầy, tại
cửa sổ lệnh ñưa vào các câu lệnh: DO < tên="" chương="" trình="">
ðể thoát khỏi Visual FoxPro, tại cửa sổ lệnh sử dụng lệnh QUIT
Tóm tắt nội dung tài liệu: Giáo trình Visual Foxpro
Mục lục CHƯƠNG 1: GIỚI THIỆU VỀ HỆ QUẢN TRỊ CSDL VISUAL FOXPRO CHƯƠNG 2: THAO TÁC VỚI BẢNG DỮ LIỆU CHƯƠNG 3: SẮP XẾP-TÌM KIẾM-THỐNG KÊ CHƯƠNG 4: LẬP TRÌNH TRÊN VISUAL FOXRO CHƯƠNG 5: FORMS CHƯƠNG 6: REPORTS CHƯƠNG 7: TẠO MENU VÀ QUẢN LÝ ðỀ ÁN www.Updatesofts.com 2006 Chương 1: GIỚI THIỆU VỀ HỆ QUẢN TRỊ CSDL VISUAL FOXPRO 1.1 Tổng quan về FoxPro và Visual FoxPro 1.1.1 Giới thiệu Foxpro là hệ quản trị cơ sở dữ liệu dùng ñể giải quyết các bài toán trong các lĩnh vực quản lý. FoxPro ñược thừa kế và phát triển trên phần mềm DBASE III PLUS và DBASE IV, những sản phẩm nổi tiếng của hãng ASTON-TATE. Khi các công cụ lập trình và các ứng dụng trên môi trường Windows ngày nhiều thì Microsoft cho ra ñời các phiên bản FoxPro 2.6, chạy ñược trên hai môi trường DOS và Windows. Visual Foxpro là sản phẩm của hãng Microsoft, nó ñược kế thừa từ Foxpro for Windows, là một trong những công cụ tiện lợi ñể giải quyết các bài toán trong lĩnh vực quản lý cho những người chuyên nghiệp và không chuyên nghiệp. Từ khi phát triển ñến nay, Hảng Microsoft ñã cho ra ñời nhiều phiên bản Visual Foxpro 3.0, 4.0, 5.0, 6.0. 1.1.2 Khởi ñộng Visual Foxpro. Sau khi ñã cài ñặt Visual FoxPro, ta có thể khởi ñộng nó bằng cách thực hiện file FoxProw.exe hoặc file vfp.exe ñối với Visual Foxpro theo các cách sau: + Kích chuột vào biểu tượng của FoxPro hoặc Visual Foxpro trên Desktop + Chọn menu Start/Program, chọn Microsoft Visual Foxpro và kích chuột vào ñó. Màn hình Visual Foxpro sau khi khởi ñộng: Màn hình Visual FoxPro sau khi khởi ñộng: 1.1.3 Các chế ñộ làm việc Thanh Menu Cửa sổ lệnh Thanh tiêu ñề Thanh công Visual FoxPro có 2 chế ñộ làm việc; chế ñộ tương tác (interactive) và chế ñộ chương trình (program). Chế ñộ tương tác: Là chế ñộ trả lời từng câu lệnh một của người sử dụng, trong chế ñộ này có 2 hình thức ñưa câu lệnh: * ðưa câu lệnh qua menu hệ thống (system menu). * ðưa câu lệnh từ cửa sổ lệnh (command window). Chế ñộ chương trình: Các câu lệnh trong cửa sổ lệnh có thể tập trung thành một file và lưu trên ñĩa (gọi là file chương trình nguồn). Khi muốn thực hiện các lệnh trong chương trình nầy, tại cửa sổ lệnh ñưa vào các câu lệnh: DO ðể thoát khỏi Visual FoxPro, tại cửa sổ lệnh sử dụng lệnh QUIT 1.2 Các khái niệm cơ bản 1.2.1 Kiểu dữ liệu ðối tượng xử lý của V. FOXPRO là dữ liệu, ñể quản lý và khai thác tốt các dữ liệu này, tuỳ theo tính chất, V.FOXPRO phải chia dữ liệu thành nhiều kiểu dữ liệu khác nhau: kiểu số (numberic), kiểu chuỗi (character), kiểu ngày tháng (date), kiểu lý luận (logical), kiểu bộ nhớ (memo), kiểu hình ảnh (picture). a. Kiểu số - Numeric (N): dùng ñể biểu diễn các số liệu mang giá trị số học và có nhu cầu tính toán như trong kế toán, quản lý, .... Mỗi dữ liệu kiểu số chiếm tối ña 20 chữ số gồm cả phần nguyên, phần thập phân và dấu chấm thập phân. b. Kiểu số - Float (F): Dùng ñể biểu diễn số là các số có dấu chấm ñộng như: 2.03e5 (2.03 x 105), thường ñược sử dụng trong các chương trình thuộc lĩnh vực khoa học kỹ thuật, ... c. Kiểu chuỗi - Charater (C): Chứa các số liệu là tổ hợp một số bất kỳ các ký tự ASCII như tên, họ hoặc là số nhưng không có nhu cầu tính toán như số chứng minh, ñịa chỉ, số phòng, ... Mỗi dữ liệu kiểu chuỗi có ñộ dài tối ña 255 ký tự (mỗi ký tự chiếm 1 byte trong bộ nhớ). d. Kiểu ngày tháng - Data (D): Dùng cho những số liệu dạng ngày tháng như ngày sinh, ngày ñến,.... ðó là những số nguyên dạng "yyyymmdd" khi hiển thị ra bên ngoài sẽ ñược chuyển thành dạng ngày tháng bình thường như mm-dd-yy, dd-mm-yyyy,... tuỳ theo yêu cầu của người lập trình. ðộ dài cố ñịnh của dữ liệu kiểu ngày là 8 ký tự. e. Kiểu logic - Logical (L): Dùng cho những dữ liệu chỉ có một trong hai trường hợp hoặc ñúng (T) hoặc sai (F) như giới tính, ñối tượng ưu tiên, ... ðộ dài cố ñịnh của dữ liệu kiểu lý luận là 1 ký tự. f. Kiểu ghi nhớ - Memo (M): Dữ liệu kiểu ghi nhớ là một ñoạn văn bản có ñộ dài lớn hơn 255 ký tự, như khen thưởng, lý kịch, quá trình công tác,... ðộ dài khai báo là 10 nhưng nội dung thực sự của kiểu ghi nhớ là tuỳ ý, chúng ñược lưu trữ trong một tập tin khác có cùng tên nhưng phần mở rộng là .FPT (FoxPro Text). g. Kiểu tổng quát - General (G): Dùng ñể chứa dữ liệu như bảng tính, âm thanh,... h. Kiểu hình ảnh - Ficture (P): Dữ liệu lưu dưới dạng hình ảnh .BMP, thường ñược dùng trong các chương trình "quản lý như sự", "nhận dạng",... 1.2.2 Các phép toán a. Phép toán số học: ðược thực hiện trên các dữ liệu kiểu số, gồm các phép toán: Phép toán Ý nghĩa Ví dụ -, + dấu âm và dương +5, -7 ** hay ^ luỹ thừa 5**2,5^2 , / nhân, chia 25, 5/7 % phần dư (modulo) 25%5 +, - cộng, trừ 10-2, 45+4 ðộ ưu tiên các phép toán theo thứ tự ñã nêu ở trên, có thể thay ñổi thứ tự tính toán bằng cách ñặt chúng trong 2 dấu ngoặc ñơn ( ) như các quy tắc tính toán số học thông thường. b. Phép toán chuỗi: Dùng ñể xử lý các dữ liệu kiểu chuỗi. • Phép toán ghép nối (+): dùng ñể ghép 2 chuỗi cạnh nhau, kết quả của phép toán là một dữ liệu kiểu chuỗi. Ví dụ: Trung tâm' + 'Tin học' -----> 'Trung tâm Tin học' • Phép toán ghép nối (-): dùng ñể ghép 2 chuỗi cạnh nhau và di chuyển các dấu cách ở chuỗi thứ nhất (nếu có) ra cuối chuỗi tạo thành. Ví dụ: 'Trung tâm ' - ' Tin học' -----> 'Trung tâm Tin học ' • Phép toán $: kiểm tra chuỗi bên trái có nằm trong chuỗi bên phải không. Kết quả của phép toán có kiểu logic. Ví dụ: 'ab' $ "ABab" cho giá trị .T. nhưng 'ab $ "AaBb" cho giá trị .F. c. Phép toán ngày: Hai dữ liệu kiểu ngày có thể trừ (-) cho nhau ñể cho khoảng cách ñại số giữa 2 ngày. Ví dụ: {01/08/2003} - {05/09/2003} -------> - 35 {01/08/2003} - {05/07/2003} -------> 25 Một dữ liệu kiểu ngày có thể cộng (+) hay trừ (-) một số nguyên ñể cho kết quả là một dữ liệu kiểu ngày. Ví dụ: {01/08/2003}+ 10 -------> {11/08/2003} {01/08/2003}- 20 -------> {12/07/2003} Chú ý: • Hai dữ liệu kiểu ngày không thể cộng (+) cho nhau. • Một số không thể trừ (-) với một dữ liệu kiểu ngày. Việc diễn tả thứ tự ngày (D), tháng (M), năm (Y) trong một dữ liệu kiểu ngày còn phụ thuộc vào thời ñiểm hiện tại ñang theo hệ thống ngày tháng nào. (1) Lệnh SET DATE FRENCH |AMERICAN| JAPAN: Cho phép thiết lập dữ liệu dạng ngày theo kiểu Pháp|Mỹ|Nhật. (2) SET CENTURY ON|OFF: Quy ước năm có một dữ liệu dạng ngày ñược biểu diễn theo dạng hai số (mặc ñịnh) hay dạng bốn số. Nếu SET CENTURY ON thì năm ñược biểu diễn theo dạng bốn con số, nếu SET CENTURY OFF (dạng mặc ñịnh) thì năm ñược biểu diễn theo dạng hai con số. (3) Lệnh SET MARK TO : ñể ấn ñịnh ký tự phân cách ngày tháng, năm là <bthức C>. Dùng lệnh SET MARK TO ñể trở về ký tự phân cách ngày tháng mặc ñịnh. d. Phép toán quan hệ: dùng ñể so sánh hai giá trị của hai biểu thức cùng kiểu Phép toán Ý nghĩa Phép toán Ý nghĩa , ! khác > lớn hơn <= nhỏ hơn hay bằng = bằng => lớn hơn hay bằng = = bằng chính xác Hai dữ liệu kiểu số ñược so sánh dựa theo biểu diễn của chúng trên trục số. Hai dữ liệu kiểu ngày ñược so sánh dựa theo biểu diễn của chúng theo chiều của thời gian. Trong kiểu logic, Visual FoxPro quy ước: .T.<.F. Hai dữ liệu kiểu chuỗi có ñộ dài bằng nhau ñược so sánh dựa theo nguyên tắc sau: ñầu tiên so sánh 2 mã ASCII của 2 ký tự ñầu của hai chuỗi, nếu bằng nhau thì so sánh tiếp. Ví dụ: 'ABCD' .T. 'a' .F. Trường hợp hai chuỗi có ñộ dài khác nhau, thì việc so sánh dựa vào việc thiết lập môi trường SET EXACT ON/OFF, nghĩa là: Nếu SET EXACT ON thì 'AB' = 'AB ' -----------> .F. Nếu SET EXACT OFF thì 'ABCD' = 'AB' -----------> .T. e. Phép toán logic: Visual FoxPro có 3 phép toán logic: NOT; AND; OR NOT hay ! : phủ ñịnh của toán hạng theo sau. AND : cho giá trị .T. nếu cả hai toán hạng ñều .T. OR : cho giá trị .F. nếu cả hai toán hạng ñều .F. 1.2.3 Toán hạng Toán hạng là các dữ liệu tham gia vào các phép toán. Ví dụ: del=b^2 - 4*a*c thì b,2,4,a,c là các toán hạng. 1.2.4 Hằng Là ñại lượng có giá trị không ñổi trong thời gian chương trình thực hiện. Trừ kiểu dữ liệu memo thì mỗi kiểu dữ liệu ñều có hằng của nó. Hằng kiểu số: như -2.5, 100, 4.14 Hằng kiểu chuỗi: hằng loại nầy phải ñể trong hai dấu "..." hoặc '...' hoặc [...], có ñộ dài tối ña không quá 253 kí tự. Ví dụ: "abc"; tổng hợp', '123',....... Hằng kiểu ngày: phải ñược ñặt trong cặp dấu {...} Ví dụ: {01/01/96}; {}: ngày rỗng. Hằng logic: chỉ có 2 giá trị .T. và .F. 1.2.5 Biến Biến là ñại lượng dùng ñể lưu trữ dữ liệu trong quá trình tính toán. Biến có hai ñặc trưng chính: tên biến và giá trị của biến. Tên biến ñược ñặt theo nguyên tắc: dài không quá 10 kí tự, bắt ñầu phải là chữ cái hoặc dấu _ phần còn lại là tổ hợp của bất kỳ các chữ cái, chữ số hoặc dấu _. Tên biến không nên ñặt trùng tên các từ khoá của Visual FoxPro, tên biến có thể viết bằng chữ in hoa hay chữ thường. Visual FoxPro hiểu kiểu của biến là kiểu của giá trị mà nó ñang mang. Số lượng tối ña của biến ñược phép sử dụng là 2048 biến. Visual FoxPro chia biến làm 3 loại: a. Biến bộ nhớ: Gọi chung là biến, do người sử dụng tạo ra trong bộ nhớ, khi không sử dụng nữa có thể giải phóng ñể tiết kiệm bộ nhớ. Ví dụ: hsl = 3.12 ngaysinh = {01/01/88} b. Biến hệ thống: ðược tạo ra ngay từ khi khởi ñộng Visual FoxPro. Có tên bắt ñầu bằng dấu gạch nối ( _ ) thường ñược sử dụng trong vấn ñề in ấn, người sử dụng không thể giải phóng biến loại nầy. c. Biến trường: Tên các trường trong tập tin CSDL , nó chỉ có ý nghĩa khi tập tin chứa nó ñược mở ra ñể sử dụng. Nếu có một biến ñặt trùng với một biến trường thì biến trường ñược ưu tiên thực hiện trước. Nếu tồn hại hai biến trường và biến bộ nhớ trùng tên nhau, ñể truy nhập ñến chúng mà không sợ nhầm lẫn, bạn sử dụng quy cách sau cho biến bộ nhớ: M. hay M -> 1.2.6 Hàm Hàm là những ñoạn chương trình ñược viết sẳn nhằm thực hiện một công việc nào ñó. Các hàm nầy thường cho ra một giá trị, nhưng cũng có hàm chỉ thi hành một việc nào ñó mà không cho ra một trị nào cả. Về hình thức hàm ñược ñặc trưng bởi tên hàm và theo sau là cặp dấu ( ) dùng ñể bao các ñối số, các ñối số nầy ñặt cách nhau bởi dấu phẩy. Một hàm có thể có nhiều ñối số hoặc không có ñối số nào cả nhưng phải có ( ) theo sau. Ví dụ: Date ( ): cho biết ngày tháng năm hệ thống. Sqrt(x): căn bậc 2 của x. Có 2 loại hàm: Hàm có sẵn của Visual FoxPro và hàm tự tạo do người sử dụng tạo ra. Chúng ta sẽ nghiên cứu vấn ñề nầy kỹ hơn ở chương sau. 1.2.7 Biểu thức Biểu thức là tập hợp của một hay nhiều thành phần như hằng, hàm, biến, phép toán, dấu ngoặc tròn. Sau khi tính toán biểu thức sẽ cho một trị duy nhất. Trị của biểu thức thuộc về một trong 4 kiểu: N, C, D, L. Một biểu thức có thể rất phức tạp, trị của biểu thức ñược tính theo nguyên tắc sau: * Trong ( ) tính trước, ngoài ( ) tính sau, * Phép toán ưu tiên cao tính trước. * Bên trái tính trước, bên phải tính sau. 1.2.8 Từ khoá Từ khoá là những từ ñược Visual FoxPro sử dụng vào một mục ñích riêng, người sử dụng không ñược ñặt tên trùng với các từ khoá nầy. Thông thường từ khoá là những ñộng từ ñộng từ của lệnh thực hiện. Nếu từ khoá có nhiều hơn 4 ký tự thì khi sử dụng chỉ cần ghi 4 ký tự ñầu. Ví dụ: Câu lệnh MODIFY COMMAND LUONG.PRG có 2 từ khoá là MODIFY và COMMAND có thể viết gọn là: MODI COMM LUONG.PRG 1.2.9 Lệnh và chương trình Lệnh là những yêu cầu ñể thực hiện một nhiệm vụ nào ñó. Lệnh trong Visual FoxPro thường là một ñộng từ, cũng có trường hợp là một kí hiệu như: !. ?, ... Tập hợp các lệnh nhằm ñạt ñược một mục tiêu ñề ra gọi là chương trình. Trong Visual FoxPro có 3 cách ñể ban hành lệnh: a. Dùng cửa sổ lệnh: Lệnh ñược ñưa vào cửa sổ lệnh, sau khi ấn Enter lệnh ñược thi hành ngay. Thi hành xong một lệnh thì lệnh cũ ñược lưu lại trên cửa sổ lệnh có thể sử dụng cho lần sau. Cách nầy thường dùng trong những tính toán ñơn giản ñể kiểm tra kết quả của lệnh. b. Dùng menu: Lệnh ñược ban hành bằng cách kích hoạt menu tương ứng, sau khi thi hành xong câu lệnh cũng ñược lưu lại trên cửa sổ lệnh. Cách nầy chỉ hạn chế trong một số lệnh thông thường trên tập tin CSDL. c. Dùng chương trình: Soạn thảo trước một chương trình gồm nhiều lệnh thích hợp. Chương trình ñược lưu trên ñĩa dưới tên một tập tin có phần mở rộng PRG. ðể thực hiện chương trình này, tại cửa sổ lệnh ñưa câu lệnh DO . Sau khi ấn Enter chương trình ñược nạp vào bộ nhớ và từng lệnh ñược thực hiện theo thứ tự. Bài thực hành chương 1 1. Giả sử có tập tin HSNV.DBF (có cấu trúc như ñã mô tả ở bài 1, thực hành hai) trong ñó có ít nhất 15 mẫu tin. a. Dùng lệnh SORT ñể sắp xếp lại tập tin HSNV.DBF sang một tập tin mới HSNVSX.DBF theo chỉ tiêu: Các mẫu tin ñược sắp xếp theo từng ñơn vị (giảm dần), trong mỗi ñơn vị thứ tự tên, họ ñược sắp xếp tăng dần. b. Mở tập tin HSNVSX.DBF • Sử dụng lệnh LIST liệt kê các trường HOLOT, TEN, NGSINH, M_LUONG, MADV. • Sử dụng lệnh USE ñể ñóng tập tin lại. c. Lập 3 tập tin chỉ mục: FMASO.IDX theo trường MASONV, FDONVI.IDX theo trường MADV, FLUONG.IDX theo trường M_LUONG giảm dần. - Bằng cách thay thế tập tin chỉ mục chủ, hãy liệt kê các mẫu tin theo MASONV tăng dần, theo MADV tăng dần, theo M_LUONG giảm dần. 2. Trong tập tin HSNV.DBF a. Dùng lệnh LOCATE: - Tìm người có họ tên là ‘LE VAN NAM’ (giả sử có họ tên này trong tập tin HSNV.DBF). Dùng lệnh DISPLAY cho hiện nội dung của mẫu tin này, rồi dùng lệnh EDIT ñể sửa lại. - Tìm những người ở phòng Hành chính (MADV=’HC’), cho hiện ñầy ñủ thông tin của những người này. - Tìm những người có mức lương > 310. b. Dùng lệnh SEEK ñể tìm kiếm người có MASONV=’TCH01’ (giả sử mã này có trong tập tin HSNV.DBF). Cho hiện nội dung của mẫu tin này. c. Cho biết ñịa chỉ của người có Họ tên là ‘HO VAN HAO’, sinh ngày 10/11/58 (bằng hai cách: LOCATE và SEEK). -------------------------------------------------------------------------- 1. CHƯƠNG 2: THAO TÁC VỚI BẢNG DỮ LIỆU 1.1. 2.1. KHÁI NIỆM Bảng dữ liệu chứa dữ liệu theo dạng dòng và cột, mỗi dòng ñược gọi là một mẫu tin (record), mỗi cột ñược gọi là một trường (field) của bảng. Mỗi bảng dữ liệu ñược lưu trử trên ñĩa với tên file có phần mở rộng mặc ñịnh là DBF, mỗi bảng dữ liệu có hai phần: cấu trúc và nội dung của bảng. Ví dụ: bảng nhân viên (nhanvien.dbf) có cấu trúc sau: Fieldname Type Width Decimal Hoten Character 30 Gioitinh Logic 1 Ngaysinh Date 8 NamLV Numberic 4 Lylich Memo 10 Nội dung của NHANVIEN.DBF Hoten Gioitinh Ngaysinh NamLV Lylich Nguyen van A .T. 10/15/75 1999 Memo Le thi Nhan .F. 06/15/70 1995 Memo ................ ........ .......... ......... ......... 1.2. 2.2 FILE VÀ KIỂU FILE TRONG VISUAL FOXPRO 2.2.1 Các kiểu file chính của Foxpro FoxPro có các kiểu file sau: *.dbf: File dữ liệu *.idx: File chỉ mục *.prg: File chương trình *.dbc: File cơ sở dữ liệu *.dll: File thư viện liến kết ñộng *.pjx: File dự án *.scx: File Form *.vcx: File thư viện 2.2.2. Cách tổ chức một file dữ liệu a. File dữ liệu: Là tập hợp dữ liệu phản ánh về một tập hợp các ñối tượng quản lý thông qua các thuộc tính của nó. b. Bản ghi (Record): Là một bộ giá trị các thuộc tính phản ánh về một ñối tượng quản lý. c. Tr ... i phong cách lập trình cũ, lập trình hướng thủ tục.Ở ñây thay vì nghĩ ñến các chức năng của chương trình ta chỉ cần nghĩ ñến các ñối tượng ñang tạo: là các thành phần ñộc lập của một ứng dụng cới chức năng riêng của nó. Mỗi một ñối tuợng ñều có một bộ thuộc tính mô tả ñối tượng; các phương thức là những ñoạn trình chứa trong ñiều khiển, cho ñiều khiển biết cách thức ñể thực hiện một ñoạn công việc nào ñó; và tập hợp những sự kiện ñó là những phản ứng của ñối tượng. Trong Visual Foxpro, các form và control là các ñối tượng ñược dùng ñể xây dựng các ứng dụng 5.1.1. Thuộc tính của ñối tượng (Properties) ðể chỉ ñến một thuộc tính của ñối tượng nào ta dùng cú pháp sau: . Ví dụ: Myform.caption= “Chương trình ứng dụng” Các thuộc tính thông dụng: - Left: Vị trí cạnh trái của ñối tượng so với vật chứa nó. - Top: Vị trí trên của ñối tượng so với vật chứa nó. - Height: Chiều cao của ñối tượng. - Width: Chiều rộng của ñối tượng. - Name: Tên ñể chỉ ñối tượng. - Enable: Giá trị logic: True: có quyền làm việc. False: Không có quyền làm việc. - Visible: Giá trị logic: True: Thấy ñược ñối tượng; False: Không thấy ñược ñối tượng. 5.1.2. Phương thức của ñối tượng (Methods) ðể gọi ñến phương thức của một ñối tượng, ta dùng cú pháp: . Ví dụ: Myform.show Một số phương thức thường dùng: - Refresh: Làm tươi lại ñối tượng. - Show: Hiện ñối tượng. - Hide: ẩn ñối tượng. - Release: Giải phóng ñối tượng. - SetFocus: Thiết lập “tầm ngắm” cho ñối tượng. 5.1.3. Sự kiện của ñối tượng ðể chỉ ñến sự kiện của ñối tượng, ta dùng cú pháp sau: . Một số sự kiện thường dùng: - Click: ðược gọi khi kích chuột vào ñối tượng. - DbClick: ðược gọi khi kích ñúp chuột vào ñối tượng. - MouseMove: ðược gọi khi di chuyển chuột trên bề mặt của ñối tượng. - KeyPress: ðược gọi khi nhấn một phím kích chuột vào ñối tượng. - Got focus: ðược gọi khi ñưa ñối tượng vào tầm ngắm. - Lostfocus: ðược gọi khi ñưa ñối tượng ra khỏi tầm ngắm - Change: ðược gọi khi có sự thay ñổi nội dung dữ liệu kiểu chuỗi của ñối tượng. 11.2. 5.2. FORM 5.2.1. Giới thiệu Form ñược dùng ñể làm giao diện nhập, hiển thị thông tin, nó cung cấp một tập hợp các ñối tượng ñể ñáp lại những thao tác của người dùng làm cho ứng dụng ra dáng chuyên nghiệp. Ví dụ: Giao diện của một Form nhập dữ liệu 5.2.2. Tạo form thông qua Wizard Từ menu Tools, chọn wizard, chọn form, xuất hiện giao diện wizard selection, rồi thông qua hướng dẫn. 5.2.3. Tạo form thông qua thiết kế ðể tạo form thông qua thiết kế, từ cửa sổ lệnh ta thực hiện lệnh sau: CREATE FORM Khi ñó ta ñược màn hình thiết kế form như sau: a. Quản lý form Lưu Form: Từ menu file, chọn save ñể lưu vào , mặc ñịnh phần mở rộng là scx. Chạy form: Từ cửa sổ lệnh, thực hiện lệnh sau: DO FORM ðóng form (giải phóng khỏi bộ nhớ) RELEASE b. Tuy cập ñến các ñối tượng trên form + Muốn chỉ ñến một ñối tượng nào trên form, ta dùng: . : nếu không cùng với form ñang thao tác. .: nếu ñối tượng nằm trên form ñang thao tác. + Muốn thay ñổi giá trị các thuộc tính trên form, ta dùng: .= : nếu muốn thay ñổi thuộc tính của form không phải là form hiện hành. .=: nếu muốn thay ñổi các thuộc tính của form hiện hành. c. Các thuộc tính, phương thức, sự kiện thường dùng trên form. Thuộc tính: - BackColor: Màu nền - BorderStyle: Dạng ñường viền - Caption: Tiêu ñề của form - FillColor: Màu ñể tô ñối tượng - Fontname: Font chữ cho các ñối tượng chứa văn bản - Fontsize: Kính thước fontname - Moveable: Cho phép di chuyển hay không ................. Tình huống - MoveMouse: ðáp ứng khi di chuyển chuột trên bề mặt form - Destroy: ðáp ứng khi giải phóng form - Load: ðáp ứng khi nạp form vào bộ nhớ 5.3. Thanh công cụ Control Toolbar Muốn ñưa ñối tượng trên thanh Control vào form: 4 bước - Kích chuột vào ñối tượng cần ñưa - Vẽ nó trên form ñể xác ñịnh vị trí - Thiết lập các thuộc tính thích hợp - Viết mã lệnh cho các tình huống tương ứng Quy ước ñặt tên cho các ñối tượng Loại ñối tượng Tên Form Bắt ñầu bởi Frm Command Bắt ñầu bởi cmd Edit box Bắt ñầu bởi Edb Grid Bắt ñầu bởi Grd Image Bắt ñầu bởi Img Label Bắt ñầu bởi Lbl Textbox Bắt ñầu bởi Txt Timer Bắt ñầu bởi Tmr 5.3.2. Một số ñối tượng trên Controls a. Label : Dùng ñể thể hiện các chuỗi trên form. Các thuộc tính thường dùng: - Caption: Chuỗi thể hiện - Autosize: Giá trị logic, cho phép kích thước của Label có tự ñộng chỉnh sửa theo ñộ dài của caption hay không. b. Command Bottom: Dùng ñể thể hiện các nút lệnh trên form. Các thuộc tính thường dùng: - Caption: tên xuất hiện trên nút lệnh - Picture: Hình xuất hiện trên nút lệnh - Enable: giá trị Logic, cho phép chọn nút lệnh hay không Các Sự kiện thường dùng: - Click: Khi kích chuột vào nút lệnh thì sự kiện này ñược gọi. c. TextBox: Dùng ñể xem, chỉnh sửa dữ liệu từ các trường trong bảng dữ liệu không phải kiểu memo. Các thuộc tính thường dùng. - ControlSource: Tên của trường hay biến mà giá trị của nó ñược hiện trong textbox - Value: Giá trị hiện thời của textbox. Sự kiện thường dùng: - Change: Khi có sự thay ñổi của thuộc tính value - KeyPress: Khi có phím bất kỳ ñược ấn. d. Editbox: Tương tự như textbox, ñược dùng ñể chỉnh sửa dữ liệu từ các trường memo. Các thuộc tính thường dùng. - Control Source: Tên của trường mà giá trị của nó ñược thể hiện trong editbox. - ScrollBars: Có hiện thanh cuộn trong khung editbox hay không. - ReadOnly: Cho phép có ñược chỉnh sửa nội dung hay không Sự kiện thường dùng: - Change: Khi có sự thay ñổi của thuộc tính value. - Keypress: Khi có phím bất kỳ ñược ấn. e. Images: Dùng ñể ñưa các hình ảnh trên form. Các thuộc tính thường dùng. - Picture: Xác ñịnh file hình ảnh - Stretch: Xác ñịnh cách thức thể hiện hình ảnh (phóng to, thu nhỏ, nguyên mẫu). f. Timer: Dùng ñể thiết lập các công việc thực hiện ñều ñặn sau một khoảng thời gian. Các thuộc tính thường dùng. - Enabled: Xác ñịnh xem Timer có hiệu lực hay không - Interval: Quy ñịnh khoảng thời gian xác ñịnh cho tình huống timer. Sự kiện thường dùng: - Timer: ðược kích hoạt ñều ñặn sau một khoảng thời gian xác ñịnh ở thuộc tính Interval. g. Grid: Dùng ñể thể hiện dữ liệu theo dạng bảng. Các thuộc tính thường dùng. - Row Source: Xác ñịnh bảng dữ liệu cần thể hiện. - ColumnCount: Xác ñịnh số cột của Grid. Chú ý: Nếu Row Source không ñược chỉ ra thì lấy bảng dữ liệu hiện hành. Nếu Column count không chỉ ra thì mặc ñịnh là tất cả các trường trong bảng dữ liệu (Column count=-1). Control Source: ðược xác ñịnh cho từng cột, dùng ñể khai báo nguốn dữ liệu cho cột ñó. - Allow Addnew: Cho phép thêm các bản ghi mới hay không. Chú ý: Muốn thay ñổi các thuộc tính trên Grid thì chuyển Grid sang dạng edit bằng cách nhấn phím phải chuột lên Rrid, chọn Properties. Grid ñang ở chế ñộ Edit có một ñường viền bao quanh. 12. 5.4. Ví dụ Giả sử có bảng dữ liệu với cấu trúc: MANV C 5 HOTEN C 30 Hãy thiết kế form ñẻ xem bảng dữ liệu trên. Ta thiết kế form như sau 13. Các thuộc tính chính : 14. + TxtMANV các thuộc tính ControlSource là MANV 15. + TxtHOTEN các thuộc tính ControlSource là HOTEN 16. Mã lệnh của các ñối tượng trên Form là: + FrmXem.load use hoso + CmdDau.Click go top TxtMAN V TxtHOTE N CmdDa u CmdTruo c CmdSau CmdCuoi CmdThoa t FrmXem thisform.refresh + CmdCuoi.Click go bottom thisform.refresh + CmdTruoc.Click if not bof() skip -1 endif thisform.refresh + CmdSau.Click if not eof() skip endif thisform.refresh + CmdThoat.Click use thisform.release 17. CHƯƠNG 6 REPORTS 17.1. 6.1. KHÁI NIM Reports là công cụ ñể trình bày và tóm tắt dữ liệu trong một văn bản khi in. Report có hai thành phần cơ bản cấu thành: dữ liệu nguồn, thông thường là các bảng dữ liệu và hình thức trình bày là dạng thức của report sẽ ñịnh dạng cách kết xuất dữ liệu. Màn hình thiết kế Report 17.2. 6.2. CÁC BC ð( T)O REPORT Ta có thể thiết kế report ñể thể hiện dữ liệu ở nhiều dạng thức khác nhau trên giấy khi in. Quá trình thiết kế gồm 4 bước chính như sau: 1. Xác ñịnh loại Report cần tạo: Tức là quyết ñịnh chọn dạng thức mà report hiển thị kết quả. 2. Tạo Report layout: Có thể sử dụng report wizard hay report designer. Report layout ñược lưu trên ñĩa với phần mở rộng của file là FRX: Lưu trử chi tiết của report. 3. Sửa ñổi layout của report. 4. Xem và in report. 17.3. 6.3. T)O REPORT B+NG WIZARD. Từ menu Tools, chọn Wizard, chọn Report sau ñó làm theo các bước hướng dẫn. Bước 1: Chọn bảng dữ liệu và các trường cần thể hiện Bước 2: Tạo nhóm dữ liệu kết xuất Bước 3: Chọn kiểu Report thể hiện Bước 4: Chọn cách trình bày trên giấy in Bước 5: Chọn trường Sắp xếp Bước 6: ðặt tựa ñề, kết thúc 17.4. 6.4. TẠO REPORT BẰNG REPORT DESIGNER 6.4.1. Quản lý Report Tạo mới Report: CREATE REPORT Ví dụ: create report THU Lúc này màn hình xuất hiện hộp thoại report Mở một report sẵn có: MODIFY Xem trước khi in: REPORT FORM PREVIEW Xem trước khi in có ñiều kiện: REPORT FORM PREVIEW In report: REPORT FORM TO PRINTER 6.4.2. Các thành phần trên Report Title: Dùng ñể in trên mỗi report: Từ menu report, chọn title summary Page Header: ðể in trên mỗi header của mỗi trang in. Column header: ðể in tên header của mỗi cột. ðể chọn, từ menu file chọn page setup, chọn giá trị cho column number lớn hơn 1. Group header: Xuất hiện mỗi khi bắt ñầu nhóm mới. ðể chọn, từ menu report chọn data grouping. Detail: phần chi tiết trên mỗi record (ứng với từng record trên bảng dữ liệu). Group footer: In phần Footer của mỗi nhóm. ðể chọn, từ menu report chọn data grouping. abl Column footer: In phần Footer của mỗi cột. ðể chọn, từ menu file, chọn page setup, chọn giá trị cho column nimber lớn hơn 1. Page Footer: In phần Footer của mỗi trang. Sumary: Phần tốm tắt của mỗi report. 6.4.3. Các control trên Report Thanh công cụ Report Control Chức năng của các control: Field trong bàng dữ liệu, biến và các biểuthức toán Field Text thuần tuý Label ðường kẻ Line Hộp và ñồng khung Rectangle Hình tròn, elip Rounded Rectangle Hình ảnh hoặc field General Picture 6.4.4. ðưa các control vào report Thực hiện các bước sau: + Chọn control thích hợp + Kéo rê chuột trên report ñể xác ñịnh vị trí của nó trên report + Hiệu chỉnh các control a. ðưa field vào report: + Kích chuột vào + Trong hộp report Expression, chọn nút lệnh sau hộp Expression. + Trong hộp field, hcọn tên trường hay biến thích hợp. + Chọn OK. A b. ðưa label vào report: + Chọn + Gỏ nội dung của label c. ðưa Picture bound control vào report: + Chọn picture bound control + Xuất hiện hộp hội thoại report picture, chọn file, nếu muốn chèn hình ảnh từ file, chọn field nếu muốn chọn trường General. + Chọn Ok 6.5. Ví dụ Thiết kế Report như sau (dựa vào Bảng CANBO.DBF ở bài tập 2): iif(GIOI_TINH=".T.", "nam" iif(COGIADINH=".F.", 18. CHƯƠNG 7. TẠO MENU VÀ QUẢN LÝ ðỀ ÁN 18.1. 7.1. TẠO MENU 18.2. 7.1.1. GIỚI THIỆU Menu cung cấp một phương thức có cấu trúc và giao diện với người dùng ñể tác ñộng lên những câu lệnh trong ứng dụng. Việc sắp xếp và thiết kế menu thích hợp sẽ giúp cho người dùng ñược thuận lợi khi sử dụng hệ thống menu của bạn. 18.3. 7.1.2. CÁC BƯỚC TẠI MỘT MENU HỆ THỐNG 1. Sắp xếp và thiết kế: Quyết ñịnh menu nào bạn cần chúng xuất hiện ở vị trí nào trên màn hình, cần những menu con nào? 2. Sử dụng menu designer, tạo menu và các Submenu. 3. Gắn các câu lệnh tương ứng với công việc. 4. Biên dịch menu 5. Tiến hành chạy thử, kiểm tra. 18.4. 7.1.3. TẠO MENU HỆ THỐNG 7.1.3.1. Quản lý menu hệ thống Menu hệ thống ñược lưu trử tên ñĩa với file có phần mở rộng là *.MNX Tạo menu bằng công cụ Designer Menu: Thực hiện lệnh: CREATE MENU ↵ Mở menu ñã có: MODIFY MENU Dịch file Menu: ðể dịch file menu, từ màn hình Menu Designer chọn lệnh Generate. File menu sau khi dịch sẽ có phần mở rộng là MPR. 7.1.3.2. Tạo menu hệ thống thông qua Menu Designer Sau khi thực hiện lệnh Create menu, ta ñược màn hình giao diện Menu: Designer như sau: + Trong hộp Prompt, ta ñưa vào tên cần hiển thị trên giao diện. + Trong hộp Result, chọn: - Submenu nếu muốn tạo menu con. - Procedure nếu muốn thi hành thủ tục - Command nu mun thc hin mt lnh. + Kết thúc, ấn Ctrl_W. 18.5. 7.2.QUẢN LÝ ðỀ ÁN 18.6. 7.2.1. KHÁI NIỆM ðỀ ÁN ðề án là tên gọi ñể chỉ ñến ứng dụng mà bạn ñang xây dựng. Thông thường các thành phần của một ñề án bao gồm: + Các bảng dữ liệu (table). + Các file cơ sở dữ liệu (database) + Các form + Các report + Các query + Các file khác như âm thanh, hình ảnh, tài liệu, hình ảnh con trỏ,... 18.7. 7.2.2. QUẢN LÝ ðỀ ÁN Một ñề án trong Visual Foxpro ñược lưu trử trên file có phần mở rộng mặc ñịnh là *.PRJ. 7.2.2.1. Tạo mới các ñề án Thực hiện lệnh: CREATE PROJECT Lúc này xuất hiện cửa sổ quản lý ñề án Project Manager như ở trên. + Database: Bao gồm các: Table: Các bảng dữ liệu có liên kết với nhau hay các bảng tự do. Query: Là cấu trúc ñể lấy thông tin từ các bảng table. View: Là các Query chuyên dụng mà ta có thể truy xuất dữ liệu cục bộ và từ xa cho phép cập nhật các nguồn dữ liệu bằng cách làm thay ñổ Report bởi quyre. + Documents: Chứa các tài liệu sử dụng cho ñề án; bao gồm các form và report. + Class: Liệt kê các thư viện ñược sử dụng. + Code: và những file khác: Liệt kê các file chương trình và các file khác ñược sử dụng trong chương trình. ðể chỉnh sửa bất kỳ một thành phần nào trong ñề án ta chọn nó rồi chọn nút Modify. ðể thêm bất kỳ một file nào cho ñề án ta kích nút add (nếu chọn file ñã có) hoặc nút new (nếu tạo mới). Muốn loại bỏ bất kỳ một thành phần nào của ñề án ta chọn nó rồi chọn nút remove. 7.2.2.2. Mở một ñề án ñã có Thực hiện lệnh: MODIFY PROJECT 7.2.2.3. Dịch ñề án + Dịch sang APP: Khi này, ñể chọn ñề án phải có một bản sao của Visual Foxpro. Dùng lệnh BUILD + Dịch sang file có phần mở rộng là exe: Khi này, người dùng không cần có Visual Foxpro nhưng phải cung cấp hai file: vfp6r.dll và vfp6renu.dll ñược cài ñặt trong ñường dẫn hoặc trong cùng thư mục với ứng dụng. Dùng lệnh: BUILD EXE 7.2.2.4. Chạy ñề án Sau khi ñã dịch, ta có thể chạy ñề án thông qua lệnh: DO 18.8. 7.2.3. ðẶT STARTING POINT CHO ðỀ ÁN Khi ứng dụng ñược thi hành, có một ñiểm bắt ñầu, ñó là Starting point. ðể chọn một thành phần của dự án là Starting point: + Chọn thành phần ñược ñặt là Starting point. + Từ Menu Project, chọn Set main. Thông thường, Starting point là một chương trình khởi ñộng chứa các thành phần: Do setup.prg Do mainmenu.mpr Read Events Do cleanup.prg a. Do Setup.prg: L thc hin chng trình thit lp môi trng cho h thng. b. Do mainmenu.mpr: Chạy file menu chính ñể thiết lập giao diện cho hệ thống. c. Read Events: Bắt ñầu thực hiện vòng lặp ñể thực hiện công việc. d. Do cleanup.prg: Chạy chương trình dọn dẹp môi trường, trả lại môi trường cho hệ thống và thoát khỏi hệ thống. ổ ñây, phải có lệnh Clear Events ñể thoát khỏi vòng lặp ñã ñược thiết lập bới lệnh Read Events.
File đính kèm:
- giao_trinh_visual_foxpro.pdf