PDA

View Full Version : یک سوال مهم در مورد MaskEdit



farzane_fn
سه شنبه 31 شهریور 1388, 17:16 عصر
دوستان بسیار عزیزم سلام.من توی برنامم از یه MaskEdit استفاده کرده ام که EditMask آن از نوع Date هست.می خواستم بدونم آیا روشی هست که بشه تشخیص داد داده ای که درون این MaskEdit وارد شده صحیح هست یا خیر یعنی این داده واقعا یک تاریخ معتبر هست یا نه؟ و بتونیم اگر داده نامعتبر بود پیام خطای مناسب صادر کنیم.خیلی ازتون ممنون می شم اگه جواب رو پست کنین.:لبخندساده::لبخندساده:

behzad_dr
پنج شنبه 02 مهر 1388, 19:48 عصر
بله این کار ممکنه ، اما پیشنهاد دوستانه به نظر من از maskedit به هیچ عنوان استفاده نکنید چون با مشکلاتی مواجه می شی !
من همیشه به این صورت عمل میکنم و نه خودم نه کاربرم با مشکل مواجه نمیشه !
از edit یا dbedit هرکودوم نیاز دارید استفاده کنید . در رویداد OnKeyDown کد زیر :

If ((tDBEdit(Sender).GetTextLen=2) or (TDBEdit(Sender).GetTextLen=5))AND (KEY<>8) then
Tdbedit(Sender).Text:='/'+Tdbedit(Sender).Text;

و در رویداد OnExit :


var t:string;
begin
if trim(dbedit(sender).Text)<>'' then
begin
t:=tdbedit(sender).Text;
if t[2]='/' then
insert('0',t,1);
if t[5]='/' then
insert('0',t,4);
if trim(t[8])='' then
insert('0',t,7);

tdbedit(sender).Text:=t;

IF (STRTOINT(T[1]+T[2])<88) OR (STRTOINT(T[4]+T[5])>12) OR (STRTOINT(T[7]+T[8])>31)THEN
TDBEdit(SENDER).Text:='';
end;


end;

Ahmad Chehreghani
سه شنبه 21 مهر 1388, 00:06 صبح
بله این کار ممکنه ، اما پیشنهاد دوستانه به نظر من از maskedit به هیچ عنوان استفاده نکنید چون با مشکلاتی مواجه می شی !

لطفا وقتي پيشنهاد ميديد، دليلش رو هم بگيد


من همیشه به این صورت عمل میکنم و نه خودم نه کاربرم با مشکل مواجه نمیشه !

مثلا با چه مشکلي؟

khoshblagh
سه شنبه 21 مهر 1388, 07:46 صبح
برای عبارت زیر خطای missing opretor or simecolen میگیره



if trim(dbedit(sender).Text)<>'' then

[/code]

farzane_fn
سه شنبه 21 مهر 1388, 10:18 صبح
برای عبارت زیر خطای missing opretor or simecolen میگیره



if trim(dbedit(sender).Text)<>'' then

[/code]
دوست عزیزم فکر کنم اگه به جای dbedit توی جمله بالا بزارید tdbedit مشکل حل بشه. امتحان کنید لطفا..

farzane_fn
سه شنبه 21 مهر 1388, 10:20 صبح
آقای behzad_dr به خاطر کدی که نوشته بودید از شما تشکر می کنم..

khoshblagh
سه شنبه 21 مهر 1388, 11:10 صبح
دوست عزیزم فکر کنم اگه به جای dbedit توی جمله بالا بزارید tdbedit مشکل حل بشه. امتحان کنید لطفا..
امتحان کردم جواب نداد. ضمن اینکه خطا مربوط به عدم درج سیمیکلن و یا علامت مربوط مساوی و ... میباشد. متشکرم