PB14第14章用户自定义对象.ppt

上传人:sh****n 文档编号:6397338 上传时间:2020-02-24 格式:PPT 页数:31 大小:632KB
返回 下载 相关 举报
PB14第14章用户自定义对象.ppt_第1页
第1页 / 共31页
PB14第14章用户自定义对象.ppt_第2页
第2页 / 共31页
PB14第14章用户自定义对象.ppt_第3页
第3页 / 共31页
点击查看更多>>
资源描述
第14章用户自定义对象 用户对象具有下述优势 1 避免了在应用程序的不同地方编写功能相同或相近代码的麻烦 提高了应用程序的可维护性 2 用户对象可以把一组总在一起使用的可视控件组合在一起 构成一个完成特定功能的控件 应用程序可以随时使用它 3 用户对象提供了构造具有一致外观的可视部件的方法 4 用户对象能够把相关功能封装在一起 5 用户对象允许开发人员扩展某些对象的功能 用户对象的命名一般以 u 为前缀 用户对象控件或实例的命名一般以 uo 为前缀 第14章用户自定义对象 14 1可视用户对象14 2类用户对象14 3用户对象使用编程实例 14 1 1创建标准可视用户对象 标准可视用户对象在现有控件基本功能的基础上增加应用程序需要的功能 继承了原始控件的各种特征 包括属性 事件和函数 例如 命令按钮只能用鼠标点击 而不响应回车键 可以利用标准可视用户对象 来定制一个用户对象 既能用鼠标点击 又可以按回车键操作 点击主窗口的工具栏图标按钮New或选择主菜单File的New子菜单 将打开标题为 New 的窗口 选择Object页 图14 1创建用户对象 14 1 1创建标准可视用户对象 打开标题为 SelectStandardVisualType 的窗口 选择所要的对象类型 点击Ok按钮 这里我们选择commandbutton来定制一个命令按钮用户对象 图14 2选择对象类型 14 1 1创建标准可视用户对象 选好标准对象类型后 将打开用户对象画板 该界面和创建窗口的界面相似 在这里可以设置CommandButton的属性如Text 字体 控件大小等作为该用户对象的默认值 还可以定义用户函数和用户事件 并给某些事件编写代码 图14 3定义可视用户对象 14 1 1创建标准可视用户对象 给该用户对象定义一个用户事件以响应用户的回车键操作 用户事件名为 ue enter 事件号选 pbm keydown 14 4在用户对象中定义用户事件 14 1 1创建标准可视用户对象 在该事件中输入代码 ifKeyDown KeyEnter then 如果是回车键 则触发鼠标单击事件this TriggerEvent Clicked endif保存该用户对象 名为u commandbutton 定义了一个可视用户对象u commandbutton 该对象除具备标准的CommandButton命令按钮的属性 事件 函数外 还有用户自定义事件ue keyenter 当焦点落在该控件上时 用户按回车键将触发该事件 14 1 2使用可视用户对象 可视用户对象定义好后 就可以象标准控件那样使用 在窗口打开后 点击工具栏上的控件工具箱中的用户对象UserObject图标按钮 14 1 2使用可视用户对象 将出现标题为 SelectObject 的窗口 在其中列出了当前pbl文件中所有的用户对象 选择一个用户对象 点击OK按钮或直接双击所选的用户对象 这里选u commandbutton 调整用户对象在窗口中的位置 大小 并设置必要的属性 这样 当焦点落在该控件上时 按回车键将触发Click事件 图14 6选择用户对象 14 1 3修改用户对象 修改用户对象 选择工具栏的Open图标 打开标题为 Open 的窗口 在ApplicationLibraries中选择要修改的用户对象所在的pbl库文件 在对象类型ObjectType中选择UserObjects 选择要修改的用户对象 点击OK按钮或直接双击所选的用户对象 将打开用户对象定义画板 如前图14 3所示 14 1 4创建定制可视用户对象 定制可视用户对象是将多个控件以及可视用户对象组合成一个整体 完成一定的功能和操作 选择主窗口工具栏上的图标按钮New或选择主菜单File的New子菜单 将打开标题为 New 的窗口 选择Object页 图14 8选择定制可视用户对象 14 1 4创建定制可视用户对象 定制可视用户对象画板 在左上角的窗口上放置所需的控件和已定义的可视用户对象 还可以定义用户函数和用户事件 并给某些事件编写代码 14 1 4创建定制可视用户对象 注意 该可视用户对象中的控件的大小 位置等属性不能在窗口上改变 而只能在如图14 9所示的定制可视用户对象画板中修改 创建的定制可视用户对象作为一个整体来使用 与其它用户对象的一个明显差别是 定制可视用户对象中包括了多个控件 窗口中的代码控制定制可视用户对象中的控件时 需要用 用户对象名 控件名 属性或函数 这样的格式 例如 uo 1 cb ok text 确定 cb ok是用户对象中的一个控件st 1 text uo 1 sle 1 text sle 1是用户对象中的一个控件 st 1是窗口上的一个控件uo 1 lb 1 additem sle 2 text lb 1是用户对象中的控件 sle 2是窗口上的控件 14 1 5创建外部可视用户对象 使用外部控件的目的通常是为了完成PB本身难以完成或不支持的功能 选择主窗口工具栏上的图标按钮New或选择主菜单File的New子菜单 选择Object页 图14 10创建外部可视用户对象 14 1 5创建外部可视用户对象 在图14 10Object页中选择ExternalVisual项 点击OK按钮或直接双击ExternalVisual项 将打开外部可视用户对象画板 图14 11外部可视用户对象画板 14 1 5创建外部可视用户对象 图14 11中 在LibraryName中输入外部用户对象所在的DLL文件名 或者单击Browse按钮选择DLL文件 在ClassName编辑框中键入DLL中的注册类名 该类名通常由生产DLL的厂商提供 在 Text 编辑框中输入显示在控件上的文本 并非都需要此项 根据需要设置其它属性 说明用户对象所需的函数 事件 变量 结构 编写用户对象的各种事件处理程序 最后保存用户对象 定义了外部可视用户对象后 就可以在窗口 定制可视用户对象等多个地方运用该对象了 注意 要创建外部可视用户对象 必须知道外部用户对象所在的DLL文件名和注册类名 14 2 1创建标准类用户对象 选择主窗口工具栏上的图标按钮New或选择主菜单File的New子菜单 将打开标题为 New 的窗口 选择Object页 图14 12定义标准类用户对象 14 2 1创建标准类用户对象 在图14 12的Object页中选择StandardClass项 点击OK或直接双击StandardClass项 打开标题为 SelectStandardClassType 的窗口来选择创建的用户对象所继承的内部系统对象 图14 13选择标准对象类 14 2 1创建标准类用户对象 选择所要的对象类 点Ok 打开标准类用户对象定义画板 类用户对象是不可见的 不能在它上面布置任何的可视控件 为这个对象封装属性 函数和事件以及变量等 编写用户对象所需的各种事件处理程序 最后保存用户对象 图14 14标准用户类画板 14 2 2使用类用户对象 使用类用户对象时 需要在代码中创建它的一个实例 步骤为 1 说明类用户对象类型的变量 用CREATE语句创建该对象的一个实例 2 在变量的整个作用域中 代码都能访问该对象的属性 事件 函数 就像使用系统预定义对象那样 比如事务处理对象SQLCA 3 不再使用该用户对象时 使用DESTROY语句删除该对象 以释放它所占的内存 14 2 2使用类用户对象 例如 我们已经创建了一个标准类用户对象u datastore 它从数据存储对象Datastore继承得到 那么代码中可以这样使用 u datastoremyds 声明u datastore类型的变量mydsmyds CREATEu datastore 创建用户对象实例mydsmyds DataObject d user search 将数据窗口对象与类用户对象联系起来myds SetTransObject SQLCA 设置类用户对象使用的事务对象ret myds Retrieve math 检索数据据 应用程序所需的其它处理DESTROYmyds 使用后删除用户对象 14 2 3创建定制类用户对象 定制类用户对象是用户自己设计的对象 用于封装不需要可视特性的处理过程 这些对象并不继承某个对象或控件 完全由用户通过定义实例变量 函数 事件来实现 定制类用户对象只有两个系统预定义事件 Constructor和Destructor 其创建过程和使用方法完全类似于标准类用户对象 要将用户对象删除 只有在Library工作区才能实现 方法是打开Library工作区 右击要删除的对象 出现弹出式菜单 选择Delete 打开一个提示框 选择Yes 删除所选的对象 参见PBL库管理器 14 3用户对象使用编程实例 在用户自定义事件的编程实例中 要求当焦点落在命令按钮上时 按回车键能代替鼠标 在数据窗口中 按回车键可以跳到下一个输入项 而不是下一行 在最后一行的最后一列按回车键时 将增加一个空行 在最后一行按向下的箭头键 时 也增加一个空行 图14 15用户对象使用实例 14 3用户对象使用编程实例 应该设计一个统一的按钮 无须在每个用到的地方分别编程 使用用户对象可以方便的解决问题 实例创建步骤如下 1 创建一个ustudent pbl 其ApplicationObject为ustu 再建一个窗口w uobject 2 创建标准可视用户对象 它是从标准控件commandbutton命令按钮继承来的 给该用户对象增加自定义事件ue keyenter 事件号为pbm keydown 该用户对象能够响应鼠标和回车键操作 在该用户对象的事件ue keyenter中输入以下代码 ifKeyDown KeyEnter then 如果是回车键 则触发鼠标单击事件this TriggerEvent Clicked endif保存该用户对象 名为u commandbutton 14 3用户对象使用编程实例 3 再创建标准可视用户对象 也是从标准控件commandbutton命令按钮继承来的 给该用户对象增加自定义事件ue keyenter 事件号为pbm keydown 该用户对象能够响应鼠标和回车键操作 并关闭控件所在的窗口 l在该用户对象的自定义事件ue keyenter中输入以下代码 ifKeyDown KeyEnter then 如果是回车键 则触发鼠标单击事件this TriggerEvent Clicked endifl在该用户对象的事件click中输入以下代码 close parent 关闭控件所在的窗口保存该用户对象 名为u cb return 4 创建标准可视用户对象 它是从标准控件datawindow数据窗口继承来的 给该用户对象增加两个自定义事件和一个自定义函数 14 3用户对象使用编程实例 l一个事件是ue keyenter 事件号为pbm dwnprocessenter 该事件的主要功能是按回车键可以跳到下一个输入项 不是下一行 当在最后一行的最后一列按回车键时 将增加一个空行 l一个事件是ue keyarrow 事件号为pbm dwntabdownout 该事件的主要功能是在最后一行按向下的箭头键 时 增加一个空行 l自定义函数是uf getcolnumber 无入口参数 返回值表示数据窗口中的列数 该函数的功能就是求当前数据窗口中的列的数目 l在该用户对象的自定义函数uf getcolnumber 中输入以下代码 返回当前数据窗口的列数longrowintcol oldcol retrow this getrow oldcol this getcolumn oldcol为当前列ifrow 1thenreturn0 数据窗口为空则返回 14 3用户对象使用编程实例 下面循环的意思是从第一列开始设置为当前列 若设置成功 则将下一列设置为当前列 直到设置失败 setcolumn函数返回 1 这时列数就是col 1 假设数据窗口的列数不超过10000列 forcol 1to10000ret this setcolumn col ifret 1thenthis setcolumn oldcol 将原来的列恢复为当前列returncol 1 返回数据窗口中的列数endifnextreturn0l在该用户对象的自定义事件ue keyenter中输入以下代码 intcol colnumlongrowcolnum uf getcolnumber 求数据窗口的列数 14 3用户对象使用编程实例 ifcolnum 1thenreturn1 如果列数小于1 则返回col getcolumn row getrow ifcol colnumthen 当前列不是最后一列setcolumn col 1 将下一列变为当前列elseifrow rowcount then 当前列是最后一列但当前行不是最后一行setrow row 1 将下一行的第一列变为当前列scrolltorow row 1 setcolumn 1 else 当前列是最后一列且当前行是最后一行row insertrow 0 增加一行setrow row 将新行的第一列变为当前列scrolltorow row setcolumn 1 endifendifreturn1 放弃原来的操作 14 3用户对象使用编程实例 l在该用户对象的自定义事件ue keyarrow中输入以下代码 longrowrow insertrow 0 增加一行setrow row 将新行变为当前行scrolltorow row 5 在窗口w uobject上创建用户对象控件 dw 1 从u datawindow继承而来cb append 从u commandbutton继承而来cb insert 从u commandbutton继承而来cb delete 从u commandbutton继承而来cb retrieve 从u commandbutton继承而来cb update 从u commandbutton继承而来cb return 从u commandbutton继承而来分别给cb append cb insert cb delete cb retrieve cb update控件的text属性赋值 给dw 1的dataobject属性赋值 即将控件与某个数据窗口对象相关联 14 3用户对象使用编程实例 l给应用对象ustu的open事件编写代码 SQLCA AutoCommit Truesqlca DBMS odbc sqlca database student sqlca dbpass dba sqlca userid sql sqlca servername sqlca dbparm Connectstring DSN student UID dba PWD sql sqlca logid sqlca logpass connect ifsqlca sqlcode0thenmessagebox 错误信息提示 不能连结数据库 r n r n请询问系统管理员 stopsign returnendifopen w uobject 14 3用户对象使用编程实例 l给窗口w uobject的open事件编写代码 dw 1 SetTransObject SQLCA l给增加记录的命令按钮cb append的clicked事件编写代码 longrowrow dw 1 insertrow 0 dw 1 setrow row dw 1 scrolltorow row dw 1 setfocus l给插入记录的命令按钮cb insert的clicked事件编写代码 longrowrow dw 1 insertrow dw 1 getrow dw 1 setrow row dw 1 scrolltorow row dw 1 setfocus l给删除记录的命令按钮cb delete的clicked事件编写代码 dw 1 deleterow dw 1 getrow l给显示记录的命令按钮cb retrieve的clicked事件编写代码 dw 1 retrieve l给存盘的命令按钮cb update的clicked事件编写代码 dw 1 update
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!