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

الدرس العملي الأول (دورة الدلفي)

مغلق
بدأه ORWA في 24 مارس 2005 · 27 رد · 7,802 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الدرس العملي الأول . -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 في 24 مارس 2005 في 02:14

#2

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

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

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

تم تعديل هذه المشاركة بواسطة ikossan في 24 مارس 2005 في 02:45

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

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

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

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

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

:lol: :lol: :lol:

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

وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان

.............................................................................................................................

لنبدا دورة دلفي

سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال

التحكم بمنفذ الطابعة عن طريق الدلفي

سلسلة دروس تعلم قواعد بيانات Midas

هيا لنبدأ بالApi

أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي

كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة

مكتبه الأكواد, أكواد وبرامج دلفي

.............................................................................................................................

18_07_05_10_53_18_1121752398da3wa_18.gif

#4

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

برايفت الى ikossan

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

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

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

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

#5

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

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

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

#6

السلام عليكم

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

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

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

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

وشكرا

Skype%20Candy.jpg
#7

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

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

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

#8

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

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

وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان

.............................................................................................................................

لنبدا دورة دلفي

سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال

التحكم بمنفذ الطابعة عن طريق الدلفي

سلسلة دروس تعلم قواعد بيانات Midas

هيا لنبدأ بالApi

أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي

كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة

مكتبه الأكواد, أكواد وبرامج دلفي

.............................................................................................................................

18_07_05_10_53_18_1121752398da3wa_18.gif

#9

السلام عليكم. :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 في 26 مارس 2005 في 20:51

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#10

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

..

.

..

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

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

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

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

#11

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

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

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

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

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

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

اصحيح ان العرب في هذه الحياة.......هذا بالاسم فقط

لالالالابالاحلام ....او..لاكمال العدد؟؟؟؟؟؟

#12

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

Hell.gif

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

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#13

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

اصحيح ان العرب في هذه الحياة.......هذا بالاسم فقط

لالالالابالاحلام ....او..لاكمال العدد؟؟؟؟؟؟

#14

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

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

#15

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

Exam.gif

okay

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

تم تعديل هذه المشاركة بواسطة ikossan في 4 أبريل 2005 في 02:29

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#16

السلام عليكم

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

وشكراً لكم

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

اللهم صل وسلم وزد وبارك على سيدنا محمد وعلى آله وصحبه وسلم

تعلم كيف تقرأ من ملف باستخدام لغة السي

Routers Programming-الدرس الأول

#17

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

#18

سلامي عليكم

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

:) :) :)

20_09_05_04_45_39_1127216739saudi_aC_.gif
#19

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

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

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

{ربى زدنى علما}

#20

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

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

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

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

مثال وسم نصي label

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

اصحيح ان العرب في هذه الحياة.......هذا بالاسم فقط

لالالالابالاحلام ....او..لاكمال العدد؟؟؟؟؟؟

#21

شكرا زاهر

#22

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

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

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

اوكي

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

تحياتي

أحمد صقر

SAKR188

#23

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

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

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

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

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

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

كما وعد ايضا

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

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

اصحيح ان العرب في هذه الحياة.......هذا بالاسم فقط

لالالالابالاحلام ....او..لاكمال العدد؟؟؟؟؟؟

#24

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

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

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#25

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

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

ايضا بعد الاذن :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:

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

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

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

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

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

اصحيح ان العرب في هذه الحياة.......هذا بالاسم فقط

لالالالابالاحلام ....او..لاكمال العدد؟؟؟؟؟؟

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

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