【PB案例学习笔记】-16做一个修改系统时间的小应用

写在前面

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

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

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

gitee代码仓库

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

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

一、小目标

本案例中我们要制作一个修改系统时间的程序。程序运行后,会弹出一个显示当前系统时间的编辑框。

我们可以对编辑框中日期时间进行修改,然后点击【修改系统时间】按钮,对系统时间进行修改。

修改系统时间

在程序中我们需要调用外部函数SetSystemTime函数来实现日期时间修改,在函数使用过程中

我们将引入新的知识点类用户对象 (Custom Class),它在日常开发中也是使用频率很高的

二、类用户对象

① 含义:

用于定义作为整体使用的业务准则和标准处理过程,使用类用户对象时,我们通过创建该对象的实例,然后通过实例调用它的函数

② 类型:

  • 标准类用户对象

    继承PowerBuilder内置非可视对象定义,通过编写代码扩展出新功能,以满足程序的特殊需求

  • 定制类用户对象

​ 用于封装不需要可视性的处理过程,不继承某个PowerBuilder对象,完全由设计人员通过定义实例变量、函数、事件来完成

三、创建程序基本框架

① 新建examplework 工作区

② 新建exampleapp应用

由于篇幅原因,以上步骤不再赘述,如果忘记了的小伙伴可以翻一翻该系列的第一篇文章

四、建立uo_settime用户类

① 单击工具栏上的File-->New命令,在弹出的对话框中选择PB Object选项卡中的Custom Class图标,

然后点击【OK】按钮建立类用户对象

建立类用户对象

② 建立结构str_systemtime

在工具栏上的Insert-->Structure命令,然后按下表建立结构

Structure

新建结构

③ 引入外部函数

Custom ClassDeclare Local External Function 选项卡中添加如下代码引入外部函数

Function long SetSystemTime ( str_SYSTEMTIME astr_time) Library "kernel32.DLL"

添加外部函数引用

④ 在Function List选项卡中,添加of_settime函数,函数代码如下

// 设置系统时间
date ld_date
time ld_time 
str_systemtime lstr_stru // 从当前系统时间中获取日期和时间
ld_date = date(ad_time) 
ld_time = time(ad_time) // 将时间调整为UTC时间(减去8小时)
lstr_stru.iHour = Hour(ld_time) 
lstr_stru.iMinute = Minute(ld_time) 
lstr_stru.iSecond = Second(ld_time) 
If lstr_stru.iHour - 8 < 0 Then ld_date = RelativeDate(ld_date, -1) lstr_stru.iHour = 24 - abs(lstr_stru.iHour - 8) 
Else lstr_stru.iHour -= 8 
End If // 将日期和时间存储在结构体中的相应字段中
lstr_stru.iYear = year(ld_date) 
lstr_stru.iMonth = month(ld_date) 
lstr_stru.iDay = day(ld_date) 
lstr_stru.iDayOfWeek = dayNumber(ld_date) 
lstr_stru.iMilliseconds = 1 // 调用setsystemtime函数设置系统时间
If setsystemtime(ref lstr_stru) <> 0 Then // 设置成功Return 1 
Else // 设置失败Return -1 
End If

⑤ 报错用户对象为uo_settime

五、建立w_main窗口

① 建立窗口

② 布局控件

w_main窗口上新建一个EditMask控件和一个CommandButton控件,调整布局如下

页面布局

③ 设置控件属性

控件名称属性
w_main窗口Title设置系统时间
em_1Maskyyyy-mm-dd hh:mm:ss
em_1MaskDateTypeDatetimemask!
em_1SpinTrue
cb_1Text修改系统时间
  • MaskDateType :设置格式类型为日期时间

  • Mask: 设置日期格式化

  • Spin: 显示出上下小图标调整时间

    Spin

④ 保存窗口为w_main

六、编写代码

① 在w_main窗口的Open中添加如下代码

em_1.text = string(today(),'yyyy/mm/dd') + " " + string(now(),"hh:mm:ss")

② 在按钮【修改系统时间】cb_1clicked事件中添加如下代码

uo_settime luo_settime
datetime 	ld_timeld_time = datetime(date(left(em_1.text, 10)), & time(right(em_1.text, 8)))
If luo_settime.of_settime(ld_time) = 1 ThenMessagebox("确认","设置时间成功!")
ElseMessageBox("错误","时间设置失败,请检查格式是否正确,应该是yyyy-mm-dd hh:mm:ss")
End If

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

open(w_main)

七、运行程序

到此,程序开发完成了 ★,°:.☆( ̄▽ ̄)/$:.°★ 。 我们来运行程序看看是否达到预期效果

修改系统时间

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

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

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

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

相关文章

教师服务期内可以调动吗

作为一名还在服务期内的老师&#xff0c;你可能会好奇&#xff1a;我在服务期内能不能换个学校教书&#xff1f;这个问题听起来简单&#xff0c;但实际上答案得看具体情况。 什么是服务期呢&#xff1f;简单来说&#xff0c;就是你和学校签了合同&#xff0c;得在校工作满五年&…

qt dragEnterEvent dragLeaveEvent dragMoveEvent dropEvent都不响应的问题解决方案。

环境&#xff1a;vs2019qt5.14.2 坑哦。让我搞了好久。各种不执行&#xff0c;最后发现,不用vs调制&#xff0c;直接运行exe就能接收拖拽了。 记录一下,感觉是qt的bug。上代码。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QText…

Spring使用事务的两种方式

1. 为什么需要事务&#xff1f; 前面的博客 对MySQL事务作讲解&#xff0c;事务就是将⼀组操作封装成⼀个执⾏单元&#xff08;封装到⼀起&#xff09;&#xff0c;要么全部成功&#xff0c;要么全部失败。 比如&#xff0c;现在要实现转账操作&#xff1a; 第一步&#xff…

两张图片进行分析

两张图片进行分析&#xff0c;可以拖动左边图片进行放大、缩小查看图片差异 底图 <template><div class"box_container"><section><div class"" v-for"item in imgData.imgDataVal" :key"item.id"><img :s…

Mybatis02-CRUD操作及配置解析

1、CRUD 1.namespace namespace中的包名要和Dao/Mapper 接口的包名一致&#xff01; 1个Dao接口类对应1个mapper&#xff0c;也对应1个namespace&#xff0c; 1个Dao接口中的方法对应1个namespace中一个SQL语句 2.CRUD id&#xff1a;对应的namespace接口中的方法名resul…

html+CSS+js部分基础运用14

熟悉插值{{}}的用法&#xff0c;在页面中显示下列内容。图1 插值语法的效果图 在页面中统计鼠标单机按钮的次数。【提示&#xff1a;v-on指令】&#xff0c;页面效果如下图所示&#xff1a;图2 统计效果图 3、①单击按钮可以修改黑体字。②通过调试工具vue-devtools修改黑体字。…

服务器数据恢复—服务器raid5上层zfs文件系统数据恢复案例

服务器数据恢复环境&故障&#xff1a; 一台某品牌X3650M3服务器&#xff0c;服务器中有一组raid5磁盘阵列&#xff0c;上层采用zfs文件系统。 服务器未知原因崩溃&#xff0c;工作人员排查故障后发现服务器的raid5阵列中有两块硬盘离线导致该阵列不可用&#xff0c;服务器内…

Web3.0区块链技术开发方案丨ICO与IDO代币开发

在Web3.0时代的到来下&#xff0c;区块链技术不仅改变着金融领域的格局&#xff0c;也在资金筹集和代币发行方面掀起了一场变革。初始代币发行&#xff08;ICO&#xff09;和去中心化代币发行&#xff08;IDO&#xff09;成为了项目融资的主要方式&#xff0c;其基于区块链技术…

电脑开机之后要很久才能进入系统?进入WinPE也是卡顿半天?

前言 小白最近接到了一张很奇怪的电脑维修单&#xff0c;客户说他的工作室电脑开机特别慢&#xff0c;开机之后特别卡顿&#xff0c;在使用的时候也会一卡一卡的。 这事情开始看很简单&#xff1a;估计就是电脑还是机械硬盘&#xff0c;所以开机很慢又卡顿。所以应该是把机械…

LSDFi协议赛道4大稳定币项目,以bitget钱包为例

纵览 LSDfi 生态繁荣的基石&#xff0c;LSD 稳定币赛道全解析 近期有许多建立在流动性质押通证的稳定币借贷协议开始出现在大众眼里&#xff0c;今天文章就要带大家来一一了解这些 LSDfi 协议究竟是如何争夺这块诱人的大饼。 LybraFinanceLSD 它透过抵押stETH/ETH 铸造&#…

MySQL经典练习50题(上)(解析版)

所有笔记、生活分享首发于个人博客 想要获得最佳的阅读体验&#xff08;无广告且清爽&#xff09;&#xff0c;请访问本篇笔记 MySQL经典练习50题&#xff08;上&#xff09; 创建数据库和表 -- 建 表 -- 学 生 表 CREATE TABLE Student( s_id VARCHAR(20), s_name VARCHAR(2…

Linux shell编程学习笔记57:lshw命令 获取cpu设备信息

0 前言 在Linux中&#xff0c;获取cpu信息的命令很多&#xff0c;除了我们已经研究的 cat /proc/cpuinfo、lscpu、nproc、hwinfo --cpu 命令&#xff0c;还有 lshw命令。 1 lshw命令的功能 lshw命令源自英文list hardware&#xff0c;即列出系统的硬件信息&#xff0c;这些硬…

C++之noexcept

目录 1.概述 2.noexcept作为说明符 3.noexcept作为运算符 4.传统throw与noexcept比较 5.原理剖析 6.总结 1.概述 在C中&#xff0c;noexcept是一个关键字&#xff0c;用于指定函数不会抛出异常。如果函数保证不会抛出异常&#xff0c;编译器可以进行更多优化&#xff0c;…

C语言.数据结构.单链表经典算法

数据结构.单链表经典算法 1.经典算法OJ题1&#xff1a;移除链表元素1.1题目描述&#xff1a;1.2题解&#xff1a;1.3图文解释&#xff1a; 2.经典算法OJ题2&#xff1a;反转链表2.1题目描述&#xff1a;2.2题解&#xff1a;2.3图文解释 3.经典算法OJ题3&#xff1a;合并两个有序…

编译和运行qemu-uboot-arm64单板的Armbian系统

这篇文章ARM虚拟机安装OMV-CSDN博客遗留一个启动qemu-uboot-arm64单板Armbian镜像的问题&#xff0c;使用官方下载的镜像&#xff0c;会报错&#xff1a; fatal: no kernel available .... Failed to load /vmlinuz ...... qemu-system-aarch64 -smp 8 -m 8G -machine virt …

WPF音乐播放器 零基础4个小时左右

前言&#xff1a;winfrom转wpf用久的熟手说得最多的是,转回去做winfrom难。。当时不明白。。做一个就知道了。 WPF音乐播放器 入口主程序 FontFamily"Microsoft YaHei" FontSize"12" FontWeight"ExtraLight" 居中显示WindowStartupLocation&quo…

数据结构:并查集

数据结构&#xff1a;并查集 题目描述参考代码 题目描述 输入样例 5 5 C 1 2 Q1 1 2 Q2 1 C 2 5 Q2 5输出样例 Yes 2 3参考代码 #include <iostream>using namespace std;const int N 100010;int n, m; int p[N], sz[N];int find(int x) // 返回x的祖宗节点 路径…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十六)- 微服务(6)

目录 10. Docker 10.1 Docker基本操作 10.1.1 镜像相关命令 10.1.2 容器相关命令 10.2 数据卷命令 10.2.1 常用命令 : 10.2.2 挂载数据卷 10. Docker 10.1 Docker基本操作 10.1.1 镜像相关命令 docker --help 查看docker帮助文档 docker images --help 查看docker ima…

Java中条件运算符的嵌套使用技巧总结

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

c语言项目-贪吃蛇项目2-游戏的设计与分析

文章目录 前言游戏的设计与分析地图&#xff1a;这里简述一下c语言的国际化特性相关的知识<locale.h> 本地化头文件类项setlocale函数 上面我们讲到需要打印★&#xff0c;●&#xff0c;□三个宽字符找到这三个字符打印的方式有两种&#xff1a; 控制台屏幕的长宽特性&a…