| 上一篇主題 :: 下一篇主題   | 
	
	
	
		| 發表人 | 
		內容 | 
	
	
		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 文章: 564 來自: 臺灣
  第 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 文章: 1645
 
  第 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 文章: 1645
 
  第 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 文章: 180
 
  第 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 文章: 1645
 
  第 12 樓
  | 
		
			
				 發表於: 星期四 六月 28, 2012 8:14 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | jerryclt 寫到: | 	 		  
 
能否再請教一下,
 
你們是如何得知 EVAL() 這個函數的?
 
小弟在HELP裡找到的 &命令 / 巨集名稱 / 巨集替換 裡,
 
都看不到 EVAL() 這個字眼 = =" | 	  
 
 
我的意見是,把朱兄的help中文翻譯檔載下來
 
http://vfp.sunyear.com.tw/viewtopic.php?t=4021
 
所有的指令跟函數,不管有沒有用到,都瀏覽一遍,有個粗略概念
 
講到這裡,還得再對朱兄三鞠躬,實在是佛心來著,惠我等良多。 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: 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 文章: 172
 
  第 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()的函數,
 
不然就可以查到了    | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		 |