أخوانى
كيف يمكن تغيير Caption لأزرار InputBox وكذلك Msgbox
وكذلك تغيير ال Font
و كذلك اضافة Icon
أخوانى
كيف يمكن تغيير Caption لأزرار InputBox وكذلك Msgbox
وكذلك تغيير ال Font
و كذلك اضافة Icon
اخي عبدالعظيم ، نافذة الرسالة Msgbox و InputBox أشياء مبرمجة مسبقاً في النظام ، ويمكن فقط التحكم بطريقة عرضهما عند طلب الدالتين Msgbox و InputBox. وأنا متأكد أنك تعرف هذا ، لكن إذا كنت تريد تغيير عناوين الازرار لأشياء أخرى أو تغيير نوع الخط ، أو إضافة أيقونه غير المتوفر ، فلا أعتقد أن هذا ممكن .
الشي الوحيد الممكن عمله هو أن تبني فورم جديد بالعنوان والخط والأزرار والأيقوانات التي تريد ، وتطلبه بالأمرة التالي من الفورم الاصلي :
Private Sub Command1_Click() Form2.Show 1 End Sub
وعند إغلاق الفورم الجديد ، إذا أردت إرجاع قيمة معينة ، أستخدم متغيرات عامة أو ما شابه .
* ملاحظة : لست متأكد مما إذا كان هنالك فرق بين VB.NET و VB من هذه الناحية .
إذا أردت توضيح أكثر فنحن مستعدون .
هذا اقتباس من احدي مشاركات ابو حمود
يمكن تغيير العبارات التي تظهر على الزر للتعبير عن شيء ما فبدلا من ظهور كلمة نعم تظهر اطبع أو بدلا من لا تظهر لاتطبع أو احذف أو اي كلمة تراها مناسبة للسياق أكثر من ثوابت الأكسس .
في الوحدة النمطية العامة اكتب التالي :
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هذا الموضوع مغلق.