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

combo使用陣列的問題

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
黃澤民



註冊時間: 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
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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