با سلام به دوستان
توضیح مختصری در مورد Activex و کاربرد آن درصورت امکان ویک مثال کوچولو
متشکرم
Printable View
با سلام به دوستان
توضیح مختصری در مورد Activex و کاربرد آن درصورت امکان ویک مثال کوچولو
متشکرم
یکسری امکانات فراتر از اشیا و یا ابزارهای استاندارد برنامه در قالب فایلهای dll یا ocx وجود دارند که به آن اکتیوایکس گفته می شود.
مثلا یک اکتیوایکس به نام richtext این امکان را فراهم می کند که که در فرم بتوانیم یک ادیت باکس با قابلیتهای وورد مانند تغییر قلم یک کلمه یا رنگ یا سرچ - تراز چپ و راست و وسط و ... ایجاد کنیم
و یا اکتیوایکس دیگری باعث می شود بتوانیم فایل زیپ ایجاد کنیم
حتی یاهو مسنجر و مدیاپلیر هم ocx دارند و می توانید از آنها در فرم خود استفاده کنیم مثلا مدیاپلیر را در فرم بگذاریم
روش استفاده :
tools\options\controls
'گزینه activX control را انتخاب کنید . لیست ocx ها را می بینید حال می توانید انتخاب کنید
فقط کافیست در نوار ابزار form control روی آیکت کتاب (view classes) کلیک کنید و بخش activeX control را بزنید تا انچه را انتخاب کرده اید ظاهر شود .
توجه : ممکن است بعضی ها با فاکس کار نکند
دوستان
در پست 43 مشکلاتی را مطرح کردم ، میخواستم بگویم راه حل آن را یافتم.
در مورد اشکالی که با upgrade کردن برنامه از VFP5 به VFP9 پیش آمده بود و همانطور که در عکس پیداست caption بعضی از صفحات pageframe1 به هم ریخته ، من فهمیدم اگر PageFrame1.RightToLeft را مساوی .F. قرار دهیم این مشکل حل میشود.
حالا چگونه میتوانم یک برنامه بنویسم که به طور اتوماتیک تمام این form های(با پسوند .scx) مرا اصلاح کند؟ من فقط در قسمت تغییر propertyیک فرم ،به وسیله برنامه مانده ام.
اول فرم رو از طریق use مثل یک جدول باز کن و بعد
replace properties WITH STRTRAN(properties,"RightToLeft = .T.","RightToLeft = .F.") ALL FOR ("pageframe" $ BaseClass)
فقط من 2 چیز را نمی فهمم:
1 - چرا در help نوشته است که Propertyی RightToLeft در ورژن های غیر خاور میانه تاثیر ندارد؟(که دارد)
2- چرا اول که PageFrame را به form اضافه می کنیم :
RightToLeft = .T.است در صورتی که در پرانتز جلوی .F. نوشته Default
این در حالی است که در help ، گفته است .T.
سلام
این وقتی اثر داره که پشتیبانی از RigthToLeft توی ویندوز فعال شده باشه که توی XP از Control Panle/Reginal and language setting/language/Complext script language right to left ... را باید فعال کنید.
و Default بستگی به تنظیمات ویندوز دارد.
با سلام
در مورد سئوال دوم ، Default در کجای ویندوز تنظیم میشود؟البته تنظیمات معمول را که برای خاورمیانه ای کردن نرم افزار لازم است می دانم ، بیشتر منظور من اینست که چرا در کامپیوتر من، از میان Control های فرم ،فقط Pageframe است که بر خلاف Default از ابتداRightToLeft=.T.دارد؟
با سلام
در VFP9برای یک Grid یک property وجود دارد به نام : lockcolumns
اگر ما در زبان فارسی ، بخواهیم این عمل را انجام دهیم (یعنی ستونها را از راست ثابت کنیم) ، چه کار باید بکنیم؟
با تشکر
دوستان عزیز
میخواهم سئوال قبلی را طور دیگری مطرح کنم :
اگر یک Grid که در آن اطلاعات فارسی است ، و تعداد ستونهای زیادی داشته باشد به طوری که برای دیدن کل اطلاعات یک ردیف باید کلی scroll را به چپ و راست ببریم ،آنوقت یک ستونی باشد که ما بخواهیم همیشه معلوم باشد (انگار به سمت راست Grid چسبیده)و در scroll به سمت چپ از صفحه بیرون نرود چه کار باید بکنیم؟
بسیار خوشحال میشوم اگر در این زمینه ما را راهنمایی بفرمایید.
از تمام امکانات فاکس میتوان براحتی برای متون فارسی استفاده کرد و نیازی به کنترل خارجی نیست اگر درست تنظیم کنید متونین از تمام امکانات فاکس استفاده کنین
اصلا نیازی به اینکارا نیست . تمام امکانات فاکس قابل فارسی کردن هستند.
سلام خسته نباشید و شب بخیر.
این activatekeyboardlayout و loadkeyboardlayout که گفتید از کجا نتظیم میشه ؟
ورود شما به این بخش خیر مقدم و خوش آمد طرف من و سایر بچه های این بخش برای شما دوست عزیر .
اینها دو API (تابعهایی که در فایلهای اساسی ویندوز هستند.) از ویندوز هستند که زبان صفحه کلید را تغییر می دهند. مانند مثال زیر:
DECLARE LoadKeyboardLayout IN WIN32API String,integer
IF OS(3)="4"
LoadKeyboardLayout("00000401",1)
ELSE
LoadKeyboardLayout("00000429",1)
ENDIF
با این کد صفحه کلید فارسی می شود. و با این یکی :
DECLARE LoadKeyboardLayout IN WIN32API String,integer
=LoadKeyboardLayout("00000409",1)
انگلیسی می شود.
البته اضافه کنم که بهتره برای یکبار در ابتدای لود شدن برنامه این دستور
DECLARE LoadKeyboardLayout IN WIN32API String,integer
رو بدید تا در حافظه قرار بگیره
حالا وقتی وارد یک تکست باکس میشید در خاصیت gotfocus آن دستور
=LoadKeyboardLayout("00000429",1)
را بنویسید
و در خاصیت lostfocus آن دستور
LoadKeyboardLayout("00000409",1)
را بنویسید
بدین صورت شما در زمان ورود به یک تکست باکس بطور اتوماتیک امکان تایپ فارسی را دارید و در زمان خروج از همون تکست باکس کیبوردتان لاتین میشود
به همین راحتی
لطفا اول يک کم جستجو کنيد.
http://binyazprograms.com/indexfa.ph...article&stid=9
http://binyazprograms.com/indexfa.ph...rticle&stid=10
استاد با سلام
من در یکی از برنامه ها از منو در فرم استفاده کرده و تکه کدی که اشاره فرمودید رو قرار دادم و از کلیه اشیاء داخل toolbar استفاده کرده و از Microsoft Toolbar Control استفاده نکردم و مشکلی هم پیش نیومد. مسئله چیست ؟
(ذکر فرموده که در صورت استفاده از روش کدهای مورد نظر امکان استفاده از toolbar وجود ندارد.)
درضمن من از vfp 9 استفاده میکنم .
جناب binyaz2003 متشکرم اما مشکل من رو حل نمیکنه. فقط بار اصلی منوست که مشکل داره. عرض کردم بدون تغییر زبان پیش فرض ویندوز.
جناب IC_prog درست میفرماییدبه هیچ کنترل اضافه ای نیاز نیست و همه چیز درست کار میکنه.
بنظرم باید یکبار دیگه فارسی سازی در ویندوز رو بررسی مجدد کنیم.
من از vfp9 با سرویس پک 2 استفاده میکنم.
اجازه بدید بهتر مطرح کنم:
بنا به دلایلی امکان تغییر زیان ویندوز رو در یک پروژه چند زبانه ندارم.
استفاده از fontcharset عربی 178 تا اینجا بدون مشکل بوده و همه جا جواب میده.
الا در messagebox ها و بار اصلی منو.
البته منو رو به این شیوه:
DEFINE MENU _mainmenu BAR AT LINE 0 IN WINDOW (THISFORM.Name) FONT 'Tahoma', 10 , 178
تعریف کردم. جالب اینجاست که وقتی
DEFINE MENU _mainmenu BAR AT LINE 1 IN WINDOW (THISFORM.Name) FONT 'Tahoma', 10 , 178
تعریف کنم منو هم صحیح نمایش داده میشه. البته در کلیک و جلو و عقب رفتن مشکل پیدا میکنه اما از همه مهمتر جای منو هست که به شیوه دوم مقداری از صفحه رو از دست میدم.
اساتید راهنمایی کنند لطفا.
اگر بخواهیم مانند برنامه WORD در یک TEXTBOX هر چه بخواهیم تایپ کنیم ، علاوه بر اشکالات تا حالا گفته شده ، دلم می خواهد که مشکلات دیگری را هم بگویم ،تا نگویند که در یک سایت فارسی زبان ، اشکالات تایپ زبان خودشان را نگفتند:
1-کاراکترهایی مثل ; ) ( یا تایپ انگلیسی ما بین فارسی موجب پس و پیش شدن عبارات میشود .
2- در صورت که بخواهیم یک عبارت فارسی که قبلا تایپ شده را ، با BACKSPACE پاک کنیم ، نمیشود ، انگار اون حرف آخر جمله فارسی جزو حروف مقدس است.
حتی این سایت هم با فارسی مشکل دارد، مثلا اگر همینجا که دارم فارسی تایپ میکنم بخواهم بنویسم:
@ GETنمیشود درست نوشت و هی اون @ می افتد سمت راست ، در حالی که من در خط بالا هم زبان صفحه کلید را انگلیسی کردم و هم دکمه ردیف چپ را از اون بالا (توی منوی همینجا که دارم مینویسم) زدم .
بله مشکلاتی که من در پست قبلیم گفتم بر اساس EditBox بود که اکثرشان با راه حل sr_kazemi حل میشود.
با سلام
ضمن تبریک سال نو ، من متوجه موضوعی در اجرای VFP9 sp2 بر روی32bit WinXP شدم. و آن اینکه وقتی ویندوز را طوری تنظیم میکنیم که VFP فارسی بشود ، بیشتر error و Hang میکند و به اصطلاح unstable میشود.
پیغامی هم که موقع error میدهد یک پیغام خطای عمومی ویندوز که دکمه های SEND و Don`t SEND دارد و در مواردی هم یک پنجره خطای VFP باز میشود که این تیپ خطاها را در فایل vfp9err.log که در دایرکتوری فاکس پرو است مینویسد.
vfp9err.log مال برنامه من پر است از خطای:
Fatal error: Exception code=C0000005 @. . .این پیغام مخصوصا هنگام کار با debugger پیش میآید . هم چنین بعضی وقتها که در حال تایپ کد هستم هم پیش میآید.
برای حل این اشکال هم Foxuser.dbf را پاک کردم و هم یک کاربر جدید تعریف کرده ام و با آن کاربر وارد ویندوز شدم ، در این حالت error کمتر شد اما باز هم زیاد ERROR میدهد.
وقتی ویندوز را دوباره انگلیسی کردم ، ERROR خیلی کمتر شد(اما باز پیش میآید؟؟؟؟).
می خواستم ببینم شما دوستان هم متوجه unstable شدن VFP بعد از فارسی کردنش شدهاید یا نه؟
متشکرم.
با سلام
vfp9 سرويس پک 2 تعداد زيادي باگ دارد که پيشنهاد ميشه سرويس پک 2 نصب نشود.شايد اصلاحيه اي براي رفع مشکلات قرار بدهند.حتي در نسخه نمايشي sp2 بطرز بسيار مزحکي لوگوي فاکس توسط paint کلمه sp2 بهش اضافه شده بود که بعد اصلاح شد.
با سلام
دوستان میخواستم بپرسم چرا VFP9 به انواع مختلف فایل CodePage هایی اختصاص میده ؟
مثلا در یک Project شما میتوانید ، در قسمت Project info…. و در tab با نام files برای هر فایلی codepage ی مشاهده کنید ، آیا مهم است که اینجا برای فایل SCX ما codepage ENGLISH-1252 انتخاب کنیم یا Win ARABIC-1256 .
همینطور دستوری به نام : SET CPCOMPILE TO وجود دارد ، این دستور چطور روی کمپایل تاثیر میگذارد ؟
من که هم با 1256 هم با 1252 ، کمپایل کردم فرقی متوجه نشدم .(حتی وقتی با 1252 SET CPCOMPILE TO هم که کمپایل کردم و فایل EXE ساختم ، بازهم تمام خاصیت های فارسی بودنش کارمیکرد)
فقط فکر کن برنامه ای که با حالت 1256 کمپایل شده را اگر در محیط ویندوز english ببریم و کمپایل کنیم ممکن است قاطی پاتی کند.
با سلام مجدد
دوستان برای MESSAGEBOX فارسی ، که عبارت را درست از سمت راست مرتب کند چه راه حلی استفاده میکنند؟
چیزی شبیه به SYS(3009,1 که سر خط متن tooltip را به خوبی به سمت راست میآورد .
با تشکر
با سلام
من هم در تکست باکس این مشکل را داشتم و کنترل سورس آنرا گرفتم درست شد
اما در گرید آنرا چگونه حل کنم
مثلا 27/م/88 (عدد 27 سمت راست و عدد 88 سمت چپ) آنرا در تکست باکس درست نشان میدهد در هنگام چاپ هم درست نشان میدهد ولیکن در گرید آنرا وارونه نمایش میدهد عدد 27 را در سمت چپ و 88 را در سمت راست نشان میدهد چگونه میتوان این مشکل را در گرید هم حل کرد.
با تشکر از دوستان
در یک textbox که مقدار اولیه value برابر صفر داده شده وقتی مثلا یک عدد 10 رقمی وارد میشود .
چنانچه با tab یا کلیدهای arowkey به این textbox برگردیم میتوان یک عدد 9 رقمی تایپ کرد و هر دفعه در موقع ویرایش کرسر بجای آنکه در انتهای سمت چپ textbox قرار بگیرد . در آخرین نقطه ویرایش textbox قرار میگیرد !!!!
راه حل چیست ؟
دوستان من جواب خودم را در مورد چپ به راست کردن پنجره ()MESSAGEBOX که در 3 پست قبل پرسیده بودم پیدا کردم :تشویق:
چنانچه به اول عبارت پیغام مورد نظر دوتا کاراکتر (254)CHR اضافه کنیم ، MESSAGEBOX ، از چپ به راست میشود.
متاسفانه اگر کلمات انگلیسی هم قاطی پیغام ما باشند ، کلمات فارسی را پس و پیش میکنند.
مثال:
c=" در تاريخ 1388/12/05 حرکت کرديم - رفتيم به کاشان از اون ورم به انديمشک بعدم ساکن شديم به خانمان"
MESSAGEBOX(CHR(254)+CHR(254)+c,16,"")
اگر زمانیکه داخل ادیت باکس هستیم کلیدهای ctrl + Rightshift را بزنیم مشکل راست به چپ تقریبا حل می شود .( حتی زمانیکه خاصیت control Scource ان به فیلدی متصل باشد. )
حال چگونه می توانیم زمانیکه به ادیت باکس وارد می شویم کلیدهای ctrl + Rightshift اتوماتیک زده شود ؟
بنده استفاده از دستورهای keyboard , macro را بررسی کردم و نتیجه ای نگرفتم .
با تشکر از همه دوستان .
سلام
من وقتي برنامه را اجرا مي كنم فارسي نمايش نمي بينم
وقت ساختن منو هم فارسي نمي نويسه
مشكل جي هست ؟ ممنون
در ویندوز کنترل پانل :
Regional and Language option زیانه اول را روی farsi و زبانه Advanced را Arabic(Egypt) قرار دهید .
با انجام تنظیمات کنترل پنل مسئله حل میشه اما نمیشه که به همه گفت تنظیمات Regional رو تغییر بدن. ضمناً من وقتی از دلفی 5 استفاده می کنم این مشکل به وجود نمیاد اما با دلفی 7 فونت های فارسی نشون داده نمیشه. راه حل واقعی چیه؟
سلام دوستان
هنوز مشکل من در مورد مشکل تایپ فارسی در word که مجبور بودم بعد از هر مکثی یک کلید space بزنم تا تایپ ادامه پیدا کنه حل نشده. لطفا یه نفر من رو راهنمایی کنه.
یه مشکل دیگه هم دارم. کلیدهای Ctrl+ کلیدهای جهت نما که برای حرکت آهسته تر اشکال و ... استفاده میشه در کامپیوتر من کار نمیکنه. لطفا من رو راهنمایی کنید.
با تشکر
تايپ تو چه كنترلي مشكل دارين؟
من با یاهو مسنجر مشکل دارم به این صورت که وقتی فارسی تایپ میکنم حرف اول درست تایپ میشه اما از حرف دوم به بعد اتوماتیک انگلیسی میشه و هر کار میکنم فارسی نمیشه.چیکار کنم؟ویندوزم 7 اولتیمیت 64
با عرض پوزش : موفق به راست چین کردن 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))
و مشکل حل میشه
من ابتدا برنامه منو را اجرا ميكنم و بعد فرم را(خاصيت SHOWWINDOW آن IN TOP_LEVEL FORM بايد باشد). و كار ميكنه.
DO menu1.prg
DO FORM formmunu
تو HELP خود فاكس هم How to: Add a Menu to a Top-Level Form رو جستجو كن.به هر حال MIRROR هم جالبه.
براي حذف toolbar خط زير رو به برنامه منو اضافه ميكني
HIDE WINDOW "Standard"
براي حذف titlebar از فرم در پنجره خواص فرم
titlebar=off
این دو دستور رو هم استفاده کردم ، حالا مشکل اینه که در اجرای مجدد برنامه چون قبلا toolbar فاكس رو hide کردیم به این خط اشکال میگیره
در ضمن در این روش دستورات read event , clear events رو دقیقا کجا بکار ببریم .
برای اطلاعتون در برنامه main.prg بعد از تعاریف و غیره : دستورات زیر رو نوشتم
SET SYSMENU TO
SET SYSMENU AUTOMATIC
SET SYSMENU TO RTLJUSTIFY
hide windo "standard"
DO MENUS\MYMENU.MPR
DO FORM FORMS\SS.SCX
READ EVENTS
و در فرم SS که علاوه بر MAXIMIZE بودن IN TOP LEVEL FORM هم هست در قسمت LOST FOCUS
thisform.Release
SET SYSMENU TO DEFAULT
show WINDOW "STANDARD"
و در قسمت UNLOAD هم دستور CLEAR EVENTS رو نوشتم
ببخشید که خیلی قضیه رو کشش میدم ولی فک کنم اینطوری هر خواننده دیگه ای هم کاملا مشکلش حل بشه
با تشکر
1-تا اونجايي كه من اطلاع دارم read events فقط تو main.prg باشه كافيه(خصوصا براي exe كردن پروژه).cleare events هم فقط هنگام خروج از برنامه لازم است(هر چند بدون اون هم هنگام خروج من به مشكلي برخورد نكردم)
2-با exe كردن پروژه toolbars خودبخود حذف ميشود.
ممنون از راهنماییتون