المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : مجموعة دروس للمبتدئين في الفيجوال بيسك : مبادئ و أساسيات البرمجة



Wolf Sniper
09-03-2003, 10:50 AM
السلام عليكم ...
تمر البرمجة الأن بمرحلة مهمة من التطور في المجتمع العربي فقد ازداد إهتمام الناس بها و الرغبة في تعلم إحدى لغاتها .
سنتطرق هنا لمقدمة بسيطة ثم بعد ذلك سندخل في الموضوع .
تتعدد لغات البرمجة و تختلف أنواعها حيث لكل منها ميزاته و إمكانياته و لكن أشهرها : لغة البيسك و لغة السي و الدلفي و طبعاً لا ننسى الباسكال التي تعتبر من أساسيات المبرمج و طبعا هنالك الكثير منها و لكن هذه اللغات تقريباً هي الأشهر .

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

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

سوف نتكلم في بعض دروسنا عن :
صندوق الأدوات و الأدوات الرئيسية فيه – ما هي المتغيرات أو المتحولات – الطرق السليمة للتعريف عن المتغيرات داخل البرنامج – الطرق السليمة لكتابة الشفرة ( Code ) – أنواع المتغيرات و اختيار المناسب لها في برنامجك – صناعة عدة برامج للتعريف عن كيفية استخدام الأدوات ( سوف نتطرق تقريباً لكل أداة ببرنامج صغير ) – أهم خصائص كل أدة من الأدوات – كيفية التعامل مع النوافذ و ترتيبها – مجموعة مهمة من الشفرات التي تساعدك في عمل البرامج ... و هناك الكثير أيضاً من الدروس ، المدعمة طبعاً بالصور . أسأل الله أن يوفقني لكتابتها جميعاً .

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

فلنبدأ : بسم الله الرحمن الرحيم .
-------------------- الدرس1 --------------------
http://wsniperfile.jeeran.com/ToolsBar_Text.jpg
أولاً / صندوق الأدوات الخاص ببرنامج فيجوال بيسك :
http://wsniperfile.jeeran.com/ToolsBar.jpg
يحتوي البرنامج على أدوات مهمة جداً سوف تحتاجها دائماً في كتابتك للبرامج و سأقوم بتعريف الأساسية فقط ( لأن هناك أدوات يمكن إضافتها ) .
ملاحظة / سوف أتطرق لاحقاً لخصائص كل أداة و سأذكر أهمية ووظيفة كل أداة الأن فقط مع تذكيري لكم بأهمية تجربة كل أداة بنفسكم لتأكيد المعلومات :
1 – Pointer : http://wsniperfile.jeeran.com/Pointer.jpg
و هو مؤشر لا يقوم برسم أي أداة داخل النموذج و لكن تكمن أهميته في تحديد باقي الأدوات داخل النموذج لإجراء التعديلات المختلفة عليه .
2 – Picture Box : http://wsniperfile.jeeran.com/Picture.jpg
فائدة هذه الأداة لوضع صورة داخل الإطار الذي رسمته بها على النموذج .
3 – Label : http://wsniperfile.jeeran.com/Label.jpg
تستخدم لوضع نص في النموذج كعنوان أو ما شابه .
4 – Text Box : http://wsniperfile.jeeran.com/Text.jpg
تشبه هذه الأداة الأداة Label و لكن تستخدم لإضافة نص من قبل المستحدم ( المستخدم هو من يستخدم البرنامج بعد الإنتهاء من صنعه فتعود على هذه الكلمة ) حيث تستخدم هذه الأداة على الأغلب لذلك .
5 – Frame : http://wsniperfile.jeeran.com/Frame.jpg
لرسم إطار في النموذج بعنوان صغير .
6 – Command Button:http://wsniperfile.jeeran.com/Command.jpg
وهو أداة شهيرة ومعروفة في نظام ويندوز وهو زر يضغط عليه للقيام بعملية معينة .
7 – Check Box و Option Button :http://wsniperfile.jeeran.com/Check&Option.jpg
تمكن هذه الأداة للمستخدم بتحديد أحد الخيارات الموجودة . إذ يجب أن يكون في البرنامج أكثر من خيار طبعاً ليستطيع المستخدم تحديد أحدها.
8 – List Box و Combo Box : http://wsniperfile.jeeran.com/Combo&List.jpg
لعرض مجموعة من الإختيارات ضمن قائمة .
9 – Vscroll Bar و HScroll Bar :http://wsniperfile.jeeran.com/Scroll.jpg
و هم أشرطة لتحريك المحتويات للأعلى و الأسفل و اليمين و اليسار .
ملاحظة / هناك عدة إستخدامات لهما أيضاً و لكن لن يعملا بالشكل الصحيح لأنهما يحتاجان إلى التعديل في خصائصهما و يحتاجان لوضع شفرة لهما .
10 – Timer : http://wsniperfile.jeeran.com/Timer.jpg
من أهم أدوات البرنامج و هي مؤقت زمني تستطيع تحديد سرعته في الثانية. و يتميز بأنه لا يظهر عند تشغيل البرنامج بل يبقى في الذاكرة و له استخدمات كثيرة كتحريك الأدوات الأخرى في النموذج .
11 – DriveListBox : http://wsniperfile.jeeran.com/Drive&List.jpg
لعرض مكونات الهارد ديسك من أقراص و تقسيمات .
12 – DirListBox :
لعرض المحتويات و المجلدات التي توجد على قرص معين ( مثل C:\) .
13 – FileListBox :
لعرض الملفات الفرعية في المجلد ذات الإمتدادات EXE و MPEG و غيرها .
ملاحظة / ترتبط الأدوات الثلاث السابقة ببعضها عن طريق شفرة سوف نتطرق إليها لاحقاً .
14 – Shape : http://wsniperfile.jeeran.com/Shape.jpg
لرسم أشكال متنوعة ( دائرة ، مستطيل ... ) .
15 – Line : http://wsniperfile.jeeran.com/Line.jpg
لرسم خط مستقيم أو مائل .
16 – Image : http://wsniperfile.jeeran.com/Image.jpg
لوضع صورة ضمن الإطار الذي رسمته في النموذج و هذه الأداة نشبه الأداة Picture و لكنها تتميز عنها بالخاصية Stretch و هذا لا يعني أنها أفضل منها حيث لكل منهما ميزاته .
17 – Data : http://wsniperfile.jeeran.com/Data.jpg
و هي أداة مهمة لعمل قاعدة بيانات عن طريق الإستعانة ببرامج أخرى مثل Access ربما سنتطرق إلى برنامج يحتوي هذه الأداة .
18 – Ole : http://wsniperfile.jeeran.com/Ole.jpg
تقوم هذه الأداة باستدعاء أي ملف أو برنامج أو فلم أو صورة أو أي شيء تقريباً أنا بصراحة ما عندي خلفية كثيرة عنها .
--------------- يتبع ---------------

لن أكمل الأن حتى أرى رأيكم في الموضوع من أجل أن أكمل أو لأ ؟ إن شاء الله يكون عجبكم و سامحوني على هذا الدرس لأن أغلبه نظري و لكن الدروس القادمة سندخل في لب الموضوع. و أدعوكم إلى متابعة دروسي أول بأول لأن مواضيعي كلها تقريباً مرتبطة ببعضها .
أخوكم Wolf Sniper

Flanteus
09-03-2003, 11:27 AM
موضوع رائع جدا :cool:
وأرجو ان تكمل .......;-) د
عند موقع الأخ PRG of RPG ... مختص بالبرمجة :) ...
وبرمجة الألعاب :أفكر: ....
موقع رائع بس ما اكتمل:": ....

Mr. Black Man
09-03-2003, 11:15 PM
شكراً لك على الموضوع الرائع و أتمنى إنك تكمل الدروس ;) :)

Wolf Sniper
10-03-2003, 10:07 AM
مشكورين إخوانيflanteus و MR. BLACK MAN على ردودكم و إن شاء الله تكون الدروس تفيدكم و الدرس الثاني على الأبواب ;-)

Mr. Black Man
10-03-2003, 10:32 PM
الرسالة الأصلية كتبت بواسطة Wolf Sniper
مشكورين إخوانيflanteus و MR. BLACK MAN على ردودكم و إن شاء الله تكون الدروس تفيدكم و الدرس الثاني على الأبواب ;-)

أنتظر الدرس الثاني ;) :)

Wolf Sniper
11-03-2003, 05:27 AM
الدرس الثاني :
السلام عليكم ...
سوف نتطرق في هذا الدرس عن كيفية كتابة الشفرة و كيفية التعامل مع النوافذ في النموذج و أهم خصائص الأدوات القياسية .
-------------------- الدرس2 --------------------
http://wsniperfile.jeeran.com/lesson_2/كتابة%20الشفرة.jpg
ثانياً / كتابة الشفرة :
- كيف أقوم بكتابة شفرة في أحد الأدوات التي رسمتها في النموذج و التي درسناها في الدرس الماضي ؟
حسناً قم بالضغط على الإطار الذي رسمته بأي أداة من الأدوات مرتين و سوف تظهر لك صفحة بيضاء يوجد بها بعض الأوامر . انظر الصور
http://wsniperfile.jeeran.com/lesson_2/Click_on_Code.jpg
http://wsniperfile.jeeran.com/lesson_2/Code.jpg
-------------------------
- ما هي تلك الخيارات الموجودة فوق صفحة الشيفرة في الصورة ؟ ( مهم )
هذه الإختيارات و التي تحتوي على بعض الأسماء مهمة جداً ( انتبه أنا أقول مهمة ) لأن معظم أخطاء الشباب تكون في كتابتهم للشفرة في المكان الغير مناسب و سوف أوضح ذلك الأن :
الإخيارات الموجودة في الصورة فوق على اليسار هي
1 - لأسماء الأدوات التي أضفتها في النموذج و تريد كتابة شفرة لها و تحتوي أيضاً على
2 - أسماء النوافذ أو النماذج التي أضفتها في برنامجك و على
3 - قائمة مهمة جداً هي General و التي عند اخيارها يمكنك عندها التصريح ( التعريف ) بأحد المتحولات . سوف أتطرق إليها في الدرس الثالث .
أرجو أن تكون قد استوعبت النقطة السابقة لأنها مهمة .

أما الإختيارات الموجودة في الصورة فوق على اليمين هي مجموعة الأحداث ( الإجراءات ) التي تريد أن تتنفذ الشفرة عند حدوثها .
مثال / خلنا ناخذ الصورة نفسها فنحن الأن من خلال تلك الصورة نريد كتابة شفرة للعنصر Command1 عندما يتم الضغط عليه Click)) و توجد أيضاً خيارات أخرى غير Click مثل Mouse move أي عندما تمر الفأرة فوق الزر Command1 فسوف تنفذ الشفرة التي ستكتبها.
إن شاء الله أكون وضحت الصورة لأني أحاول الشرح بالتفصيل الممل .
-------------------------
- أين أقوم بكتابة الشفرة ؟
يجب كتابتها ما بين الجملة الأولى الظاهرة في الصورة :
Private Sub Command1_Click()
و الجملة الثانية :
End Sub
-----------------------------------------------------------------
http://wsniperfile.jeeran.com/lesson_2/معلومات%20مهمة.jpg
ثالثاً / معلومات مهمة :
- كيف أقوم بالرجوع إلى النموذج Form1 ؟
قم بالضغط عليه مرتين من مستكشف المشاريع Project Explorer الموجود في النافذة فوق على اليمين .
http://wsniperfile.jeeran.com/lesson_2/Project_Explorer.jpg
-------------------------
- ما هي تلك النوافذ الثلاث الموجودة على يمين صفحة البرنامج ؟
الأولى / هي نافذة مستكشف المشاريع :
كما ذكرنا سابقاً و يوجد بها جميع النماذج التي أضفتها في برنامجك ( مشروعك ) و يمكن الإنتقال من واحد إلى آخر عن طريق الضغط مرتين عليه .
الثانية / هي نافذة الخصائص :
http://wsniperfile.jeeran.com/lesson_2/Properities.jpg
فعند إختيارك لأحد العناصر التي رسمتها في نموذجك فسوف تظهر خصائصه في هذه النافذة . وسوف أقوم بذكر أهم خصائص كل أداة من الأدوات الرئيسية لاحقاً .
الثالثة / نافذة Form Layout Window :
http://wsniperfile.jeeran.com/lesson_2/Layout_window.jpg
و هي توضح المكان الذي سوف يوجد فيه النموذج على الشاشة أثناء تشغيل البرنامج . و يمكن تحريك النموذج أينما تحب و ذلك بالضغط مرتين من نافذة مستكشف المشاريع على النموذج الذي تريد تحريكه ثم الضغط عليه مرة واحدة مع الســحب من نافذة Form Layout Window .
إذا كنت تريد وضع النموذج في المنتصف إضغط بالزر الأيمن بلفأرة على النموذج داخل نافذة Layout window ثم اختر Startup Position ثم Center Screen . انظر الصورة
http://wsniperfile.jeeran.com/lesson_2/Right_Click_Layout.jpg
-------------------------
- كيف أظهر النوافذ مرة أخرى إذا أغلقتها بالخطأ ؟
حسناً لا تخاف تستطيع استرجاع هذه النوافذ بالضغط على الأزرار الموجودة في المنتصف فوق و الثلاثة التي على اليسار هي المطلوبة .أنظر الصورة
http://wsniperfile.jeeran.com/lesson_2/icons_window.jpg
-------------------------
- كيف أقوم بتجربة برنامجي ؟
هناك أزرار موجودة أيضاً في المنتصف فوق . إضغط على الزر الذي عليه إشارة Play لتجربة البرنامج . و اضغط على Break أو End لإيقافه .
http://wsniperfile.jeeran.com/lesson_2/Play_icons.jpg
-------------------------
- كيف أقوم بإضافة نموذج آخر لبرنامجي ؟
و ذلك بالضغط على قائمة Project ثم Add Form . أو عن طريق الزر الموجود فوق على اليسار . أنظر الصورة
http://wsniperfile.jeeran.com/lesson_2/Add_Form_icon.jpg
وبعد ذلك إختر الشكل Form ثم Open . طبعاً كما ترى هناك أنواع من النماذج التي يمكن إضافتها و لكننا لن نتطرق إلا للشكل القياسي .
-----------------------------------------------------------------
http://wsniperfile.jeeran.com/lesson_2/ترتيب%20العناصر.jpg
رابعاً / ترتيب العناصر داخل النموذج :
تستطيع ترتيب أي عنصر من العناصر عن طريق تحديده ثم الضغط على القائمة Format . سوف تجد عدة خيارات و لكن أكثرها استعمالاً هو الخيار Center in Form الذي يستخدم لوضع العنصر في المنتصف إما من الطول أو العرض .
-----------------------------------------------------------------
http://wsniperfile.jeeran.com/lesson_2/خصائص%20الأدوات.jpg
خامساً / أهم خصائص الأدوات القياسية :

1 –Name : هذه الخاصية تعتبر من أهم الخصائص حيث إذا قمنا بتسمية العنصر بأي اسم فإن هذا الإسم هو الذي نستخدمه في الصفحة الخاصة لكتابة الشفرة و هو الإسم الذي يتعرف عليه Visual Basic للعنصر . انتبه نستخدم هذه الخاصية فقط عند كتابة الشفرة . و توجد في كل الأدوات .

2 – Caption : و هي أداة مهمة أيضاً نستخدمها لكتابة أي عبارة على العنصر . و هي توجد في الأدوات التالية : - Label ـ Command Button
- Frame ـ Check Box
ـ Option Button - Data
3 – Text : من أجل الكتابة داخل الأداة Text . مثل الخاصية Caption و لكن هي خاصة بالأداة Text .

4 – List :من أجل الكتابة داخل الأداة List Box .
ملاحظة / إذا كنت تريد الإنتقال إلى السطر التالي في هذه الخاصية إضغط على Ctrl + Enter
أما إذا انتهيت من الكتابة فاضغط Enter لكي يظهر الكلام الذي كتبته .

5 – Back Color : و هي من أجل وضع لون على خلفية العنصر . و توجد في الأدوات :
- Picture - Label - Command Button و لكن لن يتفعل اللون إلا إذا غيرت الخاصية Style و جعلتها Graphical .
- Text Box - Frame - Check Box - Option Button
- Data

6 – Font : لتحديد نوع الخط و حجمه كما في برنامج الوورد . و توجد في معظم الأدوات .

7 – ForeColor : لتحديد لون الخط . وهي مرتبطة طبعاً بالخاصية Font . و توجد في بعض الأدوات .

8 – Height و Left و Top و Width : لتحديد أبعاد الأداة المرسومة على النموذج .

9 – Visible : لجعل العنصر المرسوم على النموذج عند تشغيل البرنامج مرئي أو غير مرئي. و توجد في جميع الأدوات .

10 – Alignment : خاصية مهمة في الأداة Label من أجل وضع الكلام إما على اليمين أو الوسط أو على اليسار .

11 – BackStyle : و هي أيضاً خاصية مهمة للأداة Label و التي تجعل خلفية العنصر شفافة أو غي شفافة .

12 – Right to Left : خاصية موجودة في بعض الأدوات مثل Label و هي مهمة إذا كنت تريد الكتابة باللغة العربية . حيث إذا أردت مثلاً كتابة / ( سيارة . ) فإذا كانت هذه الخاصية True فإن النقطة سوف تظهر على يسار كلمة سيارة و أما إذا لم تكن هذه الخاصية مفعلة يعني False قسوف تظهر النقطة على يمين كلمة سيارة .

13 – Cancel : خاصية موجودة في الأداة Command Button و هي لتفعيل زر ESC الموجودة على الكيبورد . بحيث إذا قام المستخدم بالضغط عليه أثناء عمل البرنامج فسيتم إجراء الحدث Click عليه .

14 – Default : خاصية موجودة أيضاً في الأداة Command Button و هي لتفعيل زر Enter الموجود على الكيبورد . بحيث إذا قام المستخدم بالضغط عليه أثناء عمل البرنامج فسيتم إجراء الحدث Click عليه .
ملاحظة مهمة / لا يمكن إعطاء أكثر من أداة الخاصية Cancel و Default . فإذا أعطيت مثلاً أحد الأزرار الخاصية Cancel و جعلتها True فإن باقي الأزرار سوف تأخذ القيمة False .
15 – Enable : خاصية مهمة موجودة في بعض الأدوات لجعل الأداة غير مفعلة عند عمل البرنامج . و هي تختلف عن الخاصية Visible لأنها تجعل العنصر يظهر على النموذج و لكنه غير مفعل عند عمله .
ملاحظة مهمة / الخاصية Enable في الأداة Timer تعني أن التوقيت يعمل (كمثل On و Off) فإذا كانت True يعني أن الأداة Timer تعمل و العكس .

16 – Interval : خاصية موجودة في الأداة Timer لتحديد سرعة العداد في الثانية .
ملاحظة / كل رقم يعني ملي في الثانية .
مثال : إذا وضعت الرقم 1000 فهذا يعني أن العداد سوف يمشي بسرعة 1000 ملي في الثانية يعني كل ثانية . لأن 1000 ملي = 1 متر .
--------------- يتبع ---------------
بانتظار ردودكم و تعليقكم على الدرس . و لا مانع من الإضافة على بعض كلامي و التصحيح إن كان هناك خطأ . بس إن شاء الله يكون الشرح واضح .
الدرس القادم مهم لذلك أنصح بفهم الدرسين السابقين لأنهما مدخل للدروس القادمة .
ملاحظة / الدرس القادم سيتأخر قليلاً يعني كم يوم علشان تجربون البرنامج و الدروس .
و شكراً

Mr. Black Man
11-03-2003, 05:55 AM
مشكورين على الدرس الثاني و طريقة شرحك أكثر من رائعة فأتمنى إنك تواصل على هذا المستوى الأكثر من رائع ;)

PRG of RPG
11-03-2003, 09:55 PM
السلام عليكم

وأخيراً أرى مواضيع تثلج الصدور :) :)
لطالما إعتبرت دروس البداية هي أهم الدروس لأنها ... سيقرر القارئ من أول درس أكمل أم لا ....

سوف أكتب عن برنامج فيجوال بيسك Visual Basic الذي تتطورت فيه حتى الأن إلى مستوى المتوسط تقريباً
ممتاز .... ارجو منك مشراكتنا فيما تعلم :)
مستواي : مبتدأ على ما أعتقد :أفكر:

×× إستمر في الدروس ××

تحياتي :)

Wolf Sniper
12-03-2003, 08:22 AM
MR. BLACK MAN
العفو أخوي و القادم سيكون أفضل إن شاء الله

PRG of RPG
شكراً على ردك و إن شاء الله أكون عند حسن ظنك .

ملاحظة / إن شاء الله الدرس القادم راح أحطه بعد يوم أو يومين لأنه يحتاج تركيز من أجل كتابته و أنبه أن الدروس القادمة سوف تزداد أهميتها .
وشكراً;-)

Wolf Sniper
14-03-2003, 02:28 AM
الدرس الثالث :

السلام عليكم ...
بعدما تعلمنا كيفية كتابة الشفرة و كيفية التعامل مع النوافذ و بعض خصائص الأدوات سوف نتابع التحدث عن مجموعة أخرى منها و سوف نتحدث في هذا الدرس عن المتحولات و أنواعها و عن بعض الشفرات و عن كيفية كتابة القوئم .
-------------------- الدرس3---------------------
http://wsniperfile.jeeran.com/Lesson_3/تابع%20بعض%20الخصائص.jpg
تابع / بعض الخصائص المهمة للأدوات :

17 – MultiLine : هي خاصية مهمة موجودة في الأداة Text تعمل على جعل الكلام داخل الإطار الذي رسمته بها يظهر سطراً بسطر . فإذا كنت قد جعلت هذه الخاصية False فلن يظهر الكلام الذي كتبته تحت بعضه البعض . حاول تجربة هذه الخاصية بنفسك .
18 – PasswordChar : هي خاصية أيضاً للأداة Text تستخدم من أجل إخفاء ما قد يكتبه المستخدم أثناء عمل البرنامج .كما هو موجود تماماً في مواقع البريد الإلكتروني عندما تريد إدخال كلمة السر فلا يظهر الكلام بل يظهر رموز . فلو فرضنا أنك وضعت الرمز ( * ) كقيمة في هذه الخاصية فإن أي حرف سوف يكتبه المستخدم سيستبدل بهذا الرمز مع الإحتفاظ بالحروف الرئيسية التي كتبها المستخدم .
19 – Scroll Bars : خاصية موجودة في الأداة Text تستخدم لوضع شريط تحريك بجانب العنصر . إما عللى اليمين أو اليسار أو الأسفل ...
20 – Mouse Pointer : هي خاصية موجودة في أغلب الأدوات و هي تجعل شكل الماوس يتغير عندما تمر فوق العنصر الذي غيرت فيه هذه الخاصية . و هناك أشكال متعددة حاول تجربتها .
21 – Max Button : خاصية للنموذج نفسه Form . اضغط على أي مكان داخل النموذج لا توجد عنده أداة و سوف ترى خصائصه . هذه الخاصية تستخدم لتفعيل زر التكبير الموجود في النموذج .
22 – Mini Button : خاصية أيضاً للنموذج Form . تستخدم لتفعيل زر التصغير ( أي إنزال النافذة إلى الـ TaskBar ) في النموذج .
23 – MoveAble : خاصية للنموذج لها قيمتين True و False . فإذا اخترت False فإن المستخدم لن يستطيع تحريك النموذج إلى أي مكان في الشاشة . و العكس في القيمة True .
24 – Tab Index : هي خاصية ثانوية من أجل زيادة التفاعل في برنامجك و هي موجودة في أغلب الأدوات و أكثرها استخداماً لها الأداة Command Button و Text . فكل أداة يجب أن تأخذ قيمة تختلف عن الأخرى و من اسمها فهي متعلقة بالزر Tab في الكيبورد . فكلما ضغط المستخدم عليه فسوف ينتقل التفعيل لعنصر آخر . و أنت هنا سوف تحدد المكان الذي سوف ينتقل التفعيل له فمثلاً / إذا وضعت ثلاثة عناصر من الأداة Command Button بالترتيب من فوق لتحت فاجعل قيمة الأول (صفر) و الثاني (1) و الثالث (2) فسوف ينتقل التفعيل من أعلى لأسفل بالترتيب .

سوف أكتفي بهذه القدر من الخواص رغم أن هناك مجموعة مهمة لم أذكرها و لكن هذه بعضها و قد وضحت فائدتها .
-----------------------------------------------------------------
http://wsniperfile.jeeran.com/Lesson_3/المتحولات%20و%20أنواعها.jpg
سادساً / المتحولات و أنواعها :

- ما هي المتحولات ؟
تستخدم المتحولات لتخزين القيم فيها سواءً أكانت أرقام ، حروف ، رموز . و هذه القيم يأخذها المتحول إما من المبرمج نفسه عند كتابته للبرنامج أو من المستخدم عند عمل البرنامج . كما سنرى في البرامج التي سنصممها لاحقاً .
-------------------------
- كيف نعرف المتحولات في البرنامج ؟
يمكنك أن لا تعرف المتحولات داخل برنامجك و لكن هذا قد يؤدي إلى بعض الأخطاء و لذلك يفضل التعريف بها داخل برنامجك و التصريح عن نوع المعلومات أو البيانات التي سوف يخزنها فيه و ذلك عن طريق القاعدة التالية :
dim [y] as [type]
حيث : dim هي أداة التعريف للمتحولات و التي نكتبها في القسم General من الشفرة كما تعلمنا سابقاً .
Y ( بدون القوسين طبعاً لأني أضفتهم فقط للتوضيح بأنهم أمثلة ) هي اسم المتحول و يمكنك تسمية المتحول بأي اسم على أن لا يوجد فراغات فيه مثل : ca r فهذا المتحول غير صالح للإستخدام .
Type ( بدون القوسين أيضاً ) هي نوع المتحول الذي تريد تعريفة و التي تحدد نوع البيانات التي سوف يحملها المتحول .
-------------------------
- ما الفائدة من تعريف المتحول ؟
هناك عدة فوائد منها :
1 – إذا لم تقم بتعريف المتحول عن طريق القاعدة السابقة و أردت أن تستدعي هذا المتحول مرة أخرى في إجراءٍ آخر فسوف يتعرف عليه البرنامج كمتحول جديد .
2 - تقليل الحجم الذي سيأخذه البرنامج في الذاكرة . و أنا برأيي هذا أهم سبب لأني عانيت من هذه المشكلة بنفسي .
-------------------------
- ما هي أنواع المتحولات ؟
لقد أضفت لكم هذا الجدول من أحد الكتب و هو يوضح أنواع المتحولات و وظيفة كل منها و سوف أشير لكم إلى أهم الأنواع التي سنستعملها . الجدول :
http://wsniperfile.jeeran.com/Lesson_3/أنواع%20المتحولات.gif
المجال يقصد به / مجموعة القيم التي سيأخذها المتحول . حيث يعتبر النوع Byte أصغرها و كلما نزلت في الجدول كلما كبرت القيم و أخذت مساحة أكبر في الذاكرة .
كما ترى فأن بعض الأنواع لها قيم هائلة تأخذ من الذاكرة مساحة كبيرة لذا كما قلت سابقاً يجب عليك معرفة النوع المناسب لكل متحول تضعه في برنامجك .
ملاحظة / ربما موضوع المتحولات لم تفهموه جيداً و لكن إن شاء الله مع التطبيق على بعض البرامج التي سوف نعملها سوف تتوضح الصورة .
-------------------------
- كيف أختار النوع المناسب لكل متحول أضيفه في برنامجي ؟
عليك معرفة أو توقع مجموعة القيم التي سيأخذها المتحول : هل هي رقمية أم حرفية أم تاريخ أم قيميتين هما True , False ...

أولاً / الأنواع الرقمية :
تخزن هذه الأنواع قيماً رقمية فقط و طبعاً وجه الإختلاف بينها هو السعة التخزينية و هم :
أنظر الجدول
- Byte
- Integer
- Long
- Single
- Double
- Currency
ملاحظات/1 - في الجدول ستجد جملة مكتوبة ( فاصلة عائمة ) يعني أن النوع يقوم بتقريب العدد إذا احتوى على أعداد عشرية إلى عدد صحيح .
2 – النوع Currency يمكن أن يتعامل مع القيم التي تحتوي على أرقام إلى يمين الفاصلة .
3 – جميع الأنواع السابقة ما عدا الأخير يتعاملون مع الأعداد الصحيحة .
ثانياً / الأنواع الحرفية : و هما نوعين :
- String
- Variant
النوع String يخزن قيماً حرفية فقط و لا يمكنه التعامل مع الأرقام . و إذا تعامل مع قيم رقمية فإنه يحفظها كقيمة حرفية ( أي لا يمكن إجراء العمليات الحسابية عليه ) .
ملاحظة / إذا قمت بتعريف المتحول باستخدام هذا النوع فسوف يكون المتحول ذو طول متغير أما إذا كنت تريده أن يكون ذو طول ثابت فنكتب ما يلي :
Dim y as string * 2
في هذا المثال لقد جعلنا المتحول y بطول محرفين . حيث أضفنا الرمز (*) و عدد المحارف أيضاً .
أما النوع Variant فيمكنه تخزين أي قيمة تريدها سواءً رقمية أو حرفية .
ملاحظة مهمة / إذا قمت بتعريف أي متحول في البرنامج و لم تذكر نوعه مثل :
Dim y
فإن برنامج فيجوال بيسك سيفترض أن نوع المتحول هو Variant .
ملاحظة مهمة / النوع Variant يستطيع أيضاً التعامل مع الأعداد التي تحتوي على فواصل .
ثالثاً / النوع Boolean :
يأخذ هذا النوع قيمتين فقط هما : True أو False و هو نوع جيد للتعامل مع المتحولات التي تأخذ قيماً من النوع On \ Off , Yes \ No ...
ملاحظة / ربما لن نتطرق لهذا النوع في أحد برامجنا التي سأكتبها و لكن ذكرته لأهميته .

هذه هي أهم الأنواع التي سنستخدمها و هذا لا يعني أن البقية ليست مهمة و لكن هذه هي الأهم برأيي .
-----------------------------------------------------------------
http://wsniperfile.jeeran.com/Lesson_3/كتابة%20القوائم.jpg
سابعاً / كتابة القوائم :

القوائم / هي مجموعة الخيارات التي تجدها في معظم البرامج في أعلى الصفحة و أشهرها القائمة File .
طبعاً أنت هنا بصفتك المبرمج تستطيع إضافة أي قائمة تريدها و لكن أولاً سوف نتعرف على كيفية عمل ذلك . تستطيع إضافة أي قائمة تريد من خلال صندوق الحوار Menu Editor. و الذي تستطيع إظهاره عن طريق القائمة Tools ثم الضغط على Menu Editor .
سوف يظهر لك صندوق الحوار التالي :
http://wsniperfile.jeeran.com/Lesson_3/Menu%20Editor.jpg
لكتابة أسماء القوائم أنظر المثال التالي :
http://wsniperfile.jeeran.com/Lesson_3/Menu%20Editor%20Example.jpg
في هذا المثال وضعت ثلاث قوائم هي : File و Edit و View .
انتبه كيف كتبت القوائم حيث أنها لم تسبق بنقاط .
-------------------------
- كيف أضيف النقاظ ؟
كما ترى في الصورة هناك أربع أسهم تشير إلى جميع الإتجاهات ووظيفة هذه الأسهم ما يلي :
السهم الذي يشير إلى الأسفل : لنقل القائمة التي يظللها اللون الأزرق إلى الأسفل .
السهم الذي يشير إلى الأعلى : لنقل القائمة التي يظللها اللون الأزرق إلى الأعلى .
السهم الذي يشير إلى اليمين : لإظهار النقاط الأربع قبل اسم القائمة .
السهم الذي يشير إلى اليسار : لإخفاء النقاط الأربع قبل اسم القائمة .
-------------------------
- ما فائدة هذه النقاط ؟
هذه النقاط إذا أضيفت قبل اسم القائمة فإن هذه القائمة سوف تضاف إلى القائمة التي فوقها و التي لا تحتوي على نقاط قبلها . مثل :
القائمة New و Open و Close و Save و Save As و Exit سوف يضافون إلى القائمة File .و هكذا .
بينما القوائم Edit و View لا توجد بداخلهم قوائم .
-------------------------
- هناك رمز غريب فوق القائمة Save و تحت القائمة Save As . ما هي ؟
هذه الرموز هي عبارة عن : أربع نقاط بالإضافة إلى الرمز (-) وهو الزر الموجود بجانب زر اليساوي على اليسار في الكيبورد . فالأربع نقاط فقد عرفناها أجل ما فائدة الرمز (-) ؟
هذا الرمز نستخدمه لرسم خط داخل القوائم . أنظر الصورة
http://wsniperfile.jeeran.com/Lesson_3/Tow%20Line.jpg
-------------------------
- ما هي الطريقة الصحيحة لكتابة القوائم ؟
أنظر الصورة . الإختيار Caption إذا كتبت أي شيء فيه فهو يعتبر اسم القائمة التي ستضيفها . أماالإختيار Name فهو كما تعلمنا سابقاً هو الإسم الذي يستخدم عند كتابة الشفرة . و أما باقي الإختيارات فلا تغيرها .
-------------------------
- كيف أقوم بكتابة شفرة للقوائم الداخلية ( الموجودة داخل قائمة أخرى ) مثل New ؟
فقط إضغط عليها مرة واحدة للدخول إلى صفحة الشفرات .
-------------------------
- ملاحظات /
1 - يمكنك إضافة قوائم أخرى داخل القوائم الفرعية ( New على سبيل المثال ) .أنظر المثال التالي :
http://wsniperfile.jeeran.com/Lesson_3/Menu%20Editor%20Example2.jpg
لقد أضفت أربع نقاط إضافية ليصبح مجموع النقاط ثمانية و هذا يعني أن القائمة Graphic سوف تكون داخل القائمة New . أنظر الصورة
http://wsniperfile.jeeran.com/Lesson_3/File_New_Graphic.jpg
2 – الإختيار Insert : يضيف قائمة جديد فوق القائمة المظللة باللون الأزرق .
3 – الإختيار Delete : يمحي القائمة المظللة .
وبهذا أكون أنهيت الكلام عن صندوق الحوار Menu Editor . و إن شاء الله تكون الصورة توضحت لكم عنه .
--------------- يتبع ---------------
ربما هذا الدرس صعب قليلاً و لكنه مهم جداً لفهم المتحولات . و أيضاً كتابة القوائم مهمة . و إن شاء الله الدرس القادم سوف نبدأ بالبرامج حيث سوف أكتب قاعدة أو مجموعة من القواعد في الشفرة و سوف أضع طبعاً عدة برامج مع كل قاعدة . و شكراً

Wolf Sniper
14-03-2003, 02:50 AM
عذراً على الصورة الكبيرة التي تتكلم عن أنواع المتحولات لأنه حصل خطأ عندما غيرت أبعادها ?: و لكنها مهمة و شكراً

RPG
14-03-2003, 02:58 AM
مشكور على الدرس البسيط في شرح و الذي سيكون عونا كبيرا للمبتدئيين و حتى المحترفين في فيجوال على حد سواء، الدرس جميل و متعوب عليه و نتمنى أن نرى المزيد :D

Wolf Sniper
15-03-2003, 10:37 AM
شكراً أخوي RPG على ردك الجميل :) بس ما دري ليش ما ألقى تفاعل مع الدروس هل هي ناقصة أو لا تعجب بعض الأعضاء :أفكر: المهم أنا بصراحة راح أخلي الدروس عددها خمسة يعني باقي درسين و ذلك لعدة أسباب أولها كما ذكرت في بداية كلامي و ليس هو السبب الرئيسي .
و السبب الثاني أني سوف أبدأ في الدراسة الجدية في جامعتي الأسبوع القادم يعني الوقت راح يكون ضيق مرة علي لكتابة الدروس لأن الدوام في الجامعة جداً طويل صدقوني لن تعرفوا الجامعة حتى تدخلوها .
و السبب الأخر هو الإنترنت لأني ربما لن أدخل إلى الشبكة إلا في فترات طويلة يمكن كل أسبوع و هكذا . و لكن لذلك الوقت أنا موجود هنا للدروس و الأسئلة التي تريدونها من الموضوع أو الإستفسارات عن شيء لم تفهموه فيها و أنا راح أحاول أساعدكم في ما كتبت فقط . و شكراً

Wolf Sniper
18-03-2003, 01:47 AM
الدرس الرابع :
السلام عليكم ...
سوف نتحدث في هذا الدرس عن مجموعة من القواعد التي سنستخدمها في كتابتنا للشفرة في أحد البرامج . و سوف ندرس الباقي في الدرس الأخير . و سنكتب البرنامج الأول فلنبدأ .
-------------------- الدرس4---------------------
http://wsniperfile.jeeran.com/Lesson_4/القواعد.jpg
ثامناً / قواعد عامة :

- كيف أستطيع إعطاء أو إسناد قيمة لمتحول ما في النموذج ؟
ملاحظة / من أجل عملية الإسناد نستخدم الرمز (=) .
أولاً / القيم الحرفية :
لنفرض أن لدينا المتحول y و قد قمنا بالتصريح عنه مسبقاً كما تعلمنا . و إذا كنا نريد أن نعطيه قيمة حرفية فسوف نكتب على سبيل المثال ما يلي : من الييسار إلى اليمين
Y = "montada.com"
أنظر كيف وضعت القيمة للمتحول y . ففي هذا المثال أخذ المتحول قيمة حرفية هي montada.com و يمكنك طبعاً إعطاء أي قيمة حرفية (اسم) للمتحول بشرط (مهم) أن تكون القيمة الحرفية محاطة بقوسين صغيرين . تجدهما بحرف الطاء إضغط Shift ثم حرف الطاء لإظهار القوسين .
ملاحظة مهمة / إذا لم تقم بوضع القوسين فسوف يتعرف برنامج الفيجوال بيسك على الأحرف على أنها إما متحول جديد أو أرقام عددية .

ثانياً / القيم العددية :
لنفرض أن لدينا المتحول x و قد صرحنا عنه مسبقاً و نريد أن نعطيه قيمة عددية فلتكن صفر مثلاً . فنكتب ما يلي :
x = 0
ملاحظة مهمة / 1 - لم أضع قوسين كما وضعت في القيم الحرفية لأن برنامج فيجوال بيسك يميز بين القيم العددية و الحرفية بهذه الطريقة .
2 – إذا فرضنا أننا وضعنا قوسين بين الرقم صفر
x = "0"
فإن البرنامج سيتعرف على هذه القيمة على أنها قيمة حرفية و ليست عددية على الرغم أن الصفر هو عدد .
-------------------------
- كيف أقوم بإعطاء قيمة متحول ما لمتحول آخر ؟
أنظر المثال التالي :
X = y
في هذا المثال سوف يأخذ المتحول x قيمة المتحول y . يعني أن المتحول x هو الذي سوف تتغير قيمته . ( دائماً المتحول الذي على ايسار هو المتحول الذي سوف يأخذ القيمة من الآخر).
-------------------------
- كيف أستطيع تغيير الخصائص لأداة من الأدوات و التي رسـمتها في النموذج عن طريق الشفرة ؟
لنفرض أننا رسمنا داخل النموذج الأداة Command و قمنا بتسميتها من خلال الخاصية Name بالإسم Command1 كما تعلمنا . فكيف أستطيع كتابة شفرة تغير من إحدى خواص هذا العنصر ؟ على سبيل المثال سوف نغير الخاصية Caption في العنصر Command1 و الذي رسمناه داخل النموذج (الخاصية Caption كما تعلمنا هي من أجل الكتابة فوق الزر Command) . أنظر المثال التالي :
Command1.caption = "OK"
ففي هذا المثال سوف تكتب على الزر Command1 الكلمة OK و قس على ذلك ما شئت .

بعض الأمثلة الأخرى :
Label1.caption = "السلام عليكم"
Label5.Forecolor = &H00000000&
الرمز هذا يدل على اللون الأسود و إذا كنت تريد معرفة باقي الألوان أنظر إلى الخاصية Forecolor . و من ثم أنسخ و ألصق الرمز .
Picture1.Height = 1455
Timer1.enabled = False
Text1.Visible = False
و غير ذلك من الأمثلة الكثيرة التي لا يمكن حصرها .
-------------------------
- كيف أستطيع إجراء عمليات حسابية عن طريق الشفرة ؟
نحتاج إلى الرموز التالية و هي :
+ للجمع
- للطرح
* للضرب
/ للقسمة
= اليساوي
^ الأس
( ) القوسين
Log اللوغاريتم
Exp اللوغاريتم العكسي
Abs لحساب القيمة المطلقة
Sqr لحساب الجذر التربيعي

Atn لحساب ظل التمام للزاوية
Tan لحساب ظل الزاوية
Cos لحساب جيب تمام الزاوية
Sin لحساب جيب الزاوية
ملاحظة / من العملية Log و حتى العملية Sin يجب وضع الرقم بين قوسين .مثال :
Cos (60)
مثال1 / Label2.caption = Sin (30) + 5 ^ 2
مثال2 / إذا فرضنا أن : y = Cos (0) و أن : Label2.caption = 20
و أن :
text3.text = val(label2.caption) + y
فسوف يكتب في العنصر Text3 العدد : 21 لماذا ؟؟؟
لأن Cos (0) = 1 و 20 + 1 = 21
و لكن لماذا أضفنا الكلمة val قبل Label2.caption ؟؟؟ إذا كنت تريد أخذ رقم من أداة موجودة في برنامجك كالمثال السابق فعليك فعليك إضافة الشفرة val قبل اسم الأداة مع الخاصية المناسبة . حيث تقوم هذه الشفرة بتحويل القيمة الحرفية في الأداة إلى قيمة عددية . و لأن البرنامج عادة يفترض أن القيمة حرفية و ليست عددية . بينما إذا لم تضف هذه الشفرة فإن العنصر Text3.text سوف يأخذ القيمة التالية : 201 أي أنه سوف يضيف واحد بجانب قيمة العنصر Label2 و هذا ما لا نريده .
-------------------------
- أمور أخرى مهمة في إعطاء القيم للمتحولات :
1 - يمكنك أن تكتب معادلة في الشفرة تحتوي على أكثر من متحول بحيث تكون قيمهم معروفة بضمن البرنامج و التي إما سوف تكتبها أنت أو المستخدم . و يخزن الناتج في متحول جديد . مثال :
Y = 2k * (6s – 4)

2 – يمكنك أيضاً إعطاء قيمة حرفية للمتحول y على سبيل المثال. أنظر المثال التالي :
Y = "Hi " + Label1.caption
فإذا فرضنا أن Label1 كان مكتوب فيه montada فتصبح قيمة y هي :
"Hi montada"

3 – يمكنك فصل الكلام الذي تريد أن تعطيه لمتحول كقيمة حرفية . و تستخدم هذه الطريقة إذا كان الكلام طويل . و ذلك على الشكل التالي :
X = "Please Enter your Name and Password . " _
& " but you Can't Enter Numbers in your Name " _
& "and Password "
لاحظ كيف وضعنا الرمز(_) و هو يعني أن تكملة الشفرة في السطر التالي و انتبه جيداً يجب وضع مسافة بين الرمز و آخر شيء كتبته . و في السطر التالي نضع الرمز (&) للربط بين السطرين . و هكذا
-------------------------
- كيف أجعل المستخدم يعطي قيمة لمتحول قمت بتعريفه ضمن برنامجي ؟
تستطيع ذلك من خلال الأمر : Inputbox . أنظر الصورة للتعرف عليه عند عمل البرنامج :
http://wsniperfile.jeeran.com/Lesson_4/Input%20Box.jpg
أنظر إلى عنوان الرسالة التي ظهرت و إلى الكلام أيضاً . سوف تقوم أنت بإضافته و هناك خيارات عديدة سوف أتكلم عنها.
الصيغة العامة / يجب أولاً أن تضع متحول لكي يحفظ القيمة التي سوف يضيفها المستخدم أنظر المثال :
http://wsniperfile.jeeran.com/Lesson_4/EXP_inputbox.jpg
أنظر إلى الإطار الملون باللون الأصفر هذه هي الصيغة العامة . فبعد أن تكتب الشفرة Inputbox ضع قوسين كبيرين ثم قوسين صغيرين لكتابة ما تريد داخل الرسالة و من ثم ضع فاصلة و هي الحرف واو و من ثم ضع مرة أخرى قوسين صغيرين لكتابة عنوان الرسالة . هذه هي أهم الأمور و يمكنك وضع قيمة إفتراضية داخل الرسالة بوضع فاصلة ثم قوسين و اكتب بعد ذلك ما شئت لكي تجعله قيمة إفتراضية . أنظر الصورة
http://wsniperfile.jeeran.com/Lesson_4/EXP_inputbox_draw.jpg
-------------------------
- كيف أستطيع أن أجعل البرنامج يظهر رسالة معلومات أو خطأ للمستخدم ؟
تستطيع ذلك من خلال الأمر : msgbox . أنظر إلى الصورة للتعرف عليه أثناء عمل البرنامج :
http://wsniperfile.jeeran.com/Lesson_4/Msgbox.jpg
سوف نقوم بإدخال جميع البيانات كما فعلنا بالشفرة Inputbix .
الصيغة العامة / أنظر المثال :
http://wsniperfile.jeeran.com/Lesson_4/EXP_msgbox.jpg
لاحظ أننا لم نضف قوسين كبيرين بعد الشفرة و لم نضع أيضاً متحول لكي يخزن القيمة لأننا نستخدم هذه الشفرة لإظهار رسالة فقط و ليس لجعل المستخدم يدخل قيمة .
الجملة الأولى التي كتبناها هي الجملة التي سوف تظهر في داخل الرسالة . أما القسم الثاني فهو نوع الرسالة التي نريد إظهارها ( لاحظ أننا لن نضف قوسين صغيرين لأن نوع الرسالة ليس نصاً سوف يظهر فيها ) و هناك عدة أنواع من الرسائل حاول تجربتها و لكننا هنا في هذا المثال استخدمنا النوع vbinformation .
ملاحظة / لكي تختار النوع الذي تريده أضغط على زر Tab لكي تختار النوع .
و القسم الثالث هو لعنوان الرسالة . و بهكذا نكون قد شرحنا أهم شفرتين للرسائل التي تعترض عمل البرامج و هي موجود في نظام ويندوز بكثرة .
-----------------------------------------------------------------
http://wsniperfile.jeeran.com/Lesson_4/البرنامج%20الأول.jpg
البرنامج الأول :

أخيراً بدأنا في صنع البرامج . سوف يكون برنامجنا الأول عن كيفية وضع عداد سرعة و سوف نركز على الأداة Timer في هذا البرنامج فلنبدأ :
أولاً / فكرة البرنامج : البرنامج هو عبارة عن عداد كالموجود في بعض الساعات بحيث يبدأ من الصفر و يزداد باستمرار بمقدار كل ثانية .
ثانياً / الأدوات : سوف نضيف أربع أدوات و هي :
1 – ثلاثة أدوات من النوع Label .
2 – أداة من النوع Timer .
3 – أداة من النوع Command Button .
ثالثاً / الشفرات المستخدمة : سوف نستخدم الشفرات التالية :
Not : هي شفرة تقوم بتغيير خاصية لأحد الأدوات إذا كانت فقط تأخذ قيمتين مثل : True و False . فإذا كانت True فتجعلها False و هكذا .
القاعدة If … Then : هذه الشفرة مفيدة جداً و استخداماتها كثيرة . فهي عبارة شرطية تحتوي شفرتين إذا تحقفت الشفرة الأولى فإن الشفرة الثانية ستتحقق . سوف تتعرف على هذه القاعدة أكثر بعد قليل .
رابعاً / صنع البرنامج : قم بإضافة ما سبق إلى النموذج . أنظر الصورة :
http://wsniperfile.jeeran.com/Lesson_4/نافذة%20برنامج%20العداد.jpg
أنظر إلى خصائص العنصر Timer1 : لقد جعلنا سرعته 1 في الثانية من خلال الخاصية Interval .
http://wsniperfile.jeeran.com/Lesson_4/خصائص%20Timer.jpg
الأن سوف نكتب الشفرة للأداة Timer و الأداة Command1 لذلك إضغط على الأداة مرتين لكي تدخل إلى نافذة كتابة الشفرات . أنظر إلى ما كتبت :
http://wsniperfile.jeeran.com/Lesson_4/الشفرة%20الإبتدائية.jpg
أنظر إلى الخط المرسوم بالعرض هذا الخط يفصل بين شفرة كل عنصر من عناصر برنامجك و يسهل التفريق بين شفرات الأدوات .
القسم الأول فوق هو للعنصر Command1 أما الذي في الأسفل هو للعنصر Timer1 . سوف نبدأ بشرح شفرة العنصر Command1 لاحظ ماذا كتبت : Timer1.enabled = و هذا يعني أن العنصر Timer1 هو الذي سيأخذ القيمة و بالذات في الخاصية Enabled . و بعدها كتبت : Not (timer1.enabled) و هذا يعني كما تعلمنا أنه إذا كانت القيمة في الخاصية Enabled هي True فسوف يجعلها False و هكذا .
لماذا كتبنا هذه الشفرة ؟ تذكر أننا وضعنا الخاصية Enabled و التي سيأخذها البرنامج عند بداية عمله هي False أي أن العداد Timer1 لن يعمل عند بداية البرنامج .و الشفرة التي كتبناها تجعل العنصر Timer1 يعمل و هكذا .
الأن سوف نرى الشفرة التي كتبناها للعنصر Timer1 لذلك أنظر إلى الصورة السابقة : لاحظ ماذا كتبت في الجملة الأولى :
Label1 = Label1 + 1
ما هذا الذي كتبت ؟ أنظر كيف كتبت Label1 = بدون أن أحدد الخاصية له . إذا لم تكتب أي خاصية فإن برنامج فيجوال بيسك سيفترض أنها الخاصية Caption .
الأن التغير الذي سوف يحدث سيكون على العنصر Label1 في الخاصية Caption و لكن ماذا كتبنا بعد ذلك ؟ Label1 + 1 تعني أن القيمة الجديدة التي سوف يأخذها العنصر Label1 تساوي القيمة القديمة مضافاً إليها واحد . فإذا كان العنصر قيمته 2 فسوف تصبح القيمة الجديدة 3 و هكذا .
ملاحظة / سوف تتنفذ جميع الشفرات الموجودة ضمن شفرات العنصر Timer1 كل ثانية لأننا حددنا سرعته . انتبه كل ثانية سوف تتنفذ الشفرات و هذا ما نريده .
القسم الثاني من الشفرة هو :
If Label1 = 60 Then
Label2 = Label2 + 1
Label1 = 0
End If
هذه العبارة تعني أنه إذا كانت قيمة Label1 = 60 فسوف تتنفذ الشفرات التي تقع بعد عبارة Then و حتى العبارة End if . انتبه يجب كتابة End if لإنهاء تنفيذ الشفرات عند تحقق الشرط. فلماذا كتبنا تلك الأوامر ؟ فكرة البرنامج هي أن Label1 للثواني و Label2 للدقائق و Label3 للساعات . فهذه العبارة تعني أنه إذا أصبحت قيمة Label1 = 60 و هي قيمة الثواني فسوف تتغير قيمة الدقائق و ستزيد واحد و سوف يرجع عداد الثواني إلى الصفر .
أما القسم الثالث من الشفرة فهو :
If Label2 = 60 Then
Label3 = Label3 + 1
Label2 = 0
End If
و هذا يعني أنه إذا أصبحت الدقائق 60 فسوف تزيد الساعات بمقدار واحد و سوف ترجع الدقائق إلى الصفر .
خامساً / تطوير البرنامج : سنقوم بفكرة بسيطة لتطوير البرنامج و هي أن نجعل الكتابة الموجودة على العنصر Command1 تتغير على حسب عمل الأداة Timer1 . كيف ؟ أقصد بذلك إذا كان العداد لايعمل فسوف يكتب على الزر Start أما إذا كان يعمل فسيكتب Pause .
لذلك إضغط مرتين على العنصر Command1 لكتابة الشفرة . لقد كتبنا سابقاً شفرة معينة و سوف نضيف عليها ما يلي :
http://wsniperfile.jeeran.com/Lesson_4/تطوير%20شفرة%20Command1.jpg
هذه العبارة تعني أنه إذا كان العداد شغال فسيكتب على الزر Command1 الكلمة Pause . و إذا لم يكن يعمل فسيكتب عليه Start .
و لكن لماذا كتبنا Else ؟ هذه تعــني أنه إذا لم يتحقق الشرط فستتنفذ الشفرة التي بينها و بين End if .
ملاحظة / في الشفرة جعلنا كلمة Start و Pause بين قوسين صغيرين لأنهم قيم حرفية بينما الأعداد لا تكتب بين قوسين صغيرين . و لقد تعلمنا ذلك مسبقاً .
سادساً / تحويل البرنامج إلى ملف من النوع EXE :
إضغط على القائمة File ثم اختر Make Project1.exe ثم اختر مكان الملف و اسمه لتجعله من النوع exe .
و بهذا نكون قد انتهينا من صناعة البرنامج الأول.
--------------- يتبع ---------------
بقي لدينا درس أخير سأحاول أن أقدم فيه معلومات كثيرة و برامج و شفرات متنوعة مهمة لتعم الفائدة و ربما أضيف درس سادس أضع فيه بعض الشفرات المتقدمة و شكراً .
إذا كان في أي خطأ فلا بأس بالتنبيه لكي أصححه و لكم جزيل الشكر و أرجو أن يكون الدرس قد نال رضاكم .

Wolf Sniper
18-03-2003, 02:01 AM
آسف شباب هناك خطأ . في عنوان أمور أخرى مهمة في إعطاء القيم للمتحولات . المثال الأول .. تصحيحه هو :
Y = (2 + k) * (6 * s – 4(
إذا كان هناك أخطاء أو أي مشاكل أخرى فأخبروني

Mr. Black Man
19-03-2003, 06:46 AM
شكراً لك على الدرس ... أنتظر الدرس الخامس ;)

Wolf Sniper
30-04-2003, 12:02 PM
السلام عليكم ...

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

Mr. Black Man
02-05-2003, 12:19 AM
Im Waiting :)

Wolf Sniper
02-05-2003, 12:36 PM
السلام عليكم ...
بسم الله الرحمن الرحيم ...
--------------- الدرس الخامس ---------------
لقد تحدثت في الدرس الرابع عن كيفية التعامل مع المتحولات و كيفية إسنادها إلى قيم حرفية و تعلمنا بعض الشفرات المهمة .
هذا الدرس سوف أحاول تقسيمه إلى مجموعات بحيث تكون لكل مجموعة موضوع و ذلك للتسهيل . و سوف أكتب كل مجموعة على حدة و البقية بعد فترة . ففي المجموعة الأولى سأتحدث عن بعض الشفرات المتنوعة . فلنبدأ :
http://wsniperfile.jeeran.com/Lesson5/Group1.JPG
مجموعة من الشفرات المتنوعة :
--------------------
العبارة Do :
تستخدم من أجل تكرار مجموعة من الأوامر عند تحقق الشرط المطلوب و الصيغة العامة هي :
Do
( Code )
Loop While ( Code )
مكان العبارة code يجب أن تضيف أي شفرة تريدها و لزيادة فهمها نورد المثال التالي:
http://wsniperfile.jeeran.com/Lesson5/DO.JPG
في هذا المثال سوق يقوم برنامجك بتكرير الشفرة msgbox طالما أن العنصر Text1 لا توجد كتابة بداخله و هكذا ...
ملاحظة / يمكنك كتابة أكثر من شفرة لكي تتكرر عند تحقق الشرط .
--------------------
العبارة While :
هي عبارة شبيهة جداً بالعبارة Do . و الصيغة هي :
While ( Code )
( Code )
Wend
في السطر الأول سوف يختبر البرنامج العبارة ثم سيكرر تنفيذ العبارة الموجودة في السطر الثاني . مثال :
http://wsniperfile.jeeran.com/Lesson5/While.JPG
--------------------
العبارة For … Next :
تستخدم هذه العبارة من أجل تكرار مجموعة من الشفرات عدداً معيناً من المرات و ليس كالعبارتين Do و While اللتان تكرران الشفرات حتى تحقق الشرط .
و صيغتها العامة هي :
For x = 1 to 10
( Code )
Next x
حيث x هي اسم أي متحول و أنا كتبته هنا للمثال فقط . و الأرقام أيضاً تستطيع أن تضع أي منها . مثال :
http://wsniperfile.jeeran.com/Lesson5/For.JPG
في هذا المثال أضفت عبارة Step 2 بعد الرقم 4 و هي تعني أن التكرار سوف يتم مرتين عند الرقم 1 و 3 أي أنه سوف يتم الإنتقال من الرقم 1 إلى 4 بإضافة 2 و ليس 1 حيث إضافة الرقم واحد نكون هي المفعلة عند عدم كتابة الأمر Step و هكذا ...
ملاحظة / تستخدم العبارة For بكثرة في المصفوفات ! سوف أتحدث عن المصفوفات في المجموعات القادمة مع توضيح مثال عملي على العبارة For من أجل فهمها جيداً و هي مهمة لذلك سنخصص لها برنامجاً صغيراً .
--------------------
العبارة End :
لإنهاء عمل برنامجك و الخروج منه و تكتب كما هي :
End
--------------------
العبارة Exit :
لها استخدامات عديدة من أهمها استخدامها في العبارة Do و ما يشابهها مثل Do . تستخدم في العبارة Do من أجل إنهاء عملها قبل إنتهاء التكرارات ( كما تعلمنا ) . مثال:
http://wsniperfile.jeeran.com/Lesson5/Exit.JPG
في هذا المثال سوف يتم إنهاء التكرارات عند المرة الخامسة و هكذا ...
--------------------
العبارة Str :
تقوم بتحويل القيم العددية إلى قيم حرفية و صيغتها العامة هي :
Str ( … )
النقاط هي أي رقم تود وضعه لكي يتحول إلى قيمة حرفية . مثال :
http://wsniperfile.jeeran.com/Lesson5/Str.JPG
في هذا المثال سيتحول الرقم 20 إلى قيمة حرفية يعني أنه سيصبح على الشكل التالي : "20" و هكذا...
--------------------
العبارة Cstr :
تعمل هذه العبارة عكس العبارة السابقة فتحول القيمة الحرفية إلى عددية و صيغتها :
Cstr ( 20 )
مثال :
http://wsniperfile.jeeran.com/Lesson5/Cstr.JPG
--------------------
العبارة Asc :
يوجد نظام شيفرة في لغة البيسك يسمى ASCII و تأخذ قيماً من الصفر إلى 255 . حيث يكون لكل رقم من هذه الأرقام قيمة مقابلة لها ( محرف ) ، فتقوم هذه العبارة بتحويل أي قيمة حرفية إلى العدد المقابل لها في الشيفرة ASCII و هكذا ...
للتوضيح نورد المثال التالي :
http://wsniperfile.jeeran.com/Lesson5/ASC.JPG
في هذا المثال سيأخذ المتحول a القيمة 62 و التي تعبر عن الرمز > في الشيفرة ASCII .
ملاحظة / سنتستخدم هذه العبارة بعد قليل للتوضيح أكثر عن فائدتها و ذلك في عملية ربط القيم .
--------------------
العبارة Chr :
وظيفته عكس العبارة السابقة ، فيقوم بإعطاء الحرف أو الرمز المقابل للرقم في شيفرة الـ ASCII . مثال :
http://wsniperfile.jeeran.com/Lesson5/Chr.JPG
في هذا المثال الرقم 13 يعني الزر Enter .
--------------------
عوامل تجميع القيم الحرفية و الرقمية :
1 – العامل & .
2 – العامل + .
حيث أن كلا العاملين يستخدمان لهذه الوظيفة علماً بأن العامل + يستخدم أيضاً لعملية الجمع كما وضحت ذلك سابقاً .
أمثلة على عملية الربط بين القيم الحرفية بواسطة العاملين & و + :
http://wsniperfile.jeeran.com/Lesson5/&+.JPG
لاحظ في المثال الأول كيف قمنا بربط قيمتين حرفيتين بينما في المثال الثاني ربطنا قيمة حرفية مع رقمية بينما المثال الثالث سيأخذ البرنامج قيمة العنصر Text1 التي أضافها المستخدم و يربطها بما سبقها . و لكن لماذا وضعنا_ Chr (13) ؟؟ هذه العبارة تعني الضغط على مفتاح Enter يعني أن العبارة ستكتب على سطرين .
ملاحظة / الرمز _ : يستخدم إذا كانت الشفرة التي تكتها طويلة في البرنامج فيوضع من أجل الربط بين السطر و السطر الذي يليه مع التنبيه بضرورة وضع مسافة قبله .
في المثال الرابع ربطنا متحولين ببعضهما فالناتج سيكون "SS" .
انتبه / لقد استخدمت العامل & في الأمثلة و العامل + يشبهه تماماً في الوظيفة في هذه الأمثلة إلا في المثال الثاني فسيعطي البرنامج خطأ لأن العامل + لا يستطيع ربط قيمة حرفية مع رقمية .
--------------------
تنسيق القيم الحرفية :
1 – العبارة LCase :
لتحويل الأحرف إلى أحرف صغيرة و صيغته :
LCase (K)
حيث K هي أي متغير حرفي . و لو فرضنا مثلاً أن قيمة K هي : TABLE . فعند استخدام هذه العبارة ستتغير جميع الأحرف و تصبح صغيرة و إن كان أحد الأحرف صغيرة قسيبقى على حاله طبعاً . و ستصبح قيمة K = "table" .

2 – العبارة UCase :
لتحويل الأحرف إلى أحرف كبيرة و صيغته :
UCase (L)
حيث L هي أي متغير . و هكذا ...

3 – العبارة StrConv :
هذه العبارة تعد شاملة لسابقيها حيث تستخدم لتكبير الأحرف أو تصغيرها أو لجعل الحرف الأول فقط كبير . و صيغتها :
Strconv (H , vbUpperCase)
حيث H هي أي متغير و يمكنك أن تضع بدلاً منه قيمة حرفية و تضعها طبعا ضمن قوسين صغيرين كما تعلمنا في القيم الحرفية ...
أما بالنسبة لما بعد الفاصلة فهو نوع التغيير الذي تريد أن يطرأ على الحروف و يمكنك إختيار عدة أنواع و لكن أهمهما هي :
vbUpperCase , vbLowerCase , vbProperCase
مثال :
http://wsniperfile.jeeran.com/Lesson5/strconv.JPG
في هذا المثال لقد جعلنا المتحول Y يأخذ القيمة Star حيث vbpropercase تقوم بتكبير الحرف الأول فقط من كل كلمة .
--------------------
العبارة Len :
لتحديد طول المتحول أو عدد الأحرف التي يحتويها و الصيغة العامة :
Len ("Jamal")
حيث Jamal هو قيمة حرفية و يمكن أن تضع بدلاً منها قيمة رقمية .
مثال :
http://wsniperfile.jeeran.com/Lesson5/Len.JPG
في هذا المثال سوف يكتب بداخل العنصر Label1 الرقم 3 حيث أن عدد الأحرف في المتحول a هي 3 .
ملاحظة / لقد كتبت في الشفرة Label1 = … و لم أكتب Label1.caption !!! لأن البرنامج يتعرف عليه تلقائياً إذا لم أضع أي خاصية من خصائصه .
-------------------- يتبع --------------------
هذه هي المجموعة الأولى و التي احتوت على بعض العبارات و الشفرات المهمة . ربما سوف أضيف بعضاً منها في المجموعات الأخرى . و إن شاء الله راح أضيف المجموعة الثانية في القريب العاجل و التي طبعاً موضوعها يختلف عن الأولى .
و شكراً

Wolf Sniper
02-05-2003, 12:39 PM
أريد أن أوضح نقطة مهمة و هي أن بعض هذه المعلومات التي كتبتها قد لا تفيدك في صنع لعبة و لكن وضعتها للفائدة . و لكن البقية مهمة جداً في البرمجة في لغة البيسك ، و ربما يعتقد البعض أنها بسيطة و سهلة و لكن الذكي هو من يستغلها ليصنع بها أفضل الألعاب و إن شاء الله تعم الفائدة و شكراً .

Mr. Black Man
02-05-2003, 01:35 PM
شكراً لك على إكمال الدروس :) ;) .... و الصراحة موضوعك هذا أكثر من مميز ;-) و شرح أكثر من رائع بطريقة جميلة ":" .

Wolf Sniper
15-05-2003, 08:02 PM
السلام عليكم ...
أولاً شكراً لك أخوي المراقب( MR. BLACK MAN ) على ردك و إن شاء الله أكون عند حسن ظنك . و أنا آسف على تأخري في الرد و في إكمال الموضوع لأني فعلاً لا أجد الوقت الكثير للكتابة و خاصة أن الإمتحانات سوف تبدأ في 1 / 6 و الدراسة طبعاً هي الأهم .
المهم سوف أكتب مجموعة أخرى من الدرس الخامس و سوف أضيفها بعد يومين و البقية بعد الإمتحانات إن شاء الله . و هذه المجموعة هي عبارة عن كيفية عمل مقطع متتالي ( فيديو ) بسيط عن طريق مجموعة من الصور باستخدام الأداة Timer . و المشهد هو للعبة .... ! و لا خليها مفاجئة !

Mr. Black Man
17-05-2003, 01:53 AM
الرسالة الأصلية كتبت بواسطة Wolf Sniper

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

خليها من اللعبة :0) :0)

Wolf Sniper
19-05-2003, 03:00 PM
السلام عليكم ...
عذرأ على التأخير :( المهم خلنا ندخل في الموضوع
---------- المجموعة الثانية ----------
في هذا الدرس سنتعلم كيفية استخدام الأداة Timer من أجل عرض صور متتابعة لتشكل حركة معينة و سوف يقتصر درسنا هذه المرة على ذلك .
ملاحظة مهمة جداً : أنا برأيي أن أصعب مرحلة في عملنا اليوم هي كيفية رسم و تصميم الصور المتلاحقة التي بها يمكن تحريك جسم أو أي شيء . مثل الأفلام الكرتون ! فالمصممين يقومون برسم عدة صور للشخصية لكي يجعلونها تركض مثلاً . و صحيح أن هذا الأمر هو الأفضل أن يعمل على برامج أخرى كالفلاش أو ثري دي ماكس و لكننا سوف نعملها على الفيجوال بيسك و شوف النتيجة بنفسك ! . فلنبدأ :

بسم الله ...
أولاً / ضع العناصر التالية في نموذجك لتصبح مثل الصورة التالية :
http://wsniperfile1.jeeran.com/Form.JPG
العناصر :
1 – Timer و جعلت غير مفعل عند تشغيل البرنامج بجعل الخاصية Enabled = False . و هي تعني أن الأداة لن تعمل عن تشغيل البرنامج . سوف تعرف لماذا فعلت ذلك .
و جعلت الخاصية Interval تأخذ القيمة 16 و هي سرعة الأداة . و كما ذكرنا سابقاً أن الرقم في هذه الخاصية يعني كل ملم / ثانية و هي السرعة .
2 – Label و جعلته يأخذ القيمة صفر .
3 – Picture و جعلت الخلفية سوداء ( طبعاً لا يهم اللون و لكن فقط للتغيير ) .
4 – Command و كتبت عليه الكلمة Start .
---------------
ثانياً / عليك تنزيل الصور التي أضفتها في الدرس لأنها هي محور عملنا و هي للعبة ريزدنت إيفيل كود فيرونيكا و هي صور متتابعة لعرض من اللعبة عندما تكون كلير تهرب من الطائرة المروحية . و عدد الصور 45 صورة !! هذه الصور تبدأ من 1 إلى 45 و طبعاً بداية الحركة من الرقم 1 و أنا قد رتبتها إلى 45 للتسهيل .
---------------
ثالثاً / فكرة العمل :
الفكرة هي تحميل 45 صورة متتالية بسرعة 16 ملم / ثاينة . و لكن لماذا 16 ملم / ثانية ؟
أنا رأيت أن أفضل سرعة هي هذه السرعة و لكنك تستطيع تسريع العرض أو إبطاؤه بتغيير الخاصية Interval في العنصر Timer1 كما ذكرنا . و لكن إجعلها الأن 16 ثم غييرها لتأكيد فكرة العمل .
---------------
رابعاً / كتابة الشفرة الخاصة بالأداة Timer :
أضغط على الأداة التي رسمتها مرتين لتدخل إلى المكان المخصص لكتابة الشفرة للأداة Timer . و اكتب الشفرة التالية :
http://wsniperfile1.jeeran.com/timer-1.JPG
ما هذا الذي كتبته ؟
هل تتذكرون في الدرس الرابع كيف صممنا برنامج العداد ؟ الأن الفكرة نفسها و نفس الشفرة و لكن سأعيد شرح هذه الشفرة :
لقد جعلت العنصر Label1 يأخذ القيمة المكتوبة فيه و يضيف عليها واحد . و سوف تتم العملية عند كل 16 ملم / ثانية . و العبارة Val هي لجعل لتحويل القيمة الحرفيو إلى رقمية . و إذا لم أكتب العبارة Val لأضاف البرنامج العدد 1 إلى يمين الرقم الموجود أصلاً في العنصر و هذا ما لا نريده بل نريد أن تتم عملية الجمع بين الأرقام . و السبب الأخر هو أن لغة البيسك تفترض كما قلنا أن القيمة حرفية عندا أضع أي قيمة في أي عنصر .
ملاحظة / انتبه أين وضعنا هذه الشفرة لقد وضعناها في القسم الخاص من الأداة Timer أي أنها ستكرر كل 16 ملم / ثانية و هي السرعة التي نريدها لتكرار الصور .
---------------
خامساً / كتابة الشفرة الخاصة بتحميل الصور إلى العنصر Picture1 :
ضع الصور في ملف معين و لكن احفظ المصدر جيداً لأننا سنستخدمه . الأن سنكتب الشفرة و سوف نضعها أيضاً في المكان الخاص لشفرات الأداة Timer1 و سوف نضعها أسفل الشفرة السابقة :
http://wsniperfile1.jeeran.com/timer-2.JPG
لماذا كتبنا هذه الشفرة ؟
طبعا هذه الشفرة هي شفرة العبارة IF … Then التي تعلمناها في الدرس الماضي . و شرحها هو :
أنه إذا كانت قيمة العنصر Label1 = 1 فحمل الصورة التي مصدرها F:\My Pictures\1.jpg إلى العنصر Picture1 و طبعاً إلى الخاصية Picture .
الشفرة LoadPicture تقوم بهذه المهمة و صيغتها أن تكتب ما يلي :
LoadPicture (…) حيث النقاط هي مصدر الصورة .

و لكن لماذا كتبت تلك الشفرة ؟؟ أنا أريد أن يأخذ العنصر Picture1 صورة معينة كل 16 ملم / ثانية و لكي أحقق ذلك يجب أن أستعين بالعنصر Label1 كما فعلت أعلاه .
الفكرة هي تحميل 45 صورة متتالية بسرعة 16 ملم / ثاينة كما قلت سابقاً .
ملاحظة مهمة 1 / عليك أن تكتب المصدر الصحيح الذي وضعت فيه الصور و هو ليس المصدر الذي قد كتبته أنا في الشفرة . طبعاً هناك شفرة تسهل البحث عن المصدر و هي بجعل جميع الصور بداخل الملف الموجود عيه مشروعك أو برنامجك الذي تكتب فيه الأن و لكن هذه الطريقة تحتاج لشفرة أيضأ . و لكن خلينا الأن في هذا البرنامج و هذه الطريقة .
ملاحظة مهمة 2 / يجب كتابة الإمتداد الخاص بالملف و هو jpg .
---------------
سادساً / كرر الشفرة السابقة 45 مرة بنفس الأسلوب و لكن طبعاً مع تغيير اسم الملف .و ذلك بجعل اسم الملف أعلاه من 1 إلى 2 و هكذا ... إلى أن تكتب 45 شفرة خاصة بـ 45 صورة .
و أيضاً غير قيمة الشرط IF Label1 = 1…)) إلى IF Label1 = 2…)) و هكذا ...
للتسهبل قم بالنسخ و اللصق .
أنظر الصورة :
http://wsniperfile1.jeeran.com/timer-3.JPG
---------------
سابعاً / في آخر شفرة و هي للصورة رقم 45 أضف إلى الأوامر ما يلي :
http://wsniperfile1.jeeran.com/timer-4.JPG
لقد أضفت عبارة تقوم بجعل العنصر Label1 يأخذ القيمة صفر عند تحميل الصورة رقم 45 و الهدف من ذلك إعادة المشهد عندما ينتهي عرض جميع الصور .
---------------
ثامناً / كتابة الشفرة للعنصر Command1 :
إضغط مرتين على العنصر Command1 في النموذج لكي نكتب الشفرة الخاصة به . و هي :
http://wsniperfile1.jeeran.com/command.JPG
الشفرة الأولى / لقد تعلمناها سابقاً و هي جعل العنصر Timer1 يعمل عند إذا لم يكن يعمل . و أن يتوقف عن العمل إذا كان يعمل !!
العبارة Not تقوم بعكس القيمة الموجودة في الخاصية Enabled فإذا كانت True تجعلها False و هكذا ...

الشفرة الثانية و الثالثة / الهدف منهم هو جعل العنصر Command1 مكتوب عليه الكلمة Start إذا كان Timer1 لا يعمل . و أن يكتب عليه Stop إذا كان يعمل .
ملاحظة / فكرة عمل البرنامج أنني أريد أن يبدأ العرض عند الضغط على العنصر Command1 و لذلك وضعت هذه الشفرة .
---------------
تاسعاً / انتهى الدرس . جرب البرنامج إما بالضغط على زر Start في الأعلى أو بالضغط على زر F5 في الكيبورد.

ملاحظة / سوف ترى أن الحركة تنقطع عند لحظة معينة و سبب ذلك أنني لم ألتقط الصورة الخاصة بهذا المكان . و ربما لن تلاحظوه و لكن ذكرت ذلك لبراءة الذمة .
---------- يتبع بعد الإمتحانات ----------
كما رأيتم أن باستخدام أوامر بسيطة استطعنا عمل برنامج و فكرة جيدة تستحق الإهتمام بها . و أصعب مرحلة فيها هي إلتقاط الصور . و لكن ستجد الصعوبة نفسها تقريباً عند تحريك المجسمات في برنامج ثري دي ماكس . و اسأل الذين يعرفون البرنامج جيداً . و نصيحة أخيرة هي إذا كنت تريد صنع فكرة معينة أو برنامج معين فسوف تتعب من أجل الوصول إلى هذه الفكرة . لذلك فلا تيأس و اصبر إلى أن تحل مشكلتك . و الوصول إلى فكرة تريد عملها في برنامجك تكون سهلة و لكن المشكلة هي كيف ترتب و تستخدم الأوامر .

أخيراً إن شاء الله تكونون استفتوا من هذا الدرس و أنا راح أضع لكم البرنامج مع الملف المرفق على شكل EXE لكي تجربوه و طبعاً سوف أضع الصور معه .
ملاحظة / عند تنزيلك للملف لا تحذف الصور من الملف و لكن إنسخها و ألصقها في المكان الذي تريد و ذلك لكي يعمل الملف الذي أرفقته . مع التنبيه أن الملف من EXE لن يعمل إذا لم يكن لديك فيجوال بيسك على الجهاز ! و أنا أحاول أن أجد الحل لهذه المشكلة .

معلومة أخيرة / بما أن درسنا كان عن تحريك و عرض الصور . فقد يتساءل البعض كيف يقوم مصممين الألعاب على الأجهزة المختلفة كـ PS2 بتحريك الشخصيات ؟ و كيف يجعلونها كالحقيقة ؟
أنا على حسب ما شفت و سمعت أن المصممين يضعون مجسات خاصة على مفاصل ممثل ( يعني إنسان حقيقي ) بحيث يقوم بحركات معينة . و هذه المجسات تكون مرتبطة بالحاسب فتنتقل حركة الممثل إلى الحاسب . ثم يقوم المصممين بإكساء الجسم و رسم الشخصية . هذا الذي أعرفه .
و لو تتذكرون لعبة Onimusha 2 ( طبعاً على جهاز PS2 ) هناك خيار تستطيع فيه مشاهدة بعض اللقطات عن كيفية تصميم اللعبة . و الأمر مشابه لألعاب أخرى مثل FFX و FFX-2 . و أظن أن هذه الطريقة متبعة في أغلب الألعاب . و شكراً .
بالتوفيق

الوصلة
الملف المرفق إظغط هنا (http://www.geocities.com/w_sniperfile/Pictures.zip)

Mr. Black Man
19-05-2003, 11:11 PM
شكراً لك على الدرس الرااائع و المتعوب عليه فعلاً ;) ... و شكراً مرة أخرى على المجهود الخارق اللي تبذله في كتابة الدروس ":" ;)

Wolf Sniper
19-05-2003, 11:31 PM
أولاً شكراً لك MR. BLACK MAN على الرد الجميل :) بس في خطأ في الوصلة اللي حاطيتها ?: و هذه هي الوصلات الصحيحة التي تحتوي على ملف الصور و ملف الـ EXE .
ملاحظة مهمة / ضع جميع الصور مع ملف الـ EXE في مجلد واحد .
و قولولي إذا الوصلات ما نفعت

الملف الأول (http://www.geocities.com/w_sniperfile/File1.zip)

الملف الثاني (http://www.geocities.com/w_sniperfile/File2.zip)

الملف الثالث (http://www.geocities.com/w_sniperfile/File3.zip)

الملف الرابع (http://www.geocities.com/w_sniperfile/File4.zip)

الملف الخامس (http://www.geocities.com/w_sniperfile/File5.zip)

Mr. Black Man
20-05-2003, 01:11 AM
الوصلات نفعت ;)

بروسلي
21-05-2003, 07:59 AM
مشكور على موضوعك الأكثر من ررراااائع و تسلم يدايك ;-)

محمد همام
24-06-2003, 05:13 PM
شكراً جزيلاً على الموضوع الروعة :)

ولا تتحجج المرة الجاي بالجامعة

شفناك دائماًعهند سهيل

على كل توقيعك روعة ;)

سلام

Wolf Sniper
28-06-2003, 09:12 PM
بروسلي
العفو و إن شاء الله أكون أفدتك في طلبك .

محمد همام

الرسالة الأصلية كتبت بواسطة محمد همام
شكراً جزيلاً على الموضوع الروعة :)

ولا تتحجج المرة الجاي بالجامعة

شفناك دائماًعهند سهيل

على كل توقيعك روعة ;)

سلام
الله يخليك و شكراً على ردك الجميل و عقبال ما نشوفك قريباً ;-) ( عند سهيل):D

Ferdinand
19-02-2004, 09:17 PM
مشكوؤ وماتقصر يالغالي ... وتحياتي لك والله يعطيك العافيه ...

6age3
20-02-2004, 01:19 PM
مشكوووور على الدرس وأتمنى إنك تكمل عندي ثلاث أسئلة

السؤال الأول هل يبرمج البرنامج ألعاب 3d ؟ :06:

السؤال الثاني كم عدد الدروس وهل توصلك إلى الإحتراف ؟ :06:

السؤال الثالث بماذا يبرمجون ألعاب ال ps2 و إذا كان بهذا البرنامج كيف ؟ :06:

Wolf Sniper
20-02-2004, 02:29 PM
المربوش :
العفو أخي و هذا هو واجبنا اتجهاكم و هو أن تعم الفائدة .

6age3 :
بالنسبة للأسئلة .. أنا في الحقيقة لست خبيراً في الألعاب و لكن أدخل هذه الوصلة و ستجد ما يعجبك :)
هذه الوصلة لموضوع الأخ PRG of RPG و عن تصميمه للعبة ثلاثية الأبعاد
=http://www.montada.com/showthread.php?t=232307

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

Wolf Sniper
20-02-2004, 02:35 PM
حصل خطأ .. هذه الوصلة :
الوصلة (http://www.montada.com/showthread.php?t=232307)

ستجد الموضوع ضمن المواضيع المثبتة في منتدىالبرمجة

علوو
20-08-2004, 10:09 AM
السلام عليكم ورحمة الله وبركاته
بسألك سؤال أنا الحين مسوي form1 و form2 وفي form1 وضعت Command3
وسميت الــ Command3 مثلا كتبت داخله التالي وأمبي أول ما أضغط على Command3 بإسم التالي
يروح الصورة الثانية (إرتباط)
تحياتي:علوو

Wolf Sniper
21-08-2004, 04:12 PM
السلام عليكم ورحمة الله وبركاته
بسألك سؤال أنا الحين مسوي form1 و form2 وفي form1 وضعت Command3
وسميت الــ Command3 مثلا كتبت داخله التالي وأمبي أول ما أضغط على Command3 بإسم التالي
يروح الصورة الثانية (إرتباط)
تحياتي:علوو
أهلاً بك أخي ...

حسب ما فهمت منك أنك تريد الإنتقال من فورم إلى فورم آخر بواسطة زر Command .. الحل بسيط اضغط على الأداة التي أضفتها إلى النموذج مرتين لتدخل إلى الإجراء الخاص بها و الحدث هو الضغط على الزر .. هناك طريقتان :
1-
form2.show إظهار الفورم الثاني
form1.hide إخفاء الفورم الأول بدون مسحه من الذاكرة

2-
form2.show إظهار الفورم الثاني
unload me إخفاء الفورم الأول مع مسحه من الذاكرة
ممكن أن تضع بدلاً من (me) أي اسم لأي نافذة و لكنها تعني هنا الفورم الذي يوجد فيه هذا الإجراء.

و لكن الطريقة الثانية أفضل لكي لا تحمل في الذاكرة أشياء غير مفيدة فإذا كان حجم البرنامج كبيراً و يتعامل مع نوافذ كثيرة فسوف تظهر لك رسائل خطأ مثل not enough memory .
و شكراً

علوو
21-08-2004, 07:33 PM
أهلاً بك أخي ...

حسب ما فهمت منك أنك تريد الإنتقال من فورم إلى فورم آخر بواسطة زر Command .. الحل بسيط اضغط على الأداة التي أضفتها إلى النموذج مرتين لتدخل إلى الإجراء الخاص بها و الحدث هو الضغط على الزر .. هناك طريقتان :
1-
form2.show إظهار الفورم الثاني
form1.hide إخفاء الفورم الأول بدون مسحه من الذاكرة

2-
form2.show إظهار الفورم الثاني
unload me إخفاء الفورم الأول مع مسحه من الذاكرة
ممكن أن تضع بدلاً من (me) أي اسم لأي نافذة و لكنها تعني هنا الفورم الذي يوجد فيه هذا الإجراء.

و لكن الطريقة الثانية أفضل لكي لا تحمل في الذاكرة أشياء غير مفيدة فإذا كان حجم البرنامج كبيراً و يتعامل مع نوافذ كثيرة فسوف تظهر لك رسائل خطأ مثل not enough memory .
و شكراً

السلام عليكم ....
مشكور أخي على المعلومات المفيدة وللأمام
تحياتي:علوو

علوو
21-08-2004, 11:53 PM
السلام عليكم
أنشاء الله ما اكلف عليكم واجد
أمبي أعرف شلون أكبر الخط في الفيجوال بيسك

007as
23-08-2004, 09:02 PM
مشكور على الشرح


مكن تضع وصلة للبرنامج

Wolf Sniper
24-08-2004, 01:13 AM
السلام عليكم
أنشاء الله ما اكلف عليكم واجد
أمبي أعرف شلون أكبر الخط في الفيجوال بيسك
اذهب إلى الخاصية font و الموجودة في عدة أدوات مثل Label , CommandButton , TextBox و غيرها ... و اختر نوع و حجم الخط الذي تريده ..


مشكور على الشرح


مكن تضع وصلة للبرنامج
في الحقيقة أنا لا أعرف إن كان البرنامج موجوداً كاملاً على الإنترنت للتنزيل ! لأنه في الأصل برنامج من مجموعة برامج Visual Studio 6 .. و أنا اشتريته من أحد المحلات . اعذرني لأني لا أستطيع مساعدتك في هذا الموضوع .


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

the snake bite
12-11-2004, 07:56 PM
ممكن يا اخي تشرك لي كيف اسوي winsock فورم.؟؟؟؟؟؟؟؟
ملاحظه: اشكرك على الشرك هذا ولله انت مفيد

Wolf Sniper
13-11-2004, 03:49 PM
ممكن يا اخي تشرك لي كيف اسوي winsock فورم.؟؟؟؟؟؟؟؟
ملاحظه: اشكرك على الشرك هذا ولله انت مفيد
تقصد الأداة WinSock .. المهم .. هذه الأداة فائدتها أن تربط بين أكثر من جهاز أو حتى أن تربط مثلاً برنامجين يعملون على نفس الجهاز أم على جهاز آخر .. حيث يتم إرسال رسائل و نقل للبيانات بين هذين البرنامجين ..
و لكن للأسف من يستخدم هذه الأداة يستخدمها في الجانب السلبي !!! حيث يمكن أن تتجسس على أجهزة غيرك ( هاكر يعني ) .. و أنا آمل أن يكون استخدامك لها في الجانب الإيجابي ( آمل ذلك ) .. على العموم أنا تعلمت استخدامها من أحد أعضاء منتدى آخر ( ولا أريد شرحها في هذا الموضوع لأني بذلك أكون قد أخذت موضوعه و سوف يكون شرحي هباءً أمام شرحه ) و لا أستطيع إعطاءك الوصلة هنا لأنه على حسب علمي أنه ممنوع .. افتح الرسائل الخاصة عندك لأخبرك ببعض الأمور .

MR. BLACK MAN عليك بهذا الموضوع :cool:

Wolf Sniper
14-11-2004, 10:22 PM
MR. BLACK MAN عليك بهذا الموضوع :cool:
أرجو إغلاق الموضوع أخي MR. BLACK MAN

Mr. Black Man
16-11-2004, 11:02 AM
أرجو إغلاق الموضوع أخي MR. BLACK MAN

السبب؟؟ :06: