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

請教一個關於 巨集 的用法
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
jerryclt



註冊時間: 2009-03-10
文章: 334
來自: 佛心來的

第 1 樓

發表發表於: 星期三 六月 27, 2012 11:50 am    文章主題: 請教一個關於 巨集 的用法 引言回覆

先說明一下為何會有這樣的而求,
我有一個表單集內含30個表單,
每個表單有N個欄位,
我想在某表單作用中時,
得知其他表單內某些欄位目前的值......

Aarray[1]='formA.text1.value'
Barray[1]='formB.text1.value'

formA.text1.value='ABC'
formB.text1.value=123

目前小弟是這樣用...
?&Aarray[1] --> 得到 'ABC'
?&Barray[1] --> 得到 123

但是如果想要連 陣列名都用一個巨集來取代......
mmacro='Aarray'
?&mmacro[1] --> 'formA.text1.value'
mmacro='Barray'
?&mmacro[1] --> 'formB.text1.value'
就達不到上面的結果了!

小弟知道為什麼會這樣,
只是想請教有無方法可以做到?


jerryclt 在 星期三 六月 27, 2012 2:08 pm 作了第 2 次修改
回頂端
檢視會員個人資料 發送私人訊息
nelsonchuang



註冊時間: 2003-09-04
文章: 563
來自: 臺灣

第 2 樓

發表發表於: 星期三 六月 27, 2012 1:18 pm    文章主題: 引言回覆

你自己都幾乎把答案講出來了.....=.=
_________________
大家好,請多指教
回頂端
檢視會員個人資料 發送私人訊息
jerryclt



註冊時間: 2009-03-10
文章: 334
來自: 佛心來的

第 3 樓

發表發表於: 星期三 六月 27, 2012 1:25 pm    文章主題: 引言回覆

抱歉,
以為已經解決了 = ="

如果把[1]包含進去,如上例:
mmacro='Aarray'
?&mmacro[1]

改成
mmacro='Aarray[1]'
?&mmacro

是沒有問題的,
可是達不到小弟的需求...


jerryclt 在 星期三 六月 27, 2012 2:16 pm 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
jerryclt



註冊時間: 2009-03-10
文章: 334
來自: 佛心來的

第 4 樓

發表發表於: 星期三 六月 27, 2012 1:28 pm    文章主題: 引言回覆

(本篇已刪除)
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1642


第 5 樓

發表發表於: 星期三 六月 27, 2012 5:33 pm    文章主題: 引言回覆

表單集也是一個物件,
直接傳遞讓表單集,
不行嗎?
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
jerryclt



註冊時間: 2009-03-10
文章: 334
來自: 佛心來的

第 6 樓

發表發表於: 星期三 六月 27, 2012 9:31 pm    文章主題: 引言回覆

ckp6250 寫到:
表單集也是一個物件,
直接傳遞讓表單集,
不行嗎?


直接傳遞表單集? 這是指什麼?

小弟的意思是,
如何在某一表單作用中時,
參考到其他表單內的文字輸入框的內含值,
小弟知道 thisformset.formb.text1.value 就是答案,
但是如果是一個複雜的介面,
每次需要用到像...
thisformset.formb.page1.sub.page3.text1.value
thisformset.formb.page1.sub.page3.text2.value
這麼長的敘述是不是很難維護?
先宣告成...
a='thisformset.formb.page1.sub.page3.text1.value'
b='thisformset.formb.page1.sub.page3.text2.value'
再用巨集呈現在程式碼中,
?&a
?&b
看起來簡潔多了!
但是如果是26個欄位 &a &b &c...&z 的情形下,
再改成
array a[26]
for III=1 to 26
a[III]='thisformset.formb.page1.sub.page3.text'+transform(III)+'.value'
endfor
三行搞定,
再用巨集呈現在程式碼中,
?&a[1]
?&a[2]
是不是又更簡潔了?
但是VFP沒有 &&a[1] 這樣的功能 @@"
?&a[1] 得到的卻是 'thisformset.formb.page1.sub.page3.text1.value' 字串,
而不是其內含值...
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1642


第 7 樓

發表發表於: 星期三 六月 27, 2012 10:00 pm    文章主題: 引言回覆

代碼:

with thisformset.formb.page1.sub
    for I=1 to .controlcount
        ? .controls(i).Value
    endfor
endwith 


也沒多幾行呀

另外,?&a[1] 改成 ? Evaluate(a[1])試試
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 8 樓

發表發表於: 星期三 六月 27, 2012 10:17 pm    文章主題: 引言回覆

DIMENSION AA[3]
AA[1]="XY1"
AA[2]="XY2"
AA[3]="XY3"
XY1=4
XY2="23A"
XY3=15
? EVAL(EVAL("AA[1]"))
? EVAL(EVAL("AA[2]"))
? EVAL(EVAL("AA[3]"))

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
jerryclt



註冊時間: 2009-03-10
文章: 334
來自: 佛心來的

第 9 樓

發表發表於: 星期三 六月 27, 2012 10:34 pm    文章主題: 引言回覆

ckp6250 寫到:
代碼:

with thisformset.formb.page1.sub
    for I=1 to .controlcount
        ? .controls(i).Value
    endfor
endwith 


也沒多幾行呀

另外,?&a[1] 改成 ? Evaluate(a[1])試試


我想知道某個FORM的某個或許多個欄位的內含值時,
thisform.text1.value=&a[18]
thisform.text2.value=&c[22]

* a[18]是 'thisformset.formA.page1.sub.page1.text18.value'
* b[22]是 'thisformset.formC.page1.sub.page1.text22.value'

請教一下ckp兄, 您的
thisform.text1.value=???
thisform.text2.value=???
該如何填?
回頂端
檢視會員個人資料 發送私人訊息
yctsai



註冊時間: 2003-04-11
文章: 179


第 10 樓

發表發表於: 星期三 六月 27, 2012 11:08 pm    文章主題: 引言回覆

改觀念,您的作法可改成

public nn (x,y)

thisformset.formb.page1.sub.page3.text1.value = nn (1,1)
thisformset.formb.page1.sub.page3.text2.value = nn (1,2)
...

以後利用nn,來判斷物件的值,不用"thisformset.formb.page1.sub.page3.text2.value"

我很多複雜formset,利用此法,程式簡單
回頂端
檢視會員個人資料 發送私人訊息
jerryclt



註冊時間: 2009-03-10
文章: 334
來自: 佛心來的

第 11 樓

發表發表於: 星期三 六月 27, 2012 11:24 pm    文章主題: 引言回覆

真是神奇的字眼 EVAL()
超感謝 CPK兄和朱兄 兩位大大的提點!

能否再請教一下,
你們是如何得知 EVAL() 這個函數的?
小弟在HELP裡找到的 &命令 / 巨集名稱 / 巨集替換 裡,
都看不到 EVAL() 這個字眼 = ="
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1642


第 12 樓

發表發表於: 星期四 六月 28, 2012 8:14 am    文章主題: 引言回覆

jerryclt 寫到:

能否再請教一下,
你們是如何得知 EVAL() 這個函數的?
小弟在HELP裡找到的 &命令 / 巨集名稱 / 巨集替換 裡,
都看不到 EVAL() 這個字眼 = ="


我的意見是,把朱兄的help中文翻譯檔載下來
http://vfp.sunyear.com.tw/viewtopic.php?t=4021
所有的指令跟函數,不管有沒有用到,都瀏覽一遍,有個粗略概念
講到這裡,還得再對朱兄三鞠躬,實在是佛心來著,惠我等良多。
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 13 樓

發表發表於: 星期四 六月 28, 2012 9:16 am    文章主題: 引言回覆

因為全名叫 EVALUATE()

但是 XBASE 的語言可以只取4個字,
例如 MODIFY STRUCTURE ,可以簡寫為 MODI STRU,
REPLACE XXX WITH OOO ,可以簡寫為 REPL XXX WITH OOOO

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
aizz



註冊時間: 2007-01-29
文章: 171


第 14 樓

發表發表於: 星期四 六月 28, 2012 11:40 am    文章主題: 引言回覆

syntech 寫到:
因為全名叫 EVALUATE()

但是 XBASE 的語言可以只取4個字,
例如 MODIFY STRUCTURE ,可以簡寫為 MODI STRU,
REPLACE XXX WITH OOO ,可以簡寫為 REPL XXX WITH OOOO


Laughing Laughing Laughing Laughing


佛心來著...................
回頂端
檢視會員個人資料 發送私人訊息
jerryclt



註冊時間: 2009-03-10
文章: 334
來自: 佛心來的

第 15 樓

發表發表於: 星期五 六月 29, 2012 7:50 am    文章主題: 引言回覆

ckp6250 寫到:
jerryclt 寫到:

能否再請教一下,
你們是如何得知 EVAL() 這個函數的?
小弟在HELP裡找到的 &命令 / 巨集名稱 / 巨集替換 裡,
都看不到 EVAL() 這個字眼 = ="


我的意見是,把朱兄的help中文翻譯檔載下來
http://vfp.sunyear.com.tw/viewtopic.php?t=4021
所有的指令跟函數,不管有沒有用到,都瀏覽一遍,有個粗略概念
講到這裡,還得再對朱兄三鞠躬,實在是佛心來著,惠我等良多。


小弟在第一時間就下載了,
完全沒有浪費朱兄一分一秒的心血 Razz
EVALUATE()是有看過啦,
但是怎樣也只記得 &命令 和巨集有關.
我的意思是說,
在 &命令 的相關資訊裡,
看不到有關EVALUATE()的函數,
不然就可以查到了 Sad
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

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


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