اذهب الي المحتوي
أوفيسنا

اضافة صوت في زر امر


الردود الموصى بها

أخي الحبيب محمد علي الطيب

بارك الله فيك وجزاك الله كل خير على إحياء التراث والكنوز المدفونة

إنه حقاً ملف رائع وجميل

 

هل أثني على الملف والموضوع وأكتفي ؟؟! بالتأكيد لن يرتاح قلبي أبداً طالما لم أدلي بدلوي (قول مأثور من العربي)

دعنا نحلل الملف بحيث يستفيد منه إخواننا الكرام في المنتدى (سيكون التحليل في نقاط)

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

** يعجبني دائماً أن تكون الجملة التالية في بداية كل موديول ..

Option Explicit

والتي من شأنها تجبر المبرمج على الإعلان عن المتغيرات وهو أمر مستحب وأنا عن نفسي أفضله

 

** تم الإعلان عن الـ API في بداية كل فورم بهذا الشكل

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

وتكرر نفس الإعلان في الفورم الثاني

السؤال : لما التكرار .. ؟؟!!! هل فكرنا للحظة أنه يمكن الاستفادة من الإعلان بشكل عااااااااااااااام Public؟

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

الحل :

أن نقوم بالإعلان مرة واحدة فقط ..كيف سيتم ذلك؟

يتم ذلك في بداية أي موديول ونستخدم كلمة Public بدلاً من Private لأنه سيصبح إعلان عااااااااااااااااام وليس خاااااااااص بالفورم فقط

كما يتم الإعلان عن المتغيرات المستخدمة في الموديول باستخدام كلمة Public أيضاً

ليصبح الإعلان بهذا الشكل (يوضع في بداية الموديول)

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

ولكن مهلاً ..ماذا عن أصحاب النطام المنتشر 64 بت ...حتماً ستواجههم مشكلة في العمل على الملف ..

لابد أن نراعي جميع الأطراف ..

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

#If VBA7 Then
    Public Declare PtrSafe Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
#Else
    Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
#End If

Public myPath As String
Public SoundFile, Result

 

أخيراً انتهينا من تلك النقطة

 

إليكم الملف المرفق بعد عمل التعديلات .. ليتناسب مع مستخدمي الـ 32 بت والـ 64 بت ..

تقبلوا تحياتي

Add Sound To CommandButton On UserForm.rar

  • Like 2
رابط هذا التعليق
شارك

الاخ العزيز والاستاذ القدير ياسر خليل أبو البراء

تحية طيبة

شكرا شكرا لهذا المجهود الرائع واتمنى لك التوفيق ان شاء الله

مع فائق الشكر والتقدير...

رابط هذا التعليق
شارك

أخي العزيز محمد علي الطيب

مشكور على كلماتك الرقيقة .. والشكر موصول لك لإحياء التراث

لا تحرمنا من موضوعاتك الجميلة والرائعة ..

تقبل تحياتي

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information