嘘~ 小破站正在拼命加载中 . . .

【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

变量类型 变量名称
Long Istructsize
Unsignedlong Hwndowner
Unsignedlong Hinstance
Long Regresult
Long Lpcustcolors
Long Flags
Long Lcustdata
Long Lpfnhook
Long Lptemplatename

建立结构`os_choosecolor`

③ 在类用户对象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 (●’◡’●)


文章作者: xiezhr
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xiezhr !
评论
  目录