77范文网 - 专业文章范例文档资料分享平台

PB操作技巧(2)

来源:网络收集 时间:2020-04-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

·6·

PowerBuilder 8.0进阶篇

? Ue_move事件(用户自定义事件,Event ID:pbm_move)

MDI窗口移动时,iw_popup_time的位置要随之改变,并保持与MDI窗口的相对位置不变。脚本同Resize事件。

1.2.2 利用窗口内控件

利用窗口内控件制作状态条的原理很简单,就是在运行过程中保持该控件与窗口的相对位置不变,并把相关信息显示在该控件中。

本例利用数据窗口控件来显示状态栏信息。

(1) 创建一个Tabular风格,数据源为External的数据窗口d_status_bar。各列定义参见表1-1。

表1-1 d_status_bar 定义

Name Department User Sysdate Other Type String String Date String Length 20 10 50 Dec Notes 显示部门信息 用户名 系统日期 其他信息

(2) 为数据窗口对象d_status_bar增加位图及线条等控件,如图1-3所示。这样做的目的是使定制的状态条更加美观。

图1-3 设计数据窗口d_status_bar

其中,在sysdate字段的后面增加一个计算域week,用来根据日期显示星期。计算域的表达式为:

=====================================================================

case( daynumber(sysdate ) when 1 then '星期天' when 2 then '星期一' when 3 then '星期二' when 4 then '星期三' when 5 then '星期四' when 6 then '星期五' when 7 then '星期六' else '')

=====================================================================

计算域的文本字体(Text Color)设置为:

case (daynumber(sysdate) when 1 then 255 when 7 then 255 else 0)

窗口与控件 ·7· 这样设置的用途是:当日期逢周末(星期六、星期天)时,“星期六”、“星期天”字体以红色显示。 至于工具栏字体,尽可以在此数据窗口对象中设置成自己喜欢的。 (3) 创建一个菜单m_main和一个mdi!类型的窗口w_mdi,并将菜单m_main关联至w_mdi窗口。w_ mdi作为系统的主窗口。 (4) 在w_ mdi窗口中加入一个数据窗口控件dw_status_bar,其数据窗口对象为前面创建的d_status_bar。 (5) 为w_ mdi窗口的如下事件中编写脚本: ? Open事件 =====================================================================

//显示状态栏信息

dw_status_bar.Insertrow(0)

dw_status_bar.Setitem(1,'department', '部门:PowerBuilder编程俱乐部') dw_status_bar.Setitem(1, 'user',' 柜员:柯建勋' ) dw_status_bar.Setitem(1, 'sysdate',now())

//dw_status_bar.Setitem(1, 'other',' 其他信息' ) dw_status_bar.Object.DataWindow.ReadOnly = True

=====================================================================

? Resize事件

=====================================================================

integer li_height,li_width

//状态栏

li_height = this.workspaceHeight() li_width = this.workspaceWidth() mdi_1.x = this.workspacex()

mdi_1.y = this.workspacey() - 4

mdi_1.height = li_height - dw_status_bar.height + 8 mdi_1.width = li_width

//定位

dw_status_bar.x = this.workspacex() - 4 dw_status_bar.y = mdi_1.y + mdi_1.height dw_status_bar.width = li_width + 4

===================================================================== (6) 此状态条的运行效果如图1-4所示。

本例中,在数据窗口对象d_status_bar定制了“部门”、“柜员”、“日期”和“其他信息”四个栏目,在实际应用中可以根据需要来进行扩展、灵活掌握。

不过上面两种方法虽然可以定义出非常漂亮的工具栏,但都不能算严格意义上的可定

·8·

PowerBuilder 8.0进阶篇

制状态条,可定制状态条应该是可以在程序中定制和扩展的,请参考第5章“用户对象”的第5.1.3节所给出的实现方法。

图1-4 运行效果

1.3 系统热键的实现

在不少大型应用软件中,用户可以通过使用Ctrl+Alt+F2之类的组合键来方便地进行功能切换和处理,加快用户的操作速度;或者在一些软件中,需要在非本软件窗口中实现热键响应功能,如在很多屏幕捕捉软件中使用热键快速捉图。下面给出在PowerBuilder中系统热键的实现方法。

Windows中系统热键的实现方法首先通过调用API函数RegisterHotKey()为窗口注册热键,当热键按下后,Windows会发送消息给窗口,这时可以在窗口的other事件中处理。关于API应用将在第6章“外部函数和Windows API应用”中详细讲解。

具体步骤如下:

(1) 新建一个窗口w_hotkey并定义窗口实例变量: =====================================================================

long atomid

Constant integer MOD_ALT Constant integer MOD_CONTROL Constant integer MOD_SHIFT

= 1 //Alt键 = 2 //Ctrl键 = 4 //Shift键

=====================================================================

(2) 声明API函数:

=====================================================================

FUNCTION Integer GlobalAddAtom(ref string lpString) LIBRARY \

窗口与控件 ·9· ALIAS FOR \FUNCTION ulong RegisterHotKey(ulong hwnd,ulong id,ulong fsModifiers,ulong- vk) LIBRARY \===================================================================== (3) 在窗口w_hotkey的open事件中编写脚本注册热键: ===================================================================== //注册热键 long ll_RC string ls_atomid

ls_atomid = 'myatomid'

atomid = GlobalAddAtom(ls_atomid) //得到ID,保证不和其他应用程序发生冲突

ll_RC = RegisterHotKey(Handle(this), atomid, MOD_ALT + MOD_CONTROL, 65) //注册的热键为Ctrl+Alt+A ,65为'A'

If ll_RC = 0 then //热键注册冲突 Messagebox(\热键注册错误\End if

=====================================================================

(4) 在窗口w_hotkey的other事件中编写脚本:

=====================================================================

//处理系统热键

IF wparam = atomid THEN //处理… MessageBox('hello','你好!') END IF

=====================================================================

1.4 实现图标栏应用

图标栏应用是目前应用比较广泛的一种技术,系统运行后,在Windows操作系统的图标栏中显示该应用程序的图标,当双击图标时弹出相应的窗口,就像金山词霸、某些杀毒监控软件或PowerBuilder 8.0自带的Adaptive Server Anywhere 7.0数据库启动后一样。下面以一个实例来介绍在PowerBuilder中如何实现图标栏应用。

1.4.1 实例运行效果

? 启动程序时自动加载图标到Windows图标栏,当鼠标移至图标上时,显示提示信

·10·

PowerBuilder 8.0进阶篇

息,如系统名字等,如图1-5所示。

图1-5 图标栏应用

? 双击应用栏图标,显示系统主窗口,并更换不同图标,以表示已打开主窗口,如

图1-6所示。

? 右击应用栏图标,弹出功能菜单,如图1-7所示。此时选择不同菜单项,可启动

不同功能项。

图标更换

图1-6 双击应用栏图标,显示系统主窗口

图1-7 右键菜单

1.4.2 实例创建步骤

(1) 准备资源文件。在创建程序前,先准备两个用于在图标栏中显示的图标文件(.ICO),本例中选用了sysicon1.ico和sysicon2.ico。

(2) 建立一个应用程序对象及Main!类型的窗口w_systray。 (3) 创建结构str_notifyicondata,结构定义如图1-8所示。

图1-8 结构str_notifyicondata

(4) 声明全局外部函数:

=====================================================================

Public Function Integer Shell_NotifyIcon (Long dwMessage, Any lpData) Library

窗口与控件 ·11·

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库PB操作技巧(2)在线全文阅读。

PB操作技巧(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1002039.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: