視窗提示系列文章--視窗之間的協作(中)

來源:互聯網
上載者:User

不同視窗之間的變數或函數調用

使用視窗名加界定符再加變數的形式可以應用其他視窗中的變數或者函數。例如,要想在視窗w_parm中引用視窗w_data中的執行個體變數is_title,可以使用w_data.is_title來引用。引用變數既可以使用其他的取值,也可以給它賦值,只要變數的定義允許這些操作(具體參見前面有關章節的介紹)。

實際上,這在程式設計中並不提倡。模組之間互相連接的程度稱為耦合,程式設計提倡建立低耦合的模組,這樣模組之間的介面才會簡單,這樣的程式才易於維護。不同視窗之間直接引用變數是最高程度的耦合(稱為內容耦合),是應該盡量避免的一種耦合。

在不同視窗之間訪問視窗函數也使用相同的形式,同樣也是不提倡的。

雖然不提倡,但某些情況下編程還是很方便的。比如,在資料視窗進行資料檢索時,提供給使用者一個小視窗顯示檢索進度,並允許使用者隨時取消檢索。假設當視窗w_data中的資料視窗dw_1進行檢索時彈出小視窗w_cancel,其編程過程是:

(1)在視窗w_data中定義執行個體變數:

boolean ib_cancel_open

(2)在視窗w_data的Open事件中:

dw_1.SetTransObject(SQLCA)

(3)在視窗w_data的資料視窗控制項dw_1的RetrieveStart事件中:

ib_cancet_open = true            //表示視窗w_cancel已經開啟

Open(w_cancel)

(4)在視窗w_data的資料視窗控制項dw_1的RetrieveRow事件中:

This.ScrollNextRow( )         //滾動到新檢索的資料行上  

If IsValid(w_cancel) Then             //如果w_cancel沒有關閉

                 //在w_cancel視窗中的st_count靜態文本控制項上顯示已經檢索到的記錄數

        w_cancel.st_count.Text = String(This.RowCount( ))

End If

 

If ib_cancel_open = False Then Return 1                 //停止檢索

(5)在視窗w_data的資料視窗控制項dw_1的RetrieveEnd事件中:

If ib_cancel_open Then      

        ib_cancel_open = False

End If

 

Close(w_cancel)

(6)在視窗w_cancel的按鈕“取消”的Clicked事件中:

Parent.ParentWindow( ).TriggerEvent("cancel_requested")

(7)在視窗w_data的自訂事件cancel_requested中:

ib_cancel_open = false

在上面這個程式中,當視窗w_data中的資料視窗開始檢索時,小視窗w_cancel顯示並不斷重新整理檢索到的記錄數,在w_cancel中使用者隨時可以點擊“取消”按鈕終止檢索。該程式中,在w_data的資料視窗dw_1的retrieverow事件中直接修改視窗w_cancel中的st_count控制項的內容,所以這兩個視窗屬於內容耦合。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.