pb数据窗口:PB数据窗口中按钮的封装

  众所周知在数据库操作中对数据表记录添加、删除、保存等操作是最基本和最常用可以说这些操作是数据表标准操作在很多数据库开发工具中均提供有上述操作按钮对象但在 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.char="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.char="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.char="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.char="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.char="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
ls_syntax
---- 有了上述的后第 2步就可以做数据窗口了:建立个标准可视用户对象该对象类型为datawindow取名为:u_dw_toolbutton然后在该用户对象constructor事件中添加如下代码:

//建立数据窗口按钮
String ls_Syntax
//获取设计时数据窗口语法串
ls_Syntax = String( this.object.DataWindow.Syntax )
//添加按钮语法串
ls_Syntax = f_AddDWButton( ls_Syntax )
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不仅有许多封装好高级Control控件同时还具有强大语言设计能力在数据库开发工具中能将两者结合得如此完美尚不多见
Tags:  pb动态数据窗口 pb数据窗口打印 pb数据窗口的使用 pb数据窗口

延伸阅读

最新评论

发表评论