ورود

View Full Version : رفتن به خط بعدی در MsgBox



سپهر-111
دوشنبه 09 مرداد 1391, 09:00 صبح
سلام دوستان گل:قلب:
چطور میشه در مسج باکس به خط بعدی رفت ؟؟

مثال:
1- این یک تست است
2- این یک تست است
3- این یک تست است


مثلا بشه سه خط زیر هم در مسج باکس نمایش داد؟؟
(همچنین ، چطور میتونم نوشته دکمه باتون فارسی کنم؟؟)
ممنون میشم اگه کمکم کنید
باتشکر از توجه وعنایت دوستان:تشویق:

ho3ein.3ven
دوشنبه 09 مرداد 1391, 10:15 صبح
سلام درست متوجه نشدم ولی فک کنم منظورتون این بود .
MsgBox "salam" & vbCrLf & "salam " & vbCrLf & "salam "

سپهر-111
دوشنبه 09 مرداد 1391, 10:31 صبح
سلام درست متوجه نشدم ولی فک کنم منظورتون این بود .
MsgBox "salam" & vbCrLf & "salam " & vbCrLf & "salam "






سلام ممنون دوست من

بله همین منظورم بود
ولی یک مشل داره اونم انه که میخوام اول هر جمله یه شماره بزارم ولی هرکاری میکنم شماره پس و پیش میفته!!

میخوام اینطوری بنویسم " 1- این یک تست است"
ولی این طوری میشه "این یک تست است-"1
موقع نمایش مسج باکس شماره میفته به اخر جمله
اگه راهی به ذهنتون میرسه ممنون میشم اگه راهنمایی کنید
با تشکر

saeedharati
دوشنبه 09 مرداد 1391, 10:36 صبح
بايد بنويسي :
1- كاربر گرامي يا كاربر گرامي -1

ho3ein.3ven
دوشنبه 09 مرداد 1391, 10:38 صبح
مشکلی نداره
90480
البته من انگلیسی نوشتم

سپهر-111
دوشنبه 09 مرداد 1391, 10:44 صبح
سلام درست متوجه نشدم ولی فک کنم منظورتون این بود .
MsgBox "salam" & vbCrLf & "salam " & vbCrLf & "salam "


بايد بنويسي :
1- كاربر گرامي يا كاربر گرامي -1


مشکلی نداره
90480
البته من انگلیسی نوشتم



سلام
ممنون دوستان
من با فارسی مشکل دارم هر کاری میکنم اون عدد یک به اضافه خط فاصله، میفته به سمت راست ، یعنی اخر جمله....
میخوام این طوری باشه
1- این یک تست است
ولی اینطوری میشه این یک تست است-1
هرجوی جاشو عوض کردم نشد!!
ایا راهی داره ؟؟؟

mohammadriano
دوشنبه 09 مرداد 1391, 10:48 صبح
سلام
ممنون دوستان
من با فارسی مشکل دارم هر کاری میکنم اون عدد یک به اضافه خط فاصله، میفتر به سمت راست ، یعنی اخر جمله....
ایا راهی داره ؟؟؟
سلام
ببین دوست عزیز
بعضی مواقع ترکیب کردن شماره و حروف فارسی و حروف اینگیلیسی مشکل ساز میشه.
درهنگام فارسی نوشتن از کلید ترکیبی ت + Shift استفاده کنید.

saeedharati
دوشنبه 09 مرداد 1391, 10:49 صبح
من تست كردم نشد فارسي رو با "1- اين خط تست است" نوشت

سپهر-111
دوشنبه 09 مرداد 1391, 11:03 صبح
سلام
ببین دوست عزیز
بعضی مواقع ترکیب کردن شماره و حروف فارسی و حروف اینگیلیسی مشکل ساز میشه.
درهنگام فارسی نوشتن از کلید ترکیبی ت + Shift استفاده کنید.


من تست كردم نشد فارسي رو با "1- اين خط تست است" نوشت


ممنون دوستان
طبق گفته دوستمون "mohammadriano (http://barnamenevis.org/member.php?225833-mohammadriano)"
اینطوری جواب میده
1ت + Shiftاین یک تست است جواب میده
میشه : 1- این یک تست است


راستی دوستان
چطور میشه دکمه باتون فارسی کرد؟؟؟
چطور میشه اسم پنجره مسج باکس عوض کرد؟؟؟

ho3ein.3ven
دوشنبه 09 مرداد 1391, 11:05 صبح
خودت یک msgbox بساز

سپهر-111
دوشنبه 09 مرداد 1391, 14:22 عصر
سلام
در نهایت تصمیم گرفتم که با یک فرم مسج باکس بسازم . . .
حالا یک مشکل دیگه دارم ، میخوام وقتی مسج باکس سفارشی که خودمون ساختیم ، وقتی لود میشه تا زمانی که به اون جواب داده نشده ، کاربر نتونه روی فرم اصلی کلیک کنه . . .
مثل اکثر برنامه ها که تا وقتی شما به کار پیغام جواب ندین نمیتونین کاری روی فرم اصلی انجام بدین
ممنون میشم اگه راهنمایی کنین

Veteran
دوشنبه 09 مرداد 1391, 14:26 عصر
Form2.Show vbModal

محسن واژدی
سه شنبه 10 مرداد 1391, 01:02 صبح
سلام علیکم
هم میتوانید از ثابت vbMsgBoxRtlReading در MsgBox استفاده کنید:

Call MsgBox("1-سلام", vbMsgBoxRtlReading)


و اگر نمیخواهید فرم برنامه RTL شود از کد زیر استفاده کنید:
کد زیر را در ماژول کد کپی کنید و پس از آن طبق روال معمول تابع MsgBox را احضار کنید:

Option Explicit

Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public Declare Function InvalidateRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT, ByVal bErase As Long) As Long

Public Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Public Declare Function GetClientRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long

Public Type RECT

Left As Long

Top As Long

Right As Long

Bottom As Long

End Type

Public rClientRect As RECT

Public Const GWL_EXSTYLE = -20

Public Const WS_EX_LAYOUTRTL As Long = &H400000

Private Const MB_LBL_RTL As Long = &H1&

Private sLastTitle$



Public Function MsgBox(sPrompt$, Optional Buttons As VbMsgBoxStyle, Optional sTitle$) As VbMsgBoxResult

sTitle$ = sTitle$ & String(Int(Rnd * 50), Chr(0))

sLastTitle = sTitle$

SetTimer Screen.ActiveForm.hwnd, MB_LBL_RTL, 1, AddressOf TimerProc

MsgBox = VBA.MsgBox(sPrompt, Buttons, sTitle$)

End Function



Private Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)

Dim hMessageBox As Long

KillTimer hwnd, idEvent

hMessageBox = FindWindow("#32770", sLastTitle)

Select Case idEvent

Case MB_LBL_RTL

Dim ch_hwnd&, class_nam$, obj_cap$

Do

ch_hwnd& = FindWindowEx(hMessageBox, ch_hwnd&, vbNullString, vbNullString)

class_nam$ = String$(50, Chr(0))

GetClassName ch_hwnd&, class_nam$, Len(class_nam$)

If class_nam$ Like "Static*" Then

SetWindowLong ch_hwnd&, GWL_EXSTYLE, GetWindowLong(ch_hwnd&, GWL_EXSTYLE) Or WS_EX_LAYOUTRTL

GetClientRect hMessageBox, rClientRect

InvalidateRect hMessageBox, rClientRect, True

End If

Loop Until ch_hwnd& = 0

End Select

End Sub


برای مثال:

Call MsgBox("1-سلام")


موفق باشید