国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C++ Builder 從窗體獲取數據

2019-11-17 05:13:37
字體:
來源:轉載
供稿:網友
    大多數實際的應用程序由多個窗體組成。信息經常需要在窗體之間傳遞。將信息傳遞給窗體,可借助傳遞給窗體的參數,或通過設置窗體的屬性。獲得消息的方式依靠于窗體模態的還是非模態的。

1.從非模態窗體獲取數據
    通過調用公共成員函數或查詢窗體的屬性,可以很輕易地從非模態的窗體中抽取信息。例如,假定應用程序包含一個非模態的窗體調用ColorForm,其中包含一個列表框ColorListBox。列表框中包括了一個顏色列表(“紅色”、“綠色”、“藍色”等)。每次用戶選擇一種新的顏色,當前被選擇的顏色名字符串自動地存儲在ColorListBox的CurrentColor屬性里。該窗體類聲明如下:
C++ Builder 從窗體獲取數據(圖一)

    該列表框的OnClick事件處理程序—ColorListBoxClick,在每次選擇一個新的列表框的項時設置CurrentColor屬性的值。該事件處理程序從包含這種顏色的列表框中得到字符串任命,并將它設為CurrentColor的值。CurrentColor屬性使用設置函數setColor來將實際屬性值存儲在私有數據成員curColor中:
C++ Builder 從窗體獲取數據(圖二)

    現在假定應用程序有另一個窗體ResultsForm,在其中的一個按鈕(UpdateButton)被單擊時,需要找到當前在ColorForm中被選擇的顏色。那么,UpdateButton的OnClick事件處理程序可能會如下所示:
C++ Builder 從窗體獲取數據(圖三)

    該事件處理程序首先通過檢驗指針是否為零來證實ColorForm的存在。然后獲取ColorForm的CurrentColor屬性值。CurrentColor查詢調用其獲取函數getColor,如下所示:
C++ Builder 從窗體獲取數據(圖四)

    作為選擇,若ColorForm的getColor函數是公共的,另一窗體可以不使用CurrentColor屬性而得到當前顏色(例如,StringsS=ColorForm->getColor();)。實際上,也沒什么方法可防止另一窗體通過直接檢驗列表框的選擇而得到ColorForm的當前被選定顏色:
C++ Builder 從窗體獲取數據(圖五)

    然而,使用屬性使ColorForm的接口變得非常簡單。所有需做的事僅是檢查ColorForm的CurrentColor屬性值。

2.從模態的窗體獲取數據
    如同非模態的窗體一樣,模態的窗體經常包含其他的窗體需要的信息。最常見的例子是窗體A啟動模態的窗體B。當窗體B關閉時,窗體A需要知道用戶如何處理窗體B以便決定如何繼續處理窗體A。假如窗體B仍然在內存中,可通過屬性或成員函數查詢它,與上例中非模態窗體的方式相同。但若窗體B關閉時從內存中刪除時如何處理呢?因為窗體沒有顯式返回值,必須在它被刪除前保留重要的信息。
    為舉例說明,將ColorForm窗體改為模態窗體。類聲明如下:
C++ Builder 從窗體獲取數據(圖六)

    例中窗體有一包含顏色列表的列表框ColorListBox。當按下SelectButton按鈕時,將列出ColorListBox當前被選擇的顏色名。CancelButton是用于關閉窗體的按鈕。
    注重類中加入了一個自定義的構造函數,它使用了一個String*參數。假定啟動ColorForm的窗體知道String*所指的串。那么構造函數的實現將如下所示:
C++ Builder 從窗體獲取數據(圖七)

    構造函數將指針保存到私有數據成員curColor中并將字符串初始化為空字符串。
    注重要使用上例的自定義構造函數,窗體必須是顯式創建的。不能是在應用程序開始時自動創建的。細節請參見4.3.1節。
    在應用程序中,若用戶從列表框中選擇一種顏色并用SelectButton按鈕來保存選擇并關閉窗體。則SelectButton的OnClick事件處理程序為:
C++ Builder 從窗體獲取數據(圖八)

    注重到事件處理程序會將所選擇顏色名存儲到傳遞給構造函數的串的地址中。若要有效地使用ColorForm,調用窗體必須傳遞給構造函數一個存在的串。例如,假定窗體ResultsForm中的按鈕UpdateButton被按下時,ColorForm將被ResultsForm。則事件處理程序為:
C++ Builder 從窗體獲取數據(圖九)

    UpdateButtonClick創建一個字符串S。S的地址將傳遞給GetColor函數,GetColor會創建ColorForm,并將指向S的指針作為參數傳遞給構造函數。ColorForm一關閉它就被刪除,但若用戶選擇了一種顏色,被選擇顏色名仍然被保存在S中。若用戶沒有選擇顏色就關閉了ColorForm,S中將包含一空串。
    上例使用一個串變量從模態窗體獲取信息。當然,根據需要可使用更復雜的對象。記住,應該總是提供一種方法讓調用窗體知道是否模態窗體沒有做任何變化或選擇就關閉了(比如提供缺省為空的字符串S)。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永仁县| 咸宁市| 金山区| 平度市| 新巴尔虎左旗| 荥经县| 拜城县| 漯河市| 佳木斯市| 富蕴县| 福安市| 黔江区| 昌吉市| 无为县| 章丘市| 芜湖市| 兴和县| 巴马| 丘北县| 芦山县| 通河县| 乐陵市| 宣城市| 洪雅县| 睢宁县| 绍兴县| 施秉县| 延安市| 昔阳县| 余江县| 莫力| 塘沽区| 怀远县| 佳木斯市| 苏尼特左旗| 威海市| 崇文区| 晴隆县| 元谋县| 内江市| 堆龙德庆县|