寫在前面
這是PB案例學習筆記系列文章的第26篇,該系列文章適合具有一定PB基礎的讀者。
通過一個個由淺入深的編程實戰案例學習,提高編程技巧,以保證小伙伴們能應付公司的各種開發需求。
文章中設計到的源碼,小凡都上傳到了gitee代碼倉庫https://gitee.com/xiezhr/pb-project-example.git
需要源代碼的小伙伴們可以自行下載查看,后續文章涉及到的案例代碼也都會提交到這個倉庫【pb-project-example】
如果對小伙伴有所幫助,希望能給一個小星星?支持一下小凡。
一、小目標
通過本案例我們將制作一個帶浮動圖標的工具欄。當鼠標移動到一個命令圖標上時,該圖標會凸起顯示,移開鼠標,工具欄圖標又會恢復原來狀態。通過案例我們將學會菜單對象ToolBar
的使用,最終效果如下所示
二、創建程序基本框架
① 新建examplework
工作區
② 新建exampleapp
應用
③ 新建w_main
窗口,將其Title
屬性設置成"浮動工具欄", 并將WindowType
屬性設置成mdihelp!
(這兒一定要設置)
由于文章篇幅原因,以上步驟不再贅述,如果忘記怎么新建的小伙伴可以翻一翻該系列文章的第一篇復習以下
三、新建m_main
菜單
① 新建菜單基本框架,如下圖所示
② 設置菜單命令屬性
將各個菜單命令的ToolBarItemText
與菜單命令名稱設置成一致,ToolBarItemName
與ToolBarItemDownName
一致,如上圖所示。
各個菜單命令的ToolBarItemvisible
為True
,ToolBarItemDown
為False
,ToolBarItemSpace
與ToolBarItemOrder
均為0,“新建”
、“打開”、“保存”、“另存為”、“-”、“打印”、“退出”的ToolBarItemBarIndex
為1,“撤銷”、“剪切”、“復制”、“粘貼”、“刪除”的ToolBarItemIndex
均為2
菜單欄各個屬性說明如下
屬性 | 說明 |
---|---|
ToolBarItemText | 設置工具欄按鈕的文本提示 |
ToolBarItemName | 設置工具欄按鈕的圖標 |
ToolBarItemDownName | 設置工具欄按鈕按下時的圖標 |
ToolBarItemVisible | 設置工具欄按鈕是否顯示 |
ToolBarItemDown | 設置工具欄按鈕是否為按下狀態 |
ToolBarItemSpace | 設置工具欄第一個按鈕前預留的空位 |
ToolBarItemOrder | 設置工具欄按鈕在工具欄上的位置 |
ToolBarItemBarIndex | 當有多個工具欄時,設置工具欄按鈕所在的工具欄號 |
③ 保存菜單
④ 將窗口w_main
的MenuName
設置成剛剛創建的m_main
四、編寫代碼
① 在m_main
菜單中新建mf_select(menu am_menuitem) returns (none)
函數
函數體代碼如下
uint lui_flags, MF_HILITE = 128
lui_flags = IntHigh(Message.WordParm)
lui_flags -= mod(lui_flags, MF_HILITE)
if mod(lui_flags, MF_HILITE * 2) > 0 then return // menu item text is selected
if am_menuitem.ToolBarItemDown then return // ignore icons that are displayed down
if am_menuitem.tag = "" thenam_menuitem.tag = am_menuitem.ToolBarItemName
end if
im_last_selected = am_menuitem
am_menuitem.ToolBarItemName = am_menuitem.ToolBarItemDownName
② 在m_main
菜單中新建mf_unselect() returns (none)
函數,函數體代碼如下
if isValid(im_last_selected) thenif im_last_selected.tag <> "" thenim_last_selected.ToolBarItemName = im_last_selected.tagend if
end if
③ 在w_main
窗口中新建menu(unsignedinteger itemid,unsignedinteger flags,long hmenu) returns long(pbm_menu)
事件,代碼如下
if Handle(this.MenuID) = hmenu thenthis.MenuID.DYNAMIC mf_unselect()
end if
④ 在w_main
的open
事件中 添加如下代碼
GetApplication().ToolBarText = True
⑤ 在開發界面左邊System Tree
窗口中雙擊exampleapp
對象,并在其open
事件中添加如下代碼
open(w_main)
五、運行程序
經過上面一波操作,代碼編寫,我們開看看最終效果
本期內容到這兒就結束了★,°:.☆( ̄▽ ̄)/$:.°★ 。 希望對您有所幫助
我們下期再見 ヾ(?ω?`)o (●’?’●)