【PB案例学习笔记】-18制作一个IP地址编辑框

大家好,我是晓凡

写在前面

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

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

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

gitee代码仓库

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

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

一、小目标

在许多应用程序中,经常需要用户输入网络中某个节点的IP地址,而且IP地址需要符合一定的格式。

在本案例中我们将创建一个IP编辑框来提供用户输入,并且在控件失去焦点时校验用户输入的是否合法,如果不合法给出错误提示。

在程序中会用到几个新知识点①LoseFous 事件 ② 可视化对象创建

最终实现如下效果

IP地址编辑器

二、思路分析

由于IP地址每个数字应该在 0~255 之间,一个框输入完之后,我们按Enter键光标会跳到下一个输入框。这是输入框控件的

LoseFous事件会被触发,我们只需将数字校验写在该事件中即可

三、创建程序基本框架

有个基本思路之后,我们就可以动手写程序了

① 新建examplework工作区

② 新建exampleapp 应用

③ 新建w_main窗口,Title设置为IP地址

由于篇幅原因,以上步骤就不在重复写了。如果忘记了的小伙伴可以翻一翻该系列的第一篇文章

四、创建定制可视化用户对象

① 新建定制可视化用户对象

单击菜单栏上的File-->New命令,在New对话框的PB Object选项卡中选择Custom Visual图标,

单击OK按钮,完成可视化用户对象创建

窗口可视化用户对象

② 在用户对象中添加控件

在新建的用户对象中添加4个StaticText控件和4个SingleLineEdit控件,控件分别命名为st_1 ~st_3sle_1 ~sle_4.

st_1 ~st_3控件的Text值设置为"."。

具体如下图所示

控件布局

③ 保存对象为uo_ipaddressedit

五、编写代码

① 在uo_ipaddressedit 对象中添加of_checkpart(string part) return integer函数

校验输入值是否符合规范,代码如下

integer ret
setnull(ret)
if isnull(part) then return ret
if not isnumber(part) then return -1
if integer(part) < 0 then return -1
if integer(part) > 255 then return -1
return 1

② 在uo_ipaddressedit 对象中添加of_getipaddress() return string 函数,具体代码如下

if of_checkpart(sle_1.text) = -1 then return ""
if of_checkpart(sle_2.text) = -1 then return ""
if of_checkpart(sle_3.text) = -1 then return ""
if of_checkpart(sle_4.text) = -1 then return ""
string ls_ip
ls_ip = sle_1.text
ls_ip = ls_ip + "." + sle_2.text
ls_ip = ls_ip + "." + sle_3.text
ls_ip = ls_ip + "." + sle_4.text
return ls_ip

③ 在在uo_ipaddressedit 对象中添加erroinput事件,代码为空

添加erroinput事件

④ 在sle_1控件的LoseFocus 事件中添加如下代码

if of_checkpart(sle_1.text)= -1 then
	sle_1.setfocus()
	event erroinput(1)
end if
return 0

⑤ 在sle_2控件的LoseFocus 事件中添加如下代码

if of_checkpart(sle_2.text)= -1 then
	sle_2.setfocus()
	event erroinput(2)
end if
return 0

⑥ 在sle_3控件的LoseFocus 事件中添加如下代码

if of_checkpart(sle_3.text)= -1 then
	sle_3.setfocus()
	event erroinput(3)
end if
return 0

⑦ 在sle_4控件的LoseFocus 事件中添加如下代码

if of_checkpart(sle_4.text)= -1 then
	sle_4.setfocus()
	event erroinput(4)
end if
return 0

六、设置w_main 窗口控件

w_main窗口中添加一个uo_ipaddressedit 对象和一个CommandButton控件。分别命名为u0_1cb_1

其中cb_1按钮的Text值设置为"获取IP地址",各个控件布局如下图所示

控件布局

七、编写w_main 窗口中相关代码

① 在w_main窗口的u0_1控件的errinput事件中输入如下代码

MessageBox("错误消息","IP地址的第" + string(Position) +"部分出现了格式错误!")

② 在cb_1按钮的Clicked事件中添加如下代码

MessageBox("提示信息","IP地址为:" + uo_1.of_getipaddress())

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

open(w_main)

八、运行程序

代码添加完成,看看我们的劳动成果如何

IP地址编辑器

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员晓凡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值