ActiveX控件的Events事件

http://labview360.com/article/info.asp?TID=10152&FID=165

Active X函式库

对使用LabVIEW作为开发环境的开发人员来说,如果能呼叫或引用其他程式所开发的物件如:OCX、DLL…等。不仅能够缩短开发时间,更能随心所欲的设计出所需要的功能。毕竟在LabVIEW的开发环境下或多或少还是会有所限制,例如:如何用LabVIEW制作常注程式,也就是将程式放到System Tray上呢?LabVIEW为了解决这样的问题,针对Active X物件提供了Active X函式库,使用这些函式库里的元件来引用现有的Active X物件。


图1.1 LabVIEW提供的Active X函式库

不单单在Block Diagram函式库上,在Front Panel上也可以利用Active X Container控制元图1.2来引用ActiveX控制项。


图1.2 LabVIEW提供的Active X Container控制元

 

Active X物件的属性方法及事件

在讨论如何使用ActiveX前,我们先来针对元件的属性,方法及事件来做一个简单的说明。属性(Property),就是指该元件的外观,例如元件大小、外观颜色、Label名称…等。要改变元件属性,除了在设计阶段在Front Panel改变之外,还可以利用Property Node 图1.3来指定。


图1.3 Property Node

方法(Methods),取得该元件的某种活动功能,例如:启动或移除DataSocket动作,使用者可利用Invoke Node 图1.4来决定该元件要做何种功能。在最后的制作常驻程式范例中将会针对这个部分再做说明。


图1.4 Invoke Node

事件(Events),每一个物件都会有它自己的动作,最常见的就是Mouse Down,Value Change…等。换句话说,就是该元件现在正在发生的行为。要取得Events的发生,可以利用Events Structure进行事件触发图1.5。但是,这是针对于在


图1.5 Events Structure

Front Panel上的UI(User Interface)元件所进行的,对于Active X就没法使用这种方式取得Events事件,而必须跟Register Event Callback相配合来取得ActiveX的触发事件图1.6


图1.6 Register Event Callback

在了解ActiveX物件的属性方法及事件后,我们再来简单说一下Event事件。在Event事件上我在这里把它分为二种模式,附带说明一下在LabVIEW的Event模式里不单单这二种,为了让大家很清楚的分辨这二种Event的差异性,所以我只针对这二种方式做说明。一种是UI触发的Event事件,另一种是非UI触发的Event事件。UI触发的Event事件,简单的说就是在人机介面上利用滑鼠游标或键盘来改变人机介面上元件的参数,或是Mouse Down、Mouse Up、Key Up…等,状态改变时,所触发的Event事件,这样的Event事件,我把它称为UI触发的Event事件。非UI上的Event触发何谓非UI上的Event触发呢?举例来说,如果我在UI上放置2个Boolean控制元一个是Button(Trigger)另一个是LED(Read Event)。而我所要的功能是当Button按下时,改变LED的参数(True或False)。由LED的Value改变来触发Events Structure,藉由LED的触发去呼叫Dialog视窗。如果使用图1.7的方式是没办法达到上述所需要的功能。因为,Events Structure只能在Front Panel上的元件被使用者改变时,例如使用者按下Front Panel上的按钮或键盘输入Numeric的参数…等,以这样的方式改变参数,才有办法执行Events Structure里的Event程序。


图1.7 无法触发Read Event

而要达到非UI上的Event触发,就必须如图1.8一样利用Register Event Callback及Callback Vi来使Read Event LED改变状态,利用这样的方式来触发Read Event里的Value Change程序。


图1.8 以Register Event Callback方式触发Read Event

也就是在程式一开始执行的时候,会先注册一个Callback Events,在Callback Vi里,先取得Read Event的Reference的Value(Signaling)及Value。


图1.9 Callback Vi

当Trigger Value被改变时,会先执行Callback Vi,然后将参数传给Read Event


图1.10 触发Read Event Value Change程序

Reference的Value(Signaling) 图1.9。透过这样的改变再去触发Event Structure里的Read Event(Value Change)程序图1.10。各位或许会问;为什么要提到非UI触发的Event事件呢?使用ActiveX物件跟Register Event Callback又有什么关系呢?在制作常驻程式的章节里,除了要使用ActiveX元件的属性及方法外,还必须取得滑鼠在System Icon上的触发事件,如果没办法取得滑鼠触发事件,那么常驻程式的功能也就没法完成。

 

 

开始之前

在ActiveX物件之一的章节里,我们针对ActiveX及Event部分做了些许说明。接下来,利用实际的ActiveX元件及上一章节所书的部分作一个结合,来设计一个常驻程式。所谓常驻程式就是在各位电脑萤幕右下角出现的小图示图2.1,当你游标移到该位置的某一个Icon并且按下滑鼠上的按钮时,相对应的程式会显示画面或是进行其他动作。


图2.1 System Tray Icon

而我们就利用STI Control这个ocx元件,来设计一个类似这样一个功能的程式。在这开始之前,你必须先复制STI.ocx 图2.2并进行注册在你的电脑里。


图2.2 STI.ocx

完成以上步骤后,就可以开始进行常驻程式的制作了。

 

如何引用STI Control元件

引用ActiveX的方式除了在Block Diagram上使用ActiveX物件外也可以直接在Front Panel上直接指定STI Control元件。步骤一,在Control控制面板上图2.3,建立一个ActiveX Container元件并在


图2.3 ActiveX Container

ActiveX Container上按滑鼠右键,选择Insert ActiveX Object选项图2.4。


图2.4 Insert ActiveX Object选项

步骤二,在Select ActiveX Object视窗里,选择STI Control元件图2.5。当然,你也可以利用这种方式引用其他ocx元件。步骤三,完成后,按下OK按钮。在Front Panel及Block Diagram上就会出现STI Control元件图2.6。


图2.5 Select ActiveX Object


图2.6 STI Control元件

 

设定属性及方法

在之前的讨论中,可以利用Property Node及Invoke Node分别指定该元件的属性及方法。步骤一,在这个范例中,分别指定出现在右下角图示的方式,图示的位置及由标移动到图示上所出现的文字。

步骤二,完成属性设定后,在程式一开始执行时,我们利用Invoke Node的Appear方式,将图示放到System Tray上。

步骤三,在程式结束时,增加一个Invoke Node的Remove在程式的最后,这个Remove作用是将出现在System Tray上的图示移除。如果没有这个步骤,当程式停止执行后,图示将不会被移除。

完成上述步骤后,执行程式。查看在System Tray上出现ROCKET的Icon,将游标指向??ROCKET Icon,则出现STI System tray Test的提示文字。

当然,这样的结果还不能说是完成,因为光是把Icon放到System Tray上是不够的,还必须搭配滑鼠的按钮动作来取得事件。

 

利用Callback Vi取得Events事件

步骤一,在Block Diagram上新增一个Register Event Callback Node,并且将STI的ActiveX Object指向Event。

步骤二,选择STI的DbClick作为Event的触发条件。

步骤三,新增一个名为Event的Boolean Indicator。建立一个Boolean的Reference并指向User Parameter接点上。

步骤四,在Register Event Callback Node的VI Ref接点上,按滑鼠右键。在

选单上选择Create Callback Vi选项,建立Callback Vi。

步骤五,在Callback Vi的Block Diagram里,产生Event的Property Node,Value及Value(Signaling),并且用NOT作反向。需要这样做是要让Boolean有ON及OFF的参数变化。

步骤六,接下来就是试试看程式执行的结果,当滑鼠游标在ROCKET Icon上按下Double Click时,Event的LED会做ON(OFF)变化。当你停止程式时,ROCKET Icon会消失不见。结论这里所讨论的都是比较基本的用法,在实际的使用上你也可以引用不同的ocx

物件来设计你的程式。在Register Event Callback Node的使用上不单单在ActiveX的物件上使用,你也可以利用它来进行视窗呼叫。

时间: 2024-11-13 05:52:52

ActiveX控件的Events事件的相关文章

ActiveX控件(ATL篇)

目录 第1章 VC++6.0创建    2 1.1 目标    2 1.2 创建项目    2 1.3 增加COM类    4 1.4 属性    7 1.5 事件    8 1.6 实现连接点    9 1.7 编码    11 1.7.1 增加成员变量    11 1.7.2 初始化成员变量    11 1.7.3 完成属性赋值代码    11 1.7.4 完成控件绘制代码    11 1.7.5 响应鼠标左键按下消息    13 1.7.6 修改DllUnregisterServer   

ActiveX控件(MFC篇)

目录 第1章 VC++6.0创建控件    1 1.1 目标    1 1.1.1 方法    1 1.1.2 属性    1 1.1.3 事件    1 1.2 创建项目    2 1.3 项目结构    6 1.3.1 COM接口    6 1.3.2 COM类    7 1.3.3 属性页    7 1.3.4 应用程序类    8 1.3.5 注册与注销    8 1.4 方法    9 1.4.1 增加    9 1.4.2 删除    11 1.5 属性    12 1.5.1 Te

C#开发ActiveX控件

昨天写了篇博客<Winform 程序嵌入WPF程序 并发送消息>,没有说明为什么要嵌入WPF程序,那么今天就来唠叨唠叨其中的一个使用场景,开发ActiveX控件 首先,新建一个类库工程HuaYun.ActiveX,右键工程属性,在“应用程序”页,点击“程序集信息”按钮,在弹出的窗体里勾选“使程序集COM可见”,具体操作如下图 第二步,切换到“生成”的选项卡,勾选“为COM互操作注册”,如下图 第三步,在AssemblyInfo.cs里添加[assembly: AllowPartiallyTru

【转载】基于MFC的ActiveX控件开发(3)

原文:http://iysm.net/?p=122 3.事件 ActiveX 控件使用事件通知容器控件上发生了某些事情.事件的常见示例包括单击控件.使用键盘输入数据和控件状态更改.当发生这些操作时,控件将引发事件以提醒容器. MFC 支持两种事件:常用和自定义.常用事件是 COleControl 类自动处理的事件.自定义事件使控件得以在该控件特定的操作发生时通知容器.控件内部状态发生更改或收到某个窗口消息即属于此类事件. 常用事件 常用事件由 COleControl 类自动引发.COleCont

Delphi 编写ActiveX控件(OCX控件)的知识和样例(有详细步骤)

一.ActiveX应用情况简介: ActiveX控件也就是一般所说的OCX控件,它是 ActiveX技术的一部分.ActiveX是微软公司推出的基于组件对象模型COM的技术,包括对Windows 32位应用编程接口(Win32 API)和组件对象模型的一系列扩充和增强,目标是把计算机桌面环境与因特网环境集成起来,同时保护在Windows技术中现有的开发投资.微软的 ActiveX技术根本上就是修改过的OCX技术,使它能够跨越Internet,主要是使用WWW来传递控件.            A

【转载】基于MFC的ActiveX控件开发(1)

原文:http://iysm.net/?p=114 ActiveX 控件是基于组件对象模型 (COM) 的可重用软件组件,广泛应用于桌面及Web应用中.在VC下ActiveX控件的开发可以分为三种,一种是直接用COM的API来开发,这样做显然非常的麻烦,对程序员要求也非常高,因此一般是不予考虑的:一种是基于传统的MFC,采用面向对象的方式将COM的基本功能封装在若干MFC的C++类中,开发者通过继承这些类得到COM支持功能.MFC为广大VC程序员所熟悉,易于上手学习,但缺点是MFC封装的东西比较

ActiveX控件

什么是ActiveX控件:一个进程内服务器,支持多种的COM接口.(可以理解为,一个COM接口是一个纯抽象基类,你实现了它,并且它支持自注册,就是一个ActiveX控件了)可以把ActiveX控件看做是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行. 容器应用程序是可以嵌入或链接对象的应用程序. 服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序. 我们常用的word就是一个容器应用程序,例如,若在word文档中可以嵌入或链接一个Excel表格

表单控件和ACTIVEX控件主要区别

作者:iamlasong 最近研究了一下Excel控件.使用时可以插入两种类型的控件,一种是表单控件(在早期版本中也称为窗体控件,英文Form Controls),另一种是ActiveX控件.表单控件只能在工作表中添加和使用(呵呵,叫表单控件,但却不在表单Form中使用,Form中使用的反而是ActiveX控件),并且只能通过设置控件格式或者指定宏来使用它:而ActiveX控件不仅可以在工作表中使用,还可以在用户窗体中使用,并且具备了众多的属性和事件,提供了更多的使用方式. 关于两者网上说明很多

绘制流程图的ActiveX 控件FlowChartX

FlowChartX 控件是用来绘制流程图的ActiveX 控件,能够帮助你创建工作流程图.对象层次和关系图.网络拓扑图.实体关系图.IVR.工业自动化.genealogy trees .算法流程图.组织结构图.XML文档.类图等,控件为用户创建和编辑图形提供了直观的交互模式,支持打印和序列化. 具体功能: 支持多用户的交互模式 提供剪贴板-拷贝/粘帖/剪切功能(仅仅FlowChart Pro具有这个特征) 支持Undo/Redo(仅仅FlowChart Pro具有这个特征) 拖放对象 键盘快捷