社区
控件与界面
帖子详情
请问如何在pb中开发一个com组件,又如何在其他编程环境中调用?
albert_qingdao
2006-02-05 03:45:32
如题。
希望各位能说得详细点,我比较苯。
...全文
619
11
打赏
收藏
请问如何在pb中开发一个com组件,又如何在其他编程环境中调用?
如题。 希望各位能说得详细点,我比较苯。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qpeg
2006-07-01
打赏
举报
回复
对,成员函数就是组件中包含的函数
//PB90.n_p_recordset_com组件名
//gf_test() 组件中的函数
PB中调用:
oleobject ooo
long l1
ooo=create oleobject
l1=ooo.connecttonewobject('PB90.n_p_recordset_com')
ooo.gf_test()
destroy ooo
VB中调用
Private Sub Command1_Click()
Dim obj As Object
Set obj = CreateObject("PB90.n_p_recordset_com")
Call obj.gf_test()
End Sub
szlmliang
2006-06-22
打赏
举报
回复
不好意思,何谓成员函数?是object里的函数吗?如何新建
ruky9988
2006-06-04
打赏
举报
回复
up
workhand
2006-05-12
打赏
举报
回复
学习一下
lywei
2006-05-11
打赏
举报
回复
学习
bpy_r
2006-05-10
打赏
举报
回复
gz
msgtogcra
2006-02-10
打赏
举报
回复
[转贴]PB 开发 COM 存在的问题
安装了 PB gernerate 的朋友可以使用 PB 开发 COM 组件,但是目前还只能开发进程中 COM 。PB
开发 COM 有几个问题需要注意一下。
1. 使用 PB 的 Project 画笔编译好了 COM 组件后还不能使用,还要将对应的 PBL 编译成 PBD 或
则 DLL,具体是 PBD 还是 DLL 要看在编译 COM 时如何设定的。一般默认情况是 PBD 。编译好了 PBD
或 DLL后,才能正常使用 COM 组件。当然使用前 COM组件还应注册。如果你要发行你的 COM 组件,还必
须要 PB 的 DDDK 中的 DLL,就发行应用程序一样,还需要 PB 的 DLL 支持。
2. 不支持函数覆盖(OverWrite)
PB 制作 COM 时是将不可视用户自定义对象(不妨命名为 n_cst_object)编译成 COM 组件的接口。
它将 n_cst_object 所有共有属性、函数、事件都编译成 COM
组件的一个结构。但是如果这个n_cst_object 还有一个父类,并且 n_cst_object还覆盖了父类中的函数
,那么此时编译 COM 操作将无法通过。原因是 PB 在制作 COM 组件时会将 n_cst_object 的父类中的所
有属性、函数、事件也编译进去。所以,此时 PB 发现两个一模一样的函数,编译也自然通不过了。解决
办法很简单,将原来需要覆盖的函数申明成保护类型。这样函数就可以最随意覆盖了。但是申明成保护类
型后外界也就无法访问该函数了。那么我们再在 n_cst_object的父类中申明一个共有类型的函数,该函
数只是简简单单的调用原来南各函数。至此一切问题都解决,函数可以覆盖了。下面是关于这个问题的伪
代码。
问题代码:
Class n_cst_parent
{
public :
int a() { //do something }
int b() {//hello! }
};
class n_cst_object : n_cst_parent
{
Public :
int a() {//OverWrite Parent script }
}
此时将 n_cst_object 编译成 COM 组件的接口,那么这个接口具备的函数将会是
int a() // 来自n_cst_parent
int b() // 来自n_cst_parent
int a() // 来自 n_cst_object
显然这种 COM 接口不可能出现,因此编译失败了。将上面的问题代码改为如下形式:
Class n_cst_parent
{
protected:
visual int a1() {//完成原来 n_cst_parent.a() 要完成的工作 }
public:
int a() { return a1(); }
int b (){ //hello }
}
Class n_cst_object : n_cst_parent
{
protected:
int a1() {//完成原来 n_cst_object.a() 要完成的工作 }
}
此时再将 n_cst_object 编译成 COM 的接口,那么这个接口具备的函数将会是
int a() // 来自n_cst_parent
int b() // 来自n_cst_parent
而且 int a() 函数调用的将是 n_cst_object 中的 a1() 。因为 a1() 被申明成虚函数。
所有问题全部解决!!!
以上代码只是伪代码,PB 中的对象继承根本不是这样。还有在 PB 中函数已经申明就已经是虚函数。直
接具备多态特性。
xb8254
2006-02-08
打赏
举报
回复
guanzhu
handi
2006-02-08
打赏
举报
回复
我记得我在csdn emag里面写过一篇文章。可以去看看
msgtogcra
2006-02-07
打赏
举报
回复
pb6.5 以下参见:
http://community.csdn.net/Expert/topic/4494/4494991.xml?temp=.9391748
[转贴]如何在pb中创建COM组件,并在asp中调用并返回结果集?
日期:2005年5月5日 作者:清风网络学院
启动pb7.0,创建一个不可视的用户对象"uo_customer",新建"object",选择"custom class"
类型,点击"ok"。
在新创建的用户对象中编写如下程序:
1.声明实例变量"instance variables",对于com中不支持的类型,请声明为protected类型。protected:
datastore ds_datastore
2.新建三个成员函数:
int uf_connect()//用于连结数据库与创建datastore对象。
代码:
sqlca.dbms="odbc"
sqlca.database="webdw"
sqlca.autocommit=false
sqlca.dbparm="connectstring=''dsn=webdw;uid=dba;pwd=sql''"
connect using sqlca;
ds_datastore =create datastore
if sqlca.sqlcode=0 then
return 1
else
return -1
end if
void uf_disconnect()//用于断开数据库连结和释放datastore对象。
if isvalid(ds_datastore) then destroy ds_datastore
disconnect using sqlca;
resultset uf_retrieve()//读取客户信息
resultset lrs_customers
ds_datastore.dataobject="d_customer"
ds_datastore.retrieve()
ds_datastore.generateresultset(lrs_customers)//生成结果集
return lrs_customers//返回结果集
最后,保存改对象为"uo_customers"。
制作一个com组件的工程
新建"project",选择"Com/mts component wizard",确定。
给工程定义一个名字"p_recordset_com"
接下来,选择要生成com的用户对象"uo_customer"
设置生成com组件后的接口属性,这里可以使用缺省。
然后自己定义组件的program id为"pb70.uocustomer",
然后选择该com组件的dll文件名,单击"new",生成"component server appid",
同样生成"type library id",最后,选择pb资源文件名,以及注册方式,之后,系统会
给出用户设置的大致信息,然后选择生成"to do list"
这样就完成一个生成com组件的工程,名为"p_test_com"。
编译工程并注册组件
打开已经生成的工程,选择相应的pbl文件及用户对象,编译就可以了
下面我们创建asp网页来调用这个pb com
<head><title>pb com</title></head>
<body>
<%
set customers=server.createobject("pb70.uo_customers")
iflag=customers.uf_connect()
set rs=customers.uf_retrieve()
'www.knowsky.com
%>
<table>
<%rs.movefirst
do while not rs.eof
%>
<tr>
<td><%=rs("lname")%></td>
<td><%=rs("address")%></td>
<td><%=rs("city")%></td>
</tr>
<%rs.movenext
loop
rs.close
customers.uf_disconnect()
%>
</table>
</body>
保存成asp文件
最后,在浏览器中就可以浏览这个asp文件了
说明:pb7.0和pb8.0基本上差不多,读者可以自己实践。
lzheng2001
2006-02-06
打赏
举报
回复
自己到百度上搜索一下就会有结果了
pb
调用
C#
中
COM
组件
实例(源码+运行EXE)
标题
中
的“
pb
调用
C#
中
COM
组件
实例”是指在PowerBuilder(
PB
)
环境
中
通过
COM
(
Com
ponent Object Model)接口
调用
由C#语言编写的
组件
。这种方法允许不同
编程
语言之间进行互操作,使得
PB
能够利用C#的强大功能,如.NET ...
PB
调用
C#写的dll文件
在压缩包文件的“
PB
调用
COM
”可能包含示例代码、教程或者已注册的
COM
组件
实例,帮助用户理解如何在PowerBuilder
中
实际操作这个过程。 这个技术的应用场景可能包括利用C#的现代化特性和库,例如.NET Framework的丰富...
PB
调用
barcodex控件打印条码案例源码
在IT行业
中
,PowerBuilder(
PB
)是一款非常经典的
开发
工具,尤其在企业级应用
开发
中
有着广泛的应用。本案例主要关注的是如何在
PB
环境
中
利用第三方控件Barcodex进行条码打印。下面将详细介绍这个主题,以及相关的技术...
pb
使用web浏览器
组件
标题
中
的“
pb
”指的是PowerBuilder,一款经典的面向对象的
编程
工具,主要用于
开发
企业级的应用程序。Web浏览器
组件
是指PowerBuilder
中
可以嵌入的控件,允许
开发
者在
PB
应用
中
集成Web浏览的功能。在这个场景
中
,“
pb
9+...
PB
6,
PB
7,
PB
8,
PB
9,
PB
10,
PB
11
调用
WEBSERVICE,并解决超时问题
虽然主要讨论的是PowerBuilder,但VB也可能出现在项目
中
,尤其是在集成或转换不同
编程
环境
的场景下。 标签
中
的“webservice”再次强调了Web服务的主题,“powerbuilder”是我们讨论的核心工具,“VB”表明可能有与...
控件与界面
604
社区成员
12,293
社区内容
发帖
与我相关
我的任务
控件与界面
PowerBuilder 控件与界面
复制链接
扫一扫
分享
社区描述
PowerBuilder 控件与界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章