【PB案例学习笔记】-31制作一个动态设置菜单的程序

写在前面

这是PB案例学习笔记系列文章的第31篇,该系列文章适合具有一定PB基础的读者。

通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。

文章中设计到的源码,小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.git

gitee代码仓库

需要源代码的小伙伴们可以自行下载查看,后续文章涉及到的案例代码也都会提交到这个仓库【pb-project-example

如果对小伙伴有所帮助,希望能给一个小星星⭐支持一下小凡。

一、小目标

本案例我们将制作一个根据用户选择动态设置菜单的程序。用户通过选择“恢复”、“无效”、“去除” 来改变对应菜单项。

最终实现效果如下所示

动态设置菜单

二、创作思路

我们通过单选按钮、复选框来选择,再通过相应的设置菜单项的EnableVisible两种属性来动态设置菜单栏

① 单选框

当单选按钮处于选中状态时,单选按钮中出现一个黑色圆点,未选中时,小圆圈中没有其它图案。

当我们使用组框控件对单选按钮分组时,同一组中的单选按钮只有一个会处于选中状态,其它全部处于非选中状态

② 复选框

当复选框被选中时,复选框上显示选中符号(打勾符号)

当未选中复选框时,复选框上不显示选中符号

三、创建程序基本框架

① 新建examplework工作区

② 新建exampleapp应用

③ 新建w_main窗口,将其Title属性设置为“设置菜单”

由于文章篇幅原因,上述步骤不再赘述,如果忘记了的小伙伴可以翻一翻之前的文章复习一下

④ 新建m_main菜单对象,如下图所示

新建m_main菜单

⑤ 控件布局

w_main窗口上添加2个GroupBox控件、3个RadioButton控件、6个CheckBox控件和1个CommonButton控件。

调整各个控件的大小与位置,如下图所示

控件布局

四、编写事件代码

① 在cbx_file控件(文件)的Clicked事件中添加如下代码

If not this.checked thencbx_open.checked = falsecbx_close.checked = falsecbx_save.checked = false
end if

② 在cb_1按钮(更新菜单)的clicked事件中添加如下代码

if rb_1.checked thenm_main.m_file.Enabled = Truem_main.m_file.Visible = Truem_main.m_file.m_open.Enabled = Truem_main.m_file.m_open.Visible = Truem_main.m_file.m_close.Enabled = Truem_main.m_file.m_close.Visible = Truem_main.m_file.m_save.Enabled = Truem_main.m_file.m_save.Visible = Truem_main.m_edit.Enabled = Truem_main.m_edit.Visible = Truem_main.m_tool.Enabled = Truem_main.m_tool.Visible = True
end if if rb_2.checked thenm_main.m_file.Visible = Truem_main.m_edit.Visible = Truem_main.m_tool.Visible = Trueif cbx_file.checked thenm_main.m_file.enabled = falsem_main.m_file.m_open.Visible = Truem_main.m_file.m_close.Visible = Truem_main.m_file.m_save.Visible = Trueif cbx_open.checked then m_main.m_file.m_open.Enabled = falseelsem_main.m_file.m_open.Enabled = trueend if if cbx_close.checked thenm_main.m_file.m_close.Enabled = Falseelsem_main.m_file.m_close.Enabled = Trueend ifif cbx_save.checked thenm_main.m_file.m_save.Enabled = Falseelsem_main.m_file.m_save.Enabled = trueend ifelsem_main.m_file.Enabled = trueend ifif cbx_edit.checked thenm_main.m_edit.Enabled = falseelsem_main.m_edit.Enabled = trueend ifif cbx_tool.checked thenm_main.m_tool.Enabled = falseelsem_main.m_tool.Enabled = trueend if
end ifif rb_3.checked thenm_main.m_file.Enabled = Truem_main.m_edit.Enabled = Truem_main.m_tool.Enabled = Trueif cbx_file.checked thenm_main.m_file.Visible = falsem_main.m_file.m_open.Enabled = falsem_main.m_file.m_close.Enabled = falsem_main.m_file.m_save.Enabled = falseif cbx_open.checked then m_main.m_file.m_open.Visible = falseelsem_main.m_file.m_open.Visible = trueend if if cbx_close.checked thenm_main.m_file.m_close.Visible = Falseelsem_main.m_file.m_close.Visible = Trueend ifif cbx_save.checked thenm_main.m_file.m_save.Visible = Falseelsem_main.m_file.m_save.Visible = trueend ifelsem_main.m_file.Visible = trueend ifif cbx_edit.checked thenm_main.m_edit.Visible = Falseelsem_main.m_edit.Visible = Trueend ifif cbx_tool.checked thenm_main.m_tool.Visible = Falseelsem_main.m_tool.Visible = trueend if
end if

③ 在开发界面左边的SystemTree窗口中,双击exampleapp应用对象,在其Open事件中输入如下代码

open(w_main)

五、运行程序

经过一波代码编写后,来看看我们的劳动成果是否达到预期

动态设置菜单

本期内容就到这儿★,°:.☆( ̄▽ ̄)/$:.°★ 。 希望对您有所帮助

我们下期再见 ヾ(•ω•`)o (●’◡’●)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/44646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识C++语言(1)

目录 C语言简介 C 语言概述 C 语言的特点 语言简洁紧凑,使用灵活方便 运算符丰富 数据结构丰富 结构化语言 生成的代码质量高 可移植性强 C程序结构 C语言系统的使用 一.启动Dev-C 二、新建源程序 三…

星辰计划02-独特视角的spring动态代理

承接上一文 动态代理 ,这里探究spring 动态代理 会话1:spring动态代理 quick start 👧哥哥,哥哥,spring 怎么去搞动态代理的呢👨 来来来,听我细细来说 quick start通过Spring的 ProxyFactory…

LoRaWAN网络协议Class A/Class B/Class C三种工作模式说明

LoRaWAN是一种专为广域物联网设计的低功耗广域网络协议。它特别适用于物联网(IoT)设备,可以在低数据速率下进行长距离通信。LoRaWAN 网络由多个组成部分构成,其中包括节点(终端设备)、网关和网络服务器。Lo…

Unity到底有无collider可视化,方便调试子弹,ACT,做Demo等

参照日本程序员的代码,改了一些,算是支持MeshCollider 好像确实就是日本《博客》比较多这类,可视化的调试资料 UnityでデバッグをするときColliderを可視化したいことってありますよね。 コライダーを見える化するには Physics Debuggerを使う可視化スクリプトを使うの2通り…

AWS 云安全性:检测 SSH 暴力攻击

由于开源、低成本、可靠性和灵活性等优势,云基础设施主要由基于linux的机器主导,然而,它们也不能幸免于黑客的攻击,从而影响云的安全性。攻击Linux机器最流行的方法之一是通过SSH通道。 什么是 SSH 安全外壳协议(Sec…

使用来此加密申请多域名SSL证书

在数字化时代的浪潮中,网站的安全性已成为企业和个人不可或缺的一部分。特别是在数据传输和用户隐私保护方面,SSL证书的作用愈发显著。 申请多域名SSL证书步骤 1、登录来此加密网站,输入域名,可以勾选泛域名和包含根域。 2、选择…

低代码平台赋能企业全面数字化转型

引言:在当今这个日新月异的数字化时代,企业正面临着前所未有的机遇与挑战。为了保持竞争力并实现可持续发展,企业亟需进行全面的数字化转型。而低代码平台作为数字化转型的重要工具,正以其独特的优势赋能企业,推动其向…

Apache Flink 运行时架构

Flink 运行时架构 Flink整个系统由两个主要部分组成JobManager和TaskManager,Flink架构也遵循Master-Slave架构设计原则,JobManager为Master节点,TaskManager为worker(Slave)节点,所有组件之间通讯都是借助…

IDEA插件更新:配置选项更丰富、支持环境、全局参数的创建和维护

Apipost-Helper-2.0 IDEA插件,因快速扫描代码、基于注解提取信息、支持直接调试及生成API文档等功能受到众多用户的认可,是目前市面上一款真正高效便捷生成接口文档的利器。本月初,Apipost IDEA插件又迎来重大优化,在应用市场搜索…

如何降低pdf内存,如何降低pdf內存大小,如何降低pdf内存占用

在现代办公环境中,pdf文件已经成为了一种不可或缺的文档格式。然而,pdf内存太大文件常常给我们的工作带来困扰,本文将为你揭秘几种简单有效的方法,帮助你轻松降低 pdf 内存,提高工作效率。 方法一、安装pdf转换软件 打…

(Windows环境)FFMPEG编译,包含编译x264以及x265

本文使用 MSYS2 来编译 ffmpeg 一、安装MSYS2 MSYS2 是 Windows 下的一组编译套件,它可以在 Windows 系统中模拟 Linux 下的编译环境,如使用 shell 运行命令、使用 pacman 安装软件包、使用 gcc (MinGW) 编译代码等。 MSYS2 的安装也非常省心&#x…

C语言 | Leetcode C语言题解之第227题基本计算题II

题目&#xff1a; 题解&#xff1a; int calculate(char* s) {int n strlen(s);int stk[n], top 0;char preSign ;int num 0;for (int i 0; i < n; i) {if (isdigit(s[i])) {num num * 10 (int)(s[i] - 0);}if (!isdigit(s[i]) && s[i] ! || i n - 1) {s…

禁止使用存储过程

优质博文&#xff1a;IT-BLOG-CN 灵感来源 什么是存储过程 存储过程Stored Procedure是指为了完成特定功能的SQL语句集&#xff0c;经编译后存储在数据库中&#xff0c;用户可通过指定存储过程的名字并给定参数&#xff08;如果该存储过程带有参数&#xff09;来调用执行。 …

pnpm workspace使用教程【Monorepo项目】

目录 前言一、pnpm简介特点&#xff1a;对比 二、 创建项目添加文件 pnpm-workspace.yaml目录结构pnpm workspace: 协议修改配置文件执行 安装 三、命令解析执行包命令所有包操作命令 四、实例代码 前言 前面两篇&#xff0c;我们讲了 yarn workspace 和 lerna &#xff0c; …

防火墙(ensp USG6000v)---安全策略 + 用户认证综合实验

一. 题目 1&#xff09; 拓扑 2&#xff09;要求 1. DMZ区内的服务器&#xff0c;办公区仅能在办公时间内(9:00 -- 18: 00)可以访问&#xff0c;生产区的设备全天可以访问 2.生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网 3.办公区设备10.0.2.10不充许…

桥联亲和素-标记生物素法(BRAB)

桥联亲和素-标记生物素法&#xff08;BRAB&#xff09;是一种基于生物素与亲和素&#xff08;或链霉亲和素&#xff09;之间高亲和力特性的生物医学检测方法。以下是关于BRAB法的详细解释&#xff1a; 一、定义与原理 BRAB法&#xff0c;也称为桥联亲和素-标记生物素法&#xf…

【测试开发】--安全渗透测试

1. 安全渗透 1.1 分类 web数据库安全web应用服务器安全&#xff08;文件上传漏洞、文件包含漏洞&#xff09;web客户端安全&#xff08;XSS跨站攻击&#xff09; 2. sql注入 2.1 sql注入介绍 sql注入在安全问题中排行榜首sql注入攻击是输入参数未经过滤&#xff0c;然后直…

vscode c++可以找到声明却无法自动补全

这个问题折磨了我将近一个月&#xff0c;今天终于被解决了&#xff0c;特此记录 情景再现 事情的起因是我在学习华为的Ascend C算子&#xff0c;需要编写C代码。关于怎么下载库文件怎么编译之类的不是本文的重点&#xff0c;重点是自动补全。 我已经拿到库文件了&#xff0c…

机器学习笔记之监督学习

基本概念 用于训练模型的数据集称为&#xff1a;训练集 成本函数/代价函数&#xff1a;指示模型的运行情况&#xff0c;用于衡量训练数据与该直线的拟合程度。将预测值和目标值做差&#xff0c;该差值也被称为“损失值”。 例如我们需要计算平均的平方误差来衡量 成本函数/…

uniapp适配解决方法

uni-app的专属强大自适应单位upx&#xff0c;rpx&#xff0c;不能动态赋值解决办法… uni-app 使用 upx 作为默认尺寸单位&#xff0c; upx 是相对于基准宽度的单位&#xff0c;可以根据屏幕宽度进行自适应。uni-app 规定屏幕基准宽度750upx。 开发者可以通过设计稿基准宽度计…