مشکل در اجرای MsgBox

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • میثم مقدم نیا

    • 2017/03/23
    • 558
    • 41.00

    [حل شده] مشکل در اجرای MsgBox

    سلام
    من برای نمایش پیغام خطا در یوزرفرم از MsgBox استفاده کردم
    که شامل چهار پیغام هست
    1_جاهای خالی را که با رنگ سبز مشخص شده پر کنید.
    2_رمز عبور قبلی صحیح نیست.
    3_رمزهای عبور باهم مطابقت ندارند.
    4_رمز عبور با موفقیت تغییر کرد.
    در پیغام اول نوشته‌ها و کادر پایین که کلید OK در اونجا هست به رنگ سبز در میاند
    تو پیغام دوم و سوم هم به رنگ قرمز در میاند.
    پیغام چهارم هم به حالت پیش فرض قرار داره
    بعد از اتمام کار رنگ نوشته‌ها به حالت قبل بر میگرده تا اینجای کار درسته و هیچ مشکلی نیست مشکل اینجاست که رنگ کادر پایین بعد از خروج به حالت پیشفرض بر نمیکرده و مشکی میشود مانند تصویر زیر
    Click image for larger version

Name:	Untitled2.png
Views:	1
Size:	125.9 کیلو بایت
ID:	147103
    من برای این کار از کد زیر استفاده کردم
    کد PHP:
    Option Explicit

    #If Win64 Then
        
    Private Declare PtrSafe Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
        
    Private Declare PtrSafe Function SetSysColors Lib "user32" (ByVal nChanges As LonglpSysColor As LonglpColorValues As Long) As Long
    #Else
        
    Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
        
    Private Declare Function SetSysColors Lib "user32" (ByVal nChanges As LonglpSysColor As LonglpColorValues As Long) As Long
    #End If

    Private Const COLOR_MENU  As Long 4
    Private Const COLOR_WINDOWTEXT As Long 8
    Private Const CHANGE_INDEX As Long 1

    Private Sub CommandButton1_Click()
       
    Dim defaultColour As Long
            defaultColour 
    GetSysColor(COLOR_MENU)
            
    'رنگ سيستم پيش فرض را ذخيره کنيد
            defaultColour = GetSysColor(COLOR_WINDOWTEXT)
       If CheckForm = False Then
            SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, vbGreen
            SetSysColors CHANGE_INDEX, COLOR_MENU, vbGreen
            MsgBox ".لطفاً موارد مشخص شده با رنگ سبز را تکميل نماييد", vbInformation + vbMsgBoxRight, "خطا در ثبت اطلاعات"
            '
    بازگرداندن مقدار پيش فرض
            SetSysColors CHANGE_INDEX
    COLOR_WINDOWTEXTdefaultColour
            SetSysColors CHANGE_INDEX
    COLOR_MENUdefaultColour
           
    Exit Sub
    End Sub 
    [HR][SIZE=5][COLOR="#0000FF"][FONT=Times New Roman][B] در سرزمینی کہ نتوان مردانہ زیست ، مردانہ مردن بهتر از این زندگیست [/B][/FONT][/COLOR][/SIZE][/HR]
  • Amir Ghasemiyan

    • 2013/09/20
    • 4599
    • 100.00

    #2
    سلام دوست عزيز

    شما دو بار به defaultColour مقدار داديد. در واقع مقدار اولي از بين ميره و مقدار دومي رو ميگيره.

    کامنت

    • میثم مقدم نیا

      • 2017/03/23
      • 558
      • 41.00

      #3
      نوشته اصلی توسط Amir Ghasemiyan
      سلام دوست عزيز

      شما دو بار به defaultColour مقدار داديد. در واقع مقدار اولي از بين ميره و مقدار دومي رو ميگيره.
      خوب درسته دوتا DefaultColor قراردادم یکی برای برگردوندن رنگ متن و دیگری برای رنگ کادر پایین
      COLOR_WINDOWTEXT
      COLOR_MENU
      خوب چطوری متونم جفتشون را به حالت پیشفرض در بیارم
      وقتی
      SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, defaultColour 
      را استفاده میکنم فقط رنگ متن به حالت پیشفرض در میاد و رنگ کادر پایین نه اگه امکانش هست با یک مثال و نمونه راهنماییم کنید
      [HR][SIZE=5][COLOR="#0000FF"][FONT=Times New Roman][B] در سرزمینی کہ نتوان مردانہ زیست ، مردانہ مردن بهتر از این زندگیست [/B][/FONT][/COLOR][/SIZE][/HR]

      کامنت

      • Amir Ghasemiyan

        • 2013/09/20
        • 4599
        • 100.00

        #4
        من رو کدهای خودتون اعمال میکنم ملاحظه بفرمایید
        کد:
        Option Explicit 
        
        #If Win64 Then 
            Private Declare PtrSafe Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long 
            Private Declare PtrSafe Function SetSysColors Lib "user32" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long 
        #Else 
            Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long 
            Private Declare Function SetSysColors Lib "user32" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long 
        #End If 
        
        Private Const COLOR_MENU  As Long = 4 
        Private Const COLOR_WINDOWTEXT As Long = 8 
        Private Const CHANGE_INDEX As Long = 1 
        
        Private Sub CommandButton1_Click() 
           Dim defaultColour As Long 
           Dim defaultColour1 As Long
                defaultColour1 = GetSysColor(COLOR_MENU) 
                'رنگ سيستم پيش فرض را ذخيره کنيد 
                defaultColour = GetSysColor(COLOR_WINDOWTEXT) 
           If CheckForm = False Then 
                SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, vbGreen 
                SetSysColors CHANGE_INDEX, COLOR_MENU, vbGreen 
                MsgBox ".لطفاً موارد مشخص شده با رنگ سبز را تکميل نماييد", vbInformation + vbMsgBoxRight, "خطا در ثبت اطلاعات" 
                'بازگرداندن مقدار پيش فرض 
                SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, defaultColour 
                SetSysColors CHANGE_INDEX, COLOR_MENU, defaultColour1
               Exit Sub 
        End Sub

        کامنت

        • میثم مقدم نیا

          • 2017/03/23
          • 558
          • 41.00

          #5
          نوشته اصلی توسط Amir Ghasemiyan
          من رو کدهای خودتون اعمال میکنم ملاحظه بفرمایید
          کد:
          Option Explicit 
          
          #If Win64 Then 
              Private Declare PtrSafe Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long 
              Private Declare PtrSafe Function SetSysColors Lib "user32" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long 
          #Else 
              Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long 
              Private Declare Function SetSysColors Lib "user32" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long 
          #End If 
          
          Private Const COLOR_MENU  As Long = 4 
          Private Const COLOR_WINDOWTEXT As Long = 8 
          Private Const CHANGE_INDEX As Long = 1 
          
          Private Sub CommandButton1_Click() 
             Dim defaultColour As Long 
             Dim defaultColour1 As Long
                  defaultColour1 = GetSysColor(COLOR_MENU) 
                  'رنگ سيستم پيش فرض را ذخيره کنيد 
                  defaultColour = GetSysColor(COLOR_WINDOWTEXT) 
             If CheckForm = False Then 
                  SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, vbGreen 
                  SetSysColors CHANGE_INDEX, COLOR_MENU, vbGreen 
                  MsgBox ".لطفاً موارد مشخص شده با رنگ سبز را تکميل نماييد", vbInformation + vbMsgBoxRight, "خطا در ثبت اطلاعات" 
                  'بازگرداندن مقدار پيش فرض 
                  SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, defaultColour 
                  SetSysColors CHANGE_INDEX, COLOR_MENU, defaultColour1
                 Exit Sub 
          End Sub
          مرسی ممنون از لطف شما استاد عزیز گیر کار به همون یک بود
          [HR][SIZE=5][COLOR="#0000FF"][FONT=Times New Roman][B] در سرزمینی کہ نتوان مردانہ زیست ، مردانہ مردن بهتر از این زندگیست [/B][/FONT][/COLOR][/SIZE][/HR]

          کامنت

          چند لحظه..