【PB案例學習筆記】-26制作一個帶浮動圖標的工具欄

寫在前面

這是PB案例學習筆記系列文章的第26篇,該系列文章適合具有一定PB基礎的讀者。

通過一個個由淺入深的編程實戰案例學習,提高編程技巧,以保證小伙伴們能應付公司的各種開發需求。

文章中設計到的源碼,小凡都上傳到了gitee代碼倉庫https://gitee.com/xiezhr/pb-project-example.git

gitee代碼倉庫

需要源代碼的小伙伴們可以自行下載查看,后續文章涉及到的案例代碼也都會提交到這個倉庫【pb-project-example

如果對小伙伴有所幫助,希望能給一個小星星?支持一下小凡。

一、小目標

通過本案例我們將制作一個帶浮動圖標的工具欄。當鼠標移動到一個命令圖標上時,該圖標會凸起顯示,移開鼠標,工具欄圖標又會恢復原來狀態。通過案例我們將學會菜單對象ToolBar的使用,最終效果如下所示

浮動工具欄

二、創建程序基本框架

① 新建examplework工作區

② 新建exampleapp應用

③ 新建w_main窗口,將其Title屬性設置成"浮動工具欄", 并將WindowType屬性設置成mdihelp!(這兒一定要設置)

由于文章篇幅原因,以上步驟不再贅述,如果忘記怎么新建的小伙伴可以翻一翻該系列文章的第一篇復習以下

三、新建m_main菜單

① 新建菜單基本框架,如下圖所示

創建菜單基本框架

② 設置菜單命令屬性

將各個菜單命令的ToolBarItemText與菜單命令名稱設置成一致,ToolBarItemNameToolBarItemDownName一致,如上圖所示。

各個菜單命令的ToolBarItemvisibleTrue,ToolBarItemDownFalse,ToolBarItemSpaceToolBarItemOrder均為0,“新建”

、“打開”、“保存”、“另存為”、“-”、“打印”、“退出”的ToolBarItemBarIndex為1,“撤銷”、“剪切”、“復制”、“粘貼”、“刪除”的ToolBarItemIndex均為2

菜單欄各個屬性說明如下

屬性說明
ToolBarItemText設置工具欄按鈕的文本提示
ToolBarItemName設置工具欄按鈕的圖標
ToolBarItemDownName設置工具欄按鈕按下時的圖標
ToolBarItemVisible設置工具欄按鈕是否顯示
ToolBarItemDown設置工具欄按鈕是否為按下狀態
ToolBarItemSpace設置工具欄第一個按鈕前預留的空位
ToolBarItemOrder設置工具欄按鈕在工具欄上的位置
ToolBarItemBarIndex當有多個工具欄時,設置工具欄按鈕所在的工具欄號

③ 保存菜單

④ 將窗口w_mainMenuName設置成剛剛創建的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

menu事件

④ 在w_mainopen事件中 添加如下代碼

GetApplication().ToolBarText = True

⑤ 在開發界面左邊System Tree窗口中雙擊exampleapp對象,并在其open事件中添加如下代碼

open(w_main)

五、運行程序

經過上面一波操作,代碼編寫,我們開看看最終效果

浮動工具欄

本期內容到這兒就結束了★,°:.☆( ̄▽ ̄)/$:.°★ 。 希望對您有所幫助

我們下期再見 ヾ(?ω?`)o (●’?’●)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/37947.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37947.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37947.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

爬蟲cookie是什么意思

“爬蟲 cookie”指的是網絡爬蟲在訪問網站時所使用的cookie&#xff0c;網絡爬蟲是一種自動化程序&#xff0c;用于在互聯網上收集信息并進行索引&#xff0c;這些信息可以用于搜索引擎、數據分析或其他目的。 本教程操作系統&#xff1a;Windows10系統、Dell G3電腦。 “爬蟲…

51-1 內網信息收集 - 內網資源探測

導語 在內網滲透過程中,通常需要利用各種技術來探測內網資源,為后續的橫向滲透做準備。發現內網存活的主機及其詳細信息可以幫助確定攻擊方向和潛在的漏洞。 一、基于 ICMP 發現存活主機 ICMP(Internet Control Message Protocol,因特網控制消息協議)是 TCP/IP 協議簇的…

一段式、二段式和三段式狀態機的特點及適用情況:

在FPGA設計中,狀態機的選擇主要取決于具體應用場景和設計需求。 一段式狀態機: 優點: 結構簡單,易于理解和實現占用資源少時序邏輯簡單,延遲小 缺點: 組合邏輯復雜度高可能存在毛刺問題不易于大規模狀態機的設計 適用場景: 簡單的控制邏輯狀態數量較少的場合對時序要求較…

React+TS前臺項目實戰(二十二)-- 全局常用導出組件Export封裝

文章目錄 前言Export組件1. 功能分析2. 代碼詳細注釋3. 使用方式4. 效果展示 總結 前言 今天我們來封裝一個帶導出圖標的導出組件。 Export組件 1. 功能分析 通過傳入鏈接地址&#xff0c;規定要跳轉的導出頁面&#xff0c;或是直接通過鏈接導出數據 2. 代碼詳細注釋 // /c…

虛擬環境管理

虛擬環境 在使用 Python 時我們一般使用“pip install 第三方包名”來安裝第三方包&#xff0c;但是由于pip的特性&#xff0c;系統只能安裝每個包的一個版本。而在實際開發中&#xff0c;可能同時開發多個項目&#xff0c;如&#xff1a;上圖有三個項目&#xff1b;每個項目需…

django學習入門系列之第三點《BootSrap初了解》

文章目錄 初識BootStrap往期回顧 初識BootStrap BootSrap是什么&#xff1f; 是別人幫我們已寫好的CSS樣式&#xff0c;我們如果想要使用這個BootSrap&#xff1a; 下載BootStrap使用 在頁面上引入BootStrap編寫HTML時&#xff0c;按照BootStrap的規定來編寫 自定制 官網&…

【UE5.1】Chaos物理系統基礎——02 場系統的應用

目錄 步驟 一、運用臨時場&#xff08;外部張力&#xff09;破裂幾何體集 二、使用構造場固定幾何體集 步驟 在上一篇中&#xff08;【UE5.1】Chaos物理系統基礎——01 創建可被破壞的物體&#xff09;我們已經創建了可被破碎的幾何體集&#xff0c;在最后我們防止幾何體集…

微信小程序簡歷Demo

微信小程序簡歷Demo 使用介紹最后獲取源碼 bilibili視頻介紹 使用介紹 使用微信小程序實現的一個簡歷實現Demo 拖動馬里奧&#xff0c;到指定Name下方 向上頂就可以顯示對應的簡歷樣式 點擊頭像可撥打電話 點擊信息處可顯示當前位置 最后 這是一個簡單并且有趣的微信小程…

Renesas MCU使用SCI_I2C驅動OLED

目錄 概述 1 軟硬件 1.1 軟件版本信息 1.2 OLED屏幕 1.2.1 OLED簡介 1.2.2 SSD1306介紹 1.2.3 0.9寸OLED模塊介紹 2 FSP配置項目 2.1 配置項目參數 2.2 生成項目文件架構 3 代碼實現 3.1 I2C的庫函數 3.1.1 R_SCI_I2C_Open() 3.1.2 R_SCI_I2C_Read() 3.1.3 R_SCI_…

谷粒商城篇章10 -- P262-P291/P295-P310 -- 訂單服務(支付)【分布式高級篇七】

目錄 1 頁面環境搭建 1.1 靜態資源上傳到nginx 1.2 SwitchHosts增加配置 1.3 網關配置 1.4 訂單模塊基礎配置 1.4.1 引入 thymeleaf 依賴 1.4.2 application.yml配置 1.4.3 bootstrap.properties配置 1.4.4 開啟nacos注冊發現和遠程調用 1.5 修改各個頁面的靜態資源路…

windows電腦開發ios的p12證書申請流程

很多同學在做ios打包的時候&#xff0c;發現ios打包需要一個p12格式的證書和一個證書profile文件&#xff0c;那么ios開發就一定需要使用mac電腦來申請ios證書嗎&#xff1f;其實申請ios證書并不一定需要mac電腦&#xff0c;因為證書是一個通用的技術&#xff0c;使用普通的ssl…

Perl 語言開發(二):變量與數據類型

目錄 1. 變量的基本概念 1.1 標量變量 1.2 數組變量 1.3 哈希變量 2. 數據類型詳解 2.1 標量數據類型 2.1.1 數字 2.1.2 字符串 2.2 數組數據類型 2.2.1 數組操作 2.3 哈希數據類型 2.3.1 哈希操作 3. 變量的作用域與生存期 3.1 全局變量 3.2 局部變量 3.3 詞法…

JavaScript將參數傳遞給事件處理程序

本篇文件我們將實現導航欄中&#xff0c;選中時候&#xff0c;會將您選中的進行高亮顯示&#xff1b; ● 首先我們來獲取我們想要的HTML元素 const nav document.querySelector(.nav);● 接著我們來寫選中的高亮顯示 nav.addEventListener(mouseover, function (e) { //鼠…

主干網絡篇 | YOLOv5/v7 更換主干網絡之 ShuffleNetv2 | 高效CNN架構設計的實用指南

主干網絡篇 | YOLOv5/v7 更換主干網絡之 ShuffleNetv2 | 高效CNN架構設計的實用指南 1. 簡介 近年來&#xff0c;深度卷積神經網絡&#xff08;CNN&#xff09;在圖像識別、目標檢測等領域取得了巨大進展。然而&#xff0c;隨著模型復雜度的不斷提升&#xff0c;模型訓練和部…

申請一張含100個域名的證書-免費SSL證書

挑戰一下&#xff0c;申請一張包含100個域名的證書 首先&#xff0c;我們訪問來此加密網站&#xff0c;進入登錄頁面&#xff0c;輸入我的賬號密碼。 登錄后&#xff0c;咱們就可以開始申請證書&#xff0c;首先說一下&#xff0c;咱賬號是SVIP哦&#xff0c;只有SVIP才可以申…

記一次EasyExcel的錯誤使用導致的頻繁FullGC

記一次EasyExcel的錯誤使用導致的頻繁FullGC 一、背景描述二、場景復現三、原因分析四、解決方案五、思考復盤 一、背景描述 繁忙的校招結束了&#xff0c;美好的大學四年也結束了&#xff0c;作者也有10個月沒有更新了。拿到心儀的offer之后也開始了苦B的打工生活。 最近接到…

Python海量數據處理腳本大集合:pyWhat

pyWhat&#xff1a;精簡海聯數據&#xff0c;直達數據弱點要害- 精選真開源&#xff0c;釋放新價值。 概覽 pyWhat是Github社區上一款比較實用的開源Python腳本工具。它能夠快速提取信息中的 IP 地址、郵箱、信用卡、數字貨幣錢包地址、YouTube 視頻等內容。當你遇到了一串莫名…

【golang】go mod私有倉庫配置

文章目錄 Golang版本控制go mod使用私有倉庫(gitlab)依賴設置配置代碼托管站點Go mod尋找代碼倉庫原理使用代理實現代碼托管站點訪問 Golang版本控制 go version v1.22.0 當我們新建一個go項目時&#xff0c;在項目根目錄下執行go mod init可以初始化go.mod文件用于管理包依賴。…

Spring Data與多數據源配置

Spring Data與多數據源配置 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們來探討如何在Spring Data中配置和使用多個數據源。 在現代應用程序中&…

計算機相關術語科普之什么叫網關(Gateway)

網關&#xff08;Gateway&#xff09;是一個在計算機網絡中起到關鍵作用的設備或系統&#xff0c;它扮演著網絡間連接器或協議轉換器的角色。 一、定義與功能 1&#xff09;定義&#xff1a; 網關是在不同網絡之間實現互連的復雜設備&#xff0c;僅用于兩個高層協議不同的網…