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

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

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