دورة كاملة في الدلفي اعداد ORWA
الدرس العملي الأول . -1-
راجع المشاركة المثبتة للإضطلاع على قائمة الدروس , وأضطلع على الدروس السابقة
بدء مشروع جديد في دلفي :
عندما تفتح دلفي للمرة الأولى , ستجد انها إفتراضيا فتحت لك مشروع جديد جاهز للعمل ,
على كل حال لبدء مشروع جديد في أي وقت فالموضوع سهل جدا :
من قائمة File إختر new ثم application . (file > new > application ) . وستجد مشروعك الجديد اصبح جاعزا لبدء العمل .
حفظ مشروع دلفي :
يفضل أن تقوم بحفظ مشروعك من البداية , وأنصحك هنا بحفظ كل مشروع في مجلد جديد بإسم يعبر عنه . لكي لا تختلط ملفات المشاريع المختلفة مع بعضها البعض ,
لحفظ مشروع دلفي من قائمة File إختر save All , والتي ستحفظ لك كل ملفات المشروع في المجلد الذي سيتم إختيارة .
تشغيل المشروع :
بعد تصميم مشروعك وكتابة شفرته , يلزمك تشغيل المشروع لتوليد الملف التنفيذي النهائي , وتجربة المشروع .
تشغيل المشروع سهل جدا , من قائمة Run أختر أول خيار وهو Run كذلك . ستلاحظ قيام دلفي بسرعة بتشغي المشروع , وسترى أمامك النموذج الفارغ مع أزراره الأساسية (الإغلاق والتكبير والتصغير) ,
لإغلاق التنفيذ , أغلق النموذج بشكل طبيعي من علامة الX (الإغلاق) في الزاوية اليمنى .
الملف التنفيذي : بعد القيام بتشغيل المشروع مرة على الأقل ستجد إضافة ملف جديد إلى مجموعة الملفات في المجلد الذي حفظ فيه المشروع , سيكون إسمه على الغالب (Project1.exe) وأيقونته تشبة أيقونة الدلفي , هذا هو الملف التنفيذي النهائي الذي تريدة , ويكفي نسخة على أجهزة الآخرين ليعمل مشروعك (مبدأيا على الأقل)
تلميح :
الحفظ والفتح وإنشاء مشروع جديد وتشغيل المشروع, وظائف متكررة كثيرا لذلك بإمكانك التعامل معها من شريط الادوات او من إختصارات لوحة المفاتيح (ألقي نظرة سريعه على شريط أدوات دلفي وستلاحظ أمكنة هذه الأزرار بسهولة)
الخطوة الأولى : مشروعك الأول بلغة دلفي
عند تعلم أي لغة برمجة ستمر بهذه الخطوة التي تسمى مشروع هيلو وورد (Hello World project) .
برنامج هيلو وورد الذي سنقوم به الآن هو فقط عبارة عن نافذة مكتوب عليها "Hello world" في عنوانها , وفيها زر عند ضغطة سيعطيك عبارة Hello world بمربع رسالة .
بعد إنشاء مشروع جديد ,
1- قم بوضع زر على النموذج (Form) ,و غير تسمية الزر إلى Hello world (بضبط خاصية Caption التي تعني العنوان من ضابط الكائنات) .
2- غير تسمية النموذج إلى Hello world project (يالله قم بذلك لوحدك) .
3- بالضغط على الزر مرتين , ستفتح امامك نافذة محرر الشفرة , وتكتب لك دلفي تلقائيا جزء من الشفرة لمساعدتك في إختصار الوقت . وستبدو بالشكل التالي :
4- CODE
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
الشفرة التي ستكتبها بين Begin و End ستنفذ عند ضغط الزر بعد تشغيل المشروع ,
أكتب الآن السطر التالي :
CODE
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('Hello World!');
end;
قم الآن بحفظ المشروع ,
لتجربة مشروعك أضغط زر Run (أو من قائمة Run كما أتفقنا ) .
سيظهر أمامك النموذج الجديد , لاحظ عنوان النموذج كما ضبطناه آخر مرة , ولاحظ فيه الزر بعنوان hello world , عند ضغط الزر ستظهر لك رسالة HelloWorld مع زر ok لإغلاق الرسالة .
مبروك , .. انهيت مثالك الأول ,, أهلا بك في عالم الدلفي ,
إذا كنت مصر على تجربة ما قمت به من أجل إسم آخر , أعد ذلك وغير النص المكتوب في message من helloworld إلى إسمك الخاص (أكتبة بالعربية هذه المرة) .
ماذا حدث :
قمنا كما لاحظت بجزأي بناء أي برنامج , التصميم وكتابة الشفرة ,
التصميم , من ضبط خصائص النموذج , ووضع زر وضبط خصائصة
كتابة الشفرة المتعلقه بإظهار صندوق رسالة بزر OK .
تعليمة الإظهار هذه متكررة كثيرا , لاأعرف ماذا سأشرح عنها , هذه التعليمة بكل بساطة تظهر مربع الرسالة التي تكتبها لها , مع زر OK الإفتراضي للإعلام بالإنتهاء من قراءة الرسالة .
جرب أن تضع عدة رسائل وراء بعضها في الشفرة ولاحظ ان الرسائل لن تظهر معا , بل كلما ضغطنا زر OK لواحدة تظهر الرسالة التي تليها :
CODE
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('1');
showmessage('2');
showmessage('3');
showmessage('4');
showmessage('5');
end;
ملاحظة :
لاحظ وجود فاصلة منقوطة بعد كل تعليمة مستقله , لإخبار مترجم دلفي بإنتهاء التعليمة .
ثلاث أنواع لسطور الشفرة :
التعليمات المستقلة .
الخصائص .
المناهج .
توقع أن تتعامل مع هذه الطرق الثلاث في هذه الدورة .
أولا : التعليمات المستقلة ,
مثالها تعليمة Showmessage التي عرفتها منذ قليل , وهي تعليمات بسيطة نكتبها مباشرة ونمرر لها القيم اللازمة .
ثانيا : الخصائص :
كما أتفقنا في الدروس السابقة , لكل عنصر في دلفي مجموعة من الخصائص والمناهج , الخصائص هي صفات العنصر , مثل اللون العرض الطول الموقع العنوان الخ ...
عادة وحتى الآن تعلمت كيف تغيير الخصائص من ضابط الكائنات , ولكن ضابط الكائنات ليس موجود في زمن التنفيذ مع الملف التنفيذي النهائي , السؤال الآن كيف أغير الخصائص برمجيا , (في زمن التنفيذ)
الحل :
كل خاصية يمكن ان تراها في ضابط الكائنات , وأكثر من ذلك , دعني أقول كل خاصية يمكلكها العنصر تستطيع الوصول إليها من الشفرة بفصلها بنقطة عن أسم العنصر الذي يملكها , ومن ثم نسب القيمة المرادة إليها بشرط ان تكون من نفس النوع (لاتنسب نص لخاصية اللون , ولا تاريخ لخاصية رقمية) :
مثال :
لتغيير لون النموذج إلى أزرق بإمكانك تغيير خاصية اللون الخاصه به من ضابط الكائنات . وبإمكانك أيضا الوصول لخاصية اللون من الشفرة وتغييرها برمجيا , والسماح للمستخدم بتغيرها حسب الحاجة.
ضع 3 أزرار على النموذج :
الزر الأول : للون الأزرق : ضع في شفرته (أنقر مزدوجا عليه ليفتح محرر الشفرة) التالي :
CODE
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Color:=clblue;
end;
الزر الثاني , للون الأحمر في شفرته : (نفس الزر السابق لكن اللون أحمر)
CODE
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Color:=clred;
end;
الزر الثالث : للون الأخضر :
CODE
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Color:=clgreen;
end;
شغل المشروع وجربة , وتمتع بتغيير ألةان الفورم في زمن التشغيل .
جميل جدا .. ولكن ... ماذا فعلنا ؟
نحن نريد تغيير خاصية لون النموذج إلى الأزرق بمجرد ضغط الزر .
حسنا سأعيد ترتيب الأمر كالتالي ,
للنموذج خاصية اللون , أريد تغيرها إلى أزرق .
إذا أخذت بالحسبان أنه للوصول إلى أي خاصيه أنت بحاجة لفصلها بنقطة عن أسم المكون العائدة له , ستستنتج بذكاء أنه للوصول إلى خاصية اللون يجب أن أكتب : Form1.color .. (ااه يا ذكي)
حسنا عليي الآن نسب لون ما لخاصية اللون (وكما أتفقنا مع الأخذ باالحسبان مراعاة التوافق بالأنواع ) طيب يا أخي ؟؟ كيف بدي فهم الكمبيوتر أنو Blue هي لون وليست نص , لذلك يا صديقي تملك دلفي تعريف خاص للألوان هو إسم اللون مسبوقا ب cl من كلمة color أي لون . يعني اللون الأزرق هي color blue وفي دلفي clBlue .
أصبح الموضوع سهلا , لقد جمعنا كل أطراف المعادلة .
الطرف الأول form1.color , الطرف الثاني clred , والنسب وهو في دلفي (:=) , سأفترض أن السطر :
form1.Color:=clgreen;
أصبح مفهوما أمامك ..
هاقد انهينا أثنين . التعليمات والمستقلة والخصائص , ما رأيك بالإنتقال للثالثة :
ثالثا : المناهج (Methods) :
صديقي العزيز , بإمكانك إحتساء كأس من الشاي من اجل ترسيب المعلومات السابقة بشكل جيد في الرأس .. لا مشكلة سأنتظرك .. ؟
هم
هل أنتهيت .. ؟ على بركة الله .
ألم تلاحظ معي أن الخصائص غير مناسبة للعمل في كل شيء ؟ إنها تسمح لي بتغيير صفات العناصر , وهذا شيء رائع , ولكن كيف سأنفذ أفعال على هذه العناصر .
الجواب بنفس الطريقة (طريقة الفصل بنقطة ليس إلا) , ويسمى هذه الأفعال بالمناهج .
يملك كل عنصر مجموعة من الأحداث ومجموعة من المناهج (الأفعال) هذه المناهج التي يملكها تسمح له بتنفيذ أفعال معينه خاصة به .
مثلا : النموذج يملك فعل الإغلاق .. لإغلاق النموذج بذكاء حاد نستنتج وحسب قاعدة النقطة أن الشفرة كالتالي :
CODE
Form1.close;
جرب ذلك , ونفذ المشروع .. مارأيك ,, جميل هاه
هذا هو المحور الثالث من الطرق التي ستتبعها عادة لكتابة الشفرات والتحكم في مكونات برنامجك وضبط افعالة :
QUOTE
التعليمات المستقلة : مثال showmessage()
الخصائص : مثال form1.color
المناهج : مثال form1.close
تمرين :
على إفتراض أن النموذج يملك خاصتي الإرتفاع والعرض (Width Height ) قم بإنشاء برنامج يضبط حجم النموذج إلى (500*500) :
الحل :
CODE
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Height:=500;
form1.Width:=500;
end;
تمرين2 :
بفرض أن عنصر مربع النص (Edit) يملك خاصية text لتحديد النص المكتوب فيه .
أنشيء برنامج يحوي edit و button . عند نقر الزر يكتب في مربع النص عبارة "بسم الله الرحمن الرحيم" .
الحل :
نضع العناصر على النموذج : والشفرة هي :
CODE
edit1.Text:='بسم الله الرحمن الرحيم';
لاحظ , وضع النص بين علامتي تنصيص لإخبار دلفي بإنه نص يكتب كما هو ..
تنبية : عند التعامل مع النصوص في شفرة دلفي يجب وضعها ضمن إشارتي تنصيص (' ') .
تمرين 3 :
أنشيء برنامج يحوي زر ومربع نص , نكتب في النص أسمنا وعند النقر على الزر يظهر الإسم في مربع رسالة :
الحل :
CODEShowMessage(edit1.Text);
لكل عنصر أكثر من معالج حدث :
كما لاحظت حتى الآن لكتابة شفره تنفذ عند ضغط الزر كنا ننقر مرتين على الزر فتظهر لنا دلفي المحرر وقد جهز للكتابة تحت حدث الضغط الإفتراضي .
السؤال , ألا يمكنني كتابة شفرات تنفذ في أحداث مختلفة (عند تحريك مؤشر الفأرة مثلا , أو عند ضغط زر , أو عند النقر المزدوج , أو عند السحب والإفلات ) ؟
الجواب نعم , تسمح لك دلفي بإستخدام كل ذلك , ولكنها تسرع عليك العمل بإختيار الحدث الأفتراضي عند النقر المزدوج فوق عنصر .
لإختيار كتابة شفرتك في حدث مختلف , تذكر ماتحدثنا عنه في الفقرات السابقة وضابط الكائنات .. ؟
لماذا تتأتأ .. ؟ ألم نقل أن ضابط الكائنات يحوي صفحتين صفحة خصائص وصفحة أحداث ؟
. ضع على النموذج العنصر Label (لافتة تعرض نص ما ولاتستخدم للإدخال , فقط للعرض)
من ضابط الكائنات تستطيع ضبط خاصية العنوان caption كم تعلمنا , المهم الآن لاحظ في ضابط الكائنات الصفحتين properities و Events .. إختر الصفحة الثانية (صفحة الأحداث Events) ستجد لائحة بالأحداث المتوفرة لهذا المكون .
onClick : تنفذ عند النقر بالماوس .
onDblClick : تنفذ عند النقر المزدوج
ondragdrop : تنفذ عند السحب والإفلات
…
..
..
Onmousemove : تنفذ عند تحريك الفأرة فوق هذا العنصر
Onmouseleave : تنفذ عند خروج الفأره من فوق العنصر
الخ ...
لكتابة الشفره تحت حدث من هذه الأحداث . ننقر نقر مزدوج على النص الملاصق لإسم الحدث , وبعدها كما تعرف سيفتح محرر الشفرة , وماستكتبة هنا سينفذ عند تنفيذ الحدث عند التشغيل .
مثال :
العنصر السابق label يحوي الحدثين الأخيرين .. ماذا سنفعل بهما .. حسنا دعنا نضيف تأثير على هذا العنصر بحيث عندما يأتي مؤشر الفأرة فوقة يصبح لون الخط أحمر , وعند ذهابها يعود أسود :
أولا إضبط خاصية Font لهذا المكون من ضابط الكائنات وأختر خط كبير وواضح .
ثانيا : في الحدث onmousemove ضع : (نقر مزدوج فوق مربع النص الملاصق)
Label1.Font.Color:=clred;
وفي حدث onmouseleave ضع :
Label1.Font.Color:=clblack;
لتصبح الشفرة كالتالي :
CODE
procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Label1.Font.Color:=clred;
end;
procedure TForm1.Label1MouseLeave(Sender: TObject);
begin
Label1.Font.Color:=clblack;
end;
(لاحظ الخاصية الفرعية color لخاصية الخط font , ولاحظ ترتيب الخصائص .. سهل أليس كذلك ؟ ) .
نفذ المشروع ولاحظ التألق غند تحريك المؤشر فوق اللافتة .
لقائنا في الدرس القادم ..
(إذا لم تقرأ الدرس جيدا وتعيد تنفيذ كل ماورد فيه بيدك ستتعب معي في فهم الدروس القادمة , وأنا جاهز لأي سؤال في المنتدى)
عروة عيسى
www.orwah.net شكرا للإشارة للمصدر , وتملك حرية نقل والتغيير الكاملة
تطبيقات النوافذ , التصميم وكتابه الشفرة , البرمجه المبنيه على الأحداث .
الإنتقال من تطبيقات سطر الأوامر DOS إلى تطبيقات النوافذ Windows
عندما تستخدم تطبيقات نوافذ (Windows) فإنك عادة تتعامل مع واجهة مستخدم بيانيه (Graphical User Interface) أو مايعرف بـ GUI , تلفظ (“gooey”) للإختصار .
بشكل عام هي التطبيقات التي تعتمد الرسوميات كأسلوب للتعامل مع المستخدم , والتي عادة ما نستخدم الفأره للتعامل مع مكوناتها .
خذ مثلا معظم تطبيقات ويندوز , MS Word , Excel , PhotoSope , etc .. , ستجد أنها صممت من أجل غايات مختلفه تماما , ولكن آليه التعامل معها هي واحده بشكل عام . حيث أن مفاهيم إستخدامنا لإدوات هذه البرامج هي نفسها , ولكن تختلف طبيعة الأدوات حسب البرنامج . بدليل أنك تستطيع إكتشاف بعض وظائف برنامج ما ولو كنت اول مره تتعامل معه , هل حدث وجربت برنامج رسم جديد على جهازك ؟ , ألم تستطع مباشرة فتح وحفظ الملفات , ورسم بعض الخطوط والأشكال الهندسيه وإضافه بعض التأثيرات .
أمعن النظر في أي من هذه التطبيقات :
- تتألف كل منها من عدة نوافذ . هي عباره عن مستطيل تتوضع ضمنه بقيه أجزاء البرنامج , ويسمى شكل (Form) .
- لكل منها عادة شريط عنوان (Title Bar) يكون في أعلى النافذة , يظهر فيه إسم التطبيق أو معلومات أخرى مثل المسار وإسم الملف المفتوح حاليا .
- ستجد تحته قائمه أساسيه (Main Menue) تحوي عدة خيارات مبوبه مثل (ملف , تحرير ,عرض , مساعدة . الخ ..) .
وهي عباره عن لائحه بكافه التحكمات اللازمه للتعامل مع الملف الحالي . فتح ملف جديد أو حفظه , أو إجراء عمليات مختلفه عليه .
- الإختصارات الشائعه والمستخدمه للقائمه الرئيسيه ستجدها في شريط خاص يسمى شريط الأدوات (Tool Bar) , وتكون على شكل أزرار سرعه معلمّه بصور خاصه حسب وظيفه كل زر , وستجد فيها العديد من الأمور التي تستخدمها بكثره وتريحك من البحث عليها في القائمه , تأمل Microsoft Word مثلا . لاحظ أشرطة الأدوات الغنيه بالأزرار والتحكمات , بإمكانك التعامل مع العديد منها مثل فتح ملف وحفظه , وتنسيق النص , وإختيار الخط والحجم , واللون الخ ...
- قائمه منبثقه تظهر بالنقر على الزر الأيمن مثلا . كذلك تحوي وظائف شائعه ومستخدمه , وأجمل مافي الأمر , أن قائمه هذه الوظائف تتغير حسب المكان الذي ننقر فوقه بالزر الأيمن , فإذا نقرنا بالأيمن فوق شريط الأدوات ستظهر قائمه لتنسيق شريط الأدوات وإضافه وإزاله أدوات منه أو إليه , أما فوق النص ضمن MS Word مثلا , فستظهر قائمه تحوي وظائف مشهوره لتنسيق النص مثل النسق واللصق والإرتباط التشعبي الخ ..
وإلى ماهنالك من ميزات مشتركه بشكل عام بين تطبيقات النوافذ (Windows Application) .
هذه الميزات وميزات أخرى شائعه في معظم التطبيقات تسمى كل واحدة منها "مكون" .(وتم الإصطلاح على تسميتها أغراض بعد أسلوب البرمجه الغرضيه التوجه) , كل من هذه المكونات يمكن التحكم فيه وبأجزاءة وخصائصه , وأي تطبيق يتألف من مجموعه من المكونات , التي تشكل التطبيق .
كل شيء تراه أمامك هو مكون (أو غرض) . الزر مكون , والقائمه مكون وكل عنصر من هذه القائمه مكون (مكون جزئي) , ونص الإدخال مكون , واللافته مكون .. الخ . ..
يتألف البرنامج (أو التطبيق) من مجموعه من المكونات .
وهدفك انت كمصمم للتطبيق أن تحدد ماهي الأغراض والمكونات التي ستظهر على التطبيق وماهو شكلها وترتيبها , وماهي وظيفتها وماالأعمال التي ستقوم بها
وبناء على ذلك سأقسم بناء البرنامج إلى قسمين :
جزئين لبناء البرنامج :
1- تصميم واجهة البرنامج .
2- كتابه الشفره .
تصميم البرنامج , واجهة المستخدم GUI :
لنفترض انك تريد بناء برنامج محرر نصوص
شبيه مثلا بWord , عليك اولا ان تصمم
شكل البرنامج والهيئه التي سيبدو عليها .
وماهي المكونات التي الموجوده عليه ,
وترتيبها ومكانها على الشكل وضبط خصائص
كل منها وعدد ولونها والعنوان المكتوب عليها ......
ولنقل مثلا انك تريد وجود زر لتغيير الخط .
فإن وضع الزر على الشكل (Form) ومكانه وحجمه
ولونه وكل المعلومات عنه مثل العنوان المكتوب عليه
(وليكن "تغيير الخط" مثلا) كل هذا سيكون تابع
لـ تصميم البرنامج .
كتابة الشفره , التكويد Coding :
وهي تحديد للأعمال الموكله لكل مكون وماهو تسلسل الأفعال التي سينفذها .
مثلا من أجل حالة الزر السابق وبعد ضبط خصائصه وشكله نحن بحاجه لتحديد وظيفه الزر وكتابة الشفرة البرمجيه (أو التعليمات) اللازمه لتنفيذ عمل الزر .
مثل إظهار مربع إختيار نوع الخط واللون والحجم , ثم القيام بتطبيق الخط المختار على النص .
وبالتالي سيكون هذا الجزء من العمل هو كتابة التعليمات بلغة البرمجة , وتحديد إستجابه كل مكون .
التصميم هو إختيار مكونات وضبط خصائص هذه المكونات ,
كتابه الشفرة هي تحديد أفعال هذه المكونات وأستجاباتها المختلفه .
- نسمي فعل الضغط على زر بالحدث (Event) , عندما نقوم بتحريض حدث لمكون ما (مثل الضغط على زر , النقر المزدوج على أيقونه , الضغط بالزر الأيمن , السحب بالفأره , تحريك المؤشر فوق رمز مضيء الخ ... ) فإن فعل مايفترض أن يتنفذ بعد ذلك .
الحدث يطلق الإستجابه . ويبدأ التنفيذ .
الحدث هو ضغط المستخدم على زر تغيير الخط .
الإستجابه هي تنفيذ شفرة تغيير الخط .
مثلا:
حدث تحريك المؤشر فوق الزر : يولد فعل توهج الزر بشكل جميل
حدث ضغط الزر : يولد فعل إظهار رساله ترحيبيه للمستخدم .
ومن هنا جاءت عبارة البرمجه المبنيه على الاحداث .
أي أنه من أجل كل حدث يمكن ان يقع في مكون ما , يمكن كتابه إجراء برمجي يحدد ردة فعل المكون تجاه هذا الحدث .
أي كأنني ألقن البرنامج , إذا ضغط المستخدم على هذا الزر إعمل كذا , وإذا نقر نقرا مزدوجا أعمل كذا , وإذا ضغط بالزر الأيمن فوق الزر إعمل كذا وإذا حرك المؤشر فوق الزر إعمل كذا ..
وبالتالي من المهم أن أعرف بالإضافه إلى شفرة التنفيذ تحت أي حدث يجب أن أكتب هذه الشفرة , وبالتالي متى سيتم تنفيذ هذه الشفرة .
ملاحظة :
في برامج Consol التي تكتب تحت Dos عادة , والتي لايكون لها واجهه مستخدم , عادة مايتألف البرنامج من جزء واحد يتم تنفيذ تعليماته وراء بعضها بمجرد تشغيل البرنامج .
أما في برامج النوافذ , فإن البرنامج لن ينفذ أي شفرة إلا بعد وقوع حدث ما من قبل المستخدم مثل النقر على زر أو ضغط أحد المفاتيح , وكل إجراء برمجي يكون مستقل عن بقيه الإجراءات وبالتالي ضغط الزر لن ينفذ سوى شفرة الضغط المتعلقه بهذا الزر فقط ,
فإذا كنت منتقل جديد من برامج الConsol التي ربما
تعلمتها بالجامعه , لابأس ببعض الوقت للتأقلم مع
الواقع الجديد الذي يكسبك التحكم الكامل بلحظه
تنفيذ الشفرة ونسب الشفرة لمكون محدد ووفق
حدث محدد .
مثال :
إذا أردنا بناء برنامج بسيط لإظهار رساله ترحيبيه عند الضغط على زر ما . يلزمنا إذن :
1- تصميم الواجهه :
وهي عبارة عن زر , يتم وضعه على الشكل , وضبط حجمه حسب الحاجه , وكتابه عنوان يظهر عليه وليكن مثلا ("Hello") . ويمكن وضع صورة عليه أو ماشابه
2- التكويد :
وهو
ا - تحديد الحدث (Event) :
أي متى سيتم تنفيذ الشفرة , وهو هنا عند الضغط : OnClick
ب - تحديد الإستجابه :
أي كتابه الشفرة اللازمه لإظهار رساله ترحيبيه .
مثلا لإظهار رسالة "Hello Word" .
ماستتعلمه هنا هو كيفيه بناء برامجك الخاصه إبتداء من الصفر . وإذا كانت بعض الفقرات غير مفهومه فلا تهتم ذلك متوقع وسيزول كل هذا بعد البدء بالأمثله والدخول الحقيقي في البرمجه .
ماهي الملفات القابله للتنفيذ :
لاحظت أثناء تجولك في جهازك بعض أنواع الملفات مثل الملفات ذات الإمتداد EXE و BAT و COM وغيرها...
ماهي هذه الملفات ؟ وبماذا تختلف عن غيرها من الملفات العاديه ؟
الملفات القابله للتنفيذ تحوي ضمنها مقاطع تعليمات توجه الحاسوب لتنفيذ شيء ما , لذلك تسمى ملفات تنفيذيه . إذأنها تقوم بتنفيذ مهمه ما حسب الغايه التي وجدت من أجلها وبمجرد النقر المزدوج عليها أو تشغيلها ستقوم بعمل ما أو ستشغل برنامج مكتوب ضمنها أو ستنفذ وظيفه خاصه بالنظام الخ ....
في حين أن ملفات الوثائق العاديه .. (مثلا ملف نصي ذو الإمتداد (TXT لاتقوم بتنفيذ أي عمل عند فتحها كما أنها غير قادرة على العمل لوحدها , بل تتطلب برامج خاصه لفتحها وإستعراض محتواها .. مثلا تتطلب الملفات النصيه برنامج المفكره لتشغيلها أو أي محرر نصوص آخر ,. وملفات الصور تتطلب برامج ACD See أو أي مستعرض صور آخر . كذلك ملفات الفديو تتطلب Media Player أو Jet Audio أو مشغل ملتيميديا ما ..
هذه الملفات تسمى ملفات الوثائق , إذ أنها بعكس النوع السابق غير قادرة على العمل لوحدها , وتحتاج دائما برامج خدميه أخرى لتشغيلها .
لغات البرمجه تنتج ملفات قابله للتنفيذ :
حسب ماسيق , لبناء برنامج من أجل غايه ما نحن بحاجه لتوليد ملف قابل للتنفيذ لتحقيق الغايه السابقه بطريقه برمجيه .
لغات البرمجه هي الأدوات التي تمكننا من بناء الملفات التنفيذيه التي نريدها حسب الطلب . مثلا بناء برنامج من أجل إدارة الموظفين , أو برنامج مبيعات أو برنامج ويب أو مشغل ملتيميديا أو برنامج رسام أو أو .. الخ ...
فهي تحول من نص برمجي نكتبه لها عبر تنسيق خاص إلى ملف تنفيذي يحوي ضمنه شفره بلغة الآله يفهمها الحاسب ويستطيع تنفيذها .
أي أن لغات البرمجه إذن هي وسيط بين لغه يمكن ان يفهمها الإنسان , ولغه يمكن أن يفهمها الحاسوب
الإنسان يكتب كود شفره (وهي تعليمات بلغه البرمجه التي يعمل عليها) , وتقوم لغه البرمجه على أساسها بتوليد ملفات بلغة الآله قابله للتنفيذ من الحاسوب .
دلفي هي لغة برمجة :
كثيرا ما يشار إليها بالإسم بورلاند دلفي (Borland Delphi ) حيث بورلاند هي إسم الشركه التي تنتجها وهي شركه رائده في ميدان صناعة لغات البرمجة وتنتج منفذات لغات كثيره مثل C++Builder و JBuilder و C# Builder .
بما إن دلفي لغة برمجة فإن القول ان دلفي تنتج ملفات قابله للتنفيذ لايحتاج لكثير من الذكاء , ومهمتك انت هنا هي أن تتعلم كيف تنتج هذه الملفات , أي كيف تبني برامج ,.
أي كيف تبرمج بإستخدام بورلاند دلفي .
تقديم دلفي , وموقعها بين لغات البرمجة :
لغات البرمجة هي أدوات خاصة صممت لتحقيق أهداف مختلفة.
فكما يملك النجار ادوات خاصه به , والحداد يملك ادواته والميكانيكي كذلك , فإن لغات البرمجة هي أدوات المبرمج . وكل أداه منها تملك ميزات تناسب مجموعه حالات أكثر من حالات أخرى, وهذه الميزات نفسها يمكن اعتبارها نقاط قوه أحيانا ونقاط ضعف أحيانا أخرى, حسب المشروع والغاية التي نريد تحقيقها. وأمور متعددة أخرى تتعلق بمستخدم الأداة وظروف الاستخدام.
هذه اللغات موجَّهة لحاجات مختلفة, ووجدت لتحل مشكلات مختلفة بطرق مختلفة, وتستخدم في بيئات برمجيّة متباينة.
المشكلة في لغات البرمجة أن فلسلفه كل لغة متعلقة بالأهداف التي بنيت اللغة على أساسها, فلم تبنى كل لغات البرمجه من أجل الهدف البسيط الذي ذكرناه منذ هنيهه وهو توليد ملفات تنفيذيه , بل إن الموضوع يتعقد أكثر وتأخذ كل لغه بدعم مجموعه مزايا تجعلها مؤهله لتنفيذ مجموعه من الأهداف أكثر من أمور أخرى , وبالتالي فإن مميزات لغة برمجة ما هي ناتج دمج هذه الأهداف من ناحية والضريبة المترتبة على أولوية هذه الأهداف على غيرها من جهه أخرى .
خذ مثلاً بعض اللغات الشائعة:
- لغةC/C++ : صممت تحت راية السرعة ,من أهدافها القوه والتحكم, تتميز بالكثير من التعقيد,.
- الجافا: تسعى لقابليه النقل (المحموليه), مطرزه بالعديد من مزايا القوّة, مميزة في التطبيقات الموزعة والويب . لكنها تنتج ملفات بطيئة نسبيا
- VB : تهدف إلى السهولة وسرعة التطوير . وتبسيط برمجة النوافذ , مميزة في تطبيقات أوفيس . لاتستخدم كثيرا عندما يتم التعويل على القوة والتحكم
يمكننا ببساطه أن نقرر أن نجاح كل من هذه اللغات لا يعود إلى المميزات التي ذكرناها فقط, فما هي إلا غيض من فيض, وتوجد عشرات الأسباب الأخرى المهمة لتقرير أهميّـه لغة برمجة ما أو نجاحها في الانتشار والتسويق.
ما أريد التركيز عليه أن أهميه لغه برمجه بالنسبه لك يجب أن تنبع من مناسبتها لنوعية المشاريع التي ترغب بتطويرها . وتقبلك لعيوب هذه اللغه من ناحيه وأولويه ميزاتها يبالنسبه لك من ناحيه ثانيه .
فلا يوجد شيء إسمه ماهي لغه البرمجة الأفضل حتى أعمل عليها , لإن اللغه الأفضل تعتمد على ماتريد منها أنت وماذا تريد أن تعمل عليها .
في هذا القسم سوف تأخذ فكرة عن بيئة تطوير دلفي . (Delphi programming environment.)
إذا كنت قد إستخدمت محرر html مثل front Page , ستكون على الغالب متآلف مع مايسمى بيئات السحب والإفلات . (مستخدمي الفيجوال بيزك مثلا سيجدون البيئة سهله ومألوفه مباشرة) .؟
ببساطة تعتمد هذه البيئات على تسهيل عملك بحيث تختار مباشرة العنصر الذي تريده من قائمة أدوات متوفرة ثم تضعه على النموذج (Form) والنموذج هو الذي سيصبح النافذة في تطبيقك . بما تحويه إفتراضيا من زر إغلاق وزر تكبير وزر تصغير بالإضافة إلى العناصر التي تقوم انت بوضعها علية .
من الآن فصاعدا المصطلح "نموذج" أو Form سيتكرر معنا بإستمرار وهو فعليا النافذة التي تضع عليها عناصر تطبيقك .
بالمقابل يبقى عليك في دلفي ان تكتب الشفرة (أو الكود Code) الذي يحدد تصرف هذه العناصر ويستجيب لها .
أول مرة تفتح دلفي سترى ثلاث نوافذ . النافذة الرئيسية العليا (main menu bar,) و ضابط الكائنات (Object Inspector) , وشجرة الكائنات (Object Tree View) .. طبعا بالإضافة لنموذج مشروع جديد تفتحة دلفي إفتراضيا للبدء مباشرة بالعمل .
النافذة الرئيسية :
وهي نافذة دلفي الرئيسية , قائمة دلفي كالعادة تحوي خيارات مألوفه لديك مثل File, Edit, View, Tools و Help.
ويوجد أيضا بعض الخيارات والوظائف الإضافية التي ستتعرف عليها وتتعامل معها لاحقا .
منصة الأدوات )أو شريط الأدوات) هي أكثر جزء يتعامل معه مستخدمو دلفي , عند تحريك الفأرة فةق الادوات الموجودة في منصة الادوات , تعليق صغير سيظهر يحوي وصف مختصر للزر (يحوي إسم الزر وفي أي وحدة برمجية موجود) , تحوي منصة الأدوات العديد من الصفحات الممتلئة بالأدوات والمقسمة حسب الإختصاص ,
لإضافة عنصر إلى النموذج , ببساطة قم بالنقر مرة على العنصر المطلوب , ثم إنقر مرة ثانية في أي مكان تريدة من النموذج , وسيتوضع العنصر مكان النقر تلقائيا .. بإمكانك أيضا ان تنقر مرتين على العنصر في شريط الادوات وسيتوضع تلقائيا في منتصف النموذج .
دائما بإمكانك حذف العنصر بتحديدة اولا ثم ضغط زر delete أو CTRL+DEL .
النموذج :
وهو واجهة التصميم التي ستضع عليها عناصرك ..
- ضع العناصر التي تريدها .. أزرار (Buttoms) مربعات تحرير (Edits) لافتة نصية (Lables) الخ ..
- تحكم بموقع العنصر بسهولة عن طريق تحريكة مباشرة على النموذج .
- تحكم بحجم العنصر عن طريق توسيعه من المربعات الصغيرة التي تظهر على الحواف الخارجية
ستجد على النموذج نقاط صغيرة هي عبارة عن نقاط توضع تستخدم لمساعدتك في رصف العناصر على سوية واحدة لتعطي شكل منظم وأنيق للعناصر المختلفة على النموذج .
هذه النقاط لن تظهر في البرنامج النهائي , وماأن تنفذ المشروع حتى تلاحظ إختفاء نقاط زمن التصميم هذة .
ضابط الكائنات (Object Inspector):
يستخدم ضابط الكائنات لنسب قيم الخصائص المختلفة لعنصر ما . لتوضيح ذلك دعنا نتحدث قليلا عن دلفي .
دلفي تتعامل مع كل شيء على انه غرض (أي كائن) ولكن كائن مجموعة خصائص تميزة ومجموعة أفعال يستطيع القيام بها .
مثلا عنصر النموذج . أو الكائن نموذج . يملك عدة خصائص , الإرتفاع (Height) , العرض (Width) وموقعه على الشاشة (Left,Top) ولونة (Color) , وعنوان النافذة في الأعلى (Caption)... الخ ..
ضابط الكائنات مهمتة هي ضبط القيم الإفتراضيه لهذه الخصائص المختلفة .
قم بالنقر على النموذج في مكان فارغ مرة واحدة (لتحديد النموذج) , إنظر الآن إلى ضابط الكائنات وستجد لائحة طويلة بمجموعة من خصائص النموذج المتاحة .
جرب ان تغيير خاصية اللون : color
جرب ان تغيير خاصية العرض : width
لاحظ أن التغيرات تطبق مباشرة أمامك على النموذج . ولاتنتظر لزمن التشغيل ( run time) .
إذن توجد لضابط الكائنات صفحتين , صفحة أحداث وصفحة خصائص .
صفحة الخصائص موضوع سهل وممتع .
صفحة الأحداث ومن هنا نحدد سبب تنفيذ شفرتنا البرمجية . أي متى نريد لشفرتنا البرمجية ان تنفذ .. عند الضغط على زر أم عند تحريك المؤشر , أم عند النقر المزدوج .. ؟
بإختيار هذه الصفحة ستجد الكثير من معالجات الحدث التي يمكنك كتابة شفرات إستجابة لها .
مثلا عند النقر بالفأرة أو عند ضغط زر من لوحة المفاتيح أو عند تحريك الفأرة فوق النموذج أو عند إظهار النموذج . أو عند إنشاء النموذج الخ ..
ملاحظة . للتسهيل , تفترض دلفي الحدث الأكثر إستخداما هو الحدث الرئيسي وبذلك يتم إختيار الحدث بمجرد النقر المزدوج على العنصر . حيث تفتح صفحة الشفرة (الكود) وتجهز لك دلفي ترويسة الإجراء .
مثلا المكون زر "Button" الحدث الإفتراضي هو OnClick أي عند ضغط الزر .
مثال :
قم بوضع زر على النموذج
قم بالنقر المزدوج على الزر
ستلاحظ ظهور نافذة تحرير الشفرة . وتقوم دلفي تلقائيا بكتابة جزء الكود المسهل للنقر على الزر , وتضع مؤشر الكتابة داخل Begin و End
أي شفرة برمجية تكتبها هنا , لن تنفذ حتى يتم الضغط على الزر .
ولو كنا كتبناها تحت معالج حدث مختلف . مثلا OnMouseMove أي عند تحريك المؤشر فوق المكون . لكانت الإستجابة للشفرة تتم عند تحريك المؤشر فقط ..
وهذا هو سر البرمجة المبنية على الأحداث (أو المقادة بواسطة الأحداث) التي تعتمدها برامج ويندوز المرئية .