|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
黃澤民
註冊時間: 2003-09-08 文章: 65 來自: 新竹
第 16 樓
|
發表於: 星期一 三月 21, 2005 10:21 pm 文章主題: |
|
|
史兄:請相信我,我知道您的意思,當然我也知道傳值呼叫與傳址呼叫的方法與分別
我的意思是說難道不能在Form.Unload中傳回一個物件嗎,舉例如下
有二個表單
Form_A 與 Form_B
Form_A是主表單,當按了From_裡的Command.Click程式碼下
Command1.Click
Do Form Form_B with P1,P2,P3 To Rtn_Val <---- 傳入三個參數,並要求Form_B傳回一個變數,P1,P2,P3可以是物件
然後在Form_B的 Init事件中,寫以下的程式碼
Form_B.Init
Para P1,P2,P3 <---接收參數
With This
.addproperty('My_obj') <---新增一個表單自訂屬性
.My_obj = .Container1 <---引用物件
Endwith
到這邊因該沒問題吧,然後要如何把這個Container1整個物件傳遞回去給 Form_A呢
如果在Form_B的Unload事件中這樣寫
Form_B.Unload
Return this.My.obj <---會有問題,因為物件已經被Release (視窗為Model模式),不Release無法離開
我要怎樣才能在Form_A中得到Form_B的Container1呢.....困惑中....希望史兄能知道我在說什麼
|
|
回頂端 |
|
|
bigear
註冊時間: 2004-12-19 文章: 162 來自: 網路的另一端
第 17 樓
|
發表於: 星期二 三月 22, 2005 2:21 am 文章主題: |
|
|
黃澤民 寫到: |
如果在Form_B的Unload事件中這樣寫
Form_B.Unload
Return this.My.obj <---會有問題,因為物件已經被Release (視窗為Model模式),不Release無法離開
我要怎樣才能在Form_A中得到Form_B的Container1呢.....困惑中....希望史兄能知道我在說什麼 |
建議你把程式放在 Form_B.Release 裡面
因為 Release 在 Unload 之前
物件被 Release 是在 Release 和 Unload 之間
*****************************************
小弟也很困惑
印象中 FORM 與 FORM 之間不能用 RETURN 回傳參數
若是可以,就表示小弟還不夠格在此篇文章回覆
所以也請狐友指點迷津吧 _________________ 以上淺見,歡迎批評指教
________________________________________________
山不轉路轉,路不轉人轉,人不轉頭轉,頭不轉眼睛轉,眼睛不轉眼珠轉
眼珠再不轉就去睡覺,睡起來繼續轉 |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 18 樓
|
發表於: 星期二 三月 22, 2005 9:16 am 文章主題: |
|
|
to: 黃澤民,
你即然都知道在unload前,物件已經被Release , 那又怎麼能夠將form_b的某個物件傳回去呢?
如果真得要一次傳回一個 Container 裡全部的內容 , 是不是有考慮到在 form_a 建立一個 container , 而且用傳址的方式給form_b 去處理呢? ,或是你用第3種方式去改變form_b中的container中的物件之.controlsource 呢?
to: bigear,
你太客氣了, 回覆文章沒有所謂夠不夠格的問題, 只有願不願意付出的問題, 一個討論的主題是討論越多,答案越清楚, 不管是提問者或回答者, 只要身在其中就會獲得更多.
就我以前做作的實驗, 在unload時, 整個form只剩下"屬性"還在, 所以要return 一個值, 就只剩下public變數(含呼叫這個form前定義的變數), 跟這個form的屬性, 你也可以去實驗看看..... _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
黃澤民
註冊時間: 2003-09-08 文章: 65 來自: 新竹
第 19 樓
|
發表於: 星期二 三月 22, 2005 1:28 pm 文章主題: |
|
|
史兄
引言回覆: |
to: bigear,
你太客氣了, 回覆文章沒有所謂夠不夠格的問題, 只有願不願意付出的問題, 一個討論的主題是討論越多,答案越清楚, 不管是提問者或回答者, 只要身在其中就會獲得更多.
就我以前做作的實驗, 在unload時, 整個form只剩下"屬性"還在, 所以要return 一個值, 就只剩下public變數(含呼叫這個form前定義的變數), 跟這個form的屬性, 你也可以去實驗看看<---------恕我遲頓.......(只剩下屬性還在,那包含自訂屬性嗎)?
|
|
|
回頂端 |
|
|
goto-dream
註冊時間: 2004-05-11 文章: 909
第 20 樓
|
發表於: 星期二 三月 22, 2005 8:40 pm 文章主題: |
|
|
代碼: |
Do Form Form_B with P1,P2,P3 To Rtn_Val <---- 傳入三個參數,並要求Form_B傳回一個變數,P1,P2,P3可以是物件
Form_B.Unload
Return this.My.obj <---會有問題,因為物件已經被Release (視窗為Model模式),不Release無法離開 |
你可以這樣做.傳入form物件
Do Form Form_B with THISFORM
*
Form_B.Init
Para P1
*
然後在
Form_B.Unload
P1.TEXT1="結果"
因為有時候回傳.並不一定只有一各變數直 _________________ 福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!
想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.
愛作夢 |
|
回頂端 |
|
|
黃澤民
註冊時間: 2003-09-08 文章: 65 來自: 新竹
第 21 樓
|
發表於: 星期二 三月 22, 2005 9:07 pm 文章主題: |
|
|
引言回覆: |
你可以這樣做.傳入form物件
Do Form Form_B with THISFORM
*
Form_B.Init
Para P1
*
然後在
Form_B.Unload
P1.TEXT1="結果"
|
所以最後的結果就是
要嗎定義一個Public變數來裝要傳回的物件
要嗎就用傳址的方式,再在Form_B中引用Form_A的物件
那這樣就無關Form.Unload的事情了 <----不知道這樣說對不對 |
|
回頂端 |
|
|
andy8m23
註冊時間: 2004-02-09 文章: 30 來自: 我娘的肚子,出來很久了
第 22 樓
|
發表於: 星期三 三月 23, 2005 12:38 am 文章主題: |
|
|
原來如此,那麼Garield兄
如果在A form中 旁邊有個按紐 我如果要作按紐控制的話
我會在按紐的click中 寫 thisform.dblick()就好了,的確很方法
不知是否可以在按紐中直接指定text1的物件傳給B form _________________ 登入結束編譯檔<----會了 -->密碼管制鎖登入
新增修刪查列印<----功力尚淺 -->功能表單建群組
表格輸出轉換檔<----有點模糊 -->各式文檔互轉換
遠端資料共分享<----未來目標 -->多端連接資料庫 |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 23 樓
|
發表於: 星期三 三月 23, 2005 1:37 am 文章主題: |
|
|
to: 黃澤民,
你可以在form_b中的任何地方去改變form_a的物件 , 不須局限在unload
to:andy8m23,
我不懂你這句話的意思: "我會在按紐的click中 寫 thisform.dblick()就好了"
代碼: |
不知是否可以在按紐中直接指定text1的物件傳給B form
|
這個問題在第1頁的最後一篇回覆文章中已經有寫出範例了. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
芝風
註冊時間: 2006-08-09 文章: 45 來自: 台灣,巴西
第 24 樓
|
發表於: 星期三 八月 30, 2006 5:10 am 文章主題: |
|
|
我大概有點了解了,用para這物件來接收資料
可是有一點還是很困惑,我現在在formA查詢到的資料要寫入到formB
所以formB.init()要寫入
para myobject
thisform.text1.addproperty('objectname') 這樣就可以指向text1??
thisform.objectname=myobject
我試過了,因為formB會先執行,所以執行時,他說para沒接收到變數
那formA要寫入
thisform.objectname.value = 你要傳回的值 &&--這個thisform.objectname 本質上只是一個指向 A form 中的那個 .text1的物件
不好意思,又翻舊文出來問
因為這篇討論串好像是討論單純的A->B,可是我的是B是開著,當要新增時才會叫A, 然後傳回值到B
bigear大的例子我也下載過,好像很簡單,就在formA中就可直接寫入值到formB
formB.text1.value=我要的數值,可是執行有錯誤,無法執行
錯誤訊息是 formB could not be found
謝謝大家 _________________ 一籬一櫓一漁舟,一個艄公一釣勾
一拍一呼還一笑,一人獨佔一江秋
~清.紀昀~ |
|
回頂端 |
|
|
impotence
註冊時間: 2005-02-21 文章: 135 來自: Hong Kong
第 25 樓
|
發表於: 星期三 八月 30, 2006 9:19 am 文章主題: |
|
|
我的做法比較笨一點 , 我先 public 了一個變數 (eg: aaa), 再在那個 form 結束前把要傳回的值給 aaa , 再在 form 的 unload 中 return aaa .... _________________ 一個常常忘記 Command 的人 ! |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 26 樓
|
發表於: 星期三 八月 30, 2006 10:45 am 文章主題: |
|
|
先說明如何解決 formB could not be found
用 do form formB name formB
重點是 name 後面的參數可以將執行中的form重新命名你所要的名字,
因為form的檔名跟 form.name 是不一樣的.
to: 芝風
你用的方法跟前幾位所提的不一樣,
一般初學者儘量不要改變學習到的範例,
除非你已經融會貫通了,
本來範例說的是 formA 去呼叫 formB的查詢畫面,
當然用 formB.init 來接收參數,
但你把 formA 跟 formB的用途搞混了,
你的formA是查詢畫面, formB才是資料畫面,
所以是 formA.init 要用 para 來接收formB傳來的參數 才對. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
芝風
註冊時間: 2006-08-09 文章: 45 來自: 台灣,巴西
第 27 樓
|
發表於: 星期四 八月 31, 2006 4:27 am 文章主題: |
|
|
garfield 寫到: | 先說明如何解決 formB could not be found
用 do form formB name formB
重點是 name 後面的參數可以將執行中的form重新命名你所要的名字,
因為form的檔名跟 form.name 是不一樣的.
|
的確如此,那我的狀況的話,是先執行formB,然後在formA的時候,執行
do form formB with value1, value2 to text1.value, text2.value name formB??
還是像下面傑克兄
impotence 寫到: | 我的做法比較笨一點 , 我先 public 了一個變數 (eg: aaa), 再在那個 form 結束前把要傳回的值給 aaa , 再在 form 的 unload 中 return aaa .... |
在formB.init()設立一public變數aaa,然後在新增按鈕那設定
append blank
do form formA
text1.value=aaa
然後在formA.unload寫下
return aaa??
因為我的問題很簡單,就是如何把資料從formA丟給開啟中的formB??
就這樣而已
謝謝 _________________ 一籬一櫓一漁舟,一個艄公一釣勾
一拍一呼還一笑,一人獨佔一江秋
~清.紀昀~ |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 28 樓
|
發表於: 星期四 八月 31, 2006 9:09 am 文章主題: |
|
|
用另一種方法,
不需要傳參數, 也不需return 值
直接在 formA裡的程式用 formB.物件.value = 要給它的值 _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
芝風
註冊時間: 2006-08-09 文章: 45 來自: 台灣,巴西
第 29 樓
|
發表於: 星期四 八月 31, 2006 10:17 am 文章主題: |
|
|
就這樣對吧,但是很奇怪,我試過就是摃龜
錯誤訊息 object formB is not found _________________ 一籬一櫓一漁舟,一個艄公一釣勾
一拍一呼還一笑,一人獨佔一江秋
~清.紀昀~ |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 30 樓
|
發表於: 星期四 八月 31, 2006 10:38 am 文章主題: |
|
|
所以要用 do form formB name formB _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|