 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
rockwithyou
註冊時間: 2006-03-11 文章: 44
第 1 樓
|
發表於: 星期三 十二月 06, 2006 11:00 am 文章主題: Expression evaluated to an illegal value. |
|
|
在我自建的 CLASSLIB (Myclass)裡, 有一個 CONTAINER. 暫名為 ctr_test.
其屬性: BackStyle, BorderWidth, SpecialEffect. 的值均以變數設定, 分別是 x,y,z.
在執行過程中 (無論是 vfp 或 exe). 若變更值, BorderWidth 的部份, 會出現 Expression evaluated to an illegal value.
請問經驗豐富的前輩, 這是出了什麼問題, 我應該如何修正?
同樣的狀況下,若在執行過程中 Trace. 直接到 Locals 裡面出更改這三個值, 則三個都會出現 Expression evaluated to an illegal value.
這三個值的 type 都是 N. 我也沒輸入不合法(illegal)的值, 為什麼會這樣呢?
我發現,若 container 不是在自設的 classlib 中, 而是直接用 vfp standard 的, 就不會這樣了.
* 簡單的來說,是我希望達到在執行時期, user 可以變更顯示方式.
若有經驗的狐友, 請以予協助, 謝謝. |
|
回頂端 |
|
 |
marvin
註冊時間: 2004-06-01 文章: 321
第 2 樓
|
發表於: 星期三 十二月 06, 2006 2:27 pm 文章主題: |
|
|
> BackStyle, BorderWidth, SpecialEffect. 的值均以變數設定, 分別是 x,y,z
我猜是 activate 時變數未設定, 所以出問題
試 trace 整個 container 起動的過程 |
|
回頂端 |
|
 |
rockwithyou
註冊時間: 2006-03-11 文章: 44
第 3 樓
|
發表於: 星期三 十二月 06, 2006 4:54 pm 文章主題: |
|
|
marvin 寫到: | > BackStyle, BorderWidth, SpecialEffect. 的值均以變數設定, 分別是 x,y,z
我猜是 activate 時變數未設定, 所以出問題
試 trace 整個 container 起動的過程 |
程式一開始,我已經將 x,y,z 設為 public. 並且給予初值. 所以倒不是這方面的問題.
有趣的是,我另外做一份簡單版本(只有出問題的部份). 並準備把這個 myclass, myform 上傳一份,給有意願幫忙的前輩看的同時. 卻發現問題出在這個container裡面有包含了一個 Label, Label 只設 Width, Height, Font. 但拿掉這個 Label 卻正常了. 更詭異的是, 我把這個 Label 放再另一個新的 Container, 卻又沒有問題... 難道軟體也有阻抗匹配的問題???
Thanks, anyway!
經常,依據程式規範的邏輯思維去做,好像是不夠的. 還要有 Error try 的執著.
等有結果,再通報一下好了... |
|
回頂端 |
|
 |
rockwithyou
註冊時間: 2006-03-11 文章: 44
第 4 樓
|
發表於: 星期三 十二月 06, 2006 5:19 pm 文章主題: |
|
|
我想我的問題. 可以簡化成:
如何在程式執行過程中, "間接"更改 MyClass(自製的class)中Container (或其他 class) 的值. 並使其生效. 保留變數值,退出程式後,再次進入時,是改變後的結果, 而不是只影響在執行當下.
所謂"間接"就是 Borderwidth, BackStyle, SpecialEffect...等, 是用變數, 而非實際的值. 更改變數的值後, Borderwidht...等, 也會受影響.
你可以測試一下. 當用了變數, 而變數也設為 public 後. 執行中值有變, 畫面也依據希望的操作改變. 但退出後(還在 vfp內), 再次執行該程式, 明明變數已經變了(因為已經是public 退出會保留值), 但畫面的效果卻沒變,又是初值的狀態.
我想這是我問題的核心....
希望能有前輩指教~ |
|
回頂端 |
|
 |
saint
註冊時間: 2003-07-14 文章: 211
第 5 樓
|
發表於: 星期三 十二月 06, 2006 7:54 pm 文章主題: |
|
|
有些property是不可以在執行期間改變值的...而且你又是用public 來存變數值;也許會有問題,建議是否改用,property 來存會改善這一個問題?
你在那宣告 public 呢?如果是在 init 時宣告!如此會把已宣告的值.又重新 declare |
|
回頂端 |
|
 |
rockwithyou
註冊時間: 2006-03-11 文章: 44
第 6 樓
|
發表於: 星期三 十二月 06, 2006 11:14 pm 文章主題: |
|
|
public 是在進入(啟用)時設的,並給予了初值. 不會放在 Form 的 init, 是因為 object 的 property 比 form 的 init 更優先.
經過如同每一個熱衷於興趣的程式員的過程(和問題窮耗)後, 正確的解答如下:
在 object 的 init 加入如: borderwidth = 變數, Backstyle = 變數. 就 o.k了!
單單改變變數是沒用的, 只能算做了一半. 至於在執行時期,只改變 object 的 property 是沒用的, 除非給了property是值, 而非變數.
熱心和解答, 有時一樣重要.
Marvin & Saint 二位 ,謝了! |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|