المشاركات : 171
المواضيع 24
:
: 0
الإنتساب : Jan 2009
السلام عليكم ورحمة الله وبركاته
واجهتني هذه النقطة في عملية تحويل العمر عن طريق ادخال سنة الميلاد في edit فقط فتعطيني العمر
في edit2
PHP كود : function Years(PastDate,CurrentDate:TDate):integer; var PastMonth,PastDay,PastYear,CurrentYear,CurrentMonth,CurrentDay:word; begin DecodeDate(PastDate,PastYear,PastMonth,PastDay); DecodeDate(CurrentDate,CurrentYear,CurrentMonth,CurrentDay); if (PastYear=CurrentYear) and (PastMonth=CurrentMonth) and (PastDay=CurrentDay) then Result:=0 else begin Result:=CurrentYear-PastYear; if (PastMonth>CurrentMonth) then Dec(Result) else begin if PastMonth=CurrentMonth then if (PastDay>CurrentDay) then Dec(Result); end; end; end;
procedure TForm1.dtp1Change(Sender: TObject); begin Edt3.Text := IntToStr(YearsBetween(dtp1.Date,now)); end;
procedure TForm1.btn1Click(Sender: TObject); begin Edt2.Text:=Format(' %d ', [Years(StrToDate('03/06/1978'),Date)]); end;
end.
محاولة تغير التاريخ كمل ب EDIT1.TEXT
المشاركات : 171
المواضيع 24
:
: 0
الإنتساب : Jan 2009
PHP كود : procedure TForm1.edt1Change(Sender: TObject); var date1, date2: TDate; begin date1 := StrTofloat(Edt1.Text); date2 := Now; Edt2.Text:= FloatToStr(YearsBetween(date2, date1)); end;
end.
ولاهذا عمل
المشاركات : 543
المواضيع 34
:
: 463
الإنتساب : Apr 2013
الخطا بسيط يا اخي اسم الدالة هو Years وليس YearsBetween غير الكود ليصبح
PHP كود : function Years(PastDate,CurrentDate:TDate):integer; var PastMonth,PastDay,PastYear,CurrentYear,CurrentMonth,CurrentDay:word; begin DecodeDate(PastDate,PastYear,PastMonth,PastDay); DecodeDate(CurrentDate,CurrentYear,CurrentMonth,CurrentDay); if (PastYear=CurrentYear) and (PastMonth=CurrentMonth) and (PastDay=CurrentDay) then Result:=0 else begin Result:=CurrentYear-PastYear; if (PastMonth>CurrentMonth) then Dec(Result) else begin if PastMonth=CurrentMonth then if (PastDay>CurrentDay) then Dec(Result); end; end;
end; procedure TForm1.edt1Change(Sender: TObject); var date1, date2: TDate; begin date1 := StrTofloat(Edt1.Text); date2 := Now; Edt2.Text:= FloatToStr(Years(date2, date1)); end;
end.
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
المشاركات : 171
المواضيع 24
:
: 0
الإنتساب : Jan 2009
السلام عليكم شكرا اخي لكن المشكل ليس بالدالة yearsbetween
و الدالة years
PHP كود : procedure TForm1.edt1Change(Sender: TObject); var date1, date2: TDate; begin date1 := StrTofloat(Edt1.Text); date2 := Now; Edt2.Text:= FloatToStr(YearsBetween(date2, date1)); end;
end.
في هذه الدالة عند ادخال السنة فقط يعطيني عمر غير صحيح اظن المشكلة في تحويل الادخال في edit1
المشاركات : 543
المواضيع 34
:
: 463
الإنتساب : Apr 2013
اهلا اخي عنتر
بما ان الدالة YearsBetween تحسب الفارق بين تاريخين فسيكون date1 يحتوي على تاريخ وليس رقم كما فعلت انت ادن :
date1 := StrToDate(Edt1.Text); ليكون الكود كما يلي :
PHP كود : procedure TForm1.edt1Change(Sender: TObject); var date1, date2: TDate; begin date1 := StrToDate(Edt1.Text); date2 := Now; Edt2.Text:= FloatToStr(YearsBetween(date2, date1)); end;
end.
والله اعلم
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
المشاركات : 33
المواضيع 9
:
: 0
الإنتساب : Jan 2014
07-12-2014, 10:45 PM
(آخر تعديل لهذه المشاركة: 07-12-2014, 10:50 PM بواسطة FaLcon_DZ.)
اخي انا لدي خلل في برنامجي الصغير حاولت حل المشكلة ولم استطع وبالتالي ان يستنتج البرنامج التسنة من الجهاز وليس من خلال المتغير الذي اعطيته له انا مضبوط .شاهد الكود كيف اقوم بتغيير مكان 2014 بدالة تستنتج السنة من النظام ليعمل في كل زمان .
وما هي الكائنات التي اضيفها للبرنامج مثل date او غيرها .. وشكرا .
PHP كود : unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;
type TForm1 = class(TForm) lbl1: TLabel; lbl2: TLabel; edt1: TEdit; edt2: TEdit; btn1: TButton; btn2: TButton; lblAnswer: TLabel; procedure btn1Click(Sender: TObject); procedure btn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject); begin
lblAnswer.Caption:= 'Hello Mr.'+edt1.Text +',Your were born in '+edt2.Text+',your Age is :'+ IntToStr(2014 - StrToInt(edt2.Text)); end;
procedure TForm1.btn2Click(Sender: TObject); begin edt1.Text:=''; edt2.Text:=''; lblAnswer.Caption:='' end;
end.
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
السلام عليكم
المشكلة في ادخال المعلومات فانت لاتتحقق من المدخل
اما تستخدم حدث أخر غير OnChange او تتحقق من البيانات المدخة تاريخ Valid Date
المشاركات : 543
المواضيع 34
:
: 463
الإنتساب : Apr 2013
FaLcon_DZ كتب :اخي انا لدي خلل في برنامجي الصغير حاولت حل المشكلة ولم استطع وبالتالي ان يستنتج البرنامج التسنة من الجهاز وليس من خلال المتغير الذي اعطيته له انا مضبوط .شاهد الكود كيف اقوم بتغيير مكان 2014 بدالة تستنتج السنة من النظام ليعمل في كل زمان .
وما هي الكائنات التي اضيفها للبرنامج مثل date او غيرها .. وشكرا .
PHP كود : unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;
type TForm1 = class(TForm) lbl1: TLabel; lbl2: TLabel; edt1: TEdit; edt2: TEdit; btn1: TButton; btn2: TButton; lblAnswer: TLabel; procedure btn1Click(Sender: TObject); procedure btn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject); begin
lblAnswer.Caption:= 'Hello Mr.'+edt1.Text +',Your were born in '+edt2.Text+',your Age is :'+ IntToStr(2014 - StrToInt(edt2.Text)); end;
procedure TForm1.btn2Click(Sender: TObject); begin edt1.Text:=''; edt2.Text:=''; lblAnswer.Caption:='' end;
end.
السلام عليكم
اولا ان اردت مسح ما بوجد في edit.text يمكنك ايضا استعمال :
للحصول على تاريخ اليوم يوجد دالة now) dateToStr) واستعمالها يكون هكدا :
PHP كود : edit1.text:=DateToStr(now);
التاريح ياخد من الجهاز لدى تاكد من صحته اولا .
للاستزادة ابحث في المنتدى بوجد العديد من المواضيح حول دلك
http://delphi4arab.net/forum/showthread....7%D1%ED%CE
او
http://delphi4arab.net/forum/search.php?searchid=753889
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
المشاركات : 171
المواضيع 24
:
: 0
الإنتساب : Jan 2009
السلام عليكم ورحمة الله وبركاته
ان شاء الله قد توصلت الى الحل
PHP كود : procedure TForm1.edt1Change(Sender: TObject); var year,month,day:word; begin if edt1.Text <> '' then begin DecodeDate(date, Year, Month, Day); Edt2.Text:= IntToStr((year) - StrToInt(edt1.Text)) end else edt2.Clear; end;
end.
|