|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
黃澤民
註冊時間: 2003-09-08 文章: 65 來自: 新竹
第 1 樓
|
發表於: 星期六 九月 23, 2023 2:28 pm 文章主題: combo使用陣列的問題 |
|
|
簡單的一個表單(form1),只有一個物件combobox1(combo1)
form1.init
this.SetAll('fontname','fixedsys',)
DIMENSION _ary[3,2]
_ary[1,1]='a_01'
_ary[1,2]='這是第一筆'
_ary[2,1]='b_02'
_ary[2,2]='這是第二筆'
_ary[3,1]='c_03'
_ary[1,2]='這是第三筆'
this.combo1.RowSourceType= 5
this.combo1.RowSource='_ary'
this.combo1.ColumnCount=2
this.combo1.ColumnWidths='100'
this.combo1.Requery
執行的結果如附件。combo1往下拉時,選項都是空白。
但是如果把程式改成
form1.init
this.SetAll('fontname','fixedsys',)
public _ary[3,2]
_ary[1,1]='a_01'
_ary[1,2]='這是第一筆'
_ary[2,1]='b_02'
_ary[2,2]='這是第二筆'
_ary[3,1]='c_03'
_ary[3,2]='這是第三筆'
this.combo1.RowSourceType= 5
this.combo1.RowSource='_ary'
this.combo1.ColumnCount=2
this.combo1.ColumnWidths='100'
this.combo1.Requery
這樣就可以正確執行了。
請問各位先進,這是為什麼? |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 2 樓
|
發表於: 星期六 九月 23, 2023 4:24 pm 文章主題: |
|
|
在form.init 所定義的陣列, 執行完init , 它就被丟掉, 無法用在這個form其它物件中.
你可以在form.init 將
DIMENSION _ary[3,2]
_ary[1,1]='a_01'
....
this.combo1.RowSource='_ary'
改成
thisform.addproperty('_ary[3,2]')
thisform._ary[1,1]='a_01'
....
this.combo1.RowSource='thisform._ary' _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
黃澤民
註冊時間: 2003-09-08 文章: 65 來自: 新竹
第 3 樓
|
發表於: 星期六 九月 23, 2023 5:15 pm 文章主題: |
|
|
garfield 寫到: | 在form.init 所定義的陣列, 執行完init , 它就被丟掉, 無法用在這個form其它物件中.
你可以在form.init 將
DIMENSION _ary[3,2]
_ary[1,1]='a_01'
....
this.combo1.RowSource='_ary'
改成
thisform.addproperty('_ary[3,2]')
thisform._ary[1,1]='a_01'
....
this.combo1.RowSource='thisform._ary' |
原來是這樣。謝謝指導。所以如果把原來那段程式放在combo1.init,結果也是一樣對嗎?那麼自訂屬性確實是個好做法。
再請問:是不是只有在某物件init事件當中,被宣告的【陣列】才會這樣,【一般的變數宣告】也是如此嗎?...我這樣問是不是很奇怪!
那在其他event當中,如果有需要用到陣列,是不是也會碰到同樣的情形?
我的意思是:在一個事件程式中宣告了變數,結果卻不能拿來使用(比如運算),這不是很奇怪嗎?
如果也是如此,那就要宣告為public,或者是新增一個自訂屬性了? |
|
回頂端 |
|
|
黃澤民
註冊時間: 2003-09-08 文章: 65 來自: 新竹
第 4 樓
|
發表於: 星期六 九月 23, 2023 5:30 pm 文章主題: |
|
|
報告:跟我想的不一樣。可以指定別的物件。 |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 5 樓
|
發表於: 星期六 九月 23, 2023 10:44 pm 文章主題: |
|
|
那是因為你不了解 form 裡面各個object 是怎麼運作的,
所以才會跟你想的不一樣.
你可以試著在form.load裡 寫一行 susp
你再用debug 去一步一步查看執行順序及變數變化的狀況. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
黃澤民
註冊時間: 2003-09-08 文章: 65 來自: 新竹
第 6 樓
|
發表於: 星期六 九月 23, 2023 11:36 pm 文章主題: |
|
|
garfield 寫到: | 那是因為你不了解 form 裡面各個object 是怎麼運作的,
所以才會跟你想的不一樣.
你可以試著在form.load裡 寫一行 susp
你再用debug 去一步一步查看執行順序及變數變化的狀況. |
好的,再次謝謝您。我會去試試的。
有您真好。 |
|
回頂端 |
|
|
CPS0204
註冊時間: 2014-08-24 文章: 441
第 7 樓
|
發表於: 星期一 九月 25, 2023 6:07 pm 文章主題: |
|
|
在form 的init
public my_array[3,2]
在form unload
release my_array |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|