PDA

View Full Version : maskedit برای تاریخ شمسی



SReza1
دوشنبه 29 تیر 1383, 22:52 عصر
کسی maskedit برای تاریخ شمسی داره؟

Mahdi_S_T
سه شنبه 30 تیر 1383, 08:50 صبح
دوست عزیز آقای فراهانی یک کامپوننت داره که شامل MaskEdit هم است اما یه کم خرج داره
www.Farsicomponents.com

البته نسخه نمایشی یه کامپوننت هم بنام Falad هم است که دارای MaskEdit تاریخ هم است اما زیاد دقیق نیست که اگه لازم بود با یه جستجو همین سایت پیدا می کنی ( اگه نسخه اصلی آن را پیدا کردی به من هم خبر بده )

Mohammad S
سه شنبه 30 تیر 1383, 10:30 صبح
آقای ربیعی هم یکی داره

مهندس
چهارشنبه 31 تیر 1383, 00:40 صبح
سلام

بنده Shdate رو که برای Farsicomponents.com هست رو گرفتم و 5500 تومن هم دادم...

ولی خداییش میگم واقعا ارزش داره شما هم به نظر من از همون استفاده کنید///

SReza1
پنج شنبه 01 مرداد 1383, 23:58 عصر
مرسی دوستان!! خودم نوشتم!! :D

Mohammad S
جمعه 02 مرداد 1383, 10:29 صبح
مرسی دوستان!! خودم نوشتم!! :D

خوب اونو اگه مجانیه اینجا هم بذار :wink:

مهندس
شنبه 03 مرداد 1383, 20:42 عصر
سلام

یعنی چی اونوقت که خودم نوشتم ؟ بیشتر توضیج بدید مام بدونیم. :متفکر:

SReza1
شنبه 03 مرداد 1383, 23:14 عصر
من مشکل تبدیل تاریخ میلادی و این چیزا رو نداشتم!! mask کردن بود!!
شما کامپوننتهای hrdate رو استفاده کنید معرکست!

info_1359
دوشنبه 03 آبان 1395, 10:31 صبح
کسی maskedit برای تاریخ شمسی داره؟

سلام از این تابع که خودم نوشتم میتونید استفاده کنید . تابع InputDateShamsi در ایونت onkeypress فراخوانی کنید به این شکل:




procedure TForm1.maskedit1KeyPress(Sender: TObject; var Key: Char);
begin
key:=InputDateShamsi(key,maskedit1.Text,maskedit1. SelStart);
end;


در قسمت properties کامپوننت maskedit1 خاصیت EDITMask اونو برابر :

EDITMask: ####/##/##;0;

قرار بدین.


//**********
function InputDateShamsi(Key:Char;datem:string;makan:intege r):Char;
// EDITMask: ####/##/##;0;
// onkeypress
var
mah1,mah2,rouz1,rouz2,mah,k:integer;
begin
if (key in['0'..'9']) then
begin
datem:=datem+key; k:=StrToInt(key);
end else datem:=datem;
if StrLen(pchar(datem)) >4 then mah1:=StrToInt(TrimRight(Copy(datem, 5, 1)));
if StrLen(pchar(datem)) > 5 then
begin
mah2:=StrToInt(TrimRight(Copy(datem, 6, 1)));
mah:=StrToInt(TrimRight(Copy(datem, 5, 2)));
end;
if StrLen(pchar(datem)) > 6 then rouz1:=StrToInt(TrimRight(Copy(datem, 7, 1)));
if StrLen(pchar(datem)) > 7 then rouz2:=StrToInt(TrimRight(Copy(datem, 8, 1)));
if (makan=0)and(k<>1) then key:=#0;
if (makan=1)and(k<3) then key:=#0;
if ((makan=5)and(k=1)and(mah2>2))or((makan=5)and(k>1)) then key:=#0;
if ((makan=6)and(k=0)and(mah1=0)) then key:=#0;
if ((makan=6)and(k>2)and(mah1=1)) then key:=#0;
if (makan=8) then
begin
if k>3 then key:=#0;
if ((k=3)and(rouz2>1)) then key:=#0;
if ((k=3)and(rouz2>0)and (mah>6)) then key:=#0;
end;
if (makan=9) then
begin
if ((k>1)and(rouz1=3)) then key:=#0;
if ((k>0)and(rouz1=3)and (mah>6)) then key:=#0;
end;
Result := key;
end;