Ðề: Cùng mổ xẻ chương trình mẫu VDP
Nhưng em chưa thấy load cái Icon vào các menu con, có cách nào để xử lý không bác
Quan sát các phần trước bạn sẽ thấy mấu chốt cũng chỉ là 2 đối tượng:
CommandBar và
CommandBarButton.
Để dễ nhớ, hãy liên hệ chúng với 2 đối tượng mà ta rất quen thuộc: File và Folder.
- 1 file thì phải nằm trong 1 cái Folder nào đó.
- 1 cái Folder có thể chứa nhiều File, đồng thời cũng có thể chứa nhiều Folder con.
=>
-
1 CommandBarButton phải nằm trong 1 cái CommandBar nào đó.
- 1 cái CommandBar có thể chứa nhiều CommandBarButton , đồng thời cũng có thể chứa nhiều CommandBar con.
Chỉ có thế thôi. Nhớ kỹ cái này thì về sau sẽ ít rối hơn.
Như vậy, xem lại phần mà ta đã gán 1 picture vào button:
Dim cmb
As CommandBar
Dim cbc As Office.
CommandBarButton
Dim picPicture
As IPictureDisp
.....
Set picPicture = stdole.StdFunctions.LoadPicture( "D

danketoan\img\logo2.bmp")
Set cbc = cmb.Controls.Add(
msoControlButton)
cbc.Caption = "Button2"
cbc.Style =
msoButtonIconAndCaption
cbc.Picture = picPicture
Và xem lại khi ta tạo menu popup:
Dim cmbc As CommandBarPopup
Dim ctrl1 As Office.CommandBarButton
......
Set ctrl1 = cmbc.CommandBar.Controls.Add( Type:=msoControlButton)
ctrl1.Caption = "Import"
Ta thấy CommandBar và CommandBarPopup là tương đương nhau.
Còn các CommandBarButton có các thuộc tính riêng của nó.
Như trên thì cbc và ctrl1 đều là CommandBarButton .
Muốn gán icon vào CommandBarButton thì cần khai báo
Style:=
msoButtonIconAndCaption và sau đó gắn icon vào thôi.
Có đặt tên là cbc hay là ctrl1 gì gì thì cũng như nhau thôi.
Trong ví dụ trước tôi không gắn icon vào mục chọn của menu popup vì muốn để cho gọn, dễ quan sát phần nội dung chính và ngoài ra còn vì để về sau ta sẽ tuỳ biến bề mặt của 1 button. Sẽ đề cập đến trong phần chi tiết của 1 button.
------------------
Để liên tục chương trình mời quý vị thưởng thức thêm 2 món nữa: Popup menu nhiều tầng và Shortcut menu.
----------
LÀM POPUP MENU CẤP 2, CẤP 3, CẤP 4 ....
Trong phần trước ta đã chèn 1 cái menu xổ xuống vào thanh menu chính (thanh menu nằm ngang).
Vậy không có lý do gì bạn lại không chèn được menu popup cấp 2, cấp 3 ...
Lấy lại ví dụ trước, tiếp theo phần mà ta đã khai báo 3 nút "Import", "Export", "Close" vào menu popup, bây giờ chèn tiếp thêm vào đó 1 cái popup con:
Private Sub Form_Load()
... (phần cũ giữ nguyên) ....
Dim cmbc As CommandBarPopup
Dim ctrl1 As Office.CommandBarButton
......
ctrl1.OnAction = "Close_myform_now"
..... (Phần thêm vào) .....
'------------- popup menu cap 2 -----------------
Dim cnbc As CommandBarPopup
Set cnbc = cmbc.CommandBar.Controls.Add(Type:=msoControlPopup, Before:=1)
cnbc.Caption = "Thue phai nop"
Set ctrl1 = cnbc.CommandBar.Controls.Add( Type:=msoControlButton)
ctrl1.Caption = "Thue GTGT"
ctrl1.OnAction = "=msgbox(""Helo! You clicked Thue GTGT"")"
Set ctrl1 = cnbc.CommandBar.Controls.Add( Type:=msoControlButton)
ctrl1.Caption = "Thue XNK"
ctrl1.OnAction = "=msgbox(""Helo! You clicked Thue XNK"")"
Set ctrl1 = cnbc.CommandBar.Controls.Add( Type:=msoControlButton)
ctrl1.Caption = "Thue TTDB"
ctrl1.OnAction = "=msgbox(""Helo! You clicked Thue TTDB"")"
Set ctrl1 = cnbc.CommandBar.Controls.Add( Type:=msoControlButton)
ctrl1.Caption = "Thue TNDN"
ctrl1.OnAction = "=msgbox(""Helo! You clicked Thue TNDN"")"
End Sub
Chỉ có thế. Ta chèn 1 cái CommandBarPopup lấy tên là cnbc vào cái CommandBarPopup cũ.
Giống như mở 1 thư mục con trong 1 thư mục.
Hôm nay còn có thêm 1 thuộc tính là
Before:=1 là để đặt popup cnbc này vào vị trí đầu tiên của popup cmbc.
Rồi sau đó thêm các button vào trong cái popup cnbc đó.
Tương tự như thế bạn có thể làm menu đa tầng.