الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

MsgBox أو InputBox بالعربى

مغلق
بدأه عبد العظيم غنيم في 24 أكتوبر 2002 · 2 رد · 2,933 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أخوانى

كيف يمكن تغيير Caption لأزرار InputBox وكذلك Msgbox

وكذلك تغيير ال Font

و كذلك اضافة Icon

#2

اخي عبدالعظيم ، نافذة الرسالة Msgbox و InputBox أشياء مبرمجة مسبقاً في النظام ، ويمكن فقط التحكم بطريقة عرضهما عند طلب الدالتين Msgbox و InputBox. وأنا متأكد أنك تعرف هذا ، لكن إذا كنت تريد تغيير عناوين الازرار لأشياء أخرى أو تغيير نوع الخط ، أو إضافة أيقونه غير المتوفر ، فلا أعتقد أن هذا ممكن .

الشي الوحيد الممكن عمله هو أن تبني فورم جديد بالعنوان والخط والأزرار والأيقوانات التي تريد ، وتطلبه بالأمرة التالي من الفورم الاصلي :

Private Sub Command1_Click()
Form2.Show 1
End Sub

وعند إغلاق الفورم الجديد ، إذا أردت إرجاع قيمة معينة ، أستخدم متغيرات عامة أو ما شابه .

* ملاحظة : لست متأكد مما إذا كان هنالك فرق بين VB.NET و VB من هذه الناحية .

إذا أردت توضيح أكثر فنحن مستعدون .

#3

هذا اقتباس من احدي مشاركات ابو حمود

يمكن تغيير العبارات التي تظهر على الزر للتعبير عن شيء ما فبدلا من ظهور كلمة نعم تظهر اطبع أو بدلا من لا تظهر لاتطبع أو احذف أو اي كلمة تراها مناسبة للسياق أكثر من ثوابت الأكسس .

في الوحدة النمطية العامة اكتب التالي :

Public Ok, Cancel, ABORT

Public RETRY, IGNORE, YES, NO



Private m_hHook As Long



Private Const IDOK = 1

Private Const IDCANCEL = 2

Private Const IDABORT = 3

Private Const IDRETRY = 4

Private Const IDIGNORE = 5

Private Const IDYES = 6

Private Const IDNO = 7



Private Const WH_CBT = 5

Private Const GWL_HINSTANCE = (-6)

Private Const HCBT_ACTIVATE = 5



Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _

                  (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetDlgItemText Lib "user32" Alias "SetDlgItemTextA" _

                  (ByVal hDlg As Long, ByVal nIDDlgItem As Long, _

                  ByVal lpString As String) As Long

Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _

     (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, _

     ByVal dwThreadId As Long) As Long

Private Declare Function UnhookWindowsHookEx Lib "user32" _

                  (ByVal hHook As Long) As Long





Public Sub MessageBoxH(hwndThreadOwner As Long)



   Dim hInstance As Long

   Dim hThreadId As Long

   

   hInstance = GetWindowLong(hwndThreadOwner, GWL_HINSTANCE)

   hThreadId = GetCurrentThreadId()



   m_hHook = SetWindowsHookEx(WH_CBT, AddressOf _

   MsgBoxHookProc, hInstance, hThreadId)



End Sub



Private Function MsgBoxHookProc(ByVal uMsg As Long, ByVal _

wParam As Long, ByVal lParam As Long) As Long

      

   If uMsg = HCBT_ACTIVATE Then

      SetDlgItemText wParam, IDOK, Ok

      SetDlgItemText wParam, IDCANCEL, Cancel

      SetDlgItemText wParam, IDABORT, ABORT

      SetDlgItemText wParam, IDRETRY, ABORT

      SetDlgItemText wParam, IDIGNORE, ABORT

      SetDlgItemText wParam, IDYES, YES

      SetDlgItemText wParam, IDNO, YES

     

       UnhookWindowsHookEx m_hHook

   End If

   MsgBoxHookProc = False



End Function





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





وفي حدث نقر زر أمر مثلا ضع : 



كود: 

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



Ok = "أطبع"

Cancel = "لا ماله داعي"



MessageBoxH Me.hwnd

If MsgBox("رسالة .......", vbOKCancel + vbMsgBoxRight + vbMsgBoxRtlReading, "عنوان") = vbOK Then

' ثم بقية الأمر .





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







ملاحظات هامة : 

1- أطول عبارة ممكن إظهارها على الزر هي مايقارب 22 حرف مثل بسم الله الرحمن الرحيم . 

2- القيم العائدة من الرسالة حسب الزر الذي وضعت له العبارة ففي المثال السابق القيم العائدة هي VbOk أو vbOKCancel أو مايقابلها في الأرقام . 

3- بقية الأزرار إذا رغبت في تغيير عباراتها كالتالي : 

Ok 

Cancel 

ABORT 

RETRY 

IGNORE 

YES 

NO

هذا الموضوع مغلق.

مواضيع مشابهة