【PB案例学习笔记】-30动态打开窗口

写在前面

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

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

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

gitee代码仓库

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

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

一、小目标

通过本案例我们将学会动态创建窗口,并根据不同的排列方式排列窗口。这在日常开发中也是经常遇到的需求,

我们需要根据不同条件,动态的创建窗口。最终效果如下所示

动态打开窗口

二、实现思路

我们通过OpenSheet()函数打开新建的窗口,使用ArrangeSheet()函数来布局窗口的排列方式。

① OpenSheet函数

opensheet(sheetrefvar[, windowtype][, mdiframe][, position][, arrangeopen])
  • sheetrefvar: 这个参数是用来接收窗口句柄的变量,通常是一个与窗口类型匹配的变量。
  • windowtype: 可选参数,定义窗口的类型,如PBWT_NORMAL表示标准窗口。
  • mdiframe: 可选参数,如果是在MDI环境下,这个参数指定MDI框架窗口的名称。
  • position: 可选参数,指定窗口的位置。
  • arrangeopen: 可选参数,如果设置为TRUE,则在打开新窗口时会重新排列所有打开的窗口。

② ArrangeSheet 函数

arrangesheet([arrangement][, zorder])
  • arrangement
    可选参数,指定窗口的排列方式。可以是以下常量之一:
    • PBAR_NONE:不重新排列窗口(默认)。
    • PBAR_TILED:平铺显示所有窗口。
    • PBAR_CASCADE:层叠显示所有窗口。
    • PBAR_ICONS:将所有窗口最小化为图标。
  • zorder: 可选参数,如果设置为TRUE,则按Z顺序(即最后激活的窗口位于最上面)重新排列窗口;如果设置为FALSE,则忽略Z顺序。

三、创建程序基本框架

① 新建examplework工作区

② 新建exampleapp应用

③ 新建w_main窗口,将窗口设置成主窗口

④ 新建w_child窗口

⑤ 新建m_menu菜单,结构如下所示

菜单布局

⑥ 将w_main窗口的菜单设置位m_main

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

四、编写事件代码

① 在w_main窗口中定义实例变量

long ilnum

② 在w_main窗口中新建ue_new() returns(none)事件,代码如下

w_child lw
OpenSheet(lw,w_main, 2, Original!)
ilnum = ilnum + 1
lw.title = "第" + string(ilnum) + "个窗口"

③ 在w_main窗口中新建ue_close()returns(long)事件,代码如下

window	lw_sheetlw_sheet = this.GetActiveSheet ( )If IsValid ( lw_sheet ) Then Return Close ( lw_sheet )
ElseReturn -1
End If

④ 在m_main菜单的“新建”命令的Clicked事件中添加如下代码

w_main.triggerevent("ue_new")

⑤ 在m_main菜单的“关闭”命令的Clicked事件中添加如下代码

w_main.triggerevent("ue_close")

⑥ 在m_main菜单的“水平”命令的Clicked事件中添加如下代码

w_main.ArrangeSheets ( Tile! )

⑦ 在m_main菜单的“垂直”命令的Clicked事件中添加如下代码

w_main.ArrangeSheets ( TileHorizontal! )

⑧ 在m_main菜单的“平铺”命令的Clicked事件中添加如下代码

w_main.ArrangeSheets ( Layer! )

⑨在m_main菜单的“层叠”命令的Clicked事件中添加如下代码

w_main.ArrangeSheets ( Cascade! )

⑩ 在开发界面左边的System Tree窗口中双击exampleapp应用对象,并在其Open事件中添加如下代码

open(w_main)

五、运行程序

一波代码敲完之后,我们开检验下劳动成果

动态打开窗口

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

数电基础 - 数制,码制

目录 一. 简介 数制 码制 二. 进制 十进制(Decimal): 二进制(Binary): 八进制(Octal): 十六进制(Hexadecimal): 三. 进制的转…

Go语言---正则表达式

正则表达式是一种进行模式匹配和文本操纵的复杂而又强大的工具。虽然正则表达式比纯粹的文本匹配效率低,但是它却更灵活。按照它的语法规则,只需构造出的匹配模式就能够从原始文本中筛选出几乎任何你想要得到的字符组合。go语言的通过regexp标准包来实现…

外卖商城平台小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,商家管理,骑手管理,商品类型管理,商品信息管理,订单信息管理 微信端账号功能包括:系统首页,商品信息&#…

理解负载组电路-EAK负载电路解释

负载组具有安全、可靠、操作方便、使用寿命长等特点。了解控制、冷却和负载元件电路的布局和功能对于理解负载组的运行、为应用选择负载组和维护负载组非常重要。以下各节将描述这些电路。 EAK负荷组运行概述 负载组接收来自电源的电力,将其转换为热量,…

Spring Cloud Alibaba -- 分布式定时任务解决方案(轻量级、快速构建)(ShedLock 、@SchedulerLock )

文章目录 一、 ShedLock简介二、 SchedulerLock三、基于Mysql方式使用步骤1.建表2.引入依赖3.Mysql连接配置4.ScheduledLock配置5.启动类配置6.创建定时任务7.启动多个项目服务进行测试8.SchedulerLock注解说明 四、使用注意事项 一、 ShedLock简介 ShedLock 是一个用于 Java …

58、基于径向基神经网络的曲线拟合(matlab)

1、基于径向基神经网络的曲线拟合简介及原理 1)原理简介 基于径向基神经网络(Radial Basis Function Neural Network, RBFNN)的曲线拟合是一种常用的非线性拟合方法,通过在输入空间中使用径向基函数对数据进行处理,实…

【机器学习】使用决策树分类器预测汽车安全性的研究与分析

文章目录 一、决策树算法简介决策树的结构分类和回归树 (CART)决策树算法术语决策树算法直觉 二、属性选择度量信息增益熵 基尼指数计算分割基尼指数的步骤 三、决策树算法中的过度拟合避免过度拟合的方法 四、导入库和数据可视化探索性数据分析重命名列名查看数据集的总结信息…

仪表板展示|DataEase看中国:2023年中国新能源汽车经济运行情况分析

背景介绍 随着政府机构、企业和个人对环保和可持续发展的高度关注,“新能源汽车”在全球范围内成为了一个热门话题。新能源汽车是指使用非传统燃料(如电能、氢能等)作为动力源的汽车。 在中国市场,新能源汽车产业蓬勃发展&#…

Python29 Tensorflow的基本知识和使用

1. TensorFlow TensorFlow 是一个开源的机器学习框架,由 Google Brain 团队开发。它用于数据流图的计算,尤其擅长深度学习任务。在 TensorFlow 中,数据流图(Data Flow Graph)是其核心概念之一,它定义了计算…

【QT】QComboBox允许输入查询,且不区分大小写

目录 0.简介 1.环境 2.详细代码 3.参考 0.简介 项目需求,原本有一个下拉框,但是条目太多,不好搜索,所以用户要求可以输入查找 修改前 : 修改后: 1.环境 windows11 vs-code qt5.12 2.详细代码 QComboB…

北斗防爆手持终端在化工厂的安全性能分析

北斗防爆手持终端在化工厂中的应用显著提升了安全性能,其卓越的防爆设计、高精度定位与监控功能、实时通信能力以及多功能集成特性,共同构筑了化工厂安全生产的坚实防线,确保了巡检人员与设备在复杂环境下的安全作业与高效管理。 北斗防爆手持…

触摸屏虚拟键盘组件 jQuery Virtual Keyboard使用 自定义键盘

如何在触摸设备上为输入域添加虚拟键盘? 一个插件可以解决这个问题,关键还支持高度自定义(git地址): GitHub - Mottie/Keyboard: Virtual Keyboard using jQuery ~ 官网地址:Virtual Keyboard 使用步骤&…

免费下载工具 -- Free Download Manager(FDM) v6.24.0.5818

软件简介 Free Download Manager (FDM) 是一款免费的功能强大的下载管理软件,适用于多种操作系统,包括 Windows、macOS、Android 和 Linux。这款软件的特色在于它快速、安全且高效的下载能力。它可以下载各种热门网站的影片,支持 HTTP/HTTP…

人工智能算法工程师(中级)课程1-Opencv视觉处理之基本操作与代码详解

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程1-Opencv视觉处理之基本操作与代码详解。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它提供了各种视觉处理函数&am…

电脑虚拟摄像头怎么使用?电脑摄像头可以被虚拟摄像头替代吗?8款推荐!

在数字化日益普及的今天,视频通话和在线会议已成为我们生活和工作中不可或缺的一部分。然而,当我们的电脑没有配备摄像头,或摄像头出现故障时,我们可能会面临一些不便。这时,电脑虚拟摄像头便成为了一个实用的解决方案…

摸鱼大数据——Spark SQL——Spark on Hive部署

1、集成原理 HiveServer2的主要作用: 接收SQL语句,进行语法检查;解析SQL语句;优化;将SQL转变成MapReduce程序,提交到Yarn集群上运行​SparkSQL与Hive集成,实际上是替换掉HiveServer2。是SparkSQL中的HiveSe…

《AIGC:智能创作时代》:AI创作革命来临,你准备好了吗?

想象一下,你正在欣赏一幅精美的画作,惊叹于其细腻的笔触和独特的构图。然而,当你得知这幅作品是由人工智能创作时,你会作何感想?这不再是科幻小说中的场景,而是我们正在经历的现实。 在这个AI技术飞速发展的…

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

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

Elasticsearch基础(四):Elasticsearch语法与案例介绍

文章目录 Elasticsearch语法与案例介绍 一、Restful API 二、查询语法 1、ES分词器 2、ES查询 2.1、match 2.2、match_phrase 2.3、multi_match 2.4、term 2.5、terms 2.6、fuzzy 2.7、range 2.8、bool Elasticsearch语法与案例介绍 一、Restful API Elastics…

上海亚商投顾:沪指大涨超1% 两市成交额重回7000亿

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 三大指数昨日放量反弹,午后集体涨超1%,深成指一度涨逾2%。消费电子板块全线爆发。 板…