線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2206
推到 Plurk!
推到 Facebook!

FireMonkey Edit OnChange 內 ShowMessage 問題

答題得分者是:P.D.
blue
中階會員


發表:170
回覆:136
積分:81
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2015-01-14 10:17:50 IP:122.146.xxx.xxx 訂閱
Hi,各位先進大家好:
這個問題不記得從那一個版本就有(至少XE6 & XE7都有),
是小弟使用方法錯誤?或是FireMonkey的Bug?
在 TEdit 的 OnChange 內 ShowMessage,
該訊息會顯示二次,
謝謝!
blue
中階會員


發表:170
回覆:136
積分:81
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2015-01-17 22:02:42 IP:219.81.xxx.xxx 訂閱
Hi,各位先大家好:
不知道各位先進是如何顯示資料輸入異常的?
謝謝!


===================引 用 blue 文 章===================
Hi,各位先進大家好:
這個問題不記得從那一個版本就有(至少XE6 & XE7都有),
是小弟使用方法錯誤?或是FireMonkey的Bug?
在 TEdit 的 OnChange 內 ShowMessage,
該訊息會顯示二次,
謝謝!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2015-01-19 21:50:47 IP:118.160.xxx.xxx 未訂閱
在 FM2 下盡量少用 SHOWMESSAGE, 因為 XE6後把SHOWMESSAGE 的方式改了(好像是 NONEBLOCKING, 不知道有沒有拼錯), 也就是以往在WINDOWS上的SHOWMESAGE是會等待使用者按下OK, 但FM2下並不會等待, 而是一直往下跑, 所以會建議改用 LABEL顯示或 MesageDlg 來操作
===================引 用 blue 文 章===================
Hi,各位先大家好:
不知道各位先進是如何顯示資料輸入異常的?
謝謝!


===================引 用 blue 文 章===================
Hi,各位先進大家好:
這個問題不記得從那一個版本就有(至少XE6 & XE7都有),
是小弟使用方法錯誤?或是FireMonkey的Bug?
在 TEdit 的 OnChange‚ ‚ 內 ShowMessage,
該訊息會顯示二次,
謝謝!
blue
中階會員


發表:170
回覆:136
積分:81
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2015-01-20 09:33:45 IP:122.146.xxx.xxx 訂閱
Hi,感謝 P.D. 版主的指導,
但,使用 MessageDlg 問題仍存在,
還是會顯示二次,
謝謝!

===================引 用 P.D. 文 章===================
在 FM2 下盡量少用 SHOWMESSAGE, 因為 XE6後把SHOWMESSAGE 的方式改了(好像是 NONEBLOCKING, 不知道有沒有拼錯), 也就是以往在WINDOWS上的SHOWMESAGE是會等待使用者按下OK, 但FM2下並不會等待, 而是一直往下跑, 所以會建議改用 LABEL顯示或 MesageDlg 來操作
===================引 用 blue 文 章===================
Hi,各位先大家好:
不知道各位先進是如何顯示資料輸入異常的?
謝謝!


===================引 用 blue 文 章===================
Hi,各位先進大家好:
這個問題不記得從那一個版本就有(至少XE6 & XE7都有),
是小弟使用方法錯誤?或是FireMonkey的Bug?
在 TEdit 的 OnChangeƒ‚‚ ƒ‚‚ 內 ShowMessage,
該訊息會顯示二次,
謝謝!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2015-01-20 13:32:05 IP:118.160.xxx.xxx 未訂閱
我沒有時間實測, 但如果是我DEBUG, 我會採取以下的方式

1. 先用 WINDOWS介面(仍然是FM2結構), 測試會不會出現兩次
2. 找出這兩次到底是什麼情況下觸發(利用 DEBUG MODE 追蹤)

事出必有因, 應該可以找出到底是什麼狀況引發?
blue
中階會員


發表:170
回覆:136
積分:81
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2015-01-21 08:55:01 IP:122.146.xxx.xxx 訂閱
Hi, 感謝 P.D. 版主的指導:
其實程式碼簡單到不行,
程式是在Windows 下執行的,
在 TEdit 的 OnChange 或 OnValidate 中直接放上 ShowMessage...,
沒有其他的了,
該訊息就會顯示二次,
謝謝!

===================引 用 P.D. 文 章===================
我沒有時間實測, 但如果是我DEBUG, 我會採取以下的方式

1. 先用 WINDOWS介面(仍然是FM2結構), 測試會不會出現兩次
2. 找出這兩次到底是什麼情況下觸發(利用 DEBUG MODE 追蹤)

事出必有因, 應該可以找出到底是什麼狀況引發?
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2015-01-22 00:12:36 IP:118.169.xxx.xxx 未訂閱
好奇下, 剛才按你的說法做了一遍, 發現 edit 有兩種

On Validate 和 On Valudating 兩種,
如果是在前者showmessage() 確實觸發兩次, 但如果放在後者, 只會有一次
承如我上面所說的, xe6以後改變了showmessage 的結構, 前者在help中說明, 當輸入完畢按下enter或focus 離開會觸發事件, 這時第一次showmesage執行後沒有被暫停,
既使在windows介面也是, 然後又緊接著該事件又跑一次(我用debug追蹤, 事件連續執行兩次後才會跳到 fmx.edit 中的 onchange), 實際是否bug這非我所能斷定的, 所以建議
1. 改用 後者來判斷
2. 不要用showmessage之類的做法, 改用 label 來取代警示, 因為我測試用label 來顯示, 它的確只會跑一次, 或許是 enter 不知道又觸發了什麼, 沒有進一步研究,
所以如果你只是要解決問題, 就這麼做唄! 但如果你要追根究底, 那就建議向 q-com反應一下, 請embd 查一下到底是不是bug
blue
中階會員


發表:170
回覆:136
積分:81
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2015-01-22 09:22:24 IP:122.146.xxx.xxx 訂閱
Hi,感謝 P.D.版主指導:
因OnValidating為傳輸入一個字即會觸發一次,且參數只有字串,
小弟會改在 OnKeyDown 中判斷按了 Enter 才執行,
不使用 Label 的原因是要醒目等使用者確認,使用Label要處理前景背景控制權比較麻煩,
至於 QCOM 已反應,
謝謝!

===================引 用 P.D. 文 章===================
好奇下, 剛才按你的說法做了一遍, 發現 edit 有兩種

On Validate 和 On Valudating 兩種,
如果是在前者showmessage() 確實觸發兩次, 但如果放在後者, 只會有一次
承如我上面所說的, xe6以後改變了showmessage 的結構, 前者在help中說明, 當輸入完畢按下enter或focus 離開會觸發事件, 這時第一次showmesage執行後沒有被暫停,
既使在windows介面也是, 然後又緊接著該事件又跑一次(我用debug追蹤, 事件連續執行兩次後才會跳到 fmx.edit 中的 onchange), 實際是否bug這非我所能斷定的, 所以建議
1. 改用 後者來判斷
2. 不要用showmessage之類的做法, 改用 label 來取代警示, 因為我測試用label 來顯示, 它的確只會跑一次, 或許是 enter 不知道又觸發了什麼, 沒有進一步研究,
所以如果你只是要解決問題, 就這麼做唄! 但如果你要追根究底, 那就建議向 q-com反應一下, 請embd 查一下到底是不是bug
系統時間:2024-05-02 5:53:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!