如何实现调用ActiveX ( 积分: 100 )

  • 主题发起人 主题发起人 delphilww
  • 开始时间 开始时间
D

delphilww

Unregistered / Unconfirmed
GUEST, unregistred user!
最近刚接触使用Com口与一标准信号源(科陆Cl301V2)通讯,厂方提供了一Cl301V2.ocx控件可以在VB情况下使用,但是在我的Delphi6中却不能安装进去,安装过程Componet-Inport ActiveX……与一般的安装一样,也注册了。但是在VCL的ActiveX中看不到控件,不能拖放我的程序界面中,听说可以使用动态调用的办法处理OCX,但是我不知道如何使用?哪位大虾公诉我。万分感谢!!
 
最近刚接触使用Com口与一标准信号源(科陆Cl301V2)通讯,厂方提供了一Cl301V2.ocx控件可以在VB情况下使用,但是在我的Delphi6中却不能安装进去,安装过程Componet-Inport ActiveX……与一般的安装一样,也注册了。但是在VCL的ActiveX中看不到控件,不能拖放我的程序界面中,听说可以使用动态调用的办法处理OCX,但是我不知道如何使用?哪位大虾公诉我。万分感谢!!
 
你是不是选择了create unit
 
没有,我选择Install的
 
那么用create unit的办法试试看。
 
有什么区别吗? install / create unit
 
install是放到面版里,拖动到窗口上是静态调用,只create unit的话是动态自己调用生成实例
 
动态自己调用生成实例:然后如何进行呢?我发现不了控件的类别,无方application.create(self)的。请告诉我如何进行使用。
 
application.create(self);
这是什么意思,没见到过呀。
with Txxx.create(self) do
begin
left := 23;
.......



end;
 
你create unit了以后,保存生成的pas文件,在pas里面会自动建立一些类。你自己去调用类的构造函数就可以生成你想要的activex了。
 
上面的问题我已经解决,现在又遇到了新的问题,在VB中定义一个Single数据类型,实现如下:
Dim s Single
s=110.123456789
prj.ua=s //prj.ua是一硬件设备做的通讯控件,也就是上面所提到的调用
// ActiveX的控件,表示设置的输出电压,其中ua是VB中的Single类型
这里传递给Prj.ua的数值为:110.1235,控件会将这些数值转换成十六进制进行传递
翻译成Delphi语句如下:
var
Prj:variant;
vs:single;
begin
Prj:=CreateOleObject( 'Prj_CL301V2.CL301V2');
vs:=110.01
Prj.ua:=vs //这里发现传递给ua的值变的很奇怪了,成了110.010000000124
end;
因为传递给ua的数值不清楚了,所以硬件仪器肯定不能接受这个正确数值,事实也是这样,仪器的输出变的非常杂乱,不能得到控制的效果,我该如何解决?????
 
vs:variant;
看看
 
后退
顶部