<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > labview深入探索----xcontrol

labview深入探索----xcontrol

作者: 時(shí)間:2017-01-09 來(lái)源:網(wǎng)絡(luò ) 收藏
control是LABVIEW8.x新增的功能,LV中的CONTROL我們是再熟悉不過(guò)了,這個(gè)"X"到底代表什么那,到NI網(wǎng)站上也沒(méi)找到它的英文定義,可能相當與ACTIVEX中的"X"?雖然無(wú)法弄清楚它的定義,但是它的作用是清楚的,我個(gè)人理解它更象VC中MFC的控件自畫(huà),也具備了一些ACTIVEX的能力,與ACTIVEX的最大區別是ACTIVEX是獨立于平臺的,可用于各種編程環(huán)境,從這點(diǎn)來(lái)說(shuō),可以把它看做LV內部的 activex,MFC中的控件自畫(huà)是這樣的,當我們要做一個(gè)特殊形狀的控件時(shí),可以設置它的一個(gè)屬性是自畫(huà),own draw,也就是說(shuō),這個(gè)控件是用戶(hù)自己畫(huà)出來(lái)的,比如一個(gè)按鈕,當鼠標進(jìn)入它的控制區域,會(huì )自動(dòng)顯示凸起狀態(tài),還可以自動(dòng)改變顏色,IE菜單就是這樣,當鼠標移入的時(shí)候,背景色自動(dòng)變成蘭色,離開(kāi)后,又自動(dòng)恢復,實(shí)際上,它是在響應兩個(gè)事件,MOUSE_ENTER 和MOUSE_LEAVE事件.

在xcontrol出現以前,我們也可以對一個(gè)控件通過(guò)屬性節點(diǎn)和事件結構實(shí)現這種動(dòng)態(tài)變化,但是有著(zhù)本質(zhì)的區別,xcontrol通過(guò)事件結構判斷事件,利用屬性節點(diǎn)改變其顯示方式是完全在內部實(shí)現的,因此它是可以重用的,從使用方法上它和LV一般的控件沒(méi)有任何區別,我們完全可以把它看成LV又給我們提供了新的控件,我的文章里多次提到AE的概念,有了XCONTROL,我們不但可以保存數據,而且有了顯示的能力,所以說(shuō),對于基于組件編程的LV,能力有了很大的提高.

本文引用地址:http://dyxdggzs.com/article/201701/337214.htm

雖然xcontrol是一個(gè)新增的特性,但是它的制作方法實(shí)際上我們或多或少地都涉及到了,這就使得制作XCONTROL變得相對容易了.







可以看出,我們通過(guò)事件結構編程實(shí)現了當鼠標移入BOOLEAN控件區域時(shí),BOOLEAN控件的CAPTION和COLOR自動(dòng)發(fā)生了改變,但是所有的控制代碼都是在主循環(huán)里完成了,是通過(guò)控件外部改變的,因此,我們無(wú)法重用這個(gè)控件,假如我們需要100個(gè)這樣的控件,我們需要在事件結構中分別對 100個(gè)控件做類(lèi)似的編程,這顯然是非常麻煩的.

最好的辦法是讓這段代碼在控件內部完成,這樣對于使用者來(lái)說(shuō),這和一般的控件沒(méi)有區別,這樣有效地實(shí)現了封裝,所有的一切從用戶(hù)的角度看,就象調用一個(gè)ACTIVEX.

XCONTROL可以輕松實(shí)現這個(gè)功能

我們知道LV的控件是面向對象的層次繼承結構,每個(gè)控件都繼承了它的父類(lèi)的屬性和方法,但是對于一個(gè)具體的控件,它的屬性和方法都是固定的我們無(wú)法刪除或者增加這個(gè)控件的屬性和方法.對于XCONTROL,我們可以簡(jiǎn)單地理解成繼承了一個(gè)基本控件,并在此基礎上,用戶(hù)增加的自己的屬性和方法,是一個(gè)重新定義的,增加的大量功能的新的控件.

下面看看制作XCONTROL的具體過(guò)程.



這樣一個(gè)基本的XCONTROL的結構就建立起來(lái)了,存儲并重新命名

lv自動(dòng)生成兩個(gè)自定義控件,分別是data.ctl和state.ctl,兩個(gè)VI,分別是Facade.vi和Init.vi

這四個(gè)部分是任何XCONTROL都必須包括的基本構件。LV幫助文件中稱(chēng)為required abilities,必須的能力(直譯),

data.ctl代表該XCONTROL表示的數據類(lèi)型,一般的控件也都代表一種數據類(lèi)型,比如DOUBLE,BOOLEAN,ARRAY等等

data.ctl是自定義控件,可以根據需要修改成您需要的數據類(lèi)型,比如對于一個(gè)學(xué)生的個(gè)人信息,我們應該生成一個(gè)簇,包括姓名,性別,年齡,班級等。

state.ctrl代表XCONTROL的顯示狀態(tài),它和DATA.CTL一樣,都是嚴格類(lèi)型定義。它包含的信息是我們想控制XCONTROL的屬性。

根據我們上面的例子,我們定義四種屬性,1:鼠標進(jìn)入標題 2:鼠標離開(kāi)標題 3:鼠標進(jìn)入顏色 4:鼠標離開(kāi)顏色。

xcontrol中最復雜的就是facade.vi,facade英文意思是一個(gè)物體的正面,這里翻譯成外觀(guān)比較合適。

當xcontrol被加載到前面板或者一個(gè)包含XCONTROL的VI調入內存的時(shí)候,該VI自動(dòng)被調用,以便在顯示之前做一些必要的初始化工作。

我們還是用上面的例子制作一個(gè)簡(jiǎn)單的XCONTOL來(lái)說(shuō)明一下,首先我們修改DATA.CTL,用一個(gè)BOOLEAN 類(lèi)型替代它。

然后修改STATE.CTL,加入必要的屬性。






INIT是你在前面板生成控件時(shí)自動(dòng)調用了,同時(shí)它內部存儲了版本信息,當檢查到當前版本發(fā)生變化,自動(dòng)更新。

INIT一般不需要更改。

重點(diǎn)看一下FACADE.VI,它自動(dòng)生成幾個(gè)事件。

1:TIMEOUT事件。




在事件結構中,如果沒(méi)有任何事件發(fā)生,TIMEOUT如果位連接,默認值是-1,表示永遠不發(fā)生超時(shí)事件,如果連接一個(gè)固定的數值,比如100,單位是毫秒,如果沒(méi)有事件發(fā)生,則每100MS觸發(fā)一次超時(shí)事件,需要注意的是上面的超時(shí)事件連接的是0,表示無(wú)事件時(shí)立即超時(shí),同時(shí)循環(huán)條件端子選擇的是 STOP IF TRUE,因此,一旦超時(shí)發(fā)生,將立即退出循環(huán)。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: labviewxcontro

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>