Khi bạn viết chương trình làm những việc cụ thể nào đó, bạn thường sử dụng menu để quy định công việc nào sẽ được thực hiện theo sự lựa chọn người dùng.. 1.2 Cách tạo 1.2.1 Tạo hình thức
Trang 1CHƯƠNG 10 TẠO MENU – ĐỐI TƯỢNG SCROLLBAR
1) Menu
1.1) Chức năng
Các ứng dụng trên Windows thường sử dụng Menu để cho phép người dùng dễ dàng gọi các lệnh của
ứng dụng Khi bạn viết chương trình làm những việc cụ thể nào đó, bạn thường sử dụng menu để quy định công việc nào sẽ được thực hiện theo sự lựa chọn người dùng
1.2) Cách tạo
1.2.1) Tạo hình thức cho Menu
Chọn menu Tool/Menu Editor, hoặc
Nhấn Ctrl+E
Bạn sẽ làm việc trên một dialog như hình sau:
Các bước thực hiện:
Nhập tiêu đề của menu trong khung Caption, nếu bạn muốn menu có một Hot-Key; bạn ghi
thêm ký tự & ở phía trước ký tự hot-key đó
• Nếu nội dung Caption là dấu — (dấu trừ ) mục này sẽ thành một đường vạch phân chia
trên menu
Mỗi mục trên menu cũng có một cái tên Bạn nhập tên cho từng mục của menu trong khung
Name.
• Nếu bạn đặt tên trùng nhau coi như bạn tạo ra một mảng các mục menu, khi đó bạn cần
quy định chỉ số của từng mục trong mảng bằng mục Index.
Khi tạo ra một menu trong chương trình người ta thường gán thêm một phím tắt cho menu.
Chẳng hạn trong Visual Basic để gọi dialog tạo menu này lên bạn có thể chọn menu
Tool/Menu Editor hay bấm phím tắt Ctrl + E cũng được Tạo phím tắt cho nó bằng combobox Shortcut Tên phím sẽ được thể hiện bên phải nội dung menu.
Trang 2→ Chọn mục Checked nếu muốn phía trước menu có dấu chọn ν
→ Mục Enabled dùng để quy định cho phép hay không cho phép chọn menu đó, một mục trên menu
khi không cho chọn sẽ ở dạng màu xám
→ Mục Visible dùng để quy định mục có nhìn thấy hay không, tức có hiện ra khi trình bày menu
trong chương trình hay không
Một menu thường có các mục chọn nằm ngang bên trên Mỗi mục ngang đó lại có một popup xổ
xuống Một mục trong popup đó khi chọn lại có thể thể hiện một popup nữa….Chúng ta có thể coi các mục nằm ngang là cấp 1, các mục trong từng popup là cấp 2, rồi dưới nữa là cấp 3,….Khi tạo menu bạn cũng phải phân cấp cho chúng để biết cái nào nằm ngang , cái nào nằm trong popup xổ xuống….Các nút mũi tên: ← là nâng lên một cấp và → là hạ xuống một cấp
Ví dụ trên hình trên, các mục New, Open, Save, Exit là cấp dưới của mục File Sau khi đã nhập tiêu đề cho chúng, bạn chọn chúng trong danh sách rồi bấm → để hạ chúng xuống một cấp
→ Các nút ↑ và ↓ để di chuyển mục đang chọn trong danh sách đi lên trên hay xuống dưới
→ Bấm Next để di chuyển thanh chọn đến mục kế tiếp trong danh sách.
→ Bấm nút Insert để chèn thêm một mục mới vào ngay tại vị trí đang đặt thanh chọn hiện thời.
→ Nút Delete dùng để xóa mục đang chọn hiện thời trong danh sách.
Bạn hãy tạo một menu có nội dung như hình trên, và xem menu được hiển thị trên form như thế nào
1.2.2) Viết thủ tục xử lý Menu
Viết thủ tục xử lý cho menu tức là xử lý để cho mỗi khi chọn một mục nào đó trên menu thì chương
trình sẽ làm gì
Sau khi bạn đã tạo menu cho form, menu cũng sẽ hiện trên form đang thiết kế giống như lúc chương
trình chạy, bạn muốn viết lệnh cho mục nào đơn giản là bạn chọn mục đó trên menu, cửa sổ viết lệnh sẽ hiện ra với dòng khai báo đặt sẵn có dạng như thế này:
Private sub tênmenu_click ()
End sub
Nếu menu đó là một thành phần trong mảng thì thủ tục có dạng như sau, trong đó index là chỉ số của
mục được chọn:
Private sub tênmenu_click ( Index As integer)
End sub 1.2.3) Các thuộc tính
Trong chương trình đôi khi bạn phải xử lý các mục trên menu của chương trình như: khi làm một việc
gì đó thì không cho phép chọn vài mục trong menu, hoặc thay đổi nội dung của menu… Mỗi mục trong menu cũng là một đối tượng có các property như sau:
Dùng để quy định cho phép hay không cho phép chọn mục này
Cú pháp :
menu Enabled [= boolean]
Trang 3Ví dụ: bạn có một mục trên menu có tên mnuOpen, bạn không muốn người ta chọn mục này, có thể
viết câu lệnh:
MnuOpen Enabled= false
Dùng để quy định mục có thể hiện trong menu hay không
Cú pháp:
menu Visible [=boolean]
Ví dụ: bạn muốn dấu mục mnuOpen đi, có thể viết câu lệnh:
mnuOpen visible= false
Dùng để đọc hoặc gán tiêu đề của mục trên menu
Cú pháp:
Mnu Caption [ = chuỗi]
Ví dụ: bạn có một mục trên menu có tên mnuOpen, bạn muốn đặt nó thành tiêu đề mới là “Test
menu” , có thể viết câu lệnh :
MnuOpen.Caption=”Test menu”
Dùng để quy định trạng thái chọn hay không chọn của menu ( tức có dấu ở phiá trước hay không) Cú pháp:
menu Checked [=boolean]
Ví dụ: bạn muốn đặt cho mục tên mnuNormal trên menu có dấu chọn phía trước bạn viết:
MnuNormal Checked = true
2) Đối tượng SCROLLBAR
2.1) Chức năng
Scrollbar là một đối tượng tạo thành một thanh cuộn trên form
Scrollbar thường được thấy trên các ứng dụng gõ văn bản, đồ họa,… giúp cho dữ liệu được thấy rõ
ràng hơn
Hoặc khi bạn cần người sử dụng xác định một giá trị trong một khoảng cố định nào đó bạn có thể cho
họ dùng scrollbar
Scrollbar có hai loại :HScrollbar là thanh cuộn nằm ngang,VScrollbar là thanh cuộn đứng.
2.2) Các thuộc tính
Các thuộc tính của hai đối tượng HScrollbar và VScrollbar bao gồm:
2.2.1) Min
La ø một con số, chỉ định giá trị cực tiểu của thanh cuộn
2.2.2) Max
Là con số chỉ định giá trị cực đại của thanh cuộn
Trang 4Một thanh cuộn luôn được sử dụng để đặt các giá trị trong khoảng từ Min đến Max, vì vậy khi tạo
một thanh cuộn trên form, bao giờ bạn cũng phải quy định giá trị hai thuộc tính này
2.2.3) SmallChange
La ø một con số, nó dùng để quy định mỗi khi click vào một trong hai nút mũi tên ở 2 đầu ScrollBar thì giá trị tăng hoặc giảm một khoảng bao nhiêu
2.2.4) LargeChange
La ø một con số, nó dùng để quy định mỗi lần click mouse ở giữa thanh cuộn thì nó tăng hoặc giảm giá trị một khoảng bao nhiêu
2.2.5) Value
Đây là property chính của scrollbar, nó là một con số cho biết hiện giờ thanh cuộn được cuộn đến giá
trị bao nhiêu
Trong chương trình, bạn sẽ truy xuất thuộc tính này để biết người ta đã cuộn để chọn giá trị bao
nhiêu Bạn cũng có thể gán lại giá trị này để bắt thanh cuộn phải cuộn đến vị trí xác định nào đó
Chương trình mẫu dùng ScrollBar
Chúng ta sẽ tạo ra một dialog để người ta pha màu Bạn đã biết để đặt màu cho các phương thức vẽ,
chúng ta có thể dùng hàm RGB để cho ra một màu bất kỳ, các màu đó luôn luôn là tổ hợp của ba thành tố màu là Đỏ(Red), Lục (Green) và Lam(Blue) Rõ ràng trong chương trình mà bạn cho người ta ba con số thành tố màu như vậy để định màu thì khó đoán được phải đặt như thế nào Để cho dễ pha màu hơn chúng ta tạo ra một dạng dialog như sau:
Trên dialog này có:
• Một khung mẫu ở bên góc trái để trình bày cho biết màu đang chọn hiện thời như thế nào
• Ba thanh cuộn dùng để đặt giá trị 3 thành tố màu tương ứng Đỏ, Lục và Lam Các thanh cuộn này
chỉ cuộn trong khoảng giá trị từ 0 đến 255 (vì các thành tố màu chỉ có giá trị từ 0 đến 255) Mỗi khi click vào thanh cuộn (có thể vào các nút mũi tên -cuộn ít, hoặc ở giữa thanh cuộn-cuộn nhiều hoặc kéo nút cuộn-cuộn đi trên thanh cuộn-cuộn), giá trị màu hiện thời sẽ ghi lại trong ba TextBox ở bên phải , đồng thời màu của khung mẫu cũng thay đổi để thể hiện đúng sắc độ chọn hiện thời
• Khi nhập lại một giá trị trong các TextBox , thanh cuộn cũng sẽ tự động cuộn đến vị trí thích hợp
và khung mẫu cũng trình bày lại cho giống với giá trị màu đó
Trang 51 Thiết kế giao diện:
màu thể hiện chính là màu tô bên trong của Shape này Đặt tên là shpSample
Đặt các thuộc tính của shpSample như sau : Fillcolor màu đen; FillStyle = 0 – Solid; BoderColor
màu trắng; Shape = 0 – Rectangle
Lưu ý đặt Index cho chính xác: Thanh đỏ có Index = 0, thanh lục có Index = 1 , và thanh lam có Index =2
Đặt các thuộc tính của mỗi thanh cuộn như sau: Min = 0; Max = 255; SmallChange = 1; LargeChange = 10; Value = 0
Ba TextBox ghi giá trị cũng tạo thành một mảng có tên
txtColor và có Index cũng tương ứng như ba thanh cuộn Đặt các thuộc tính Text của các
TextBox bằng “0”
Nút OK đặt các thuộc tính Default = True; nút Cancel đặt property Cancel = True
2 Viết thủ tục:
trường hợp này là bạn chuẩn bị viết thủ tục dùng chung để xử lý mỗi khi giá trị của một trong ba thanh cuộn này là thay đổi Các dòng lệnh như sau:
Private sub sbColor_Change (Index As Integer)
‘Đặt màu tô của shpSample bằng RGB của ba giá trị trong ba thanh cuộn
ShpSample.FillColor = RGB (HsbColor (0).Value, HsbColor (1).Value, HsbColor (2).Value)
‘Đặt nội dung của TextBox tương ứng bằng giá trị của thanh cuộn
TxtColor (Index).Text = Trim(str (HsbColor (Index)))
End sub
lúc này chính là thủ tục thực hiện khi một trong các TextBox bị thay đổi nội dung
Private sub txtColor_Change (Index As Integer)
‘Đặt giá trị của thanh cuộn tương ứng bằng giá trị của TextBox tương ứng
HsbColor (Index).Value = Val (txtColor (Index).text)
‘Đặt màu tô của shpSample bằng RGB của ba giá trị trong ba thanh cuộn
ShpSample.FillColor = RGB (HsbColor (0).Value, HsbColor (1).Value, HsbColor (2).Value)
End Sub
− Lần lượt double click vào hai nút OK và Cancel để viết lệnh End kết thúc chương trình
− Lưu project
Trang 6Tóm tắt chương 10
1 Menu
→ Tạo menu cho chương trình bằng cách chọn menu tools/menu editor hoặc nhấn Ctrl+E
→ Mỗi mục trên menu phải nhập đủ tiêu đề (caption ), tên (name )
→ Mỗi mục trên menu cũng là một đối tượng có tên và có các thuộc tính enabled, visible, checked, caption
2 Đối tượng Scrollbar
Gồm hai loại Hscrollbar (nằm ngang )và Vscrollbar (thẳng đứng ).
Các thuộc tính của các đối tượng scrollbar
Cotainer draglcon dragmode enabled
Height helpcontextid hwnd index
Largechange left max min
Mouseicon muosepoiter name parent
Smallchange tabindex tabstop tag
Top value visible whatsthisheplid
Width
Các method của các đối tượng scrollbar
Drag move refresh setfocut