سلام دوستان چطور میشه در برنامم یک تاریخ شمسی داشته باشه مثلا پنجشنبه 16 1387 خرداد اینطوری بنویسه ؟
از تمام دوستان و اساتید تشکر میکنم
سلام دوستان چطور میشه در برنامم یک تاریخ شمسی داشته باشه مثلا پنجشنبه 16 1387 خرداد اینطوری بنویسه ؟
از تمام دوستان و اساتید تشکر میکنم
در سایت خیلی خیلی بحث شده
جستجو کن
dll آقای سرباز زاده هست.
کامپوننتهایی نیز مانن shdate وجو دارنئ.
در بخش نکات برنامه نویسی در دلفی که در قسمت اعلان های بخش دلفی است هم من کد تبدیل تاریخ میلادی به شمسی و شمسی به میلادی رو گذاشتم
https://barnamenevis.org/showth...t=52234&page=6
سلام دوست من
تو می تونی از این روش برای نشون دادن اون چیزی که می خوای استفاده کنی:
procedure TForm1.FormCreate(Sender: TObject);
var
m2, d2, Today, Day, DateComplete: string;
total: longint;
m1, y1, y2, d1, y, m, temp, d: word;
a, b, a1: array [1..12] of word;
begin
Today:='';
a[1]:=31; a[2]:=28; a[3]:=31; a[4]:=30; a[5]:=31; a[6]:=30;a[7]:=31;a[8]:=31;a[9]:=30;a[10]:=31;a[11]:=30;a[12]:=31;
b[1]:=31;b[2]:=29;b[3]:=31;b[4]:=30;b[5]:=31;b[6]:=30;b[7]:=31;b[8]:=31;b[9]:=30;b[10]:=31;b[11]:=30;b[12]:=31;
a1[1]:=31;a1[2]:=31;a1[3]:=31;a1[4]:=31;a1[5]:=31;a1[6]:=31;a1[7]:=30;a1[8]:=30;a1[9]:=30;a1[10]:=30;a1[11]:=30;a1[12]:=29; total:=0;
y := strtoint(formatdatetime('yy', now()));
temp := y;
m := strtoint(formatdatetime('m', now()));
d := strtoint(formatdatetime('d', now()));
if y mod 4 = 0 then
dec(total);
while y > 3 do
begin
if y mod 4=0 then
inc(total,366)
else
inc(total, 365);
dec(y);
end;
while m > 1 do
begin
if temp mod 4 = 0 then
inc(total, b[m-1])
else
inc(total, a[m-1]);
dec(m);
end;
inc(total, d);
inc(total, 9);
y1 := 1381;m1 := 10;d1 := 1;
while total > 364 do
if y1 mod 4 = 3 then
if total > 365 then
begin
dec(total, 366);
inc(y1);
end
else break
else
begin
dec(total, 365);
inc(y1);
end;
while total > 28 do
begin
if m1 = 12 then
begin
if y1 mod 4 = 3 then
if total>29 then
begin
dec(total,30);
end
else break
else
dec(total, 29);
inc(y1);
m1 := 1;
end;
if total >= a1[m1] then
begin
dec(total, a1[m1]);
inc(m1);
end
else
break;
end;
inc(d1, total);
if (m1)<10 then
M2 := '0'+IntToStr(m1)
else
M2 := IntToStr(m1);
if (d1)<10 then
d2 := '0'+IntToStr(d1)
else
d2 :=IntToStr(d1);
y2 := y1 - 1300;
Today := FormatDateTime('dddd',Now());
DateComplete := Today + ' : ' + d2 + ' / ' + m2 + ' / ' + inttostr(y1);
Day := IntToStr(y2) + '/' + m2 + '/' + d2;
Lable1.Caption := DateComplete;
end;
این کد رو دوست خوبم محسن غلامی نوشته که همین جا ازش تشکر می کنم به خاطر کد قشنگش!
موفق و موید باشید
در ضمن دوست من
هر کسی روزی تازه کاره این سایت برای یادگیری ایجاد شده پس هر سوالی که داری و برات پیش میاد رو بدون خجالت بپرس و نیازی نیست به خودت تلقین کنی که "من تازه کارم".
اینجا هرکسی هر کمکی که از دستش بربیاد رو در حد توانش بهت میگه پس امیدوار باش که آدمی به امید زنده است.
موفق و موید باشید
سلام چرا خطا میده . خطای label میگیره
سلام.
اصولا برای این جور رویها یکسری label پیشفرض تعریف میشه که باید شما بر روی فرمتان یک یا چند label که نامشون شبیه به نامی که در این رویه وجود دارد قرار دهید.
چون ساعت و تاریخ رو در خاصیت caption لیبلها به شما نمایش میده.
موفق باشید.......
میشه یک مثال بزنید در این رابطه که مطرح کردید تا منم بیشتر در جریان قرار بگیرم اخه توضیحاتتون خوبه ولی من هنوز متوجه نشدم
دوست عزیز از این یونیتی هم که براتون فرستادم میتونید استفاده کنید.
باید اونو به پروژتون اضافه کنید.
در فرمی که میخواهید ساعت و تاریخ نمایش داده شه .یک تایمر قرار بدید که در داخل آن نیز این کدها رو بزارید.
کد:
procedure TMain.Timer1Timer(Sender: TObject);
var yr,mn,dy:word;
m,d:string;
day :word;
begin
JDecodeDate(Date(),yr,mn,dy);
if mn<=9 then
m:='0'+inttostr(mn)
else
m:=inttostr(mn);
if dy<=9 then
d:='0'+inttostr(dy)
else
d:=inttostr(dy);
DateL.Caption:=IntToStr(yr)+'/'+m+'/'+d;
day:=DayOfWeek(now);
case day of
1:
DayL.Caption:='یکشنبه';
2:
DayL.Caption:='دوشنبه';
3:
DayL.Caption:='سه شنبه';
4:
DayL.Caption:='چهار شنبه';
5:
DayL.Caption:='پنج شنبه';
6:
DayL.Caption:='جمعه';
7:
DayL.Caption:='شنبه';
end;
TimeL.Caption:=FormatDateTime('HH:MM:SS',now);
end;و سپس در همان فرم سه label قرار بدید با نامهای timel , dayl , datel
در ضمن خصوصیت interval تایمر رو هم به 1 تبدیل کنید.
تایمر:یک شی که در تب system وجود دارد و شکل ساعت است.کارش شمارش و اجرای دستورات در زمان معین شده.
موفق باشید.........
سلام دوست من
روی فرمت یه Lable بذار و اسمش به Lable1 تغییر بده!
موفق و موید باشید
سلام دوست من
من فکر می کنم بجای تعریف اسم روز ها در روال ها و فاکشن ها بهتر از توابع خود دلفی استفاده کنیم نه؟
این نظر منه شاید نظر بقیه دوستان چیز دیگه ای باشه!
این کد اسم روز رو به هر زبانی که در Regional and Language Optin ویندوزتون به عنوان پیش فرض تعریف شده باشه بر می گردونه و نیاز نیست که بخوایم اسم تمام روز ها رو خودمون بیایم برای سیستم تعریف کنیم.
Today := FormatDateTime('dddd',Now());
موفق و موید باشید
چطور به برنامه این فایل رو اضافه کنم میشه در این مورد هم توضیحاتی بدین
دوست عزیزم قبلا توضیح دادم .
شما یک پروژه در دلفی ایجاد کنید.
سپس در قسمت project>Add to project و بعد آن این یونیت رو با نام Jdate رو به برنامه اضافه کنید.
و سپس بقیه مراحل که در بالا توضیح داده شده را انجام دهید......
موفق باشید............
سلام من این مطالب شما رو انجام دادم ولی یک مشکل داره میشه مشاهده کنید بگید کجایه کار من مشکل داره
دوست عزیزم.
اینم نمونه کاملی که شما نیاز داری .فقط کافیه اجراش کنید..
موفق باشید..............
سلام دوست من
برای حل این مشکلت همونطور که دوستمون گفت باید فایل ها رو به پروژه ات اضافه کنی و در زیر قسمت implementation عبارت ;uses jDateUtils رو اضافه کنی
موفق و موید باشی
سلام ممنون مشکلم حل شد همین قسمت صدا زدن uses رو متوجه نشدم از تمام اساتید تشکر می کنم .
سلام دوست من
در قسمت Uses وقتی بخوای از اجزای یه یونیت دیگه که در پروژه ات هست استفاده کنی باید از کلید ترکیبی Alt+F11 استفاده کرده و نام یونیت مورد نظر رو انتخاب و دوبار روش کلیک کنی.
با این روش می تونی از تمام منابع اون یونیت در یک یوینت دیگه استفاده کنی مثلا اگه دوتا فرم داشته باشی و از فرم اول بخوای مقدار Edit فرم دوم رو تغییر بدی می تونی از کد زیر پس از استفاده از کلید ترکیبی بالا و انتخاب یونیت فرم دوم استفاده کنی
Form2.Edit1.Text := 'مقدار جدید یا مورد نظر';
موفق و موید باشی
مرسی مشکلم حل شد . متشکرم از همه اساتید این مبحث که به من راهنمایی دادند .
فقط یک مسئله ای میشه اینو کاملش تر کرد مثلا فصل رو هم بگه که فروردین هستش اردیبهشت یا خرداد ماه در این مورد اساتید چیزی میدونند
سلام دوست من
تو سئوالت یه تناقض هست! اگه فصل رو می خوای باید بگه بهار، تابستان، پاییز و زمستان و اگه اسم ماه رو بخوای باید اونایی رو که تو گفتی بگه!
شما برای اینکه فصل رو بگه باید اول فصل ها رو توی یه آرایه ذخیره کنی بعد بیای بگی اگه عدد ما که می تونی با استفاده از این تابعFormatDateTime('mm',Now());بدست می آید رو بررسی کنی و بگی اگه بین 1 تا 3 است بهار رو نشون بده و به همین ترتیب و اگه بخوای اسم ماه ها رو نشون بده باید باز هم اسم ماه ها رو در یک آرایه بذاری و بگی اگه عدد ماه برابر 1 بود فروردین رو نشون بده و به همین ترتیب الی آخر.
با استفاده از این تابعFormatDateTime('mmmm',Now());می تونی نام ماه های تقوی میلادی رو بدست بیاری!
موفق و موید باشی
یک نمونه میشه اینجا برام مثال بزنید اگه وقتشو دارید تشکر از کمک های شما دوست من
در مورد تععین ماه ککسی میدونه
نسبت به تاربخ فعلی مشخص کنه فروردین اردیبهشت خرداد ...........
از کامپوننت شمسی دیت استفاده کن همه قابلیت هارو داره
در اين پست مي توني به اون چيزي كه مي خواي برسي :
تابع تاريخ شمسي رو پيدا كن : https://barnamenevis.org/showthread.php?t=190417