Visual Basic (6)
الناقل :
mahmoud
| المصدر :
www.kettaneh.net
محتويات الدرس السادس :
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 #
مثال
"خلاص قربت تنتهي دورة فيجول بيسك"
,
1
print #
مثال على ذلك
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