dbedit格式問題 |
尚未結案
|
zhong
一般會員 發表:46 回覆:17 積分:12 註冊:2004-08-02 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
zhong 你好
試試以下的方式 先建立一procedure DateGetText (符合TField.OnGetTest的格式) 及dateSetText()如下 procedure TForm1.DateGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin text := FormatDatetime('yy.mm.dd',TField(Sender).AsDatetime); end; procedure TForm1.DateSetText(Sender: TField; const Text: String); Var y,m,d : Word ; begin y := StrToint(Copy(Text,1,2)); m := StrToint(Copy(Text,4,2)); d := StrToint(Copy(Text,7,2)); If y < 35 Then Inc(y,2000) Else Inc(y,1900) ; TField(Sender).AsDateTime := EncodeDate(y,m,d); end; 然後在相關DataSet.AfterOpen事件中掛上欄位的OnGetText及OnSetText事件 procedure TForm1.Table1AfterOpen(DataSet: TDataSet); begin // 'Event_Date'是日期欄位的欄位名稱 Table1.FindField('Event_Date').OnGetText := DateGetText; //若是還要配合寫入資庫時,必須處理另一事件OnSetText事件 Table1.FindField('Event_Date').OnSetText := DateSetText; end;_______________________________________ 深藍的魚,祝您好運..........連連 發表人 - chance36 於 2004/08/05 21:56:09 |
zhong
一般會員 發表:46 回覆:17 積分:12 註冊:2004-08-02 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi zhong, 直接設定該 TDateField 的 DisplayFormat 為 yy.MM.dd
procedure TForm1.Button3Click(Sender: TObject); begin TDateField(ClientDataSet1dt).DisplayFormat := 'yy.MM.dd' end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
zhong 你好
重新貼上完整的 unit xxxxxx type TForm1 = Class(TForm) ...... Private ..... procedure DateGetText(Sender: TField; var Text: procedure DateSetText(Sender: TField; Public .... End; var Form1: TForm1; implementation procedure TForm1.DateGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin text := FormatDatetime('yy.mm.dd',TField(Sender).AsDatetime); end; procedure TForm1.DateSetText(Sender: TField; const Text: String); Var y,m,d : Word ; begin y := StrToint(Copy(Text,1,2)); m := StrToint(Copy(Text,4,2)); d := StrToint(Copy(Text,7,2)); If y < 35 Then Inc(y,2000) Else Inc(y,1900) ; TField(Sender).AsDateTime := EncodeDate(y,m,d); end; 然後在相關DataSet.AfterOpen事件中掛上欄位的OnGetText及OnSetText事件 procedure TForm1.Table1AfterOpen(DataSet: TDataSet); begin // 'Event_Date'是日期欄位的欄位名稱 Table1.FindField('Event_Date').OnGetText := DateGetText; //若是還要配合寫入資庫時,必須處理另一事件OnSetText事件 Table1.FindField('Event_Date').OnSetText := DateSetText; end;_______________________________________ 深藍的魚,祝您好運..........連連 |
zhong
一般會員 發表:46 回覆:17 積分:12 註冊:2004-08-02 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
zhong 你好 不好意思!下面還有一行
procedure DateGetText(Sender: TField; var Text: String; DisplayText: Boolean);
procedure DateSetText(Sender: TField; const Text: String);
這樣才對 _______________________________________
深藍的魚,祝您好運..........連連 發表人 - chance36 於 2004/08/06 21:55:46
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |