محتويات الدرس السادس :
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