【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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Cocos2dx 编译游戏安装包制作教程

在 Visual Studio 项目中配置图标并使用 Inno Setup 创建安装包 在本教程中&#xff0c;我们将学习如何为 Visual Studio 编译项目配置图标&#xff0c;并使用 Inno Setup 创建安装包。教程包括以下部分&#xff1a; 设置项目图标&#xff1a;在 Visual Studio 中配置 .exe 文…

英语国际音标 - DJ 音标 - KK 音标

英语国际音标 - DJ 音标 - KK 音标 1. 国际音标 (International Phonetic Alphabet&#xff0c;IPA)1.1. 记音类型1.2. 48 个国际音标发音表1.2.1. 元音 (vowel)1.2.1.1. 单元音 (monophthong)1.2.1.2. 双元音 (diphthong) 1.2.2. 辅音 (consonant)1.2.2.1. 清音 (voiceless so…

用人工智能写2024年高考作文

目录 用人工智能写2024年高考作文 引用 一、2024年 新课标I卷 作文真题 AI写作范文 二、2024年 全国甲卷 作文真题 AI写作范文 三、2024年 新课标II卷 作文真题 AI写作范文 四、2024年 北京卷 作文真题一 AI写作范文 作文真题二 AI写作范文 作文真题三 AI写作…

Nginx中location规则与rewrite重写

一、概念介绍 1、location与rewrite的常用正则表达式 符号作用^ 匹配输入字符串的起始位置$ 匹配输入字符串的结束位置* 匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” 匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll”、“olll”&#xff0…

keda-P0460. 潜水员

可达信奥 - 登录 - 可达信奥https://kedaoi.cn/p/P0460 代码思路&#xff1a; 01背包DP。 思路也是比较经典的&#xff0c;就是看用这个水缸的最小值小&#xff0c;还是不用这个水缸的最小值小。但是这里涉及到一个初始化的问题&#xff0c;因为要求最小所以初始化理应…

1992-2012年美国西海岸的海面高度异常数据集

Gridded Altimeter Fields with Enhanced Coastal Coverage 具有增强海岸覆盖范围的网格化测高场 简介 具有增强的海岸覆盖范围的网格化高度计场数据产品包含美国西海岸的海面高度异常&#xff08;SSHA 或 SLA&#xff09;以及北纬 35.25 度-48.5 度和东经 227.75 度-248.5 …

【docker】日志

ocker 日志相关的操作主要涉及查看、管理和理解容器的日志输出。以下是一些常用的 Docker 日志命令和选项&#xff1a; 查看日志 docker logs container_id_or_name&#xff1a;获取指定容器的日志。docker logs -f container_id_or_name&#xff1a;跟随&#xff08;实时输出…

ARM32开发--串口库封装(初级)

知不足而奋进望远山而前行 目录 文章目录 前言 目标 内容 开发流程 文件目录创建 分组创建 接口定义 完整代码 总结 前言 在嵌入式软件开发中&#xff0c;封装抽取流程和抽取封装策略是非常重要的技术&#xff0c;能够提高代码的复用性和可维护性。本文将介绍如何在文…

Python 多进程

单例模式 面试中&#xff0c;就被问到了这个问题&#xff0c;你知道用python怎么创建一个单例模式吗&#xff1f; 单例模式是什么&#xff1f; 就是这个对象只能被创建一次。 每次实例化&#xff0c;都是同一个对象。 单例模式是一种常用的软件设计模式。在它的核心结构中只包…

UE5.2打包安卓

目录 简介: 一. 根据官网配置 二. 手动定位SDK路径 三: 设置Android基本信息 四: 设置KeyStore 五: 开始打包 六:其他 七. 总结 简介: UE5.2 打包安卓是指将使用 Unreal Engine 5.2 开发的项目编译为可在安卓设备上运行的安装包。 以下是一般的打包步骤&#xff1a; 安装…

交易中的群体行为特征和决策模型

本文基于人的行为和心理特征&#xff0c;归纳出交易中群体的行为决策模型&#xff0c;并基于这个模型&#xff0c;分析股价波浪运行背后的逻辑&#xff0c;以及投机情绪的周期变化规律&#xff0c;以此指导交易&#xff0c;分析潜在的风险和机会&#xff0c;寻找并等待高性价比…

Java:九九乘法表,打印三角形

文章目录 九九乘法表打印三角形改进:控制行数的三角形有空格的三角形 九九乘法表 package com.zhang; /* 打印九九乘法表*/ public class Test8 {public static void main(String[] args) {//i是竖着的 j是横着的for (int i 1; i < 9; i) {for(int j 1; j < 9; j) {i…

流批一体计算引擎-10-[Flink]中的常用算子和DataStream转换

pyflink 处理 kafka数据 1 DataStream API 示例代码 从非空集合中读取数据&#xff0c;并将结果写入本地文件系统。 from pyflink.common.serialization import Encoder from pyflink.common.typeinfo import Types from pyflink.datastream import StreamExecutionEnviron…

【Vue】图形验证码功能

说明&#xff1a; 图形验证码&#xff0c;本质就是一个请求回来的图片用户将来输入图形验证码&#xff0c;用于强制人机交互&#xff0c;可以抵御机器自动化攻击 (例如&#xff1a;避免批量请求获取短信) 需求&#xff1a; 动态将请求回来的 base64 图片&#xff0c;解析渲染…

【面试干货】聚集索引和非聚集索引区别?

【面试干货】聚集索引和非聚集索引区别? 1、聚集索引&#xff08;Clustered Index&#xff09;1.1 特点1.2 例子 2、非聚集索引&#xff08;Nonclustered Index&#xff09;2.1 特点2.2 例子 3、根本区别 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&…

秋招突击——6/10——复习{(树形DP)树的最长路径、}——新作{电话号码的字母组合}

文章目录 引言复习树形DP——树的最长路径思路分析参考思路求图的最长的直径的通用方法证明 树形DP分析方法问题 参考代码使用一维数组模拟邻接表存储树形结构或者稀疏图 新作电话号码的组合思路分析参考实现 总结 引言 中间面试了两天&#xff0c;去上海呆了一天&#xff0c;…

小熊家务帮day19-day21 订单模块2(取消订单,退款功能等)

目录 1 订单退款功能1.1 需求分析1.2 接口分析1.3 退款流程分析1.4 表结构设计1.5 取消未支付订单实现1.5.1 接口开发Controller层开发Service层开发 1.5.2 接口测试 1.5 取消已支付订单实现 1 订单退款功能 1.1 需求分析 用户下单成功可以取消订单&#xff0c;在订单的不同状…

机器视觉系统-同轴光源大小选择技巧

同轴光源多用于检测光滑平面产品上的缺陷&#xff0c;同样利用上述的方法计算得出光源尺寸。 实际上&#xff0c;同轴光源可理解为没有孔的开孔面光&#xff0c;因此可等效为发光面相等的面光源&#xff0c;如下图&#xff1a; 如图所示&#xff0c;同轴光源的效果与开孔面光的…

【Labview】通过串口通信从上位机读取和写入数据

最近博主需要通过Labview的上位机控制一个温控仪表&#xff0c;主要实现在上位机读取实时温度和设定的目标温度&#xff0c;以及通过上位机设定目标温度。这里将其中遇到的问题和心得分享给大家&#xff0c;博主自己也做一个记录。 由于温控仪表采用的485通讯&#xff0c;modb…

王学岗鸿蒙开发(北向)——————(十)子组件修改父组件的内容与 动画

子组件修改父组件的内容 使用类似Android的回调&#xff0c;父组件传递给子组件一个函数 import { MyComment } from ./component/MyComment import { MyContent } from ./component/MyComtent import { MyTitleComponent } from ./component/MyTitleComponentEntry Componen…