Bài 09 - sử dụng các control I. giới thiệu Các đối tượng điều khiển (Control) được sử dụng trong việc thiết kế giao diện trên Form, Report, Label (Trong bài này chúng ta chỉ xét đến các Control dùng trên FORM). Ví dụ giao diện sau được thiết kế từ FORM và các control. Hình 1 Mỗi loại đối tượng thường được thiết kế cho một mục đích nhất định. Ví dụ đối tượng Label (nhãn) được dùng để hiển thị một chú thích, đối tượng TextBox được dùng để cho phép nhập liệu, đối tượng Command Button để thể hiện các nút lệnh Tuy nhiên người dùng có thể sử dụng với mục đích khác. Các Control được xác định qua các Properties (thuộc tính), Methods (Phương thức) và Events (sự kiện - tương tự như FORM). Thanh công cụ Form Controls: Khi đang mở Form ở chế độ thiết kế (Form Designer), Visual Foxpro hiển thị thanh công cụ Form Controls như hình sau: Có thể hiển thị/ẩn Form Control bằng cách trong menu View chọn Form Control Toolbar Đưa một Control vào Form: Từ thanh công cụ Form Controls “nhấp” đối tượng cần dùng và “thả” vào Form. Ví dụ II. Các đối tượng thường dùng 1. Label: Sử dụng cho: hiển thị nhãn, chú thích, ví dụ các ô text sau các label Khóa, Lớp, Học kỳ, Năm học trong Hình 1 được dùng để nhập khóa, lớp, học kỳ và năm học. Các Properties thường dùng: 1) Alignment: Canh lề phần text hiển thị của label. Thuộc tính này có thể nhận các giá trị: (1) 0 - Left Canh trái, đây là giá trị mặc định; (2) 1-Right Canh phải; (3) 2 - Center canh giữa. 2) Autosize: Tự động thay đổi kích thước phù hợp cho việc hiển thị thuộc tính Caption của nó. 3) BackColor: Đặt mầu nền của Label. Trong khi thiết kế có thể dùng hộp mầu để chọn hoặc khi chạy chương trình có thể sử dụng hàm RBG() để xác định mầu. 4) BackStyle: Thiết lập tính chất nền. Thuộc tính này có thể nhận một trong các giá trị: (1) 0 - Transparent xác định tính chất trong suốt của nền (có thể nhìn thấy mọi đối tượng “phía sau”); (2) 1 - Opaque không cho quan sát các đối tượng phía sau. 5) BorderStyle: Thiết kập thuộc tính biên của đối tượng. Thuộc tính này có thể nhận các giá trị: 0 (none) - Không có đường biên; 1 (Fixed single) - Đường biên đơn. 6) Caption: Text hiển thị như một nhãn, chú thích. Thuộc tính này nhận chuỗi text bất kỳ. 7) FontName: Đặt Font chữ. 8) ForeColor: Đặt mầu chữ. Trong khi thiết kế có thể dùng hộp mầu để chọn hoặc khi chạy chương trình có thể sử dụng hàm RBG() để xác định. 9) Height: Chiều cao 10) Left: Vị trí cạnh trái 11) Name: Tên của đối tượng (dùng để sử dụng trong chương trình) 12) Top: Vị trí cạnh trên 13) Visible: Thiết lập tính chất Hiện/ẩn. Thuộc tính này nhận 2 giá trị: (1) .T. - Hiện ; (2) .F. - ẩn. 14) Width: Độ rộng của label. Label cũng có nhiều Methods và Events, tuy nhiên vì mục đích của đối tượng này là hiển thị một đoạn text nên trong phần này không giới thiệu các methods và events này. 2. TextBox, EditBox Sử dụng cho: Nhập một dòng text, các số, ví dụ các nhãn Khóa, Lớp, Học kỳ, Năm học trong Hình 1 được dùng làm tiêu đề cho các ô dữ liệu bên cạnh. Các Properties thường dùng: 1) Alignment: Xem phần II.1 2) BackColor: Xem phần II.1 3) BackStyle: Xem phần II.1 4) BorderColor: Xem phần II.1 5) BorderStyle: Xem phần II.1 6) ControlSource: Cho phép “gắn kết” (bound) textbox với 1 trường hoặc biến nào đó (thông thường với 1 trường). Việc “Gắn kết” ở đây được hiểu là nếu text trên textbox thay đổi thì trường hoặc biến “gắn kết” với nó cũng thay đổi theo. Ví dụ, thêm 1 textbox vào form và đặt thuộc tính controlSource=”Hososv.hoten” ->Run Form. 7) DisabledBackColor: Mầu nền của textbox khi thuộc tính Enable=.F. 8) DisabledForeColor: Mầu của text khi thuộc tính Enable=.F. 9) Enabled: Cho phép có hiệu lực hay vô hiệu khả năng đáp ứng sự kiện của textbox. Thuộc tính này nhận các giá trị: .T. - có hiệu lực; .F. - Vô hiệu lực 10) FontName: Xem phần II.1 11) ForeColor: Xem phần II.1 12) Format: Định dạng dữ liệu hiển thị. Visual Foxpro qui định kí hiệu sử dụng cho Format của textbox (tham khảo trong help của Visual Foxpro 9 (Microsoft Visual Foxpro 9.0/Reference/Language Reference/Properties/ Format Property). Ví dụ đặt Format là !A (! - Hiển thị chữ hoa, A - Chỉ nhập các ký tự) 13) Height: Xem phần II.1 14) InputMask: Định dạng dữ liệu nhập. Visual Foxpro qui định kí hiệu sử dụng cho InputMask của textbox (tham khảo trong help của Visual Foxpro 9 (Microsoft Visual Foxpro 9.0/Reference/Language Reference/Properties/ InputMask Property). Ví dụ đặt InputMask là ### (# - nhập chữ số) cho phép nhập 3 chữ số. 15) Left: Xem phần II.1 16) MaxLength: Số ký tự tối đa có thể nhập (nếu MaxLength=0 thì số ký tự là bất kỳ, đây là giá trị mặc định). 17) SelectOnEntry: Thiết lập chế độ đánh dấu text khi đối tượng này nhận quyền điều khiển. Thuộc tính này nhận các giá trị: .T. - Cho phép chế độ đánh dấu; .F. Không cho phép. 18) TabIndex: Thứ tự theo Index của đối tượng (khi sử dụng phím Tab con trỏ sẽ di chuyển theo thứ tự Index từ thấp đến cao) 19) Top: Xem phần II.1 20) Value: Giá trị là xâu text hiển thị trên đối tượng này. 21) Visible: Xem phần II.1 22) Width: Xem phần II.1 Các Methods và Event thường dùng: 1) Refresh (method): “Làm tươi” lại dữ liệu hiển thị trên textbox. Ví dụ, đặt thuộc tính ControlSource = text1 (text1 là 1 biến), sau đó gán cho text1 =”Visual Foxpro”, khi đó cần thực hiện Refresh để làm tươi lại dữ liệu trên Text. 2) SetFocus (method): Đưa con trỏ đến đối tượng này. 3) Valid (Event): Sự kiện này sảy ra trước khi chuyển quyền điều khiển tới đối tượng khác. Vì lý do như vậy nên sự kiện này thường dùng để kiểm tra tính hợp lệ của dữ liệu, nếu không hợp lệ thì có thể yêu cầu người sử dụng nhập lại. Ví dụ 1: Trong hình 1, xét ô text học kỳ. Ta có học kỳ chỉ nhận 2 giá trị là 1 hoặc 2, để đảm bảo yêu cầu này chúng ta sẽ viết đoạn lệnh đáp ứng sự kiện valid để kiểm. Giá thiết textbox được thiết lập các thuộc tính Name = hocky Maxlength=1 khi đó sự kiện hocky.valid được viết như sau: hk=this.value IF !hk$"1;2" then WAIT WINDOW "Gia tri khong dung! Hoc ky = 1 hoac 2" NOWAIT RETURN 0 ENDIF Ví dụ 2: Trong hình 1, xét ô text khóa. Ta thấy các khóa nhập vào ở đây phải nằm trong DMKHOA thì mới có nghĩa -> Viết sự kiện valid để kiểm tra tính hợp lệ này của ô text khóa. Giá thiết textbox được thiết lập các thuộc tính Name = Khoa Maxlength=10 khi đó sự kiện Khoa.valid được viết như sau: khoahoc=this.Value SELECT dmkhoa LOCATE FOR (ma=khoahoc) IF FOUND() THEN thisform.lblTenKhoa.Caption=dmkhoa.ten ELSE IF !EMPTY(khoahoc) THEN WAIT WINDOW "Ma khoa khong dung!!" NOWAIT RETURN 0 ELSE thisform.lblTenKhoa.Caption="" ENDIF ENDIF Đối tượng EditBox tương đối giống TextBox (khác biệt chủ yếu là cho phép soạn text trên nhiều dòng) các bạn tự tìm hiểu thêm. 3. Command Button Sử dụng cho: Tạo các nút lệnh. Ví dụ như các nút lệnh Tạo BC, To Excel, Xem in trong hình 1. Các Properties thường dùng: Trong phần này chỉ giới thiệu một số thuộc tính khác so với các thuộc tính đã giới thiệu ở các đối tượng trên. 1) Caption: Text hiển thị như tên (khác với name) của nút lệnh. 2) FontName: Font chữ cho caption. 3) Picture: Cho phép đưa một ảnh vào nút lệnh. 4) ToolTipText: Đặt dòng text (tooltip) khi đưa con trỏ tới nút lệnh. Các Methods và Events thường dùng: 1) Click (Event): Sự kiện này sảy ra khi người sử dụng click chuột trái vào nút lệnh (nút lệnh được thiết kế chính để đáp ứng sự kiện này). Ví dụ 1: Thêm vào form nút lệnh “Thoát” để đóng form, thiết lập các thuộc tính: Caption=Thoát Name=cmdThoat Khi đó dự kiện cmdThoat.Click được viết như sau: IF MESSAGEBOX("Dong form nay lai?",4+32)=6 THEN thisform.Release ENDIF Ví dụ 2: Tạo form DMKHOA cho phép cập nhật danh mục khóa. Thêm vào Form các nút lệnh “Đầu”, “Trước”, “Sau” và “Cuối” để di chuyển con trỏ bản ghi của bảng DMKHOA về bản ghi đầu, bản ghi trước, bản ghi tiếp và bản ghi cuối. Lần lượt đặt tên cho các nút lệnh đó là cmdDau, cmdTruoc, cmdSau và cmdCuoi, láy ví dụ. Sửa lại chức năng trong các nút lệnh sao cho khi chuyển đến bản ghi đầu thì nút lệnh “Đầu”, “Trước” sẽ disable, khi chuyển đến bản ghi cuối thì các nút lệnh “Sau”, “Cuối” sẽ disable. 4. OptionGroup Box Sử dụng cho: Lựa chọn một trong nhiều khả năng. Các Properties thường dùng: 1) AutoSize: Tự động thay đổi kích thước của đối tượng cho phù hợp (phần thiết kế). Thuộc tính này nhận các giá trị .T. và .F. 2) ButtonCount:Số các tùy chọn 3) Value: Giá tị trả về của option, giá trị này là số thứ tự mục chọn. Khi thiết kế, có thể thay đổi một số thuộc tính khác của OptionGroup bằng cách nhấp chuột phải vào đối tượng, tiếp đến chon Builder Vì đây là một dạng container nên để thay đổi các thuộc tính các đối tượng con của nó bằng cách: nhấp chuột phải vào đối tượng, tiếp đến chọn Edit Các Methods và Events thường dùng: Không có methods, hoặc event nào đặt biệt nên không giới thiệu ở đây. Ví dụ: 5. CheckBox Sử dụng cho: Lựa chọn một trong 2 khả năng. Các Properties thường dùng: 1) Caption: Thể hiện phần text của đối tượng 2) Value: Checked - Giá trị 1 hoặc .T.; Unchecked - Giá trị 0 hoặc .F. Các Methods và Events thường dùng: 1) Click (Event): Sự kiện này sảy ra khi người sử dụng click chuột trái vào check box. Ví dụ: Giả sử dùng check box để hiển thị thông tin về giới tính với qui ước checked - Nam, và Unchecked là nữ. Khi đó sự kiện click được viết như sau: IF this.Value THEN this.Caption="Nam" ELSE this.Caption="N÷" ENDIF 6. Combo Box 7. List Box 8. Grid 9. Image 10. Timer 11. Page Frame Bài tậP . khảo trong help của Visual Foxpro 9 (Microsoft Visual Foxpro 9. 0/Reference/Language Reference/Properties/ Format Property). Ví dụ đặt Format là !A (! - Hiển thị chữ hoa, A - Chỉ nhập các ký tự). InputMask: Định dạng dữ liệu nhập. Visual Foxpro qui định kí hiệu sử dụng cho InputMask của textbox (tham khảo trong help của Visual Foxpro 9 (Microsoft Visual Foxpro 9. 0/Reference/Language Reference/Properties/. Bài 09 - sử dụng các control I. giới thiệu Các đối tượng điều khiển (Control) được sử dụng trong việc thiết kế giao diện trên Form, Report, Label (Trong bài này chúng ta