HomeWork_08 تمرين تطبيقي
#7
السلام عليكم
من أجل تقليص الكود توجد عدة حلول لاستعمال نفس الحدث لعدة المكونات:
1- أن نرفق نفس الحدث لكل المكونات بتحديد مجموعة المكونات واختيار نفس الحدث المرغوب فيه (من Object Inspector) أو:
2- إنشاء مكون TActionList وتحديد خاصية Action لكل مكون بالحدث المرغوب فيه (وبهذا نستغل خاصية ShortCut مثلا وخصائص أخرى)

وإذا كانت الأحداث متشابهة في الشكل ومختلف في القيم، فنجعل لها إجراء أو دالة مستقل (Fonction أو procedure ) ونعطيه معالم (paramters) نمرر من خلالها القيم المتغيرة.

أنا استعمل الدالة FindComponent مع خاصية Caption والاستفادة من المتغير Sender: TObject

مثلا في برنامج آلة حاسبة لا نكتب في حدث النقر على كل زر
كود :
Edit1.text := Edit1.text +Button[i].caption
حيث i تمثل رقم الزر الذي تم النقر عليه...، بل نكتفي بكتابة:
PHP كود :
Edit1.text := Edit1.text + (Sender as TButton).Caption; 
في أي زر ونمرر هذا الحدث لباقي أزرار الأرقام في الآلة الحاسبة.
ونكتب في OnKeyPress للنموذج Form1 الأمر:
PHP كود :
if key in ['0'..'9'] then
    
(FindComponent('Button'+ Key) as TButton).Click; 
وهكذا نختصر العشرات من الأسطر.

ولا ننسى عندما نريد وضع عشرة مكونات TButton دفعة واحدة، ننقر على الزر مع الضغط على مفتاح Shift ثم ننقر على النموذج Form1 عشرة مرات.

أيضا ما يلاحظ كثيرا استعمال مثل:
كود :
if CheckBox1.Checked = True then Edit1.Visible := True else Edit1.Visible := False;
ويمكن اختصاره بـ:
PHP كود :
Edit1.Visible := CheckBox1.Checked 

انتظروا...Smile فاتني التنبيه على أمر مهم جداما يحدث، أحيانا نريد تجربة مكون ما وعند إضافة بعض مكونات في النموذج (Form) يضيف Delphi اسم الوحدة العائدة لذلك المكون، ولكن عند حذفها لا يحذفها الدلفي فيبقى اسم الوحدة في قائمة Uses يثقل حجم البرنامج وقد يستغرب البعض لذلك.
فلا تنسى أن تحذف اسم الوحدات غير المستعملة في برنامجك.

الموضوع مهم، وهناك أشياء كثيرة يمكن قولها في هذا الشأن بعضها أكثر أهمية مما ذكرت، حاليا هذا ما يحضرني الآن.
والله أعلم.
شكرا كثيرا.


الردود في هذا الموضوع
HomeWork_08 تمرين تطبيقي - بواسطة STRELiTZIA - 26-02-2009, 01:07 PM
HomeWork_08 تمرين تطبيقي - بواسطة I_Tiger - 26-02-2009, 01:46 PM
HomeWork_08 تمرين تطبيقي - بواسطة Dr.MOT - 26-02-2009, 02:13 PM
HomeWork_08 تمرين تطبيقي - بواسطة STRELiTZIA - 26-02-2009, 05:59 PM
HomeWork_08 تمرين تطبيقي - بواسطة Dr.MOT - 27-02-2009, 09:29 AM
HomeWork_08 تمرين تطبيقي - بواسطة Goblin - 27-02-2009, 11:13 AM
HomeWork_08 تمرين تطبيقي - بواسطة kachwahed - 28-02-2009, 01:27 PM
HomeWork_08 تمرين تطبيقي - بواسطة hanipino - 28-02-2009, 03:05 PM
HomeWork_08 تمرين تطبيقي - بواسطة kachwahed - 03-03-2009, 09:52 AM
HomeWork_08 تمرين تطبيقي - بواسطة paix144 - 04-09-2009, 02:15 AM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم