الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

محاولة للبداء بدورة دلفي- الدرس الاول

مغلق
بدأه frh في 5 فبراير 2003 · 14 رد · 2,676 مشاهدة · في أرشيف منتدى الدلفي
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

و السلام عليكم و رحمة الله و بركاته

ساحاول البدء بدورة دلفي و ذلك املاً مني في مساعدة الغير مثلما وجدت من ساعدني كثيرا في هذا المنتدى الرائع ,, و اتقبل جميع الاراء و التعليقات و ارجو ان يسمح وقتي باكمال هذه الدورة على اكمل وجه .

لن اتحدث عن طريقة كتابة الاوامر في دلفي و انواع المتغيرات لاني اعتقد ان ما قدمه الاخ مادي , و الاخ sumكان واضحا و في حالة غموض اي شئ فساقوم بشرح ما اعرفه ان شاء الله .

الدرس الاول و يشمل :

مقدمة عن الدلفي .

الملفات المكونة لدلفي .

الدخول إلى البرنامج .

بيئة دلفي .

مقدمة عن لغة دلفي :-

بدأت قصة دلفي من أوائل التسعينات عندما شعرت شركة بورلاند عن طريق اتصال مهندسيها التقنين مع جمهور المبرمجين بأن لغة بورلاند باسكال والتي تعمل تحت بيئة ويندوز صعبة بعض الشيء .

وكانت الطلبات تنهال علي الشركة مطالبة بتبسيط الموضوع قدر الإمكان .هذا من جانب,ومن جانب أخر أخذت لغات البرمجة المرئية "فيجوال" تبدا بالانتشار , وبدا

بأنها ستغدو لغات شعبية في المدى القريب .لذلك سارعت شركة بورلاند إلى تبني ميزات البرمجة المرئية واستفادة كثيرا من لغة بورلاند باسكال التي قد طورت بشكل صحيح لغدو لغة كائنية التوجه ( OOP )بشكل كامل .

ففي نهاية عام 1993 ولدت النسخة التجريبية لهذه اللغة .وكان لابد من تسميتها فقد كان الاسم المعتمد بين المطورين هو( VISUAL PASCAL ) إلا أنهم استقروا أخيرا علي الاسم ( DELPHI) وقد أخذوا هذا الاسم من أسم معبد يوناني قديم , ويعود هذه الكلمة إلى اللغة العربية الفينيقية القديمة ,وهو يعني بالعرافة.

بماذا تتميز دلفي ؟

تعد دلفي لغة التطوير السريع للتطبيقات RAD (rapid application development ) وهي أداة تطورية قوية تجمع بين ميزات أنظمة التطوير المرئية وبين اللغة كائنية التوجه ( غرضية التوجه ) تعتبر لغة باسكال القلب النابض لدلفي في حين أن دلفي تشكل تطورا طبيعيا لمترجم ( COMPILER ).

لغة باسكال الذي طورته شركة فرانك بورلاند والذي كتبه لها العالم ( ANDERS HEJLBERG ) قبل عشر سنوات .

ومع وجود عدد من لغات التطوير المرئية إلا أن دلفي تتميز بعدة أمور هي :-

تبسيطها لمفاهيم البرمجة تحت النظام ويندوز وتغليفها لتوابعه المسماة

( API) .

بناؤها التطبيقات وفق مفهوم الشكل ( FORM) ولكن ضمن قالب كائني التوجه .

استخدامها تقنية العناصر ( COMPONENT ) الجاهزة .

مترجمها السريع الذي يعد أسرع بعشر مرات من باقي اللغات .

بناؤها لملف تنفيذي لا يحتاج إلى أية ملفات ديناميكية أو أي ملفات أخري أثناء عملها.

دعمها اللامحدود لقواعد البيانات, و توفير كل إمكانيات اللغة لتطوير قواعد البيانات.

محتويات برنامج الدلفي : كما ذكر سابقا فان البرنامج في الدلفي يتكون من برنامج رئيسي واحد (program) , و مجموعة وحدات اخرىunit (عددها غير محدود ) .

الملفات المكونة لدلفي :-

يتألف أي مشروع في دلفي من عدد من الملفات وكل واحد من هذه الملفات له خصوصيته وأهميته وأهم هذه الملفات هي :-

*.ملف المشروعDPR)).

*.ملف الوحدة (PAS).

*.ملف الشكلDFM)).

1- ملف المشروع DPR :-

مهمة هذا الملف تسجيل المعلومات عن المشروع وعناصره.فعند بدء مشروع جديد تنشئ دلفي هذا الملف ويجري تعديله أثناء مسيرة تطوير المشروع.

2- ملف الوحدةPAS :-

ويقوم بخزن ملفات الوحدات الحاوية علي التعليمات بلغة باسكال الكائناتية (OBJECT ASCPAL ) في ملفات امتدادها PAS) ) .

3- ملف الشكل ( DFM ) :-

حيث يقوم بتسجيل المعلومات الخاصة عن الشكل وعناصره من حيث شكل FORM ومواقع العناصر وأحجامها.

الدخول إلى البرنامج :-

untitled.jpg?curmbox=F000000001&a=87332c23696b7e3e07b82f8180bc3a5a&msg=MSG1044441632.111&start=1504332&len=126027&mimepart=7&disk=64.4.16.68_d122&login=heyam2001&domain=hotmail.com&hm___sig=77ff97d601

وهذا هو الشكل الابتدائي للبرنامج :-

2.jpg?curmbox=F000000001&a=87332c23696b7e3e07b82f8180bc3a5a&msg=MSG1044441283.19&start=1013522&len=490810&mimepart=3&disk=64.4.16.68_d122&login=heyam2001&domain=hotmail.com&hm___sig=7545cd3001c2cd03a9

في الشكل السابق نرى شاشة بيئة التطوير وهي تحتوى على العديد من العناصر المهمة التي سنتعرف عليها .

بيئة دلفي :-

كما نلاحظ في الشكل السابق أن بيئة دلفي تنقسم إلي قسمين هما :-

العناصر التي تظهر أثناء تشغيل دلفي :- وتتكون من

1. الشكل :- FORM ))

النموذج وهو عبارة عن نافذة تظهر فيها العناصر المكونة لواجهة المستخدم ,مثل الأزرار أو اللافتات .............الخ , و يتكون كل برنامج من نموذج او عدة نماذج (form) فهي مساحة العمل الاساسية , اي انها ستكون الخلفية لبرامجك و هي التي ستحمل ادوات التحكم (سنوضحها لاحقاً) التي سيتعامل معها البرنامج .

بمعني أخر تركب عليه جميع ( OBJECT ) المطلوب تنفيذها .

3.jpg?curmbox=F000000001&a=87332c23696b7e3e07b82f8180bc3a5a&msg=MSG1044441283.19&start=1013522&len=490810&mimepart=4&disk=64.4.16.68_d122&login=heyam2001&domain=hotmail.com&hm___sig=75482f8c01c2cd0301

2. لوحة العناصر :- ( COMPONENT PALETTE )

4.jpg?curmbox=F000000001&a=87332c23696b7e3e07b82f8180bc3a5a&msg=MSG1044441283.19&start=1013522&len=490810&mimepart=5&disk=64.4.16.68_d122&login=heyam2001&domain=hotmail.com&hm___sig=75482f8c01c2cd03f3

تستخدم العناصر كصناديق بناء للتطبيقات وتنقسم إلى قسمين هما :-

عناصر مرئية مثل صناديق التحرير و الأزرار .

5.jpg?curmbox=F000000001&a=87332c23696b7e3e07b82f8180bc3a5a&msg=MSG1044441283.19&start=1013522&len=490810&mimepart=6&disk=64.4.16.68_d122&login=heyam2001&domain=hotmail.com&hm___sig=75482f8c01c2cd0350

عناصر غير مرئية مثل صناديق الحوار الاعتيادية مؤقتة النظام ( اي انها لا تظهر في مرحلة التنفيذ رغم وجودها و استخدامها في مرحلة التصميم ).

6.jpg?curmbox=F000000001&a=87332c23696b7e3e07b82f8180bc3a5a&msg=MSG1044441283.19&start=1013522&len=490810&mimepart=7&disk=64.4.16.68_d122&login=heyam2001&domain=hotmail.com&hm___sig=75482f8c01c2cd0359

ولقد نظمت عناصر دلفي ضمن صفحات حسب وظائفها فمثلا و ضعت العناصر التي تمثل صناديق الحوار الرئيسية في ( DIALOGS) و وضعت العناصر التي تتحكم في البيانات في صفحة مستقلة سميت( DATA CONTROL ) وهكذا .

3. ضابط الكائنات :- ( OBJECT INSPECTOR )

وتمكننا من تحديد مواصفات وسلوك العناصر الخاصة بالتطبيق إذ يملك كل عنصر مجموعة من الخواص والأحداث. ويتكون ضابط الكائنات من صفحتين :-

7.jpg?curmbox=F000000001&a=87332c23696b7e3e07b82f8180bc3a5a&msg=MSG1044441283.19&start=1013522&len=490810&mimepart=8&disk=64.4.16.68_d122&login=heyam2001&domain=hotmail.com&hm___sig=75482f8c01c2cd03ef

 Properties:-

وتستخدم لاعطاء قيم لخواص العنصر المحدد بمعني آخر خصائص ال( FORM ) فعلي سبيل المثال إي شخص ما هي طبيعته و صفاته.

 Events :-

وتقوم بربط أحداث التطبيق بأعمال من خلال ما يدعي بمعالجات الأحداث .

بقي جزء أخير وهو محدد الكائنات ( OBJECT SELECTOR ) وهو عبارة عن (DROP DOWN LIST ) يظهر فيها اسم ونوع كل عنصر ويستخدم للتنقل بين العناصر( أي لانتقاء إحداها ) .

4. محرر الشفرة :- ( CODE EDITOR )

تملك دلفي محرر نصوص ضمن بيئتها لكتابة تعليمات البرامج و يتمتع بالكثير من المميزات القوية والمفيدة .

8.jpg?curmbox=F000000001&a=87332c23696b7e3e07b82f8180bc3a5a&msg=MSG1044441283.19&start=1013522&len=490810&mimepart=9&disk=64.4.16.68_d122&login=heyam2001&domain=hotmail.com&hm___sig=754a91e801c2cd036a

يستعمل Delphi أجزاء مختلفة ضمن الكائن معرفة في أقسام ذات حماية مختلفة.لذلك يمكن للمتغيرات ,الإجراءات والمهمات أن يكون لها نوعين من حق الوصول:

Private: يمكن الوصول الى الأشياء في هذه الفقرة من الإجراءات والمهمات و المتغيرات المعرفة داخل الصنف ومن الإجراءات ضمن ذات الوحدة البرمجية. أي أنها الإجراءات و المهمات و المتغيرات الأكثر حماية.

Public: كل الإجراءات والمهمات و المتغيرات لها حق الوصول. أي أنها الإجراءات و المهمات و المتغيرات الأقل حماية.

5. شريط السرعة :- ( SPEED BAR )

يتألف هذا الشريط من عدد من الأزرار مهمتها اختصار أعمال معينة تتكرر دائما.

العناصر التي لا تظهر أثناء تشغيل دلفي :-

هذه العناصر من مكونات واجهة دلفي إلا أنها لا تظهر أثناء تشغيل دلفي, ولكن ينبغي طلب إظهارها من قوائم بيئة دلفي .

9.jpg?curmbox=F000000001&a=87332c23696b7e3e07b82f8180bc3a5a&msg=MSG1044441283.19&start=1013522&len=490810&mimepart=10&disk=64.4.16.68_d122&login=heyam2001&domain=hotmail.com&hm___sig=754a91e801c2cd034

i.مدير المشاريع :- ( PROJECT MANAGER )

حيث يقوم بعرض لائحة بالملفات التي يتكون منها التطبيق والتنقل بين هذه الملفات .

10.jpg?curmbox=F000000001&a=87332c23696b7e3e07b82f8180bc3a5a&msg=MSG1044441632.111&start=1504332&len=126027&mimepart=3&disk=64.4.16.68_d122&login=heyam2001&domain=hotmail.com&hm___sig=77fd357b01c2cd03

11.jpg?curmbox=F000000001&a=87332c23696b7e3e07b82f8180bc3a5a&msg=MSG1044441632.111&start=1504332&len=126027&mimepart=4&disk=64.4.16.68_d122&login=heyam2001&domain=hotmail.com&hm___sig=77ff97d601c2cd03

ii.مصمم القوائم :- ( MENU DESIGNER )

تنحصر مهمة مصمم القوائم في إعطائنا طريقة سهلة ومبسطة لإنشاء القوائم إضافتها إلى ( FORM ).

12.jpg?curmbox=F000000001&a=87332c23696b7e3e07b82f8180bc3a5a&msg=MSG1044441632.111&start=1504332&len=126027&mimepart=5&disk=64.4.16.68_d122&login=heyam2001&domain=hotmail.com&hm___sig=77ff97d601c2cd03

13.jpg?curmbox=F000000001&a=87332c23696b7e3e07b82f8180bc3a5a&msg=MSG1044441632.111&start=1504332&len=126027&mimepart=6&disk=64.4.16.68_d122&login=heyam2001&domain=hotmail.com&hm___sig=77ff97d601c2cd03

iii.المنقح المتكامل :- ( INTEGRATED DEBUGGER )

ويستخدم لتنقيح البرامج ضمن بيئة دلفي ولديه العديد من المميزات الممتازة بما في ذلك التدقيق اللغوي لعبارات البرنامج والمراقبة لمتحولاته, ووضع نقاط توقف فيها.

iv.محرر الصور:-( IMAGE EDITOR)

ويستخدم لمساعدتنا بأدوات تصميميه في رسم وتحرير الصور و الأيقونات المشيرات التي ستخدم ضمن التطبيق .

ملاحظات مهمة عن دلفي:-

بناء أي تطبيق في الدلفي تتم وفق المراحل التالية

*. إنشاء المشروع.

*.تصميم الشكل .

*.معالجة الأحداث ثم تنفيذ البرنامج.

و السلام عليكم و رحمة الله و بركاته

#2

ماشاء الله عليك

الصور لم تظهر

ياليت انك تستمر

المشكلة ان الأخوان جزاهم الله خير اذا بدأ الواحد في دورة طبعا كثر خيرة هو متفضل في ذلك و ندعو له طبعا لأنه علمنا لكن المشكلة في نصف الطريق يوقف

أرجوا أن تستمر و تركز على الأمثله فهي التي تفيد و تثبت المعلومة

كثر خيرك و بارك فيك

#3

الله يعطيك العافية على الشرح المفصل والمميز وياريت تستمر

#4

شكرا وأرجو الإستمرار

#5

يعطيك العافية والله لا يحرمنا منك ولا ومن امثالك

الف شكر لك اخت فرح ....(f)(f)(f)

رجاء اختي فرح حاولي اصلاح مشكلة الصور .....:rolleyes:

تحيااااااااااتي

اخـــــوك

delphi

#6

السلام عليكم و رحمة الله و بركاته

:o:mad:

اعتذر بالنسبة للصور رغم اني جربتها و اعتقدت انها نفعت , راح احاول مرة ثانية و الى ان تنجح المحاولة بارفق الملف و الله يستر و يمشي الحال معي ما يعملي مثل الصور .

طبعا هالمرة النتيحة اسرع و ما رضي لان حجم الملف كبير رغم اني قمت بضغطه .

راح احاول تقسيمه

ارجو انه تصبروا عليا شوية

و ساعمل بنصائحكم ان شاء الله

#7

شكــــرا لمحاولتك.......وأستمر..............(f)(f)

#8

استمر بارك الله فيك

لكن عندي اقتراح صغير

وهو ألا تعطي المسميات أسماء عربية

وأسف إذا أزعجتك(f)

#9

السلام عليكم و رحمة الله و بركاته

ساعمل بنصيحتك اخ reda , و ساحاول الان وضع الدرس الثاني و ارجو هذه المرة ان انجح في اضافة الصور

الدرس الثاني

البداء في عمل مشروع جديد

ساقوم في هذا الدرس بشرح النموذج و طريقة ربط اكثر من نموذج .

فالنبدأ

للبدأ في مشروع جديد , نختار File-New application

1.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=2&filename=1.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

2.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=3&filename=2.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

تظهر لدينا الشاشة الرئيسية , كما في الشكل السابق , و كما عرفنا ان لكل مكون خواص و هي امكانية محاكاة الكائن و تقبل ادخالات المستخدم كتغير لون الخلفية يمكن للمستخدم إدخال اكثر من قيمة للون و سنستعرض بعض هذه الخواص و قيمها .

1- مثل تغيير لون الشاشة ففي البداية عند تنفيذ البرنامج و ذلك بالضغط على F9 او اختيارها من شريط الادوات

3.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=4&filename=3.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

تظهر الشاشة بهذا اللون و الخاصية تكون كما بالشكل التالي

4.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=5&filename=4.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

اما عند تغير هذه الخاصية في مرحلة التصميم يتغير لون الشاشة ايضا و يظهر بنفس اللون الجديد الذي تم اختياره في مرحلة التنفيذ ايضاً , كما بالشكل التالي

5.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=6&filename=5.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

2- تغيير شكل المؤشر

6.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=7&filename=6.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

3- التحكم في الخط

7.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=8&filename=7.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

شاشة الFont

8.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=9&filename=8.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

4- التحكم في ارتفاع الشاشة , و تغيير الايقونة لها , كما يلي

9.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=10&filename=9.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

و بالضغط على زر ok نلاحظ تغيير الايقونة التي كانت موجودة في الشاشة , كما يلي

10.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=11&filename=10.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

في حالة الرغبة في اعادة الايقونة الاصلية نذهب لنفس الخاصية Icon و لكن بدل الضغط على زر lode نضغط على زر Clear .

5- لتغيير اتجاه الخط من اليسار الى اليمين و العكس نستخدم الخاصية

11.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=12&filename=11.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

6- لتغيير اسم الاستمارة الظاهر نستخدم الخاصية و نقوم بكتابة الاسم الذي نريد ان يظهر .

12.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=13&filename=12.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

7-

13.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=14&filename=13.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

مثال في حالة تغيير قيمة biMaximize إلى False يصبح هذا شكل الشاشة عند التنفيذ بالتالي لا يمكن تكبير الشاشة

14.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=15&filename=14.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

جرب بنفسك ان تغير باقي القيم لتعرف النتيجة عند التنفيذ .

8- الخاصية Borderstyle تسمح لك بالتحكم في اعطاء امكانية تغيير حجم الشاشة اثناء التشغيل او منعها , فمثلا اذا اخترنا القيمة bsSingle بدل من bsSizeable فلن يسمح لك بتغيير حجم الشاشة عند تنفيذ البرنامج

15.jpg?box=Picture%5fL&MsgId=7761_34354_22_1084_237788_0_46_435488_1079891597&bodyPart=16&filename=15.jpg&tnef=&YY=42256&order=down&sort=date&pos=0&view=a&head=b

9- للتحكم في حجم الاطار المحيط بالشاشة نغير من قيمة الخاصية

16.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=2&filename=16.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

جرب وضع قيم اخرى مثلا 10 او اي رقم اخر و لاحظ شكل الشاشة .

10- الخاصية Enable و التي تاخذ احد القيمتين اما True او False , في حالة انها true فهذا يعني ان المكون يشتغل بمعنى ان الشاشة تشتغل , و في حالة عملنا false فان المكون يتوقف عن العمل اي الشاشة لا تعمل .

17.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=3&filename=17.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

لفهم المقصود من الكلام السابق قم بترك القيمة True و نفذ البرنامج ثم قم بتصغير و تكبير الشاشة ثم قم باغلاقها و لاحظ انك تستطيع عمل هذا .

الان قم بتغيير هذه الخاصية إلى False ثم نفذ البرنامج و حاول تكبير او تصغير او اغلاق الشاشة , ستلاحظ انك لا تستطيع هذا و لايقاف البرنامج تستطيع فعل هذا من الدلفي نفسها باختيار Program Reset من Run او الضغط على Ctr+F2

18.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=4&filename=18.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

11- لتغيير اسم الشاشة نغير في الخاصية Name حيث ان هذا الاسم هو الاسم الذي سنتعامل معه اثنا البرمجة و كتابة الشفرة , بينما الخاصية caption فيقصد بها هو الاسم الذي سيظهر في مرحلة التنفيذ , و يمكن ان يختلف الاسمين او يكونا متساويين و هذا يرجع الى المبرمج نفسه .

19.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=5&filename=19.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

12- للتحكم في عرض الشاشة نغير من قيمة الخاصية width , و الخاصية windowstate نستطيع من خلالها التحكم في الحجم الابتدائي للشاشة فلو اخترنا القمية wsmaximized فسنلاحظ عند تنفيذ البرنامج ان الشاشة ظهرت بحجم كبير , جرب تغيير باقي القيم و ستلاحظ الفرق عند التنفيذ .

20.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=6&filename=20.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

-بكل تأكد لم تكتمل خواص الشاشة الا انني ساحاول شرح الباقي عند الحاجة اليه خلال الدروس القادمة ان شاء الله .

-كما انه لكل مكون احداث سنتحدث عنها اثناء استعمالها .

-نبدأ الان في البرنامج حيث يقوم هذا البرنامج بفتح شاشة من شاشة اخرى .

مثال : ان الشاشة الرئيسية تفتح الشاشة الثانية و الشاشة الثالثة .

اي اننا بحاجة الى 3 شاشات و سنقوم باستخدام ازرار لكتابة كود اظهار الشاشات .

و المطلوب تنفيذه هو :

- الشاشة الرئيسية فيها زرين الاول يفتح الشاشة الثانية و الثاني يفتح الشاشة الثالثة .

-الشاشة الرئيسية لا يسمح بتغيير حجمها في مرحلة التنفيذ .

-عند فتح الشاشة الثانية لا يمكن الرجوع للشاشة الرئيسية الا بعد اغلاقها .

نبدأ الان :

بعد ان اخترنا New Application , تظهر لدينا الشاشة الاولى .

نقوم بتغيير اسمها الى Mainform لنستخدمه في البرمجة , اي ان الخاصية name نكتب فيها الاسم الجديد

21.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=7&filename=21.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

و نغير اسمها الظاهر الى الشاشة الرئيسية , اي الخاصية Caption

22.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=8&filename=22.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

نستطيع فعل هذا باستخدام الكود اي في مرحلة التنفيذ بدل مرحل التصميم , نذهب الى الاحداث و نعمل نقر مزدوج على الحدث On Create اي عند تكوين الشاشة فيفتح لك مساحة لكتابة الكود ( اي كانه يسالك ماذا يفعل عند تنفيذه لهذا الحدث ) .

23.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=9&filename=23.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

و لاننا نحتاج الى الوصول للخاصية caption فلابد ان نحدد لاي مكون لاننا كما سنرى لاحقا ان هناك عدة خواص هي نفسها لمكونات مختلفة , لذلك عند كتابة الكود نكتب اسم المكون (name و ليس caption"ولو جربت caption حيطلع error فما تستغرب") ثم نعمل نقطة فستظهر لنا قائمة بخواص و مجموعة من الدوال التي يحتوي عليها هذا المكون (و التي تسمى Method "الطريقة" و هي تنفيذ فعل موجه الى الكائن ليس للمستخدم حق تعديله "سنتعرف عليها من خلال الامثلة " ) اي ان لكل مكون ثلاث اشياء هي الخواص و الطرق و الاحداث .

و من هذه القائمة نختار ما نريد و هنا نختار الخاصية caption

24.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=10&filename=24.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

نضغط على enter ثم نكتب يساوي و الاسم الذي نريده , و لان هذه الخاصية تاخذ قيمة سلسة فنكتب القيمة الجديدة بين تنصيص , بينما لو اردنا تغيير ارتفاع الشاشة مثلا نكتب رقم .

و الكود هو

procedure TMainform.FormCreate(Sender: TObject);

begin

mainform.Caption :=’الشاشة الرئيسية’;

mainform.Height := 500;

end;

* ننفذ الان الطلب الاول وهو - الشاشة الرئيسية فيها زرين الاول يفتح الشاشة الثانية و الثاني يفتح الشاشة الثالثة .

و لكن قبل هذا لازم نضيف شاشتين وذلك باختيار newform من file فيضيف form2ثم نكرر نفس الشئ ليضيف form3 و هكذا كلما احتجنا الى شاشة جديدة .

25.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=11&filename=25.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

بهذه الخطوة اصبح لدينا 3 شاشات .

نضع الان في الشاشة الرئيسية زرين , نقوم باخذ الزر من شريط الادوات نختاره بالضغط عليه

26.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=12&filename=26.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

ثم نضغط على الشاشة المراد وضعه فيها فيظهر فوقها

27.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=13&filename=27.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

نضيف زر ثاني بنفس الطريقة .

نغير اسم الزر الى (فتح الشاشة الثانية) و الزر الثاني (فتح الشاشة الثالثة) , و كما نلاحظ يظهر للزر ايضا خواص و احداث لتغيير الاسم الظاهر للزر نغير قيمة الخاصية caption الخاصة بالزر .

28.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=14&filename=28.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

نذهب للاحداث الخاصة بالزر و نعمل نقر مزدوج على الخاصية onclick

29.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=15&filename=29.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

و نكتب الكود الخاص باظهار الشاشة الثانية , و ذلك بكتابة اسمها ثم اختيار من القائمة show .

30.jpg?box=Picture%5fL&MsgId=9968_273228_283_1089_121767_0_48_198116_4035859551&bodyPart=16&filename=30.jpg&tnef=&YY=20079&order=down&sort=date&pos=0&view=a&head=b

نلاحظ عدم ظهور قائمة او اي شئ و ذلك لانه رغم وجود هذه الشاشات في نفس المشروع الا انه علينا ربط الشاشات التي نريدها ببعض و ذلك بالطريقة التالية

31.jpg?box=Picture%5fL&MsgId=464_396086_545_1088_117029_0_50_174904_281965519&bodyPart=2&filename=31.jpg&tnef=&YY=27406&order=down&sort=date&pos=0&view=a&head=b

حيث unit2 هي المساحة الخاصة بكتابة كود الشاشة الثانية .

نلاحظ في unit1 اضافة سطر بعد implementation

32.jpg?box=Picture%5fL&MsgId=464_396086_545_1088_117029_0_50_174904_281965519&bodyPart=3&filename=32.jpg&tnef=&YY=27406&order=down&sort=date&pos=0&view=a&head=b

الان عند كتابة اسم form2. ستظهر لنا قائمة الخواص

33.jpg?box=Picture%5fL&MsgId=464_396086_545_1088_117029_0_50_174904_281965519&bodyPart=4&filename=33.jpg&tnef=&YY=27406&order=down&sort=date&pos=0&view=a&head=b

نكتب الان الجملة form2.show; , نفذ البرنامج و جرب .

نكرر نفس الخطوات السابقة للشاشة الثالثة مع تغيير خاصية caption للشاشتين .

* المطلوب الثاني - الشاشة الرئيسية يسمح بتغيير الحجم في مرحلة التنفيذ .

و يتم هذا باختيار القيمة bsSingle للخاصية BorderStyle ,, كما نستطيع فعل ذلك في مرحلة التنفيذ و ذلك بكتابة الكود التالي في الحدث oncreat لهذه الشاشة .

mainform.BorderStyle := bsSingle ;

* المطلوب الثالث - عند فتح الشاشة الثانية لا يمكن الرجوع للشاشة الرئيسية الا بعد اغلاقها .

يتم هذا بكتابة هذا الكود Form2. ShowModal بدل Form2.Show .

و نلاحظ انه عند فتح الشاشة الثالثة يمكن الانتقال الى الرئيسية دون الحاجة لاغلاقها , و ذلك لاننا استخدمنا show وليس showmodal .

-يمكننا ان نضيف زر في الشاشة الثانية و الثالثة و نغير الخاصية caption إلى "أغلاق" , فنستخدم هذا الزر للاغلاق وذلك بكتابة الكود التالي في الحدث onclick

37.jpg?box=Picture%5fL&MsgId=464_396086_545_1088_117029_0_50_174904_281965519&bodyPart=8&filename=37.jpg&tnef=&YY=27406&order=down&sort=date&pos=0&view=a&head=b

نكرر نفس الشئ مع الشاشة الثالثة .

ملاحظة :

-للانتقال بين الشاشة و الوحدة الخاصة بها نضغط على مفتاحF12 .

38.jpg?box=Picture%5fL&MsgId=464_396086_545_1088_117029_0_50_174904_281965519&bodyPart=9&filename=38.jpg&tnef=&YY=27406&order=down&sort=date&pos=0&view=a&head=b

- يتم اختيار احد الشاشات الموجدوة في المشروع من :

34.jpg?box=Picture%5fL&MsgId=464_396086_545_1088_117029_0_50_174904_281965519&bodyPart=5&filename=34.jpg&tnef=&YY=27406&order=down&sort=date&pos=0&view=a&head=b

- و يتم اختيار احد الوحدات من :

35.jpg?box=Picture%5fL&MsgId=464_396086_545_1088_117029_0_50_174904_281965519&bodyPart=6&filename=35.jpg&tnef=&YY=27406&order=down&sort=date&pos=0&view=a&head=b

- لتخزين البرنامج نختار

36.jpg?box=Picture%5fL&MsgId=464_396086_545_1088_117029_0_50_174904_281965519&bodyPart=7&filename=36.jpg&tnef=&YY=27406&order=down&sort=date&pos=0&view=a&head=b

نحدد له المسار الذي نريد ان نخزن فيه , و نستطيع تغيير اسماء الوحدات اثناء التخزين.

-و لفتح هذا المشروع نختار open Projectمن file أو Reopen و نحدد البرنامج الذي نريد اعادة فتحه في حالة انه موجود في هذه القائمة .

كما احب لفت الانتباه الى :

1-تكرار نفس اسماء الخواص و الطرق في العديد من الكوائن المختلفة مثل form ,mainmenu و غيرها .

2-لكتابة الكود لازم نكتب اسم المكون ثم نقطة ثم نختار الخاصية مثل form1.caption .

3-جميع الخواص و الطرق يمكن الوصول اليها برمجيا اي في مرحلة التنفيذ للتحكم في قيمها .

الخلاصة :

من خلال هذا البرنامج تعرفنا على بعض خواص الشاشة و طريقة ربط اكثر من شاشة مع بعض و كيف كل منهم ممكن تفتح الاخرى .

#10

حسب ما بشوف ان الصور ظهرت بس على الله ما ترجع تختفي ثاني

#11

:mad:الصور رجعت تختفي

تجربة جديدة

logo.gif

السؤال الذي يطرح نفسه ما السبب في اختفاء الصور رغم ظهورها فور اضافتها بشكل عادي

#12

محاولة جديدة و ان شاء الله تكون ناجحة

بسم الله الرحمن الرحيم

و السلام عليكم و رحمة الله و بركاته

ساحاول البدء بدورة دلفي و ذلك املاً مني في مساعدة الغير مثلما وجدت من ساعدني كثيرا في هذا المنتدى الرائع ,, و اتقبل جميع الاراء و التعليقات و ارجو ان يسمح وقتي باكمال هذه الدورة على اكمل وجه .

لن اتحدث عن طريقة كتابة الاوامر في دلفي و انواع المتغيرات لاني اعتقد ان ما قدمه الاخ مادي , و الاخ sumكان واضحا و في حالة غموض اي شئ فساقوم بشرح ما اعرفه ان شاء الله .

الدرس الاول و يشمل :

مقدمة عن الدلفي .

الملفات المكونة لدلفي .

الدخول إلى البرنامج .

بيئة دلفي .

مقدمة عن لغة دلفي :-

بدأت قصة دلفي من أوائل التسعينات عندما شعرت شركة بورلاند عن طريق اتصال مهندسيها التقنين مع جمهور المبرمجين بأن لغة بورلاند باسكال والتي تعمل تحت بيئة ويندوز صعبة بعض الشيء .

وكانت الطلبات تنهال علي الشركة مطالبة بتبسيط الموضوع قدر الإمكان .هذا من جانب,ومن جانب أخر أخذت لغات البرمجة المرئية "فيجوال" تبدا بالانتشار , وبدا

بأنها ستغدو لغات شعبية في المدى القريب .لذلك سارعت شركة بورلاند إلى تبني ميزات البرمجة المرئية واستفادة كثيرا من لغة بورلاند باسكال التي قد طورت بشكل صحيح لغدو لغة كائنية التوجه ( OOP )بشكل كامل .

ففي نهاية عام 1993 ولدت النسخة التجريبية لهذه اللغة .وكان لابد من تسميتها فقد كان الاسم المعتمد بين المطورين هو( VISUAL PASCAL ) إلا أنهم استقروا أخيرا علي الاسم ( DELPHI) وقد أخذوا هذا الاسم من أسم معبد يوناني قديم , ويعود هذه الكلمة إلى اللغة العربية الفينيقية القديمة ,وهو يعني بالعرافة.

بماذا تتميز دلفي ؟

تعد دلفي لغة التطوير السريع للتطبيقات RAD (rapid application development ) وهي أداة تطورية قوية تجمع بين ميزات أنظمة التطوير المرئية وبين اللغة كائنية التوجه ( غرضية التوجه ) تعتبر لغة باسكال القلب النابض لدلفي في حين أن دلفي تشكل تطورا طبيعيا لمترجم ( COMPILER ).

لغة باسكال الذي طورته شركة فرانك بورلاند والذي كتبه لها العالم ( ANDERS HEJLBERG ) قبل عشر سنوات .

ومع وجود عدد من لغات التطوير المرئية إلا أن دلفي تتميز بعدة أمور هي :-

 تبسيطها لمفاهيم البرمجة تحت النظام ويندوز وتغليفها لتوابعه المسماة

( API) .

 بناؤها التطبيقات وفق مفهوم الشكل ( FORM) ولكن ضمن قالب كائني التوجه .

 استخدامها تقنية العناصر ( COMPONENT ) الجاهزة .

 مترجمها السريع الذي يعد أسرع بعشر مرات من باقي اللغات .

 بناؤها لملف تنفيذي لا يحتاج إلى أية ملفات ديناميكية أو أي ملفات أخري أثناء عملها.

 دعمها اللامحدود لقواعد البيانات, و توفير كل إمكانيات اللغة لتطوير قواعد البيانات.

محتويات برنامج الدلفي : كما ذكر سابقا فان البرنامج في الدلفي يتكون من برنامج رئيسي واحد (program) , و مجموعة وحدات اخرىunit (عددها غير محدود ) .

الملفات المكونة لدلفي :-

يتألف أي مشروع في دلفي من عدد من الملفات وكل واحد من هذه الملفات له خصوصيته وأهميته وأهم هذه الملفات هي :-

*.ملف المشروعDPR)).

*.ملف الوحدة (PAS).

*.ملف الشكلDFM)).

1- ملف المشروع DPR :-

مهمة هذا الملف تسجيل المعلومات عن المشروع وعناصره.فعند بدء مشروع جديد تنشئ دلفي هذا الملف ويجري تعديله أثناء مسيرة تطوير المشروع.

2- ملف الوحدةPAS :-

ويقوم بخزن ملفات الوحدات الحاوية علي التعليمات بلغة باسكال الكائناتية (OBJECT ASCPAL ) في ملفات امتدادها PAS) ) .

3- ملف الشكل ( DFM ) :-

حيث يقوم بتسجيل المعلومات الخاصة عن الشكل وعناصره من حيث شكل FORM ومواقع العناصر وأحجامها.

الدخول إلى البرنامج :-

L1_1.jpg

وهذا هو الشكل الابتدائي للبرنامج :-

L1_2.jpg

في الشكل السابق نرى شاشة بيئة التطوير وهي تحتوى على العديد من العناصر المهمة التي سنتعرف عليها .

بيئة دلفي :-

كما نلاحظ في الشكل السابق أن بيئة دلفي تنقسم إلي قسمين هما :-

 العناصر التي تظهر أثناء تشغيل دلفي :- وتتكون من

1. الشكل :- FORM ))

النموذج وهو عبارة عن نافذة تظهر فيها العناصر المكونة لواجهة المستخدم ,مثل الأزرار أو اللافتات .............الخ , و يتكون كل برنامج من نموذج او عدة نماذج (form) فهي مساحة العمل الاساسية , اي انها ستكون الخلفية لبرامجك و هي التي ستحمل ادوات التحكم (سنوضحها لاحقاً) التي سيتعامل معها البرنامج .

بمعني أخر تركب عليه جميع ( OBJECT ) المطلوب تنفيذها .

L1_3.jpg

2. لوحة العناصر :- ( COMPONENT PALETTE )

L1_4.jpg

تستخدم العناصر كصناديق بناء للتطبيقات وتنقسم إلى قسمين هما :-

 عناصر مرئية مثل صناديق التحرير و الأزرار .

L1_4.jpg

 عناصر غير مرئية مثل صناديق الحوار الاعتيادية مؤقتة النظام ( اي انها لا تظهر في مرحلة التنفيذ رغم وجودها و استخدامها في مرحلة التصميم ).

L1_5.jpg

ولقد نظمت عناصر دلفي ضمن صفحات حسب وظائفها فمثلا و ضعت العناصر التي تمثل صناديق الحوار الرئيسية في ( DIALOGS) و وضعت العناصر التي تتحكم في البيانات في صفحة مستقلة سميت( DATA CONTROL ) وهكذا .

3. ضابط الكائنات :- ( OBJECT INSPECTOR )

وتمكننا من تحديد مواصفات وسلوك العناصر الخاصة بالتطبيق إذ يملك كل عنصر مجموعة من الخواص والأحداث. ويتكون ضابط الكائنات من صفحتين :-

L1_6.jpg

 Properties:-

وتستخدم لاعطاء قيم لخواص العنصر المحدد بمعني آخر خصائص ال( FORM ) فعلي سبيل المثال إي شخص ما هي طبيعته و صفاته.

 Events :-

وتقوم بربط أحداث التطبيق بأعمال من خلال ما يدعي بمعالجات الأحداث .

بقي جزء أخير وهو محدد الكائنات ( OBJECT SELECTOR ) وهو عبارة عن (DROP DOWN LIST ) يظهر فيها اسم ونوع كل عنصر ويستخدم للتنقل بين العناصر( أي لانتقاء إحداها ) .

4. محرر الشفرة :- ( CODE EDITOR )

تملك دلفي محرر نصوص ضمن بيئتها لكتابة تعليمات البرامج و يتمتع بالكثير من المميزات القوية والمفيدة .

L1_7.jpg

يستعمل Delphi أجزاء مختلفة ضمن الكائن معرفة في أقسام ذات حماية مختلفة.لذلك يمكن للمتغيرات ,الإجراءات والمهمات أن يكون لها نوعين من حق الوصول:

Private: يمكن الوصول الى الأشياء في هذه الفقرة من الإجراءات والمهمات المعرفة داخل الصنف ومن الإجراءات ضمن ذات الوحدة البرمجية. أي أنها الإجراءات و المهمات الأكثر حماية.

Public: كل الإجراءات والمهمات لها حق الوصول. أي أنها الإجراءات و المهمات الأقل حماية.

5. شريط السرعة :- ( SPEED BAR )

يتألف هذا الشريط من عدد من الأزرار مهمتها اختصار أعمال معينة تتكرر دائما.

 العناصر التي لا تظهر أثناء تشغيل دلفي :-

هذه العناصر من مكونات واجهة دلفي إلا أنها لا تظهر أثناء تشغيل دلفي, ولكن ينبغي طلب إظهارها من قوائم بيئة دلفي .

L1_8.jpg

i.مدير المشاريع :- ( PROJECT MANAGER )

حيث يقوم بعرض لائحة بالملفات التي يتكون منها التطبيق والتنقل بين هذه الملفات .

L1_9.jpg

L1_10.jpg

ii.مصمم القوائم :- ( MENU DESIGNER )

تنحصر مهمة مصمم القوائم في إعطائنا طريقة سهلة ومبسطة لإنشاء القوائم إضافتها إلى ( FORM ).

L1_11.jpg

L1_12.jpg

iii.المنقح المتكامل :- ( INTEGRATED DEBUGGER )

ويستخدم لتنقيح البرامج ضمن بيئة دلفي ولديه العديد من المميزات الممتازة بما في ذلك التدقيق اللغوي لعبارات البرنامج والمراقبة لمتحولاته, ووضع نقاط توقف فيها.

iv.محرر الصور:-( IMAGE EDITOR)

ويستخدم لمساعدتنا بأدوات تصميميه في رسم وتحرير الصور و الأيقونات المشيرات التي ستخدم ضمن التطبيق .

ملاحظات مهمة عن دلفي:-

 بناء أي تطبيق في الدلفي تتم وفق المراحل التالية

*. إنشاء المشروع.

*.تصميم الشكل .

*.معالجة الأحداث ثم تنفيذ البرنامج.

#13

الدرس الثاني

البداء في عمل مشروع جديد

ساقوم في هذا الدرس بشرح النموذج و طريقة ربط اكثر من نموذج .

فالنبدأ

للبدأ في مشروع جديد , نختار File-New application

1.jpg

2.jpg

تظهر لدينا الشاشة الرئيسية , كما في الشكل السابق , و كما عرفنا ان لكل مكون خواص و هي امكانية محاكاة الكائن و تقبل ادخالات المستخدم كتغير لون الخلفية يمكن للمستخدم إدخال اكثر من قيمة للون و سنستعرض بعض هذه الخواص و قيمها .

1- مثل تغيير لون الشاشة ففي البداية عند تنفيذ البرنامج و ذلك بالضغط على F9 او اختيارها من شريط الادوات

3.jpg

تظهر الشاشة بهذا اللون و الخاصية تكون كما بالشكل التالي

4.jpg

اما عند تغير هذه الخاصية في مرحلة التصميم يتغير لون الشاشة ايضا و يظهر بنفس اللون الجديد الذي تم اختياره في مرحلة التنفيذ ايضاً , كما بالشكل التالي

5.jpg

2- تغيير شكل المؤشر

6.jpg

3- التحكم في الخط

7.jpg

شاشة الFont

8.jpg

4- التحكم في ارتفاع الشاشة , و تغيير الايقونة لها , كما يلي

9.jpg

و بالضغط على زر ok نلاحظ تغيير الايقونة التي كانت موجودة في الشاشة , كما يلي

10.jpg

في حالة الرغبة في اعادة الايقونة الاصلية نذهب لنفس الخاصية Icon و لكن بدل الضغط على زر lode نضغط على زر Clear .

5- لتغيير اتجاه الخط من اليسار الى اليمين و العكس نستخدم الخاصية

11.jpg

6- لتغيير اسم الاستمارة الظاهر نستخدم الخاصية و نقوم بكتابة الاسم الذي نريد ان يظهر .

12.jpg

7-

13.jpg

مثال في حالة تغيير قيمة biMaximize إلى False يصبح هذا شكل الشاشة عند التنفيذ بالتالي لا يمكن تكبير الشاشة

14.jpg

جرب بنفسك ان تغير باقي القيم لتعرف النتيجة عند التنفيذ .

8- الخاصية Borderstyle تسمح لك بالتحكم في اعطاء امكانية تغيير حجم الشاشة اثناء التشغيل او منعها , فمثلا اذا اخترنا القيمة bsSingle بدل من bsSizeable فلن يسمح لك بتغيير حجم الشاشة عند تنفيذ البرنامج

15.jpg

9- للتحكم في حجم الاطار المحيط بالشاشة نغير من قيمة الخاصية

16.jpg

جرب وضع قيم اخرى مثلا 10 او اي رقم اخر و لاحظ شكل الشاشة .

10- الخاصية Enable و التي تاخذ احد القيمتين اما True او False , في حالة انها true فهذا يعني ان المكون يشتغل بمعنى ان الشاشة تشتغل , و في حالة عملنا false فان المكون يتوقف عن العمل اي الشاشة لا تعمل .

17.jpg

لفهم المقصود من الكلام السابق قم بترك القيمة True و نفذ البرنامج ثم قم بتصغير و تكبير الشاشة ثم قم باغلاقها و لاحظ انك تستطيع عمل هذا .

الان قم بتغيير هذه الخاصية إلى False ثم نفذ البرنامج و حاول تكبير او تصغير او اغلاق الشاشة , ستلاحظ انك لا تستطيع هذا و لايقاف البرنامج تستطيع فعل هذا من الدلفي نفسها باختيار Program Reset من Run او الضغط على Ctr+F2

18.jpg

11- لتغيير اسم الشاشة نغير في الخاصية Name حيث ان هذا الاسم هو الاسم الذي سنتعامل معه اثنا البرمجة و كتابة الشفرة , بينما الخاصية caption فيقصد بها هو الاسم الذي سيظهر في مرحلة التنفيذ , و يمكن ان يختلف الاسمين او يكونا متساويين و هذا يرجع الى البرنامج نفسه .

19.jpg

12- للتحكم في عرض الشاشة نغير من قيمة الخاصية width , و الخاصية windowstate نستطيع من خلالها التحكم في الحجم الابتدائي للشاشة فلو اخترنا القمية wsmaximized فسنلاحظ عند تنفيذ البرنامج ان الشاشة ظهرت بحجم كبير , جرب تغيير باقي القيم و ستلاحظ الفرق عند التنفيذ .

20.jpg

- بكل تأكد لم تكتمل خواص الشاشة الا انني ساحاول شرح الباقي عند الحاجة اليه خلال الدروس القادمة ان شاء الله .

- كما انه لكل مكون احداث سنتحدث عنها اثناء استعمالها .

- نبدأ الان في البرنامج حيث يقوم هذا البرنامج بفتح شاشة من شاشة اخرى .

مثال : ان الشاشة الرئيسية تفتح الشاشة الثانية و الشاشة الثالثة .

اي اننا بحاجة الى 3 شاشات و سنقوم باستخدام ازرار لكتابة كود اظهار الشاشات .

و المطلوب تنفيذه هو :

- الشاشة الرئيسية فيها زرين الاول يفتح الشاشة الثانية و الثاني يفتح الشاشة الثالثة .

- الشاشة الرئيسية لا يسمح بتغيير حجمها في مرحلة التنفيذ .

- عند فتح الشاشة الثانية لا يمكن الرجوع للشاشة الرئيسية الا بعد اغلاقها .

نبدأ الان :

بعد ان اخترنا New Application , تظهر لدينا الشاشة الاولى .

نقوم بتغيير اسمها الى Mainform لنستخدمه في البرمجة , اي ان الخاصية name نكتب فيها الاسم الجديد

21.jpg

و نغير اسمها الظاهر الى الشاشة الرئيسية , اي الخاصية Caption

22.jpg

نستطيع فعل هذا باستخدام الكود اي في مرحلة التنفيذ بدل مرحل التصميم , نذهب الى الاحداث و نعمل نقر مزدوج على الحدث On Create اي عند تكوين الشاشة فيفتح لك مساحة لكتابة الكود ( اي كانه يسالك ماذا يفعل عند تنفيذه لهذا الحدث ) .

#14

الدرس الثاني

البداء في عمل مشروع جديد

ساقوم في هذا الدرس بشرح النموذج و طريقة ربط اكثر من نموذج .

فالنبدأ

للبدأ في مشروع جديد , نختار File-New application

1.jpg

2.jpg

تظهر لدينا الشاشة الرئيسية , كما في الشكل السابق , و كما عرفنا ان لكل مكون خواص و هي امكانية محاكاة الكائن و تقبل ادخالات المستخدم كتغير لون الخلفية يمكن للمستخدم إدخال اكثر من قيمة للون و سنستعرض بعض هذه الخواص و قيمها .

1- مثل تغيير لون الشاشة ففي البداية عند تنفيذ البرنامج و ذلك بالضغط على F9 او اختيارها من شريط الادوات

3.jpg

تظهر الشاشة بهذا اللون و الخاصية تكون كما بالشكل التالي

4.jpg

اما عند تغير هذه الخاصية في مرحلة التصميم يتغير لون الشاشة ايضا و يظهر بنفس اللون الجديد الذي تم اختياره في مرحلة التنفيذ ايضاً , كما بالشكل التالي

5.jpg

2- تغيير شكل المؤشر

6.jpg

3- التحكم في الخط

7.jpg

شاشة الFont

8.jpg

4- التحكم في ارتفاع الشاشة , و تغيير الايقونة لها , كما يلي

9.jpg

و بالضغط على زر ok نلاحظ تغيير الايقونة التي كانت موجودة في الشاشة , كما يلي

10.jpg

في حالة الرغبة في اعادة الايقونة الاصلية نذهب لنفس الخاصية Icon و لكن بدل الضغط على زر lode نضغط على زر Clear .

5- لتغيير اتجاه الخط من اليسار الى اليمين و العكس نستخدم الخاصية

11.jpg

6- لتغيير اسم الاستمارة الظاهر نستخدم الخاصية و نقوم بكتابة الاسم الذي نريد ان يظهر .

12.jpg

7-

13.jpg

مثال في حالة تغيير قيمة biMaximize إلى False يصبح هذا شكل الشاشة عند التنفيذ بالتالي لا يمكن تكبير الشاشة

14.jpg

جرب بنفسك ان تغير باقي القيم لتعرف النتيجة عند التنفيذ .

8- الخاصية Borderstyle تسمح لك بالتحكم في اعطاء امكانية تغيير حجم الشاشة اثناء التشغيل او منعها , فمثلا اذا اخترنا القيمة bsSingle بدل من bsSizeable فلن يسمح لك بتغيير حجم الشاشة عند تنفيذ البرنامج

15.jpg

9- للتحكم في حجم الاطار المحيط بالشاشة نغير من قيمة الخاصية

16.jpg

جرب وضع قيم اخرى مثلا 10 او اي رقم اخر و لاحظ شكل الشاشة .

10- الخاصية Enable و التي تاخذ احد القيمتين اما True او False , في حالة انها true فهذا يعني ان المكون يشتغل بمعنى ان الشاشة تشتغل , و في حالة عملنا false فان المكون يتوقف عن العمل اي الشاشة لا تعمل .

17.jpg

لفهم المقصود من الكلام السابق قم بترك القيمة True و نفذ البرنامج ثم قم بتصغير و تكبير الشاشة ثم قم باغلاقها و لاحظ انك تستطيع عمل هذا .

الان قم بتغيير هذه الخاصية إلى False ثم نفذ البرنامج و حاول تكبير او تصغير او اغلاق الشاشة , ستلاحظ انك لا تستطيع هذا و لايقاف البرنامج تستطيع فعل هذا من الدلفي نفسها باختيار Program Reset من Run او الضغط على Ctr+F2

18.jpg

11- لتغيير اسم الشاشة نغير في الخاصية Name حيث ان هذا الاسم هو الاسم الذي سنتعامل معه اثنا البرمجة و كتابة الشفرة , بينما الخاصية caption فيقصد بها هو الاسم الذي سيظهر في مرحلة التنفيذ , و يمكن ان يختلف الاسمين او يكونا متساويين و هذا يرجع الى البرنامج نفسه .

19.jpg

12- للتحكم في عرض الشاشة نغير من قيمة الخاصية width , و الخاصية windowstate نستطيع من خلالها التحكم في الحجم الابتدائي للشاشة فلو اخترنا القمية wsmaximized فسنلاحظ عند تنفيذ البرنامج ان الشاشة ظهرت بحجم كبير , جرب تغيير باقي القيم و ستلاحظ الفرق عند التنفيذ .

20.jpg

- بكل تأكد لم تكتمل خواص الشاشة الا انني ساحاول شرح الباقي عند الحاجة اليه خلال الدروس القادمة ان شاء الله .

- كما انه لكل مكون احداث سنتحدث عنها اثناء استعمالها .

- نبدأ الان في البرنامج حيث يقوم هذا البرنامج بفتح شاشة من شاشة اخرى .

مثال : ان الشاشة الرئيسية تفتح الشاشة الثانية و الشاشة الثالثة .

اي اننا بحاجة الى 3 شاشات و سنقوم باستخدام ازرار لكتابة كود اظهار الشاشات .

و المطلوب تنفيذه هو :

- الشاشة الرئيسية فيها زرين الاول يفتح الشاشة الثانية و الثاني يفتح الشاشة الثالثة .

- الشاشة الرئيسية لا يسمح بتغيير حجمها في مرحلة التنفيذ .

- عند فتح الشاشة الثانية لا يمكن الرجوع للشاشة الرئيسية الا بعد اغلاقها .

نبدأ الان :

بعد ان اخترنا New Application , تظهر لدينا الشاشة الاولى .

نقوم بتغيير اسمها الى Mainform لنستخدمه في البرمجة , اي ان الخاصية name نكتب فيها الاسم الجديد

21.jpg

و نغير اسمها الظاهر الى الشاشة الرئيسية , اي الخاصية Caption

22.jpg

نستطيع فعل هذا باستخدام الكود اي في مرحلة التنفيذ بدل مرحل التصميم , نذهب الى الاحداث و نعمل نقر مزدوج على الحدث On Create اي عند تكوين الشاشة فيفتح لك مساحة لكتابة الكود ( اي كانه يسالك ماذا يفعل عند تنفيذه لهذا الحدث ) .

23.jpg

و لاننا نحتاج الى الوصول للخاصية caption فلابد ان نحدد لاي مكون لاننا كما سنرى لاحقا ان هناك عدة خواص هي نفسها لمكونات مختلفة , لذلك عند كتابة الكود نكتب اسم المكون (name و ليس caption"ولو جربت caption حيطلع error فما تستغرب") ثم نعمل نقطة فستظهر لنا قائمة بخواص و مجموعة من الدوال التي يحتوي عليها هذا المكون (و التي تسمى Method "الطريقة" و هي تنفيذ فعل موجه الى الكائن ليس للمستخدم حق تعديله "سنتعرف عليها من خلال الامثلة " ) اي ان لكل مكون ثلاث اشياء هي الخواص و الطرق و الاحداث .

و من هذه القائمة نختار ما نريد و هنا نختار الخاصية caption

24.jpg

نضغط على enter ثم نكتب يساوي و الاسم الذي نريده , و لان هذه الخاصية تاخذ قيمة سلسة فنكتب القيمة الجديدة بين تنصيص , بينما لو اردنا تغيير ارتفاع الشاشة مثلا نكتب رقم .

و الكود هو

procedure TMainform.FormCreate(Sender: TObject);

begin

mainform.Caption :=’الشاشة الرئيسية’;

mainform.Height := 500;

end;

* ننفذ الان الطلب الاول وهو - الشاشة الرئيسية فيها زرين الاول يفتح الشاشة الثانية و الثاني يفتح الشاشة الثالثة .

و لكن قبل هذا لازم نضيف شاشتين وذلك باختيار newform من file فيضيف form2ثم نكرر نفس الشئ ليضيف form3 و هكذا كلما احتجنا الى شاشة جديدة .

25.jpg

بهذه الخطوة اصبح لدينا 3 شاشات .

نضع الان في الشاشة الرئيسية زرين , نقوم باخذ الزر من شريط الادوات نختاره بالضغط عليه

26.jpg

ثم نضغط على الشاشة المراد وضعه فيها فيظهر فوقها

27.jpg

نضيف زر ثاني بنفس الطريقة .

نغير اسم الزر الى (فتح الشاشة الثانية) و الزر الثاني (فتح الشاشة الثالثة) , و كما نلاحظ يظهر للزر ايضا خواص و احداث لتغيير الاسم الظاهر للزر نغير قيمة الخاصية caption الخاصة بالزر .

28.jpg

نذهب للاحداث الخاصة بالزر و نعمل نقر مزدوج على الخاصية onclick

29.jpg

و نكتب الكود الخاص باظهار الشاشة الثانية , و ذلك بكتابة اسمها ثم اختيار من القائمة show .

30.jpg

نلاحظ عدم ظهور قائمة او اي شئ و ذلك لانه رغم وجود هذه الشاشات في نفس المشروع الا انه علينا ربط الشاشات التي نريدها ببعض و ذلك بالطريقة التالية

31.jpg

حيث unit2 هي المساحة الخاصة بكتابة كود الشاشة الثانية .

نلاحظ في unit1 اضافة سطر بعد implementation

32.jpg

الان عند كتابة اسم form2. ستظهر لنا قائمة الخواص

33.jpg

نكتب الان الجملة form2.show; , نفذ البرنامج و جرب .

نكرر نفس الخطوات السابقة للشاشة الثالثة مع تغيير خاصية caption للشاشتين .

* المطلوب الثاني - الشاشة الرئيسية يسمح بتغيير الحجم في مرحلة التنفيذ .

و يتم هذا باختيار القيمة bsSingle للخاصية BorderStyle ,, كما نستطيع فعل ذلك في مرحلة التنفيذ و ذلك بكتابة الكود التالي في الحدث oncreat لهذه الشاشة .

mainform.BorderStyle := bsSingle ;

* المطلوب الثالث - عند فتح الشاشة الثانية لا يمكن الرجوع للشاشة الرئيسية الا بعد اغلاقها .

يتم هذا بكتابة هذا الكود Form2. ShowModal بدل Form2.Show .

و نلاحظ انه عند فتح الشاشة الثالثة يمكن الانتقال الى الرئيسية دون الحاجة لاغلاقها , و ذلك لاننا استخدمنا show وليس showmodal .

- يمكننا ان نضيف زر في الشاشة الثانية و الثالثة و نغير الخاصية caption إلى "أغلاق" , فنستخدم هذا الزر للاغلاق وذلك بكتابة الكود التالي في الحدث onclick

37.jpg

نكرر نفس الشئ مع الشاشة الثالثة .

ملاحظة :

- للانتقال بين الشاشة و الوحدة الخاصة بها نضغط على مفتاحF12 .

38.jpg

- يتم اختيار احد الشاشات الموجدوة في المشروع من :

34.jpg

- و يتم اختيار احد الوحدات من :

35.jpg

- لتخزين البرنامج نختار

36.jpg

نحدد له المسار الذي نريد ان نخزن فيه , و نستطيع تغيير اسماء الوحدات اثناء التخزين.

- و لفتح هذا المشروع نختار open Projectمن file أو Reopen و نحدد البرنامج الذي نريد اعادة فتحه في حالة انه موجود في هذه القائمة .

كما احب لفت الانتباه الى :

1- تكرار نفس اسماء الخواص و الطرق في العديد من الكوائن المختلفة مثل form ,mainmenu و غيرها .

2- لكتابة الكود لازم نكتب اسم المكون ثم نقطة ثم نختار الخاصية مثل form1.caption .

3- جميع الخواص و الطرق يمكن الوصول اليها برمجيا اي في مرحلة التنفيذ للتحكم في قيمها .

الخلاصة :

من خلال هذا البرنامج تعرفنا على بعض خواص الشاشة و طريقة ربط اكثر من شاشة مع بعض و كيف كل منهم ممكن تفتح الاخرى .

#15

الدرس الثالث :

ساحاول من خلال هذا الدرس و الدروس القادمة ان شاء الله شرح لبعض المكونات و كيفية التعامل معها .

سنتكلم الان عن المكون MainMenu :

1.jpg

من خلال هذا المكون نستطيع عمل شريط علوي مثل هذا

2.jpg

بعد اخذ هذا المكون ووضعه على الشاشة تظهر لنا خصائصه و التي من خلالها نستطيع اضافة العناصر التي نريدها

3.jpg

1- من خاصية caption لهذا العنصر نحدد اسمه الذي سيظهر لنا في القائمة (فنكتب ملف) , و في حالة كتبنا قيل الاسم (ملف) العلامة & فهذا يمكننا من استعمال اول حرف كمفتاح اختصار مع الضغط على Alt اي كاننا قلنا ( م Alt+) .

4.jpg

بعد اضافة كلمة ملف و الضغط على مفتاح enter تفتح لنا مجال لكتابة عنصر ثاني اسفلها

5.jpg

2- نكتب في الخاصية Caption الاسم الذي نريده و ليكن ( جديد )

6.jpg

3- نستطيع اضافة صورة لهذا العنصر

7.jpg

يظهر لدينا مربع الحوار Picture Editor و كما نفعل مع الشاشة عند تغيير الايقونة الخاصة بها نفعل هنا فنضغط على زر load و نختار الصورة التي نريدها و عند تنفيذ البرنامج نرى الصورة .

4- الخاصية visible تاخذ قيمة منطقية true او false في حالة true يعني ان العنصر مرئي و في الحالة الثانية يختفي هذا العنصر .

8.jpg

5- لاضافة قائمة من العناصر لاي عنصر نقف عليه ثم نضغط Ctrl + السهم الذي يشير الى اليمين , فلو وقفنا على العنصر (جديد) وضغطنا Ctrl + السهم

9.jpg

6- لاضافة فاصل بعد اي عنصر نضع علامة – في الخاصية caption ثم نضغط مفتاح enter

10.jpg

7- للانتقال بين العناصر المتجاورة نستخدم اسهم لوحة المفاتيح

11.jpg

الان نعود لبرنامجنا السابق الذي كان في الدرس الثاني و الذي تعلمنا فيه كيفية التعامل مع الـ Form , حيث سنضيف للشاشة الرئيسية المكون MainMenu ,و نضيف فيه عناصر التي عن طريقها نفتح الشاشة الاولى و الشاشة الثانية و نغلق هذه الشاشة .

نكون عنصرين (ملف – خروج )

العنصر ملف يحتوي على عنصرين (فتح الشاشة الثانية – فتح الشاشة الثالثة )

العنصر خروج يحتوى على عنصر (اغلاق)

* يتم اضافة البرمجة بالنقر المزدوج على العنصر الذي نريد ان نضيف البرمجة له

12_1.jpg

12_2.jpg

اي يصبح شكل الـ form الرئيسية كالتالي

13.jpg

نقوم بتغير الاتجاه بدل ( من اليسار الى اليمين ) نجعله ( من اليمين الى اليسار )

14.jpg

- نقوم الان باضافة الكود نقوم بنقر مزدوج عبى العنصر فتح الشاشة الثانية و نكتب فيه نفس الكود الموجود في زر ( فتح الشاشة الثانية ) اي

- نفعل نفس الشئ مع العنصر فتح الشاشة الثالثة فنكتب فيه الكود الموجود في زر (فتح الشاشة الثالثة ) اى

- و في حدث onclick للعنصر اغلاق نكتب كود اغلاق هذه الشاشة وهو

mainform.close;

- قم بتنفيذ البرنامج ثم اغلقه و جرب في العنصر اغلاق بدل كتابة امر الاقفال

mainform.close;

اكتب

Close;

نفذ الان و لاحظ عدم ظهور رسالة خطأ و عمل هذا الامر بنفس الصورة السابقة رغم اننا ذكرنا انه من الضروري كتابة اسم المكون ثم نقطة و بعدها نصل للاي دالة او خاصية نريدها ولكننا هنا تمكن من تنفيذ الامر بدون كتابة اسم المكون .

و ذلك لانه عند تنفيذ هذا الامر يعتبر انه للـForm التي يكتب فيها الكود بشكل تلقائي طالما لم يتم تحديد مكون قبلها

15.jpg

- جرب مثلا وضع Button على الـform و اكتب فيها الامر التالي

Color := clFuchsia ;

لاحظ عند التنفيذ و الضغط على هذا الزر كيف يتغير لون الـForm .

16.jpg

كرر نفس الشئ في اي من الـForm الاخر و لاحظ ان الامر ينفذ لهذه الـForm التي يكتب فيها الامر .

جرب اضافة هذا السطر ايضا للسطر السابق

BorderIcons := BorderIcons - [biMaximize];

17.jpg

- في حالة عدم وضوح هذا النوع ارجع الى موضوع الاخ madi لفهمه افضل .

- و لمعرفة ما نوع المتغير الذي نتعامل معه او اي معلومات عن مكون معين نضغط على F1 .

و السلام عليكم و رحمة الله و بركاته

إلى اللقاء في الدرس القادم ان شاء الله

هذا الموضوع مغلق.

مواضيع مشابهة