1 Lập trìnhxửlý giao diện 1.1 Menu Có 2 loại menu: - Menu thả xuống(Drop-down menu): là dạng menu thông dụng nhất. - Menu bật ra (Popup menu): Thường hiển thị khi ta nhấn nút phải chuột Menu cũng là một loại điều khiển, nhưng windows sẽ kiểm soát việc vẽ menu. Lậptrình viên chỉ quản lý phần xửlý các sự kiện mà thôi. 1.1.1 Dùng trình soạn thảo menu để tạo menu Menu không chứa trong hộp công cụ như những điều khiển khác, mà được thiết kế bằng trình soạn thảo menu. Từ menu tools, chọn Menu editor để mở rộng chương trình này hoặc dùng Ctrl + E hoặc nhấn biểu tượng trong menu của Visual basic Chú ý nếu chưa có biểu mẫu thì biểu tượng này không xuất hiện trên thanh công cụ. 1.1.1.1Các thuộc tính của menu Thuộc tính của menu không chứa trong cửa sổ thuộc tính như các điều khiển khác mà đặt trong trình soạn thảo menu. Thuộc tính caption: Là chuỗi ký tự hiển thị trên menu. Thuộc tính name: Phải được đặt duy nhất và dễ nhớ. Có 2 cách đặt tên: - Nhóm các mục có cùng cha trên menu vào chung một dãy các điều khiển và dùng chung một tên. Cách này được Visual basic hết sức khuyến khích. - Mỗi mục có một tên riêng, nhưng nên bắt đầu bằng mnu. ví dụ mnuFile Thuộc tính index: Dùng với dãy các điều khiển menu. Trong đó, vì có nhiều mục cùng tên nên index được dùng cho phân biệt giữa chúng với nhau. Thuộc tính shortcut: Người sử dụng có thể nhấn chuột để chọn menu theo cách bình thường, hoặc dùng phím tắt. VD: nhấn Ctrl+C thay vì chọn Copy. Thuộc tính Windows list: dùng trong các ứng dụng MDI. Đây là những ứng dụng có một biểu mẫu chính và nhiều biểu mẫu con. Thuộc tính windowsList ra lệnh cho Visual basic hiển thị tiêu đề của các cửa sổ con trên menu. Thuộc tính Checked: Nếu chọn thuộc tính này, trên menu sẽ hiển thị một dấu bên cạnh. Tuy nhiên, thuộc tính này không được gán cho những mục menu đang chứa menu con. Thuộc tính enable: Nếu thuộc tính này không được chọn người sử dụng không thể chọn và đó được. Thuộc tính Visible: Nếu thuộc tính này không được chọn mục này sẽ biến mất khỏi màn hình. Thuộc tính NegotiatePosition: Quản lý vị trí gắn menu trong trường hợp sử dụng các đối tượng ActivateX. Tách nhóm menu: Nếu menu có khá nhiều mục, tốt nhất ta nên chia chúng thành nhiều nhóm nhỏ. 1.1.2 Viết chương trình điều khiển menu Để lậptrình cho menu, ta mở cửa sổ thiết kế biểu mẫu và nhấn chuột lên mục mà ta muốn xử lý. 1.1.2.1Pop-up menu Ví dụ mẫu - tạo pop-up menu Bạn tạo ra một menu file có Open, Save, Save as . Mở cửa sổ code, trong sự kiện mouseUp của biểu mẫu, đưa vào dòng lệnh Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbRightButton Then PopupMenu mnuFile, vbPopupMenuLeftAlign End If End Sub Tắt thuộc tính Visible của menu file. Chạy chương trình, khi ta nhấn chuột một menu pop-up sẽ hiện thị. 1.1.2.2Menu động Mảng điều khiển Là một mảng với các phần tử là những điều khiển. Lần đầu bạn gặp mảng điều khiển là khi bạn copy điều khiển trên biểu mẫu. Visual basic sẽ hỏi: Nếu ta dán một điều khiển trùng tên với một điều khiển khác, lable1 chẳng hạn, đã có sẵn, Visual basic cho rằng ta muốn tạo mảng điều khiển. Nếu nhấn Yes, VB sẽ đặt tên cho mảng lable1, và thuộc tính index lần lượt là 0 và 1. Nếu thêm một điều khiển nữa, Visual basic tự đông tăng index. Nó không nhắc lại vì ta đã có mảng điều khiển. Mặc dù trùng tên nhưng ta có thể xác định các phần tử một cách dễ dàng nhờ thuộc tính index mà Visual basic tạo cho nó. 1.2 Hộp thoại Hộp thoại( dialog) là một trong những cách thức để windows giao tiếp với người sử dụng, có 4 kiểu hộp thoại: - Thông điệp - Hộp nhập - Các hộp thoại thông dụng - Hộp thoại hiệu chỉnh. 1.2.1 Thông điệp(Message box) Là dạng hộp thoại đơn giản nhất, gồm hai loại: - Chỉ cung cấp thông tin - Tương tác với người sử dụng. 1.2.1.1Chiều dài thông điệp Windows tự động cắt chuỗi khi nó quá dài, nhưng đôi khi việc này không đúng ý muốn của lậptrình viên. Ta có thể làm bằng tay: MsgBox “This is a multi-line” & chr$(10) & “message.” Hàm chr$() trả về ký tự có mã ASCII là tham số truyền vào chr$(10) trả về dòng ký tự mới. 1.2.1.2Các loại thông điệp Hằng số Thể hiện vbOKOnly OK vbOKCancel OK, Cancel vbAbortRetryIgnore Abort, Retry, Ignore vbYesNoCancel Yes, No, Cancel vbYesNo Yes, No vbRetryCancel Retry, Cancel 1.2.2 Hộp nhập(Input box) Input box ít được dùng. Lý do là: - Không có cách nào để kiểm định dữ liệu mà người sử dụng đưa vào khi họ chưa nhấn Enter. Nếu dùng biểu mẫu do chính mình thiết kế, ta có thể đưa vào hộp văn bản và viết chương trình để xửlý sự kiện liên quan đến việc kiểm tra dữ liệu mà với Input box không thể làm được. - InputBox chỉ cho người sử dụng nhập rất ít thông tin. Muốn lấy ra được nhiều thông tin, nên dùng biểu mẫu tự thiết kế. 1.2.3 Các hộp thoại thông dụng(Common dialog) Bởi vì các hộp thoại này xuất hiện ở mọi nơi, nên thay vì phải viết chương trình nhiều lần, Windows chứa chúng trong một DLL, Comdlg32.Dll hay Comdlg32.ocx Có 6 hộp thoại: - Mở tập tin - Lưu tập tin - Chọn màu - Chọn fonts - In ấn - Trợ giúp Tuy nhiên khi thiết kế mẫu ta chỉ thấy duy nhất một điều khiển là CommonDialog. Tên Phương thức Open file Showopen Save file Showsave Color Showcolor Font ShowFont Print ShowPrint Help ShowHelp 1.2.4 Hộp thoại hiệu chỉnh Ưu điểm của hộp thoại này là ta có thể thiết kế theo ý thích. Trở ngại của nó khi thi hành là từng biểu mẫu sử dụng tài nguyên hệ thống như bộ nhớ, thời gian CPU. Nếu dùng nhiều hộp thoại hiệu chỉnh trong ứng dụng có thể mất dần tài nguyên và khả năng chống lại treo máy là rất yếu. 1.3 Thanh công cụ(ToolBar) 1.3.1 Trong ứng dụng đơn giản Là tính năng chuẩn của các ứng dụng chạy trên windows. Nó cho phép truy cập nhanh đến các chức năng của menu. Tạo toolbar được hỗ trợ cho phiên bản profestional và Enterprice. 1.3.2 Nhúng đối tượng Khi nhúng một đối tượng vào nơi chứa và đối tượng đang được chọn, menu và toolbar của đối tượng sẽ được hiển thị trong nơi chứa. Ta có thể cho phép hiển thị menu hay toolbar của đối tượng nhúng bằng thuộc tính NegotiateMenus của biểu mẫu. Khi thuộc tính này là True (mặc định), và nơi chứa có dùng menu hoặc thuộc tính này là False, menu của đối tượng không thể “trộn” được. Lưu ý thuộc tính này không có trong biểu mẫu MDI. Thuộc tính NegotiateToolbars của biểu mẫu MDI quyết định toolbar của đối tượng nhúng có được đặt trong biểu mẫu chứa hay không. Nhưng nó đòi hỏi nơi chứa phải có toolbar. Nếu thuộc tính này là True toolbar của đối tượng nhúng được hiển thị trong nơi chứa. Nếu là False Toolbar được hiển thị “di động” trong nơi chứa. Lưu ý rằng thuộc tính này chỉ áp dụng cho biểu mẫu MDI. Nếu biểu mẫu MDI có toolbar, nghĩa là nó có một hộp hình. Thuộc tính Negotiate của hộp hình quyết định toolbar của nơi chứa vẫn hiển thị hoặc sẽ bị thay thế bằng toolbar của đối tượng nhúng khi nó được chọn. Nếu Negotiate là True, toolbar nhngs trộn vào toolbar chính. Ngược lại toolbar nhúng thay thế toolbar chính. 1.4 Thanh trạng thái Điều khiển thanh trạng thái (statusBar) cung cấp một cửa sổ, thường ở phần cuối cùng của cửa sổ chính, trên đó, ứng dụng có thể hiển thị các trạng thái dữ liệu khác nhau. StatusBar có thể được chia tối đa thành 16 panel dùng để chứa hình ảnh hay văn bản. Thuộc tính kiểm soát cách thể hiện của từng panel bao gồm Width, Alignment (của văn bản và hình ảnh) và Bevel. Ngoài ra ta có thể dùng một trong 7 giá trị của Style để tự động hiển thị dữ liệu thông dụng như ngày, giờvà trạng thái bàn phím. Vào lúc thiết kế, ta có thể tạo các bảng báo và hiệu chỉnh cách thể hiện của chúng bằng cách đổi các giá trị trong tab panel của hộp thoại Property page. Hộp thoại này được mở thông qua cửa sổ thuộc tính của điều khiển Statusbar. Vào lúc thi hành, các đối tượng Panel có thể được cấu hình lại để phản ánh các chức năng khác nhau, tuỳ theo trạng thái của ứng dụng. Thanh công cụ và thanh trạng thái cung cấp những công cụ giúp tạo ra một giaodiện tiết kiệm mà đầy đủ thông tin. 1.5 Xửlý chuột và bàn phím 1.5.1 sự kiện chuột Sự kiện Giải thích MouseDown Xảy ra khi người sử dụng nhấn một nút chuột bất kỳ. MouseUp Xảy ra khi người sử dụng thả một nút chuột bất kỳ. MouseMove Xảy ra khi con trỏ chuột di chuyển đến một điểm mới trên mà hình Biểu mẫu hoặc điều khiển có thể bắt sự kiện chuột khi con trỏ chuột đi qua. Tham số truyền Tham số Giải thích Button Cho biết nút chuột nào được nhấn Shift Cho biết phím SHIFT, CTRL hay ALT được nhấn x.y Vị trí con trỏ chuột, với hệ toạ độ của đối tượng bắt sự kiện. 1.5.2 Hiệu chỉnh con trỏ chuột Ta có thể dùng thuộc tính MousePointer và MouseIcon để hiện thị một biểu tượng con trỏ màn hình hay con trỏ chuột hiệu chỉnh. Thuộc tính MousePointer cho phép chọn một trong 16 kiểu con trỏ. Sau đây là một vài con trỏ thường dùng. Con trỏ chuột Hằng Mô tả vbHourglass Thể hiện một hoạt động đang tiền hành và yêu cầu người sử dụng chờ. vbSizePointer Thông báo chức năng thay đổi, ví dụ nó cho người sử dụng biết rằng có thể hiệu chỉnh cửa sổ. vbNoDrop Cảnh báo với NSD rằng hành động này không thể thi hành được. Giá trị mặc định của thuộc tính MousePointer là 0-Default và hiển thị theo kiểu Windows quy định. 1.5.3 Sự kiện bàn phím Sự kiện chuột và bàn phím có vai trò chủ yếu trong hoạt động tương tác giữa người sử dụng và chương trình. Mặc dù hệ điều hành cung cấp một số chức năng cơ bản cho bàn phím nhưng ta có thể khai thác và phát triển các thế mạnh của chúng. Ta có thể kiểm soát phím nhấn theo 2 mức: điều khiển hoặc biểu mẫu. Mức điều khiển cho phép lậptrình với điều khiển, mưc biểu mẫu cho phép ta lậptrình với ứng dụng. Sự kiện bàn phím Xảy ra KeyPress Khi một phím có mã ASCII được nhấn KeyDown Khi một phím bất kỳ được nhấn KeyUp Khi một phím bất kỳ được thả. Chỉ có sự kiện đang forcus mới bắt sự kiện bàn phím. Đối với biểu mẫu, nó chỉ bắt được khi nó được kích hoạt và mọi điều khiển trên biểu mẫu đều không có forcus. Điều này chỉ xảy ra với biểu mẫu trống hoặc biểu mẫu có điều khiển bị cấm. Tuy nhiên nếu quy định thuộc tính KeyPreview của biểu mẫu thành True, biểu mẫu sẽ nhận mọi sự kiện bàn phím của mọi điều khiển trên nó trước khi các điều khiển này nhận được. Cách này hữu dụng khi ta muốn thi hành cùng một hoạt động khi một phím bất kỳ được nhấn, bất kể điều khiển nào đang forcus. KeyDown và KeyUp có thể phát hiện những tình huống mà KeyPress không thể phát hiện: - Tổ hợp phím SHIFT, CTRL và ALT - Phím định hướng (← → ↑ ↓) lưu ý rằng một số điều khiển (nút lệnh, nút tuỳ chọn, và hộp đánh dấu) không bắt sự kiện phím định hướng. Thay vào đó, các phím này gây ra sự dịch chuyển của một điều khiển khác. - PAGEUP và PAGEDOWN - Phân biệt được phím số ở bàn phím phải với phím số ở bàn phím trái - Đáp ứng khi thả phím - Phím chức năng không trùng với menu. Sự kiện bàn phím không loại trừ nhau. Khi người sử dụng nhấn một phím, cả KeyDown và KeyPress cùng phát. Khi người sử dụng nhấn một trong những phím mà KeyPress không phát hiện được, chỉ có keydown và xảy ra, đó là KeyUp. Trước khi dùng KeyUp, KeyDown phải đảm bảo rằng KeyPress không làm được. Sự kiện này phát hiện các phím có mã ASCII chuẩn: Chữ cái, chữ số, dấu ngắt câu, Enter, TAB và BACKSPAGE. Nói chung, viết chương trình cho sự kiện KeyPress thì dễ hơn. . 1 Lập trình xử lý giao diện 1.1 Menu Có 2 loại menu: - Menu thả xuống(Drop-down menu): là. nhưng windows sẽ kiểm soát việc vẽ menu. Lập trình viên chỉ quản lý phần xử lý các sự kiện mà thôi. 1.1.1 Dùng trình soạn thảo menu để tạo menu Menu không