كود :
http://up102.arabsh.com/my/9d62eab.pngكود :
http://up102.arabsh.com/my/34cb54b.gifC: Width: 70 =: Height: 70
الآن انتهينا من الواجهة و سننتقل إلى البرمجة.
ننقر على Code في الأسفل أو بكل بساطة F12
نعود قليلا إلى الواجهة F12
ننقر مرتين على 0 (B0) فنحصل على
كود :
http://up103.arabsh.com/files/hx0cltdw259slza9prfe.jpgفي البرمجة العادية للتطبيق المثال الآلة الحاسبة سوف نقوم بكتابة شفرة لكل زر ذات رقم
أي للزر 0 سنكتب
كود :
procedure TForm1.B0Click(Sender: TObject) ;
begin
Edit1.Text := Edit1.Text + ‘0’ ;
end;كود :
Edit1.Text := Edit1.Text + (Sender as TButton).Captionوهذا السطر سيكون في الإجراء السابق ويعبر عن كل الأزرار حين النقر عليها، أي
B1 : OnClick : B0Click
B2 : OnClick : B0Click
B3 : OnClick : B0Click
…
B8 : OnClick : B0Click
B9 : OnClick : B0Click
و سنحصل على:
كود :
http://up103.arabsh.com/files/d3dh6k6nbpyuqpoq0d9h.jpgكود :
http://up103.arabsh.com/files/oympimuxxq712r9tr5wz.jpgالآن تذهب إلى الزر c ، ننقر عليه مرتين ونكتب الكود التالي:
كود :
Edit1.Text := '0'كود :
Edit1.Text := FloatToStr(- StrToFloat(Edit1.Text))StrToFloat: تحول متغير كتابي String إلى العدد الصحيح Float
ننتقل الآن إلى العمليات
نصعد في الكود حتى نجد
كود :
var
Form1: TForm1;كود :
var
Form1: TForm1;
Operation : Integer = 4 ;الآن ننقر مرتين على الزر / أو BDiv و نكتب الكود :
إذا كان Edit1.Text غير فارغ إذاً n1 تأخذ قيمة Edit1.Text على شكل عدد صحيح
Operation تأخذ قيمة Tag الخاص بزر العملية المختارة
Edit1 تصبح فارغة
كود :
If Edit1.Text <>'' Then n1 := StrToFloat(Edit1.Text) ;
Operation := (Sender as TButton).Tag ;
Edit1.Clear ;أما الزر الفاصلة ننقر مرتين على BVer ثم نضع الكود:
كود :
Edit1.Text := Edit1.Text + DecimalSeparator;حتى الآن لقد قمنا بالعمل البسيط، ولكي نواصل لا بد من إنشاء متغيرين صحيحين n1 و n2
بعد Var
كود :
var
Form1: TForm1;
Operation : Integer = 4 ;
N1 : Real = 0 ;
N2 : Real = 0 ;نلاحظ "=0" وهي توجه المصنف compiler أنه عند إنشاء المتغيرين أعطهم العدد 0، وبهذا سيكون لدينا n1=0 و n2=0 في البداية
الآن النتيجة:
الإجراء كما يلي:
إذا كانت قيمة edit1.Text فارغة إذاَ Edit1.Text تأخذ القيمة '0'
N2 تأخذ قيمة Edit1.Text على شكل عدد صحيح
حالة Operation من
[INDENT]1: إذا كانت قيمة n1 و n2 تساويان الصفر إذاَ[/INDENT]
[INDENT][INDENT]أظهر نافذة خطأ تحتوي على الرسالة 'نتيجة العملية غير محددة'
خروج من الإجراء[/INDENT][/INDENT]
[INDENT]وإلا إذا كانت قيمة n2 تساوي الصفر إذاَ[/INDENT]
[INDENT] أظهر نافذة خطأ تحتوي على الرسالة ' القسمة على الصفر مستحيلة '
خروج من الإجراء
وإلا النتيجة = n1 /n2[/INDENT]
[INDENT] 2: النتيجة = n1 ×n2
3: النتيجة = n1 -n2
4: النتيجة = n1 +n2
[/INDENT]
نهاية الحالة
Edit1.Text تأخذ قيمة النتيجة على شكل كتابة
كود :
procedure TForm1.BEgalClick(Sender: TObject);
begin
if Edit1.Text = '' Then Edit1.Text := '0';
n2 := StrToFloat(Edit1.Text);
Case Operation of
1 : begin
if (n1 = 0) and (n2 = 0) then begin
messagedlg('نتيجة العملية غير محددة',mtError,[mbOk],-1);
exit
end
else
if n2 = 0 then begin
messagedlg('القسمة على الصفر مستحيلة',mtError,[mbOk],-1);
exit
end
else Resultat := n1/n2;
end;
2 : Resultat := n1*n2;
3 : Resultat := n1-n2;
4 : Resultat := n1+n2;
end;
Edit1.Text := FloatToStr(Resultat);
end;الآن البرمجة عندما يدخل المستعمل الأرقام عبر لوحة المفاتيح:
للتحكم في إدخال لوحة المفاتيح هناك إجراء يساعدنا للمزيد أنظر
http://www.delphi4arab.net/forum/showthread.php?tid=5
ننقر على Form1 مرة واحدة ثم نذهب إلى Event و بالتحديد OnKeyPress ثم ننقر مرتين على الخانة المواجهة
نكتب الكود التالي:
كود :
if key in ['+','-','*','/'] then
begin
if key = '+' then BOper(BAdd)
else if key = '-' then BOper(BDiff)
else if key = '*' then BOper(BMult)
else if key = '/' then BOper(BQuot);
Key := #0;
exit;
end;
if Key in ['=', #13] then
begin
BEgaleClick(BEgale);
Key := #0;
exit;
end;
if key in ['.',','] then
begin
key := DecimalSeparator;
end;
if not (Key in [#8, '0'..'9', DecimalSeparator]) then Key := #0;ملاحظة: البرنامج غير كامل على القراء بعد التطبيق إكتشاف الأخطاء سواء من الناحية البرمجية أو من ناحية عمله في نظام التشغيل
وأرحب بكل التعليقات
تحياتي

