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

無法完程????

答題得分者是:channel
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-20 11:36:29 IP:61.228.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject); var s:string; begin s:=StrZero(TrimLeft(dbedit1.text),7); // StrZero:自定函數 例: StrZero('920220',7):='0920220' // 當user輸入日期時無輸入092時自動補'0' if GetDateTrue(s)=True then // GetDateTrue:日期檢查函數 begin // S值為0920220 如何寫入字串欄位 // 該欄位EditMark !999/99/00;0;_ // 語法不會寫入可否指導 Table1obtainDate.AsString:= ???????? end else showmessage('error'); end;
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-20 12:18:16 IP:211.72.xxx.xxx 未訂閱
引言: if GetDateTrue(s)=True then // GetDateTrue:日期檢查函數 begin // S值為0920220 如何寫入字串欄位 // 該欄位EditMark !999/99/00;0;_ // 語法不會寫入可否指導 Table1obtainDate.AsString:= ???????? end
直接寫Table1obtainDate.AsString:= s; 會有什麼問題嗎? ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-20 14:35:10 IP:61.228.xxx.xxx 未訂閱
引言:
引言: procedure TMDaFrm2.Button1Click(Sender: TObject); var S:String; begin S:=StrZero(TrimLeft(Edit1.Text),7); if GetDateTrue(s)=True then // GetDateTrue:日期檢查函數 begin Table1.edit; Table1obtainDate.AsString:=S; end 此法使用edit.text 可存檔無誤 // Ok // else showmessage('error'); // S值為0920220 如何寫入字串欄位 end;
procedure TMDaFrm2.MdaTable1ObtainDateChange(Sender: TField); var S:String; begin S:=StrZero(TrimLeft(MdaDbedit5.text),7); // 該欄位EditMark !999/99/00;0;_ if GetDateTrue(S)=True then begin MdaTable1.Edit; // 若行 { } 不執行擇無誤,不知為何Thank MdaTable1ObtainDate.AsString:=S; end else beep; ShowMessage('日期輸入錯誤'); end; end; Error message:Faulted with message:'access violation at 0x77f8ffe7:write of address 0*0030f50 Process Stopped Use Step or Run to continue
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-20 15:26:11 IP:211.72.xxx.xxx 未訂閱
引言: procedure TMDaFrm2.MdaTable1ObtainDateChange(Sender: TField); var S:String; begin S:=StrZero(TrimLeft(MdaDbedit5.text),7); // 該欄位EditMark !999/99/00;0;_ if GetDateTrue(S)=True then begin MdaTable1.Edit; // 若行 { } 不執行擇無誤,不知為何Thank MdaTable1ObtainDate.AsString:=S; end else beep; ShowMessage('日期輸入錯誤'); end; end; Error message:Faulted with message:'access violation at 0x77f8ffe7:write of address 0*0030f50 Process Stopped Use Step or Run to continue
您在ObtainDate自已欄位的onChange事件寫MdaTable1ObtainDate.AsString:=S;造成無窮迴圈,所有造成錯誤。 我建議您在TField的onValidate事件作日期檢查。(您如果有用DBEdit元件,應該不用再把值重新給ObtainDate這個欄位)
------
~小弟淺見,參考看看~
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-20 16:16:56 IP:61.228.xxx.xxx 未訂閱
引言:
引言:
您在ObtainDate自已欄位的onChange事件寫MdaTable1ObtainDate.AsString:=S;造成無窮迴圈,所有造成錯誤。 我建議您在TField的onValidate事件作日期檢查。(您如果有用DBEdit元件,應該不用再把值重新給ObtainDate這個欄位) 可以了,多謝大師對新徒手指點多謝 可否在請教一點,就是上例如:user輸入錯誤日期,用何event(Properties)讓 dbedit停在該欄讓user清除或輸入正確?
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-02-20 16:30:52 IP:211.72.xxx.xxx 未訂閱
引言: 可否在請教一點,就是上例如:user輸入錯誤日期,用何event(Properties)讓 dbedit停在該欄讓user清除或輸入正確?
就是使用TField的onValidate事件,以您的例子當範例:
procedure TMDaFrm2.MdaTable1ObtainDateValidate(Sender: TField);
var S:String;
begin
  S:=StrZero(TrimLeft(MdaDbedit5.text),7);
  // 該欄位EditMark !999/99/00;0;_
  if GetDateTrue(S)=False then 
  begin
    beep;
    raise Exception.Create('日期輸入錯誤');
  end;
end;
~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-20 16:46:48 IP:61.228.xxx.xxx 未訂閱
引言: [quote] 可以了,真不好意司,可否請教最後一個問題? 何種元件或事件,可當游標或tab或enter鍵時可以show出設計者提示 例如上例:日期:092/02/20 (當游標或tab或enter鍵移至此時) 用何元件或事件,可show 出方塊訊息例如:民國年不足三碼前一碼請補0 謝謝
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-02-20 17:29:56 IP:211.72.xxx.xxx 未訂閱
引言: 何種元件或事件,可當游標或tab或enter鍵時可以show出設計者提示 例如上例:日期:092/02/20 (當游標或tab或enter鍵移至此時) 用何元件或事件,可show 出方塊訊息例如:民國年不足三碼前一碼請補0
有兩個方法: (1)將DBEdit的ShowHint設為True,並在DBEdit的Hint打上'民國年不足三碼前一碼請補0',不過這方法要滑鼠移到該DBEdit物件上,才會顯示。 (2)使用TStatusBar(在Win32頁夾)(記得在StatusBar屬性表的Panels Add一個Panel),並在DBEdit OnEnter事件打上StatusBar1.Panels[0].Text := '民國年不足三碼前一碼請補0 '; 即 當游標或tab或enter鍵時可以show出設計者提示。有問題再問吧! ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
系統時間:2024-05-13 2:17:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!