PB数据窗口中按钮的封装

转载 2012年04月05日 16:17:23

PB数据窗口中按钮的封装

(加入日期:2001-9-26)

保存文章至硬盘】【打印文章】【字体:

分享到: 0
  众所周知在数据库的操作中,对数据表记录的添加、删除、保存等操作是最基本和最常用的,可以说这些操作是数据表的标准操作。在很多数据库的开发工具中均提供有上述操作的按钮对象,但在 PowerBuilder 6.0以前的版本中并没有提供上述按钮对象,一种常见的解决方法是自己做一个类似于工具条的用户对象,将上述按钮加进该对象中,但在数据窗口需要使用上述操作时还需要编程与该用户对象通讯,以调用其中的功能。

---- 在新推出的PowerBuilder 6.0 以及后续版本中,可以直接在数据窗口对象中放置按钮对象,而且开发人员即可以给这些按钮制定缺省的操作,也可以自己定义按钮的功能。在可以指定的缺省操作中就包含了上面提到的所有数据表的标准操作,这样在数据窗口需要相应的按钮时,只需要加入按钮对象然后指定其功能就行了。

---- 上述做法对于少量的数据窗口而言是合适的,但如果要对大量的数据窗口都采用这种方法添加按钮,其工作量是非常可观的,而且还不能保证界面的一致性。实际上我们可以利用PowerBuilder面向对象的编程技术,实现一个包含标准操作按钮的数据窗口对象,这样在需要用到标准操作的时候,只需要从该对象继承即可。下面具体给出该对象的实现方法:

---- 由于在用户对象画板中不能直接往数据窗口中添加按钮,因此,需要用改变数据窗口语法串的方法来添加按钮,我们用一个专用的函数来实现这一功能。首先,建立一个新的全局函数,取名为f_AddDWButton,它带有一个字符串参数as_oldsyntax,其返回值为一字符串,下面是其实现代码:

//功能:修改数据窗口语法串,为其增加常用功能按钮
//入口参数:as_oldsyntax 原有数据窗口语法串
//返回值: ls_NewSyntax 修改后的语法串
//应用条件:数据窗口中有Footer区, 高度为88的区域是按钮带区

String ls_AddString, ls_NewSyntax

ls_NewSyntax = as_oldsyntax

//添加按钮语法串
//检索按钮
ls_AddString = 'button(name=cb_retrieve band=footer ' + &
'font.charset="0" font.face="Arial" ' + &
'font.family="2" font.height="-9"
font.pitch="2" font.weight="400" ' + &
'background.mode="2"
background.color="12639424" ' +&
'filename="" action="2"
vtextalign="0" htextalign="0" ' +&
'x="14" y="4" height="80"
width="292" color="8388608" ' +&
'text="检索" defaultpicture=
no suppresseventprocessing=no )~r~n'
ls_NewSyntax = ls_NewSyntax + ls_AddString

//首页按钮
ls_AddString = 'button(name=cb_top band=footer ' + &
'font.charset="0" font.face="Arial"
font.family="2" ' + &
'font.height="-9" font.pitch="2"
font.weight="400" ' + &
'background.mode="2"
background.color="12639424" ' + &
'filename="" action="6"
vtextalign="0" htextalign="0" ' + &
'x="333" y="4" height="80"
width="146" color="8388608" ' + &
'text="首页" defaultpicture=
no suppresseventprocessing=no )~r~n'
ls_NewSyntax = ls_NewSyntax + ls_AddString

//上页按钮
ls_AddString = 'button(name=cb_prior band=footer ' + &
'font.charset="0" font.face="Arial"
font.family="2" ' + &
'font.height="-9" font.pitch="2"
font.weight="400" ' + &
'background.mode="2"
background.color="12639424" ' + &
'filename="" action="5"
vtextalign="0" htextalign="0" ' + &
'x="484" y="4" height="80"
width="146" color="8388608" ' + &
'text="上页" defaultpicture=
no suppresseventprocessing=no )~r~n'
ls_NewSyntax = ls_NewSyntax + ls_AddString
……
//添加按钮
ls_AddString = 'button(name=cb_append band=footer ' + &
'font.charset="0" font.face="Arial"
font.family="2" ' + &
'font.height="-9" font.pitch="2"
font.weight="400" ' + &
'background.mode="2"
background.color="12639424" ' + &
'filename="" action="11"
vtextalign="0" htextalign="0" ' + &
'x="964" y="4" height="80"
width="146" color="8388608" ' + &
'text="添加" defaultpicture=
no suppresseventprocessing=no )~r~n'
ls_NewSyntax = ls_NewSyntax + ls_AddString
//保存按钮
ls_AddString = 'button(name=cb_update band=footer ' + &
'font.charset="0" font.face="Arial"
font.family="2" ' + &
'font.height="-9" font.pitch="2"
font.weight="400" ' + &
'background.mode="2"
background.color="12639424" ' + &
'filename="" action="13"
vtextalign="0" htextalign="0" ' + &
'x="1266" y="4" height="80"
width="146" color="8388608" ' + &
'text="保存" defaultpicture=
no suppresseventprocessing=no )~r~n'
ls_NewSyntax = ls_NewSyntax + ls_AddString

ls_NewSyntax = ls_NewSyntax + ls_AddString
return ls_newsyntax
---- 有了上述函数之后,第二步就可以做数据窗口了:建立一个标准的可视用户对象,该对象类型为datawindow,取名为:u_dw_toolbutton,然后在该用户对象的constructor事件中添加如下代码:

//建立数据窗口按钮
String ls_Syntax
//获取设计时的数据窗口语法串
ls_Syntax = String( this.object.DataWindow.Syntax )
//添加按钮语法串
ls_Syntax = f_AddDWButton( ls_Syntax )
if this.Create( ls_Syntax ) < > 1 then
Error.object = this.ClassName()
Error.ObjectEvent = "Create DataWindow from Syntax"
Error.Line = 6
Error.Number = SQLCA.SQLDBCode
Error.text = SQLCA.SQLErrText
//Display error
Open( w_error )
End If
---- 将上述工作保存后,就万事大吉了,以后只需要从u_dw_toolbutton对象继承就可以拥有标准操作按钮了。(注意:在数据窗口中要有Footer区,且该区高度要大于80PBU)

---- 从上面的例子中我们可以看到,PowerBuider不仅有许多封装好的高级控件,同时还具有强大的程序语言设计能力,在数据库的开发工具中,能将两者结合得如此完美的,尚不多见。

如何在PB中制作特殊形状数据窗口或按钮

以下是全部源码,感兴趣的朋友可以整个窗口的源代码导入到PBL里自己运行一下试试。PBExportHeaderPBExportHeaderw_button.srw forward global ty...
  • lzp_lrp
  • lzp_lrp
  • 2015年05月12日 13:09
  • 2327

如何在PB中制作特殊形状数据窗口或按钮

如何在PB中制作特殊形状数据窗口或按钮 (加入日期:2005-1-29) 【保存文章至硬盘】【打印文章】【字体:大 中 小】 分享到: 0 作者:LZP_LRP 以下是全部源...

pb按钮:如何在PB中制作特殊形状数据窗口或按钮

$PBExportHeader$w_button.srwforwardglobal type w_button from windowend typetype cb_11 from commandbu...

PB实现数据窗口中checkbox的点选

数据窗口中checkbox有时候点了却不打勾,是因为数据窗口的taborder值的问题,解决办法就是修改为0,代码控制完成。 数据窗口clicked事件//在窗口的实例变量定义:long il_La...
  • tlammon
  • tlammon
  • 2015年07月10日 15:39
  • 2104

PB日志-数据窗口控件的函数19.Describe()

Describe() 功能:返回数据窗口控件结构方面的指定信息包括DataWindow   对象以及数据窗口 对象中其他对象的属性取值数据窗口中的每个列每个标题等等都是对象各自都有一 组描...
  • codejoe
  • codejoe
  • 2011年11月06日 20:02
  • 6785

PB数据窗口难得一见的技巧

PB基础知识 1、Datawindow object(数据窗口库对象)    数据源决定了数据窗口对象获取数据的方式。PowerBuild支持五种数据源: A、 快速选择(Quik Sele...
  • tlammon
  • tlammon
  • 2016年03月22日 10:36
  • 2678

PB9.0提供了28个属性、35个默认事件、162个函数。注意与数据窗口对象的区分。

本的执行效率 *尽量不要在RetrieveRow事件下编写脚本(包括注释)。 *如果数据窗口的DoubleClicked事件中编写了脚本,那么在数据窗口的C1icked事件中的脚本...
  • bjash
  • bjash
  • 2015年01月21日 16:51
  • 2895

利用PB动态创建数据窗口

当利用PowerBuilder建立数据窗口时,用户通常不能自己选择数据来源和显示类型。如何让用户在应用程序中自己定义数据窗口的数据来源和显示类型呢?为了达到这个目的,我们必须在运行程序阶段根据用户自己...

PB datawindows 动态创建数据窗口

PB datawindows 动态创建数据窗口 分类: 专业技能工作积累2011-08-04 16:521376人阅读评论(0)收藏举报 powerbuildervariablesobjec...
  • tlammon
  • tlammon
  • 2015年02月02日 15:33
  • 1286

PB9核心之——数据窗口对象使用

概要 最近这几天一直在用pb做一个小系统,经过这几天对pb9的使用,发现pb9的核心是数据窗口对象的使用,通过使用数据窗口对象可以将数据库的记录显示到界面上,并且可以直接在前台对数据库的记录进行增删改...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PB数据窗口中按钮的封装
举报原因:
原因补充:

(最多只允许输入30个字)