View Full Version : راست چین کردن منو بار چطوریه ؟
  
vahab_vb
شنبه 25 فروردین 1386, 18:37 عصر
سلام
من وقتی یک منو بار تعریف میکنم. و داخلش فارسی مینویسم. کلمات فارسی از چپ به راست نوشته میشن. چطور میشه این نوشته ها رو بصورت راست چین در آورد ؟
دقت کنید: منظورم نوشته های داخلش هستنها ... نه خود منو بار !!!
ممنون
Payam Moradi
شنبه 25 فروردین 1386, 19:12 عصر
اگه منظورت منوهای اصلی خود وی بی هست، فایده ای نداره.
البته نیاز به نوشته Add-In داره که در اینجا نمیگنجه.
piter1355
شنبه 25 فروردین 1386, 21:19 عصر
خود منو  که راست چین بشه نوشته هاشم راست چین میشه .
شما فرم را righ tO LEFT کن درست میشه
vahab_vb
یک شنبه 26 فروردین 1386, 18:24 عصر
خود منو که راست چین بشه نوشته هاشم راست چین میشه .
شما فرم را righ tO LEFT کن درست میشه
 
نه نمیشه شما امتحان کن. نمیشه
vahab_vb
یک شنبه 26 فروردین 1386, 18: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, 13:40 عصر
با سلام
این مشکل برای من هم گاهی پیش میاد
یعنی در ویندوز برنامه راست به چپ نمی شه 
راه حل هم اینه که زبان عربی رو یکبار نصب کنی و دوباره بعد از ریستارت دستگاه برش درای
البته توی Xp باید سرویس Advanced Text Service  رو در تنظیمات زبان فعال کنی
اگر تنظیمات درست باشه باید در داخل VB بتونی Right To Left فرم ها و کنترلها رو True کنی 
وگرنه درست انجام ندادی
این کدی هم که شما نوشتی از طریق Api همین کار رو می کنه
فقط کارت رو سخت کردی
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.