在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

            labview深入探索----xcontrol

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

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

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

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







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

            最好的辦法是讓這段代碼在控件內部完成,這樣對于使用者來說,這和一般的控件沒有區(qū)別,這樣有效地實現了封裝,所有的一切從用戶的角度看,就象調用一個ACTIVEX.

            XCONTROL可以輕松實現這個功能

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

            下面看看制作XCONTROL的具體過程.



            這樣一個基本的XCONTROL的結構就建立起來了,存儲并重新命名

            lv自動生成兩個自定義控件,分別是data.ctl和state.ctl,兩個VI,分別是Facade.vi和Init.vi

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

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

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

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

            根據我們上面的例子,我們定義四種屬性,1:鼠標進入標題 2:鼠標離開標題 3:鼠標進入顏色 4:鼠標離開顏色。

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

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

            我們還是用上面的例子制作一個簡單的XCONTOL來說明一下,首先我們修改DATA.CTL,用一個BOOLEAN 類型替代它。

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






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

            INIT一般不需要更改。

            重點看一下FACADE.VI,它自動生成幾個事件。

            1:TIMEOUT事件。




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


            上一頁 1 2 3 下一頁

            關鍵詞: labviewxcontro

            評論


            技術專區(qū)

            關閉