实现PB数据窗口的动态排序

合集下载

如何在PowerBuilder数据窗口中实现记录的动态排序

如何在PowerBuilder数据窗口中实现记录的动态排序


为避免重复编写相同的 程序代码பைடு நூலகம் 提高系 统的开 发效
率 ,可使 用 P w rule 所 提 供 的 定 制 用 户 对 象 的 方 法 , 即把 o eB i r d 数 据 窗 口 中 记 录 的 动 态 排 序 功 能 封 装 到 一 个 用 户 对 象 中 。这 样 , 当要 使 用 该 功 能 时 , 只需 以此 用 户 对 象 代 替 普 通 的数 据 窗 口控 件 即可 。 在 P w rule ,用 户 对 象 分 为 两 大 类 型 , 即 o eB i r中 d 可 视 用 户 对 象 ( i a U e O jc) 与 类 用 户 对 象 ( l sU e Vs l sr b t u e Ca sr s O jc) ,前 者 是 具 有 可 视 特 征 的 一 个 或 一 组 控 件 ,后 者 则 是 b t e 不 具 备 可 视 部 件 的 处 理 模 块 。 无 论 何 时 , 当应 用 程 序 需 要 某 种 反 复使 用 的 特性 时 ,均 可 定 义 一 个 相 应 的 用 户 对 象 。用 户 对 象 只需 定 义 一 次 , 即可 反 复 使 用 ,且 在修 改 时 能 自动地 更 新 到所 有 使 用 该 用 户 对 象 的地 方 。显 然 ,通 过 这种 方法 ,可 以 进 一 步 提 高 应 用 程 序 的 开 发 效 率 , 也 便 于 对 系 统 进 行 更 加 有 效 的维

维普资讯
QUES ON & ANSW E TI R
( 图 1 示 )。 如 所
图 1
( ) 在 “ e ” 对 话 框 中 ,选 中 “ B O jc” 标 签 及 其 2 Nw P bet

PB动态数据窗口

PB动态数据窗口

[PB]-动态数据窗口〓创建动态数据窗口若要动态创建数据窗口,需要使用函数Create,该函数的语法如下:dw_1.Create(syntax{,errorbuffer})其中,dw_1是数据窗口控件的名称,该数据窗口控件要和新创建的数据窗口对象相关联。

syntax是用来描述创建数据窗口对象的确切语法的字符串。

errorburrer是可选项,用来保存创建数据窗口对象过程中发生的错误信息。

如果不指定该参数,就会在发生错误时显示一个错误信息的提示窗口。

如果创建成功该函数返回1,否则返回-1,如果参数为null则函数返回null。

由于Create函数成功创建数据窗口对象后,要改变dw_1数据窗口控件所关联的数据窗口对象,因此,需要重新为数据窗口设置事务对象(使用函数SetTransObject或者SetTrans)。

获取创建数据窗口的语法有多种方法,可以对相关的SQL语句使用SyntaxFromSQL函数,也可以使用对已经创建好的数据窗口对象使用LibraryExport函数。

因为创建数据窗口的语法比较复杂,即使使用了LibraryExport输出已有数据窗口对象的语法,操作起来也相当费劲。

所以,更为通用的是前面一种方法。

这种方法配合一定的编程技巧,让用户指定要创建的数据窗口对象的SQL语句,使用户有更多的自由和选择。

使用这种方法,肯定用到函数SyntaxFromSQL,它的语法是:transaction.SyntaxFromSQL(SQLselect,presetation,err)其中,transaction是事务对象的名称,该事务对象必须正确地设置了相关参数,并且和数据库建立了联结。

SQLselect是用来创建数据窗口的SQL语句,为String 类型。

presentation是要创建的数据窗口对象的显示风格,为String类型。

简单的格式是:Style(Type=presentationstyle)其中Style和Type都是保留字,presentationstyle的取值有Tabular,Grid,Form,Graph,Group,Label和Nup,其中Tabular是缺省类型。

PB数据窗口教程

PB数据窗口教程

PB数据窗口教程数据窗口是PowerBuilder中最常用的控件之一、它用于显示数据库查询结果,并提供了对此结果进行浏览、修改和删除等操作的功能。

本教程将为您介绍如何在PowerBuilder中使用数据窗口控件。

第一步是创建一个数据窗口。

在PowerBuilder的“对象”菜单下,选择“新建”>“数据窗口”。

在弹出的对话框中,选择所需的数据源和表格,并点击“确定”按钮。

此时,将会出现一个空白的数据窗口设计器。

接下来,将需要显示在数据窗口中的列添加到数据窗口中。

您可以通过拖拽数据库字段或手动添加列的方式进行操作。

在设计器的左侧,您将看到一个“对象树”面板,在这里选择数据窗口对象,并右键单击以添加列。

完成列的设置后,您可以在设计器的页面中放置其他控件,以增强用户界面。

一些常用的控件包括文本框、复选框、下拉列表框等。

您可以通过拖拽控件到数据窗口设计器的页面中进行操作,并根据需要设置其属性。

下一步是设置数据窗口的数据源。

在数据窗口设计器的菜单栏中,选择“数据”>“设置数据源”选项。

在弹出的对话框中,选择所需的数据源和表格,并点击“确定”按钮。

此时,数据窗口将会显示数据源中的数据。

现在,您可以运行应用程序,并查看输出窗口中的结果。

您可以通过点击数据窗口中的列标题对数据进行排序,通过点击数据行进行选择,并通过单击“查阅”按钮在查询结果中进行导航。

如果需要,您还可以在数据窗口中进行增加、修改和删除操作。

通过本教程,您应该已经了解了如何在PowerBuilder中创建和使用数据窗口控件。

数据窗口是PowerBuilder开发中非常重要的一部分,掌握了数据窗口的使用方法,可以提升开发效率,并为用户提供更好的用户界面和交互体验。

希望本教程能对您有所帮助!。

PB的数据窗口操作

PB的数据窗口操作

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PowerBuilder中通用数据窗口数据排序功能的实现

PowerBuilder中通用数据窗口数据排序功能的实现

PowerBuilder中通用数据窗口数据排序功能的实现
黄洪
【期刊名称】《计算机应用》
【年(卷),期】2000(020)003
【摘要】对PowerBuilder中如何根据用户的动态需求,实现数据窗口中数据的运行时排序进行了讨论,并深入研究了建立用户界面友好的、通用数据窗口数据排序功能模块的方法.
【总页数】3页(P63-65)
【作者】黄洪
【作者单位】浙江工业大学经贸管理学院,浙江,杭州,310014
【正文语种】中文
【中图分类】TP319
【相关文献】
1.利用POWerBuilder数据窗口技术实现通用查询 [J], 李庆凯;李冶;林君
2.PowerBuilder中利用数据窗口技术实现通用查询 [J], 卢新元
3.从Powerbuilder数据窗口到Excel报表转换通用函数的实现 [J], 邹运兰
4.在FOXBASE中实现数据查询显示屏的动态移动:窗口式通用数据查询程序设计原理 [J], 戴宇平
5.利用POWerBuilder数据窗口技术实现通用查询 [J], 李庆凯;李冶;林君
因版权原因,仅展示原文概要,查看原文内容请购买。

PB中窗体动态效果的实现

PB中窗体动态效果的实现

PB中窗体动态效果的实现---------------------------------// 实现关闭窗体时的动态效果// -------------------------------// 函数名:gf_closequery// 参数说明:// window window类型,调用窗口的名字// closetype integer类型,窗口关闭方式,value = 0~10 // -------------------------------// 申明局部变量int li_x ,li_y,li_width,li_height,li_ceny,li_cenx,li_xminusy,li_wminush Integer li_gd// 取出当前窗口的坐标值、大小值li_x = window.xli_y = window.yli_width = window.widthli_height = window.height// 设置窗体关闭前的动画效果// 关键是看哪个值发生了变化——x、y、h、wCHOOSE CASE closetypeCASE 0 // closetype = 0,从下到上逐渐消失for li_gd = li_height to 0 step -1window.height = li_gdwindow.show()nextCASE 1 // closetype = 1,从上到下逐渐消失for li_gd = li_y to li_height+li_y step 1window.y = li_gdwindow.height = li_height+li_y - li_gdwindow.show()nextCASE 2 // closetype = 2,从右到左逐渐消失for li_gd = li_width to 0 step -1window.width = li_gdnextCASE 3 // closetype = 3,从左到右逐渐消失for li_gd = li_x to li_x+li_width step 1window.x = li_gdwindow.width = li_x+li_width - li_gdwindow.show()nextcase 4 // closetype = 4,从上下向中间挤压逐渐消失li_ceny = li_y+li_height/2for li_gd = li_y to li_ceny step 1window.y = li_gdwindow.height = li_height - 2*(li_gd - li_y)nextcase 5 // closetype = 5,从左右向中间挤压逐渐消失li_cenx = li_x+li_width / 2for li_gd = li_x to li_cenx step 1window.x = li_gdwindow.width = li_width - 2*(li_gd - li_x)nextcase 6 // closetype = 6,从左上->右下for li_gd = li_y to li_height+li_y step 1window.y = li_gdwindow.height = li_height+li_y - li_gdif window.x < li_x + li_width thenwindow.x = li_x + (li_gd - li_y)elsewindow.x = li_x + li_widthend ifif window.width > 0 thenwindow.width = li_x+li_width - window.xelsewindow.width = 0end ifnextwindow.x = li_x + li_widthwindow.y = li_height+li_ywindow.width = 0window.height = 0window.show()case 7 // closetype = 7,从右下->左上for li_gd = li_height to 0 step -1window.height = li_gdif window.width > 0 thenwindow.width = li_width - (li_height - li_gd)elsewindow.width = 0end ifnextwindow.x = li_xwindow.y = li_ywindow.width = 0window.height = 0window.show()case 8 // closetype = 8,从右上->左下for li_gd = li_y to li_height+li_y step 1 window.y = li_gdwindow.height = li_height+li_y - li_gdif window.width > 0 thenwindow.width = li_width - (li_gd - li_y) elsewindow.width = 0end ifnextwindow.x = li_xwindow.y = li_height+li_ywindow.width = 0window.height = 0window.show()case 9 // closetype = 9,从左下->右上for li_gd = li_x to li_x+li_width step 1 window.x = li_gdwindow.width = li_width +li_x -li_gdif window.height > 0 thenwindow.height = li_height -(li_gd - li_x) elsewindow.height = 0end ifnextwindow.x = li_x+li_widthwindow.y = li_ywindow.width = 0window.height = 0window.show()case 10 // closetype = 10,从四面到中间li_ceny = li_y+li_height/2li_cenx = li_x+li_width / 2for li_gd = li_y to li_ceny step 1window.y = li_gdwindow.height = li_height - 2*(li_gd - li_y) if window.x < li_x + li_cenx thenwindow.x = li_x + (li_gd - li_y)elsewindow.x = li_x + li_cenxend ifif window.width > 0 thenwindow.width = li_width - 2*(li_gd - li_y)elsewindow.width = 0end ifnextwindow.x = li_cenxwindow.y = li_cenywindow.width = 0window.height = 0window.show()case elsewindow.show()window.width = li_widthwindow.height = li_heightwindow.x = li_xwindow.y = li_yEND CHOOSEreturn 0************************// 调用该函数在窗体的closequery 事件中gf_closequery (w_main,mod(integer(string(now(),"ss")),11))。

在PB中应用灵活多样的排序

在PB中应用灵活多样的排序

在PB中应用灵活多样的排序一、实现原理---- 数据窗口提供了Clicked事件,当用户使用鼠标点击某列的标题时,我们可以通过参数()来获得当前点击的对象,经过适当处理可得到当前点击的列,然后根据连续点击该列的奇偶数来决定用升序或降序排列记录。

二、实现细节---- 1、先设计一个数据窗口和窗口以及一些必要的按钮,设计好的窗口。

---- 2、要实现这样的排序功能,定义两个实例变量String pre_col=“”和Int click_time=0,他们分别记录上次点击的列和点击同一列的奇偶数。

然后在dw_1的Clicked事件中添加如下脚本:String clicked_pos,col,formatLong il_posclicked_pos = //取点击的对象il_pos = Pos(clicked_pos,'_t') //对于列标题,取得的对象是列名+”_t”If il_pos >0 Thencol = Left(clicked_pos,il_pos -1)If col=pre_col ThenIf click_time=0 Thenclick_time = 1format = col+" A"Elseclick_time=0format = col+" D"End IfElseclick_time = 0format = col+" A"End Ifpre_col = coldw_1.SetSort(format)dw_1.Sort()End If。

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中快速删除多行在开发过程中可能经常有要进行多行删除的操作,一般都使用循环语句进行操作:一个快速的删除方法是把要删除的行从主缓冲区中移到删除缓冲区中。

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

实现数据窗口的动态排序
在用到Windows的资源管理器的时候,当我们需要按照文件的类型或名称排序的时候只要用鼠标点击一下相应的标题栏,系统会按照升序或降序交替排序,这完全取决于用户鼠标点击的奇偶数。

如此方便的操作何不用到我们的数据窗口中——实现按某列的动态排序。

为了实现上述功能,程序首先需要用到一个全局变量(相对于PB来说可以用窗体变量),用它来控制连续两次点击之间的排序方向。

因为字段的排序方向只有升序和降序两种,所以我们可以用一个Boolean型。

本例中是Boolean ib_flag。

接着在数据窗口控件的Clicked事件中写上如下代码
/*****************************程序代码******************************/ String ls_column, ls_sort
ls_column = this.GetObjectAtPointer() // 得到鼠标按下位置的对象名
ls_column = left(ls_column, len(ls_column) - 2) // 得到列标题名字
if not Lower(right(ls_column, 2)) = "_t" then return
// 如果不是缺省的列标题,即以“_t”结尾或鼠标根本没有点在列标题上则退出
ls_column = left(ls_column, len(ls_column) - 2) // 去掉列标题末尾的“_t”,得到有效的列标题名
// 进行升序和降序的切换
ifib_flag then
ls_sort = ls_column + " A" // 升序
else
ls_sort = ls_column + " D" // 降序
end if
ib_flag = not ib_flag // 为下一次排序准备
ls_sort = ls_sort
this.setsort(ls_sort)
this.sort()
/*****************************结束******************************/ 注:这里所叙述的数据窗口中列的动态排序是以系统默认的列标题名为前提,即在标题栏中列标题名字是以“_t”结尾。

相关文档
最新文档