你可能會遇到的只是兩個窗口的大小相同(或者窗體2較大)並且只是物理上重疊窗體1 ...除非這兩個窗體都被設置爲最大化模式,該模式需要全屏查看區域。
這就是說,默認情況下,當VFP運行一個表單時,它基本上有一個與您的表單名稱相關的變量名稱......即:如果這些是您實際表單的名稱,則爲「Form1」和「Form2」我懷疑,但可能用於測試目的)。
所以,現在您正在運行您的示例,窗體1顯示,單擊按鈕,窗體2顯示。您可以在表單2上有一個按鈕,例如「回到表單1」(而不是重新運行表單1的另一個實例)。在該點擊事件,你可以做以下
if wexist("form1")
activate window form1
endif
同樣,在你的主要形式,如果你想回去,再次形成2,但不希望重新創建已打開的第二個實例形式,你可以有代碼類似
if wexist("form2")
*/ Show the already loaded form
activate window form2
else
*/ Not loaded yet, do so now
do form form2
endif
至於出另一種形式中一種形式,你可以,但他們有時會有點痛的,只是一些習慣......他們被稱爲「表單集」。爲此,你基本上是把所有的表格預先製作成一個整體的「formset」。首先創建一個表單。然後,從「FORM」菜單項中,單擊菜單選項「Create Form Set」。它會爲您創建一個父級「formset」級別,並將表單移入子級位置。然後,從「FORM」菜單中,您可以再次選擇「Add New Form」,並根據需要添加。請注意,執行此操作時,它會構建所有表單,而不僅僅基於您明確執行「執行表單」呼叫以啓動下一個表單。您可以爲每個窗口設置標題,移動它們的物理位置等等......保存並運行窗體......然後您可以根據需要顯示/隱藏......但是可能會非常棘手。
另一種選擇你可以嘗試使用「容器」,並建立自己的類庫。容器不過是一個可以有其他控制的控件。好處是您可以構建一次,並將其用作表單的一部分,或根據需要以多種形式使用它,而無需繼續調用相同的第一種形式。例如,地址信息的容器。您可以爲公司,地址1,地址2,城市等設置標籤/文本框並保存。現在,您希望有一張發票,上面有發貨單和帳單。您可以在同一個表單上使用同一個「佈局」容器類的兩個實例。他們看起來和操作相同,你只需將「控制源」綁定到各自的領域。
通過這樣做,您還可以使用「選項卡式頁面」並構建與一個「頁面」關聯的所有內容的容器。然後將該容器放在頁面上,而不是所有控件都單獨放在一個表單中......預先花費更多時間,但下游管理也可以帶來好處。
謝謝您的建議。我會記住他們的。有時候,這些建議是我從未想過的新事物,我想真正嘗試它們,以便我不會因爲我找到了另一種解決方案而拒絕了一個好建議。 :) –
是的,關於檢查答案,但如果他們也給你一種替代的思維方式,這也有幫助。或者......你可以回答你自己的問題,說明你是如何解決問題的,而且這是一個解決的問題,讓其他人不必費心嘗試重新回答。 – DRapp