VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

連接查詢表單的問題
前往頁面 上一頁  1, 2, 3  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
黃澤民



註冊時間: 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的物件

你可以在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

謝謝大家

_________________
一籬一櫓一漁舟,一個艄公一釣勾
一拍一呼還一笑,一人獨佔一江秋
~清.紀昀~
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
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??

就這樣而已

謝謝

_________________
一籬一櫓一漁舟,一個艄公一釣勾
一拍一呼還一笑,一人獨佔一江秋
~清.紀昀~
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
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

_________________
一籬一櫓一漁舟,一個艄公一釣勾
一拍一呼還一笑,一人獨佔一江秋
~清.紀昀~
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 30 樓

發表發表於: 星期四 八月 31, 2006 10:38 am    文章主題: 引言回覆

所以要用 do form formB name formB
_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 上一頁  1, 2, 3  下一頁
2頁(共3頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作