第三十二讲 深入PB的高级应用 PowerBuild嵌入OLE(一) 打印本页  
 
  在下面的这两讲中,我们将谈谈PB的高级应用,也就是在PowerBuilder中如何使用OLE控件, OLE控件可以令PB的应用程序访问Windwos环境中其它应用程序。
  我们前面所用的控件都是内制在PowerBuilder中的,它们出现在编辑器的工具框中,可以通过指向和单击操作将其放在窗体上。但Windows环境中的有些对象不是PB所独有的,未放在PB语言中,比如说Word文档,如何达到将WORD文档嵌入PB中呢
  我们现在先介绍使用OLE的概念,再介绍将从PB编程环境中访问多个应用程序的方法。
  下面,我们要通过一个实例,一起学习如何使用OLE技术在PowerBuider的窗口中嵌入Windows其它应用程序(比如Word编辑器)。
  新建一个名为app_ole的应用程序对象。
  新建一个名为“w_ole”窗体。
  选择应用程序对象app_ole的Open事件,进行编程:
  open(w_ole)
  在窗口w_ole中添加控件
  添加三个CommandButton控件,分别命名为cb_import, cb_export, cb_exit,
  添加1个组合框控件
  添加5个单选按钮控件,实现这五个按钮相互排斥
  添加一个复选按钮控件
  选择工具栏中的OLE(OLE控件),选择通用的OLE控件
  将新的OLE控件放入窗体并更改其属性

  开始编程
  选择“退出” 按钮的的Clicked事件,编写程序:
  close(parent)
  选择“Word” 单选按钮的Clicked事件,编写程序:
  定义一个Instance变量 string iv_ole_type="word"
  iv_ole_type="word"
  选择“Excel” 单选按钮的Clicked事件,编写程序:
  iv_ole_type="excel"
  选择“Pic” 单选按钮的Clicked事件,编写程序:
  iv_ole_type="pic"
  选择“Txt” 单选按钮的Clicked事件,编写程序:
  iv_ole_type="txt"
  选择“All” 单选按钮的Clicked事件,编写程序:
  iv_ole_type="all"

  编写激活OLE控件内嵌入的应用程序。
  激活一个OLE控件的方法有两种,一种为即席方式(inplace),就是指所激活的对象(例如Word编辑器)直接在OLE控件内被激活;一种为离席方式(offsite),就是指所激活的对象在OLE控件外被激活,使用这种方式可使用户得到被激活对象的更多功能;
  选择OLE的DoubleClicked事件,编写程序
  omactivatetype act_type
  if cbx_1.checked then
  act_type=offsite!
  else
  act_type=inplace!
  end if
  wf_activate(act_type)
  定义一个窗口函数, wf_activate;无返回值,并定义一个omactivatetype类型的参数:at_Type;单击OK按钮,编写程序:
  int aat
  aat=ole_1.activate(at_Type)
  If aat<> 0 Then
  Messagebox("OLE Activate","Unable to Activate")
  End If