الجزء الرابع من الشرح
4-تصميم مشغل صوتيات
سنقوم بعمل تطبيق الان للتدريب على ما سبق
قم بانشاء مشروع جديد اسمه
Mp3_player
وضيف اداة ويندوز ميديا بلاير كما تعلمت سابقا
وسميها
Wmp1
وغير خاصية visible لـ false
عشان احنا مش عايزين المستخدم يشوفها
وضيف خمسة button وسميهم-المقصود بسميهم يعنى الخاصية
Name
Bplay
Bstop
Bbause
Bforward
Bbackward
وفى الخاصية text حط اللى انت عايزه انا هنا استخدمت
>
[]
||
>>
<<
وحط الكود التالى فى الزراير بالترتيب:
فى زرار التشغيل
كود :
wmp1.Ctlcontrols.play()
كده المستخدم لو ضغط على الزرار هيشغل الاغنية
لكن لو هى شغالة اصلا مش هيعمل حاجه لانها شغالة اصلا
بس فى وين امب لو الاغنية شغالة وضغطت على الزرار هيبدأها من جديد
ولأننا ننشد الواقعية قدر الامكان
سنجرى التعديل التالى
كود :
If wmp1.playState = WMPLib.WMPPlayState.wmppsPlaying Then
wmp1.Ctlcontrols.stop()
wmp1.Ctlcontrols.play()
Else
wmp1.Ctlcontrols.play()
End If
هنا انا قولتله لو انت شغال اقف وشغل من جديد ولو مش شغال اشتغل
-----------------------
زرار التوقف
كود :
wmp1.Ctlcontrols.stop()
زرار التوقف المؤقت
كود :
wmp1.Ctlcontrols.pause()
لو ضغطت على الزرار هيوقف الصوت ولو ضغطت تانى هيوقف الصوت اللى
هو واقف اصلا
وليكون اكثر واقعية نجرى التعديل التالى
كود :
If wmp1.playState = WMPLib.WMPPlayState.wmppsPlaying Then
wmp1.Ctlcontrols.pause()
Else
wmp1.Ctlcontrols.play()
End If
يعنى لو شغال اقف ولو واقف اشتغل
--------------
تقديم الاغنية
كود :
wmp1.Ctlcontrols.fastForward()
ترجيع الاغنية
كود :
wmp1.Ctlcontrols.fastReverse()
وهى غير مدعومة فى بعض الاغانى
--------------------------
للتحكم فى علو الصوت
اضف اداة اسمها
Trackbar
دور عليها كويس هى موجودة فى الادوات
وغير خصائصها الى
Name=tvolume
Tickstyle=none
Minimum=0
Maximum=100
Value=50
الكلام ده معناه انى خليت اعلى حد للصوت 100
واقل حد صفر والقيمة المختارة 50
واضف اداة اخرى لتوازن صوت السماعات وغير الخصائص
Name=tbalance
Tickstyle=none
Minimum=-100
Maximum=100
Value=0
واخترنا صفر لأنه فى المنتصف بين 100 و-100
واضف اداة تالته للتحكم فى مكان تشغيل الاغنية وعرض تقدم الاغنية
وغير الخصائص الاتية
Name=tposition
Tickstyle=none
Minimum=0
Maximum=100
Value=0
وهنا مش مهم تحديد اعلى قيمة بدقة لاننا هنعدلها برمجيا
وضيف تلاته label
وغير اساميهم الى
Lname
Lposition
Lduration
فاضل زرار واحد ضيفه عشان نفتح بيه الاغنية اللى احنا عايزينها
وسميه
Bopen
وعشان ندور على اغنية ضيف اداة
Openfiledialog
دور عليها كويس هتلاقيها
وغير اسمها الى
Ofd1
ولكى نجعل المستخدم لا يختار كافة انواع الملفات كان يختار مثلا ملفات نصية
فسنجبره على اختيار انواع معينه وفى هذا التطبيق سنجبره على اختيار ملفات
Mp3
وذلك عن طريق جعل خاصية
Filter= mp3 files|*.mp3
==========================================
ونضيف اداة timer
لتتبع تقدم تشغيل الاغنية
ونغير الخصائص التالية
Enabled=true
Interval=1000
يعنى كل ثانية لان الثانية بالف
============================================
كده احنا اضفنا كل الادوات اللى احنا عايزينها
اعد ترتيب الادوات بالشكل الذى يحلو لك وغير فى خصائصهم
وخصائص البرنامج وشكله كما تريد
ونحن هنا سنتبع الشكل التالى:
فى زرار فتح الاغنية اكتب الكود التالى:
كود :
If ofd1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
Exit Sub
End If
wmp1.URL = ofd1.FileName
وهنا قولنا لو المستخدم ضغط
Cancel
ما تعملش حاجه ولو اختار اغنية شغلها
==============================
للتحكم فى درجة علو الصوت اضغط على الاداة مرتين وكتب الكود التالى
كود :
wmp1.settings.volume = Tvolume.Value
اظن الكود واضح ونفس الكلام عند التبديل بين السماعات اكتب
كود :
wmp1.settings.balance = Tbalance.Value
ونفس الكلام عند التحكم فى مكان تشغيل الاغنية
كود :
wmp1.Ctlcontrols.currentPosition = Tposition.Value
طيب احنا عايزين اول ما نفتح الاغنية
نعرض اسم الاغنية ومدتها
ونغير طول الاداة بتاعت التحكم فى تقدم الاغنية
بحيث تكون قد طول الاغنية
الكلام ده المفروض يتكتب فى كود زرار فتح الاغنية
لكن الافضل وعشان نتدرب على حاجه جديده
اضغط مرتين على اداة الميديا بلاير
واختار الحدث
wmp1_OpenStateChange
واكتب الكود التالى
كود :
Private Sub wmp1_OpenStateChange(ByVal sender As Object, ByVal
e As AxWMPLib._WMPOCXEvents_OpenStateChangeEvent) Handles
wmp1.OpenStateChange
If wmp1.openState = WMPLib.WMPOpenState.wmposMediaOpen
Then
lname.Text = wmp1.currentMedia.name
tposition.Maximum = wmp1.currentMedia.duration
''''''''''''''''''''''''''
lduration.Text = wmp1.currentMedia.duration
End If
End Sub
هنا احنا قولناله لو حالة فتح الملف هى ان الملف اتفتح خلاص
اعرضلى اسم الاغنية ومدتها
وخلى اعلى قيمة فى شريط التحكم بالاغنية تشاوى مدة الاغنية
عشان المستخدم ما يقدمش لاكتر من طول الاغنية
فيه مشكله بسيطة
مدة الاغنية هتتعرض بعدد الثوانى يعنى 500 ثانية مثلا
واحنا عايزينها بالدقايق والثوانى
نجرى التعديل التالى
كود :
Private Sub wmp1_OpenStateChange(ByVal sender As Object, ByVal
e As AxWMPLib._WMPOCXEvents_OpenStateChangeEvent) Handles
wmp1.OpenStateChange
If wmp1.openState = WMPLib.WMPOpenState.wmposMediaOpen
Then
lname.Text = wmp1.currentMedia.name
tposition.Maximum = wmp1.currentMedia.duration
''''''''''''''''''''''''''
Dim iduration As Integer =
wmp1.currentMedia.duration
If iduration < 60 Then
lduration.Text = "00:" & iduration
Else
lduration.Text = iduration \ 60 & ":" &
iduration Mod 60
End If
'''''''''''''''''
End If
End Sub
وهنا قولتله لو المدة اقل من 60 ثانيه اعرضها على طول
ولو اكتر اقسم على 60 واعرض ناتج القسم بجانب باقى القسمة
واستخدمت متغير من النوع انتيجر للتخلص من الملليثانية
لان بعض الاغانى تكون 5دقائق مثلا و 2 مللى ثانية
وفى التايمر اكتب الكود التالى
كود :
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Timer1.Tick
positionbar.Value = wmp1.Ctlcontrols.currentPosition
Dim iposition As Integer =
wmp1.Ctlcontrols.currentPosition
If iposition < 60 Then
lposition.Text = "00:" & iposition
Else
lposition.Text = iposition \ 60 & ":" & iposition
Mod 60
End If
End Sub
وهنا عرفناه ان كل ثانية مكان الاغنية بيتغير على شريط تقدم الاغنية
وفى النص الذى يعرض تقدم الاغنية لو اقل من 60 ثانية
الخ الخ الخ
كما فعلنا بالسابق مع مدة الاغنية
==========================================
فى النهاية يجب ان انوه انك اذا اردت توزيع برنامجك
على اصدقائك يجب ان تضمن الملفات الاتية لتضمن عمله
بدون مشاكل
wmp.dll
AxInterop.WMPLib.dll
Interop.WMPLib.dll
واذا كنت تعرف عمل تسطيب لبرنامجك فلا تقلق لانك يمكنك
تضمين الملفات مع برنامجك بكل بساطة
===============================
ملحوظه
تم ارفاق المشروع لسهولة الفهم
وتم ارفاقه مرة اخرى بالشكل التالى
ومعلش الزراير كان المفروض تتظبط احسن من كده
بس انا عملته على السريع
====================================
كلمة أخيرة
لم تنته طرق تشغيل الملفات الصوتية
ولكن دورى انتهى فى الشرح
لأن عملية الشرح بالتفصيل دى مرهقة جدا
وانا الحمد لله شرحت اللى يفيدكم بنسبة 90 فى المية
هناك طرق اخرى مثل
استخدام دوال الـ API
استخدام مكتبات الدايركت اكس
وغيرها وغيرها
فمن يريد تكملة الدرس وكتابة طرق جديده
فأهلا وسهلا به
===================================
لقد قمت بوسعى بتبسيط الشرح قدر الامكان
وتغطية الموضوع قدر الامكان
واستخدام طريقة التفاعل وكتابة الكود
واعادة تعديله
كان من الممكن كتابة الكود النهائى مرة واحده
ولكنى فضلت ان تجرب الكود وتفكر لماذا يجب التعديل فيه
ثم تعديله
فيتم تثبيت المعلومة
هذا اول موضوع لى فى المنتدى
اتمنى ان تقبلونى عضوا بينكم
اتمنى ان يكون الموضوع مفيد
واتمنى ان اكون وفقت فى الشرح
وتكون بداية خير ان شاء الله
وانتظر ارائكم البناءة
وملاحظاتكم واستفساراتكم واقتراحاتكم
لتنزيل الكود اضغط الرابط التالى
http://www.4shared.com/file/29463167...P3_PLAYER.html
والى اللقاء فى موضوع جديد ان شاء الله
هشام حسن