上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
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 文章: 1644
第 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 文章: 1644
第 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 |
|
回頂端 |
|
|
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 文章: 1644
第 12 樓
|
發表於: 星期四 六月 28, 2012 8:14 am 文章主題: |
|
|
jerryclt 寫到: |
能否再請教一下,
你們是如何得知 EVAL() 這個函數的?
小弟在HELP裡找到的 &命令 / 巨集名稱 / 巨集替換 裡,
都看不到 EVAL() 這個字眼 = =" |
我的意見是,把朱兄的help中文翻譯檔載下來
http://vfp.sunyear.com.tw/viewtopic.php?t=4021
所有的指令跟函數,不管有沒有用到,都瀏覽一遍,有個粗略概念
講到這裡,還得再對朱兄三鞠躬,實在是佛心來著,惠我等良多。 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: 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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
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 |
佛心來著...................
|
|
回頂端 |
|
|
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
所有的指令跟函數,不管有沒有用到,都瀏覽一遍,有個粗略概念
講到這裡,還得再對朱兄三鞠躬,實在是佛心來著,惠我等良多。 |
小弟在第一時間就下載了,
完全沒有浪費朱兄一分一秒的心血
EVALUATE()是有看過啦,
但是怎樣也只記得 &命令 和巨集有關.
我的意思是說,
在 &命令 的相關資訊裡,
看不到有關EVALUATE()的函數,
不然就可以查到了 |
|
回頂端 |
|
|
|