写在前面
这是PB案例学习笔记系列文章的第31篇,该系列文章适合具有一定PB基础的读者。
通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。
文章中设计到的源码,小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.git
需要源代码的小伙伴们可以自行下载查看,后续文章涉及到的案例代码也都会提交到这个仓库【pb-project-example】
如果对小伙伴有所帮助,希望能给一个小星星⭐支持一下小凡。
一、小目标
本案例我们将制作一个根据用户选择动态设置菜单的程序。用户通过选择“恢复”、“无效”、“去除” 来改变对应菜单项。
最终实现效果如下所示
二、创作思路
我们通过单选按钮、复选框来选择,再通过相应的设置菜单项的Enable
和Visible
两种属性来动态设置菜单栏
① 单选框
当单选按钮处于选中状态时,单选按钮中出现一个黑色圆点,未选中时,小圆圈中没有其它图案。
当我们使用组框控件对单选按钮分组时,同一组中的单选按钮只有一个会处于选中状态,其它全部处于非选中状态
② 复选框
当复选框被选中时,复选框上显示选中符号(打勾符号)
当未选中复选框时,复选框上不显示选中符号
三、创建程序基本框架
① 新建examplework
工作区
② 新建exampleapp
应用
③ 新建w_main
窗口,将其Title
属性设置为“设置菜单”
由于文章篇幅原因,上述步骤不再赘述,如果忘记了的小伙伴可以翻一翻之前的文章复习一下
④ 新建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 (●’◡’●)