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

سؤال : بخصوص برمجة صندوق الرسائل بالأكواد


ابو جودي

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

برمجة صندوق الرسائل واقصد هنا برمجته بمعنى الكلمة وليس استدعاءه

قبل فترة كنت اتمنى تعريب صندوق الرسائل بحثت ووجدت الامثلة المختلفة ودمجتها مع بعص التعديلات وكانت النتيجة رائعة جدا ومرضية بنسبة  100 %

 

 

الى ان توقفت فجأه وكان السبب خاصية النموذج المنبثق  POP UP  ان كانت فعاله يتوقف تعريب الازرار :wallbash: حزنت كثيرا ومع ذلك لم افقد الامل 

ومع البحث على الانترنت وجدت هذه الاكواد التى تخص الفيجوال بيزك
http://www.vbforums.com/showthread.php?840593-Message-Box-with-Four-Buttons


عدلت بالقدر الذى يتناسب معى :biggrin: النتيجة مرضية كانت مرضية فى بادئ الامر ولكن 

المشكلة
وضعت الامر الذى اريد تنفيذه داخل الموديول عند الضغط على الزر من صندوق الرسائل  اعرف ان هذا عبث منى لان الاحداث التى نريدها بعد الضغط على الزر تختلف :eek2:
يوجد حل مبدئيا ولكم مرهق ان لا يكون الجزء من الكود والذى استدعيه فى النموذج من خلال الموديول بل يكون على النموذج مباشرة
المشكله فى ذلك 
- الكود كبير
-لابد من وجوده مع كل حدث مختلف يعنى قد نحتاج الى تكراره اكثر من مره داخل النموذج

هل من حل او حيلة عند اساتذتى الافاضل

هذا هو الكود
 

Public Sub MyMsg2()
    Dim md_Earlier      As MSGBOXDATA_Earlier
    Dim md_Later        As MSGBOXDATA_Later
    Dim lBtn(2)         As Long
    Dim sTxt(2)         As String
    Dim iRet            As Long
    '
    sTxt(0) = "موافق"
    lBtn(0) = 1
    sTxt(1) = "إلغاء"
    lBtn(1) = 2
    '
    ' windows Vista and below use earlier structure.
    If WindowsVersion() < 61 Then
    
        With md_Earlier
            With .params
                .cbSize = LenB(md_Earlier.params)
                .lpszText = StrPtr("Text of the message within windows Vista and below use earlier structure")
                .lpszCaption = StrPtr("Title of the message windows Vista")
                .dwStyle = vbMsgBoxRtlReading + vbMsgBoxRight Or vbYesNo
            End With
            .DefButton = 0    ' >>--> DefaultButtonOfMsgBox
            .CancelId = 2     ' >>--> Select the Cancel button
            .cButtons = 2     ' >>--> NumberButtonsOfMsgBox
            .pidButton = VarPtr(lBtn(0))
            .ppszButtonText = VarPtr(sTxt(0))
            .Timeout = -1
        End With
        iRet = SoftModalMessageBox_Earlier(md_Earlier)
        'MsgBox "Returns the default value of the Button: " & Format$(iRet)
        '
        'Execute the command after clicking
        Select Case Format$(iRet)
        Case Is = 1
        'MsgBox "You are now clicking the OK button"
        DoCmd.SetWarnings False
            DoCmd.OpenQuery "qq"
        DoCmd.SetWarnings True
        Case Is = 2
        'MsgBox "You are now clicking the cancel  button"
        End Select
        
   ' windows 7 and higher use higher structure.------------------------------------------------------
    Else
        With md_Later
            With .params
                .cbSize = LenB(md_Later.params)
                .lpszText = StrPtr("Text of the message within windows 7 and higher use higher structure")
                .lpszCaption = StrPtr("Title of the message windows 7")
                .dwStyle = vbMsgBoxRtlReading + vbMsgBoxRight Or vbYesNo
            End With
            .DefButton = 0    ' >>--> DefaultButtonOfMsgBox
            .CancelId = 2     ' >>--> Select the Cancel button
            .cButtons = 2     ' >>--> NumberButtonsOfMsgBox
            .pidButton = VarPtr(lBtn(0))
            .ppszButtonText = VarPtr(sTxt(0))
            .Timeout = -1
        End With
        iRet = SoftModalMessageBox_Later(md_Later)
        'MsgBox "Returns the default value of the Button: " & Format$(iRet)
        
        'Execute the command after clicking
        Select Case Format$(iRet)
        Case Is = 1
        'MsgBox "You are now clicking the OK button"
        DoCmd.SetWarnings False
            DoCmd.OpenQuery "qq"
        DoCmd.SetWarnings True
        Case Is = 2
        'MsgBox "You are now clicking the cancel  button"
        End Select
    End If

End Sub

الكود ينقسك الى قسمين اولا الذى يخص انظمة التشغيل ويندوز فيستا او الادنى منها اصدارا

الجزء الثانى الذى يخص انظمة التشغيل ويندوز سفن والاعلى منه اصدارا

 

الجزء من الكود الذى يخص تنفيذ الامر  عندما تختر من الرسالة الذغط على زر موافق

        Select Case Format$(iRet)
        Case Is = 1
        'MsgBox "You are now clicking the OK button"
        DoCmd.SetWarnings False
            DoCmd.OpenQuery "qq"
        DoCmd.SetWarnings True
        Case Is = 2
        'MsgBox "You are now clicking the cancel  button"
        End Select

 

المشكلة التى لاحظتها الان

يمكن فتح الرسالة اكثر من مرة او فتح رسالة اخرى معها :wallbash:

 

01.png

برمجة صندوق الرسائل.mdb

تم تعديل بواسطه ابا جودى
  • Thanks 1
رابط هذا التعليق
شارك

وعليكم السلام 🙂

 

مو جميع اكواد VB6 تعمل في بيئة VBA ،

والمشكلة هنا في تعاملك مع ملف user32.dll ، وليس في اعدادات الاكسس.

 

انا احب البساطة في العمل ، ولذلك ، وبدل ان ادخل في اكواد لا افهمها ، ممكن ان اعمل نموذج ليقوم بهذا العمل ، بالاكسس 100% 🙂

 

جعفر

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

في ١٠‏/٧‏/٢٠١٩ at 22:38, jjafferr said:

انا احب البساطة في العمل ، ولذلك ، وبدل ان ادخل في اكواد لا افهمها ، ممكن ان اعمل نموذج ليقوم بهذا العمل ، بالاكسس 100% 🙂

لم أشاهد الشفرة بعد.. لكن هذه العبارة بألف كلمة.. تحياتي لك أستاذ جعفر 😇

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

12 ساعات مضت, jjafferr said:

وعليكم السلام 🙂

 

مو جميع اكواد VB6 تعمل في بيئة VBA ،

والمشكلة هنا في تعاملك مع ملف user32.dll ، وليس في اعدادات الاكسس.

 

انا احب البساطة في العمل ، ولذلك ، وبدل ان ادخل في اكواد لا افهمها ، ممكن ان اعمل نموذج ليقوم بهذا العمل ، بالاكسس 100% 🙂

 

جعفر

طيب ممكن مثال بالاتى

من النموذج    A  ان كان مربع النص x عند الضغط على زر الامر يأتى نموذج الرساله ليخبرنا انه فارغ وعند الضغط على موافق لا يحدث شئ
ومن النموذج  B  عند الضغط على زر الامر يأتى نفس نموذج الرساله ليخبرنا انه سوف يتم تشغيل استعلام الحاق وعند الضغط  على موافق يتم تشغيل الاستعلام 

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

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

اذا فهمتك صح ، فهذه ما يحتاج لها نموذج خاص 🙂 

 

هناك مثال في الاكسس عن Msgbox Function:

Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Do you want to continue ?"    ' Define message.
Style = vbYesNo + vbCritical + vbDefaultButton2    ' Define buttons.
Title = "MsgBox Demonstration"    ' Define title.
Help = "DEMO.HLP"    ' Define Help file.
Ctxt = 1000    ' Define topic
        ' context. 
        ' Display message.
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then    ' User chose Yes.
    MyString = "Yes"    ' Perform some action.
Else    ' User chose No.
    MyString = "No"    ' Perform some action.
End If

.

فتعمل الاختبار قبل ما تعرض الرسالة ،

وعلى اساس النعم او لا تقوم بالخطوة التالية 🙂

 

وسواء استعملت الرسالة بالانجليزي او العربي ، فالطريقة سيان 🙂

 

جعفر

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

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.

×
×
  • اضف...

Important Information