网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 数据库类-> PowerBuilder-> PB数据窗口中按钮的封装

PB数据窗口中按钮的封装
作者:佚名 来源:InterNet 加入时间:2005-1-31
相关文章
  • 如何在PB中制作特殊形状数据窗口或按钮
  • PB和EAServer共筑多层应用架构
  • PB中的数据窗口自动刷新技术
  • PB中读取地磅BCD解码
  • PB通过OLEObject使用Word
  • PB动态报表格式自由定义的实现
  • 为PB的TreeView实现同步选择
  • 如何用pb实现MSACCESS数据库的图片字段存取
  • 在PB中应用灵活多样的排序
  • 在PB中如何使用Microsoft Outlook发送邮件
  • 相关书籍:
    众所周知在数据库的操作中,对数据表记录的添加、删除、保存等操作是最基本和最常用的,可以说这些操作是数据表的标准操作。在很多数据库的开发工具中均提供有上述操作的按钮对象,但在 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不仅有许多封装好的高级控件,同时还具有强大的程序语言设计能力,在数据库的开发工具中,能将两者结合得如此完美的,尚不多见。

    [文章录入员:nancy]

    相关文章
  • 如何在PB中制作特殊形状数据窗口或按钮
  • PB和EAServer共筑多层应用架构
  • PB中的数据窗口自动刷新技术
  • PB中读取地磅BCD解码
  • PB通过OLEObject使用Word
  • PB动态报表格式自由定义的实现
  • 为PB的TreeView实现同步选择
  • 如何用pb实现MSACCESS数据库的图片字段存取
  • 在PB中应用灵活多样的排序
  • 在PB中如何使用Microsoft Outlook发送邮件
  • 相关书籍:
    本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    PowerBuilder
    ACCESS
    MS SQL
    MySQL
    Oracle
    Foxpro
    PowerBuilder
    Sybase
    其它
    电脑教程阅读排行
    ·浅析PowerBuilder下动...
    ·PowerBuilder连接Sy...
    ·用Powerbuilder开发W...
    ·在powerbuilder中向E...
    ·PB通过OLEObject使用W...
    ·PB中读取地磅BCD解码
    ·在PowerBuilder中操作...
    ·PB动态报表格式自由定义的实现
    ·PB开发Sybase数据库应用技...
    ·如何在PB中制作特殊形状数据窗口...