vb6;استفاده از فونت فارسی به صورتی که روی هر کامپوتری خونده بشه؟؟؟

شروع موضوع توسط Saeed Shahabi ‏11 آوریل 2010 در انجمن منطق و الگوریتم برنامه‌نویسی

  1. Saeed Shahabi

    Saeed Shahabi Member

    ارسال‌ها:
    125
    تشکر شده:
    10
    امتیاز دستاورد:
    16
    سلام...
    برنامه ای نوشتم که پیغام هاش به زبان فارسی هستند. وقتی این برنامه رو به صورت یک فایل exe در سیستم های دیگه اجرا می کردم گاهی فونت فارسیش خونده نمی شد.برای حل این مشکل چه کار کنم؟لطفا کمک کنید...
    متشکرم...
     
    نوشته شده توسط Saeed Shahabi در ‏11 آوریل 2010
  2. Saeed

    Saeed Well-Known Member

    ارسال‌ها:
    3,284
    تشکر شده:
    5,511
    امتیاز دستاورد:
    113
    سلام

    از فونت های پیشفرض خود ویندوز Tahoma, Ariyal که تاهوما بهتره
    اگه نخواستید تنها روش اینه که فونت رو به ویندوز خاطی به صورت دستی کپی کنید یا برنامه ای بنویسید که اتوماتیک کپی کنی

    موفقیت
     
    نوشته شده توسط Saeed در ‏11 آوریل 2010
    Saeed Shahabi از این پست تشکر کرده است.
  3. western

    western Member

    ارسال‌ها:
    133
    تشکر شده:
    161
    امتیاز دستاورد:
    16
    سلام

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

    اما من فکر میکنم مشکل اینه که حتی فونتای خود ویندوز مثل تاهما استفاده میکنی یه سری علامت سوال و ... تو سیستم مقصد میبینی
    برای این مشکل تو سیستم مقصد از control panel > regional and language options زبان فارسی رو نصب کنی
    هم توی tab اول (regional options) فارسی رو انتخاب کن، توی tab دوم (languages) گزینه "install files for complex..." رو تیک بزن و تو tab سوم (advanced) هم زبان فارسی رو انتخاب کن، قاعدتا مشکلت باید حل بشه


    ارادتمند - محمد آشتیانی
     
    نوشته شده توسط western در ‏12 آوریل 2010
    Saeed Shahabi و Saeed از این پست تشکر کرده اند.
  4. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    10,933
    تشکر شده:
    11,078
    امتیاز دستاورد:
    113
    طبیعتا اگه برنامه شما قراره روی سیستم دیگری قابل اجرا باشه بصورت یک فایل اجرایی exe کامپایل اش می کنید.
    اگر می خواهید که فونت هایی بجز فونت های اصلی ویندوز (مثلا Tahoma و Arial و ...) استفاده کنید (مثلا B Homa )
    بهتر است که فونت مورد نظرتان را همراه با برنامه exe توسط یک ابزار Setup ساز به یک Setup تبدیل کنید
    چون آن برنامه Setup ساز نصب شدن فونت را به سادگی انجام می دهد، اما اگر می خواهید که نصب شدن فونت توسط
    کد برنامه خودتان انجام شود، فایل فونت را کنار فایل اجرایی تان کپی کنید (مثلا BHoma.ttf) و توسط کد زیر آنرا
    در ابتدای کد برنامه تان در سیستم نصب کنید و در خاتمه کار برنامه حذف کنید:
    کد (Text):

    Option Explicit

    Private Declare Function AddFontResource Lib "gdi32.dll" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long
    Private Declare Function RemoveFontResource Lib "gdi32.dll" Alias "RemoveFontResourceA" (ByVal lpFileName As String) As Long

    Private Sub Form_Initialize()
        AddFontResource "BHoma.ttf"
    End Sub

    Private Sub Form_Terminate()
        RemoveFontResource "BHoma.ttf"
    End Sub
     
    برای آنکه نوشته های فارسی بدرستی و بدون کاراکتر های ???? مشاهده شوند، از کنترل هایی که Unicode هستند
    استفاده کنید (بایستی پیش از اجرا برنامه شما نصب شده باشند) :

    ActiveX فارسی نویسی برای VB - GamaForum
    ActiveX فارسی نویسی برای VB - MajidOnline

    نمونه برنامه هایی که بدون استفاده از کنترل های ActiveX نوشته های فارسی را نمایش می دهند را هم قبلا در فروم
    قرار داده ام. برای نمایش متن بجای Label های استاندارد از توابع DrawTextW و یا TextOutW استفاده می کنند که
    متن فارسی شان به همان صورت Unicode که هست باقی بماند و به ANSI تبدیل نشود.
     
    نوشته شده توسط the_king در ‏12 آوریل 2010
    SajjadKhati، 3minar، Saeed و یک نفر دیگر از این ارسال تشکر کرده اند.
  5. Alireza Goodarzi

    Alireza Goodarzi New Member

    ارسال‌ها:
    2
    تشکر شده:
    0
    امتیاز دستاورد:
    1
    سلام دوستان
    خیلی از اون وقت ها گذشته ولی برنامه های vb6 هنوز دارند کار می کنند! مشکل فونت فارسی رو در ویندوز 10 کسی حل کرده؟
    من تنظیمات لازم رو انجام دادم در ویندوز 10. برنامه vb6 بعد از نصب، فونت ها رو در محل درستش کنار بقیه فونت ها کپی می کنه.
    فونت های فارسی در NotPad هم به درستی تایپ میشه و خواناست.
    ولی برنامه vb6 رو که اجرا می کنم کد های اسکی رو میبینم برای متن های فارسی. بعضی جاها هم علامت سوال.
    توضیح اینکه برنامه بدون مشکل رو ویندوز های 7 و پایین تر بدون مشکل کار می کنه.
    کمکی می تونید بکنید ممنون میشم.
    این آیکون برنامه روی دسکتاپ هست.
    vb61.PNG

    این یک پیغام هستش.
    vb62.PNG
    vb63.PNG
     
    نوشته شده توسط Alireza Goodarzi در ‏7 جولای 2019
  6. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    10,933
    تشکر شده:
    11,078
    امتیاز دستاورد:
    113
    برنامه ای که با VB6 ساخته شده مثل خروجی خیلی از نرم افزار های قدیمی متن هاش unicode نیست، non-unicode ئه.
    برای اینکه اینجور متن های non-unicode درست نمایش داده بشه باید در ویندوز تنظیم non-unicode روی زبان مورد نظر (فارسی) قرار بگیره.
    اون بخش Region رو انتخاب کنید.
    در پنجره اش Administrative رو انتخاب کنید.
    روی دکمه change system locale کلیک کنید و زبان مورد استفاده برای متن های non-unicode رو مشخص کنید و OK کنید.
     
    نوشته شده توسط the_king در ‏8 جولای 2019
    SajjadKhati از این پست تشکر کرده است.
  7. SajjadKhati

    SajjadKhati کاربر فعال <A href="http://forum.majidonline.com/f

    ارسال‌ها:
    1,341
    تشکر شده:
    603
    امتیاز دستاورد:
    113

    سلام
    استاد علی ، این به دات نت مربوطه یا به زبان؟
    خروجی برنامه های سی شارپ ، unicode هه و نیازی به این تنظیماتی که گفتین ، نداره یا داره؟
     
    نوشته شده توسط SajjadKhati در ‏8 جولای 2019
  8. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    10,933
    تشکر شده:
    11,078
    امتیاز دستاورد:
    113
    در حالت کلی نه. ارتباطی با NET. نداره، متن های Unicode-16 و Unicode-32 و UTF-8 و ... مشکلی از این لحاظ ندارند.
    زمانی که این نرم افزار های قدیمی مثل Visual Basic تولید می شدند، هنوز سیستم عامل ویندوز Unicode رو بصورت کامل پشتیبانی نمی کرد و به همین جهت با استفاده از توابع قدیمی ANSI ویندوز طراحی شده اند.
    حتی با وجودی که از نظر داخل زبانی متن های ویژوال بیسیک 6 بصورت Unicode ذخیره می شوند، چون موقع نمایش با توابع و پنجره های ANSI کار می کنند، اگه انتخاب زبان و Codepage مناسبی صورت نگرفته باشه درست نمایش داده نمیشن. در نرم افزار هایی که به زبان VB6 نوشته شدن هم اگر برنامه نویس با یکم زحمت بیشتر از کنترل ها و توابع API ئه Unicode استفاده کنه همچین مشکلی پیش نمیاد.
    برعکسش هم هست، یعنی اگر داخل NET. هم بخواهید متن Unicode رو با توابع API ئه ANSI نمایش بدید احتمال بروز این مشکل وجود داره.
     
    نوشته شده توسط the_king در ‏9 جولای 2019
    SajjadKhati از این پست تشکر کرده است.

به اشتراک بگذارید