窗口元素的外部引用
窗口元素是指窗口中的窗口變量、窗口中的對象(如按鈕、矩形、自由報表等)以及窗口自定義函數(shù)。而窗口元素的外部引用則是指在窗口外部對某一窗口中的元素的引用。這種引用適用于客戶端中的任何腳本。
在老版本中,窗口將內(nèi)部元素封裝起來,外部腳本只能將窗口作為一個整體(或者說對象)進(jìn)行訪問。例如,Open()、Show()、Close()等窗口對象函數(shù)都是將窗口作為一個對象來訪問的。但對于窗口中的元素外部則是無法訪問的。紫金橋v6.5及更高級的版本將窗口元素對外開放,讓窗口外部可以隨意引用窗口元素。
下面以示意圖的方式進(jìn)一步說明這種引用關(guān)系的變化。
在低于紫金橋V6.5的版本中,窗口外部對窗口的引用情況如下圖所示(箭頭指向被訪問者):

窗口外部可以將窗口作為一個整體訪問,但不能訪問窗口中的變量、對象以及窗口自定義函數(shù)。
在紫金橋v6.5以上版本中,窗口外部對窗口的引用情況如下圖所示:

窗口外部既可以將窗口作為一個整體訪問,也可以訪問窗口內(nèi)部的元素。
引用規(guī)則
窗口元素的外部引用適用于客戶端中的任何腳本。其引用方式為:
#窗口名.對象名(或變量名或函數(shù)名)
例如:想在窗口外某一腳本處引用窗口DRAW1中的按鈕Menu1的“Text”屬性,則可以輸入語句“#DRAW1.Menu1.Text...”。
內(nèi)部處理
在運行時,如果一個窗口處于關(guān)閉狀態(tài),而此時其他腳本正在使用該窗口中的元素,則系統(tǒng)會自動以隱藏的方式打開這個窗口。并且,在程序退出前或者用戶以某種方式(如腳本)主動關(guān)閉該窗口前,這個窗口會一直處于打開狀態(tài)。此時應(yīng)該注意,雖然該窗口不可見,但是實際上它已經(jīng)被打開,它的窗口腳本已經(jīng)被激活,如進(jìn)入窗口腳本、周期執(zhí)行腳本以及畫面中的可執(zhí)行腳本等。
此時如果想判斷某一窗口是否已經(jīng)被打開,可以使用窗口對象的IsOpen()函數(shù)。
優(yōu)點
窗口元素的外部引用功能方便了紫金橋工程的編寫。在老版本軟件中,除少部分對象(如二維表、全局自定義函數(shù)、配方等)能以全局對象的方式使用外,其他絕大部分的對象都只局限于窗口內(nèi)部使用,例如:windows控件、自由報表、趨勢組件等。另外,若想在窗口間交換數(shù)據(jù)也只能使用全局變量,F(xiàn)在,窗口元素的外部引用功能解決了這些問題。某窗口中的元素完全可以當(dāng)做全局元素來使用,這使紫金橋的工程開發(fā)變得更為靈活。
缺點
窗口元素的外部引用功能是為某些特殊情況下的使用而設(shè)計的。過多的使用這種功能會使窗口進(jìn)程關(guān)系混亂,難以確定窗口間的依賴關(guān)系,致使程序可讀性和穩(wěn)定性降低。例如,某工程中在窗口2中實時顯示窗口1中的變量n,如果某一時刻窗口1被關(guān)閉,雖然系統(tǒng)馬上會以隱藏的方式打開窗口1,但在窗口1關(guān)閉的瞬間,變量n的值為壞值,這可能會產(chǎn)生意想不到的后果。
因此,在非必要情況下建議盡量不使用窗口元素的外部引用功能。如果一定要使用,請在詳細(xì)了解它的運行原理之后再使用。
|