نوشته شده توسط
MASOUD_ALIZADEH1
با عرض پوزش : موفق به راست چین کردن USER MENU نشده ام
1 - در Regional and Language / Advanced گزینه Arabic-Egypt رو انتخاب کردم
2 - در منوی tools / options فاکس و در تب Regional آن گزینه Use System Settings را تیک کردم
3 - در فایل Config.FPW هم TITLE , COLLATE , DATE , CENTURY , CURRENCY , CODEPAGE رو طبق دستورالعمل
SET کردم
4 - در PROPERTY فرم و .... هم خصیصه RIGHTTOLEFT = T کردم
5 - دستور SET SYSMENU TO RTLJUSTIFY رو هم در برنامه اصلی استارتم نوشتم
ولی فقط منوی اصلی فاکس پرو راست چین شده و منوی ساخته شده توسط من راست چین نمیشه
از دوستان عزیز خواهش میکنم راهنمایی کنید چه کنم
ممنون
جوینده یابندست :
بالاخره با جستجوهای زیادی که داشتم راه حل مشکلمو پیدا کردم .
چون من منوم رو در یک TOP LEVEL FORM اجرا میکنم دیگه دستور SET SYSMENU TO RTLJUSTIFY نميتونه كمكي به من براي راست چین کردن منوم بکنه .
راه حل مخصوص این روش رو مایکروسافت داده و اون هم روش MIRROR کردن صفحه است ، یعنی تمام محتویات فرم رو مثل آینه عوض میکنه .
برای این کار باید تکه کد زیر رو داخل LOAD EVENT فرم مربوطه بنویسید .
#DEFINE GWL_EXSTYLE -20
#DEFINE WS_EX_LAYOUTRTL 0x400000
#DEFINE WS_EX_NOINHERITLAYOUT 0x100000
*-- Define the Get window long API
DECLARE INTEGER GetWindowLong IN user32 INTEGER hWnd, INTEGER nIndex
*-- Define the Set window long API
DECLARE INTEGER SetWindowLong IN user32 INTEGER hWnd, INTEGER nIndex, INTEGER dwNewLong
*-- Get this form's current style.
OldLong = GetWindowLong(ThisForm.HWnd, GWL_EXSTYLE)
*-- Set the window extended style RTL non-inheritable.
SetWindowLong(ThisForm.HWnd,GWL_EXSTYLE,BITOR(OldLong,WS_EX_LAYOUTRTL,WS_EX_NOINHERITLAYOUT))
و مشکل حل میشه