中国计算机报1997年10月27日 总681期  

创建PowerBuilder5.0程序时如何利用模板

赵博 

  我们在用PB开始新建一个应用时,系统通常会给出如下提示:Would you like PowerBuilder to generate an Applicationtemplate?其意思是问用户是否PowerBuilder为之产生模板。模板就是系统为用户提供的一部分已经设计好了的对象,用户可以在此基础上进一步开发自己的应用程序。初学者往往因为不熟悉模板的使用而选择“No”,实际上模板是一个很有用的工具,利用好了会给用户省去许多开发时间。下面我们以test为例来讨论这个问题。

  当我们在PB给出上述提示选择按“Yes”,屏幕上显示如下:
  

  图中的显示表明系统模板包括的对象有:

  1)应用(Application):test

  2)窗口(Window):w_genapp_frame;

  w_genapp_sheet;

  w_genapp_toolbars;

  w_genapp_about。

  3)菜单(menu):m_genapp_frame;

  m_genapp_sheet(后面的*表示该菜单为多个子窗口的共用菜单)。

   1.应用(Application)

  应用中模板只在open事件中提供了代码,主要功能包括操作系统环境信息的提取、启动文件(一般是指pb.ini)的搜寻、服务器系统配置参数的定义和打开主窗口(w_genapp_frame),这些功能都是必要的,对于初学者来说,一般不需要做什么修改就可直接利用。

   2.窗口(Window)

  1)w_genapp_frame。模板为w_genapp_frame是enableprint事件和open事件提供了代码。

  enableprint事件的主要作用是,当这个事件被激活时,代码将要判断是否将与w_genapp_frame相连的主菜单m_genapp_frame中的Print项设置为有效(Enabled),如果用户开发的程序中有打印功能,则可以将本事件的代码原样保留。

  open事件中只有两行代码,分别是对两个窗口级自定义函数的调用,函数w_setmenutext(menuid)用以改变菜单中“退出”选项的文件,是针对不同操作系统的设置,笔者认为一般情况下初学者可不予理会。函数w_newsheet()的一个作用是打开一个子窗口,这个子窗口是w_genapp_sheet的继承窗口;另一个作用是激活enablepint事件,使主菜单m_genapp_frame中print选项被设置成有效。

  由于w_genapp_frame是多文档界面的父窗口,所以一般它的界面上没有控制。如果想浏览w_genapp_frame的自定义函数,可以选择PB开发环境主菜单的Declare,然后再选其中的WindowFunctions…。

  2)w_genapp_sheet。此窗口提供了两个有效事件:open和close。

  open中的代码包含两部分,第一部分是设定被显示的子窗口的标题,由于在模板程序中提供了产生多个子窗口的功能,则子窗口的标题就是“Sheet:”加上该窗口的序号(序号是自动产生的);第二部分是调用w_genapp_frame中的自定义函数w_setmenutext(menuid),该函数的作用上面已经提到过。

  close事件用于判断,如果所有子窗口都被关闭,主菜单m_genapp_frame中的print选项被设置成无效。

  模板没有为w_genapp_sheet提供任何控制,用户可根据自己的需要来添加,但是注意,所有运行中产生的子窗口都是对w_genapp_sheet的全盘继承,包括用户后来加的控制和代码。

  3)w_genapp_toolbars。这个窗口用来设置浮动工具条,一般情况下用户可以直接利用。

  4)w_genapp_about。此窗口用来显示应用程序的版本信息,在窗口界面上有一个按钮和静态文本,静态文本上写“〈Youtexthere〉”,用户可以按自己的需要改变其内容。

   3.菜单(menu)

  1)m_genapp_frame。这是同w_genapp_frame相连接的主菜单。它提供了大多数应用软件常用的选项。用户可根据自己的需要进行增减。注意,如果删除某个选项,应用中其它的有关代码可能要做相应的修改,例如删除了Print选项,则w_genapp_frame的enableprint事件要改动或删除。

  m_genapp_frame有两个主菜单项File和Help,它们下面还有若干子菜单项,模板为部分的子菜单提供了代码,下面简单介绍一下它们的功能:

  File:

  New:调用wf_newsheet();

  Close:调用wf_closesheet()用以关闭当前活动窗口;

  Print:打印当前活动窗口;

  PrintSetup:设置打印机;

  Exit:退出应用程序;

  Help:

  HelpIndex:显示帮助目录;

  SearchforHepon…:显示关键字索引;

  About…:弹出窗口wμgenappμabout以显示版本信息。

  2)m_genapp_sheet。这是同w_genapp_sheet及其所有的继承窗口相连的菜单。它继承了m_genapp_frame并在其基础之上增添了两个主菜单项Edit和Winow,模板只为Window项的子菜单项提供了简单代码,主要用来调节各子窗口的排列风格,比如层叠、横向排列等,用户一般不须修改。

  如果用户不喜欢模板所提供对象的名字而想对这些对象重新进行命名,例如将w_genapp_frame改为w_main,则可以将w_gemapp_frame另存为w_main(用File菜单下的SaveAs),然后将原来的w_genapp_frame删除。但是注意,要将整个应用中所有对象检查一遍,代码中的w_genapp_frame字样都要改成w_main。

 

 back.gif (1185 字节)