PDA

View Full Version : راست چین کردن منو بار چطوریه ؟



vahab_vb
شنبه 25 فروردین 1386, 17:37 عصر
سلام
من وقتی یک منو بار تعریف میکنم. و داخلش فارسی مینویسم. کلمات فارسی از چپ به راست نوشته میشن. چطور میشه این نوشته ها رو بصورت راست چین در آورد ؟
دقت کنید: منظورم نوشته های داخلش هستنها ... نه خود منو بار !!!
ممنون

Payam Moradi
شنبه 25 فروردین 1386, 18:12 عصر
اگه منظورت منوهای اصلی خود وی بی هست، فایده ای نداره.
البته نیاز به نوشته Add-In داره که در اینجا نمیگنجه.

piter1355
شنبه 25 فروردین 1386, 20:19 عصر
خود منو که راست چین بشه نوشته هاشم راست چین میشه .
شما فرم را righ tO LEFT کن درست میشه

vahab_vb
یک شنبه 26 فروردین 1386, 17:24 عصر
خود منو که راست چین بشه نوشته هاشم راست چین میشه .
شما فرم را righ tO LEFT کن درست میشه

نه نمیشه شما امتحان کن. نمیشه

vahab_vb
یک شنبه 26 فروردین 1386, 17:29 عصر
بابا اینقدر جواب ندادید که من خودم جوابشو پیدا کردم. یه چیزای من دراری ای از خودم در آوردم ولی خب خدارو شکر جواب داد.
این نمونه کدی که ساختم کار باهاش خیلی راحته.
مثلا شما 3 تا منوی مادر دارید که داخلشون هزارتا زیر منو هستش.
شما بعنوان آرگومان اول اگر صفر بدید و بعنوان آرگومان دوم متن اولین زیر منوی مورد نظر رو بدید اونوقت فقط منوی مادر اول و تمام زیر منوهاش راست میشن. و به همین ترتیب تا آخر دوباره این ساب رو اجرا میکنید.
امتحان کنید تا خودتون ببینید :



Private Const MFT_RADIOCHECK = &H200&
Private Const MIIM_TYPE = &H10
Private Const MIIM_SUBMENU = &H4
'///////// MENU_ALIGN_CHANGER NEEDED !!! //////////
Private Const MFT_RIGHTORDER = &H2000
Private Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, lpmii As MENUITEMINFO) As Long
Private Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" (ByVal hMenu As Long, ByVal uItem As Long, ByVal fByPosition As Long, lpmii As MENUITEMINFO) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
'\\\\\\\\\ MENU_ALIGN_CHANGER NEEDED !!! \\\\\\\\\\
Public Sub MENU_ALIGN_CHANGER(ByVal THE_MENU_POSITION As Long, ByVal THE_FIRST_CAPTION_OF_IT As String)
On Error Resume Next
Dim hMenu As Long, hSubMenu As Long, MII As MENUITEMINFO
'get the handle of the current menu
hMenu = GetMenu(Me.hwnd)
'get the handle of the first submenu
hSubMenu = GetSubMenu(hMenu, THE_MENU_POSITION)
'initialize the structure
MII.cbSize = Len(MII)
MII.fMask = MIIM_SUBMENU
'retrieve information about the menu item
GetMenuItemInfo hSubMenu, 0, True, MII
'display checked menu items using a radio-button mark instead of a check mark
MII.fMask = MIIM_TYPE
MII.fType = MFT_RIGHTORDER
MII.dwTypeData = THE_FIRST_CAPTION_OF_IT
SetMenuItemInfo hSubMenu, 0, True, MII
End Sub
Private Sub Form_Load()
MENU_ALIGN_CHANGER 0, "ãíáÇÏ"
End Sub


معمولا این موقع ها ایده های همه گل میکنه. پس لطفا اگر گل کرد. ما رو هم خبر کنید. ممنون

a_mohammadi_m
شنبه 08 اردیبهشت 1386, 12:40 عصر
با سلام
این مشکل برای من هم گاهی پیش میاد
یعنی در ویندوز برنامه راست به چپ نمی شه
راه حل هم اینه که زبان عربی رو یکبار نصب کنی و دوباره بعد از ریستارت دستگاه برش درای
البته توی Xp باید سرویس Advanced Text Service رو در تنظیمات زبان فعال کنی
اگر تنظیمات درست باشه باید در داخل VB بتونی Right To Left فرم ها و کنترلها رو True کنی
وگرنه درست انجام ندادی
این کدی هم که شما نوشتی از طریق Api همین کار رو می کنه
فقط کارت رو سخت کردی