首页 产业资讯 研究咨询 媒体出版  行业管理 市场商务 科技文献 资源中心
您现在的位置:计算机世界 >>> 软件与编程版 >>> 技术讲座 >>> (1997年10期)


PowerBuilder应用开发系列讲座(14)

PowerBuilder的事件

华天新技术开发公司 张健姿(Email:sjhzyz@public.bta.net.cn)
     熟悉Windows编程的人员都知道,Windows的API为程序员提供了大量的消息,约有200多个 。在PowerBuilder中,系统将每个Windows消息作为事件传递给程序员处理,并且为大多数普 通的事件提供了缺省处理。
     PowerBuilder在语句描绘器中为每一个标准的控件设定了一些常用事件,一般的编程人 员基于这些事件就基本可以完成常见的操作。如果我们遇到事件的处理需要另外截获Windo ws的消息,我们可以在语句描绘器菜单的"Declare|UserEvent..."中加入一个新的事件,同时 指出您所希望对应的Windows消息。
     Windows API的消息一般以两到三个字符的标识开始,这个标识标明了该消息的来源或对 象。例如:pbm_active实际上对应的是WM_ACTIVATE,WM说明该消息是一窗口消息。其它的消 息前缀包括:
     *BM 按钮消息
     *BN 按钮通知消息
     *CB 通用对话框消息
     *CBN 通用对话框通知消息
     *DM 对话框消息
     *EM 编辑器控件消息
     *EN 编辑器控件通知消息
     *LB 列表框消息
     *LBN 列表框通知消息
     *MM 多媒体消息
     *SBN 卷滚条通知消息
     此外还有一个DDE消息,DDE消息从技术上来说属于窗口消息,但在这里我们把它们分离出 来,因为PowerBuilder并不完全支持全部的DDE消息。
     消息一般告诉某个对象(如按钮)去执行一些动作。通知消息一般由某个控件发出,它通 知应用程序某些事件在其上发生了。WaiteGroup的《Windows API编程字典》详细描述了这 200多个消息的具体含义。这些消息,我们在PowerBuilder中也可以用Send(handle,message _no,word,long)函数发出。
     所有的PowerBuilder自动映射的事件名都以"Pbm"为前缀,例如,BM_GETCHECK变成了pbm _bmgetcheck。通过向定义用户事件对话框中增加事件,程序员可以在需要的时候截获这些消 息。
     PowerBuilder还有另一类消息是标准的Windows API所不提供的消息。这类消息以"dw" 或"dwn"开头,如pbm_dwnretrieveend。这些是与数据窗口有关的消息和通知消息,因为数据 窗口不是标准窗口对象,它们有它们自己的事件。
     下面我们解释一下PowerBuilder中以pbm开头的内部映射事件的含义。限于篇幅,我们不 能全部介绍,只能按类举一些主要例子,其余的事件类推。
     单选或多选按钮消息(前缀:pbm_bm)
     getcheck 单选按钮或多选按钮是否被选
     getstate 按钮是否加亮
     setcheck 将无线按钮或确认框的选中状态改为未选中状态,反之亦然
     setstate 加亮或不加亮按钮
     change 改变按钮的风格,例如,改为单选按钮或组合框
     单选或多选按钮通知消息(前缀:pbm_bn)
     clicked 按钮控件被点中
     disable 使按钮控件无效
     double-clicked 按钮控件被双点
     dragdrop 一个对象被放到按钮控件
     dragenter 一个对象被拖到按钮控件
     dragleave 一个对象被拖离按钮控件
     dragover 一个对象被拖经按钮控件
     hilite 按钮控件被加亮
     paint 按钮控件被绘制
     setfocus 按钮控件获得聚焦
     unhilite 按钮控件不被加亮
     通用对话框消息(前缀:pbm_cb)
     addstring 将字符串加到通用对话框
     deletestring 从通用对话框删除一个字符串
     dir 加一个目录列表到通用对话框
     findstring 搜索以一组字符开头的字符串
     findstringexact 搜索与所提供的字符完全匹配的字符串
     getcount 列表框中的项数
     getcursel 当前被选项的数目
     getdroppedcontrolset 列表框在屏幕上的坐标位置
     geteditsel 编辑器控件中被选字符的范围
     getextendedui 缺省或扩展的用户界面
     getitemdata 重画的列表框中的4字节(32位)项
     getitemheight 列表框中某一项的高度
     getlbtext 列表框中的文本
     getlbtextlen 列表框中文本的长度
     insertstring 向列表框中增加新的字符串或4字节项
     limittext 限制能被输入到列表框中的字符数
     resetcontent 删除列表框中所有元素
     selectstring 搜索匹配的字符串并显示
     setcursel 在列表框中选择并显示一项
     seteditsel 在列表框的编辑区域中选择一块文本
     setextendedui 设置缺省或扩展的用户界面
     setitemdata 在列表框中设定4字节(32位)项
     setitemheight 设置列表框中项的高度
     showdropdown转换(显示或隐藏)列表框中拖放区域
     通用对话框通知消息(前缀:pbm_cbn)
     dblclk 用户在列表中某一项上双点
     dragdrop 一个对象被放到通用对话框控件上
     dragenter 一个对象被拖到通用对话框控件上
     dragleave 一个对象被拖离通用对话框控件
     dragover 一个对象被拖经通用对话框控件
     dropdown 列表框的下放区域即将被显示
     editchange 编辑器控件中的文本发生变化
     editupdate
     列表框编辑器控件中的文本即将被改变
     errspace
     列表框满,不能再向其中加入项
     killfocus
     通用列表框失去聚焦
     selchange
     列表框中被选文本被改变
     selendcancel
     用户按下了"取消"按钮
     selendok
     用户按下了"确认"按钮
     setfocus
     通用对话控件拥有聚焦
     数据窗口消息(前缀:pbm_dw)
     closedropdown
     关闭下拉式数据窗口
     scrollend
     在数据窗口中卷滚到最后一行
     scrollhome
     在数据窗口中卷滚到第一行
     scrolllineend
     卷滚到当前行的行尾(水平方向)
     scrolllinehome
     卷滚到当前行的行首(水平方向)
     数据窗口通知消息(前缀:pbm_dwn)
     backtabout
     即将通过Shift+Tab组合键离开该控件
     changing
     控件即将被改变
     dropdown
     下拉式列表框的下拉部分即将可见
     graphcreate
     即将创建图形
     itemchangefocus
     数据窗口控件中当前项的聚焦改变
     itemvalidationerror
     对当前项的修改引起了一个合法性检查错误
     key
     有键被按下。使用KeyDown()处理键盘值
     lbuttondown
     鼠标左键被按下
     lbuttonup
     鼠标左键被松开
     mbuttonclk
     鼠标中键点击
     mbuttondbclk
     鼠标中键双击
     mousemove
     鼠标移动
     printmarginchange
     打印边界被改变
     processenter
     回车键被按下
     rowchange
     数据窗口中聚焦从一行转向另一行
     tabdownout
     用户在数据窗口最后一行按了下箭头键
     tabout
     用户在数据窗口的最后一行/列中按了tab键
     tabupout
     用户在数据窗口第一行中按了上箭头键
     动态数据交换(DDE)消息(前缀:pbm_dde)
     ddeack
     收到一个DDE消息
     ddeinitiate
     开始一个DDE会话
     ddeterminate
     终止一个DDE会话
     编辑器控件消息(前缀:pbm_em)
     canundo
     编辑器控件是否能撤消上一次修改
     emptyundobuffer
     清空由Windows管理的取消操作的缓冲区
     fmtlines
     在多行编辑器控件的行尾增加或删除回车换行
     getfirstvisibleline
     返回编辑器控件中可见的第一行的行号
     gethandle
     获得编辑器控件使用的内存句柄
     getline
     从编辑器控件中复制一行到内存中的一个缓冲区
     getlinecount
     返回多行编辑器控件的行数
     getmodify
     文本是否被用户修改
     getrect
     返回控件的长方形域
     getsel
     返回被选文本的起始位置
     limittext
     限制用户键入的文本长度
     linefromchar
     返回被选文本的行号
     lineindex
     返回编辑器控件中被选行第一个字符在编辑串中的位置
     linelength
     返回编辑器控件中被选行中的字符数
     linescroll
     水平或垂直卷滚编辑器控件
     replacesel
     从剪贴板或从键盘上用新文本替换被选文本
     sethandle
     设置编辑器控件的句柄指向内存中的一个缓冲区
     setmodify
     设置编辑器控件的modified标志
     setpasswordchar
     设置用户输入任何文本时显示的字符,在输入密码时的显示
     setrect
     设置/重置编辑器控件所在的长方形区域,编辑器控件中的文本被重画。
     setrectnp
     除了不重画文本,大致与setrect相同
     setsel
     选择字符
     settabstops
     在多行编辑器控件中设置tabstops
     setwordbreak
     设置新的词拆分函数
     setwordbreakproc
     设置新的词拆分过程
     undo
     撤消最近的编辑操作
     编辑控件通知消息(前缀:pbm_en)
     change
     编辑器控件中的文本发生改变
     errspace
     编辑器控件内存缓冲区溢出
     hscroll
     用户点中上水平卷滚条
     maxtext
     用户试图输入比允许更多的文本
     update
     编辑器控件即将显示用户的修改
     vscroll
     用户点中了垂直卷滚条(未完待续)


 关于我们  招聘信息  网站地图  联系方式  版权声明
  © 版权所有 工业和信息化部电子科学技术情报研究所 1998-2009 |京ICP备05037055号 010-88686068