|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
andy8m23
註冊時間: 2004-02-09 文章: 30 來自: 我娘的肚子,出來很久了
第 1 樓
|
發表於: 星期六 三月 19, 2005 2:42 pm 文章主題: 連接查詢表單的問題 |
|
|
我有一個form
裡面有個cus欄位 ,cus欄位旁邊有個選擇botton 叫command1
在command1.click中
thisform.text2.value=stf('findcus')
stf為prg
para tmform
okkey=''
do tmform
return okkey
而findcus中,為一個grid,text1,和一個確定的botton
每點選grid的格子會將值帶入text1
在botton
okkey=thisform.text1.value
thisform.release()
return okkey
執行時,第一次點選選擇botton 都可以順利帶回值
但第二次點選時就會出現
載入檔案錯誤-記錄編號4.fORM1 或其成員中的一個 載入表單或資料環境
:THISFORM 只能在方法程序中使用
[取消(c)] [忽略(I)] [說明(I)]
不過很奇怪,好像只是重復按選擇BOTTON 資料都可以一直帶回
但按了新增後才會出現這樣
我的新增裡面是
select order
repl order.ordno with thisform.text1.value
repl order.cusno with thisform.text2.value
repl order.ordname with thisform.text3.value
=tableupdate(.t.)
thisform.refresh()
目前是還好,因為按了忽略後,再點一次,又可以作選擇了
不過就是接下來就要點一次忽略一次再點一次才能選擇
在這裡要先感謝garfield,他跟我說在thisform.text1.value=stf('form')中
form要設為模式,值才代的回來 _________________ 登入結束編譯檔<----會了 -->密碼管制鎖登入
新增修刪查列印<----功力尚淺 -->功能表單建群組
表格輸出轉換檔<----有點模糊 -->各式文檔互轉換
遠端資料共分享<----未來目標 -->多端連接資料庫 |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 2 樓
|
發表於: 星期六 三月 19, 2005 3:14 pm 文章主題: |
|
|
代碼: |
okkey=thisform.text1.value
thisform.release()
return okkey
|
return okkey 這行指令有沒有存在都無所謂, 因為form的傳回值不是在這裡定義的.
代碼: |
載入檔案錯誤-記錄編號4.fORM1 或其成員中的一個 載入表單或資料環境
:THISFORM 只能在方法程序中使用
|
有可能是你在呼叫form之前有用set filter to 欄位=thisform.text1.value
你可以改用別的方法試看看.
說明一下form如何傳回值, 方法有很多種, 我只說我常用的:
1.在form.unload 裡最後一行程式碼 return 要傳回的值 , 在呼叫這個form的語法為 do form 這個form with 參數1,參數2..... to 接收的變數名稱
2.在form.init 裡的第一行程式碼裡有 para 來接受傳來的 "物件" , 在呼叫這個form的語法為 do form 這個form with this
例在 form.init裡的程式碼如下
para myobject
thisform.addproperty('objectname')
thisform.objectname=myobject
在這個form的某段程式, 例如是click某個按鈕要將欲傳回的值填入你要的地方, 則這個按鈕.click( )程式碼如下:
thisform.objectname.value = 你要傳回的值
其它的做法就看有沒有人要提出自己獨到的見解..... _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
andy8m23
註冊時間: 2004-02-09 文章: 30 來自: 我娘的肚子,出來很久了
第 3 樓
|
發表於: 星期日 三月 20, 2005 2:43 am 文章主題: |
|
|
果然是前輩,我真的是用過set filter ,所以我要離開查詢表單時,應該set filter to 先回復原狀再傳值回去
用以上這個招,很不錯,可以不用沒個選擇按紐都要打thisform.XXXX.value=傳回值
可不可以問一下,就是以上例子而言,在查詢前的按紐中,要do form with myobject to 傳回值
myobject 是不是用 myobject=thisform.text1.class _________________ 登入結束編譯檔<----會了 -->密碼管制鎖登入
新增修刪查列印<----功力尚淺 -->功能表單建群組
表格輸出轉換檔<----有點模糊 -->各式文檔互轉換
遠端資料共分享<----未來目標 -->多端連接資料庫 |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 4 樓
|
發表於: 星期日 三月 20, 2005 10:50 am 文章主題: |
|
|
這句話我不懂 "myobject 是不是用 myobject=thisform.text1.class",
thisform.text1.class 是什麼? _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
andy8m23
註冊時間: 2004-02-09 文章: 30 來自: 我娘的肚子,出來很久了
第 5 樓
|
發表於: 星期日 三月 20, 2005 11:52 am 文章主題: |
|
|
對不起,我搞錯了,真是不好意思
在 form.init裡的程式碼如下
para myobject<-----我想問的是這個裡面是不是放 (物件) 欲傳回的值填入你要的地方的(物件)
thisform.addproperty('objectname')
thisform.objectname=myobject
在這個form的某段程式, 例如是click某個按鈕要將欲傳回的值填入你要的地方, 則這個按鈕.click( )程式碼如下:
thisform.objectname.value = 你要傳回的值 _________________ 登入結束編譯檔<----會了 -->密碼管制鎖登入
新增修刪查列印<----功力尚淺 -->功能表單建群組
表格輸出轉換檔<----有點模糊 -->各式文檔互轉換
遠端資料共分享<----未來目標 -->多端連接資料庫 |
|
回頂端 |
|
|
黃澤民
註冊時間: 2003-09-08 文章: 65 來自: 新竹
第 6 樓
|
發表於: 星期日 三月 20, 2005 11:53 am 文章主題: |
|
|
請教garfield 兄
依您的說明,如果我在一個表單的uload事件中,想要傳回的是一個物件(不是某個物件的屬性值)
應該如何做呢?如下例:
Form1.unload
Return this.Container1 <------ 一個物件
可是總是會有錯誤訊息而無法達成... |
|
回頂端 |
|
|
andy8m23
註冊時間: 2004-02-09 文章: 30 來自: 我娘的肚子,出來很久了
第 7 樓
|
發表於: 星期日 三月 20, 2005 12:15 pm 文章主題: |
|
|
感謝澤民兄,我想表達的也是這個意思,剛去找Garfield兄的文章,有提到這個
我的做法是在FORM中多一個屬性 .activeobject ,在每個物件的 .GetFocus內皆加入一行指令, Thisform.activeobject = this
搜尋物件名稱就可以找到了,應該有用 _________________ 登入結束編譯檔<----會了 -->密碼管制鎖登入
新增修刪查列印<----功力尚淺 -->功能表單建群組
表格輸出轉換檔<----有點模糊 -->各式文檔互轉換
遠端資料共分享<----未來目標 -->多端連接資料庫 |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 8 樓
|
發表於: 星期日 三月 20, 2005 1:47 pm 文章主題: |
|
|
to 黃澤民,
thisform裡面的東西在form關閉時就已經不存在了, 甚至在unload時, 物件都幾乎不存在了, 怎麼可能可以還將物件傳回去, 你可以試著不要release, 用 .visible=.f. 看看是否可行. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
黃澤民
註冊時間: 2003-09-08 文章: 65 來自: 新竹
第 9 樓
|
發表於: 星期日 三月 20, 2005 4:59 pm 文章主題: |
|
|
To Garfield兄:
我想也是,剛才試了一下,果真是,但是
就像您說的,經過了release,物件都不存在了,那return (thisform.myobj.value) 還有意義嗎? |
|
回頂端 |
|
|
黃澤民
註冊時間: 2003-09-08 文章: 65 來自: 新竹
第 10 樓
|
發表於: 星期日 三月 20, 2005 5:09 pm 文章主題: |
|
|
接上題,因為Do form myform with p1,p1 to v1
其中myform 的視窗是model模式,如果不加release
那麼程式是無法往下繼續的....
所以說... |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 11 樓
|
發表於: 星期日 三月 20, 2005 6:09 pm 文章主題: |
|
|
所以說你要用我講的第2種方法才行 _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
黃澤民
註冊時間: 2003-09-08 文章: 65 來自: 新竹
第 12 樓
|
發表於: 星期日 三月 20, 2005 8:30 pm 文章主題: |
|
|
史兄:
依您的方法,我在表單設計階段及自訂一個屬性MyObj
然後在Form.init事件中定義
Form.init
para p1,p2
this.Myobj = This.container1
然後在Form.unload事件中定義
Form.unload
return this.myobj
結果依然還是不行 |
|
回頂端 |
|
|
andy8m23
註冊時間: 2004-02-09 文章: 30 來自: 我娘的肚子,出來很久了
第 13 樓
|
發表於: 星期日 三月 20, 2005 11:47 pm 文章主題: |
|
|
http://home.kimo.com.tw/andy8m23/klun.rar
這個是我測試的表單傳值,不管在formB 輸入什麼,回來的都是T _________________ 登入結束編譯檔<----會了 -->密碼管制鎖登入
新增修刪查列印<----功力尚淺 -->功能表單建群組
表格輸出轉換檔<----有點模糊 -->各式文檔互轉換
遠端資料共分享<----未來目標 -->多端連接資料庫 |
|
回頂端 |
|
|
bigear
註冊時間: 2004-12-19 文章: 162 來自: 網路的另一端
第 14 樓
|
發表於: 星期一 三月 21, 2005 2:09 am 文章主題: |
|
|
andy8m23 寫到: | http://home.kimo.com.tw/andy8m23/klun.rar
這個是我測試的表單傳值,不管在formB 輸入什麼,回來的都是T |
幫你改好了
黃澤民 寫到: | return this.myobj |
這個觀念是錯誤的
FormB 傳資料給 FormA 不能用 return
小弟個人常用兩種方式傳
1.設一個 public 變數讓 FormA 接收
2.將變數直接丟到 text.value
請參考修改檔案 _________________ 以上淺見,歡迎批評指教
________________________________________________
山不轉路轉,路不轉人轉,人不轉頭轉,頭不轉眼睛轉,眼睛不轉眼珠轉
眼珠再不轉就去睡覺,睡起來繼續轉 |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 15 樓
|
發表於: 星期一 三月 21, 2005 8:19 pm 文章主題: |
|
|
bigear說的方法就是第3種方法, 先去研究他的方法,
我舉一個例子說明我的第2種方式, 這種方式你可以將它想成像我們在用副程式接收參數時有兩種, 1是傳值,2是傳址 , 這個方式就是傳址,
可能你們比較少用, 所以對它都不熟.
例:
在A form中有一個物件 text1 , 在text1.dblClick() 中寫一行程式
do form B with this
則它在dobule click 時會去執行 FORM B , 且傳這個text1的物件(的位置)給它.
在 B form中的.init 中有3行程式
para myobject
thisform.addproperty('objectname')
thisform.objectname=myobject
假設你有個grid在秀資料讓人選擇, 且有個按鈕的物件叫做 .send1 , 則你在 .send1.click( ) 中只要寫兩行程式:
thisform.objectname.value = 你要傳回的值 &&--這個thisform.objectname 本質上只是一個指向 A form 中的那個 .text1的物件
thisform.release
不須在unload中傳回值
************
以上請自己動手試一試就知道它的奧妙之處. 祝你成功.!! _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|