請教 displayformat |
答題得分者是:sryang
|
skycap
一般會員 發表:10 回覆:14 積分:4 註冊:2002-11-07 發送簡訊給我 |
|
ying0515
中階會員 發表:90 回覆:168 積分:81 註冊:2003-01-04 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 請教各位: 我用的DBGrid元件是TwwDBGrid元件,在DataModule中用ADOQUERY, 在用到數值的Field時,用DisplayFormat來秀出(如1,000,000.00的數值) <#,###,###.00> 但奇怪的是,每個table的Field都可秀出,卻只有一個table(收支)的Field 設了Displayformat無效? 請問是否可以解決?如果你是在DataModule中指定format格式的話, 請把這些指定格式的動作 移到 form 上的 onactive (或oncreate, 或 onIdle)上來做就可以解決了! 原因:不明, 我也曾發生這樣的狀況(不過我是用editmask), 百般查無結果 後來移到form上來寫就出來了! |
skycap
一般會員 發表:10 回覆:14 積分:4 註冊:2002-11-07 發送簡訊給我 |
|
skycap
一般會員 發表:10 回覆:14 積分:4 註冊:2002-11-07 發送簡訊給我 |
引言:引言: 請教各位: 我用的DBGrid元件是TwwDBGrid元件,在DataModule中用ADOQUERY, 在用到數值的Field時,用DisplayFormat來秀出(如1,000,000.00的數值) <#,###,###.00> 但奇怪的是,每個table的Field都可秀出,卻只有一個table(收支)的Field 設了Displayformat無效? 請問是否可以解決?謝謝,我試試看! 如果你是在DataModule中指定format格式的話, 請把這些指定格式的動作 移到 form 上的 onactive (或oncreate, 或 onIdle)上來做就可以解決了! 原因:不明, 我也曾發生這樣的狀況(不過我是用editmask), 百般查無結果 後來移到form上來寫就出來了! |
skycap
一般會員 發表:10 回覆:14 積分:4 註冊:2002-11-07 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
skycap
一般會員 發表:10 回覆:14 積分:4 註冊:2002-11-07 發送簡訊給我 |
|
skycap
一般會員 發表:10 回覆:14 積分:4 註冊:2002-11-07 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
你這樣試試看 1.把所有欄位拉到 field editor, displayformat不要設定
2.在 unit 中的 private 寫
procedure StartRun(Sender: Tobject; var Done: boolean);
3.在implementation實作下寫
procedure TForm1.StartRun(Sender: Tobject; var Done: boolean); var xhandle: longInt; begin xhandle:= FindWindow('TForm1',nil); if xhandle = 0 then exit; Application.ProcessMessages; Application.OnIdle:= nil; Done:= True; Table1P1.DisplayFormat:= '###,###,###.00'; ..... // P1 為實際你要FORMAT的欄位名稱, 把所有要FORMAT的欄位 依此方式全部在此註解 end;4.在 Form1.onCreate 的最後面下這一行code Application.onIdle:= StartRun; 這些動作是指當form完全被create之後回到Idle(就是閒閒美帶子的時候), 會 被觸發 StartRun的procedure, 這時才去指定 format, 雖然我的狀況不是用 displayformat而是 editmask, 但與你是一樣的狀況, 所有的field的editmask 都有用, 就唯獨有一個field的mask不出來, 之前我也是直接在fieldeditor中 直接指定或者在datamodule中指定的, 然後不經意的情況下在此設定, 竟然都 可以出來了, 所以試試看了! 祝順利! |
skycap
一般會員 發表:10 回覆:14 積分:4 註冊:2002-11-07 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
引言: 多謝您的指導!但可能是因為在Field的OnGetText即指定了asstring 所以才無法作displayformat? 我再試試看有無其他事件可用!那麼,就把你的 OnGetText 改成: if Sender.Asinteger = 0 then Text := '' else Text := FormatFloat(TNumericField(Sender).DisplayFormat, Sender.AsFloat);試試看吧 加油喔,喵~ 發表人 - sryang 於 2003/09/05 17:23:18
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
skycap
一般會員 發表:10 回覆:14 積分:4 註冊:2002-11-07 發送簡訊給我 |
引言: 那麼,就把你的 OnGetText 改成:成功了!多謝您了! 也謝謝P.D.板主的指導,讓我找出問題的原因.. 遺憾答題得分只能選定一人,但還是要表達我的感謝!if Sender.Asinteger = 0 then Text := '' else Text := FormatFloat(TNumericField(Sender).DisplayFormat, Sender.AsFloat);試試看吧 加油喔,喵~ 發表人 - sryang 於 2003/09/05 17:23:18 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |