1. 程式人生 > 實用技巧 >windev的內部視窗傳參方式及其與類的相似性

windev的內部視窗傳參方式及其與類的相似性

最近的應用,需要向一個內部視窗(internal window)傳參,因為官方文件的說明較為寬泛,雖然結果只有兩小段程式碼,但也費了很大的勁。把所有關於procedure的文件看一遍,又是重新學習了一遍C#的類與方法,才最終解決了這個問題。向內部視窗傳參,有三個方法可以使用,我使用的是第三種方法,以下會重點說明第三種方法:

方法一:如果是動態標籤頁(Dynamic Tab)的內部視窗,可以通過TabOpen直接傳參,這個和視窗傳參的用法一樣,如下:

TabOpen(TAB_Main, "Test of the new tab", IWIN_InternalWindow,"Param1","
Param2")

方法二:如果是內部視窗控制元件的內部視窗,可以用方法二和方法三。方法二直接用函式ChangeSourceWindow來傳遞引數

方法三:因為我的應用不需要改變內部視窗,所以使用了procedure的方式來傳遞引數。步驟如下:

1、在內部視窗建立一個Local Procedure,如:

Procedure IWINParam(Param1,Param2)
//以下為程式碼塊,Param1和Param2類似於行參

2、在放置內部視窗控制元件的父視窗,呼叫步驟1自建的過程函式,並將實參傳遞過去,如:

//其中IWCTRL_ControlName為內部視窗控制元件的名稱,此處的Param1和Param2為實參
Param1 is string = "HI" Param2 is int = 123 IWCTRL_ControlName.IWINParam(Param1,Param2)

兩個步驟,即可完成引數傳遞,很簡單。但因為官方文件說明的隱晦,卻是讓人想破了腦袋,直到重新學習了一次C#的類和方法,才推斷官方文件中的說明,也許就是引用類方法的用法。事實證明,兩者的相似性是非常大的。內部視窗相當於一個類,類的名稱就是父視窗中內部視窗控制元件的名稱,而在內部視窗中自建的Procedure,相當於類的一個方法,所以用類名.方法名的方式,可以直接呼叫這個方法。