Advanced Search

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

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

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

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

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

سبتمبر 07, 2002, 03:05:15 صباحاً
رد #31

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #31 في: سبتمبر 07, 2002, 03:05:15 صباحاً »

الدرس الخامس

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

سبتمبر 07, 2002, 03:20:02 صباحاً
رد #32

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #32 في: سبتمبر 07, 2002, 03:20:02 صباحاً »
بعض الدوال المهمه فى الفيجوال بيزك :
==================================
دوال الخرج والدخل :
=================
دالة Inputbox:
=============

x=InputBox(Prompt,Title[,default][,Xpos][,Ypos]) 'c

و هذه الداله تسمح للمستخدم فى إدخال البيانات داخل مربع للحوار.
حيث :

(X) هو المتغير الذى سيعود بالقيمة المدخلة إلى البرنامج
(Prompt) = وهو النص الذى سيطلب من المستخدم إدخال البيانات .
(Title) = عنوان مربع الحوار.
(Default) = القيمة التى سيرجعها مربع الحوار إذا لم يدخل المستخدم أى شيىء.
(Xpos,Ypos) = إحداثيات مربع الحوار

لاحظ أن الأقواس [] تعبر عن أن المتغير بداخلها يمكن عدم إستعمالها .

إستخدامها :
---------
Name=InputBox("إدخل إسمك ")
أو
 age = InputBox("ادخل عمرك بالسنوات", "عمر المستخدم", "عمر المستخدم غير معروف")

مثال :
-----
أكتب المثال الأتى داخل الحدث (Command1_Click) بعض إضافة زر (Command1) و مربع نص (Text1) إلى الفورمه.

Age = InputBox("ادخل عمرك بالسنوات", "عمر المستخدم", "20")
Text1.Text = "عمرك بالسنوات يساوى " & Val(Age) & "سنة"

شغل البرنامج وتعامل معه ....
لحظ أنه إذا إدخلت نصا حرفيا كـ(محمد) مثلا فإن البرنامج سيخرج الصيغة الأتيه "عمرك بالسنوات يساوى محمد سنه "

ولتلافى هذا العيب الخطير يمكن إستعمال
IsNumeric(Variable) 'c
و هذا الأمر يعود بالقيمة (True) إذا كان المتغير بداخلة متغير رقمى ويعود بالقيمة (False) إذا كان المتغير غير رقمى.
مثلا إذا كان z=232 فإن IsNumeric(Z)  سيساوى True لأن المتغير المختبر رقمى .
أما إذا كان Z="wqe21"  فإن IsNumeric(Z)  سيساوى False لأن المتغير حرفى
وقد إستخدمت ذلك فى البرنامج السابق بتعديله إلى :


age = InputBox("ادخل عمرك بالسنوات", "عمر المستخدم", "عمر المستخدم غير معروف")
If IsNumeric(age) = True Then
Text1.Text = "عمرك بالسنوات يساوى " & Val(age) & "سنة"
Else
Text1.Text = "عمر المستخدم غير معروف"
End If

ما رأيك ؟؟؟


دالة MsgBox :
============
x= MsgBox (prompt[,buttons][,title])  'c

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

(Prompt) :
هى الرسالة التى نريد إظهارها للمستخدم
(Buttons) :
هى الأزرار التى ستظهر فى مربع الحوار كزر (OK,Cancel,Retry,Yes,No)
(X) :
هو المتغير الذى سيعود بقيمة الزر الذى ضغطه المستخدم.
(title) :
هو عنوان الرسالة.

مثال :
======
إظهار رسالة بزر OK فقط
MsgBox "Your Computer is running out of memory!" 'c


إظهار رسالة بزرين Cancel,Ok
t = MsgBox("Are You Sure ?", vbOKCancel) 'c
وفى هذه الحالة إما t ستساوى Vbok أو VBcancel


إظهار رسالة تحذيريه بأيكونة (حالة حرجة)
t = MsgBox("Error", vbCritical) 'c

أرجو أن تجرب القيم التى سيظهرها لك الفيجوال بيزك داخل القائمة المنسدلة:



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

WeekDays = Array ("السبت","الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة")

ويكون :
FirstDay =WeekDay(0)       'S
وهو السبت

ويكون :
SecondDay = WeekDay(1) 'c
وهو الأحد

_

دوال الوقت :
============
دالة Timer
==========
وهذه الدالة تعود بعدد الثوانى التى مرت منذ منتصف الليل

T1=Timer

-----------------------------
دالة Date
=========
يعود بتاريخ اليوم على الصورة 27/11/99

Msgbox "The System Date is " & Date

-----------------------------
دالة Time
=========
يعود بالوقت الحالى ويخبرك إن كان مساءا أم صباحا (AM,PM)

Msgbox "The System Time is " & Time

---------------------------------
دالة Now
----------
وهى تخبرك بالتاريخ والساعة الأن
فبدلا من كتابة

--------------------------------
دوال أخرى:
=========
دالة IFF
========
يمكنك إختصار البرنامج التالى :

if amin=a
else
min=b
end if

إلى :

Min=IFF(a
حيث يختبر الفيجوال بيزك الشرط فإذا كان صحيحا أخذ القيمة الأولى وإذا كان خاطئا أخذ القيمة الثانية. والصيغة العامة لها هى :

IFF(Expression ,Truepart,Falsepart)    'c
---------------------------------

دالة RND
========
وهى دالة توليد أرقام عشوائيه.

فمثلا لتوليد رقم صحيح (Int) بين رقمين (الأصغر Lower و الأكبر Upper).

randomnumber = Int ((Upper - Lower + 1 ) * RND + Lower ) 'c

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

سبتمبر 08, 2002, 01:14:36 مساءاً
رد #33

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #33 في: سبتمبر 08, 2002, 01:14:36 مساءاً »

الدرس السادس

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

سبتمبر 08, 2002, 01:15:53 مساءاً
رد #34

Mgh

  • عضو خبير

  • *****

  • 3536
    مشاركة

    • مشاهدة الملف الشخصي
سلسلة تعليم الفيجوال بيزك
« رد #34 في: سبتمبر 08, 2002, 01:15:53 مساءاً »
لعلك سألت . هل يتكون المشروع من فورمه واحده؟. بالطبع لا
فأحيانا يتكون المشروع منالعديد من الفورمات فى المشروع الواحد . فمنها من يطلب منك كلمة مرور(PassWord Form) ومنها ما يكون شاشه سريعة للتعريف بالبرنامج (Splash Form) و منها ما يعرض الإختيارات (Option) ومنها الفورمه الأساسيه أو فورمة المساعده(Help).

إضافة فورمة جديده :
==================
1- إفتح مشروع جديد
لاحظ وجود أيكونة للفورم 1 فى شاشة (Project -Project1) على اليمين من شاشة التصميم.



2- من قائمة Project إختر Add Form



سيظهر لك مربع حوار (إختر منه Form) وإضغط Open
حينها سيظهر فورم أخر يدعى Form2
و يمكنك التنقل بين Form1,Form2 عن طريق الأختيار بالفاره من شاشة (Project)- الشكل قبل الأخير.

3- ضع زر فى فورم1 وأكتب فى الحدث (Command1_Click) له:

Form2.show

شغل البرنامج و جرب الضغط على الزر (ستظهر الفورمه الثانيه على الشاشه)

4- أضف زرا أخر فى فورم 1 و أكتب فى الحدث(Command2_Click) له :

Form2.Hide

شغل البرنامج وجرب الضغط على (Command1) -(سيظهر Form2)
ثم إضغط على (Command2)- (سيختفى فورم2)

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

إنتقال البيانات بين الفورمات المختلفة:
======================================
1- إبدأ مشروع جديد
2- أضف فورمة ثانية Form2
3- ضع زرا فى فورم1 وأكتب فى حدث (Command1_click)له

Form2.show

4- ضع أداة (Label) فى الفورمه 2
5- ضع أداة النص (Text) فى فورمه 1 وإضغط عليها ضغطتين لتنتقل إلى شاشة الكود والحدث ( Text1_Change) واكتب فيه:

Form2.Label1.Caption=Text1

ومعنى ذلك الحدث أنه عند تغير محتوى Text1 الموجود فى فورم 1 فإن محتوى أداة (Label1) سيتغير مساويا له.

لاحظ عند مناداة خاصيه لأداه موجودة فى فورمه أخرى فإنه يجب وضع إسم الفورمه قبل إسم الأداه.

__

الموديول (Module):
==================
وهو وحدة الأتصال بين برنامجك و النظام الخارجى وغالبا يتم ذلك من خلال ما يعرف بملفات مكتبات الربط الديناميكية (DLL Files).
ويتم كتابة أكواد(تعرف بدوال API) داخل تلك الموديولات لتنادى على الدوال المختلفة الموجودة بداخل تلك المكتبات (DLLs) والتى (أى تلك المكتبات ) من المحتمل أنها قد كتبت بواسطة برامج كالفيجوال سى .
وتستخدم تلك الدوال (API Functions) فى :

  • التعامل مع بيئة الويندوز :
    كالتعامل مع كل وسائل الإدخال و الإخراج فى النظام كالفارة ولوحة المفاتيح والشاشة و الطابعة.

  • التعامل مع خدمات النظام :
    كمعرفة المساحات الخالية فى القرص الصلب و الذاكرة وغيرهما من مصادر النظام.

  • التعامل مع الأصوات والفيديو .

  • التعامل مع الملفات بالنسخ والمسح و....

    وهناك الكثير مما سنذكره بعد ذلك .

    كما ذكرنا أن دوال (API) تكتب داخل ما يعرف بالموديول ويمكنك إضاقة الموديول بنفس طريقة إضافة فورمة جديده :

    Project >> Add Module

    ستلاحظ ظهور الموديول بشكله المميز فى شاشة (Project)


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

    مثال :
    ======
    1- أفتح مشروع جديد وأضف فيه فورمتين و موديول واحد
    2- أضف فى كل فورمة (زر و أداة نص)
    3- اكتب فى الموديول

    Dim x as integer

    4- اكتب فى الفومة الأولى داخل الحدث (Command1_Click)

    X=Val(Text1.text) 'c
              Form2.Show

    5- أكتب فى الفورمة الثانية داخل الحدث (Command1_Click)

    Text1.text=x

    6- شغل البرنامج وأكتب رقما صحيحا داخل النص الموجود فى لفورمه 1 ثم إضغط على الزر.
    ستظهر الفورمة الثانيه
    7- إضغط على الزر بداخلها.
    سيأخذ النص نفس القيمه الموجودة فى النص الموجود فى الفورمه1

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



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

    سبتمبر 08, 2002, 01:30:45 مساءاً
    رد #35

    Mgh

    • عضو خبير

    • *****

    • 3536
      مشاركة

      • مشاهدة الملف الشخصي
    سلسلة تعليم الفيجوال بيزك
    « رد #35 في: سبتمبر 08, 2002, 01:30:45 مساءاً »
    تطبيق على إستخدام الموديول فى الربط بملفات الربط الديناميكية :
    ============================================================
    كشف وإعادة تعيين مكان مؤشر الفأرة على الشاشة:
    ============================================
    1- إفتح مشروع جديد
    2- أضف فورم1 وغير إسمه من الخاصية Nameإلى (frmCursor)
    3- أضف موديول وغير إسمه من الخاصيه Name إلى (Cursor)
    4- إحفظ الصورة التاليه وضعها فى الخاصية (Picture ) للفورمة1



    ليصبح شكل التصميم هكذا :



    5- ضع الأدوات كما فى الشكل التالى



    وغير الخاصيتان (Caption) و (Text) ليصبح الشكل :
    6- أكتب الكود التالى داخل الفورمه

    Private Sub Command1_Click()
        Dim x As Long
        Dim y As Long
        Dim result As Long
        x = Val(Text1.Text)
        y = Val(Text2.Text)
        result = SetCursorPos(x, y)
    End Sub

    Private Sub Command2_Click()
        Dim POINT As POINTAPI
        Dim result As Long
        result = GetCursorPos(POINT)
        Label3.Caption = "على محور السينات =" & POINT.x
        Label4.Caption = "على محور العينات =" & POINT.y
    End Sub

    7- تحول إلى شاشة الكود فى الموديول وأكتب الكود التالى :

    Public Type POINTAPI
            x As Long
            y As Long
    End Type

    Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
    Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

    8- شغل البرنامج وتعامل معه .
    __
    شرح البرنامج :
    =============
    1- فى الكود الخاص بالموديول ستجد السطر

    Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long

    والذى يحمل نداء للدالة (SetCursorPos) والموجوده فى ملف (User32.dll) وهذه الدالة هى المسؤلة عن وضع مؤشر الفاره فى المكان الذى سيحدد بواسطة المتغيران (x,y) .

    أما فى السطر :

    Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

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

    Public Type POINTAPI
            x As Long
            y As Long
    End Type

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

    2- الكود الموجود فى الفورمه . وينقسم إلى قسمين :

    أ- الكود الموجود فى الحدث (Command1_Click) و هو الزر المسؤول عن توجيه المؤشر إلى أى مكان فى الشاشة.

  • لاحظ تعريف المتغيرات التالية (حتى يخصص لها البرنامج مكانا فى الذاكرة لتخزن فيه)

        Dim x As Long
        Dim y As Long
        Dim result As Long

  • فى الكود التالى يتم وضع القيم التى يضعها المستخدم فى أدوات النص فى المتغيران (X,y)

        x = Val(Text1.Text) 'c
        y = Val(Text2.Text) 'c

  • فى السطر التالى يتم نداء الدالة (SetCursorPos) الموضوعه فى الموديول

        result = SetCursorPos(x, y) 'c

    ب- الكود الموجود فى الحدث (Command2_Click) وهو الزر المسؤول عن معرفة مكان المؤشر فى الشاشة

  • لاحظ أن التعريف التالى يعتمد على طريقة التعريف الموجودة فى الموديول وذلك لخدمة الدالة (GetCursorPos)

        Dim POINT As POINTAPI

  • تعريف عادى :

        Dim result As Long

  • نداء الدالة:
        result = GetCursorPos(POINT)

  • وضع المتغيرات التى تنتجها الدالة فى اأدوات (Label3,4)

        Label3.Caption = "على محور السينات =" & POINT.x
        Label4.Caption = "على محور العينات =" & POINT.y
  • هناك أشياء جميلة في حياتنا لكننا لانراها لاننا لانكلف أنفسنا محاولة النظر اليها.. وربما تشابه الايام والروتين يحجب الرؤية عنها

    سبتمبر 08, 2002, 04:57:54 مساءاً
    رد #36

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

    • عضو متقدم

    • ****

    • 718
      مشاركة

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

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

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

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

    سبتمبر 10, 2002, 01:18:02 مساءاً
    رد #37

    Mgh

    • عضو خبير

    • *****

    • 3536
      مشاركة

      • مشاهدة الملف الشخصي
    سلسلة تعليم الفيجوال بيزك
    « رد #37 في: سبتمبر 10, 2002, 01:18:02 مساءاً »

    الدرس السابع

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

    سبتمبر 10, 2002, 01:20:19 مساءاً
    رد #38

    Mgh

    • عضو خبير

    • *****

    • 3536
      مشاركة

      • مشاهدة الملف الشخصي
    سلسلة تعليم الفيجوال بيزك
    « رد #38 في: سبتمبر 10, 2002, 01:20:19 مساءاً »
    التعامل مع الملفات :
    ===================
    إستكشاف الملفات :
    ================
    يوجد 3 أدوات أساسية فى الفيجوال بيزك لإستكشاف الملفات وهم (DriveListBox) لإستكشاف المحركات فى القرص الصلب و (DirListBox) لإستكشاف المجلدات و (FileListBox) لإستكشاف الملفات.
    ويمكن إستعملهم على الشكل التالى :



    ولكن حتى بعد وضعهم فى الفورمة لا يوجد بينهم رابط . فإنك إذا غيرت المحرك من C إلى D فى الأداة (DriveListBox) فلن تتغير المجلدات فى الأداة (DirListBox) .
    وإذا غيرت المجلد النشط فى الأدة (DriveListBox) فإن الملفات بداخل المجلد الجديد لن تظهر فى الأداة (FileListBox).
    وطبعا يتم حل هذه المشكلة بكتابة الكود . فعند الضغط مرتين بالفارة على أداة (DriveListBox) سوف تنتقل إلى شاشة الكود فى الحدث (Drive1_Change) ويعنى تنفيذ الكود بداخله عند حدوث تغيير فى قيمة الأداة. وفى هذا الحدث نكتب :

    Dir1.Path = Drive1.Drive

    حيث Dir1 هو القيمة الإفتراضية للإسم فى للأداة (DirListBox)
    و Drive1 هو القيمة الإفتراضية للإسم فى للأداة (DriveListBox)
    وتقوم الجملة البرمجية السابقة بتغيير مسار المجلد الحالى حسب المحرك الجديد وكل ذلك عندما يغير المستخدم المحرك.

    والأن تم ربط الأداتين للـ(المحرك و المجلد) و تشغيل البرنامج يمكنك التعامل معهما .

    أما عن ربط أداة المجلدات بأداة الملفات فيتم بالضغط على أداة (DirListBox) وكتابة الكود التالى فى الحدث (Dir1_Change) :

    File1.Path = Dir1.Path

    حيث File1 هو القيمة الإفتراضية للإسم فى الأداة (FileListBox).
    وتقوم الجملة البرمجية السابقة بإظهار الملفات الموجودة فى المسار الذى يحدده أداتى المجلد و المحرك.

    وهكذا يكون الكود البرمجى الكلى الذى يمكنك نسخة إلى شاشة الكود خاصتك هو :

    Private Sub Dir1_Change()
    File1.Path = Dir1.Path
    End Sub

    Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
    End Sub

    --------------------------
    والأن أضف على الفورمة السابقه أداة النص (TextBox).
    وأنقر على أداة الملف (File1) نقرتين لتنتقل إلى الحدث (File1_Click) واكتب الكود التالى :

    Text1.Text = Dir1.Path & "\" & File1.filename

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



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

    1- دوال الفيجوال بيزك :
    ======================
    دالة GetAttr
    ============
    وتقوم بالحصول على خصائص الملف (مخفى أو للقراءة فقط أو ملف نظام أو مجلد ) وهذه الخصائص هى التى يمكنك رؤيتها عند الضغط على الملف بالزر الأيمن فى مستكشف الويندوز وإختيار الخاصية (Properties)أو خصائص .

    x= GetAttr(FileName) 'c
    مثلا
    fAttr = GetAttr ("C:\autoexec.bat") 'c

    و الأن يمكنك إضافة أداة نص أخرى (Text2) فى الفورمة



     وكتابة الكود التالى داخل الحدث (File1_Click)

    Private Sub File1_Click()
    Text1.Text = Dir1.Path & "\" & File1.filename
    Text2.Text = GetAttr(Text1.Text) 'c
    End Sub

    لاحظ أن أداة النص (Text2) سوف تأخذ أحد القيم الأتية:






    القيمةالخاصية المقصودة






    0ملف عادى






    1ملف للقراءة فقط






    2ملف مخفى






    4ملف نظام






    16مجلد






    32ملف أرشيف (أى يتم التعديل فيه)

    ---------
    دالة FileDateTime
    ==================
    وترجع هذه الدالة يوم وساعة إنشاء الملف أو أخر مرة تم التعديل فيه.

    x= FileDateTime(FileName) 'c

    أضف أداة نص أخرى (Text3) وأكتب السطر التالى إلى الكود فى (File1_Click)

    text3.text= FileDateTime(Text1.text) 'c

    --------
    دالة FileLen
    ============
    وترجع هذه الدالة حجم الملف بالبايت (الكيلوبايت = 1024بايت)

    x= FileLen(Filename) 'c

    أضف أداة نص أخرى (Text4) للفورمة وأضف السطر التالى داخل الحدث (File1_Click)  السابق :

    Text4.Text = FileLen(Text1.Text)

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



    ويكون الكود الكامل :

    Private Sub Dir1_Change()
    File1.Path = Dir1.Path
    End Sub

    Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
    End Sub

    Private Sub File1_Click()
    Text1.Text = Dir1.Path & "\" & File1.filename
    Text2.Text = GetAttr(Text1.Text)
    Text3.Text = FileDateTime(Text1.Text) 'c
    Text4.Text = FileLen(Text1.Text)
    End Sub

    ------------------------
    إذا كان الملف هو ملف صورة فما رأيك بجعله يظهر فى جانب الفورمه .
    أضف أداة صورة (ImageBox) إلى الفورمه.

    أضف السطرين الأتيين إلى الحدث File1_Click  السابق

    On Error Resume Next
    Image1.Picture = LoadPicture(Text1.Text) 'c

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

  • عند تشغيل البرنامج وإختيار ملف صورة ستظهر الصورة فى مربع الصورة ولكنها لن تكون ظاهرة كلها بل جزء منها فقط . ويمكنك تعديل ذلك بتغيير الخاصيه Stretch إلى True



    يتبع .إنشاء الله...



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

    سبتمبر 12, 2002, 12:39:18 مساءاً
    رد #39

    Mgh

    • عضو خبير

    • *****

    • 3536
      مشاركة

      • مشاهدة الملف الشخصي
    سلسلة تعليم الفيجوال بيزك
    « رد #39 في: سبتمبر 12, 2002, 12:39:18 مساءاً »
    دالة Shell
    ==========
    تستخدم لتشغيل الملفات التنفيذية (EXEs)

    a= Shell (pathname[,windowstyle])  'c

    حيث WindowStyle هو شكل البرنامج بعد التشغيل (إما مكبرا أو عادى أو مصغرا فى شريط الأدوات أو حتى مخفيا )

    أمثلة :

    لتشغيل برنامج الألة الحاسبة
    a = Shell("calc.exe")  'c

    لتشغيل برنامج تحرير النصوص مكبرا
    w = Shell("C:\windows\Notepad.exe", vbMaximizedFocus)   'c

    لفتح ملف معين ببرنامج تحرير النصوص
    e = Shell("Notepad.exe c:\Netlog.txt", vbNormalFocus)   'c

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

    مثال هذا المثال ينادى الدالة ShellExecute التى يستخدمها نظام التشغيل والتى توجد فى الملف (Shell32.dll)

    1- إفتح مشروع جديد وأضف فورمه1 و موديول1
    2- إكتب فى الموديول الكود التالى


          Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpszOp As String, ByVal lpszFile As String, ByVal lpszParams As String, ByVal lpszDir As String, ByVal FsShowCmd As Long) As Long
         Private Declare Function GetDesktopWindow Lib "user32" () As Long

          Const SW_SHOWNORMAL = 1
          Const SE_ERR_FNF = 2&
          Const SE_ERR_PNF = 3&
          Const SE_ERR_ACCESSDENIED = 5&
          Const SE_ERR_OOM = 8&
          Const SE_ERR_DLLNOTFOUND = 32&
          Const SE_ERR_SHARE = 26&
          Const SE_ERR_ASSOCINCOMPLETE = 27&
          Const SE_ERR_DDETIMEOUT = 28&
          Const SE_ERR_DDEFAIL = 29&
          Const SE_ERR_DDEBUSY = 30&
          Const SE_ERR_NOASSOC = 31&
          Const ERROR_BAD_FORMAT = 11&


          Function StartDoc(DocName As String) As Long

              Dim Scr_hDC As Long
              Scr_hDC = GetDesktopWindow()
              StartDoc = ShellExecute(Scr_hDC, "Open", DocName, "", "C:\", SW_SHOWNORMAL)

          End Function
        
    لاحظ أنه ليس عليك فهم مايوجد فى هذا الكود فمعظمها ثوابت يستخدمها النظام.
    وإليك بعض ما تعنيه هذه الثوابت :










    hwndيحدد الشاشة الأم التى ستظهر فيها الرسائل الخارجه من البرنامج المشغل وفى حالتنا هذه هى سطح المكتب
    lpszOpوهذا المتغير يحدد ما إذا أردت أن تفتح الملف (Open) أو أن تتم طباعته
    lpszFileوهذا المتغير إسم الملف المراد فتحه
    FsShowCmdوهذا المتغير يحدد ما إذا كان الملف سيصبح مرئيا عند فتحه أم لا

     

    3- بداخل كود الفورمه أكتب



          Private Sub Form_Click()

              Dim r As Long, msg As String

              r = StartDoc("C:\WINX\Blue Rivets.bmp")

              If r <= 32 Then

                  'There was an error

                  Select Case r

                      Case SE_ERR_FNF

                          msg = "File not found"

                      Case SE_ERR_PNF

                          msg = "Path not found"

                      Case SE_ERR_ACCESSDENIED

                          msg = "Access denied"

                      Case SE_ERR_OOM

                          msg = "Out of memory"

                      Case SE_ERR_DLLNOTFOUND

                          msg = "DLL not found"

                      Case SE_ERR_SHARE

                          msg = "A sharing violation occurred"

                      Case SE_ERR_ASSOCINCOMPLETE

                          msg = "Incomplete or invalid file association"

                      Case SE_ERR_DDETIMEOUT

                          msg = "DDE Time out"

                      Case SE_ERR_DDEFAIL

                          msg = "DDE transaction failed"

                      Case SE_ERR_DDEBUSY

                          msg = "DDE busy"

                      Case SE_ERR_NOASSOC

                          msg = "No association for file extension"

                      Case ERROR_BAD_FORMAT

                          msg = "Invalid EXE file or error in EXE image"

                      Case Else

                          msg = "Unknown error"

                  End Select

                  MsgBox msg

              End If

          End Sub

    لاحظ أن الملف المطلوب فتحه هو (C:\WINX\Blue Rivets.bmp) وهو ملف صورة (أرجو تعديل هذا العنوان ليلائم ملف موجود فعلا فى جهازك)
    هل يمكنك جعل المستخدم يختار هذا الملف باستخدام الأدوات (محرك و مجلد وملف ) السابق الحديث عنهم فى هذا الدرس.
    أرجو إن فعلت ذلك أن ترسله لى أو أن تقوم بعرضه فى المنتدى ليستزيد الجميع.

  • هل تلاحظ الكود الموجود بالفورمة
    أولا يتم تحديد الملف المطلوب ووضعه داخل الدالة المناداه من الموديول
    ثم يتم وضع رسائل الخطأ المتوقع حدوثها
    فلو حدث خطأ فى التشغيل ستعيد الدالة (StartDoc) قيمة أقل من أو تساوى 32


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

    أكتوبر 18, 2002, 05:45:57 مساءاً
    رد #40

    حاتم

    • عضو مبتدى

    • *

    • 23
      مشاركة

      • مشاهدة الملف الشخصي
    سلسلة تعليم الفيجوال بيزك
    « رد #40 في: أكتوبر 18, 2002, 05:45:57 مساءاً »
    أين بقية الدروس نحن في الإنتظار
    الله في عون العبد مادام العبد في عون أخيه

    أكتوبر 22, 2002, 06:26:24 مساءاً
    رد #41

    علا

    • عضو مبتدى

    • *

    • 9
      مشاركة

      • مشاهدة الملف الشخصي
    سلسلة تعليم الفيجوال بيزك
    « رد #41 في: أكتوبر 22, 2002, 06:26:24 مساءاً »
    أستاذي الفاضل أرجو اجابتي على سؤال ايقاف التشغيل عن طريق الفيجوال بيسك ولكم جزيل الشكر

    أكتوبر 23, 2002, 11:18:21 صباحاً
    رد #42

    Mgh

    • عضو خبير

    • *****

    • 3536
      مشاركة

      • مشاهدة الملف الشخصي
    سلسلة تعليم الفيجوال بيزك
    « رد #42 في: أكتوبر 23, 2002, 11:18:21 صباحاً »
    السلام عليكم ورحمة الله وبركاته

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



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

    أكتوبر 24, 2002, 03:00:59 مساءاً
    رد #43

    علا

    • عضو مبتدى

    • *

    • 9
      مشاركة

      • مشاهدة الملف الشخصي
    سلسلة تعليم الفيجوال بيزك
    « رد #43 في: أكتوبر 24, 2002, 03:00:59 مساءاً »
    الأستاذ الفاضل لكم جزيل الشكر على هذا البرنامج ولكن سبق لي أن طبقته عن طريق كتاب المبرمج وهو كتاب رائع ومفيد جداً لكن للأسف هذا البرنامج لا يؤدي المطلوب فهو فقط يقوم بتسجيل الخروج ! فهل هناك خطوات معينة عليّ اتباعها لكي ينفذ ايقاف التشغيل أم الخطأ من البرنامج؟ وبارك الله فيكم

    أكتوبر 24, 2002, 05:26:00 مساءاً
    رد #44

    حاتم

    • عضو مبتدى

    • *

    • 23
      مشاركة

      • مشاهدة الملف الشخصي
    سلسلة تعليم الفيجوال بيزك
    « رد #44 في: أكتوبر 24, 2002, 05:26:00 مساءاً »
    أشكرك يأخي وياأستاذي وجزاك الله خيرا
    فعند سؤال أرجو منكم الإجابة عليه وهو أين يمكنني كتابة البرنامج الأم أي أين هو هيكل البرنامج حيث يمكنني إستدعاء البروسيدير والفنكسيون كما هو الحال في باسكال على سبيل المثال
    فأنا أحاول إنشاء برنامج وهو
    عندي معرف به كلمة على سبيل المثال word="welcome"i
    أحاول أن أكتب أن الحف الأول وهو w فيكمل الكمبيوتر الحرف الثاني في label1.caption ثم أنا ثم هو وهكذا
    وهذا هي محاولتي
    ========
    you = 1
    If you = 1 Then
    Label1.Caption = Label1.Caption + Mid(f, Len(Label1.Caption+1), Len(Label1.Caption+1))
    'you = you * -1
    End If
    حيث قمت بالتصريح بالمعرف you ويعني أنه دور الجهاز في كتابة الحرف الذي يلي عند تحقق الشرط والذي هو If you = 1 Then
    إذا تحقق الشرط سينفذ
    Label1.Caption = Label1.Caption + Mid(f, Len(Label1.Caption+1), Len(Label1.Caption+1))
    وهذه التعليمة والتي بدورها تقوم بكتابة الحرف الي كتبته أنا + الحرف الذي يلي في الكلمةword والذي حددته Mid(word, Len(Label1.Caption+1), Len(Label1.Caption+1))
    حيث سيذهب إلى كلمة word حيث سيبدأ من الرقم والذي هو طول Label1.Caption + واحد فعلى سبيل المثال يوجد في Label1.Caption حرف w فهنا طولها 1 ولكي لا يعيد حرف w أضفت له واحد لكي يكتب هو أي الكمبيوتر e وهو الحرف الثاني من الكلمة وسينته من نفس نقطة البداية في(mid) لكي يكتب حرف واحد فقط
    وبعد تنفيذ هذه التعليمة سيغير في المعرف you ليصبح دوري أنا في كتابة الحرف الذي يليه وهكذا حتى تنتهي الكلمة
    المشكلة وهي أني عند كتابتها في بوكل أي التكرار كيف يمكنني أو ما هو الأمر الذي يسمح لي بإعطائي الفرصة لإدخال الحرف فلقد إستعملت input ولم تنفع ؟
    أو إذا كانت هناك طريقة أخرى فلا أمانع
    فعلى الجميع المشاركة فنريد الحيوية كما طلبها الأستاذ Mgh قلا تخذلونا

     '<img'>
    الله في عون العبد مادام العبد في عون أخيه