【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.mzph.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;仅用于两个高层协议不同的网…