![]() |
|
مدخل للوراثة Inheritance عن طريق الـ VFI - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : دروس دلفي للمبتدئين (https://delphi4arab.net/forum/forumdisplay.php?fid=13) +--- الموضوع : مدخل للوراثة Inheritance عن طريق الـ VFI (/showthread.php?tid=10326) |
مدخل للوراثة Inheritance عن طريق الـ VFI - S.FATEH - 23-07-2019 السلام عليكم و رحمة الله و بركاته
الوراثة Inheritance مصطلح له علاقة وثيقة بالـ OOP اختصارا Object Oriented Programming عربيا البرمجة غرضية التوجه
دلفي يوفر منذ زمن قديم VFI اختصارا للـ Visual Form Inheritance ما الذي يعنيه هذا ؟ VFI هو نوع من انواع إعادة الإستخدام للفورم ما الذي يعنيه هذا ؟ يمكنك في دلفي تنشئ فورم و تقوم بحفضه الى المستودع Repository و كلما احتجت الى ذلك الفروم في مشاريع اخرى تقوم باستخدامه مرة اخرى ...إبدأ مشروع جديد بالدلفي File -> New - >Windows VCL Application - Delphi قم بإنشاء فورم و ليكن كاتالي و قم بحفظه... سنستخدم فقط حدث البحث أو الفلترة لتوضيح الفكرة.. PHP كود : procedure TfrmBaseForm.edtSearchChange(Sender: TObject);لا تقم بربط الـ DataSource1 مع اي DataSet حدد الفروم إظغط يمين ثم Add to Repository ستظهر النافذة التالية اختر عنوان للفروم الذي نريد إظافته للـ Repository و قم باختيار المكان الذي سنجد الفورم الخاص بنا و ليكن Inhertable Items كما في الصورة في المشروع الذي تريد إستخدام الفورم قم باظافة وحدة الـ BaseForm ...Project -> Add to Project ثم من دلفي ...File -> New -> Others لاحظ الجزء 3 دلفي يوفر لنا ثلاثة طرق لإستخدام الفورم الذي حفظناه سابقا
PHP كود : TfrmBaseForm1 = class(TfrmBaseForm)دلفي قام بتوريث الفورم الناشئ من TfrmBaseForm
قم بالذهاب الى الحدث OnChange للـ Edit الخاصة بالفلترة باختصار إضغط مرتين على Edit الفلترة نلاحظ ضهور كلمة جديد Inherited PHP كود : procedure TfrmBaseForm1.edtSearchChange(Sender: TObject);ما الذي يعنيه جربنا الفلترة من قبل دون كتابة ادنى سطر ببساطة لاننا ورثنا الكود الموجود في BaseForm يمكنك توسعة / تمديد الكود PHP كود : procedure TfrmBaseForm1.edtSearchChange(Sender: TObject);يمكنك التغيير في مكان استدعاء كود الأب PHP كود : procedure TfrmBaseForm1.edtSearchChange(Sender: TObject);أو عمل Override للكود تماما و ذلك بحذف كلمة Inherited ! PHP كود : procedure TfrmBaseForm1.edtSearchChange(Sender: TObject);حسنا جميل جدا الأجمل من هذا إذهب الى BaseForm و قم بإظافة زر Button إذهب الى الفورم المورث منه ستجد أن الزر قد أضيف أوتماتيكيا لو كان عندنا 20 فورم مورث منه سيتم إضافة الزر الى 20 فورم في حالة تم إضافته الى BaseForm و الأمر طبعا ينطبق على الكود في حالة أضفنا زر الى فورم ما مورث من الـ BaseForm لن يحدث العكس أي لن تتم إظافة الزر الى الـ BaseForm أي يمكنك التوسعة في الفرومات المورثة كما تشاء الشيئ الوحيد الذي لا يمكنك فعله هو حذف مكون من الفورمات المورثة بمعنى انه لا يمكننا ان نحذف الـ DBGrid من الفرومات المورثة اذا اردنا حذفها نحذفها في الـ BaseForm و السلام عليكم و رحمة الله و بركاته
|