自定义控件的事件

clinghengsu 2007-09-18 05:27:29
需要在网页中调用一个activex,这个activex会引发一个自定义的事件。调用者是普通vb程序时可以收到消息;但当调用者是IE时,会收不到消息。
vb程序
Private Sub Command1_Click()
RaiseEvent RE
End Sub

IE:
<OBJECT ID="UserControl1" CLASSID="CLSID:61C1D296-1011-4FEA-8BCE-205E6495DFA8">

<SCRIPT LANGUAGE="VBScript">
Sub UserControl1_RE()
MsgBox("Clicked")
End Sub
</Script>

这个是什么问题? 或者谁有调试通过的程序,发我一个。 我的mail是clinghengsu@hotmail.com
...全文
242 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgxysl 2007-10-19
  • 打赏
  • 举报
回复
在客户端用下面的语法调用
<SCRIPT language="vbscript" event="RE()" for="UserControl1">
<!--
MsgBox("Clicked")
//-->
</SCRIPT>

-------------------------------------------------------------------

欢迎光临LGX软件园(http://lgxyslldw.512j.com)

◎LgxGrid表格(报表)控件。无论你是初学者还是资深程序员,她都会给你带来意想不到的惊喜!

◎LGX网店管理系统。她,让你可以轻轻松松地组建你的网店,让互联网给你带来无限的商机。

(以上两款软件诚招软件销售代理商。有意者邮lgxysl@163.com商谈)

tianhuo_soft 2007-10-16
  • 打赏
  • 举报
回复
Microsoft为增加在Internet上面的软件竞争能力,发表并完善了ActiveX。现在,ActiveX的相当部分控件已经集成在Windows系统中,形成一种Build In形式。这使网页非常容易的利用它,实现各种动态及交换互动功能。你曾想过在网页里实现文字的旋转,更替和闪烁效果吧?如果用JavaScript或者单纯用VBScript, 要写比较大量的代码,而通过用小量的代码调用内建在Windows里的ActiveX控件,就能实现了。下面介绍两个标准的ActiveX控件,来实现以上功能。

---- 我们首先用Microsoft IE的Label控件,把下面的代码加入到你的网页中去,当你按下旋转按钮时,就能实现指定文字的旋转。

< html > < head > < title >Active X Demo One< /title > < /head > < body > < p >
< object classid="clsid:99B42120-6EC7-11CF-A6C7-00AA00A47DD2" id="lblActiveLbl"
width="250" height="250" align="middle" hspace="20" vspace="0" > //调用ActiveX的标签控件,
clsid就是该控件在windows注册表中唯一识别码。 < param name="Angle" value="0" >
< param name="Alignment" value="4" > < param name="BackStyle" value="0" > < param name="Caption"
value="欢迎使用ActiveX!" > < param name="FontName" value="宋体" > < param name="FontSize" value="20" >
< param name="FontBold" value="1" > < param name="ForeColor" value="16744448" > < /object >
//这里是加入各种参数的值,具体有下文介绍。 < /p > < table > < tr > < td >< form NAME="LabelControls" Action >
< p >< input TYPE="BUTTON" NAME="Rotate" VALUE="旋转" > < /p > < /form > < /td > < /tr > < /table >
< hr noshade size="1" > < script LANGUAGE="VBScript" > < !-- Sub Rotate_onclick //当单击按钮时,激活此函数。 Dim TheForm
Set TheForm = Document.LabelControls lblActiveLbl.Angle = (lblActiveLbl.Angle + 30) Mod 360 //对Angle对象操作,每次转30度。
id=SetTimeOut("Rotate_onclick",100,"VBScript") //每100毫秒执行此函数一次。 End Sub -- > < /script > < /body > < /html >
---- 通过以上代码,可见在网页中调用ActiveX其实很简单。在< object >段中,把要调用的ActiveX Id码加入就成。现在详细讲解一下Label控件的参数。
---- Angle是文字的角度,Value是从0到360。Alignment是文字的对齐方式, 0表示左对齐,1是上对齐,2是右对齐,3是下对齐,4是用的最多的中间对齐。 BackStyle是背景式样,0透明,1不透明。Caption是要显示的文字。FontName, FontSize分别是字体的名称和大小。关于文字的式样还有FontBold,FontUnderLine, FontStrikeOut等。FrColor是字体的颜色,它是蓝,绿,红三色的16进制转换成十进制值,如蓝色的16进制值就是ff0000,绿色00ff00,红色0000ff。

---- 下面我们调用Timer控件,实现文字更替功能。

< html > < head > < title >Active X Demo Tow< /title > < /head > < body > < p >
< object classid="clsid:99B42120-6EC7-11CF-A6C7-00AA00A47DD2" id="lblActiveLbl"
width="200" height="200" align="middle" hspace="20" vspace="0" > < param name="Alignment" value="4" >
< param name="Caption" value="欢迎使用ActiveX" > < param name="ForeColor" value="255" >
< /object > < object classid="clsid:59CCB4A0-727D-11CF-AC36-00AA00A47DD2" id="TimerEvent" >
//给网页加入了Timer控件 < param name="Enable" value="-1" > < param name="Interval" value="500" >
< /object >< /p > < script LANGUAGE="VBScript" > < !-- Dim i i=0
Sub TimerEvent_timer //Timer事件发生后,激活此函数 Dim a(3) a(0)="利用ActiveX"//这是要更替的文字
a(1)="可以轻易实现" a(2)="文字的替换" lblActiveLbl.Caption=a(i) i=i+1
if i >2 then i=0 lblActiveLbl.Angle = (lblActiveLbl.Angle + 30) Mod 360
//一边更替,一边旋转 End Sub -- > < /script > < /body > < /html >
---- 从上面这个例子,我们可以看到Timer控件两个参数的作用—— Enable的值是-1时,控件有效,为0时失效;Interval是触发Timer 事件的间隔,单位是毫秒。要注意在Object段的"id=TimeEvent"相当于ActiveX与VBScript的接口,这个id要与VBS中的子函数名字相同。不过,在这里来说,ActiveX这个Timer控件效率不如VBScript的Set- TimeOut。

---- 实现文字的变色闪烁效果,就更加容易了,只要对Label的Forecolor 对象操作就成,把下面这段VBScript代码替换例二中的VBS就成了。

< script LANGUAGE="VBScript" > < !-- Dim i,k
i=255 //先设置为红色 k=65535/10 //这是变色的步长
Sub TimerEvent_timer
if(i >16777215 or i< 0) then k=-1*k
i=i+k lblActiveLbl.ForeColor=i
End Sub -- > < /script >
---- 如何,是不是有一点霓虹灯的效果?如果把变色的步长取合适,就可以实现文字的淡入淡出效果了。
clinghengsu 2007-10-15
  • 打赏
  • 举报
回复
是时间问题,如果触发事件时,vb正在进行别的耗时程序,则有可能回收不到通知
蒋晟 2007-09-19
  • 打赏
  • 举报
回复
<SCRIPT FOR=UserControl1 EVENT="RE" LANGUAGE="VBScript">
</SCRIPT>
clinghengsu 2007-09-19
  • 打赏
  • 举报
回复
好像还是不行,vb写的activex需要有什么特殊要求吗?

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧