配色: 字号:
第12章 相关开发技巧
2022-11-05 | 阅:  转:  |  分享 
  
第12章 相关开发技巧应用 12.1 应用对象技巧应用 12.2 窗口对象技巧应用 12.3 菜单对象使用技巧 12.4 数据窗口使用技巧
12.5 本章小结 12.6 本章习题 12.1 应用对象技巧应用 12.1.1 如何限制应用程序只运行一次? 解题思想:实现这
一功能,主要是以系统主窗口的标题Title作为判别依据,若有其它与此Title同名应用程序在运行,则再次启动该程序时将会报应用程序
已经运行的提示。假设应用程序主窗口w_main的标题Title为“我的系统”,则限制应用程序只运行一次的实现步骤如下:首先在Glo
bal External Functions声明全局外部函数如下:FUNCTION long FindWindowA( ulong
Winhandle, string wintitle ) Library "user32“然后在应用对象的Open事件中加入如下
代码:ulong l_handle, lu_classl_handle = FindWindowA(lu_class,"我的系统"
)...... //此处省略12.2 窗口对象技巧应用 12.2.1 如何使主窗口自动居中显示? 解题思想:应用程
序启动时不管计算机的分辨率、操作系统版本如何变化,系统主窗口都会自动显示在屏幕中心。实验这一功能,主要是利用Environment
对象和窗口的Move()函数。Environment对象是一个系统结构,其中保存了应用程序运行的平台结构如CPU类型、操作系统版本
以及屏幕的高度和宽度等;Move()函数用于在屏幕上移动窗口的位置。假设应用程序主窗口为w_main,则使应用程序主窗口自动居中显
示的实现步骤如下:应用对象的Open事件中,程序代码如下:Open(w_main)窗口对象w_main的Open事件中,程序代码如
下:Environment ls_envinteger li_width,li_height//关闭窗口刷新setredraw(f
alse)…… //此处省略12.2 窗口对象技巧应用12.2.2 如何同步窗口及所包含
控件的缩放?解题思想:当窗口被放大或者缩小时,窗口内控件的大小与窗口的比例将会失调,从而导致应用程序界面很不美观。因此,应用程序最
好能够做到窗口内控件随窗口大小的改变而进行同步缩放。实验这一功能,主要是通过Move()、Resize()等函数控制窗口内控件的位
置和大小。假设以图12-2所示的主窗口w_main为例,主窗口上包含了树型控件tv_1、静态文本st_1以及数据窗口控件dw_1,
则控制窗口控件与窗口对象同步缩放的实现步骤如下: //具体实现步骤请参考教材12.2 窗口对象技巧应用12.2.3 如何向窗口对
象传递多个参数?解题思想:实验这一功能,主要是利用OpenWithParm()函数,在打开窗口的同时进行参数的传递。由于需要向窗口
传递多个参数,因此必须首先定义一个结构对象,然后将这个结构作为单个参数进行传递。假设在主窗口w_main中要打开窗口对象w_chi
ld,打开的同时需要传递给w_child多个参数,则实现的步骤如下:创建一个包含成员stu_id和stu_name的全局结构对象s
tudent,,如图12-3所示。在主窗口w_main中声明结构对象的变量,赋值后通过OpenWithParm()函数调用打开窗口
对象w_child。Student stuStu.stu_id = “97291113”Stu.stu_name = “Johns
hen”OpenWithParm(w_child, stu)在窗口对象w_child的Open事件中,接收该参数。Student
tmpString id , nametmp = Message.ObjectParmid = tmp.stu_idname =
tmp.stu_name 12.3 菜单对象使用技巧 12.3.1 如何在菜单上显示图片? 解题思想:在PowerBuilde
r中要开发这种位图菜单,就需要使用外部函数。外部函数是指用其他语言编写的并且存储在动态链接库(DLL)中的函数。一个DLL就是一个
包含可以执行的Windows代码的文件。DLL在运行时被动态地装入和链接,并且可被多个应用程序共享。DLL在内存中可以被移动或者固
定,可预装入或者命令装入,也可以删除或者永久装入。开发者在使用外部函数之前,必须先对其进行定义,外部函数根据作用域的不同而分为两种
类型:全局外部函数与局部外部函数。假设与主窗口w_main相关联的菜单m_main中的菜单项要显示图片,运行的效果如图12-4所示
,则实现的步骤如下: //具体实现步骤请参考教材12.3 菜单对象使用技巧12.3.2 如何创建通用的右键弹出式菜单? 解题思想:
当某个对象被右键单击后,弹出相应的功能菜单是Windows应用程序的常用功能之一。PowerBuilder应用开发中,可在需弹出右
键菜单对象的RButtonDown事件中调用该菜单的Popmenu( )方法实现这一功能。但是在多数情况下,应用中可能有多处需要用
到不同的弹出式菜单,因此可以考虑做一个通用的菜单,可以用任何对象的RButtonDown事件激发弹出,并在弹出前动态改变弹出菜单项
的内容,当点击菜单项时又可执行被右击对象的相应用户事件。假设在主窗口w_main的RButtonDown事件中弹出相应的功能菜单,
运行效果如图12-6所示,则实现的步骤如下://具体实现步骤请参考教材12.4 数据窗口使用技巧 12.4.1 如何检测数据窗口中
的数据是否被修改? 解题思想:当窗口对象被关闭时,系统应该能够自动检测出数据窗口控件中的数据是否已经被修改,并根据实际情况给出相关
提示如“数据已经被修改,是否进行修改数据的保存?”等。实现这一功能,主要是判断数据窗口控件的deletedcount()和modi
fiedcount()函数调用之后的返回值。假设窗口对象为w_main,窗口中包含了数据窗口控件dw_1,则当窗口对象关闭时检测数
据窗口控件中的数据是否被修改的步骤如下:在窗口对象w_main的CloseQuery事件中,程序代码为:integer li_rt
nif dw_1.deletedcount( )+dw_1.modifiedcount( )>0 then …… //此
处省略end if12.4 数据窗口使用技巧12.4.2 如何实现数据窗口中数据的多行选择? 解题思想:数据窗口中数据的多行选择是
指用户可以同时选中数据窗口控件中的若干条记录。当按下CTRL键时可以用鼠标逐个选中多个不相连的记录,按下Shift键时可以用鼠标一
次选中多个相连的记录。实现这一功能,主要是调用数据窗口控件的SelectRow()函数。假设窗口对象为w_main,窗口中包含了数
据窗口控件dw_1,则数据窗口控件中数据多行选择的实现步骤如下:窗口对象w_main中声明实例变量:long ll_lastrow
数据窗口控件的Clicked事件中,程序代码为:long ll_currentrow,ll_jif row=0 then r
eturnelse …… //此处省略12.4 数据窗口使用技巧12.4.3 如何实现数据窗口中的Enter键与Tab键互换
? 解题思想:通常在数据输入的过程中,当用户在录完一个数据项之后,习惯按Enter键确认并且将输入焦点跳转到下一个输入项。但是在P
owerBuilder的数据窗口控件中,需要使用Tab 键来实现输入域之间的焦点切换。为了符合用户的使用习惯,可以用Enter键来
实现Tab键的功能。实验这一功能,主要是调用数据窗口控件的SetColumn()以及Send()函数。假设窗口对象为w_main,
窗口中包含了数据窗口控件dw_1,则数据窗口控件中Enter键和Tab键互换的实现步骤如下:数据窗口控件dw_1创建用户自定义事件
“Enter”,事件ID为pbm_dwnprocessenter。数据窗口控件dw_1的自定义事件Enter中,程序代码为:if
this.accepttext( )<0 then …… //此处省略12.4 数据窗口使用技巧12.4.4 如何实现点击数据窗口
中的列标题对列进行排序? 解题思想:在使用Windows资源管理器的时候,当需要按照文件的类型或名称排序的时候只要用鼠标点击一下相
应的标题栏,系统会按照升序或降序交替排序。在PowerBuilder的数据窗口控件中,也经常希望能够通过单击标题栏进行数据的排序。
实现这一功能,主要是调用数据窗口控件的SeSort()以及Sort()函数。假设窗口对象为w_main,窗口中包含了数据窗口控件d
w_1,则数据窗口控件中单击标题栏进行排序的实现步骤如下:窗口对象w_main中定义实例变量:Boolean lb_flag数据窗
口控件的Clicked事件中,程序代码为:String ls_column, ls_sort…… //此处省略12.4 数据窗口使
用技巧12.4.5 如何得到数据窗口中的列名及其文字说明?解题思想:在数据库应用中,也有希望能够得到数据窗口控件中所有的列名及其文
字说明,以便实现如通用的查询、通用的过滤等功能。实现这一功能,利用数据窗口的Describe()函数得到数据窗口的多项属性值。假设
窗口对象为w_main,窗口中包含了命令按钮cb_1和数据窗口控件dw_1,则得到数据窗口中所有列名以及其文字说明的实现代码如下:
窗口对象w_main的命令按钮cb_1的Clicked事件中,程序代码为:long ll_column_count,ll_istr
ing ls_column[] , ls_column_text[] , str …… //此处省略12.5 本章小结 本章主要
详细介绍了PowerBuilder数据库应用程序开发过程中经常遇到的一些使用技巧,例如主窗口的自动居中显示、位图菜单的创建以及数据
窗口的相关技巧,通过本章的学习,读者应该能够掌握书中所介绍的各种技巧。同时,也希望通过本章的学习能够培养学生自行查找资料、自主解决问题的能力。 12.6 本章习题 1、请自己上网查找PowerBuilder数据库应用开发中应用对象的一些其他的开发技巧。2、请自己上网查找PowerBuilder数据库应用开发中窗口对象的一些其他的开发技巧。3、请自己上网查找PowerBuilder数据库应用开发中菜单对象的一些其他的开发技巧。4、请自己上网查找PowerBuilder数据库应用开发中数据窗口的一些其他的开发技巧。5、请自己上网查找PowerBuilder数据库应用开发中用户对象的一些其他的开发技巧。
献花(0)
+1
(本文系籽油荃面原创)