数据窗口事件处理技术

合集下载

深入了解PB数据窗口数据录入的处理机制

深入了解PB数据窗口数据录入的处理机制
this.AcceptText()
这个方法在很多情况下能解决该问题。美中不足的是,如果编辑框中的内容不能通过字段的校验规则,有时会显示两次错误信息窗口。造成两个错误信息窗口,往往是在选择其他单元时发生,在数据窗口失去焦点之前(如单击“保存”按钮等)只会显示一个错误信息窗口。用户选择其他单元时,编辑框中的数据开始进行校验,不能通过校验规则,显示校验错误信息,在显示校验错误信息时数据窗口失去焦点,触发数据窗口的LoseFocus事件执行AcceptText函数,又一次显示校验错误窗口。
所以,显示两次校验错误窗口的原因是LoseFocus事件中的AcceptText函数造成的。可以想法让该函数在这种情况下不执行。为此定义一个实例变量:
Boolean ib_accept = True
该变量用来表示是否正确通过了校验,然后将LoseFocus中的脚本改成下面的脚本:
If ib_accept Then
(1)看数据和编辑前相比是否发一个在字段上定义的有效性校验规则,违反则拒绝接受此值,并触发ItemError事件。
(3)检查此值是否与编辑前真的不同,没有改变则终止有效性校验。
(4)检查开发人员在ItemChanged事件中编写的脚本。具体的发生情况取决于分配给被称为动作代码的值。
This.AcceptText()
Else
ib_accept = true
End If
在数据窗口的ItemError事件中编写脚本:
ib_accept = False
这样就可以解决显示两个校验错误信息窗口了,并且不会遗漏最后一个编辑框中的内容。
当在某个单元中修改或者录入数据后,编辑框要离开时,要进行4个校验步骤,前面两个步骤由PowerBuilder完成,后面两个由开发者编写。

PB数据窗口及事件

PB数据窗口及事件

Pb数据窗口1、Pb数据窗口介绍(结合实例进行讲解):数据窗口控件对应到数据窗口对象显示数据。

数据窗口对象分为:常用的数据窗口类型:Composite 复合报表数据窗口Crosstab交叉报表数据窗口Freeform 自由模式数据窗口Graph 图形报表数据窗口Grid 网格数据窗口Group 分组数据窗口n-up 多列显示数据窗口分别举例说明各个数据窗口:杏林妙手中的体检报告中保护上述数据窗口类型。

2、数据窗口数据源类型介绍:Quick select、sql select、query、external、stored procedure 分别为:通过单表查询,通过多表查询,通过查询对象,通过自定义的字段,通过存储过程。

3、数据窗口控件常用函数介绍:Setredraw(boolean):设置是否自动刷新报表,true 自动刷新,false不自动刷新。

Describe(string):获取数据窗口指定对象的属性,string为数据窗口表达式。

例如:“t_1.text”等。

Modify(string):设置数据窗口指定对象的属性,和describe配合使用,string为数据窗口表达式。

例如“t_1.text=‟123‟”描述查找相关设置的方法。

Getitemstring(int,string)、Getitemstring(int,int):获取数据窗口指定行的字符串列的值,参数:行号,列名(或列值)。

Setitem (int,string,string)、Setitemstring(int,int,string):设置数据窗口指定行的字符串列的值,参数:行号,列名(或列值),设置值。

(还有获取其他数据类型的类似函数不做赘述!,还可以通过object.列名[行号] 来获取和设置指定行列的值)Deleterow(int):删除行指定行的操作,和循环配合使用的注意事项。

Insertrow(0):插入行,参数0表示在最后一行插入Rowcount():当前数据窗口的行数。

第七章 数据窗口简介

第七章 数据窗口简介

第七章数据窗口简介
数据存储对象中不能使用嵌入式SQL语。 数据存储对象适合在分布式应用的服务器中为客户 端准备数据。
第七章数据窗口简介
7.2数据窗口技术简介
7.2.7增强数据窗口对象
为了使只有字段对象和字段标签对象的数据 窗口对象更加美观,PB提供了数据窗口增强对 象。
数据窗口增强对象类似与我们在窗体中使用 的很多对象(控件),但是这些对象只能在数据 窗口对象使用,所以他们有许多和数据窗口对象 相关的特性。
7.2.5数据窗口控件
数据窗口控件式应用程序在窗口中展示数据窗口对 象唯一的途径,数据窗口控件与数据窗口对象的结合构 成了应用程序访问和操纵数据库数据的主要手段。
数据窗口控件是我们在PowerScript中访问数据对象 的桥梁,程序中我们不能直接使用数据窗口的属性,必 须通过它所隶属的数据窗口控件来存取其中的各种属性。
7.2数据窗口技术简介
7.2.6数据存储对象
数据存储对象(DataStore)是数据窗口控件的不可 见“版本”,除了可视方面的属性,以及不具备与用户 图形界面相关的很多特性外,数据存储对象的行为与数 据窗口控件完全相同。
数据存储对象能够大量节省系统资源,同时提高程 序的数据处理速度;对于多个窗口上的数据窗口控件可 以通过数据存储对象来共享数据窗口对象中的数据。
虽然可以通过在包含数据窗口控件的窗体上 增加控件来完成数据窗口增强对象,但是利用数 据窗口增强对象有利于“对象重用”。
第七章数据窗口简介
7.2数据窗口技术简介
7.2.8动态数据窗口技术 动态数据窗口技术是数据窗口技术的精髓。
它允许我们在程序中创建、修改和删除数据窗口 对象。
实现这些功能要依赖于数据窗口控件或事物 对象的几个函数, 例如Create函数以及 SyntaxFromSQL函数。

PB 数据窗口高级( DataWindow)应用37个技巧

PB 数据窗口高级( DataWindow)应用37个技巧

PB 数据窗口高级( DataWindow) 37个技巧1. 使DataWindow列只能追加不能修改如何使DataWindow中的数据只能追加新记录而不能修改,利用Column 的Protect 属性可以很方便的做到这一点,方法如下:将每一列的Protect 属性设置为:If( IsRowNew(), 0, 1) )在PowerScript 中可以动态修改Protect 属性:dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'")这样,DataWindow 中只有新追加的记录可修改,而其他记录是只读的。

2 .如何在DataWindow中实现列的自动折行我们在PowerBuilder应用程序的开发过程中, 使用DataWindow时, 经常会遇到某列的数据太长, 不能同时全部显示的情况. 若采用自动水平滚动, 操作起来又不够简便. 下面介绍一种方法, 实现列数据多行显示, 即实现列数据的自动折行.具体步骤如下:1) 在DataWindow Painter中打开此DataWindow.2) 在需设定自动折行的列上双击鼠标, 弹开此列的属性窗口.3) 选择Position标签, 选中Autosize Height 多选框.4) 选择Edit标签, 不选中Auto Horz Scroll多选框.5) 单击OK按钮, 保存所做的修改.6) 点中Detail Band (即写有Detail的灰色长带), 单击鼠标右键, 选择Properties... 菜单项.7) 选中Autosize Height多选框.8) 单击OK按钮, 保存所做的修改.9) 保存此DataWindow.注意:连在一起的汉字(中间没有标点或空格分隔), 系统将认为是一个单词, 不会自动进行折行.3. 在数据窗口中实现动画要实现动画,必须要有定时器,在数据窗口中已经有了一个定时器,双击数据窗口将弹出的对话框,在Timer Interval中定义大于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。

PB的数据窗口操作

PB的数据窗口操作

PB的数据窗口操作PB(PowerBuilder)是一种基于面向对象的集成开发环境(IDE),主要用于构建企业级应用程序。

在PB中,数据窗口是一项非常重要的功能,可以用于对数据的处理、展示和修改。

下面将从数据窗口的基本操作、高级特性和数据窗口设计原则等方面,详细介绍PB的数据窗口操作。

一、数据窗口的基本操作1. 创建数据窗口:在PB中,可以通过向导或手动创建数据窗口。

创建数据窗口是通过选择数据源(数据库表、视图或存储过程)、选择数据窗口类型(Grid、Tabular等)和设置窗口布局等步骤完成的。

2.数据绑定:在数据窗口中,可以通过数据绑定将数据源与数据窗口中的控件关联起来。

通过设置数据绑定属性,可以实现数据的读取、展示和修改等功能。

3.数据检索:使用数据窗口可以方便地进行数据检索。

通过设置查询条件、排序方式和数据过滤等属性,可以按照需求从数据库中检索数据,并在数据窗口中显示出来。

4.数据更新:除了展示数据,数据窗口还可以用于数据的更新。

通过设置数据窗口的更新属性,可以实现数据的插入、修改和删除等操作。

同时,PB还提供了事务管理和数据验证等功能,确保数据的完整性和一致性。

5.数据导航:在数据窗口中,可以轻松地实现数据的导航功能。

通过设置数据窗口的导航属性,可以方便地浏览数据,并进行上一条、下一条、第一页和最后一页等操作。

6.数据格式化:PB提供了丰富的数据格式化选项,可以对数据窗口中的数据进行格式化和显示。

例如,可以设置日期格式、货币格式和数值格式等,以便更好地展示和分析数据。

二、数据窗口的高级特性1.动态数据窗口:PB允许动态创建和操作数据窗口。

通过使用动态数据窗口,可以在运行时动态改变数据窗口的结构和属性。

这对于动态查询和灵活的数据展示非常有用。

2.嵌套数据窗口:PB支持嵌套数据窗口的使用。

通过将一个数据窗口嵌套在另一个数据窗口内部,可以实现复杂的数据关联和显示。

例如,可以在父数据窗口中显示子数据窗口的数据。

动态窗口法算法原理说明

动态窗口法算法原理说明

动态窗口法算法原理说明什么是动态窗口法算法原理?动态窗口法算法原理是一种针对海量数据处理的方法,通过设置一个固定大小的窗口,在数据流中滑动窗口并不断更新窗口内的状态,以快速计算特定问题的解。

动态窗口法算法可以大幅减少计算量,提高效率,并且不需要事先对整个数据集进行遍历。

动态窗口法算法的使用场景动态窗口法算法广泛应用于实时数据处理、流式数据分析、滑动窗口查询等场景,例如处理实时交易数据、网络流量分析、时间序列分析等。

这些场景中的数据通常是连续不断产生的,传统的遍历或聚合方法在效率和实时性上无法满足要求,而动态窗口法算法恰能满足这一需求。

动态窗口法算法步骤详解下面我们将详细介绍动态窗口法算法的步骤,分为初始化阶段和滑动更新阶段两部分。

1. 初始化阶段在初始化阶段,我们需要确定窗口的大小、定义窗口内的状态以及初始化状态的值。

窗口的大小根据具体问题来设定,可以是固定大小也可以是根据数据特征动态调整。

2. 滑动更新阶段在滑动更新阶段,我们按照窗口大小依次处理数据流中的元素。

具体步骤如下:2.1 更新状态从数据流中取出一个新的元素,并更新窗口内的状态。

状态的更新根据具体问题而定,可以是计算平均值、求和、统计频次等。

2.2 检查窗口范围检查当前窗口的范围是否超过设定的大小。

如果超过,需要对窗口内的状态进行调整,保持窗口的大小不变,并去除掉窗口最旧的元素。

2.3 处理结果根据窗口内的状态计算所需的结果。

这个结果可以是每次窗口滑动时的统计信息,也可以是在滑动过程中得到的特定结果,如最大值、最小值等。

以上就是动态窗口法算法的基本步骤。

通过不断滑动窗口并更新内部状态,我们可以及时获得问题的结果,避免了对整个数据集的遍历或聚合操作,从而提高了计算效率。

动态窗口法算法的优缺点动态窗口法算法具有以下优点:1. 高效性:由于只需要维护窗口内的状态,可以大幅减少计算量,提高处理效率。

2. 实时性:能够及时处理实时数据流,实现实时计算和分析。

PowerBuilder数据窗口编程技巧十则

PowerBuilder数据窗口编程技巧十则

PowerBuilder取得巨大成就的原因就是有Datawindow对象,DataWindow是具有功能强大和灵活多变的特点,本人用PowerBuilder开发过一段时间后,总结出一些技巧,以供广大的PB开发者借鉴使用。

一.如何创建一个报表,如下形式Quantity Running Total5,000 5,0002,500 7,5003,000 10,50012,000 22,500对于Running Total列,我们可使用计算列:CumulativeSum(Quantity for all),即可达到逐渐递增求和的功能。

二.数据窗口的数据送缓冲区之前确认的四个步骤判断数据类型是否正确。

如不正确则触发ItemError事件。

判断数据是否符合有效性规则。

如不符合有效性规则,同样触发It emError事件。

判断是否有数据被改动。

判断数据是否通过ItemChanged事件,如果数据和ItemChanged相斥,将触发ItemError事件。

三.如何在DataWindow中用数据类型为Datetime的列为条件进行查找1.当要查找的日期条件是一常数时使用如下表达式:2.当要查找的日期条件是一个变量时使用如下的表达式:3.当要查找的日期条件是一个DateTime数据类型时使用如下表达式:四.设置数据窗口Boolean型属性的三种方法PowerBuilder提供了三种方法设置数据窗口的布尔型属性,分别是True/False, 1/0, ' Yes'/'No'。

例如:PowerBuilder在处理上以字符串的形式保存属性,而不考虑属性值是布尔型、长整型或是字符型。

为了进一步理解,可以导出一个数据窗口并查看它的原码,可以发现即使是列的颜色属性它也是使用带双引号的数字来表达。

五.如何在DataWindow中快速删除多行在开发过程中可能经常有要进行多行删除的操作,一般都使用循环语句进行操作:一个快速的删除方法是把要删除的行从主缓冲区中移到删除缓冲区中。

PB数据窗口技巧大全

PB数据窗口技巧大全

PB数据窗口技巧大全PB数据窗口是PowerBuilder语言中的一种常用控件,用于显示和操作数据。

在实际项目开发中,掌握一些PB数据窗口的技巧能够提高开发效率和用户体验。

下面是一些常用的PB数据窗口技巧的详细介绍,包括动态数据源、处理数据更新、格式化数据、控制数据窗口行为等方面。

1. 动态数据源:PB数据窗口支持通过修改SQL语句和参数实现动态查询。

可以通过修改dw_1.sqlsyntax和dw_1.settransobject等属性实现动态数据源切换或过滤。

2. 处理数据更新:PB数据窗口提供了一些方法来处理数据的插入、更新和删除。

可以使用dw_1.insertrow、dw_1.updaterow和dw_1.deleterow等方法来实现数据的增删改操作。

3. 格式化数据:PB数据窗口提供了一些格式化数据的方法,可以通过修改数据窗口列的format属性来实现对数据的格式化。

例如,可以使用dw_1.modify表示列的format属性来自定义数据的显示格式。

4. 排序和过滤数据:PB数据窗口提供了排序和过滤数据的功能。

可以通过修改dw_1.setsort和dw_1.setfilter等方法实现对数据的排序和过滤。

5. 控制数据窗口行为:PB数据窗口提供了一些属性和方法来控制数据窗口的显示效果。

例如,可以使用dw_1.retrieve来重新检索数据,使用dw_1.setitemstatus来设置数据窗口的状态等。

6.多表连接查询:PB数据窗口支持多表连接查询,可以通过在SQL 语句中使用连接符号和条件来实现多表连接查询的功能。

7.数据窗口插入计算列:PB数据窗口支持插入计算列,可以通过在SQL语句中使用函数和表达式来插入计算列实现对数据的计算和处理。

8.数据窗口多级分组:PB数据窗口支持多级分组,可以通过在数据窗口中设置分组列和聚合函数来实现数据的分组和统计。

9.数据窗口嵌套:PB数据窗口支持嵌套,可以在一个数据窗口中插入另一个数据窗口,实现数据的嵌套显示和处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

10.6 数据窗口事件处理技术
在PowerBuilder中,事件有两种,一种是PowerBuilder在语句描绘器中为每一个标准控件设定的一些常用事件,一般的编程人员基于这些事件就可以完成常见的操作。

但是有些情况下,这些事件并不能完全满足应用程序的要求,这时,就需要使用另一种事件——自定义的用户事件。

一般的用户定义事件是与Windows消息对应的事件,这种事件是在应用程序接收到Windows消息后触发的,另外一种用户定义事件则是没有对应的事件,这类事件要由用户在程序代码中触发。

但是,数据窗口控件的自定义消息又有所不同。

因为数据窗口不是标准窗口对象,因此它们所提供的消息不是标准的Windows API消息,这些消息有自己的事件。

前面10.2.2节已经对数据窗口控件的常用事件做了总结,对于用户自定义事件,如果是在代码中触发事件,使用起来也比较容易。

只要在代码中适当的位置使用triggerevent函数就可以了。

因此本节主要讲述如何使用由PowerBuilder数据窗口所提供的消息触发用户自定义事件。

10.6.1 数据窗口消息的含义
PowerBuilder为数据窗口提供了23种消息,为便于读者参考,下面列出了各消息的名称和功能:
● PBm_dwclosedropdown:关闭下拉式数据窗口。

● PBm_dwscrollend:在数据窗口中卷滚到最后一行。

● PBm_dwscrdlhome:在数据窗口中卷滚到第一行。

● PBm_dwscrolllineend:卷滚到当前行的行尾(水平方向)。

● PBm_dwscrolllinehome:卷滚到当前行的行首(水平方向)。

● PBm_dwnbacktabout:即将通过Shift+Tab组合键离开该控件。

● PBm_d wnchanging:控件即将被改变。

● PBm_dwndropdown:下拉列表框的下拉部分即将可见。

● PBm_dwngraphcreate:即将创建图形。

● PBm_dwnitemchangefocus:数据窗口控件中当前项的聚焦改变。

● PBm_dwnitemvalidationerror:对当前项的修改引起了一个合法性检查错误。

● PBm_dwnkey:有键被按下。

使用KeyDown()处理键盘值。

● PBm_dwnlbuttondown:鼠标左键被按下。

● PBm_d wnlbuttonup:鼠标左键被松开。

● PBm_dwnmbuttonclk:鼠标中键单击。

● PBm_dwnmbuttondbclk:鼠标中键双击。

● PBm_dwnmousemove:鼠标移动。

● PBm_dwnprintmarginchange:打印边界被改变。

● PBm_dwnprocessenter:Enter键被按下。

● PBm_dwnrowchange:数据窗口中的聚焦从一行转向另一行。

● PBm_dwntabdownout:用户在数据窗口的最后一行按下了下箭头键。

● PBm_dwntabout:用户在数据窗口的最后一行或最后一列中按下了tab键。

● PBm_dwntabupout:用户在数据窗口第一行中按下了上箭头键
10.6.2 用户自定义事件的使用
熟悉了DataWindow的事件定义和PowerBuilder的数据窗口消息,就可以开发出更符合用户操作习惯的应用程序。

例如,许多最终用户习惯于按下回车键将输入焦点从当前列转移到下一列,但在Windows环境下,同一个窗口下的不同控件之间的转换是用Tab键实现的。

在一个DataWindow中无论是FreeForm形式还是Tabular或Grid形式,系统默认都是使用Tab键或Shift+Tab组合键转换到下一个数据列或上一个数据列,而用户按下Enter键,系统会将聚焦转到下一条记录的第一个输入列上。

这时就可以利用用户自定义事件轻易地实现按下回车键换列的功能。

其具体方法如下:
首先在DataWindow中定义一个KeyEnter事件,用以捕捉用户在DataWindow中按下了Enter键,对其应实现的功能进行转换。

然后在User Events的对话框中设置Event Name为KeyEnter,Event ID为PBm_dwnprocessenter的事件,对该事件编程如下:
int CurCol
int cnt
//首先要得到当前光标所在的列数
CurCol = getcolumn()
//这里假设这个DataWindow共有6列
IF CurCol < 6 THEN
//如果当前列不是最后一列,将焦点转到下一列
setcolumn(CurCol + 1)
ELSE IF rowcount()= getrow() THEN
//如果当前列是最后一列,而且当前行是最后一行,则增加一行,并将焦点转至该行的第一列
cnt = insertrow(0)
scrolltorow(cnt)
setcolumn(1)
ELSE
//如果当前列是最后一列或者当前行不是最后一行,则将聚焦转至下一行的第一列
cnt = getrow() + 1
setrow( cnt )
scrolltorow( cnt )
setcolumn(1)
END IF。

相关文档
最新文档