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

dbedit格式問題

尚未結案
zhong
一般會員


發表:46
回覆:17
積分:12
註冊:2004-08-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-05 20:57:14 IP:218.14.xxx.xxx 未訂閱
各位大俠,將dbeidt中的日期顯示為04.08.05該如何設定,我有看討論區中相關文章,但就是找不到相關屬性.
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-05 21:43:11 IP:211.20.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-06 11:09:38 IP:218.14.xxx.xxx 未訂閱
不好意思,我是菜鳥級入門者,我不知道如何 '建立一procedure DateGetText (符合TField.OnGetTest的格式)'
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-06 17:22:16 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-06 17:30:14 IP:211.20.xxx.xxx 未訂閱
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-06 21:49:32 IP:218.14.xxx.xxx 未訂閱
在private中才貼了 Procedure DateGetText(Sender: TField; var Text: procedure DateSetText(Sender: TField; 就有錯誤ldentifier expected but 'procdeure' found 後面還有一大把錯誤
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-06 21:54:23 IP:211.20.xxx.xxx 未訂閱
zhong 你好     不好意思!下面還有一行 procedure DateGetText(Sender: TField; var Text: String; DisplayText: Boolean); procedure DateSetText(Sender: TField; const Text: String); 這樣才對    _______________________________________ 深藍的魚,祝您好運..........連連 發表人 - chance36 於 2004/08/06 21:55:46
系統時間:2024-05-17 17:28:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!