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

【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_1 Mask yyyy-mm-dd hh:mm:ss
em_1 MaskDateType Datetimemask!
em_1 Spin True
cb_1 Text 修改系统时间
  • 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_time

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

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

open(w_main)

七、运行程序

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

修改系统时间

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

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


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