




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PBPB 数据窗口数据窗口 数据窗口控件 datawindow PB9 0 提供了 28 个属性 35 个默认事件 162 个函数 注意与数据窗口对象的区分 其他 脚本的执行效率 尽量不要在 RetrieveRow 事件下编写脚本 包括注释 如果数据窗口的 DoubleClicked 事件中编写了脚本 那么在数据窗口的 C1icked 事件中的 脚本应该尽量短 否则双击事件中的脚本永远不可能得到执行 一般来说 Cliked 中脚本 的执行时间和两次击鼠标之间的间隔时间之和 不应该大于操作系统中所设定的鼠标双击 时间间隔 否则双击事件永远不可能触发 双击时仅仅是接连两次触发 c1icked 事件 在数据窗口中录入数据时 事件 EditChanged 是触发频率最高的 每一个按钮都触发该事 件 触发频率仅次于该事件的是 ItemChanged 事件和 ItemFocusChanged 只要修改了单元 中的内容 每次触发 ItemFocusChanged 事件都会触发 ItemChanged 事件 在这些事件下编 写过长的脚本会非常影响录入工作的效率 同样 事件 RowFocusChanged 的触发频率也是 相当高的 一般来说是可以避免在这四个事件中编写脚本的 dwo 参数使用 数据窗口的某些事件中可以使用一个称为 dwo 的变量 该变量保存数据窗口中的部分信息 用数据窗口的属性可以读取这些信息 dwo type 读取在 dwo 中保存的对象类型 对象类型 可能有 bitmap button column compute graph groupbox line ole ellipse rectangle roundrectangle report tableblob text datawindow 当用户没有单击特定对象时 dwo Name column 的列名 dwo Primary row column 的数据 dwo Selected 选中 column 的数据 数据缓冲区 数据窗口在运行时要创建四个缓冲区 分别是主缓冲区 删除缓冲区 过滤缓冲区和原始 缓冲区 这四个缓冲区各司其职 共同配合 来保证数据窗口对数据的正确处理 下面分 别加以介绍 1 主缓冲区 Primary 这是最重要的一个缓冲区 保存的是当前显示在数据窗口中的所有数据以及它们的修改状 态 在保存数据时使用这些状态生成 SQL 语句 平常的大多数操作都是针对该缓冲区 函 数中的缓冲区参数缺省也是该缓冲区 2 删除缓冲区 Delete 该缓冲区保存所有删除了的数据 保存数据时 该缓冲区中的数据用来产生 delete 语句 在数据没有提交到数据库之前 可以从该缓冲区中将数据恢复出来 数据提交后 该缓冲 区中的数据清空 3 过滤缓冲区 Filter 该缓冲区中保存的是没有通过过滤规则的所有数据 这些数据在存储时同主缓存区的数据 一起生成相应的 insert 或 update 语句 4 原始缓冲区 original 用来保存从数据库中检索到的初始值 在保存数据时用来生成 where 语句 上面这四个缓冲区中 original 缓冲区在脚本中很少使用 其他三个经常涉及到 很 多数据窗口函数都需要指定对这三个缓冲区中的哪个进行操作 大多数情况下都使用缺省 的缓冲区 Primary 这三个缓冲区 除了保存相应的数据外 都自动维护这些数据的修改 标志 它们之间的协作也是自动维护的 例如 当使用过滤函数时 没有通过过滤规则的 数据自动从 Primary 缓存区移送到 Filter 缓存区 执行删除操作时 数据自动从 Primary 缓存区移送到 Delete 缓存区 所有这些数据的移送无需脚本的干预 只管使用相应的函数 即可 DWBuffer Primary 0 Delete 1 Filter 2 DWItemStatus NotModified 0 DataModified 1 New 2 NewModified 3 编辑控件 和数据窗口控件打交道都是通过编辑控件进行的 在数据窗口中录入数据 修改数据 实 际上是在修改单元上的编辑控件中的内容 当编辑控件移动到另外单元上之前 要对编辑 控件中的数据进行校验 如果能通过字段的校验规则 就保存到字段中 编辑控件是可以 移动的 需要编辑哪个单元 编辑控件就移动到哪个单元上 接受输入或者修改 编辑控件在没有离开当前字段时 用户录入或者修改的数据就不会被保存到字段中 如何 确保在数据窗口失去焦点时 最后位置上编辑框中的内容不被遗漏呢 前面介绍了在数据 窗口的 LoseFocus 事件中编写如下脚本 this AcceptText 这个方法在很多情况下能解决该问题 美中不足的是 如果编辑框中的内容不能通过字段 的校验规则 有时会显示两次错误信息窗口 造成两个错误信息窗口 往往是在选择其他 单元时发生 在数据窗口失去焦点之前 如单击 保存 按钮等 只会显示一个错误信息 窗口 用户选择其他单元时 编辑框中的数据开始进行校验 不能通过校验规则 显示校 验错误信息 在显示校验错误信息时数据窗口失去焦点 触发数据窗口的 LoseFocus 事件 执行 AcceptText 函数 又一次显示校验错误窗口 所以 显示两次校验错误窗口的原因是 LoseFocus 事件中的 AcceptText 函数造成的 可以 想法让该函数在这种情况下不执行 为此定义一个实例变量 Boolean ib accept True 该变量用来表示是否正确通过了校验 然后将 LoseFocus 中的脚本改成下面的脚本 If ib accept Then This AcceptText Else ib accept true End If 在数据窗口的 ItemError 事件中编写脚本 ib accept False 这样就可以解决显示两个校验错误信息窗口了 并且不会遗漏最后一个编辑框中的内容 当在某个单元中修改或者录入数据后 编辑框要离开时 要进行 4 个校验步骤 前面两个 步骤由 PowerBuilder 完成 后面两个由开发者编写 1 看数据和编辑前相比是否发生了改变 没有改变则不做任何处理 2 检查测试此值是否违反了任何一个在字段上定义的有效性校验规则 违反则拒绝接受此 值 并触发 ItemError 事件 3 检查此值是否与编辑前真的不同 没有改变则终止有效性校验 4 检查开发人员在 ItemChanged 事件中编写的脚本 具体的发生情况取决于分配给被称为 动作代码的值 读取和设置数据 读取 1 使用函数 dw 1 getitemX r 2 直接使用数据窗口对象属性来读取数据 dw 1 object data primary current row column 该语句的格式是 dwcontrol object data buffer whichvalue row column dwcontrol 是数据窗口控件名称 whichvalue 既可以是 current 缺省值 也可以是 original 这样就允许用户访问一个 列的初始值或当前值 row 和 column 是要访问的单元所在的行号及列号 object data 是保留字 buffer 是缓存区的名称 有 Delete Primary Filter 这种引用方法速度比较快 尤其读取大量数据时 设置 使用函数 SetItem SetText 属性 DataObject 数据源 Title 用来显示在数据窗口的标题条 TitleBar 上的一个字符串 建议该字符串要有一定的含 义 能够标明数据窗口的用途或者其中的数据的类别 该属性的缺省值 none 当属性 TitleBar 为 True 时 该属性起作用 Visible 是否显示数据窗口控件 缺省为 True 有时为了向其他数据窗口提供数据 除了使用 datastore 控件外 还可以使用 Visible 属性为 False 的数据窗口 如果仅仅是为了处理 数据 不赞成使用 Visible 属性为 False 的数据窗口 而应该使用 Datastore 对象 这样 可以节省计算机资源 提高处理效率 Enabled 数据窗口控件是否可以获得焦点 缺省为 True 可以在脚本中修改该属性以限制用户执行 了某些特定操作后再允许操作数据窗口 TitleBar 是否显示标题条 缺省为 False 使用该属性可以在数据窗口上部显示标题条 类似于窗 口的标题条 设置属性为 True 后 用户就能够拖动数据窗口 ControlMenu 是否显示控制菜单 缺省为 False 该属性当 TitleBar 属性为 True 时才有效 MaxBox 和 MinBox 是否显示最大和最小控制按钮 缺省为 False 当属性 TitleBar 为 True 时 该属性有效 属性 TitleBar 和 ControlMenu MinBox MaxBox 共同控制数据窗口的外观是否像窗口的外 观 HscrollBar 和 VscrollBar 这两个属性用来控制数据窗口控件的横向和纵向滚动条是否显示 设置为 True 时 滚动条 可以根据需要自动显示 数据够显示时则不出现滚动条 LiveScroll 该属性是一个比较重要的属性 缺省为 True 表示当拖动垂直滚动滑块时 数据窗口中的 行也跟随滚动 属性为 False 时表示拖动垂直滚动滑块时 数据窗口中的行不跟随滚动 放开垂直滚动滑块后 数据窗口中的数据才滚动到适当数据行上 建议选中该属性 这样 当数据很多时 用户就可以拖动垂直滚动小滑块来快速浏览数据了 HsplitScroll 该属性是一个非常有实际用途的属性 该属性决定是否显示分割滚动条 缺省为 False 当数据窗口比较宽 要显示水平滚动条时 建议将该属性设置为 True RightToLeft 该属性为 True 时表示数据窗口中的所有字符都从右向左显示 缺省为 False 当设置该属 性为 True 时 还必须要操作系统的支持 该属性才能起作用 Resizeable 用户是否可以调整数据窗口的大小 缺省为 False Border 是否显示边框 默认为 True 只有在 True 的情况下 BorderStyle 才起作用 BorderStyle 取值为枚举型 用来定义数据窗口边框样式 有四个取值 StyleBox StyleLowered StyleRaised StyleShadowBox 缺省边框类型为 StyleLowered Icon 用来给数据窗口指定标题条左上角的图形 缺省为 Windows 标志图 事件 Clicked 鼠标左键在数据窗口控件上任意位置单击时触发该事件 该事件中有 4 个参数 可以在脚 本中直接使用 xpos 表示和数据窗口最左侧的距离的整数 ypos 表示和数据窗口最上部的距离的整数 不包括标题条 row 表示用户所单击的行号的 long 型数 dwo 用户单击对象 是 DWObject 类型 在该事件的脚本中使用这些参数 可以给用户一些提示信息或者获取用户单击内容的信息 返回值 0 表示继续处理 这是缺省值 1 表示停止处理 当选择和当前行不同的数据行时可以触发 ItemFocusChanged 和 RowFocusChanged 事件 当单击当前行的其他字段时可以触发 ItemFocusChanged 事件 DoubleClicked 事件也可以 触发该 Clicked 事件 DBError 在数据窗口控件中发生数据库错误时触发该事件 该事件有以下参数 SQLdbcode long 类型的错误代码 具体含义由 DBMS 指定 当 DBMS 没有指定错误代码时 SQLdbcode 提供 4 个错误代码 1 表示事务对象参数错误而不能联结到数据库 2 表示不 能联结到数据库 3 表示因为其他用户的修改导致用来进行检索或修改的键值在数据库中 已经不存在而产生错误 4 表示向数据库中写 blob 对象时失败 SQLerrtext string 类型 数据库指定的错误信息 SQLsyntax string 类型 当错误发生时 发送到数据库的 SQL 语句 buffer DWBuffer 枚举型 表示导致错误的数据所在的缓冲区 row long 类型 导致错误的数据的行号 返回值 可以用 return 语句任意指定返回什么数据 有特定含义的返回值是 0 和 1 0 表 示显示错误信息 1 表示不显示错误信息 DoubleClicked 鼠标左键在数据窗口控件中双击时触发该事件 该事件中的 4 个参数和 Clicked 事件中的 名称及含义完全相同 也可以直接在该事件的脚本中直接使用 该事件的返回值可以用 return 指定 有特殊函数的返回值是 0 表示继续处理 EditChanged 在数据窗口控件的编辑框中每次按钮都触发该事件 一般很少在该事件下编写脚本 该事 件提供三个参数 row long 类型 当前编辑的行号 dwo DWObject 类型 正在编辑的对象 data String 类型 当前编辑框中的内容 返回值 可以用 return 指定任意返回值 0 表示继续处理 每次编辑时触发 Error 当数据窗口对象中的数据或者表达式错误时触发该事件 在分布式系统中联结发生错误时 也会触发该事件 和 DBError 事件不同的是 该事件在没有和数据库交互时就有可能触发 而 DBError 事件触发时肯定和数据库发生了交互 通常在该事件中编写脚本 提供对错误 的处理 该事件提供了很多参数 errornumber unsigned integer 类型 由 PowerBuilder 指定的错误代码号 errortext string 类型 由 PowerBuilder 指定的错误信息 errorwindowmenu string 类型 造成错误的脚本所在对象的父对象的名称 errorobject string 类型 造成错误的脚本所在的对象的名称 errorscript string 类型 造成错误的语句所在的脚本的全部内容 errorline unsigned integer 类型 造成错误的语句在其脚本中所占的行号 action 在 Error 事件下的代码执行完后 该参数取值由脚本设定 可以指定的值有 ExceptionFail 表示错误处理失败 执行该值有可能触发应用的 SystemError 事件 ExceptionIgnore 表示忽略错误继续执行 要谨慎使用该取值 因为忽略错误有可能将再 次导致其他错误 ExceptionRetry 值只能用于 OLE 对于数据窗口控件 没有该取值 该取值表示再次执行刚才造成错误的功能 ExceptionSubstituteReturnValue 表示使用参 数 returnvalue 的返回值 而不是返回 OLE 服务器或数据窗口控件的错误代码 并且取消 错误状态 returnvalue 当 Action 指定为 ExceptionSubstituteReturnValue 时返回该参数的取值 对于数据窗口控件来说 如果在运算数据或属性表达式时发生了错误 将进行如下的错误 处理过程 a 触发 Error 事件 b 如果 Error 事件中没有脚本或者 Action 变量设置成 ExceptionFail 则触发应用的 SystemError 事件 c 如果 SystemError 事件下也没有脚本 便会发生应用程序错误 然后终止应用程序 所以 在该事件或者应用的 SystemError 事件下应该编写脚本 这样才不至于退出应用程 序 使用户没有处理的机会 甚至录入了半天的数据连个保存的机会也没有了 返回值 该事件没有返回值 也不在该事件中使用 return 语句 ItemChanged 当某单元 行和列的交叉点叫做单元 编辑后 内容改变 光标要离开时触发该事件 如 使用了 Enter 按钮 单击了 Tab 按钮 使用了光标键 在其他字段上单击了鼠标左键等 当编辑完一个单元的内容而没有离开该单元 这时数据窗口失去焦点 这种情况不会触发 该事件 所以在 LoseFocus 事件中要使用函数 AcceptText 三个参数 row dwo 和 data 的含义和 EditChanged 事件的三个参数完全相同 返回值 可以使用 return 语句返回任意值 0 表示接受刚刚修改的数据 该值是缺省值 1 表示放弃刚才的修改 不允许焦点离开 2 表示放弃刚才的修改 允许焦点离开 编辑框内容有变化并离开此编辑框时触发 注意 当 editchanged 事件下有代码 编辑框 内容有变化且离开此编辑框时 不会触发此事件 ItemError 当某单元被编辑后光标要离开时 如果单元中的新数据不能通过有效性校验 则触发该事 件 同 ItemChanged 当编辑完一个单元的内容而没有离开该单元 这时数据窗口失去焦 点 这种情况不会触发该事件 该事件在 ItemChanged 事件之前触发 该事件触发就不能再 触发 ItemChanged 事件了 该事件中的三个参数和 ItemChanged 事件中的三个参数完全相 同 返回值 可以使用 return 语句返回任意数值 0 表示放弃修改的数据 并显示错误信息 焦点不离开该单元 该取值是缺省值 1 表示放弃修改的数据但不显示错误信息提示 焦 点不离开该单元 2 表示接受刚刚修改的错误数据 3 表示放弃刚刚修改的数据 并且焦点 不离开该单元 ItemFocusChanged 当焦点离开某单元时触发该事件 不管内容有没有改变 该事件提供了 row 和 dwo 两个参 数 含义和前面介绍的完全相同 可以使用 return 语句返回任意数值 0 表示继续处理 不管编辑框中的内容有没有改变 离开编辑框时触发该事件 注意 当离开数据窗口时不 触发 PrintEnd 当打印工作完成时触发该事件 参数 PagesPrinted 可以在脚本中直接使用 是一个 long 类型的变量 表示已经被打印的页数 PrintPage 在数据窗口每页进行打印格式处理之前触发该事件 参数 Copy 和 PageNumber 在脚本中可 以直接使用 表示该页要打印的份数和当前页的页号 返回值 0 表示不要跳过当前页 1 表示跳过当前页 一般在该事件下编写脚本显示打印进度信息 例如 st 1 text 正在打印第 String pageNumber 页 也可以在该事件中决定是否真正要打印该页 例如 下面的脚本只打印偶数页码的页面 If Mod pagenumber 2 0 Then return 0 Else return 1 End If PrintStart 数据窗口打印开始时触发该事件 该事件中的参数 PagesMax 是一个 long 型变量 表示将 要被打印的总页数 不包括跳过的页 返回 0 表示继续处理 RetrieveEnd 当数据窗口检索完毕时触发该事件 参数 rowcount 是一个 long 型变量 表示检索完后检 索到的记录数 RetrieveRow 每检索到一条记录时都触发该事件 参数 row 是 long 类型变量 记录当前检索到的数据的 序号 返回值 0 表示继续检索 1 表示停止检索 检索大量数据之前可以设置中断标志 让用户在检索过程中可以停止检索 RetrieveStart 当数据窗口的检索操作将要开始时触发该事件 该事件中没有参数 返回值 0 表示继续执 行 该值是缺省值 1 表示不执行检索 2 表示在检索之前不清除数据行和缓存区 通常不 在该事件下编写脚本 即使编写脚本 一般也是利用返回值 2 的特性来控制检索操作不清 除缓存区 这样可以将检索到的数据添加到数据窗口中 并且在数据窗口中保留检索之前 的数据 RowFocusChanged 当前行改变时触发该事件 CurrentRow 参数是一个 long 类型变量 保存当前记录号 该 事件下的典型编程是修改当前行标识 将当前行明显地标识出来 可以让用户清楚地知道 要对哪行进行操作 在该事件和其他事件的配合下共同修改当前行标识 不管内容有没有改变 当前行改变时触发 在离开数据窗口时不触发 RowFocusChanging 当前行改变前触发 参数 currentrow 触发前所在行 newrow 触发后 当前行 rowfocuschanged 的 currentrow 等于 rowfocuschanging 的 newrow ScrollHorizontal 当使用光标键 Tab 按钮 滚动条等等在数据窗口中进行水平滚动时触发该事件 很少在 该事件上编写脚本 ScrollVertical 当在数据窗口中使用光标键 滚动条 Tab 键等进行上下滚动时触发该事件 通常在该事 件中编写脚本来改变当前行 因为当上下滚动数据窗口时 如果当前行不在当前显示的区 域内 则容易给用户造成错觉 可以在该事件中编写脚本将当前页面的第一行数据设置为 当前行 使用 Describe 和 uate 函数可以实现该功能 SQLPreview 当执行函数 Retrieve ReselectRow 和 Update 时 SQL 语句要提交到 DBMS 这时触发该事 件 该事件的参数比较复杂 request 取值为 PreviewFunctionReselectRow PreviewFunctionRetrieve 或 PreviewFunctionUpdate 分别代表触发该事件的函数是 ReselectRow Retrieve 和 Update SQLtype 引起该事件的 SQL 语句类型 取值为 PreviewDelete PreviewInsert PreviewSelect PreviewUpdate 分别表示是 Delete Insert Select Update 语句 SQLsyntax string 类型 取值为提交到 DBMS 的 SQL 语句 buffer 当前 SQL 语句所涉及到的数据所在的缓存区 取值为枚举型 Delete Filter Primary 分别表示删除缓存区 过滤缓存区和主缓存区 row long 类型变量 表示该事件中涉及到的记录数 返回值 0 表示继续处理 1 表示停止处理 2 表示处理下一个 SQL 请求 UpdateEnd 当从数据窗口控件发送来的对数据库的修改都完成后触发该事件 该事件的三个参数 RowsInserted RowsUpdated RowsDeleted 都是 long 类型的变量 分别表示插入 修改 和删除的记录数 UpdateStart 在调用了 update 函数之后 开始修改之前触发该事件 该事件没有参数 返回值 0 表示继 续处理 1 表示停止修改 LoseFocus 数据窗口失去焦点时触发 该事件中编写脚本 主要是保证用户在数据窗口中最后输入的内容不丢失 数据窗口中的 输入内容只有当焦点改变时才真正转交给数据窗口 否则只是保存数据窗口的编辑控件 脚本比较简单 this AcceptText GetFocus 数据窗口得到焦点时触发 PBPB 数据窗口一数据窗口一 函数 SetTransObject 语法 dwcontrol SetTransObject transaction 功能 给数据窗口或者 datastore 控件 dwcontrol 设置事务对象 transaction 缺省事务 对象是 SQLCA 返回值 成功设置事务对象则返回 1 执行过程中发生了错误则返回 1 有任意参数为 Null 时返回 Null Retrieve 语法 dwcontrol Retrieve argument argument 功能 使用数据窗口控件的当前事务对象检索数据库中的数据 如果数据窗口控件对应的 数据窗口对象定义了检索参数 则应该在该函数中指定检索参数 参数的个数和数据窗口 对象的检索变量个数相等 对应的数据类型相兼容 返回值 返回数据窗口控件主缓存区 PrimaryBuffer 中的记录数 如果检索数据时发生 错误则返回 1 如果任意参数为 Null 则返回 Null 该函数的参数和数据窗口对象定义的参数的顺序要相同 类型要兼容 个数不能少于数据 窗口对象定义的参数 即可以等于和多于数据窗口对象定义的参数 多的参数忽略 DeleteRow 语法 dwcontrol DeleteRow row 功能 删除数据窗口 dwcontrol 中的第 row 行数据 如果 row 为 0 则表示删除当前行的数 据 返回值 执行成功则返回 1 执行错误则返回 1 如果任意参数为 Null 则返回 Null 该函数执行后只是将被删除的数据从数据窗口的主缓存区移放到 Deleted 缓冲区 在数据 库中并没有真正删除数据 当正确执行了 Update 函数并且使用 commit 语句提交了事务后 才真正从数据库中删除该数据 InsertRow 语法 dwcontrol InsertRow row 功能 在数据窗口 dwcontrol 的第 row 行前插入一行空白数据 当指定 row 为 0 时 表示 在当前行之前插入一行空白数据 返回值 返回插入的数据的行号 如果执行过程中发生错误则返回 1 如果任意参数为 Null 则返回 Null Update 语法 dwcontrol Update accept resetflag 功能 提交数据窗口或者 datastore 中的数据 如果 accept 为 True 表示在提交数据之 前自动执行 AccpetText 函数 否则不执行该函数 该参数缺省为 True 如果 resetflag 为 True 表示数据提交后自动清除修改标识 该参数缺省为 True 返回值 执行成功则返回 1 发生错误则返回 1 如果 dwcontrol 为 Null 则返回 Null AcceptText 语法 dwcontrol AcceptText 功能 该函数执行时 首先对当前编辑框中的内容进行对应字段的校验规则 能够通过校 验规则 则保存在对应字段中 否则显示校验信息提示错误 需要执行该函数的原因是 当在某字段上的编辑框中输入内容而没有移动光标到别的字段上时 其他控件获得焦点 此时编辑框中的内容不能被保存到字段中 所以就应该在数据窗口失去焦点时执行该函数 返回值 执行成功则返回 1 执行过程中发生错误则返回 1 如果 dwcontrol 为 Null 则返 回 Null 该函数在数据窗口的 ItemChanged 事件中不起作用 因为项目改变是发生在接受编辑框中 内容之后 ModifiedCount 语法 dwcontrol ModifiedCount 功能 获取数据窗口或者 Datastore 中被修改过但还没有提交到数据库中的记录数 返回值 返回 long 类型的数据窗口控件中被修改过的记录数 如果没有记录被修改过或者 修改后都已经保存到了数据库中则返回 0 执行过程中如果发生错误则返回 1 如果 dwcontrol 为 Null 则返回 Null 该函数获得的修改过的记录数包括主缓存区和 Filter 缓存区的被修改过的和新添加到数 据窗口中的记录数 DeletedCount 语法 dwcontrol DeletedCount 功能 获取数据窗口控件或者 datastore 控件 dwcontrol 中被删除的记录数 返回值 返回 long 类型的已经被删除但还没有提交到数据库中的记录数 如果执行过程中 发生了错误则返回 1 如果 dwcontrol 为 Null 则返回 Null 如果没有删除过记录则返回 0 RowsMove 它可以将数据从一个缓冲区移动到另外缓冲区中 该函数的语法是 dwcontrol RowsMove startrow endrow movebuffer targetdw beforerow targetbuffer 其中 dwcontrol 是进行移动操作的源数据窗口 startrow 和 endrow 是要移动数据的范围 包括这两个行号的数据 movebuffer 指要从哪个缓存区移出数据 可以是 Primary Delete Filter targetdw 是目标数据窗口控件名称 beforerow 表示在目 标数据窗口的哪一行之前插入移入的数据 如果该数值比目标数据窗口的行数大 则在最 后插入移入的数据 targetbuffer 是目标缓存区 取值同 movebuffer 一样 GetItemStatus 和 SetItemStatus 使用函数 dwcontrol GetItemStatus r row column Primary 可以获取该缓冲区内 指定单元的状态 当参数 column 为 0 时 表示读取整个行的修改状态 有以下状态 NotModified 指定单元的数据和原始数据相同 没有修改过 DataModified 指定单元的数据和原始数据不同 修改过 New 该数据行是新增加的 但还没有在该行上输入数据 NewModified 该数据行是新增加的 并且已经在该行上录入了数据 这些修改标识都是由数据窗口自动维护的 一般情况下没有必要编写脚本修改这些标记 但并不是说就不能修改 PowerBuilder 提供了函数 SetItemStatus 它的语法是 dwcontrol SetItemStatus row column dwbuffer status 其中 row 参数指定将要修改状态的行 column 参数指定将要修改状态的列 可以是整型的 列号 也可以是 string 类型的列名 当列号为 0 时表示要修改 row 指定的整行的状态 dwbuffer 指定要修改哪个缓冲区 肯定不能是 original status 为上面的四个取值中的 一个 但不是任意的取值 因为有些状态不能用该函数设置成另外一种状态 必须是能够 转换的状态 下面列出了能够转换的状态 期望的状态 New NewModified DataModified NotModified 当前状态 New Yes Yes No NewModified No Yes New DataModified NewModified Yes Yes NotModified Yes Yes Yes 表中的 Yes 表示可以使用 SetItemStatus 进行该状态设置 No 表示不会产生预期的状态 如果标明了某个特定的状态 则说明是新的状态 而不是期望的状态 例如 数据窗口 dw 1 的第 1 行第 1 列的当前状态为 DataModified 使用函数 dw 1 SetItemStatus 1 1 New 后 第 1 行第 1 列的状态改变为 NewModified 同样对于 该数据窗口 dw 1 如果使用函数 dw 1 SetItemStatus 1 1 NotModified 则会将其状态 改变为 NotModified 当从一种状态不允许转变到另一种状态时 可以修改成其他一个中 间状态 然后再进行一次转换 例如 要从 new 改成 NotModified 应该首先转换到 DataModified GetItemX 读取数据窗口中的数据 dwcontrol GetItemX r row column dwbuffer originalvalue 其中的 X 可以替换成 Date DateTime Decimal Number String Time 所以读取数据 的函数有 6 个 参数 row 表示要读取哪行的数据 是一个 long 类型数值 column 代表列 可以是 string 型的列名 也可以是整型的列号 dwbuffer 是 DWBuffer 枚举型 取值 Primary Delete Filter 分别代表主缓冲区 删除缓冲区和过滤缓冲区 originalvalue 为 Boolean 型 表示是否读取最近一次检索时检索到的初始值 当指定 dwbuffer 时必须指定该参数 该参数和 dwbuffer 都是可选的 函数正确执行则返回对应 类型的数据 执行过程中发生错误则返回空值 任何参数为 Null 则返回 Null SetItem 和 SetText 函数 SetItem 的语法格式是 dwcontrol SetItem row column value 各个参数的含义如下 dwcontrol 数据窗口或 datastore 控件名称 row 要设置的数据所在行 column 要设置的数据所在的列 可以用整型列号 也可以用 string 型列名 value 要设置的值 应该和要设置的列的类型一致 函数正确执行则返回 1 这时数据窗口中 row 行 column 列显示的数据是刚刚用该函数设定 的数据 如果函数执行过程中发生错误则返回 1 注意 该函数执行时仅仅检查函数中指 定数据的类型和字段的类型是否一致 不会进行有效性校验 包括在数据窗口中设置的校 验规则 在 ItemChanged 事件中编写的校验规则 在 ItemChanged 调用的校验规则都不会 执行 函数 SetText 的语法格式是 integer dwcontrol SetText string text 功能是设置当前编辑框中的内容 注意 当编辑框离开当前单元时要进行有效性校验 如 果校验数据正确 则当前字段接受该数据 否则触发 ItemError 事件 所以 可以使用该 函数给带有校验规则的字段设置数据 EG int li i dw 1 SetColumn name 使 name 列成为当前列 For li i 1 To dw 1 RowCount dw 1 SetRow li i 使第 I 行成为当前行 dw 1 SetText 屁 向当前编辑框中写入内容 Next dw 1 SetColumn sex 选中性别列 保证最后一个也要通过校验规 则 SetColumn SetRow 和 GetColumn GetRow 和 GetClickedColumn GetClickedRow 和 GetColumnName 设置当前列 integer dwcontrol SetColumn string column integer dwcontrol SetColumn integer column 设置当前行 integer dwcontrol SetRow long row 得到当前列 integer dwcontrol GetColumn r 得到当前行 long dwcontrol GetRow r 得到用户单击的列 integer dwcontrol GetClickedColumn r 得到用户单击的行 long dwcontrol GetClickedRow r 得到当前列的名 string dwcontrol GetColumnName r SetFilter Filter 和 Find 这两个函数必须配对使用 首先使用函数 SetFilter 设置过滤规则 然后用函数 Filter 进 行过滤 过滤规则是 boolean 类型的表达式 能够使用过滤规则的 将表达式为 True 的数 据行显示在数据窗口中 使其为 False 的数据行被移送到数据窗口的 Filter 缓存区 在 设计数据窗口对象时也可以定义过滤规则 使用这两个函数可以根据需要来动态改变过滤 规则 在设计时 指定了过滤规则的数据窗口可以使用这两个函数再进行过滤 每次过滤 都是对数据窗口的 Original 缓存区进行的 而不是在前一次过滤出来的数据基础上再次 过滤 函数 SetFilter 的语法是 dwcontrol SetFilter format 其中 dwcontrol 是要进行过滤的数据窗口控件名称 format 是过滤规则 string 类型 过滤规则是由字段 常量 运算符 函数构成的 boolean 表达式 需要取消过滤规则显示 所有的数据时 可以指定过滤规则为空 如果让用户可以随便指定过滤规则 则可以 使用 Null 的过滤表达式 这时 PowerBuilder 提供一个和数据窗口设计时相同的过滤规则 指定窗口 该函数正确执行返回 1 否则返回 1 执行完后 数据窗口中显示的数据没有 发生变化 只有当执行了 Filter 函数后才按照刚刚指定的过滤规则显示数据 该函数的语法是 dwcontrol Filter dwcontrol 是和 SetFilter 中同名的数据窗口控件名称 该函数执行正确则返回 1 否则返 回 1 如果 dwcontrol 为 Null 则返回 Null 函数 Find 也可以用来进行查询 该函数可以在数据窗口中的指定范围查找符合某些条件的 数据 该函数的语法格式是 dwcontrol Find expression r start end 其中 dwcontrol 是要进行查找的数据窗口控件名称 expression r 是表达式 含义和注 意事项同 SetFilter 中的完全相同 start 和 end 都是 long 类型变量 用行号表示的查找 范围 它们之间没有大小约束 函数返回的是在指定范围内找到的第一个符合条件的记录 号 如果没有找到或发生了错误则返回 0 如果参数有 Null 的则返回 Null SetSort 和 Sort 数据的排序可以在数据窗口对象设计时就指定排序规则 也可以在脚本中动态指定 使用 函数 SetSort 和 Sort 可以完成这一任务 它们和 SetFilter Filter 一样也必须配对使用 函数 SetSort 设置排序的规则 不改变数据的显示 只有当执行了函数 Sort 时 数据才真 正进行重新排列 函数 SetSort 的语法是 dwcontrol SetSort format 其中 dwcontrol 为要进行排序的数据窗口控件的名称 format 为排序规则 是 string 类 型 由字段 函数 ASC 或 DESC 逻辑联结符 常数构成 可以使用字段名 也可以使用 字段号来表示字段 字段号的格式是 X 其中 X 为正整数 该函数正确执行返回 1 否则 返回 1 和 SetFilter 函数类似 当指定 format 为空 时 可以取消排序 当指定 format 为 Null 时 可以由用户指定排序规则 使用函数 SetSort 后 再使用 Sort 函数才能重新排列数据 该函数的格式是 dwcontrol Sort 其中 dwcontrol 是和 SetSort 中同名的数据窗口控件名称 该函数正确执行则返回 1 否 则返回 1 如果参数 dwcontrol 为 Null 则返回 Null SelectRow 选中指定的行 dwcontrol SelectRow row boolean 其中 dwcontrol 是数据窗口控件的名称 row 是行号 该参数为 0 则表示是对数据窗口中 的所有数据行进行操作 boolean 表示是否选中 如果是 True 表示选中行号 row 的数据 行 如果是 False 则取消 该函数正确执行返回 1 发生错误返回 1 如果参数有 Null 则 返回 Null PrintSetup Print PrintOpen PrintDatawindow PrintClose PrintCancel PrintSetup 打印设置 PrintOpen 启动打印作业 PrintOpen 函数用来打开一个作业 并返回当前可以使用的打印作业号 该打印作业号可 以标识当前的打印工作 该函数的语法是 PrintOpen jobname 如果发生错误 该函数返回 1 打印作业名称是可选的 名字在打印队列中 在打印作业 的最后必须关闭打印作业 使 PowerBuilder 和 Windows 清除打印作业所占用的所有资源 因此 每个启动作业的语句都有一个关闭作业的语句相对应 PrintClose PrintCancel 关闭打印作业 有两个函数可以用来关闭打印作业 PrintClose 函数把当前页传送给打印机 并关闭当 前打印作业 语法格式为 PrintClose printjobnumber 函数 PrintCancel 取消打印作业并删除当前的打印文件 这个函数可以与 Print 或者 PrintDataWindow 函数组合使用 用于 PrintDatawindow 的语法是 DatawindowControl PrintCancel 用于 Print 的语法是 PrintCancel printjobnumber PrintClose 函数和 PrintCancel 函数是互相排斥的 成功调用过一个以后 不要在没 有再次打开打印作业时调用另一个函数 PrintDatawindow 该函数是以单个打印作业的形式打印数据窗口控件中的内容 PowerBuilder 使用数据窗口 对象中定义的字体和布局进行打印 用这个函数可以在一个打印作业中打印多个数据窗口 但是每个数据窗口控件都从新的一页开始打印 如果要让几个数据窗口打印在同一页中 则需要利用底层的打印函数或将要打印在同一页中的数据窗口 创建成一个 composite 显 示样式的数据窗口 PrintDatawindow 函数的语法是 PrintDatawindow printjobnumber datawindow 其中 printjobnumber 是 PrintOpen 函数返回的打印作业号 datawindow 是要打印的数据 窗口控件的名称 除了能够和 Printopen PrintClose 函数共同使用外 其他函数都 不能和 PrintDatawindow 共同使用 下面是一个完整地使用函数 PrintDatawindow 进行 数据窗口打印的例子 该例子中同时打印三个数据窗口 Long ll job Ll job PrintOpen 数据窗口打印 PrintDatawindow ll job dw 1 PrintDatawindow ll job dw 2 PrintDatawindow ll job dw 3 PrintClose ll job 关闭打印作业 Print 该函数是一个通用的函数 可以用来打印 PowerBuilder 中许多可视对象 下面介绍打印数 据窗口时的语法 格式如下 datawindowname Print canceldialog datawindowname 为要打印的数据窗口控件名称 canceldialog 是一个 boolean 型变量 指 示在打印时是否显示一个无模式的可以随时取消打印的窗口 该变量缺省为 True 该函数 正确执行则返回 1 执行过程中发生错误则返回 1 虽然该函数和 PrintDatawindow 一样都可以打印数据窗口 但是它们之间是有区别的 Print 函数使用设置在数据窗口对象的打印规范来打印数据窗口 而 PrintDatawindow 函 数使用打印机当前的设置来打印数据窗口 PBPB 数据窗口二数据窗口二 获取数据窗口信息 函数 Describe 使用函数 Describe 可以获取数据窗口对象中的信息 该函数语法是 dwcontrol Des
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国家具五金电商项目创业计划书
- 中国三维扫描软件项目创业计划书
- 中国B2C跨境电商项目创业计划书
- 中国近视康复治疗仪项目创业计划书
- 中国光纤标签项目创业计划书
- 中国固网宽带项目创业计划书
- 中国能源信息安全项目创业计划书
- 中国高粱项目创业计划书
- 中国5G小基站项目创业计划书
- 中药制剂的质量控制体系构建-洞察阐释
- 区块链原理与实践全套教学课件
- 故障测距-牵引网故障测距(铁路牵引供电系统继电保护)
- 前列腺癌诊治新进展课件
- 广州市轻工技师学院招聘真题
- 我的家乡广西河池宣传简介
- 邦纳T30UX系列超声波传感器
- 云南省昆明市官渡区2022-2023学年七年级下学期期末语文试题(含答案)
- 电动车分期付款的合同范本
- 《反对校园欺凌》话剧剧本
- 国家开放大学电大《课程与教学论》形考任务2试题及答案
- 最全广联达教程全套
评论
0/150
提交评论