PB_03第3章 窗口_第1页
PB_03第3章 窗口_第2页
PB_03第3章 窗口_第3页
PB_03第3章 窗口_第4页
PB_03第3章 窗口_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章窗口 3 1创建新的窗口对象3 2窗口属性3 3窗口函数3 4窗口事件3 5窗口编程3 6小结 3 1 1创建窗口对象的过程 创建一个空白窗口 按下工具栏上 New 图标按钮 弹出New属性页对话框 选择Object页 双击Windows图标或选中Windows图标后单击OK按钮即可 窗口对象命名时的默认前缀为w 3 1 2窗口的继承 实现窗口继承的方法 点击继承按钮 选择对象类型 ObjectType 为窗口 Windows 在窗口对象列表单中选择要继承的祖先窗口 双击左键选中或单击后按OK按钮确定 窗口继承应用在以下几种情况 一种是需要创建若干个窗口 另一种是有一个或多个窗口 这两种情况 都比较适合于应用窗口的继承 使用窗口的继承建立窗口对象时 祖先对象中的所有内容全部被它的后代继承 在后代窗口中 可以引用祖先的函数 事件以及结构 改变窗口的属性以及窗口和控件的大小和位置 修改现有的控件以及添加新的控件 编写新的脚本 声明新的变量 函数 事件以及结构 使用窗口的继承 需要注意以下二点 1 后代窗口中所有继承来的控件 都不允许删除 遇到不需要的祖先控件 可以采用将该控件的可视性属性 Visible 不选中 让其在后代窗口中不可见的方法使其消失 2 祖先和后代窗口中的控件名称必须唯一 不能使用相同的控件名称 3 1 2窗口的继承 3 1 3窗口画板 窗口画板是由布局视图区 窗口属性区 函数列表区 脚本编辑区 结构列表区 结构定义区 控件列表区 事件列表区以及非可视对象列表区等区域组成 3 1 3窗口画板 区域的打开可以在View菜单项下进行选择 新窗口产生后 随后就需要对其属性进行设置 以满足不同应用的需要 3 1 4预览窗口 在窗口的设计过程中 可以随时预览设计窗口在实际运行时的外貌 方法是点击工具栏上的Preview图标 或点击菜单标题Design下的Preview菜单项 也可以直接使用快捷键Ctrl Shift P 3 2窗口属性 窗口的作用见表 其中最重要的是基本特征属性页 3 2 1窗口的类型和基本属性窗口标题栏用于设置窗口标题 窗口标记栏用于输入窗口标识 窗口菜单名称用于配置窗口菜单 窗口本身没有菜单 通过选择菜单 可以方便地将所需要的菜单挂接到窗口上 在窗口与菜单的组合上具有很大的灵活性 窗口的背景颜色和MDI子窗口的颜色可以从下拉菜单中提供的背景颜色中选择 3 2 1窗口的类型和基本属性 窗口的基本特征属性页见图 3 2 1窗口的类型和基本属性 窗口的基本特征属性页中有12个复选框 控制着12个布尔变量 3 2 1窗口的类型和基本属性 窗口的类型是按照窗口具有不完全相同的外部和内部特征划分的 窗口的类型有六种 缺省为主窗口类型 3 2 1窗口的类型和基本属性 说明 1 模式化是指在关闭当前响应窗口之前 不能切换到应用程序的其它窗口 2 多文档窗口与带微帮助的多文档窗口特性基本一致 只是后者增加了MicroHelp功能 即在MDI框架底部的状态行中 可以显示帮助信息 3 2 2窗口的滚动属性 窗口的滚动属性页见图 3 2 2窗口的滚动属性 滚动属性页中两个复选框HscrollBar和VScrollBar决定窗口是否采用水平或垂直滚动条 其余四个带微调按钮的数字编辑框设置滚动速度 PowerBuidler使用自己的屏幕尺寸度量方法PBU 单位为units PBU与屏幕像素之间通过系统提供的两个函数可以相互转换 UnitsToPixels Units type 实现PBU到屏幕像素的转换 PixelsToUnits Pixels type 实现屏幕像素到PBU的转换 3 2 3应用程序窗口的工具栏 注意 这里所说的工具栏并非在PowerBuilder编程环境中系统提供的工具栏 而是指应用程序制作的 在应用程序中使用的工具栏 工具栏放置位置有5种 3 2 3应用程序窗口的工具栏 应用程序窗口的工具栏属性页见图3 6 3 2 4窗口的其它属性页 窗口的其它属性页见图 3 2 4窗口的其它属性页 窗口的其它属性页包含了两个功能 一个是调整窗口的位置和几何尺寸 另一个是选择在窗口内的光标形状 调整窗口的几何尺寸有两种方法 一种是在窗口画板的布局视图区中用鼠标来实现 将鼠标移动到布局视图区中窗口的外边沿处 使鼠标指针变为双向箭头 然后按下鼠标左键并拖动鼠标来改变窗口的大小 窗口尺寸改变较大时 需要借助布局视图区的水平或垂直滚动条来完成 另一种调整窗口的几何尺寸的方法就是在本属性页中修改窗口的尺寸 所有尺寸均采用PBU的单位units 3 3 1PowerBuidler窗口函数 几个常用窗口函数及其使用方法 1 窗口的操作 打开窗口 无参数 Open windowvar Parent windowvar 窗口变量名 parent 父窗口变量名1 打开窗口成功 1 出错打开窗口 带参数 OpenWithParm windowvar parameter parent 关闭窗口Close wndname wndname 窗口变量名1 成功 1 出错关闭窗口 带返回值 CloseWithReturn Wndname rtnval wndname 窗口变量名 rtnval 要返回的值1 成功 1 出错显示窗口objectname Show objectname 窗口 控件或其它对象的名称1 成功 1 出错 3 3 1PowerBuidler窗口函数 显示窗口objectname Show objectname 窗口 控件或其它对象的名称1 成功 1 出错隐藏窗口objectname Hide objectname 窗口 控件或其它对象的名称1 成功 1 出错移动窗口objectname Move x y objectname 窗口 控件或其它对象的名称 x y 移动目标点位置PBU1 成功 1 出错改变窗口大小objectname Resize width height objectname 窗口 控件或其它对象的名称 width 新的宽度height 新的高度1 成功 1 出错2 MDI窗口打开表单窗口OpenSheet sheetrefvar windowtype mdiframe position arrangeopen Sheetrefvar MDI窗口外的任何窗口类型的变量 windowtype 要打开窗口的类型 mdiframe MDI框架窗口名称 position 要打开表单在菜单中的编号 arrangeopen 要打开表单出现的格式 取值Cascaded Layer 或Original 1 成功 1 出错 3 3 1PowerBuidler窗口函数 返回当前活动表单窗口mdiframewindow GetActiveSheet mdiframewindow MDI框架窗口成功返回window对象 一般用IsValid 函数判断返回窗口是否有效返回第一个表单窗口mdiframewindow GetFirstSheet mdiframewindow MDI框架窗口成功返回window对象 一般用IsValid 函数判断返回窗口是否有效返回下一个表单窗mdiframewindow GetNextSheet sheet mdiframewindow MDI框架窗口成功返回window对象 一般用IsValid 函数判断返回窗口是否有效状态行中显示字符串windowname SetMicroHelp string Windowname 带微帮助的MDI框架窗口名称String 要显示的字符串1 成功 1 出错 3 3 1PowerBuidler窗口函数 3 触发事件触发事件objectname TriggerEvent event word long objectname 对象名称 event 要触发的事件 word和long 传递的事件参数TRUE 成功FALSE 失败触发事件 放入事件队列 objectname PostEvent event word long objectname 对象名称 event 要触发的事件 word和long 传递的事件参数TRUE 成功FALSE 失败传递参数的具体要求 1 传递参数只能是字符串 数值或PowerBuilder对象 2 传递参数存储在Message对象的相应属性中 即在Message StringParm中 数值在Message DoubleParm中 PowerBuilder对象在Message PowerObjectParm中 3 要返回多个值 应创建存放传递参数的用户自定义结构 访问Message对象的PowerObjectParm属性 4 传递事件参数为word或long数据类型 传递参数存储在Message对象的相应属性中 即WordParm和LongParm中 如果Long参数值为字符串 可在被触发的事件中 使用String函数 并用address关键字指定参数的格式 3 3 2用户自定义窗口函数 定义和使用用户自定义函数的步骤 如果函数定义区没有打开 则可以用下列两种办法之一将其打开 1 单击Insert菜单标题下的Function菜单项 3 3 2用户自定义窗口函数 2 点击脚本子窗口左上边的下拉列表框的小三角 选择弹出列表选项中的Function项 3 3 2用户自定义窗口函数2 函数定义区 弹出的函数定义区见图 3 3 2用户自定义窗口函数 在Access中选择函数返回值的访问控制范围 在ReturnValue栏中选择返回值的数据类型 在FunctionName栏中输入函数的名称 定义函数的入口参数 在Value下拉列表框中选择入参的传递方式 在ArgumentType下拉列表框中选择入参的数据类型 在ArgumentName栏中输入入参的名称 3 3 2用户自定义窗口函数 3 函数的使用函数的使用有静态调用和动态调用两种方式前者是系统缺省的函数调用方式 静态调用 就是系统在编译代码时就对函数进行彻底地编译 对返回值以及入参进行检查和匹配 出现问题立即报告错误 例如 在窗口w 1中定义了一个整型数的加法运算函数integerAddFunc integeradd1 integeradd2 则静态调用的方法为 intvalue w 1 AddFunc 123 456 动态调用的函数在执行的时候才会去查找和调用相应的函数 在程序编译时可以没有该函数 优点是程序的开发具有极大的灵活性 缺点是降低了应用程序执行的速度 缺少调试编译中的错误检查功能 动态调用的方法是在函数名称前加上DYNAMIC 动态调用的方法示例 intvalue w 1 DYNAMICAddFunc 123 456 3 4窗口事件 程序设计的一个显著特点是客户程序和函数大都是由事件触发的 编程者需要在某一事件发生的时候进行相关的处理 窗口的主要事件 Activate 在激活 Active 窗口前发生该事件发生后 窗口中第一个跳转次序号最小的对象首先得到焦点 如果窗口中没有这样的对象 则窗口本身得到焦点Clicked 参数UnsignedLongflags Integerxpos Integerypos用户单击窗口中空白区域时发生 flags指明用户按了鼠标的哪个键及按键时用户是否按住了Alt或Ctrl键 xpos指明单击时鼠标指针离窗口左边缘的距离 ypos指明单击时鼠标指针离窗口上边缘的距离Close无窗口被关闭时发生 触发该事件后 没有办法能够阻止窗口关闭操作CloseQuery 开始关闭窗口时 发生该事件 返回值为0或1 执行该事件的事件处理程序后 检查返回值 返回值为1 窗口不被关闭 紧随其后发生的Close事件不被产生 返回值为0 窗口被关闭 用该事件程序能够根据当前状态提醒保存数据 询问是否真要关闭窗口 窗口被关闭时 关闭任何与之相关的子窗口和弹出窗口Deactivate 窗口变为不活动时发生DoubleClicked 参数 UnsignedLongflags Integerxpos Integerypos当双击窗口客户区中任何未被有效控件占用的部分时发生 各参数的意义与Clicked事件相同 3 4窗口事件 DragEnter 参数 DragObjectsource当可拖放对象进入窗口客户区时发生 参数source是个引用 指明被拖动的是哪个对象DragLeave 参数 DragObjectsource当可拖放对象离开窗口客户区时发生 参数source是个引用 指明被拖动的是哪个对象DragWithin 参数 DragObjectsource当可拖放对象在窗口客户区中被拖动时发生 参数source是个引用 指明被拖动的是哪个对象HotLinkAlarm 在动态数据交换 DDE 服务器应用发送了新的 修改后的 数据 且客户DDE应用程序已经接收到数据时发生Key 参数 key 枚举型键码 ULongkeyflags在键盘上按下一个键且插入点不在编辑区域中时发生 参数key是个枚举型数据 指示按下了哪个键 参数keyflags指明按键时是否同时按住了Alt和 或Ctrl键MouseDown 参数 UnsignedLongflags Integerxpos Integerypos在窗口客户区中未被有效控件占用的部分按下左键时发生 各参数的意义与Clicked事件相同 flags的值总为1MouseMove 参数 UnsignedLongflags Integerxpos Integerypos当鼠标在窗口内移动时发生 各参数的意义与Clicked事件相同MouseUp 参数 UnsignedLongflags Integerxpos Integerypos当用户在窗口客户区中任何未被有效控件占用的部分放开鼠标左键时发生 各参数的意义与Clicked事件相同 3 4窗口事件 Open 在窗口打开之后 显示之前发生 下述函数触发窗口的Open事件 Open OpenWithParm OpenSheet OpenSheetWithParmRButtonDown 参数 UnsignedLongflags Integerxpos Integerypos当用户在窗口客户区中任何未被有效控件占用的部分按下鼠标右键时发生 各参数的意义与Clicked事件相同RemoteExec 一个DDE客户应用程序发送了一条命令时发生RemoteHotLinkStart 一个DDE客户应用程序要开始一个热连接时发生RemoteHotLinkStop 一个DDE客户应用程序要结束一个热连接时发生RemoteRequest 一个DDE客户应用程序请求数据时发生RemoteSend 一个DDE客户应用程序已经发送了数据时发生Resize 参数 ULongsizetype Integernewwidth Integernewheight窗口大小发生变化 窗口被打开时产生此事件 参数sizetype指明改变窗口大小的类型 newwidth指明窗口的新宽度 newheight指明窗口的新高度SystemKey 参数 key 枚举型键码 ULongkeyflags插入点不在编辑框中且用户按下Alt或Alt 其它键时发生 各参数的含义与Key事件类似Timer 调用Timer函数启动定时器 设定时间后发生ToolbarMoved MDI窗口上的工具栏被移动时发生 3 4窗口事件 当第一次打开窗口时 在窗口显示之前系统触发Open 打开 事件 在Open事件发生时 系统已经创建了窗口及窗口中的控件 窗口被打开后 窗口类型 WindowType 属性不能再被更改 编写窗口的事件处理程序的步骤为 打开该窗口 如果脚本编辑区没有打开 可右键单击视图编辑区中设计的窗口 不要单击窗口上的任何控件 该步操作的目的是选中窗口 打开右键菜单 单击菜单中Script菜单项 即可打开脚本编辑区 在 选择事件 列表框中选择要编程的事件 例如Open 然后根据应用需要编写特定的程序 一般 窗口Open事件中 要安排窗口中控件和数据窗口的初始化程序 有关编程方法将在窗口控件中介绍 3 5 1在窗口中编写脚本 脚本采用PowerScript语言编写 脚本中可以使用各种窗口函数 系统函数 自定义函数和API函数 可以直接对窗口对象的属性赋值 改变它们的外观或行为 可以测试属性的值 获取窗口对象的信息 例如 在窗口的Key事件中 捕捉用户的按键 并根据按键的类型进行不同的处理 可以在窗口的Key事件脚本区中编写如下代码 key为系统捕捉到的用户按键 keyenter 为 回车 键的枚举值ifkey keyenter thencb ok triggerEvent Clicked 触发cb ok控件的Clicked事件endif窗口的Open事件是对窗口以及窗口中控件进行初始化的地方 编写脚本的机会最多 3 5 2窗口设计实例 设计一个窗口应用程序 运行程序时打开主窗口 在主窗口中单击鼠标右键后 每隔10秒弹出一个消息对话框 再次单击右键则停止弹出消息对话框 在主窗口中单击鼠标左键就弹出一个响应式子窗口

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论