PB中如何编写COM和COM+程序.

    COM/COM+作为取代OLE的一种新技术,问世已经很久了,PB7中也早已提供了对它的支持,不过从现实情况上看,似乎大家使用到的不是很多,其实对于新一代的互联网应用,它还是能够发挥很大作用.下面我将从COM/COM+组件的生成,调用,以及应用范围上谈谈我的看法和心得.
    
    我将用PB10为开发工具做说明.假设要做一个表达式计算的COM组件,我想这个例子比较典型,用到了datastore,datawindowobject,用户对象等,既不会太简单,也不会太复杂(代码不多).

    首先最基本的操作,必须先有个WorkSpace,然后打开COM/COM+创建向导:

选中项目后,直接下一步,基本上不用改动,就完成了.

创建完成后,系统就有了一些基本对象:

    

    下面建立一个extend形式的datawindowobject,主要用于计算表达式用的,只要满足有一个列就行了.保存其名字为calc

    然后在n_genapp对象中建立一个计算表达式的函数:

public function string of_calc (string as_expression);
datastore lds_calc
string ls_rtn

lds_calc=create datastore
lds_calc.dataobject="calc"
lds_calc.insertrow(0)

ls_rtn=lds_calc.describe("evaluate('" + as_expression + "', 1)")
destroy lds_calc
return ls_rtn
end function

下面就打开project对象p_genapp_commts,进行发布.

注意,发布的project对象属性中,需要修改为将整个pbl的对象一起发布.

发布完成后,就可以调用了.先试试用pb程序调用:

新建一个程序,和窗口:

窗口上放置一个按钮,按钮中写入代码:

OLEObject OleObj
Integer li_rc

OleObj = CREATE OLEObject
li_rc = OleObj.ConnectToNewObject("PB100.n_genapp.1.0")
IF li_rc < 0 THEN   
 DESTROY OleObj
 MessageBox("Connecting to COM Object Failed",  "Error: " + String(li_rc))
 Return
END IF
sle_2.text=string(OleObj.of_calc(sle_1.text))
OleObj.DisconnectObject()
DESTROY OleObj

执行后,就可以看到计算结果了.

    下面我们看看,在其他开发工具中如何调用此COM组件,以BCB6为例:

    首先将genapp.dll导入类型库:

执行安装,将COM组件安装到控件面板,然后建立一个窗口,放置几个控件:

在"调用PBCOM"按钮中Clicked事件写代码:

        WideString ls_express;
        ls_express=Edit1->Text;
        Edit2->Text = COClass_n_genapp1->of_calc(ls_express);

点击按钮,就可以看到计算结果了.

用VB调用也比较简单,VC调用稍微复杂点,这里就不缀述了.

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值