【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_rc

IF luo_choosecolor.of_choosecolor(ll_color) THEN
	parent.BackColor = ll_color
ELSE
	messagebox("提示","取消操作")
END IF

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

nvo_choosecolor  luo_choosecolor
long ll_color
boolean lb_rc

IF luo_choosecolor.of_choosecolor(ll_color) THEN
	parent.sle_1.backcolor = ll_color
ELSE
	messagebox("提示","取消操作")
END IF

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

nvo_choosecolor  luo_choosecolor
long ll_color
boolean lb_rc

IF luo_choosecolor.of_choosecolor(ll_color) THEN
	parent.sle_1.textcolor = ll_color

ELSE
	messagebox("提示","取消操作")
END IF

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

nvo_choosecolor  luo_choosecolor
long ll_color
boolean lb_rc

IF luo_choosecolor.of_choosecolor(ll_color) THEN
	parent.st_1.textcolor = ll_color
ELSE
	messagebox("提示","取消操作")
END IF

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

open(w_main)

六、运行程序

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

颜色选择框

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员晓凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值