Visual Basic (6)

 

 

محتويات الدرس السادس :

      v         أهم خصائص النافذة

      v        أهم أحداث النافذة

      v        إظهار النوافذ وإخفائها

 

أهم الخصائص للنافذة

اسم الخاصية : AutorRedraw

متوفرة أثناء  : التصميم والتنفيذ

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

أما إذا كتبت أي شئ على النافذة باستخدام الأمر print  أو رسمت أي شكل هندسي بإستخدام الأمر circle أو line  ثم قام المستخدم بتصغير النافذة ثم تكبيرها فإن النافذة ستفقد محتوياتها وتظهر بدون الأشكال أو العبارات التي طبعتها ذلك أن الناتج من هذه الأوامر ليس ثابتاً . جرب ذلك :

مثال

      v         افتح مشروع جديد

      v        انقر نقراً مزدوجاً فوق النافذة form1 لتفتح نافذة البرمجة الخاصة بها .

      v        غير الحدث المعروض في النافذة إلى حدث النقر click

      v        اكتب التعليمات التالية :

sub form_click ( )

circle (2500,2000),1500

"هذه تجربة على الكتابة فوق النافذة " print

end sub

      v        شغل البرنامج بالضغط على F5

      v        انقر فوق النافذة سوف يقوم "فيجول بيسيك" بتنفيذ الأوامر التي وضعتها في

 

حدث النقر فيرسم دائرة ويطبع جملة .

      v        صغر النافذة ثم كبرها ، ماذا تلاحظ ؟؟؟ ستجد أن النافذة فقدت محتوياتها .

والحل هو أن تضع الأوامر في الحدث paint بدلاً من click

مثال :

sub form_paint ( )

circle (2500,2000),1500

"هذه تجربة على الكتابة فوق النافذة " print

end sub

      v        شغل البرنامج F5

      v        صغر النافذة وكبرها ، ستجد أن النافذة محتفظة بمحتوياتها

حل أخر ( هو يمكن أن تغير خاصية النافذة form1 وتضع autodedraw قيمة true

 

شرح  دراسة الخصائص للنافذة form1 في المحاضرة

 

إخفاء النافذة

استخدم امر hide  لإخفاء النافذة

مثال :

form2.hide

وهذا الامر يقوم بإخفاء form2

 

اظهار النافذة

مثال :

form2.show

 

وهذا الامر يقوم بإظهار form2

أوامر التعامل مع الملفات والأدلة

      v        معرفة القرص والدليل الحالي

إذا أردت معرفة القرص والدليل الحالي ، استخدم الأمر curdir$

مثال :

label1.caption = curdir$

 

يعود هذا بالدليل الحالي بكاملة بما فيه القرص الحالي . لذلك يمكنك استخدام الأمر left$  لقراءة أول حرف فيه ومن ثم معرفة القرص الحالي ، مثل :

mydrive$ = left$(curdir$, 1)

فهنا المتغير  mydrive  يحتوي على القرص الحالي

 

معرفة الدليل الذي بدأ منه برنامجك

مثال :

a$ = app.path

 

نسخ ملف

عندما ترغب في نسخ ملف ، استخدم الأمر filecopy وله الصيغة التالية

"الهدف"   ," المصدر"   filecopy

مثال :

filecopy "c:\mypro\test.exe” , “c:\windows\test.exe”

ومن الممكن تغيير اسم الملف عند النسخ

مثال :

filecopy "c:\mypro\test.exe” , “c:\windows\absoft.exe”

 

حذف ملف

باستخدام امر kill

مثال :

kill "c:\mypro\test.exe”

 

يجب أن تتحلى بالحذر عند استخدام هذا الامر لإنه أيضا يستخدم خاصية * و ؟

كما تفعل في نظام دوس

مثال :

kill "*.tmp"

 

إعادة تسمية الملفات والأدلة

فمثلاً من الممكن تسمية الملفات أو الأدلة باستخدام الأمر name وله الصيغة التالية:

"الاسم الجديد"as   "الاسم القديم"name

مثال

name "c:\mypro\test.exe” as "c:\mypro\test.old”

ومن الممكن أن تستخدم الأمر لنقل ملف من دليل إلى آخر فمثلاً :

name "c:\mypro\test.exe” as "c:\test.exe”

فهنا ننقل الملف test.exe  من دليل mypro إلى الدليل الجذري c:\

 

البحث عن ملف

بإستخدام امر dir$

مثل الامر الموجود في نظام دوس

مثال :

exist$ = dir$ (“c:\vb\icons\computer\disk03.ico”)

يحمل المتغير exits$  نتيجة البحث عن الملف . ويمكنك بعد ذلك إختباره

مثال :

if exist$ <> “” then

)"تم العثور على الملف"msgbox (

else

"لم يتم العثور على الملف المطلوب"msgbox

end if

 

فتح الملف

لكي نقرأ أو نكتب إلى ملف ، يجب أن تفتحه أولاً . ويمكنك فتح الملف باستخدام الأمر open وله الصيغة التالية :

رقم الملف as   #طور الملفfor  اسم الملف open

ويعني طور الملف مايلي

استخدم كلمة input

فتح الملف للقراءة

استخدم كلمة output

فتح الملف للكتابة (يمسح محتويات الملف)

استخدم كملة append

فتح الملف للإضافة (يقوم بإضافة )

 

بعد فتح الملف يمكنك أن تقوم بالعمليات التالية :

      v        الكتابة إلى الملف

تتم الكتابة إلى الملف باستخدام الأمر print

وله الصيغة التالية :

"ماتريد كتابته"   , رقم الملفprint #

مثال

"خلاص قربت تنتهي دورة فيجول بيسك"   , 1print #

 

مثال على ذلك

      v        افتح مشروع جديد

      v        ضع اداة الأوامر على نافذة البرنامج

      v        وبعد ذلك انقر على اداة الأوامر نقرا مزدوجاً

سيفتح لك نافذة البرمجة اكتب مايلي :

sub command1_click ()

open "c:\test.txt” for output as #1

"هذا اختبار لفتح الملفات والكتابة عليها print #1 , "

"بإستخدام فيجول بيسك print #1 , "

close #1

end sub

 

القراءة من الملف

استخدم الأمر input وله الصيغة التالية :

 متغير  , رقم الملفinput #

 

وفي هذه الحالة سيقوم بقراءة سطر كامل من الملف ، ويضعه في المتغير . فإذا فرضنا أنك فتحت الملف تحت الرقم 1 ، يمكنك أن تكتب :

input #1 , myline$

 

فهنا سيقرأ الأمر input سطراً من الملف ويضعه في المتغير myline$

 

ولكن إحذر أن تقرأ إلى نهاية الملف لإن  "فيجول بيسيك" سوف يقوم بتوقيف البرنامج

ولحل ذلك اختبر قيمة الأمر             )  رقم الملف  EOF(

if EOF(1) then

وصلنا إلى نهاية الملف

else

لم نصل إلى نهاية الملف

end if

 

جرب القراءة من الملفات :

      v        افتح مشروع جديد

      v        ضع اداة الأوامر على نافذة البرنامج

      v        وبعد ذلك انقر على اداة الأوامر نقرا مزدوجاً

سيفتح لك نافذة البرمجة اكتب مايلي :

sub command1_click ()

open "c:\autoexec.bat” for input as #1

do while not eof (1)

input #1, a$

print a$

loop

close #1

end sub

      v        شغل البرنامج F5

 

كيف تغلف الملف ؟

بعد أن تنتهي من القراءة أو الكتابة ، يجب أن تغلف الملف وهو سهل جداً ماعليك إلى أن تكتب

رقم الملفClose #

وإذا كنت تريد أن تغلف ملفات كثيرة فتحتها اكتب

Close

 

 

 

 

 

 

كيف تطلب معلومة من المستخدم ؟

ومع أنها الان مفهومة ولكن هنا سوف نقوم بشرحها بالتفصيل

 

طلب معلومة من المستخدم استخدم الامر inputbox$

وله صيغة التالية

متغير

Inputbox$

,رسالة(

,عنوان النافذة

(قيمة افتراضية

 

رسالة تعني : الجملة التي تريد عرضها على المستخدم

عنوان النافذة : هو شريط العنوان في النافذة التي يعرضها على المستخدم

قيمة افتراضية : هو القيمة التي تضعها أنت للمستخدم مثل

 

 

 

 

 

كيف تعرض رسالة على المستخدم ؟

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

 

 

كيف تعرض هذه الرسالة ؟

 

يتم عرض هذه الرسائل باستخدام الأمر msgbox وله شكلان . الأول إذا كنت تريد عرض رسالة بيسطة ولا تطلب من المستخدم أن تحدد رأيه في مسألة معينة ، في هذه الحالة استخدام الصيغة التالية :

عنوان مربع الحوار, الأزرار والرموز , الرسالة المطلوبه  msgbox

أما إذا كنت تريد أن تعرف رأيه بشئ معين قم بوضع الامر بالطريقة التالية

عنوان مربع الحوار, الأزرار والرموز , الرسالة المطلوبه  msgbox  = المتغير

وفي هذه الحالة سيحمل المتغير رد فعل المستخدم

 

الرسالة المطلوبه : هو الجملة التي تريد عرضها على المستخدم

عنوان مربع الحوار : هو عنوان شريط عنوان مربع الحوار

الأزرار والرموز : وهو يحدد نوعية الأزرار التي ترغب في عرضها والرموز

وهذه الرموز والأزرار :

معناه

الرقم

عرض زر ok (موافق)

0

عرض زري ok (موافق) و cancel (إلغاء الأمر)

1

عرض أزرار abort (توقف) وretry (إعادة المحاولة) ignore (تجاهل)

2

عرض أزرار yes (نعم) و no  (لا) و cancel (إلغاء الأمر)

3

عرض أزرار yes (نعم) و no  (لا)

4

عرض أزرار retry (إعادة المحاولة) وcancel ( إلغاء الأمر)

5

عرض رمز قف

16

عرض رمز علامة الاستفهام

32

عرض رمز علامة التعجب

48

عرض رمز علامة الاستعلام

64

 

فإذا رغبت في عرض رسالة تحتوي على الأزرار ok و cancel ومعها رمز علامة الاستعلام ،فإنك تجمع 1+64 = 65 وتستخدمها عندما تطلب الرسالة هكذا :

"بدون عنوان", 65,  "هذه رسالة للتجربة"msgbox

وإذا كنت تريد أن تعرف رد فعل المستخدم ، فإن الأمر msgbox يعود بالاحتمالات التالية :

المستخدم نقر زر …

الرقم

Ok ( موافق)

1

Cancel (إلغاء امر)

2

Abort (توقف)

3

Retry  (إعادة المحاولة)

4

Ignore (تجاهل)

5

Yes (نعم)

6

No  (لا)

7

 

ومثال على ذلك :

sun command1_click ()

" هل ترغب حقاً في إنهاء البرنامج "msg$ =

"الخروج من البرنامج"title =

response = msgbox (msg ,36 ,title )

if  response = 6  then end

end sub

 

شرح البرنامج :

في هذه الحالة سيعرض "فيجول بيسيك" الرسالة وإذا اختار المستخدم "نعم" yes

فإن "فيجول بيسيك" ينهي البرنامج .

 

الصوت في "فيجول بيسيك"

يجب كتابة هذا الربط الديناميكي في ملف برمجة في سطر واحد ولكنه هنا في سطرين ‍‍‍‍‍.

Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

 

أما هذا الامر فوق النافذة نفسها وتضعه في general

Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

 

وبعد كتابة هذا السطر ماعليك الان إلا كتابة الاسم فقط وهو SNDPLAYSOUND

 

DIM Result as integer

Result = sndplaysound(“c:\windows\toda.wav”,3)

 

يقوم هذا الاجراء بمعرفة مسار برنامجك الذي شغل منه ثم يشغل ملف موجود في نفس المسار وهو أفضل من السابق .

b$ = app.Path

) sound1 = SNDPLAYSOUND(b$ + "\" + "ton.WAV", 3

 

 

 

 


Copyright © www.kettaneh.net