【PB案例学习笔记】-17制作一个颜色选择框

写在前面

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

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

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

gitee代码仓库

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

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

一、小目标

本次案例我们将制作一个颜色对话框。

运行程序后点击相应按钮会弹出一个颜色选择对话框,通过鼠标选择好颜色之后,单击确定可以修改控件相关颜色。

最终效果如下所示

颜色选择框

通过案例我们需要学会使用comdlg32.dll动态库中的ChooseColorA函数来实现颜色对话框

二、创建程序基本框架

① 新建examplework 工作区

② 新建exampleapp应用

以上步骤忘记怎么操作的小伙伴可以翻一翻该系列文章的第一篇回忆一下

三、创建nvo_choosecolor类用户对象

① 添加Custom Class类用户对象,勾选General选项上的AutoInstatiate复选框

创建类用户对象

勾选AutoInstatiate复选框

② 单击菜单栏上的Insert-->Structure命令,并根据下面表格建立结构os_choosecolor

变量类型变量名称
LongIstructsize
UnsignedlongHwndowner
UnsignedlongHinstance
LongRegresult
LongLpcustcolors
LongFlags
LongLcustdata
LongLpfnhook
LongLptemplatename

建立结构

③ 在类用户对象Declare Instance Variables选项卡中定义如下实例变量

Private:
os_ChooseColor  istr_ChooseColor  
long il_CustomInitColors[16]
blob{64} ibl_CustomColors

添加实例变量

④ 添加外部动态库引用

Declare Local External Functions 选项卡中添加如下函数定义

 function boolean ChooseColorA( REF os_ChooseColor lpcc ) library "comdlg32.dll"

添加外部动态库函数定义

⑤ 添加of_choosecolor(ref long al_rgbreslut) return boolean 函数

// 定义一个布尔型变量lb_ok用于存储选择颜色对话框的返回结果
boolean lb_ok// 将istr_ChooseColor结构体中的rgbresult字段赋值给al_rgbresult
istr_ChooseColor.rgbresult = al_rgbresult// 调用ChooseColorA函数打开颜色选择对话框,istr_choosecolor为传入的参数
lb_ok = ChooseColorA(istr_choosecolor)// 将用户选择的颜色存储到al_rgbresult中
al_rgbresult = istr_ChooseColor.rgbresult// 返回选择颜色对话框的结果
return lb_ok

⑥ 将类用户对象保存为nvo_choosecolor

保存类用户对象

四、新建w_main窗口

① 新建w_main窗口

将窗口Title设置为通过颜色对话框设置颜色

② 创建控件

w_main窗口中增加3个CommandButton按钮控件、1个SingleLineEdit 1个StaticText

  • cb_1,设置其Text值为:设置窗口背景颜色

  • cb_2,设置其Text值为:设置输入框背景颜色

  • cb_3,设置其Text值为:设置输入框内文字颜色

  • cb_4,设置其Text值为:设置静态文本字体颜色

  • sle_1,设置其Text值为:个人博客:www.xiezhrspace.cn

  • st_1,设置其Text值为:公众号:XiezhrSpace

控件布局

③ 保存窗口为w_main

五、编写事件代码

① 在按钮cb_1Clicked事件中添加如下代码

nvo_choosecolor  luo_choosecolor
long ll_color
boolean lb_rcIF luo_choosecolor.of_choosecolor(ll_color) THENparent.BackColor = ll_color
ELSEmessagebox("提示","取消操作")
END IF

② 在按钮cb_2Clicked事件中添加如下代码

nvo_choosecolor  luo_choosecolor
long ll_color
boolean lb_rcIF luo_choosecolor.of_choosecolor(ll_color) THENparent.sle_1.backcolor = ll_color
ELSEmessagebox("提示","取消操作")
END IF

③ 在按钮cb_3Clicked事件中添加如下代码

nvo_choosecolor  luo_choosecolor
long ll_color
boolean lb_rcIF luo_choosecolor.of_choosecolor(ll_color) THENparent.sle_1.textcolor = ll_colorELSEmessagebox("提示","取消操作")
END IF

④在按钮cb_4Clicked事件中添加如下代码

nvo_choosecolor  luo_choosecolor
long ll_color
boolean lb_rcIF luo_choosecolor.of_choosecolor(ll_color) THENparent.st_1.textcolor = ll_color
ELSEmessagebox("提示","取消操作")
END IF

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

open(w_main)

六、运行程序

上面代码都敲完之后,我们来检验下我们的劳动成果

颜色选择框

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

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

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

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

相关文章

解决找不到api-ms-win-crt-runtime-l1-1-0.dll问题的5种方法

电脑已经成为我们生活和工作中不可或缺的工具,然而,由于各种原因,我们可能会遇到一些常见的问题,其中之一就是电脑缺失api-ms-win-crt-runtime-l1-1-0.dll文件。这个问题可能会导致电脑出现错误提示、程序无法正常运行等困扰。为了…

easyexcel模板填充列表

引入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version></dependency>编写模板 编写代码 public class FillData {private String name;private Double number;pu…

python数据分析——模型诊断

参考资料&#xff1a;活用pandas库 创建模型是持续性活动。当向模型中添加或删除变量时&#xff0c;需要设法比较模型&#xff0c;并需要统一的方法衡量模型的性能。 1、残差 模型的残差指实际观测值与模型估计值之差。 # 导入pandas库 import pandas as pd # 读取数据集 hou…

[next.js]pwa缓存

配置Next.js (v14 App Router模式) 使其支持PWA缓存&#xff0c;配置server worker和mainfest.json&#xff0c;让项目支持离线访问和可安装。 安装依赖next-pwa npm i next-pwa配置next.config.js const path require(path);const withPWAInit require(next-pwa);// 判断…

Nodejs 第七十四章(微服务)

什么是微服务&#xff1f; micro servers 微服务和微前端是类似的&#xff0c;微前端就是借鉴了微服务的理念去实现的&#xff0c;那么微服务指的就是&#xff0c;将应用程序拆分成为一系列小型、独立的服务&#xff0c;每个服务都是专注于执行特定的业务&#xff0c;比如文章…

微软云计算[3]之Windows Azure AppFabric

Windows Azure AppFabric AppFabric概述AppFabric关键技术服务总线访问控制高速缓存 AppFabric概述 AppFabric为本地应用和云中应用提供了分布式的基础架构服务 用户本地应用与云应用之间进行安全联接和信息传递 云应用和现有应用或服务之间的连接及跨语言、跨平台、跨不同标…

13- Redis 中的 压缩列表 数据结构

压缩列表的最大特点&#xff0c;就是它被设计成一种内存紧凑型的数据结构&#xff0c;占用 一块连续的内存空间&#xff0c;不仅可以利用 CPU 缓存&#xff0c;而且会针对不同长度的数据&#xff0c;进行相应编码&#xff0c;这种方法可以有效的节省内存开销。 但是&#xff0…

C#开源实用的工具类库,集成超过1000多种扩展方法

前言 今天大姚给大家分享一个C#开源&#xff08;MIT License&#xff09;、免费、实用且强大的工具类库&#xff0c;集成超过1000多种扩展方法增强 .NET Framework 和 .NET Core的使用效率&#xff1a;Z.ExtensionMethods。 直接项目引入类库使用 在你的对应项目中NuGet包管…

【办公类-04-02】华为助手导出照片读取拍摄时间分类导出,视频不行)

背景需求 今天我用QQ相册导出照片&#xff0c;但是始终在转圈&#xff0c;手机上无法跳出“连结“”的提示&#xff0c;换了台式和笔记本都无法传输。&#xff08;明明5月14日还可以导出的&#xff09; 最后我只能用华为传输助手&#xff0c;把照片快速提取出来了。 使用原来…

模式识别涉及的常用算法

一、线性回归 1.算法执行流程&#xff1a; 算法的执行流程可以简述如下&#xff1a; 导入必要的库&#xff1a; 导入NumPy库&#xff0c;用于数值计算。导入Matplotlib库&#xff0c;用于数据可视化。导入Pandas库&#xff0c;用于数据处理&#xff08;尽管在这个例子中&#…

C语言基础学习之位运算

枚举类型 enum 枚举名 { 枚举常量 //名字 }; 注意: 1.c语言中 对于枚举类型 实际上是 当作整型处理的 2.提高代码可读性&#xff0c; 写成枚举&#xff0c;可以做语法检查 3.枚举常量&#xff0c;之间用逗号隔开 4.枚举常量&#xff0c;可以给初值&#xff0c;给了初值之后&…

Renesas MCU之SCI_SPI接口驱动LCD

目录 概述 1 软硬件介绍 1.1 软件版本信息 1.2 ST7796-LCD 1.3 MCU IO与LCD PIN对应关系 2 FSP配置项目 2.1 配置项目参数 2.2 生成项目框架 3 代码实现 3.1 SPI的库函数 3.1.1 R_SCI_SPI_Open() 3.1.2 R_SCI_SPI_Read() 3.1.3 R_SCI_SPI_Write() 3.2 应用函数…

CSS函数:scale、scale3d函数的使用

CSS函数scale()主要是为了实现元素的放大和缩小效果&#xff0c;使用的是元素的变换效果。使用的是元素的转换属性&#xff1a;transform的&#xff0c;该函数可以实现指定X轴和Y轴的放大、缩小效果。除此之外&#xff0c;我们还可以通过如下两种方式实现指定方向的转换&#x…

优化你的WordPress网站:内链建设与Link Whisper Pro插件的利用

文章目录 内链的重要性WordPress SEO插件&#xff1a;Link Whisper Pro主要功能使用指南下载与安装 结语 在数字营销和网站管理领域&#xff0c;SEO内部优化是提升网站排名、增加流量和提高用户参与度的核心策略。在众多SEO技巧中&#xff0c;内链建设是构建良好网站结构和提升…

SpringBoot定时任务+Quartz 动态调度

1、分部解释 2、完整代码 3、SpringBoot定时任务Quartz 1、动态定时任务&#xff1a; 动态定时任务&#xff0c;即定时任务的动态调度&#xff0c;可根据需求自由的进行任务的生成、暂停、恢复、删除和更新操作。Quartz本身没有提供动态调度的功能,需要自己根据相关的API开发。…

PostgreSQL专家(pcp51)--王丁丁

#PostgreSQL培训 #postgresql认证 #postgreSQL考试 #PG考试 #PG培训

【Linux】Linux工具——gdb

1. gdb 概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许&#xff0c;各位比较喜欢那种图形界面方式的&#xff0c;像VC、BCB等IDE的调试&#xff0c;但如果你是在 UNIX平台下做软件&#xff0c;你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能…

记忆化搜索汇总

记忆化搜索简介 记忆化搜索&#xff08;Memoization Search&#xff09;&#xff1a;是一种通过存储已经遍历过的状态信息&#xff0c;从而避免对同一状态重复遍历的搜索算法。 记忆化搜索是动态规划的一种实现方式。在记忆化搜索中&#xff0c;当算法需要计算某个子问题的结果…

面试题------>MySQL!!!

一、连接查询 ①&#xff1a;左连接left join &#xff08;小表在左&#xff0c;大表在右&#xff09; ②&#xff1a;右连接right join&#xff08;小表在右&#xff0c;大表在左&#xff09; 二、聚合函数 SQL 中提供的聚合函数可以用来统计、求和、求最值等等 COUNT&…

Docker配置 之 本地仓库web访问

介绍 Docker是一种开源的应用容器引擎。 Docker可以让开发者打包应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何安装了Docker引擎的服务器上&#xff08;包括Linux机器、Windows机器&#xff09;&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#…