Advanced Search

المحرر موضوع: سلسلة تعليم الفيجوال بيزك  (زيارة 20279 مرات)

0 الأعضاء و 1 ضيف يشاهدون هذا الموضوع.

أغسطس 31, 2002, 10:52:50 صباحاً
رد #15

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #15 في: أغسطس 31, 2002, 10:52:50 صباحاً »
الرسم :
------
رسم دائره
-------
1- إفتح مشروع جديد
2- غير لون الخلفيه للفورمه إلى اللون الأبيض وذلك من الخاصيه (Backcolor).
3- ضع الأداه (Command Button) على سطح الفورمه.
4- إنقر على الزرار نقرتين لتنتقل إلى شاشة كتابة الكود
5- إكتب السطر التالى داخل الحدث (Command1_Click) كما فى الدرس السابق:

Form1.Circle (1000, 2000),1000, 412235

6- شغل البرنامج ب F5
7- إضغط على الزر (Command1)
8- هل ترى الدائره ؟؟؟ '<img'>

لاحظ أن تركيب أمر رسم الدائره هو


الصيغه العامه هى

Object.Circle (x,y) , radius ,Color

حيث

* (Object) هى الأداه (Form) وفى بعض الأحيان تستخدم الأداه (PictureBox)
* (x,y ) هى إحداثيات النقطه على الأداه . لاحظ أن مركز الأحداثيات (0,0) موجود فى الأعلى ناحيه اليسار.
* (Radius) هو نصف القطر.
* (Color) وهو لون حدود الدائره.

لاحظ أنه يمكننا رسم قوس من الدائره فقط وذلك بتغيير صيغة الأمر إلى :

object.Circle (x, y), radius, color, start, end

حيث أن Start , End  هما بداية ونهاية القوس ويمكن وضعهما بأرقام من (-2*pi) إلى (2*pi).

ويمكننا أيضا تحويل الدائره إلى شكل بيضاوى وذلك بتغيير النسبه بين القطر الأفقى والرأسى وهى فى حالة الدائره = 1 وذلك بتغيير القيمه Aspect  فى الأمر التالى :

object.Circle (x, y), radius, color, start, end ,Aspect

واللون يوجد عدة طرق لكتابته :
---------------------------
الطريقه الأولى :
---------------
 وهى تعتمد على عدد الألوان التى يعمل بها النظام (أحيانا تصل إلى 16مليون أو 32 مليون)
ولذلك يمكننا إستعمال اللأرقام من 0 وهو اللون الأسود إلى أقصى عدد من الألوان يعمل به النظام .

فمثلا

Form1.PSet (1000, 2000), 14122351

اللون 14122351 قد يكون أحد درجات الأزرق

الطريقه الثانيه :
---------------
وهذه الطريقه تستخدم 16 لونا أساسيا وتكتب كالأتى

Form1.PSet (1000, 2000), Qbcolor(12)'   '12 is Red

والألوان هى :
0 --------------- أسود
1---------------- أزرق
2---------------- أخضر
3---------------- زيتى (Cyan)
4---------------- أحمر
5---------------- بنفسجى
6---------------- أصفر
7---------------- أبيض
8---------------- رماضى
9---------------- أزرق خفيف
10--------------- أخضر خفيف
11--------------- زيتى خفيف
12--------------- أحمر خفيف
13--------------- بنفسجى خفيف
14--------------- أصفر خفيف
15--------------- أبيض

الطريقه الثالثه :
---------------
وبها يتم خلط ثلاثة ألوان وهى الأخضر (G)والأحمر ® والأزرق (B) بنسب مختلفه لتكوبن عدد كبير من الدرجات اللونيه فمثلا :
RGB(Red,Green,blue)     'c
حيث يمكن إختيار رقم لكل لون بين 0 و 255
ويكون
RGB(0,0,0)=Black    
RGB(255,0,0)=Red
RGB(0,255,0)=Green
RGB(0,0,255)=Blue
RGB(255,255,255)=White
RGB(255,255,0)=Yellow

ومثالا على ذلك فى حالة الدائره :
Form1.Circle (1000,2500),502,RGB(222,233,2)            'c

=================================================================
رسم نقطه :
____
بنفس الخواص السابقه يمكن رسم نقطه وذلك باستخدام الأمر التالى :

Object.Pset (X,Y) ,Color

لاحظ أن الإحداثيات تبدأ من أعلى اليسار فى الشاشه .
================================================================
رسم خط :
-------
و الأمر المستخدم هو

object.Line (X1,Y1)-(X2,Y2),Color

حيث (X1,Y1) هو إحداثى نقطة بداية  الخط .
و حيث (X2,Y2) هو إحداثى نقطة نهاية الخط .
================================================================
رسم شكل رباعى قائم(مفرغ) :
-------------------------
 وذلك بإستخدام أمر الخط أيضا

object.Line (X1,Y1)-(X2,Y2),Color,B

حيث  (X1,Y1)-(X2,Y2) هما إحداثى نقطتين الأركان (القطر الرئيسى )فى المستطيل أو المربع المرسوم

و لتلوين الشكل الرباعى من الداخل يصبح الأمر :

object.Line (X1,Y1)-(X2,Y2),Color,BF
==============================================================

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

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

ملحوظه: يمكنك مسح الشاشه بأمر Cls
============================================================
ولقد زود الفيجوال بيزك بأدوات للرسم موجوده فى شريط الأدوات وهى الأدوات :
1- الأداه (Line)
------------
ويمكنك سحبه فى الفورمه والتحكم بإحداثياته بالفاره أو من شاشة الخصائص أو عن طريق الكود البرمجى.
فبوضع الخط من شريط الأدوات على الفورمه يطلق عليه الفيجوال بيزك إسم (Line1) ويمكنك تغييره من الخاصيه (Name) .
أما فى الكود فيكون تظبيط الإحداثيات له على الشكل :
Line1.x1=324
Line1.y1=123
Line1.x2=1002
Line1.y2=2000

:ذلك يمكن جعله منقطا أو مقطعا بواسطة تغيير الخاصيه (BorderStyle) أما التحكم فى سمك الخط فيكون من الخاصيه (BorderWidth). ويمكن التحكم بهما بواسطة الكود البرمجى على الشكل :
line1.BorderStyle= 2  
Line1.BorderWidth= 4

2- الأداه (Shape)
-------------
وهذه الأداه يمكن تحويلها إلى عدة أشكال وذلك بتغيير الخاصيه (shape) حيث يمكن تحويله على صورة مربع أو مستطيل أو شكل بيضاوى أو شكل رباعى منحنى الأركان.
و بها أيضا العديد من الخصائص .؟. أرجو أن تستكشفها وحدك .
=============================================================

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

أغسطس 31, 2002, 10:55:18 صباحاً
رد #16

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #16 في: أغسطس 31, 2002, 10:55:18 صباحاً »

الدرس الثانى

هناك أشياء جميلة في حياتنا لكننا لانراها لاننا لانكلف أنفسنا محاولة النظر اليها.. وربما تشابه الايام والروتين يحجب الرؤية عنها

أغسطس 31, 2002, 10:56:34 صباحاً
رد #17

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #17 في: أغسطس 31, 2002, 10:56:34 صباحاً »
وسائل الإدخال و الإخراج :
======================
يمكن إخراج المعلومات ليطلع عليها المستخدم بالكثير من الطرق ولكن أسهلها هو أمر الطباعه على الشاشه (Print)

ويستعمل أمر print بكتابته وإتباعه بالبيانات المطلوب طباعتها فمثلا إذا أردت طباعة كلمة (Egypt) فيكون على الشكل التالى

form1.print "Egypt"        'c
 
* لاحظ أن كلمة (Egypt )هى متغير حرفى ولذلك وضعنها بين قوسين تنصيص .
--------------
أما إذا أردت طباعة ناتج عمليه حسابيه .فاليكن كالأتى :
y=5+6
form1.Print y

* لاحظ عدم وضع الأقواس فى حالة المتغير العددى
--------------
أما إذا أردت الجمع بين عدد من المتغيرات المختلفه فيمكنك كتابته كلأتى :

y = 0.5^4
x = 3333 * 6
form1.print "Result is" & x+y

* لاحظ وضع العلامه & بين المتغيرات
-------------
مهم
====
* إذا أردت أن تطبع الأرقام من 1 إلى 10 . فبالطبع لن تقوم بكتابة الأمر Print عشر مرات. ولذلك يجب أن تعرف قاعدة For

For x=1 to 10
form1.print x
next x

لاحظ أن الصيغه العامه هى :

For [Variable] = [Start] to [End]  'c

                         [Statements]  

Next [Variable]                    'c

حيث يتم البدأ بقيمة البدأ ثم تنفيذ الجمل البرمجيه وعند الوصول إلى (Next) يتم الرجوع للقيمه التاليه . ويظل هكذا حتى القيمه النهائيه.

---------------------------

* يمكن مسح الشاشه بكتابة الأمر (Cls)
ولكن الأمر print نادر الإستخدام لأنه لا يتلائم مع التنسيق الرسومى لمعظم البرامج . ولكن فى بعض الأحيان أستعمله للتأكد من بعض القيم أثناء تصميم البرنامج.

------------------------------------------------------

لعلك لاحظت الأداتين (TextBox) و (Label) الموجودتين فى شريط الأدوات وهاتان الأداتان يمكن إستخدامهما فى عمليه إخراج البيانات على الشاشه.
ولكن يحبذ إستخدام الأداه (label) لمنع المستخدم من العبث فى المخرجات ولقدرتها على أن تصبح شفافه وذلك بتغيير الخاصيه(Backstyle) إلى (transparent) مما يعطيها شكلا أجمل .

برنامج :
=======

1- ضع الأداة (label) على الفورمه.
2- غير محتواها بواسطة الخاصيه (Caption) - إجعلها = 1
3- ضع زرارا (CommandButton) على الفورمه
4- غير محتواه من الخاصيه (Caption) - إجعله = Double
هناك أشياء جميلة في حياتنا لكننا لانراها لاننا لانكلف أنفسنا محاولة النظر اليها.. وربما تشابه الايام والروتين يحجب الرؤية عنها

أغسطس 31, 2002, 10:57:29 صباحاً
رد #18

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #18 في: أغسطس 31, 2002, 10:57:29 صباحاً »
5- إضغط على الزر ضغطتين للدخول إلى شاشة الكود.
6- إكتب الكود التالى :




7- قم بتشغيل البرنامج.

* هل لاحظت أن البرنامج يقوم بمضاعفة القيمه الموجوده فى (Label1).
أى أنه يقوم بضرب القيمه القديمه للأداه (Label) فى 2 ووضع الناتج فى عنوان الأداه.
* لاحظ أنك إن لم تغير محتوى الأداه (Label) وتركتها (label1) سيحدث خطأ فى البرنامج ناتج عن السطر:
Label1.Caption = 2 * Label1.Caption
والذى إصبحت لديه قيمه حرفيه فى ال(Label) والذى لم يعرف كيف يجرى عليها العمليه الحسابيه.
ولتلفى ذلك الخطأ يتم وضع الكلمه (Val) قبل المتغير ليعتبر المتغير رقميا حتى و إن كان به قيمه حرفيه فإنه يأخذه =0 (لن يضاعف فى هذا البرنامج).
---------------------------
والأن
هل تريدعمل ساعة رقميه ؟؟؟

1- إبدأ مشروع جديد .
2- ضع الأداة (label) على الفورمه.
3- ضع أداه المؤقت (Timer) على الفورمه.
4- قم بتعديل الخاصيه (interval) للمؤقت إلى 500
* الخاصيه (interval) هى التى تحدد المسافة الزمنيه التى يقوم فيها المؤقت بتنفيذ الكود بداخله.
و قيمتها تكون بالملى ثانيه (الرقم 500 تعنى نصف ثانيه).


5- إغط ضغطتين على المؤقت وأكتب الكود التالى

Private Sub Timer1_Timer()
Label1.Caption = Time
End Sub

* لاحظ أن المؤقت يقوم بإظهار الوقت فى (Label1) كل نصف ثانيه.

--------------------------
إذا
الأمر (Time) لإظهار الوقت الحالى.
الأمر (Date) لإظهار التاريخ.

-----------------------------------------

الأداه النصيه (Textbox):
======================
رغم أن هذه الأداه تصلح لأن تكون وسيله للإخراج لكن يفضل إستخدامها كوسيلة إدخال . ولتعرف كيف يتم ذلك:
1- كون الشكل التالى :


2- إضغط على الزر ضغطتين و أكتب الكود التالى :

Label1.caption = Val (text1.text) + Val (text2.text)    'c

3- شغل البرنامج .

----------------------------------------

برنامج كلمة السر :
=================

1- ضع أداة النص (Text) فى الفورمه
2- ضع أداة الزر (CommandButton) فى الفورمه.
3- إضغط على أداة الزر(command1) ضغطتين واكتب الكود التالى :

               if text1.text="good" then
msgbox "password is correct"        'c  
                                    else
msgbox "Password is wrong"          'c
                                  End if  

* لاحظ أن كلمة السر هى (good)
* لزيادة السريه فى هذا البرنامج من الممكن جعل كلمة السر تبدو ك (******) حتى لا يعرف من يجلس بجوار المستخدم ماهية هذه الكلمه.وذلك عن جعل الخاصية (PasswordChar) تساوى * أو أى رمز تريده. وحينها ستظهر كل الحروف والأرقام التى تكتبها كأنها رمز واحد رغم أن البرنامج يفهم أصلها.
* يمكنك أيضا أن تحدد أقصى عدد من الحروف تستوعبه أداة النص عن طريق تغيير الخاصية (maxLength) إلى 7 مثلا فإنه سيستوعب سبعة حروف فقط.
لاحظ أن القيمه (صفر) تعنى أن أداة النص تستوعب أقصى عدد من الحروف و هو (64 kb).
* أيضا الخاصيه (multiline = True) تجعلك قادرا على كتابة أكثر من سطر داخل الأداه.

------------------------------------------
تمرين :
======
ما رأيك لو تقوم بعمل برنامج يعمل كأله حاسبه . باستعمال ما سبق شرحه فى هذه السلسله ؟
أرجو أن تحاول عمل هذا البرنامج . وأرجو أن ترسل لى محاولتك . عن طريق رابط فى المنتدى أو عن طريق العنوان البريدى
Mgh_arab@hotmail.com
حتى نعلق عليها . وأضع المتميز منها كمرجع فى هذه السلسله؟
أرجو الإشتراك لتعم الفائدة.

------------------
بعض الدوال التى يمكن أن تحتاج إليها :

1- + و - و / و *  وهى العمليات الأساسيه

2- ((Abs(Number) وهذا الأمر يرجع القيمه الموجبه للرقم
z=abs(-1)      'c
تكون z=1

3- ((Cos(Number) جتا الزاويه

4- ((Sin(Number) جا الزاويه

5- ((tan(Number) ظا الزاويه

6- ((Exp(Number) الأساس اللوغاريتمى الطبيعى للعدد

7- ((Log(Number) اللوغاريتم الطبيعى للرقم

8- ((Hex(Number) تحول الأرقام من النظام العشرى إلى النظام السادس عشر.

9- ((Sgn(Number) لو الرقم موجب يعطى 1 ولو ارقم سالب يعطى 0

10- ((Sqr(Number) الجذر التربيعى للعدد

------------------
مثال لضرب عددين (باستخدام أداة نص واحده)

1- ضع أداة نص فى الفورمه

2- ضع زر فى الفورمه ( إجعل خاصية (Caption)="*")

3- أكتب فى داخل الحدث (command1_Click):
x=val(text1.text)  'c
السطر السابق يضع محتوى الأداة النصيه فى متغير x
text1.text=""      'c
السطر السابق يمسح القيمه الموجوده فى الأداه النصيه

4- ضع زر أخر فى الفورمه (واجعل خاصية (Caption)="=")

5- إكتب داخل الحدث (Command2_click) :
text1.text=Val(text1.text) * x

إذا قمت بتشغيل البرنامج على هذا الوضع سيعطى نواتج خاطئه لأن المتغير X معرف فقط داخل الحدث (Command1_click) ولن يتعرف عليه البرنامج عندما ينادى عليه فى الحدث الأخر (Command2_click)
لذلك يجب تعريفه باستخدام الأمر(Dim) وذلك فى أعلى الكود البرمجى خارج الأحداث كما فى الشكل التالى






هناك أشياء جميلة في حياتنا لكننا لانراها لاننا لانكلف أنفسنا محاولة النظر اليها.. وربما تشابه الايام والروتين يحجب الرؤية عنها

سبتمبر 01, 2002, 09:48:53 صباحاً
رد #19

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #19 في: سبتمبر 01, 2002, 09:48:53 صباحاً »

الدرس الثالث

هناك أشياء جميلة في حياتنا لكننا لانراها لاننا لانكلف أنفسنا محاولة النظر اليها.. وربما تشابه الايام والروتين يحجب الرؤية عنها

سبتمبر 01, 2002, 09:51:31 صباحاً
رد #20

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #20 في: سبتمبر 01, 2002, 09:51:31 صباحاً »
الأن يمكنك أن تقوم بعمل برنامج بسيط باستخدام الفيجوال بيزك . أليس كذلك؟؟؟
ولكنك الأن فى حاجه لأن تعرف بعض الأشياء التى ستجعل البرمجه أكثر سهوله.

المتغيرات (Variables):
=====================
فى لغات البرمجه المختلفه تقوم المتغيرات بتخزين القيم أثناء تنفيذ البرنامج.
فمثلا إذا قلت أن
X="Mohamed"    'c
             Y=33  
فإن x,y متغيرات تم تخزين قيمهم لإستدعائها عند الحاجه.
ومن أنواع المتغيرات (متغيرات حرفيه و متغيرات رقميه أو متغيرات متغيره(Variant) أو تاريخ أو أداه)
 
تعريف المتغيرات (Declaring Vriables):
====================================
و ذلك باستخدام (Dim)
مثلا :
تعريف متغير على أنه عدد صحيح :
Dim Meters as integer
تعريف متغير حرفى :
Dim Greetings as String

لاحظ أنه عند تعريف متغير على أنه عدد صحيح فإنه لن يخزن إلا الأعداد الصحيحه

والمتغير Meters سوف يخزن فيه عدد صحيح مثل 3 أو 1002
أما المتغير Greetings سوف يخزن فيه نص مثل " Thank you"

ويمكنك تعريف عدة متغيرات ب (Dim) واحدة مثل :
Dim Meters,inches,Centimeters As Integer
وعندما يقرأ الفيجوال بيزك الأمر (Dim) فإنه يحجز مكانا لهذا المتغير فى الذاكره. وعندما ينادى هذا المتغير فى البرنامج سيستدعى مباشرة من هذا الجزء فى الذاكره.

* لاحظ أن أسماء المتغيرات يجب
1- ألا تبدأ برقم
2-أن لا تكون مشابهه لأحد أوامر الفيجوال بيزك.
3- أن لا تزيد عن 255 حرف

* ولعلك تسأل لماذا نقوم بالتعريف (مع العلم بأن المتغيرات الغير معرفه يمكن التعامل معها على أنها من أى نوع ).
و أحد هذه الأسباب هى رغبتنا فى أن يحمل أحد المتغيرات نوعا معينا من المعلومات و لا يحمل الأنواع الأخرى .
فإذا كان المتغير (D) هو رقم صحيح وتم تعريفه بواسطة :
Dim D as integer
فإنه لن يقبل إلى الأرقام الصحيحه و يمكنك التأكد من ذلك بالمثال التالى :

1- ضع أداة النص ( TextBox) على الفورمه
2- ضع أداة الزر (Command) على الفورمه
3- إكتب داخل الحدث (Command1_Click)
Dim d As Integer
d=text1.text
Print d

4- شغل البرنامج F5
5- إكتب فى النص الرقم (9,223) وهو رقم عشرى
6- إضغط على الزر
ستلاحظ طباعة الرقم 9 على الفورمه .أى أن المتغير d عدل من القيم لتلائمه وأصبح = 9
7- إكتب فى النص "Hello" وهو قيمه حرفيه
ستلاحظ أن هناك رسالة خطأ (Type Mismatch) لتخبرك بأن البيانات المدخله غير قابله للتخزين فى المتغير المعرف بأنه رقم صحيح .

----------------------------
المتغيرات الرقميه:
================
للمتغيرات الرقميه العديد من التعريفات حسب الإستخدام. فإذا كنت تريد أن تتعامل مع عدد النقاط اللونيه فى الصوره مثلا .أو أردت أن تحصل على التقريب لأقرب عدد صحيح فيكفى أن تستعمل التعريف (Integer).

أما إذا تعاملت مع الرقم 1\3 مثلا فإنه يمثل ب 1,3333333333333333333 (إلى عدد لا نهائى من الأرقام العشريه والتى تكفى لملىء الذاكرة فى جهازك) فيمكنك حينئذ إستعمال التعريفات Double

إذا أردت أن تعرف فائدة تعريف المتغيرات إكتب فى الحدث (Command_Click) بعد وضع زر فى الفورمه :

a=1/3
print a

لاحظ عدم وجود تعريف للمتغير a
وسيكون الناتج الخارج عندئذ = 0,3333333 أى مقرب لسبع أرقام عشريه
والأن أكمل البرنامج بالأتى

a = a * 100000
Print a

سيكون الناتج مساويا 33333,34
وإنك إذا قسمت هذا الناتج على الرقم 100000 لن يعود إلى القيمه الأصليه (0.3333333). وهذا هو ما يسمى (error propagation) وينتج عن العمليات الحسابية المتتاليه.
--------------------

والأن قم بكتابة الكود التالى:

Dim b As Double
b=1/3
print b
b=b*100000
print p

و هنا سيكون الناتج = 0.333333333333333 ثم 33333,3333333333
و هذا الناتج أكثر دقه من المثال الذى قبله وذلك بفضل إستخدام التعريف Double
---------------------

والجدول التالى سيبين تعريفات المتغيرات الرقميه ووظائفها

integer :
 يحمل الأعداد الصحيحه فى الفتره [ -32768 إلى  32768 ]

long :
يحمل الأعداد الصحيحه فى الفتره [ -2147483648 إلى 2147483648 ]

Single :
يحمل الأعداد التى لها أجزاء عشريه
من الممكن أن تكون أعدادا سالبه فى الفتره [(-3.402823 *(10^38)) إلى (-1.401298 *(10^-45))]
أو أرقام موجبه فى الفتره [ (-1.401298 *(10^-45)) إلى (-3.402823 *(10^38) ]


Double :
يحمل الأعداد التى لها أجزاء عشريه
من الممكن أن تكون أعدادا سالبه فى الفتره [ (-1.79769313486232 * 10^308) إلى (-4.94065645841247 * 10^324)]
أو أرقام موجبه فى الفتره [(-4.94065645841247 * 10^324) إلى (-1.79769313486232 * 10^308) ]

Byte
و يحمل عددا صحيحا فى الفتره من 0 إلى 255
و بهذا التعريف تتم قراءة وكتابة الملفات الثنائيه (Binary) مثل ملفات الصور وملفات الأصوات.
_
الخلاصه :
--------
يجب أن تقوم بتعريف المتغيرات الرقميه إذا أردت :
1- الدقه فى العمليات الحسابية.
ولذلك إستخدم التعريف Double
2- الحفاظ على الذاكره وزيادة سرعة البرنامج
حيث أن التعريف (integer) هو أقل تعريف إستخداما للذاكره حيث يحجز له البرنامج حجم 2 بايت فى الذاكره مبدئيا.
3- سهولة فهم وتعديل البرنامج
حيث أنه فى البرامج الكبيره يكون هناك الكثير من المتغيرات التى إذا لم تقم بتعريفها فسيصبح البرنامج بعد فتره صعبا للفهم وتحديد ماهية هذه المتغيرات.
_

المتغيرات الحرفيه (String Variable)
==================================
وهى تقوم فقط بحمل النصوص وتعرف ب :
Dim SomeText As String

و يمكنك تخزين 2 جيجا بايت من الحروف داخل هذه المتغيرات.
ويمكن أن تكون النصوص المحموله على الأشكال الأتيه :

SomeText="i speak arabic and i live in Egypt"    'c
SomeText = ""                         'impty String
SomeText="150000"                                'c


جرب البرنامج التالى :
Dim A As String , B As Srting
A="123"      'c
B="10"       'c
Print A/B

لاحظ أن الناتج سيكون 12.3 أى أن الفيجوال بيزك حول المتغير الحرفى إلى متغير رقمى .

أما إذا كتبت :
Print A & "Divided By " & B & "is" & A/B
فإن الفيجوال بيزك سيتعامل مع A و B الأولين كمتغيرات نصيه و سيتعامل مع A و B الأخرين كمتغيرات رقميه .

------------------
ويمكنك أن تحدد أقصى عدد من الحروف ممكن أن يحملها المتغير الحرفى وذلك بواسطة التعريف :
Dim Sometext As String * 1000
أى أن المتغير Sometext لن يستطيع حمل أكثر من 1000 حرف.


عند تعريف المتغير كمتغير حرفى ثم طلبه بدون وضع قيمه فيه فإن القيمه (null) أى فاضى هى التى تستخدم.
أما إذا تم تعريف المتغير كمتغير رقمى بدون وضع قيمه فيه فإن القيمه (صفر) هى التى تستخدم.
-----------------------------

الإجبار على تعريف المتغيرات :
==========================
إذا أردت أن يجبرك الفيجوال بيزك على تعريف كل المتغيرات التى تستعملها فعليك بوضع الجمله :
Option Explicit
فى أعلى الكود البرمجى .خارج الأحداث.
وعندئذ إذا لم تقم بتعريف أحد المتغيرات سيسألك الفيجوال عنه عند تشغيل البرنامج.

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

----------------------------------
عمر المتغير (Lifetime of a Variable)
====================================
يوقد وقت معين لا يمكنك عنده إستدعاء القيم المخزنه فى المتغيرات.
المتغير المعرف فى مكان التعريفات العامه (General Declarations) فى أعلى الكود البرمجى يمكن مناداته من داخل أى حدث فى كود الفورمه.
أما المتغير المعرف داخل أحد الأحداث مثل (Command1_Click) لا يمكن مناداته خارج الحدث.
هناك أشياء جميلة في حياتنا لكننا لانراها لاننا لانكلف أنفسنا محاولة النظر اليها.. وربما تشابه الايام والروتين يحجب الرؤية عنها

سبتمبر 01, 2002, 09:53:30 صباحاً
رد #21

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #21 في: سبتمبر 01, 2002, 09:53:30 صباحاً »
المصفوفات (Arrays) :
===================
إن البناء الأساسى لتخزين البيانات فى أى لغة برمجه هى المصفوفات. فالمصفوفات من الممكن أن تحتوى على بيانات منفرده (لا تعتمد على بعضها ) أو تحتوى على مجموعه من البيانات التى تعتمد على بعضها .
والمصفوفه يجب أن يكون لها أسم و يتم نداء البيانات عن طريق ترتيبها داخل المصفوفه .

ولذلك إذا أردنا تعريف مصفوفه لنضع فيها 16 عنصر فتكون على الشكل :

Dim Names(15) As String   'c

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

Names(0) = " Mohamed"              'c
Names(1) = " Abo Abd Elrahman"     'c
Names(2) = "Abo Elhoroof"          'c
   ... إلى        
Names(15) = " Abo Nawaf"           'c

---------------------
أما إذا أردت ألا يبدأ الترتيب (Index) بالرقم صفر فعليك بالتعريف التالى:
Dime Names(1 To 16) As String

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

myName = Names(1,5)  'c

حيث يقع إسمى فى الصف الأول و العمود الخامس داخل المصفوفه.
ويتم تعريف المصفوفه ثنائية البعد بـ

Dim Best(10,10) As Integer     'c

وهى مصفوفه تسمى Best وتتسع 122 رقم صحيح .يتم وضعهم فى عشر صفوف وعشرة أعمدة .

ولوضع العدد 12 فى الصف الثانى و العمود التاسع نكتب

Best(1,9)=12

-----------------------
أما النوع الثالث فهو المصفوفه ثلاثية البعد و يمكن تخيلها بأنها بشكل مكعب يمكن مناداة أى نطه فيه بواسطة ثلاث إحداثيات.
وتعرف بالشكل :

Dim Matrix(9,9,9)  'c

وهى مصفوفه تتسع لألف رقم (10*10*10).

وهكذا تزيد أبعاد المصفوفه حسب الحاجه لذلك .



الإجراءات الفرعيه (Subroutines):
==============================
عندما تدرك أن هناك أحد الأجزاء البرمجيه التى تستعملها كثيرا فى نفس البرنامج . فإنك لست مجبرا على كتابتها عشرات المرات حيث يزيد ذلك من حجم البرنامج وتعقيده.
ولكن يمكنك كتابة إجراءا فرعيا يحتوى على الكود المطلوب ومناداته من داخل أى إجراء أخر فى البرنامج.
فمثلا إذا إردت أن تظهر رسالة لتخبر المستخدم عن تاريخ اليوم فيمكنك عمل إجراء فرعى كالتالى :

Sub ShowDate()
MsgBox Date
End Sub

وهذا الكود لا يكتب داخل إجراء أخر ولكن يجب كتابته منفصلا.
لاحظ أن الأمر Date هو أمر إستدعاء تاريخ اليوم
والأمر MsgBox هو أمر إظهار رساله للمستخدم وصورته

MsgBox " Write Your Message Here"   'c

يوجد العديد من الصور التى يمكن مناقشتها فيما بعد

المهم أننا كتبنا الإجراء الفرعى ShowDate والأن يمكننا مناداته من داخل أى إجراء (مثلا Command1_Click) فقط بكتابة  Call ShowDate

Private Sub Command1_Click()
Print "The Message of date will appear Now"
Call ShowDate
Print "the Message Appeared"
End Sub

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


Private Sub Command1_Click()
Print "The Sume of a,b ="
Print Add(13, 15)
End Sub

Function Add(a, b)
Add = a + b
End Function

(ملاحظه: لرؤية البرنامج بشكل صحيح أرجو نسخه إلى شاشة الكود فى الفيجوال بيزك )
لاحظ أن البرنامج يمرر المتغيران a,b إلى الإجراء الفرعى لجمعهما.
هناك أشياء جميلة في حياتنا لكننا لانراها لاننا لانكلف أنفسنا محاولة النظر اليها.. وربما تشابه الايام والروتين يحجب الرؤية عنها

سبتمبر 01, 2002, 10:00:33 صباحاً
رد #22

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #22 في: سبتمبر 01, 2002, 10:00:33 صباحاً »
أنتم فين يا شباب . وأين الأسئلة . إن عدم وجود الأسئلة إما دليل على الفهم التام أو عدم الإهتمام . فأين أنتم من الأثنين ؟؟؟
أرجو توجيه الأسئله ؟ فهى تفتح مناقشات جديدة . وتفيدنى و تفيدكم .
ولا تخجل من بساطة السؤال . فقد يكون كلنا لا نعرف الإجابه عليه .
أرجوكم الإهتمام . حتى أستطيع الإستمرار
وفقكم الله ...
هناك أشياء جميلة في حياتنا لكننا لانراها لاننا لانكلف أنفسنا محاولة النظر اليها.. وربما تشابه الايام والروتين يحجب الرؤية عنها

سبتمبر 01, 2002, 05:58:34 مساءاً
رد #23

أبو عبدالرحمن

  • عضو متقدم

  • ****

  • 718
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #23 في: سبتمبر 01, 2002, 05:58:34 مساءاً »
أخي الحبيب محمد

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

بارك الله في علمكم وجهدكم ولا حرمكم الله الأجر والمثوبة .
أخوك أبو عبدالرحمن

سبتمبر 02, 2002, 09:41:42 صباحاً
رد #24

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #24 في: سبتمبر 02, 2002, 09:41:42 صباحاً »

الدرس الرابع

هناك أشياء جميلة في حياتنا لكننا لانراها لاننا لانكلف أنفسنا محاولة النظر اليها.. وربما تشابه الايام والروتين يحجب الرؤية عنها

سبتمبر 02, 2002, 09:45:08 صباحاً
رد #25

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #25 في: سبتمبر 02, 2002, 09:45:08 صباحاً »
جمل التحكم فى مسار البرنامج (Control Flow Statements):
=====================================================
هذه الجمل هى مدخلك لإحتراف البرمجه . فاستخدمها بالطريقه الصحيحه و فى الوقت المناسب هو ما يميز المبرمج الماهر.
فهى تسمح للمبرج أن يتحكم فى البرنامج تبعا لتغير الظروف الخارجيه.
و هى تقوم بتنفيذ مجموعة من السطور البرمجيه  و تعدل تصرفها حسب الظروف الخارجيه مثل ضغط زر الماوس أو إدخال المستخدم لبيانات معينه.
ومن هذه الجمل :

جملة If ... Then ... End if
===========================
ويمكن تسميتها بجملة (إذا) فهى تختبر حالة معينة فـ(إذا) تحققت فهى تنفذ الجمل البرمجيه داخلها .وإذا لم تتحقق هذه الحاله فإن تنفيذ البرنامج يستمر خارجها. ويهمل الكود بداخلها .
ويمكن أن يكون بداخل جملة(If) جملة برمجيه واحده أو عدة جمل. فإذا أردنا كتابة جمله برمجيه واحده بداخلها فبكفى أن نكتب :

If Condition Then Statement

لاحظ أن (Condition) هو الشرط الذى إذا تحققق ينفذ البرنامج الكود (Statement).
مثال :

If Month(Date) = 8 Then Print "We are in August" 'c

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

If Condition Then Statement1 : Statement2 : Statement3

لاحظ وضع العلامة (:) بين الجمل البرمجيه.
مثال:

If Form1.Caption = "Form1" then Print "Form1" : Msgbox "Form1" : Beep

أو يمكنك جعل ذلك فى عدة سطور مثل :

If Form1.Caption = "Form1" Then
Print "Form1"
MsgBox "Form1"
Beep
End if

لاحظ وضع السطر (End if) فى النهايه لوضع حدود لمجال الجملة (IF).
إن بعض المبرمجين يفضلون وضع الجمل البرمجيه فى سطور منفصله لأن ذلك أسهل فى القراءه.
-------------------------------

الجمله IF ... Then ... Else ... End if
======================================
وهى الصوره العامه لجملة (If ... Then ... End if) .
وتكتب على الصيغه :

  If Condition Then
StaementBlock 1
               Else
StatementBlock 2
             End if

فالفيجوال بيزك يختبر الشرط (Condition) . فإذا كان صحيح (True) فهو ينفذ الكود الأول (StatementBlock 1)ثم يقفز إلى خارج الجمله الشرطيه (If).
أما إذا لم يتحقق الشرط فإن الفيجوال بيزك ينفذ الكود الثانى (StatementBlock 2).
مثال :

Private Sub Command1_Click()
If Second(Time) < 30 Then
Print "First Half of the Minute "
Else
Print "Second Half of the Minute"
End If
End Sub

_

الجمل الحلقيه(Loop Satement):
===========================    
وهى الجمل التى تنفذ مره تلو المره حتى يتحقق شرط معين فيخرج التنفيذ منها .ومنها :

الجمله( Do Loop)
================
ولها صيغتين
الأولــى :

Do While Condition
Statement Block
Loop

و معناه (طالما أنه إفعل) أى أنه إذا تحقق الشرط (Condition) فعلى البرنامج تنفيذ الكود (Statement Block) ثم يعود لإختبار الشرط.
أما إذا لم يتحقق الشرط توقف عمل الحلقه.ويخرج التنفيذ من داخلها

الصيغة الثانيه :

Do Until Condition
Statement Block
Loop

و معناها( إفعل حتى) أى أن الحلقه ستستمر فى التنفيذ حتى يتحقق الشرط (Condition) وعندها يخرج التنفيذ من داخلها.

**** هل تستطيع وضع المثال لهاتين الصيغتين ... أرجو المحاوله ؟؟؟؟

_

'<img'>
لقد إنتهينا الأن من أصعب وأهم الأجزاء فى تعلم البرمجه فهى أدوات المبرمج إن أتقن إستخدامها نجح وتميز . فإن فهمتها فقد تعديت مرحلة المبتدىء. وأما التالى فهو كماليات تعتمد على القواعد السابقه .

ولذلك أرجو منكم كسر حاجز الصمت وجعل رغبتكم فى التعلم و الوصول إلى الإحتراف وسيله للبحث وطرح الأسئله .
هناك أشياء جميلة في حياتنا لكننا لانراها لاننا لانكلف أنفسنا محاولة النظر اليها.. وربما تشابه الايام والروتين يحجب الرؤية عنها

سبتمبر 03, 2002, 04:08:48 مساءاً
رد #26

نهاوند

  • عضو مبتدى

  • *

  • 14
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #26 في: سبتمبر 03, 2002, 04:08:48 مساءاً »
ليس لدي ما أقوله للأخ محمد

سوى شكراً... وجعله الله في موازين حسناتك...

واصل يا بطل.. '<img'>

سبتمبر 04, 2002, 10:54:14 صباحاً
رد #27

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #27 في: سبتمبر 04, 2002, 10:54:14 صباحاً »
لقد رأيت برنامج الأله الحاسبة و قد شرح فى أحد المنتديات (دار الرياضيات) وقد أعجبتنى الطريقه(رغم أنها تعتمد على أداتين للنص) . فأرجو منكم مشاهدتها ومحاولة تنفيذها . كما أرجو منكم ملاحظة كيفية تفاعل الأعضاء فى هذا المنتدى !!!!!! وشكرا

http://www.mathdar.com/vb....id=2773
هناك أشياء جميلة في حياتنا لكننا لانراها لاننا لانكلف أنفسنا محاولة النظر اليها.. وربما تشابه الايام والروتين يحجب الرؤية عنها

سبتمبر 04, 2002, 05:02:48 مساءاً
رد #28

أبو عبدالرحمن

  • عضو متقدم

  • ****

  • 718
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #28 في: سبتمبر 04, 2002, 05:02:48 مساءاً »
أخي الغالي محمد

بارك الله في جهدك وعملك

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

أخوك المحب أبو عبدالرحمن

سبتمبر 04, 2002, 05:27:49 مساءاً
رد #29

ابو الحروف

  • عضو خبير

  • *****

  • 1993
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #29 في: سبتمبر 04, 2002, 05:27:49 مساءاً »
السلام عليكم

في البداية اود ان اشكرك اخي الكريم Mgh على كل ما تقوم به... وبالاخص على عزيمتك وارائك التي قرأتها...

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

وسأحاول هذه الايام متابعة دروسك بإذن الله عز وجل... عسى ان تفيدنا من علمك الوفير... ومتمنيا صبرك على اسئلتي  '<img'>

ولكن المشكلة الاولى التي اواجهها  '<img'>  '<img'>  هي عدم توفر البرنامج لدي!!!
فمن اين يمكنني انزال البرنامج؟؟

جزاك الله كل خير وجعل كل ذلك في ميزان حسناتك يوم القيامة...