窗口元素的外部引用
窗口元素是指窗口中的窗口變量、窗口中的對象(如按鈕、矩形、自由報表等)以及窗口自定義函數。而窗口元素的外部引用則是指在窗口外部對某一窗口中的元素的引用。這種引用適用於客戶端中的任何腳本。
在老版本中,窗口將內部元素封裝起來,外部腳本隻能將窗口作為一個整體(或者說對象)進行訪問。例如,Open()、Show()、Close()等窗口對象函數都是將窗口作為一個對象來訪問的。但對於窗口中的元素外部則是無法訪問的。紫金橋v6.5及更高級的版本將窗口元素對外開放,讓窗口外部可以隨意引用窗口元素。
下麵以示意圖的方式進一步說明這種引用關係的變化。
在低於紫金橋V6.5的版本中,窗口外部對窗口的引用情況如下圖所示(箭頭指向被訪問者):
窗口外部可以將窗口作為一個整體訪問,但不能訪問窗口中的變量、對象以及窗口自定義函數。
在紫金橋v6.5以上版本中,窗口外部對窗口的引用情況如下圖所示:
窗口外部既可以將窗口作為一個整體訪問,也可以訪問窗口內部的元素。
引用規則
窗口元素的外部引用適用於客戶端中的任何腳本。其引用方式為:
#窗口名.對象名(或變量名或函數名)
例如:想在窗口外某一腳本處引用窗口DRAW1中的按鈕Menu1的“Text”屬性,則可以輸入語句“#DRAW1.Menu1.Text...”。
內部處理
在zai運yun行xing時shi,如ru果guo一yi個ge窗chuang口kou處chu於yu關guan閉bi狀zhuang態tai,而er此ci時shi其qi他ta腳jiao本ben正zheng在zai使shi用yong該gai窗chuang口kou中zhong的de元yuan素su,則ze係xi統tong會hui自zi動dong以yi隱yin藏zang的de方fang式shi打da開kai這zhe個ge窗chuang口kou。並bing且qie,在zai程cheng序xu退tui出chu前qian或huo者zhe用yong戶hu以yi某mou種zhong方fang式shi(如腳本)主動關閉該窗口前,這個窗口會一直處於打開狀態。此時應該注意,雖然該窗口不可見,但是實際上它已經被打開,它的窗口腳本已經被激活,如進入窗口腳本、周期執行腳本以及畫麵中的可執行腳本等。
此時如果想判斷某一窗口是否已經被打開,可以使用窗口對象的IsOpen()函數。
優點
窗口元素的外部引用功能方便了紫金橋工程的編寫。在老版本軟件中,除少部分對象(如二維表、全局自定義函數、配方等)能以全局對象的方式使用外,其他絕大部分的對象都隻局限於窗口內部使用,例如:windows控件、自由報表、qushizujiandeng。lingwai,ruoxiangzaichuangkoujianjiaohuanshujuyezhinengshiyongquanjubianliang。xianzai,chuangkouyuansudewaibuyinyonggongnengjiejuelezhexiewenti。mouchuangkouzhongdeyuansuwanquankeyidangzuoquanjuyuansulaishiyong,zheshizijinqiaodegongchengkaifabiandegengweilinghuo。
缺點
窗(chuang)口(kou)元(yuan)素(su)的(de)外(wai)部(bu)引(yin)用(yong)功(gong)能(neng)是(shi)為(wei)某(mou)些(xie)特(te)殊(shu)情(qing)況(kuang)下(xia)的(de)使(shi)用(yong)而(er)設(she)計(ji)的(de)。過(guo)多(duo)的(de)使(shi)用(yong)這(zhe)種(zhong)功(gong)能(neng)會(hui)使(shi)窗(chuang)口(kou)進(jin)程(cheng)關(guan)係(xi)混(hun)亂(luan),難(nan)以(yi)確(que)定(ding)窗(chuang)口(kou)間(jian)的(de)依(yi)賴(lai)關(guan)係(xi),致(zhi)使(shi)程(cheng)序(xu)可(ke)讀(du)性(xing)和(he)穩(wen)定(ding)性(xing)降(jiang)低(di)。例(li)如(ru),某(mou)工(gong)程(cheng)中(zhong)在(zai)窗(chuang)口(kou)2中實時顯示窗口1中的變量n,如果某一時刻窗口1被關閉,雖然係統馬上會以隱藏的方式打開窗口1,但在窗口1關閉的瞬間,變量n的值為壞值,這可能會產生意想不到的後果。
因此,在非必要情況下建議盡量不使用窗口元素的外部引用功能。如果一定要使用,請在詳細了解它的運行原理之後再使用。