• 0
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-

procedure TForm1.Button1Click(Sender: TObject);
begin

end;

الشفرة التي ستكتبها بين Begin و End ستنفذ عند ضغط الزر بعد تشغيل المشروع ,

أكتب الآن السطر التالي :

procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('Hello World!');
end;

قم الآن بحفظ المشروع ,

لتجربة مشروعك أضغط زر Run (أو من قائمة Run كما أتفقنا ) .

سيظهر أمامك النموذج الجديد , لاحظ عنوان النموذج كما ضبطناه آخر مرة , ولاحظ فيه الزر بعنوان hello world , عند ضغط الزر ستظهر لك رسالة HelloWorld مع زر ok لإغلاق الرسالة .

مبروك , .. انهيت مثالك الأول ,, أهلا بك في عالم الدلفي ,

إذا كنت مصر على تجربة ما قمت به من أجل إسم آخر , أعد ذلك وغير النص المكتوب في message من helloworld إلى إسمك الخاص (أكتبة بالعربية هذه المرة) .

ماذا حدث :

قمنا كما لاحظت بجزأي بناء أي برنامج , التصميم وكتابة الشفرة ,

التصميم , من ضبط خصائص النموذج , ووضع زر وضبط خصائصة

كتابة الشفرة المتعلقه بإظهار صندوق رسالة بزر OK .

تعليمة الإظهار هذه متكررة كثيرا , لاأعرف ماذا سأشرح عنها , هذه التعليمة بكل بساطة تظهر مربع الرسالة التي تكتبها لها , مع زر OK الإفتراضي للإعلام بالإنتهاء من قراءة الرسالة .

جرب أن تضع عدة رسائل وراء بعضها في الشفرة ولاحظ ان الرسائل لن تظهر معا , بل كلما ضغطنا زر OK لواحدة تظهر الرسالة التي تليها :

procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('1');
showmessage('2');
showmessage('3');
showmessage('4');
showmessage('5');
end;

ملاحظة :

لاحظ وجود فاصلة منقوطة بعد كل تعليمة مستقله , لإخبار مترجم دلفي بإنتهاء التعليمة .

ثلاث أنواع لسطور الشفرة :

التعليمات المستقلة .

الخصائص .

المناهج .

توقع أن تتعامل مع هذه الطرق الثلاث في هذه الدورة .

أولا : التعليمات المستقلة ,

مثالها تعليمة Showmessage التي عرفتها منذ قليل , وهي تعليمات بسيطة نكتبها مباشرة ونمرر لها القيم اللازمة .

ثانيا : الخصائص :

كما أتفقنا في الدروس السابقة , لكل عنصر في دلفي مجموعة من الخصائص والمناهج , الخصائص هي صفات العنصر , مثل اللون العرض الطول الموقع العنوان الخ ...

عادة وحتى الآن تعلمت كيف تغيير الخصائص من ضابط الكائنات , ولكن ضابط الكائنات ليس موجود في زمن التنفيذ مع الملف التنفيذي النهائي , السؤال الآن كيف أغير الخصائص برمجيا , (في زمن التنفيذ)

الحل :

كل خاصية يمكن ان تراها في ضابط الكائنات , وأكثر من ذلك , دعني أقول كل خاصية يمكلكها العنصر تستطيع الوصول إليها من الشفرة بفصلها بنقطة عن أسم العنصر الذي يملكها , ومن ثم نسب القيمة المرادة إليها بشرط ان تكون من نفس النوع (لاتنسب نص لخاصية اللون , ولا تاريخ لخاصية رقمية) :

مثال :

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

ضع 3 أزرار على النموذج :

الزر الأول : للون الأزرق : ضع في شفرته (أنقر مزدوجا عليه ليفتح محرر الشفرة) التالي :

procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Color:=clblue;
end;

الزر الثاني , للون الأحمر في شفرته : (نفس الزر السابق لكن اللون أحمر)

procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Color:=clred;
end;

الزر الثالث : للون الأخضر :

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) :

صديقي العزيز , بإمكانك إحتساء كأس من الشاي من اجل ترسيب المعلومات السابقة بشكل جيد في الرأس .. لا مشكلة سأنتظرك .. ؟

هم

هل أنتهيت .. ؟ على بركة الله .

ألم تلاحظ معي أن الخصائص غير مناسبة للعمل في كل شيء ؟ إنها تسمح لي بتغيير صفات العناصر , وهذا شيء رائع , ولكن كيف سأنفذ أفعال على هذه العناصر .

الجواب بنفس الطريقة (طريقة الفصل بنقطة ليس إلا) , ويسمى هذه الأفعال بالمناهج .

يملك كل عنصر مجموعة من الأحداث ومجموعة من المناهج (الأفعال) هذه المناهج التي يملكها تسمح له بتنفيذ أفعال معينه خاصة به .

مثلا : النموذج يملك فعل الإغلاق .. لإغلاق النموذج بذكاء حاد نستنتج وحسب قاعدة النقطة أن الشفرة كالتالي :

Form1.close;

جرب ذلك , ونفذ المشروع .. مارأيك ,, جميل هاه

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

التعليمات المستقلة : مثال showmessage()

الخصائص : مثال form1.color

المناهج : مثال form1.close

تمرين :

على إفتراض أن النموذج يملك خاصتي الإرتفاع والعرض (Width Height ) قم بإنشاء برنامج يضبط حجم النموذج إلى (500*500) :

الحل :

procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Height:=500;
form1.Width:=500;
end;

تمرين2 :

بفرض أن عنصر مربع النص (Edit) يملك خاصية text لتحديد النص المكتوب فيه .

أنشيء برنامج يحوي edit و button . عند نقر الزر يكتب في مربع النص عبارة "بسم الله الرحمن الرحيم" .

الحل :

نضع العناصر على النموذج : والشفرة هي :

edit1.Text:='بسم الله الرحمن الرحيم';

لاحظ , وضع النص بين علامتي تنصيص لإخبار دلفي بإنه نص يكتب كما هو ..

تنبية : عند التعامل مع النصوص في شفرة دلفي يجب وضعها ضمن إشارتي تنصيص (' ') .

تمرين 3 :

أنشيء برنامج يحوي زر ومربع نص , نكتب في النص أسمنا وعند النقر على الزر يظهر الإسم في مربع رسالة :

الحل :

 ShowMessage(edit1.Text);

لكل عنصر أكثر من معالج حدث :

كما لاحظت حتى الآن لكتابة شفره تنفذ عند ضغط الزر كنا ننقر مرتين على الزر فتظهر لنا دلفي المحرر وقد جهز للكتابة تحت حدث الضغط الإفتراضي .

السؤال , ألا يمكنني كتابة شفرات تنفذ في أحداث مختلفة (عند تحريك مؤشر الفأرة مثلا , أو عند ضغط زر , أو عند النقر المزدوج , أو عند السحب والإفلات ) ؟

الجواب نعم , تسمح لك دلفي بإستخدام كل ذلك , ولكنها تسرع عليك العمل بإختيار الحدث الأفتراضي عند النقر المزدوج فوق عنصر .

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

لماذا تتأتأ .. ؟ ألم نقل أن ضابط الكائنات يحوي صفحتين صفحة خصائص وصفحة أحداث ؟

. ضع على النموذج العنصر Label (لافتة تعرض نص ما ولاتستخدم للإدخال , فقط للعرض)

من ضابط الكائنات تستطيع ضبط خاصية العنوان caption كم تعلمنا , المهم الآن لاحظ في ضابط الكائنات الصفحتين properities و Events .. إختر الصفحة الثانية (صفحة الأحداث Events) ستجد لائحة بالأحداث المتوفرة لهذا المكون .

onClick : تنفذ عند النقر بالماوس .

onDblClick : تنفذ عند النقر المزدوج

ondragdrop : تنفذ عند السحب والإفلات

..

..

Onmousemove : تنفذ عند تحريك الفأرة فوق هذا العنصر

Onmouseleave : تنفذ عند خروج الفأره من فوق العنصر

الخ ...

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

مثال :

العنصر السابق label يحوي الحدثين الأخيرين .. ماذا سنفعل بهما .. حسنا دعنا نضيف تأثير على هذا العنصر بحيث عندما يأتي مؤشر الفأرة فوقة يصبح لون الخط أحمر , وعند ذهابها يعود أسود :

أولا إضبط خاصية Font لهذا المكون من ضابط الكائنات وأختر خط كبير وواضح .

ثانيا : في الحدث onmousemove ضع : (نقر مزدوج فوق مربع النص الملاصق)

Label1.Font.Color:=clred;

وفي حدث onmouseleave ضع :

Label1.Font.Color:=clblack;

لتصبح الشفرة كالتالي :

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

شكرا للإشارة للمصدر , وتملك حرية نقل والتغيير الكاملة

تم تعديل بواسطه ORWA
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

27 إجابة على هذا السؤال .

  • 0

:lol: هل تقبلني تلميذا في درسك :lol:

لن أشاغب و سأكون خير تلميذ لخير أستاذ و لن تجدني إلا من المجدين المجتهدين.

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

تم تعديل بواسطه ikossan
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
:lol:  هل تقبلني تلميذا في درسك  :lol:

لن أشاغب و سأكون خير تلميذ لخير أستاذ و لن تجدني إلا من المجدين المجتهدين.

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

بارك الله فيك اخي عروة

:lol: :lol: :lol:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ياسلام عليك يا عرووووووووووة ... 100% احسنت ... والله يوفقك وينفع بك .

برايفت الى ikossan

اذا فية شي في الدرس السابق صعب عليك فهمة ... تعال لي على الخاص

وانا ان شاء الله اوضحة لك بالتفصيل ... : )

وتذكر ....لا حياء في العلم .. : )

الله يوفقكم جميعآ .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لكم ... جميعا .. أيكوسان و سيف الدين و 2/11/2004

الدرس خالي من الصور , ولكن لابأس يمكن البدء منه للجدد على دلفي ..

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

مشكور اخى عروة على الدرس اللديد والخفيف

اسمحلى ببعض الاسئلة لانى اول مرة ادخل على جناح الديلفى

ما فائدة اللغة وامكانياتها هدا واحد

تانيا هل هى مجانية يعتى برامج التعامل معها مجانية ولن يتطلب منى شراء برامج او استخدام كراك وغيره

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ،،،

الدرس رائع جدا جدا بارك الله فيك أخي عروة .

أتمنى أن يوضع له اعلان في أعلى المنتدى لكي تعم الفائدة .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تسلام يدك اخي عروة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم. :D

أنا فعلا يا أخي عروة أفتقد الكثير من مميزات الأستاذ, فلا يكفي أن تكون لك قاعدة معلومات في راسك لكي تصبح أستاذا تدرس ما تعلمته لغيرك, فكمية المعلومات ما هي إلى تأثيث معرفي فقط في الدماغ :lol: يلزمه لمسة فنية و إحترافية من مهندس ديكور لترتيبه و تصفيفه حتى إذا رآه الطالب أعجب به متمسكا حتما بك لتعلمه, و تدرس له ما عندك من علم..

أنا أفتقد هذه اللمسة الفنية في إيصال المعلومة بسلاسة للمتلقي حتى أحبب له اللغة. ما علينا :( .

alnamer: إمكانيا ت اللغة و فائدتها؟ هممممم...!

أظن أنك تعلم أن ديلفي ليس بلغة برمجة إذا ما شددنا في تعريف مصطلح "لغةبرمجة".

فقد ظهرت ديلفي في إصدارها الأول سنة 1995, وهي منصة تطوير برامج سريعة Rapid Applivation developement أو باختصار RAD. تعتمد منصة البرمجة لديلفي على لغة باسكال الشيئية. و ليست بورلاند -الشركة المنتجة لديلفي- هي من أصدرت لغة البرمجة الباسكال, بل ساهمت فقط بانتشارها و تعميمها كلغة برمجة, فباسكال لغة أنشأها في السبعينات Nicklaus Wirth و هو أستاذ جامعي من سويسرا, قام بوضع مناهجاها و الكتابة النحوية Syntax على أساس أن تكون لغة مهيكلة بناءا على طريقة تعريف المتغيرات والدوال و الإجرائيات بتنظيم ممنهج و مرتب, فكانت لغة موجهة بالأساس للتدريس و التعليم (لغة سهلة القراءة يعتمد عليها الأساتذة في الجامعات لكتابة الخواريزميات للطلبة).

قامت شركة بورلاند بتطوير هذه اللغة وأنتجت ما يقارب تسع إصدارات للمنصات البرمجة للباسكال قبل إطلاق أول إصدارة لديلفي سنة 1995, فقد سبقت ديلفي منصات Borland Pascal و Turbo Pascal كانت أول إنطلاقة سنة 1985, حيث جاءت بورلاند في TurboPascal بما يعرف بIDE : وهي تعريف لمنصة البرمجة, يضم في نفس الواجهة, محررا للنص, إمكانية إدارة المصرف والمجمع Compiler & linker, وكذلك عرض في نافذة بالأسفل لجميع أخطاء المصرف أو المجمع و تتبعها في أسطر نص الكود.

هذه الأمور أصبحت الآن ضرورية و من المسلمات, لكن من قبل كان عليك كتابة نص الكود في محرر للنص, ثم تخرج منه و تستدعي المصرف في نافذة الدوس, ثم تقوم استدعاء المجمع بعده لتحصل في الأخير على الملف التنفيذي.

هذه الإصدارات السابقة مكنت بورلاند من إنتاج "لغة برمجة" مطورة عن اللغة الأصل و هي باسكال الشيئية Objects Pascal, لغة سهلة وممنهجة وبسيطة المقروئية والتحليل.

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

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

"Hello World".

program Project1;
{$APPTYPE CONSOLE}
begin
 writeln('hello world.');
end.

لكن مع ظهور ويندوز , أصبح من الصعب كتابة برامج كالتي كانت تكتب في الدوس. فويندوز منصة معقدة لا يمكنك لأحد أن يبرمج لها سوى لو كان مبرمجا محنكا أو نابغة يتقن لغة سي أتقانا تاما, فويندوز هي منصة متعددة المهمات MultiTasking وتعتمد على عكس الدوس على إدارة الأحداث Events handling, أي أن البرنامج يستجيب فقط للأحداث, كحدث ضغطة زر أو تحريك الفأرة أو مرور وقت المؤقت..إلخ.

فكان قليلون هم المبرمجون الذين يستطيعون كتابة برنامج لا ينجز شيئا :wacko: . نعم برنامج لا ينجز شيئا! برنامج لا يحتوي سوى على فورم-نافذة- فارغة ليس بها شيء على الإطلاق, سوى أزرار النظام: تكبير تصغير وإغلاق.

فهذا البرنامج سيتطلب منك كتابة عدة أسطر في الكود :blink: .

مثال على هذا الكود في لغة الباسكال الشيئية:

program Window1;

uses
Windows, Messages;

const
 AppName = 'Window1';

function WindowProc( Window: HWND; AMessage,WParam,
   LParam: Longint): Longint; stdcall; export;
begin
WindowProc:= 0;
case AMessage of
 WM_DESTROY:
   begin
     PostQuitMessage(0);
     Exit;
   end;
 end;
WindowProc:= DefWindowProc(Window, AMessage, WParam, LParam);
end;

{ Register the window class}
function Winregister: boolean;
var
  WindowClass: TWndClass;
begin
WindowClass.style:= CS_HREDRAW or CS_VREDRAW;
WindowClass.lpfnWndProc:= @WindowProc;
WindowClass.cbClsExtra:=0;
WindowClass.cbWndExtra:=0;
WindowClass.hInstance:= HINSTANCE;
WindowClass.hIcon:= LoadIcon(0,IDI_APPLICATION);
WindowClass.hCursor:= LoadCursor(0,IDC_ARROW);
WindowClass.hbrBackground:= hbrush(color_window);
WindowClass.lpszMenuName:= nil;
WindowClass.lpszClassName:= AppName;

Result:= RegisterClass(WindowClass) <> 0;
end;

{ Create the Window Class}
function WinCreate: HWND;
var
  hWindow: HWND;
begin
hWindow:= CreateWindow(AppName,'Arabe Team 2000: Object Pascal Window',
       WS_OVERLAPPEDWINDOW, cw_UseDefault, cw_UseDefault,
       cw_UseDefault,cw_UseDefault,0,0,HINSTANCE,nil);
if hWindow <> 0 then
  begin
    ShowWindow(hWindow, CmdShow);
    UpdateWindow(hWindow);
  end;
Result:= hWindow;
end;

var
 AMessage: TMsg;
 hWindow: HWND;

begin
 if not Winregister then
   begin
     MessageBox(0,'Register failed', nil , MB_OK);
     Exit;
   end;

 hWindow:= WinCreate;
 if hWindow = 0 then
   begin
     MessageBox(0,'WinCreate failed', nil , MB_OK);
     Exit;
   end;
 while GetMessage(AMessage,0, 0, 0) do
   begin
     TranslateMessage(AMessage);
     DispatchMessage(AMessage);
   end;
 Halt(aMessage.wParam);
end.

... هل ترى طول هذا الكود :o , يا ترى كيف سيبسط هذا الكود بديلفي؟ كيف ستنجح ديلفي في تبسيط الأمر على المبرمج و تقليل هذا التعقيد الذي لابد منه لإنجاز برنامج لا يحتوي سوى على نافذة لا يعمل شيئا!!!!!!

سأعطى الكود الذي ستكتبه عند فتح مشروع جديد في ديلفي بالطريقة التي بينها أخي عروة -أنظر في مشاركته أعلاه-, بعد فتح المشروع أكتب ما يلي:

أظن انك ترى البساطة التامة في تحرير هذا الكود...

ليس هناك خطأ بالتأكيد, B) فرؤيتك جيدة :lol: وليس هناك سهو مني في كتابة الكود: نعم لا يوجد شيء no thing, nada, rien de rien, لم أكتب شيئ.

ب"لا شيء " تستطيع كتابة برنامج في ديلفي "لا يعمل شيئا".

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

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

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

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

B) لغة جميلة أليس كذلك!!

تم تعديل بواسطه ikossan
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أيكوسان ...... ؟؟؟؟

..

.

..

وتقول لست أستاذ ؟

عندما أقترحت ترقية حسابك إلى خبير دلفي في المنتدى , قالت لي الإدارة , خبير دلفي ؟ , أنه خبير في كل شيء

ماشاء الله نظرة سريعه في أرشيف مشاركات عضويتك ويتضح إلمامك بأمور كثيرة , وهذا ما أسمية أستذه

الأستذه ياشباب هي أن تعرف شيء عن كل شيئ وكل شيء عن شيء

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

شكر ا لك اخي عروة وايكوسان على هذه الدروس :rolleyes:

ارجو قبولي طالبا بالدرجة الاولى ومن ثم مشاركا صغيرا في دروسها ;)

اود ان اوضح نقطةوهي انه يوجد انواع للرسائل في الدلفي :D

فتعليمة showmessage مثلا هي رسالة خاصة بالدلفي ولاعلا قة للويندوز بها :o

وذلك كما وضح اخي ايكوسان حين قال (h)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ORWA: أنا أطالب إدارة المنتدى بشدة أن تتم ترقيتي وبسرعة وأناشد المنتدى أن يعطيني رتبة أستاذ "لا شيء في كل شيء".

Hell.gif

وفي انتظار الرد السريع ننتظر من الأستاذ عروة مزيدا من الإبداع في حلقات دروس ديلفي التطبيقية

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

انا غاضب جدا اذ انني كتبت درس حوالي الساعة :wacko: :( :angry: <_< :s من فكري عن المصطلاحات في الدلفي وعند الضغط على اضافة رد لم يضف؟؟؟؟؟؟؟؟؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أنا مسجل حضوري كتلميذ فهل تقبلوني

تحياتي SAKR188 سابقا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سأجلس بجنبك يا أحمد

Exam.gif

okay

زاهر سعيد: ما المشكلة يا أخي؟

تم تعديل بواسطه ikossan
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

أنا من المتابعين للدرس

وشكراً لكم

تسجيل حضور وأرغب في تقديم الامتحان :lol: :lol: :lol:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بس يريت متتكلمش كثير يا مراد علشان أنا بحب أركز في الدرس

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سلامي عليكم

أرجو قبولي معكم

:) :) :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا اخى عروة لك الدرس ممتاز الى الامام

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

زهذا بعد الاذن من صديقي عروة و ايكوسان

العنوان مصطلحات

المكون :compnent وهو جزء برمجي يتضمن شيفرة ثنائية وينجز وظائف محددة معرفة مسبقا

مثال وسم نصي label

2_ الخاصة property تحدد عمل المكون

وذلك يتضمن باب الاحداث قائمة أحداث المكون الاحداث كنتيجة لتفاعل المستخدم مع المكون

مثال عند النقر على مكون يتولد حدث يخبرك ان المكون قد نقر

3_الحدثEvent ماذا اه هو الشيء ما يحصل كنتيجة لتفاعل المكون مع المستخدم او مع الويندوز

4_معامل الحدث Event Handler هو مقطع من الشيفرة مستحضر الى تطبيقك بغية الاستجابة لحدث ما

5_ الكائن objectهو مثل المكون التي تم شرحها سابقا اي وهو جزء برمجي يتضمن شيفرة ثنائية وينجز وظائف محددة معرفة مسبقا ولكن المكونات هي كائنات بس ليس كل الكائنات مكونات

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

ولكن المهم لكل طالب لهذه اللغة ان يعرف انتبه عليك ان تعرف؟؟؟

ان البرمجة ليست كتابة مجرد شيفرة بل انها تالف وتوحيد فهم المتطلبات البرمجية وعندها كتابة الشيفرة

6_ الوحدة ها ها هي الملف النصي والذي يقوم الدلفي بتصريف محتواه الى شيفرة الة

او هي ملف نصي يمكن تصريه في وحدة شيفرة

لاتكلم عن انواع هذه الوحدات تطبيقات الدلفي GUI تشتمل على وحدتين على الاقل (لها التوسعDPR)

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

من الممكن انك لاحظت انني اقول دائما تطبيقات دلفي gui هذا لانه اريد التفيق بين تطبيقات guiوبين نظام الطرفية تطبيقات نظام الطرفية هي تطبيقات ويندوز 32بت والتي تعمل في اطار الطرفي اي مربع الدوسوهذه التطبيقات ليس اديها نموزج رئيسي ومن الممكن ان تحوي او لاتحوي نماذج اخرىولديها وحدة او اكثر من وحدة

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

اما محتوى الوحدة فقد قام اخي عروة بشرحها

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا زاهر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أهلا يازاهر إنت غبت كثير خير إن شاء الله

نسيت أين مكتبة المكونات التي وعدتنا بها و لا إنت سحبت كلامك

مممممممممممممممممممممممممممممممممممممممم

اوكي

مرحبا بك مجددا

تحياتي

أحمد صقر

SAKR188

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

:) حبيبي انت (h)

انا مانسيت وحقك اي والله بعتذر

بس الي حصل انه حدثت عندي بعض المشكلات في الجهاز فقمت بفرمتته

والان الدلفي ليست مثبتة عندي :(

ولكن هاليومين ان شاء الله سبحانه وتعالى

بعد ان اثبتها والتعاون مع اخي عروة لكي يتولى مهمة الشرح

كما وعد ايضا

انفذ الجزء المطلوب مني :D

تحياتي من جديد صديقي احمد (h)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

بارك الله فيك :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يبدو ان الاخ عروة مشغول؟؟

سوف اضيف بعضا من المصطلحات

ايضا بعد الاذن :D

والان اتكلم قليلا عن الكلمة الاساسية var

المعنى متغير

الاستخدام تستخدم للتصريح عن قسم شيفرة يصرح فيه عن متغيرات

مثال

var
x:Integer;
x:Integer;

وعلينا التصريح عن هذه المتغيرات قبل استخدامها في قسم خاص من الشيفرة اي في القسم var من الوحدة

ولكن بامكانك ايضا وضع القسم var في تابع Function او اجرائيةprocedureوهذا مثال

procedure form1.test
var
s:string;
begin
s:'hellow World'
label1.Caption:=s
end;

التصريح عن متغيرة

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

وهذه الانواع التي اعلم بها

القيمة الدنيا والعليا الحجم بالبايت نمط البيانات

Variant 16 varies

Comp 8 -9'223'372'036'685'854'775'808

الى+تقريبا نفس الرقم

booleam 1 true or false

Currency -8 -922,337,203,685,477,5807

الى+تقريبا نفس الرقم

Extanded 10 3.4.

مضروبة10اس-324الى3.4مضروبة10اس

+324

ويوجد ايضا الshortint

byte

char

widechar

smallint

وايضاالReal

Doble

single

cardinal

word

longint

int64

بالاضافة الى الInteger

اما الفوراق بينهم فمن المبكر التحدث عنها :rolleyes:

واترك الامر الى ان يصل الاخ عروة الى هذه النقطة

اخيرا اقدم نصيحة الى كل راغب بتعلم هذه اللغة

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

وعندما تحاول نعرفة سبب هذا التحذير او الرسالة

ستتكون لديك خبرة ولن تتكرر معك الاخطاء :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

من فضلك اين الدرس الثانى

اخوك

احمد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .