PDA

View Full Version : سوال: نوشتن متن فارسی در وی بی



mbscreater
پنج شنبه 28 دی 1391, 07:26 صبح
سلام. چطور میشه تو وی بی متن فارسی نوشت به طوری که فایل اجرایی ما در هر کامپیوتری اجرا بشه متنش سالم بمونه؟

the king
پنج شنبه 28 دی 1391, 09:25 صبح
سلام. چطور میشه تو وی بی متن فارسی نوشت به طوری که فایل اجرایی ما در هر کامپیوتری اجرا بشه متنش سالم بمونه؟

متن وقتی تضمینی درست نشون داده میشه که Unicode باشه و موقع نمایش Unicode و با فونت های مناسب نشون داده بشه.
ویژوال بیسیک 6 ترکیبی از سیستم های Unicode و ANSI رو بکار می بره، نوع داده String اش و روتین های مربوط به String اش Unicode ئه، اما
ویرایشگر فرم، کنترل های ویژوال اش و اجزایی که با API در ارتباط اند مثل Clipboard اش ANSI اند. هرگاه از این بخش های ANSI استفاده کنید احتمال
بهم ریختن متن Unicode تون هست.

خوشبختانه اغلب این مشکلات یا با استفاده مستقیم از توابع Unicode ئه API ویندوز یا کنترل های متفرقه ای که Unicode اند حل میشه.
فرضا این کد بدون توجه به تنظیمات سیستم همیشه یک متن فارسی رو به درستی روی فرم نمایش میده :


Private Declare Function TextOutW Lib "gdi32.dll" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, ByVal lpString As Long, ByVal nCount As Long) As Long

Private Sub Form_Load()
Dim text As String
text = decode("4A06A906200045062A06460" _
+ "6200041062706310633064906")
Font.Name = "Tahoma"
AutoRedraw = True
TextOutW hDC, 10, 10, StrPtr(text), Len(text)
End Sub

Private Function decode(value As String) As String
Dim i As Integer, j As Integer, bytes() As Byte
j = Len(value) \ 2 - 1
ReDim bytes(0 To j)
For i = 0 To j
bytes(i) = Val("&H" & Mid(value, i * 2 + 1, 2))
Next
decode = bytes
End Function

mbscreater
جمعه 29 دی 1391, 16:33 عصر
این به Print شباهت داره و روی فرم، متن فارسی رو مینویسه. اگر بخوام تو لیبل فارسی بنویسم چی؟
احتمال هم داره که لازم باشه برنامه ای بنویسیم که خودش بعضی تنظیمات کامپیوتر رو تغییر بده تا کامپیوتر توانمند بشه که متن فارسی ما رو، تو برنامه نمایش بده.

the king
جمعه 29 دی 1391, 16:54 عصر
این به Print شباهت داره و روی فرم، متن فارسی رو مینویسه. اگر بخوام تو لیبل فارسی بنویسم چی؟
احتمال هم داره که لازم باشه برنامه ای بنویسیم که خودش بعضی تنظیمات کامپیوتر رو تغییر بده تا کامپیوتر توانمند بشه که متن فارسی ما رو، تو برنامه نمایش بده.

من فقط یک مثال زدم. همانطور که قبلا اشاره کردم شما می توانید از کنترل هایی استفاده کنید که Unicode اند.

مثلا کنترل های TimoSoft رایگان اند و نسخه Unicode دارند :

TimoSoft - Downloads (http://www.timosoft-software.de/downloads/)

یا UserControl های دست ساز را بکار ببرید.

برنامه شما نباید تنظیمات سیستم رو عوض کنه، ما که نباید به جای کاربر تصمیم بگیریم که برای متن های غیر Unicode از چه Charset ای استفاده کنه،
شاید کاربر بخاطر یک سری برنامه های خاص نخواهد تنظیمات سیستم اش عوض شه.

mbscreater
یک شنبه 01 بهمن 1391, 09:34 صبح
آفرین دوست عزیز! استفاده از کنترل های Unicode روش خوبی بود.

کمی در اینترنت گشتم و این یکی رو پیدا کردم که از اون بهتره! دانلود کنید رایگان است:

http://cyberactivex.com/Download/UniSuiteFree.exe

دقت کنید که:

بعد از نصب، در Components این گزینه را تیک بزنید:
98715

متن فارسیتان را مستقیما در کپشن ننویسید و از قسمت "..." وارد کنید:
98716

http://barnamenevis.org/images/misc/pencil.png

fuladpanjeh
شنبه 18 خرداد 1392, 17:13 عصر
سلام . من از unisuite استفاده کردم . تو سیستم خودم که مشکلی وجود نداره ! اما تو ویندوز دیگه درست نشون نمیده :(

alipoor2009
چهارشنبه 22 خرداد 1392, 08:07 صبح
دوست عزیزم به این مسیر مراجعه کن
C:\Program Files\CyberActiveX\UniSuiteFree\Release
و بعد OCX رو کپی کن تو System32
و بعد تو RUN این دستور رو بزن
regsvr32 C:\WINDOWS\system32\UniSuiteFree.ocx
بعد اگه خواستی رو سیستم دیگه ای اجرا کنی فقط فایل OCX را در SYSTEM32 کپی کن و بعد دستور Run را هم اجرا کن دیگه OK

vbhamed
چهارشنبه 22 خرداد 1392, 08:13 صبح
سلام
براي درست نشون دادن متن فارسي، ويندوز شما هم بايد تنظيم باشه و ذخيره و بازيابي به صورت يونيكد به تنهايي كافي نيست
براي تنظيم ويندوز هم فايل زير را ببينيد و دقيقا طبق توضيحات عمل كنيد (ضمنا توضيحات براي ويندوز Xp و ويندوز 7 جداگانه داده شده)
http://www.ArminaCo.com/dl/farsisetup.zip

fuladpanjeh
پنج شنبه 30 خرداد 1392, 20:14 عصر
سلام . ممون تقریبا حل شد . اما اون بخش که باید change system locate رو فارسی بزنی . مشکل من الان اینه که بعضی کاربرا با این که فارسی دارن اما این قسمت رو نزدن و این باعث میشه listbox من نشون داده نشه .

vbhamed
جمعه 31 خرداد 1392, 05:37 صبح
سلام
خب به كاربران بگين اون قسمت رو علامت بزنن
ضمنا يك مورد نادر ديگه هم هست
وقتي از manifest براي پروژه استفاده مي‌كنيم تا پروژه ها استايل ويندوز رو به خودشون بگيرن ممكنه بعضي از ليستها در خروجي exe درست كار نكنن !