View Full Version : مبتدی: راست چین کردن منو در VF9
MASOUD_ALIZADEH1
چهارشنبه 14 تیر 1391, 09:39 صبح
با سلام ، درسته که خیلی ابتدایی ولی ممنون میشم راهنماییم کنید که چطور منویی که درست کردم رو راست چین کنم .
با تشکر
gh_khajehzade
چهارشنبه 14 تیر 1391, 14:53 عصر
1-در regional and language-advanced زبان arabic را انتخاب كن.
2-در اول برنامه منو اين خطها رو اضافه كن
SET SYSMENU TO
SET SYSMENU AUTOMATIC
SET SYSMENU TO RTLJUSTIFY
MASOUD_ALIZADEH1
شنبه 17 تیر 1391, 09:38 صبح
با عرض پوزش : موفق به راست چین کردن 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 رو هم در برنامه اصلی استارتم نوشتم
ولی فقط منوی اصلی فاکس پرو راست چین شده و منوی ساخته شده توسط من راست چین نمیشه
از دوستان عزیز خواهش میکنم راهنمایی کنید چه کنم
ممنون
gh_khajehzade
شنبه 17 تیر 1391, 12:40 عصر
خطهاي بالا رو به اول برنامه منو اضافه كردي؟
MASOUD_ALIZADEH1
شنبه 17 تیر 1391, 13:59 عصر
خطهاي بالا رو به اول برنامه منو اضافه كردي؟
با تشکر از عنایتتون :
1 - منو رو طراحی کردم و در General Options منو گزینه های Top_Level Form , Right Justify , Replace رو تيك كردم
2 - یه Main Program نوشتم با محتویات زیر
SET TALK OFF
SET ECHO OFF
SET SAFETY ON
SET EXCLUSIVE ON
SET DELETED ON
SET CONFIRM OFF
CLEAR
PUBLIC X,Y,ECT
STORE 0 TO X
SET PROCEDURE TO M.PRG
SET SYSMENU TO
SET SYSMENU AUTOMATIC
SET SYSMENU TO RTLJUSTIFY
DO FORM FORMS\START.SCX
READ EVENTS
3 - در فرم START در Init Eventخطوط زیر رو نوشتم
ON SHUTDOWN QUIT
SET SYSMENU TO
SET SYSMENU AUTOMATIC
SET SYSMENU TO RTLJUSTIFY
DO MENUS\AMLAKMENU.MPR WITH THISولی در نهایت منوی ظاهر شدم راست چین نیست :متفکر: :متفکر:
شایان ذکره که وقتی از منوم Previw ميگیرم راست چینه ، ولی بعد از طی این مراحل چپ چین میشه
gh_khajehzade
یک شنبه 18 تیر 1391, 07:41 صبح
خطها رو به ابتداي AMLAKMENU.MPR اضافه كن صد درصد كار ميكنه!
MASOUD_ALIZADEH1
یک شنبه 18 تیر 1391, 12:06 عصر
خطها رو به ابتداي AMLAKMENU.MPR اضافه كن صد درصد كار ميكنه!
فرمایش شما رو انجام دادم ولی بازم تغییری حاصل نشد و همچنان منوم چپ چینه :متفکر:
gh_khajehzade
یک شنبه 18 تیر 1391, 12:57 عصر
ميتوني يك عكس از منو اينجا بذاري؟
MASOUD_ALIZADEH1
یک شنبه 18 تیر 1391, 16:07 عصر
ميتوني يك عكس از منو اينجا بذاري؟
89393
89394
gh_khajehzade
دوشنبه 19 تیر 1391, 08:37 صبح
ظاهرا منو از يك فرم اجرا ميشه(مثلا زمان load فرم)اگه اينطوري باشه خطوط بالا در برنامه منو كار نميكنه و باحتمال زياد error هم ميده.به احتمال قوي اگه قبل از خط اجراي منو در فرم خطوط بالا رو اضافه كني كار ميكنه.
MASOUD_ALIZADEH1
دوشنبه 19 تیر 1391, 10:42 صبح
ظاهرا منو از يك فرم اجرا ميشه(مثلا زمان load فرم)اگه اينطوري باشه خطوط بالا در برنامه منو كار نميكنه و باحتمال زياد error هم ميده.به احتمال قوي اگه قبل از خط اجراي منو در فرم خطوط بالا رو اضافه كني كار ميكنه.
برنامم بدون خطا کار میکنه ولی دوست داشتم منوم راست چین بشه ،
خطوط رو هم در LOAD و هم در INIT فرمم اضافه کردم باز هم جواب نگرفتم .
استنباط من از راهنمایی های شما اینه که با روش دیگه ای هم میتونم منوم رو فراخونی کنم میشه راهنماییم کنید تا اون روش رو هم امتحان کنم
MASOUD_ALIZADEH1
دوشنبه 19 تیر 1391, 13:25 عصر
جوینده یابندست :
بالاخره با جستجوهای زیادی که داشتم راه حل مشکلمو پیدا کردم .
چون من منوم رو در یک 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(OldL ong,WS_EX_LAYOUTRTL,WS_EX_NOINHERITLAYOUT))
و مشکل حل میشه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.