نمایش نتایج 1 تا 32 از 32

نام تاپیک: حل مشکلات فارسی کنترلها از طریق استفاده از Fm20.dll

  1. #1

    حل مشکلات فارسی کنترلها از طریق استفاده از Fm20.dll

    سلام

    من در این قسمت سعی دارم شما را با کنترلهای ارائه شده توسط میکروسافت به نام Microsoft Form 2 آشنا نمایم و به شما نشان دهم چگونه این کنترلها در فاکس پرو قابل استفاده است.


    لطفا مباحث را دنبال کنید و اشکالات را درمیان بگذارید.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  2. #2
    سلام


    کنترلهای ویندوز:

    تاریخچه:
    در برنامه نویسی ویندوز آن زمانهایی که همه تحت داس برنامه می نوشتند برنامه نویسی تحت ویندوز فقط با سی امکان داشت. آن روزها برنامه نویسی تحت ویندوز یک امر مشکل بود. چونکه تمام کارها باید خط به خط به تایپ میشد. مثلا یک برنامه ساده تحت ویندوز که امروز در عرض چند ساعت حاضر می شود چند روز طول می کشید. یک کتاب به نام برنامه نویسی در ویندوز به زبان سی وجود دارد که پیترنورتون و پل یائو آنرا نوشته اند و در آن می بینید برنامه نویسی برای ویندوز آن زمان که نگارش 3 بود چقدر سخت است. تا آنجا که خود پیترنورتن در کتاب برنامه نویسی سیستمهای PC برنامه نویسی ویندوز را بسیار سخت میداند.

    این مشکل باعث شده بود که ویندوز طرفدار نداشته باشد. تا اینکه میکروسافت یک برنامه جدید به نام ویژوال بیسیک معرفی کرد که کنترلهای استاندارد ویندوز در آن به صورت بصری قابل برنامه ریزی بود! در واقع برنامه نویسی این کنترلها در فایلهای OCX ذخیره میشدند وکار برنامه نویسی را برای کاربران بسیار سهل کرده بود. نگارش اول ویژوال بیسیک با استقبال چشمگیری روبرو شد تا جایی که میکروسافت را بر آن داشت که امکانات بانک اطلاعاتی را به ویژوال بیسیک اضافه کند. چراکه 90% برنامه های تولید شده بانک اطلاعاتی بودند. بد نیست بدانید بیل گیتس عاشق بیسیک است و در نوجوانی به بیسیک برنامه مینوشته است. از اینجا بود که برنامه های تحت ویندوز از این امکان ویژوالی بیسیک بهره بردند. تا جایی که حتی سی هم از این کنترلها استفاده کرد. در سی کنترل یک پنجره است. و برای ایجاد یک کنترل بایستی دستور ساخت پنجره داد که از نوع کنترل باشد. اما در برنامه نویسی ویژوال متدها مشخصه و روال کار را راحت کرده در سی برای کنترل یک رویداد بایستی با GetMessage رویدادها را بایستی زیر نظر داشت و WM_ ها هم رویداد به وقوع پیوسته را نشان میدهند. مانند WM_LBUTTONDOWN که با WindowProc هم کنترل میشود. میبینید کار بسیار سختی است. البته نه برای یک کنترل بلکه شما برای برنامه نویسی حداقل 20 الی 30 کنترل در هر فرم دارید! در نوع جدید این کنترلها قابل ذخیره در یک فایل Dll هستند. کنترلهای جدید به ActiveX معرفند. بنابراین در برنامه نویسی شما میتوانید از این کنترلها استفاده کنید.


    چگونه یک کنترل راست به چپ را پشتیبانی میکند؟

    این بسیار ساده است کافیست که هندل ویندوی (Handle WiNDow=hwnd) آنرا بدانید و با دستورات زیر آن کنترل راست به چپ میشود به همین راحتی!


    DECLARE long GetWindowLong IN "user32" long hwnd,long nIndex
    DECLARE long SetWindowLong IN "user32" long hwnd, long nIndex, long dwNewLong
    DECLARE long InvalidateRect IN "user32" long hwnd, long lpRect,long bErase
    DECLARE long FindWindowEx IN "user32" long hWnd1,Long hWnd2,STRING lpsz1,string lpsz2
    DECLARE long GetWindow IN "user32" long hwnd,long wCmd
    #DEFINE GW_CHILD 5
    #DEFINE WS_EX_LAYOUTRTL 0x400000
    #DEFINE GWL_EXSTYLE (-20)
    LOCAL oldHwnd

    OldLong = GetWindowLong(THIS.hwnd, GWL_EXSTYLE)
    SetWindowLong(THIS.hwnd, GWL_EXSTYLE, BITOR(OldLong,WS_EX_LAYOUTRTL))
    InvalidateRect(THISFORM.hwnd, 0, .F.(

    اما کنترلهای ویژوال فاکس استاندارد نیستند تا با این دستورات راست به چپ شوند. اما خاصیتی در این کنترلها هست به نام RightToLeft که با آن راست به چپ میشوند. به شرطی که ویندوز کاملاً عربی را پشتبانی کند.

    تمام کنترلهایی که دارای Hwnd باشند بسیاربا این روش قابل راست به چپ شدن هستند. هرچیزی که از بیرون قرض کنید مانند TreeView. تنها چیزی که در فاکس پرو دارای Hwnd است.

    این کد را در رویداد Load یک فرم قرار دهید تمام کنترلهای ویژوال فاکس پرو را در آن قرار دهید بدون آنکه هیچ کنترلی دارای خاصیت راست به چپ باشد و تاثیرش را ببیند! بله درست است کنترلهای شما راست به چپ میشوند همگی! (خاصیت وراثت) اما یک حالت آینه ای پیدا کرده نه؟ ماوس هم درست کار نمیکند! همه چیز بهم ریخته! کامبو یکجاست لیست باز شو آن یکجایی دیگر.

    خب حالا با کنترلهای دیگری امتحان میکنیم. کنترلهای Microsoft Form2. این کنترلها نیاز به 4 فایل dll دارند یعنی Fm20.dll و Fm20Enu.dllو Msvbvm60.dll و Vbame.dll فایل آخری حتما باید باشد تا عربی در فاکس پرو پشتیبانی شود. یعنی این فایل را هم به فایلهای Runtime فاکس بیافزایید. در واقع در راهنمای فاکس قسمت Including Resources in Applications درباره این فایل توضیح داده است.

    Fm20.dll از کجا آمده؟
    در MSDN دنبال مقاله شماره ID: Q224305 بگردید. راجع به این فایل توضیح داده است. با توجه به این مقاله شما بایستی Office را نصب کرده باشید! اما من به شما میگویم همین چهار فایل بالا کافیست. خودم به زحمت پیدایشان کرده ام. نگران هم نباشید. Msvbvm60.dll در واقع فایل اصلی ویژوال بیسیک است! چون Office از بیسیک پشتیبانی میکند. شاخه C:\Program Files\Common Files\Microsoft Shared\VBA (ویندوز در شاخه C) حاوی فایلی است به نام FM20.HLP که در مورد این کنترل اطلاعات دارد.
    کنترلهای ویژوال فاکس پرو:
    یک تمرین انجام دهید: تمام کنترلهای موجود فاکس پرو را در داخل یک فرم قرار دهید و یک کنترل Microsoft Form2 نیز اضافه کنید و فرم را اجرا کنید. به پنجره دستورات بروید و فرمان Clear را صادر کنید (خروجی بایستی روی فرم شما باشد) با کمال تعجب خواهید دید تمام کنترلها پاک می شوند! اما کنترل Microsoft Form2 دست نخوره باقی ماند! با برنامه Spy++ از (ابزارهای ویژوال استودیو 6) هم اگر دقت کنید هیچ کنترلی دارای Hwnd نیست ولی Microsoft Form2 دارای این خصیصه است. نتیجه اینکه فاکس پرو از کنترلهای ویندوز بهره نمی برد و خود کنترلهای ویژه دارد به این دلیل است که مشکلات فارسی نویسی وجود دارند. اما ویژوال بیسیک و سی و... از کنترلهای استاندارد استفاده میکنند.

    کنترل OleControl چیست؟
    این کنترل در فاکس پرو بسیار به نقایص آن کمک کرده است. مثلا TreeView جز ابزارهای فاکس نیست اما شما با کنترل OleControl آنرا در فرمهای خود خواهید داشت. این کنترل برعکس دیگر کنترلها است. در فایل SCX که به دستور Use formname.scx باز میشود در فیلد Ole به صورت باینری اطلاعاتی که بایستی برای اجرا لازمست است ذخیره میشود. در Ole2 نام و مسیر فایلی که حاوی این Ole است ذخیره میشود.

    کلاس و کنترل Ole:
    یکی از بهترین امکاناتی که فاکس پرو فراهم کرده و در آن کنترلهای سفارشی قرار میگیرد کلاس ویژوال است. در مورد کنترل Ole در قسمت Ole در فایل VCX هم اطلاعات باینری کنترل ذخیره می شود. در Ole2 هم اطلاعات مربوط به نام و مسیر فایلی که حاوی Ole است ذخیره میشود. هنگامی که شما مشخصات (Properties) را در این کلاسها ذخیره میکنید فیلد Ole در فایل VCX هم بسته به این مشخصات تغییر خواهد کرد. در فاکس پرو 7 و بالاتر مشخصاتی که در Ole قرار دارد به صورت آبی رنگ نمایش داده میشود. هنگامی که این کلاس به فرمی اضافه شود فیلد ole در VCX عیناً به SCX منتقل میشود. یعنی مشخصات VCX به SCX منتقل میشود. بنابراین اگر شما خواستید VCX را تغییر دهید SCX آن باید بروز شود وگرنه با خطا مواجه می شود. این شما را ملزم میسازد اول VCX را ساخته و هر چه خواستید در آن قرار دهید و سپس SCX را بسازید. اگر هم خواستید در آخر که کمپایل برنامه را انجام میدهید از برابر این دو فیلد مطمئن باشید با برنامه نویسی میتوانید به این امر دست یابد.
    ابزارهای فاکس پرو و Ole:
    به منوی Tools بروید یک عنوان به اسم Object Browser وجود دارد. این ابزار یک Ole را موشکافی می کند. دراین ابزار شما با کلیک راست در Classes & members و انتخاب گزینه Open قادر خواهید بود که یک Ole را انتخاب کنید. هر کدام را که خواستید با انتخاب مربع کنارش انتخاب کنید. سپس Ok را انتخاب کنید. اطلاعات کلاس Ole انتخاب شده نمایش داده میشود.
    ابزار دیگری هم وجود دارد. Class Browser این ابزاری است که با آن شما میتوانید یک کلاس ویژوال را ببیند و حتی به دستور تبدیل کنید. اما در مورد Ole این تبدیل درست نیست. و مشخصه OleCLass که نشاندهند نام کلاس Ole است که این کلاس از روی آن ساخته شده نمایش داده نمی شود.

    ساخت اولین مثال:
    خب این مقدمات برای ما لازم بود تا بدانیم که چطور با یک کنترل رفتار کرد. می خواهیم یک کلاس بسازیم که به جای Edit Box و Text Box فاکس پرو عمل نماید. یک کلاس ویژوال به نام EditText بسازید و در یک کتابخانه کلاس به نام Controls ذخیره کنید. این کلاس از جنس OleControl و باشد Ok را انتخاب و هنگامی که لیست نمایش داده میشود Microsoft forms 2.0 TextBox انتخاب کنید.
    مشخصه های زیر را تغییر دهید:

    Height = 35
    Width = 150
    TextAlign = 3

    متدهای زیر را به صورت زیر در آورید:

    PROCEDURE Refresh
    THIS.OBJECT.Locked = ! THISFORM.Editmode
    ENDPROC
    ******************
    PROCEDURE LostFocus
    LOCAL lcCommand
    IF TYPE("m."+THIS.ControlSource) = "U"
    IF TYPE(THIS.ControlSource) <> "U"
    lcCommand = "REPLACE "+THIS.ControlSource + " WITH '" + THIS.OBJECT.Value +"'"
    &lcCommand
    ENDIF
    ELSE
    lcCommand = "m."+THIS.ControlSource + " = '" + THIS.OBJECT.Value +"'"
    &lcCommand
    ENDIF
    ENDPROC
    ******
    PROCEDURE GotFocus
    LOCAL lcCommand
    IF TYPE("m."+THIS.ControlSource) = "U"
    IF TYPE(THIS.ControlSource) <> "U"
    THIS.OBJECT.Value = ALLTRIM(THIS.OBJECT.Value)
    ENDIF
    ELSE
    THIS.OBJECT.Value = "m."+ THIS.ControlSource
    &lcCommand
    ENDIF
    ENDPROC

    در فرمی که از این کلاس استفاده می کنید بایستی یک مشخصه به نام EditMode وجود داشته باشد و هنگامی که در فرم کاربر قادر به ویرایش است Ture باشد و اگر نبایستی ویرایشی صورت گیرد False باشد.
    متد refresh برای اینکه کنترل ویرایش شود یا نه. متد LostFocus برای بروز کردن اطلاعات فیلد یا متغیر است و متد GetFocus هم چون فیلدها داری بلانک هستند و بایستی اینها حذف شود بکار نوشته شده و یا متغیر ممکن است جای دیگری تغییر داده شده باشد.
    دقت کنید این کنترل را فقط برای نوع کاراکتری استفاده کنید.
    لطفا نظر خودتون را بدهید.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  3. #3
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1382
    محل زندگی
    بیرجند - خ مدرس - مدرس 44 پلاک 52
    پست
    162
    :flower: :flower: :flower:

    :موفق:

  4. #4
    خب یک سوال:

    آیا لازم است برای این کنترلها ویندوز فارسی (عربی) را پشتیبانی کند؟

    بله لازمست. چون این کنترلها از منابع ویندوز استفاده می کنند.






    آیا این کنترلها کاملا استاندارد هستند؟
    نه!!!! راستش ما میتونیم یه Ocx از هر کنترلی که داخل بیسیک هست بسازیم و ان را در فاکس استفاده کنیم. حالا چرا اینکار را من میکنم؟؟ چون کنترلهای ویژوال بیسیک 6 می توانند به شکل XP در آیند. سند میکروسافتی در این زمینه:
    http://support.microsoft.com/default...b;en-us;309366
    من با این چیزی که میکروسافت گفته در دلفی، سی، بیسیک و حتی فاکس 7 که از Ocx که در بیسیک ساخته شده توانستم از Themes ویندوز Xp استفاده کنم. اما کنترلهای فاکس و این کنترلی که مورد بحث است نشد. اما این کنترلها نمی توانند. ولی با Spy++ که نگاه کردم دیدم Hwnd دارند. حالا از این توصیفات نتیجه میگیریم این کنترلها دستکاری شده اند. یعنی اینکه شما برای ساخت یک پنجره در ویندوز از CreateWindowEx استفاده می کنید و نوع کنترل را به آن میگویید (گر خواستید یک برنامه هم نوشته ام که این کنترلها را بوجود می آورد) حالا پاراکترهایی دارد که اگر تغییر کند فرمت کنترل هم تغییر میکند. البته هنوزم دارم کاری میکنم که این کنترلها در XP حالت Xp داشته باشند.




    آیا من میتوانم از کنترلهای ActiveX که در بیسیک یا سی ساخته ام هم به روش بالا عمل نمایم و جای کنترل فاکس را پر کنم؟

    بله به شرطی که دارای همه خصوصیات و متدهای لازم باشد.




    چرا از کنترلهای خود فاکس استفاده کنم؟
    چون این کنترلها قابلیت انعطاف زیادی دارند و مخصوص فاکس پرو طراحی شده اند. مثلا Grid فاکس را من در هیچ جا ندیده ام به این قدرت!




    چه موقع از این کنترلها و چه موقع از کنترل فاکس استفاده کنم؟
    نوع داده در فاکس چند قسم است که کنترلها فاکس برای آنها بهینه است. اما در مورد کاراکتری فقط مشکل هست و آن هم فقط فارسی بنابراین در فیلد یا متغیرهای فارسی از این کنترل استفاده شود.




    چرا از کلاس به جای اینکه خود OLE را درج کنم استفاده کنم؟
    چون هنگامی که یک کلاس به فاکس پرو معرفی میشود این کلاس در حافظه قرار میگیرد و سرعت را بالا میبرد. از سویی دیگر شما برای درج یک کلاس راحتر هستید و نیاز به کار تکراری ندارید. کافیست کنترلهای کلاس را موقع طراحی لود کنید. (در جعبه ابزار کنترلهای فاکس یک کلاس را میشود به جای کنترلهای استاندارد فاکس قرار داد)
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  5. #5
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    39
    پست
    2,107
    سوال
    من داخل گرید بجای تکست باکس خود فاکس یک تکست fm گزاشتم اما اطلاعات رو نشون نمیده باید هر سلول رو انتخاب کنم تا نشون بده! چرا؟
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

  6. #6
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    39
    پست
    2,107
    من می خوام با لیست fm آیتم وارد کنم منتها در 2 یا 3 ستون
    تعداد ستون ها رو تنظیم می کنم اما نمیشه تو ستون دوم آیتم وارد کرد همینطور عنوان ستون ها رو
    لطفا راهنمایی کنید
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

  7. #7
    چشم دریک فرصت مناسب جواب میدم. چون زیاد توضیجات داره
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  8. #8
    سلام

    در مورد این سوال که چرا در grid درست اطلاعات نشون داده نمیشه باید عرض کنم که خاصیت Sparse هنگامی که .F. باشد بایستی درست کار کند. اما واقعیت این است که درست کار نمیکند. و هر چه هم تلاش کردم کمتر به نتیجه رسیدم. دیدم که فاکس پرو در مورد گرید اون گونه که فکر میکنم عمل نمیکنه.


    در مورد سوال دوم هم باید این توضیح را بدهم که بر خلاف فاکس که خیلی راحت با تمام مسائل کنار اومده بقیه نرم افزارها کار را سخت کرده اند. یعنی برای اینکه شما یک جدول را توی لیست داشته باشید در فاکس راحت اینکار را میکنید اما در زبانهای دیگه نه!
    شما به این نکته توجه کنید که آرایه از صفر شروع میشه و یک لیست در یک آرایه ذخیره میشه. منظور مشخصه List است. شما اگه خواستید به ردیف اول ستون دوم دست پیدا کنید کافیه :



    THIS.List[0,1]



    اشاره کنید.

    تا اینجا بحث لیست پیش اومده بگم شما اگر مشخصه TextAlign را عدد 3 یا راست انتخاب کنید یه مشکلی براتون پیش میاد و اون اینه که لیست شما مقداریش میره زیر Scroll برای رفع این مشکل شما 2 داشته باشید و ستون دوم را خالی رها کنید و اندازه عرضش را هم تعیین کنید تا یکم نمایشش بهتر بشه.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  9. #9
    سلام
    یک مثال در رابطه ا استفاده از اینها که در داخل یک بانک می گرده و شما همینطور که تایپ می کنید بشما پیشنهاد میده مثلا م اولین شهری که با م شروع میشه و مش شهری که با این مش شروع بشه و...
    فایل های ضمیمه فایل های ضمیمه
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  10. #10
    سلام
    لطفا یک فرم جهت مثال در این بخش قرار بدین
    دو تا سوال داشتم
    1) EditMode در فرم جدید وجود ندارد و روش ایجاد EditMode
    2) در هنگام اجرای فرم که این کلاس در آن قرار دارد از دستور &lcCommand
    error میگیرد

    البه در مثال searchCombo این مشکلات وجود ندارد

  11. #11
    اینم یک مثال البته من زیاد از کلاس استفاده می کنم
    فایل های ضمیمه فایل های ضمیمه
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  12. #12
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    United Arab Emirates
    پست
    97
    سلام
    من در demo در هنگام اجرا و در هنگام modify با خطا مواجه میشوم
    عکس های ضمیمه عکس های ضمیمه

  13. #13
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    United Arab Emirates
    پست
    97
    من در ساخت کلاس EditText در لیست نمایش داده شده Microsoft forms 2.0 TextBox را پیدا نکردم

  14. #14
    جناب توکل
    با تشکر از توضیحات جنابعالی
    دو سئوال دارم:
    1 - در InstallShield آیا گزینه ای برای نصب خودکار چهار DLL فوق الذکر وجود دارد؟ یا بایستی از طریق اضافه کردن در قسمت فایلها و ریختن آنها در دایرکتوری سیستم اقدام شود؟
    2 - اگر نخواهیم از طریق InstallShield اینکار را انجام دهیم و در برنامه اجرایی اینکار را صورت دهیم ، چه مراحلی را انجام دهیم.
    البته این سئوالات برای خودم دلیلی دارند و مایل هستم پاسخ شما را داشته باشم.
    قبلا از بذل توجه جنابعالی تشکر میکنم

  15. #15
    من از InstallSHIELD استفاده نمیکنم اما نگارشی که در فاکس است دمو است و قادر به اضافه نمودن عناصر لازم نمی باشد ولی نگارش اصلی نوشته که می تواند.
    کافیه که فایلهای اشاره شده در یکی از این مسیرها باشد:
    1- شاخه ویندوز 2- شاخه system ویندوز 3- مسیر نصب برنامه 4- مسیرهای جستجو در متغیر محیطی PATH
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  16. #16
    با سلام به همه برنامه‌ویسان
    مشکل چب به راست منوها در VFP در نسخه VFP9 وجود دارد.
    کافی است که فقط دستور زیر را پنجره فرمان وارد کنید.
    SET SYSMENU TO RTLJ
    شایان ذکر است که تنظیمات Regional Setting ‌ویندوز باید در مود Unite Satate و زبان انتخابی آن عربی باشد
    آخرین ویرایش به وسیله rezaTavak : شنبه 25 فروردین 1386 در 08:49 صبح

  17. #17
    چند سئوال در مورد کنترل TextBox در FM20 دارم.
    1 - برای گرفتن مقادیر عددی به چه صورت باید عمل کرد؟
    2 - آیا در اینجا خاصیت InputMusk ، ToolTip و SelectOnEntry را نداریم ؟ برای داشتن آنها چه میتوان کرد؟
    3 - با توجه به اینکه خاصیت Value را نداریم و باید از طریق Text به محتوای تکست باکس دست پیدا کرد ، آیا راهی هست که به طریقی این خاصیت Value را داشته باشیم و مانند همتای آن در TextBox فاکس با آن کار کرد ؟
    4 - خاصیت AutoTab اونطور که گفته کار نمیکنه ؟ چرا؟ البته گفته باید کانتینرش این خاصیت رو داشته باش ؟!!!

  18. #18
    1- من معمولا از کنترلهای فاکس استفاده میکنم. اما می تونید از keypass,keydown,keyup برای گرفتن فقط اعداد استفاده کنید. یعنی یک کلاس برای اینکار بنویسید.

    ۲- نه نداریم. باید خودتان بنویسید. یعنی یک کلاس جدید با داشتن این خصوصیات و متدها.

    ۳- داریم در .OBJECT.Value است. اما من یک کلاس می سازم که هم کارم راحتتر باشه و یکدست هم متدهای و مشخصات موجودش را مانند فاکس میکنم. OBJECT یک شی درونی است.
    ۴- از این خاصیت استفاده نکرده ام.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  19. #19
    ممنون از پاسخها
    من خجالت نمیکشم وقتی چیزی رو بلد نیستم با توجه به اینکه منبع دیگری ندارم سئوالم رو مطرح میکنم. من object.value را نمیفهمم. میشه توضیح بیشتری بدید یا یه مثال بزارید ؟
    ممنون میشم

  20. #20
    در هر شی می توان یک شی دیگر داشت. مثلا from خودش یک شی است که اشیا دیگر را یدک می کشد.

    در بیسیک FONT یک شی درونی هر شی ویژوال است. که خودش شامل نام، اندازه، سبک و... فونت است.

    در اینجا هم OJECT یک شی درونی این اشیا است. توی فاکس پرو همچین چیزی من فعلا ندیدم که شی درونی داشته باشند.


    خب یک فرم بسازید. یک کنترل Microsoft forms 2.0 TextBox در آن قرار دهید و نام آنرا Edit1 بگذارید. فرم را اجرا کنید. (پش فرض فاکس برای نام فرم form1 است همین را عوض نکنید.)

    خب حالا با نوشتن from1 در پنجره command و بلافاصلا پس از زدن نقطه لیست کنترلها مشخصات نشان داده می شود. Edit1 را انتخاب کنید. سپس OJect را انتخاب کنید. لیست تمام عناصر موجود نشان داده می شود.

    یا می توانید بعد از اجرای فرم از Debug مشخصات فرم را دنبال کنید. اما روش بالایی بهتر است.

    میتوانید با form1.edit.object.value به مشخصه مقدار این کنترل دسترسی داشته باشید.

    نمیدونم اون چیزی که می خواستید را نوشتم یا نه.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  21. #21
    ممنون از توضیحاتتون
    من میخواستم بدونم آیا میتونم بجای استفاده از Form1.Edit1.Object.Value به صورتی بتونم از Form1.Edit1.Value استفاده کنم . اینطوری هم کد نویسی راحتتره و هم لازم نیست مواظب باشم که آیا دارم مقدار یک تکست باکس معمولی فاکس رو میخونم یا از کنترل FM20

  22. #22
    فرمایش شما صحیح اما:
    خودش دارای Value هست اما دسترسی به اون غیر ممکنه یعنی یک property که private باشه.

    پس نمیشه توی کلاس Value تعریف کرد ولی Edit1.Text هست که در فاکس پرو فقط قابل خواندن اما در این کنترلها قابل خواندن و نوشتن است.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  23. #23
    باز هم یک سئوال
    فرض کنید یک فرم داریم که یک تکست باکس با کنترل FM20 روش هست . اگه یه لیست باکس درست کنیم و اونو روی تکست باکس قرار بدیم ، وقتی فرم رو اجرا کنیم ، تکست باکس روی لیست باکس قرار میگیره ! هر کاری هم کردم زیر نمیره که نمیره.
    آیا درسته یا من جایی اشتباه میکنم. دیگه دارم کم کم کم کم دیونه میشم.

  24. #24
    نه شما اشتباه نمیکنید کنترلهای فاکس پرو غیر استاندارد هستند!
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  25. #25
    نقل قول نوشته شده توسط rezamim مشاهده تاپیک
    باز هم یک سئوال
    فرض کنید یک فرم داریم که یک تکست باکس با کنترل FM20 روش هست . اگه یه لیست باکس درست کنیم و اونو روی تکست باکس قرار بدیم ، وقتی فرم رو اجرا کنیم ، تکست باکس روی لیست باکس قرار میگیره ! هر کاری هم کردم زیر نمیره که نمیره.
    آیا درسته یا من جایی اشتباه میکنم. دیگه دارم کم کم کم کم دیونه میشم.
    از منوی Format گذینه Send to back رو انتخاب کن میره زیر

  26. #26
    نقل قول نوشته شده توسط reza1357 مشاهده تاپیک
    از منوی Format گذینه Send to back رو انتخاب کن میره زیر
    حیف که من 20 سال از بهترین سالهای عمرم رو توی اهواز بودم ( خیابون لشکر - مدرسه سرلشکر قرنی که شد شهید فرید نیا - دبیرستان شهدا ) یادش بخیر. وگرنه اینجوری موهای تو رو هم میکندم شوخی کردم. دیدم اهوازی هستی گفتم حالی بکنیم

  27. #27
    چرا حیف ؟

  28. #28
    از zorder هم میتونید در زمان اجرای برنامه استفاده کنید
    در تندیس های تخت جمشید هیچ کس در حال تعظیم نیست ، هیچ کس عصبانی نیست ، هیچ کس سرافکنده و شکست خورده نیست ، هیچ کس سوار بر اسب نیست ، هیچ قومی بر قوم دیگر برتر نیست ، هیچ کس برده نیست و هیچ تصویر خشنی دیده نمیشود.
    ************************************************** ******************************************
    اندیشه کن , آنگاه سخن گو تا از لغزش بر کنار باشی

  29. #29
    نقل قول نوشته شده توسط kia1349 مشاهده تاپیک
    از zorder هم میتونید در زمان اجرای برنامه استفاده کنید
    سلام جناب "کیا"
    خواهشا" حال که تشریف آوردید و خودتان موضوع رو باز کردید یه توضیح جامع در خصوص این "zorder" بدین .
    تنما دارم هلپ فاکس رو آدرس ندین.
    متشکرم

  30. #30

    ZOrder

    با اجازه بزرگترها:

    فرض کنید ویندوز یک لیستی دارد که عناصر گرافیکی را در آن نگه می دارد و هر کدام که بالاترین باشد روی همه و هر کدام که زیرتر باشد زیر بقیه قرار گیرد.

    شما در فرمها alwaysontop یا alwaysonbottom را دارید که نشان می دهد در لیست این فرم باید بالای همه فرمها یا زیر همه فرمها باشد.

    در مورد بقیه کنترلهای دیگر در داخل یک فرم از این متد استفاده میشود که Zorder اگر با پارامتر ۰ ارسال شود (یا بدون پارامتر) کنترل روی همه در لیست می رود و اگر ۱ ارسال شود کنترل زیر همه در لیست قرار می گیرند. طبعا بقیه عناصر در لیست مانند قبلی باقی خواهند ماند. اما set focus همانی است که قبلا بوده است یک مثال در فایل ضمیمه است. با کلیک روی هر دکمه دستور یکی دیگر ظاهر می شود.
    فایل های ضمیمه فایل های ضمیمه
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  31. #31
    لطفا در مورد نحوه sort کردن فیلدهای فارسی راهنمایی بفرمائید حروف (گ ژ پ چ ) چگونه در این sort قراربگیرند ؟ با تشکر

  32. #32
    ابتدا ورود شما را به این بخش خوش آمد می گویم

    اما دوست عزیز چند نکته را مد نظر داشته باشید:

    ۱ - قبل از سوال جستجو کنید
    ۲ - مرتبط بودن مطلب با عنوان گرچه اینجا راجع به فارسی است اما در خصوص کنترلهای textbox و...

    اما اینجا
    https://barnamenevis.org/showth...highlight=sort
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •