無法完程???? |
答題得分者是:channel
|
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
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 發送簡訊給我 |
|
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
引言:引言: 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 發送簡訊給我 |
引言: 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 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 可否在請教一點,就是上例如: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 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 何種元件或事件,可當游標或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出設計者提示。有問題再問吧! ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |