Delphi如何调用VB的OCX?(100分)

  • 主题发起人 主题发起人 TangDL
  • 开始时间 开始时间
T

TangDL

Unregistered / Unconfirmed
GUEST, unregistred user!
我在VB里写了一个OCX(测试用),ACX上有一按钮,按钮弹出一窗体,同样给OCX加一方法,方法弹出同样窗体,代码如下:
Private Sub Command1_Click()
Form1.Show vbModal, Me
End Sub
Public Sub ShowForm()
Form1.Show vbModal, Me
End Sub
简单吧?
将其加入Delphi窗体上,新加一按钮,按钮调用ShowForm,提示MSVBVM60.DLL里出错,但按ActiveX里按钮可弹出窗体。

不懂了,请教各位:
问题在哪?是否VB或Delphi中哪儿设置不对,或系统中哪儿要设置?

(会者请帮一把,路过的、看到的请推一把)
 
[^]这是我首次在DFW上提问,不要让我失望哦!


以下是我在CSDN上提问的情况:

主  题:Delphi如何调用VB的OCX?
作  者:TangDL
所属论坛:Delphi
问题点数:100
回复次数:10
人气指数:75
发表时间:2001-10-15 15:05:11

我在VB里写了一个OCX(测试用),ACX上有一按钮,按钮弹出一窗体,同样给OCX加一方法,方法弹出同样窗体,代码如下:
Private Sub Command1_Click()
Form1.Show vbModal, Me
End Sub
Public Sub ShowForm()
Form1.Show vbModal, Me
End Sub
简单吧?
将其加入Delphi窗体上,新加一按钮,按钮调用ShowForm,提示MSVBVM60.DLL里出错,但按ActiveX里按钮可弹出窗体。

不懂了,请教各位:
问题在哪?是否VB或Delphi中哪儿设置不对,或系统中哪儿要设置?

(会者请帮一把,路过的、看到的请推一把)



转移贴子到 Visual C++ Visual Basic Delphi C/C++ C++ Builder ASM 数据库开发 PowerBuilder ActiveX/COM 数据算法 软件工程 图形/游戏/多媒体 安全技术 网络/通讯 技术书籍 文件格式 C# XML/SOAP 数据仓库 VBA 主页制作 图形处理 ASP PHP Perl Java Javascript JSP 嵌入式开发 .NET Framework lotus开发使用 ADO.NET ASP.NET Web Services Web Forms Windows Forms VB.NET VC.NET Windows 9x/ME Windows NT/2000/XP DOS Office使用 Office开发 Exchange server IIS 程序人生 软件市场 程序员考试 人才热线 建议和意见 灌水乐园 走向海外 程序员杂志 软件使用 资源使用 我看软件 寻找软件 行业软件 软件评测 Linux/Unix 硬件指南 | 贴子加分 | 密码:


回复贴子:
 TangDL(Wo~~~~~~~~~~) 回复于2001-10-15 20:20:14
大虾们帮忙啊!
 Jneu(沧海桑田) 回复于2001-10-15 20:23:06
up
 Jneu(沧海桑田) 回复于2001-10-15 20:24:58
好象要注册后才能用。
 TangDL(Wo~~~~~~~~~~) 回复于2001-10-15 20:36:45
肯定注册了:问题是Delphi如何正确调用VB中自定义的方法(注一);显然VB自己的行为是没问题的(注二)

注一:
Public Sub ShowForm()
Form1.Show vbModal, Me
End Sub

注二:
Private Sub Command1_Click()
Form1.Show vbModal, Me
End Sub



 TangDL(Wo~~~~~~~~~~) 回复于2001-10-15 20:40:24
出错为访问MSVBVM60.dll在地址0X00020000冲突
 TangDL(Wo~~~~~~~~~~) 回复于2001-10-15 20:48:46
我是Delphi转VB(被逼的),没试过Delphi调用VB的OCX,哪位过来人介绍一下经验?
 guipei(imbasic) 回复于2001-10-15 20:49:08
gz
 xiaoxiaoli(肖利) 回复于2001-10-15 22:21:28
书上说,直接建立对象就可以调用了。
DELPHI写的OCX都是这样实现的。
GZ
 xiaoxiaoli(肖利) 回复于2001-10-15 22:24:59
你的form创建了吗?
 TangDL(Wo~~~~~~~~~~) 回复于2001-10-15 22:38:52
VB里就如上所示6行代码,工程里一个ActiveX,上有一按钮,另有一Form,名为Form1;
Delphi里有一主窗体,主窗体上放一所编控件,另有一按钮,按钮对应点击事件中仅有代码为:
ActivexControl1.ShowForm。

注册过程肯定无误,编译后点击控件的按钮都能弹出Form1来,但调用ShowForm方法就出错了。

最新情况:
Delphi5未加补丁时OCX可正确注册;
Delphi6、C++ Builder5、Delphi5+Pack1中连Ocx都无法注册,
何解?

 
我想可能是VB和Delphi的参数使用不一样.
将你的Show方法,改为直接调用Ocx上按钮事件,然后在调用试试.
 
用VB的OCX是有一些问题.我用过VB的MSCOMM,就经常出些问题出来,烦死了.我想应该是类型
之间有些偏差吧.我关注此题.
 
OCX按钮上的事件是不公开的,Delphi不能直接调用,而在VB里二者的内容是一样的:
Private Sub Command1_Click()
Form1.Show vbModal, Me '<<<<<<<<<
End Sub
Public Sub ShowForm()
Form1.Show vbModal, Me '<<<<<<<<<<
End Sub
 
你自己下一个DFW离线数据库,自己查查
我先给你贴出两个来
1。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
话题206857的标题是: 如何将VB的控件加入到DELPHI的控件栏中(步骤)?谢谢!! (100分)
分类:非技术问题 阿曼 (00-3-28 10:38:32)
如何将VB的控件加入到DELPHI的控件栏中(步骤)?谢谢!!

RedBeret (00-3-28 10:42:43)
你指的是OCX控件吗?
在COMPONENT中的IMPORT ACTIVEX CONTROL中选定该控件,按INSTALL即可。

iie (00-3-28 10:43:12)
component-install activeX Control

沈前卫 (00-3-28 10:49:25)
菜单component|install activeX Control....再点Add,找到ocx文件,Ok后再Install...


nuke (00-3-28 13:04:21)
呵呵,咱也来捞一票
component-》install activeX Control-》Add-》Install...


wjiachun (00-3-28 16:56:17)
呵呵,以“安装控减”检索一下你就省了100分……

Mischa (00-3-28 19:20:43)
呵呵!
这么多的人来拾皮夹子,8-)
不过有一点要注意,VB写的OCX控件不安全
将其加入到DELPHI后,要多试试, 因为有
可能会“崩掉”

wjiachun (00-3-28 19:27:27)
是啊,有时侯VB的 OCX要它自己的库文件,在Delphi里就不好搞定了……

阿曼 (00-4-7 12:07:36)
多人接受答案了。


iie-10,Mischa-20,nuke-20,RedBeret-20,wjiachun-20,沈前卫-10,的回答最终被接受。




2。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
话题408636的标题是: VB 写的 ocx 在delphi 下不能用?! (200分)
分类:ActiveX 控件 Rockman_Wang (00-12-1 19:27:58)
本人 用 vb 编写的 ocx 中 提供了 一个 Bool 型接口,在 delphi 安装后调用,发现其接口
变成了 wordbool 型,在程序中调用这一过程时:
if xx... then ..时出错, 单独执行这一过程时,也出同样的错误!我又修改了vb 控件
的接口属性 为 string 型,并在delphi 中根据其值 调用 vb ocx 中的 过程,也不行!
我怀疑是Bool 型和 Wordbool 型转换后,返回值引起的错误,怎样才能 让该 ocx 在 delphi
下 运行? 请指教!
出错程序:
在 M2A3_TLB(安装后的 ocx,M2A3 是控件名)的
。。。。。。。。
function TM2A31.EnterMarkupMode: Wordbool

begin
Result := DefaultInterface.EnterMarkupMode
<--- 这!!
end

。。。。。。。。。。。。。。。。。。。中


JohnsonGuo (00-12-2 23:10:21)
关注此题

zyy04 (01-1-10 10:21:12)
请结束或继续

ShanShan (01-1-10 18:22:02)
在delphi中用vb编的ocx是没有问题的啊


wang_feng (01-1-10 20:57:02)
我只知道delphi写的控件有消息机制的话,在vb中就功能没有了。
vb写的控件也许也是这样,先用简单属性和方法,试试在delphi下转化一下。

笑傲江湖 (01-1-10 21:19:45)
DELPHI原生的VCL到处多的是,费这个神干吗:)

mikedeakins (01-1-10 23:47:01)
vb ocx 只能在 vb 和 ie 内部使用,其实并不是真正的 ocx,还没听说有第三个软件可以
使用 vb ocx(包括vc)。

zyy04 (01-2-4 15:28:16)
请继续或结束

zyy04 (01-3-7 17:26:53)
接受答案了.


mikedeakins的回答最终被接受。

 
首先谢谢chinaplate,但我问的问题似乎与你的理解有些出入:
1) DFW的数据库相关帖子我都找了一遍,几乎所有相关帖子我都看过了;
2) VB控件在Delphi中注册我是会的,我也确信我对Delphi和VB一般性操作是有一定基础的;
3) 我对VB控件在Delphi中注册没有疑问,问题在-->>
[h3][red]我自己写的控件中的方法为何在Delphi中调用会引起MSVBVM60.DLL地址冲突[/red][/h3]
 
哦,是这么回事。
1。那在VB中能用吗?
2。你换个环境再试试看。
3。vb做的ocx,其实并不是真正的 ocx,交给DELPHI可能会有问题。
对了,我也碰到过类似的问题,也没找到是什么原因,最后我还是换做VB来调用了。
 
控件在VB、VC都能正常调用
 
[:(]没人帮我,我自己提前一下
 
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
 
WoHaoooooooooooo!
大块投河、玉珠击鼓------》“扑通”一下,没回音了喔!!!!!!!!!
 
你尝试一下用ACTINST.ZIP[辅助您注册安装或卸除 ActiveX 构件
的非可视构件 ( 1.03 版,附源码 ),作者: 李匡正。
http://www.vclxx.org/DELPHIGB/DEFAULT.HTM
集成开发环境相关-程序安装及保护类 ]
进行注册看看?我用Mscomm的时候也曾碰到类似问题
后来是用这个控件解决了
 
我用VC对VB控件封装一次,在Delphi中调用无误,应是自定义的VB控件对接口的自动生成有问题,
BTW:我用Mscomm没遇到什么问题,是不是你们的Delphi版本较低的原因,我的是6.0
 
TangDL,你怎么用VC对VB控件封装的,能讲讲吗?
我也碰到了类似的问题。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部