View Full Version : مشکل با فونت مسیج باکس با متن فارسی در ویندوز 10
ARData
جمعه 09 شهریور 1403, 10:34 صبح
سلام
عزیزانی که با اکسس تحت ویندوز 10 کار میکنن لطفا اعلام کنید مشکل حروف عجق وجق مسیج باکس رو چطوری حل کردین
با سپاس از دوستان جدید و قدیمی :لبخندساده:
ARData
جمعه 09 شهریور 1403, 12:11 عصر
خودم کشفش کردم رفقا (یکبار برای همشیه و حتی بدون اینکه به Administrative قسمت Region & Language دست بزنید !
شما هم استفاده و به جان ارشد دعا کنید ...
Public Function MyUnicodeSentence(MySentence As Variant)
On Error Resume Next
'Ardatabase Programming
If IsNull(MySentence) Or MySentence = "" Then
MyUnicodeSentence = ""
Exit Function
End If
Dim i As Integer
For i = 1 To Len(MySentence)
MyUnicodeSentence = Nz(MyUnicodeSentence, "") & ChrW(AscW(Mid(MySentence, i, 1)))
Next i
MyUnicodeSentence = MyUnicodeSentence
End Function
atf1379
جمعه 09 شهریور 1403, 14:23 عصر
خودم کشفش کردم رفقا (یکبار برای همشیه و حتی بدون اینکه به Administrative قسمت Region & Language دست بزنید !
شما هم استفاده و به جان ارشد دعا کنید ...
Public Function MyUnicodeSentence(MySentence As Variant)
On Error Resume Next
'Ardatabase Programming
If IsNull(MySentence) Or MySentence = "" Then
MyUnicodeSentence = ""
Exit Function
End If
Dim i As Integer
For i = 1 To Len(MySentence)
MyUnicodeSentence = Nz(MyUnicodeSentence, "") & ChrW(AscW(Mid(MySentence, i, 1)))
Next i
MyUnicodeSentence = MyUnicodeSentence
End Function
سلام
خوب حالا از این تابع به چه صورت باید استفاده کنیم ؟
با تشکر
atf1379
جمعه 09 شهریور 1403, 17:52 عصر
ایکاش میشد از طریق کد نویسی چک میشد که در صورتیکه در قسمت Administrative قسمت Region & Language زبان فارسی انتخاب نشده بود انتخاب و جایگزین شود.
متاسفانه وقتی در قسمت فوق زبان فارسی انتخاب نشده باشد هر گونه کلمه یا متن فارسی در قسمت کد تویسی بصورت حروف عجق وجق تبدیل میشه
atf1379
سه شنبه 13 شهریور 1403, 15:26 عصر
ایکاش میشد از طریق کد نویسی چک میشد که در صورتیکه در قسمت Administrative قسمت Region & Language زبان فارسی انتخاب نشده بود انتخاب و جایگزین شود.
متاسفانه وقتی در قسمت فوق زبان فارسی انتخاب نشده باشد هر گونه کلمه یا متن فارسی در قسمت کد تویسی بصورت حروف عجق وجق تبدیل میشه
اساتید عزیز برای حل این مشکل نظری ندارند ؟
atf1379
سه شنبه 13 شهریور 1403, 20:47 عصر
بنظر بنده استفاده از تابعی که جناب ARData در پست اول برای برطرف کردن مشکل حروف عجق وجق مسیج باکس ها پیشنهاد داده ان راهکار مفیدی نمیتونه باشه چون وقتی زبان سیستم بر روی زبانی غیر از فارسی تنظیم شده باشه در قسمت کدنویسی حروف فارسی به حروف به اصطلاح عجق وجق تبدیل میشه . حالا چطور تابع AscW میتونه یونیکد حروف فارسی این حروف عجق وجق شده را تشخیص بده؟
eb_1345
چهارشنبه 14 شهریور 1403, 17:34 عصر
اساتید عزیز برای حل این مشکل نظری ندارند ؟
سلام
فایل اجرائی ضمیمه را در کنار برنامتون قرار بدهین و با استفاده از کد زیر آن را در رویداد Form_Load فرم استارت آپ برنامتون فراخوانی نمائید:
If Dir(Access.CurrentProject.Path & "\ChangeSystemlanguage.exe") <> "" Then
Shell Access.CurrentProject.Path & "\ChangeSystemlanguage.exe", vbNormalFocus
End If
فقط عنایت داشته باشین بلحاط عدم دسترسی به سیستم های دیگر بنده این نمونه رو فقط تحت ویندوز 10 تهیه و تست کرده ام .لذا چنانچه در سیستم های دیگر با مشکل اجرا مواجه شدین اطلاع بدهین که اصلاحش کنم.
ضمناً یادآوری میگردد که اگر زبان سیستم فارسی باشد نمونه فوق اجرا نخواهد شد
eb_1345
چهارشنبه 14 شهریور 1403, 17:45 عصر
برای تست نمونه از طریق کنترل پنل طبق ترتیبی که در تصویر ضمیمه نشان داده ام زبان برنامه را بر روی انگلیسی یا هر زبان دیگری تنظیم و در پایان سیستم را ریست نمائید
mazoolagh
چهارشنبه 14 شهریور 1403, 20:37 عصر
با اجازه،
من هم این وسط یک آگهی تبلیغاتی پخش میکنم:
حرفه ای: Mazoo Utils for VBA - کتابخانه ابزارهای سودمند برای VBA (barnamenevis.org) (https://barnamenevis.org/showthread.php?574336-Mazoo-Utils-for-VBA-%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C-%D8%B3%D9%88%D8%AF%D9%85%D9%86%D8%AF-%D8%A8%D8%B1%D8%A7%DB%8C-VBA&p=2458454&viewfull=1#post2458454)
بخش (Notifications)
ولی راه حل عمومی همون هست که system locale رو persian بذارین،
این وظیفه کاربر هست - خودتون رو برای این چیزا اذیت و کاربرها رو لوس نکنین!
atf1379
چهارشنبه 14 شهریور 1403, 21:30 عصر
سلام
فایل اجرائی ضمیمه را در کنار برنامتون قرار بدهین و با استفاده از کد زیر آن را در رویداد Form_Load فرم استارت آپ برنامتون فراخوانی نمائید:
If Dir(Access.CurrentProject.Path & "\ChangeSystemlanguage.exe") <> "" Then
Shell Access.CurrentProject.Path & "\ChangeSystemlanguage.exe", vbNormalFocus
End If
فقط عنایت داشته باشین بلحاط عدم دسترسی به سیستم های دیگر بنده این نمونه رو فقط تحت ویندوز 10 تهیه و تست کرده ام .لذا چنانچه در سیستم های دیگر با مشکل اجرا مواجه شدین اطلاع بدهین که اصلاحش کنم.
ضمناً یادآوری میگردد که اگر زبان سیستم فارسی باشد نمونه فوق اجرا نخواهد شد
سلام جناب آقای بهرامی
دست گلت درد نکنه
دقیقاً چیزی که مد نظر من بود
سپاسگزارم
atf1379
چهارشنبه 14 شهریور 1403, 21:49 عصر
با اجازه،
من هم این وسط یک آگهی تبلیغاتی پخش میکنم:
حرفه ای: Mazoo Utils for VBA - کتابخانه ابزارهای سودمند برای VBA (barnamenevis.org) (https://barnamenevis.org/showthread.php?574336-Mazoo-Utils-for-VBA-%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C-%D8%B3%D9%88%D8%AF%D9%85%D9%86%D8%AF-%D8%A8%D8%B1%D8%A7%DB%8C-VBA&p=2458454&viewfull=1#post2458454)
بخش (Notifications)
سلام جناب mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh)
راستش من در بخش Notifications تاپیک فوق کدی که در ارتباط با موضوع تنظیم زبان فارسی سیستم (در صورت تنظیم زبان سیستم بغیر از فارسی) پیدا نکردم . شایدم من بی دقتی کردم
ولی راه حل عمومی همون هست که system locale رو persian بذارین،
این وظیفه کاربر هست - خودتون رو برای این چیزا اذیت و کاربرها رو لوس نکنین!
اتفاقاً نمونه فایلی که جناب بهرامی ضمیمه کرده ان همین کار رو انجام میده
در فایل اجرائی ای که ایشان تهیه کرده ان در هنگام اجرا ابتدا بررسی میکنه که آیا زبان سیستم بر روی فارسی تنظیم شده یا نه اگه زبان فارسی بود که فایل نمایش داده نمیشه در غیر اینصورت پیام ضرورت انتخاب زبان فارسی رو به کاربر میده که با کلیک بر روی کمند باتن مربوطه مستقیماً پنجره Region Setting باز میشه که کاربر در صورت تمایل میتونه زبان فارسی رو بصورت دستی انتخاب کنه
mazoolagh
شنبه 17 شهریور 1403, 14:02 عصر
سلام جناب mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh)
راستش من در بخش Notifications تاپیک فوق کدی که در ارتباط با موضوع تنظیم زبان فارسی سیستم (در صورت تنظیم زبان سیستم بغیر از فارسی) پیدا نکردم . شایدم من بی دقتی کردم
سلام و روز خوش
اتفاقا هست - هم message box و هم toast notification و system notification
با امکانات بسیار گسترده!
و این پست هم برای کسانی هست که بعدا با جستجو یا گذری سروکارشون به اینجا میفته،
و قطعا برای شما نبود.
خواسته استارتر محترم تاپیک این بوده که پیام های اکسس درست نشون داده بشن،
و در پست شماره 2 هم کدی رو گذاشتن که پیام رو از ansi به unicode تبدیل میکنه،
و اتفاقا بسیار روش خوبی هم هست :
چون در مقایسه با روش جناب آقای بهرامی گرامی خواسته و هدف با کمترین هزینه و به طور کامل بدست آمده.
نوشته شما در پست شماره 6 و کوت در پست شماره 11 کاملا مصداق نقض غرض هست:
اگر این کامپیوتر شماست که خب بعنوان برنامه نویس میدونین باید چه کار کنین،
و این دیگه نیاز به برنامه خارجی نداره که به شما یادآوری کنه - باید خودتون انجام بدین!
و اگر کامپیوتر کاربر هست دیگه برای ما چه اهمیتی داره که تنظیماتش چی هست،
مگر این که برنامه به اونها وابسته باشه!
همچنین:
1- اگر قرار به فقط چک کردن باشه اصولا نیازی به برنامه خارجی (exe) نیست
و از داخل خود اکسس هم میشه این کار رو انجام داد،
و در صورت نیاز به کاربر فهموند چکار باید بکنه.
2- حتی میشه در خود اکسس تنظیمات رو تغییر هم داد.
atf1379
شنبه 17 شهریور 1403, 17:29 عصر
سلام جناب mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh) گرامی !
روز شما هم خوش!
از شما استاد عزیز تمنا دارم در خصوص توضیحاتی که در زیر به استحضار جنابعالی و سایر دوستان میرسد بنده را راهنمائی فرمائید :
در توضیحات پست 6 بنده به این مورد اشاره کرده ام که وقتی زبان سیستم بر روی زبانی غیر از فارسی تنظیم شده باشد در قسمت کدنویسی حروف فارسی به حروف به اصطلاح عجق وجق تبدیل میشود.
بعنوان نمونه بنده در ضمیمه نمونه فایلی را قرار داده ام که مربوط به نمایش پیام کنار ساعت کامپیوتر می باشد .
تصویر 2 ضمیمه از قسمت کد نویسی فرم فایل نمونه در حالتی که زبان سیستم بر روی فارسی تنظیم شده است گرفته شده . مشاهده میفرمائید که در این حالت پیام های فارسی بدون هیچ مشکلی نمایش داده میشود .
تصویر 3 ضمیمه از قسمت کد نویسی فرم فایل نمونه در حالتی که زبان سیستم بر روی انگلیسی تنظیم شده است گرفته شده . مشاهده میفرمائید که در این حالت پیام های فارسی به اصطلاح بصورت عجق وجق تبدیل شده
لذا بنده بخاطر مشاهده چنین حالتی به این نتیجه رسیدم که تابع استارتر محترم نمیتواند مفید باشد چرا که :
1- در قسمت کد نویسی متن فارسی علاوه بر مسیج باکس ها ممکن است بر اساس نیاز در قسمت های دیگر برنامه هم بکار رود (مثل نمونه ضمیمه)
2- وقتی زبان سیستم غیر از فارسی انتخاب شده باشد حروف فارسی به حروف ناخوانای دیگری تبدیل میشود . لذا در چنین حالتی کدی که استارتر محترم نوشته اند چه کمکی برای نشان دادن صحیح حروف فارسی میتواند بکند ؟ در کدی که ایشان بکار برده اند با استفاده از ansi ابتدا کد حروف فارسی استخراج و سپس با استفاده از unicode آن کدها به حروف فارسی تبدیل میشود , حالا سوال و ابهامی که در اینجا مطرح است این است که وقتی حروف فارسی به حروف ناخوانا تبدیل میشود آیا باز هم ansi قادر به تشخیص کد فارسی میشود که در نهایت توسط unicode به حروف فارسی تبدیل گردد ؟ این سوال را در همان پست 6 هم بطور واضح مطرح کردم ولی پاسخی به آن داده نشد. ( شاید هم در این حالت تابع فوق جواب بدهد و بنده نتوانستم بصورت صحیح از آن استفاده کنم)
اگر این کامپیوتر شماست که خب بعنوان برنامه نویس میدونین باید چه کار کنین،
و این دیگه نیاز به برنامه خارجی نداره که به شما یادآوری کنه - باید خودتون انجام بدین!
و اگر کامپیوتر کاربر هست دیگه برای ما چه اهمیتی داره که تنظیماتش چی هست،
مگر این که برنامه به اونها وابسته باشه!
جسارتا ، بنده هر چقدر سعی کردم نتوانستم متوجه منظور جنابعالی از متن بالا بشوم . یعنی یک برنامه نویسی که قرار است برنامه اش توسط کاربرانی بر روی سیستم های دیگر مورد استفاده قرار میگیرد نباید به خروجی برنامه اش بر روی سیستم های دیگر اهمیت بدهد . پر واضح است که تمام سعی و تلاش یک برنامه نویسی که قرار است برنامه اش مورد استفاده افراد دیگری قرار بگیرد این است که برنامه اش بدون مشکل خاصی اجرا شود و در هنگام بروز مشکل به کاربر آلارم یا پیام خاصی در خصوص رفع آن مشکل بدهد.
eb_1345
شنبه 17 شهریور 1403, 18:35 عصر
مطالب این پست بعلت ویرایش مطالبی از پست 13 که در اینجا بصورت نقل قول درج شده بود حذف گردید.
eb_1345
شنبه 17 شهریور 1403, 19:06 عصر
همچنین:
1- اگر قرار به فقط چک کردن باشه اصولا نیازی به برنامه خارجی (exe) نیست
و از داخل خود اکسس هم میشه این کار رو انجام داد،
و در صورت نیاز به کاربر فهموند چکار باید بکنه.
2- حتی میشه در خود اکسس تنظیمات رو تغییر هم داد.
درود و سلام خدمت استاد مازولاق عزیز !
راستش بنده قبلاً جهت تغییر زبان سیستم در برنامه هام از روش خاصی استفاده نکرده بودم و بقول شما تغییر زبان رو واگذار کرده بودم به خود کاربر . تا اینکه این تاپیک رو دیدم و همینطوری این روش ( نمایش پیام تغییر زبان) به ذهنم خطور کرد و اون رو در محیط وی بی و در فایل لودر برنامه ام که بصورت فایل اجرائیست ایجاد و اضافه کردم .
در تائید فرمایش شما میشد از کدهای این فایل در خود برنامه اکسس استفاده کرد و دیگه نیازی به دستور اجرای یک فایل خارجی در کنار برنامه نباشه منتها واقعیتش دیگه حوصله نداشتم اینکار رو در برنامه اکسس انجام بدم
البته دنبال کد خاصی هستم که تغییر زبان رو در فایل ستاپ برنامه انجام بده تا دیگه نیازی به تغییر کدهای مربوط به پیام های فارسی برنامه یا نمایش پنجره پیام تغییر زبان نباشه
mazoolagh
یک شنبه 18 شهریور 1403, 20:30 عصر
درود و سلام خدمت مازولاق عزیز !
راستش بنده قبلاً جهت تغییر زبان سیستم در برنامه هام از روش خاصی استفاده نکرده بودم و بقول شما تغییر زبان رو واگذار کرده بودم به خود کاربر . تا اینکه این تاپیک رو دیدم و همینطوری این روش ( نمایش پیام تغییر زبان) به ذهنم خطور کرد و اون رو در محیط وی بی و در فایل لودر برنامه ام که بصورت فایل اجرائیست ایجاد و اضافه کردم .
در تائید فرمایش شما میشد از کدهای این فایل در خود برنامه اکسس استفاده کرد و دیگه نیازی به دستور اجرای یک فایل خارجی در کنار برنامه نباشه منتها واقعیتش دیگه حوصله نداشتم اینکار رو در برنامه اکسس انجام بدم
البته دنبال کد خاصی هستم که تغییر زبان رو در فایل ستاپ برنامه انجام بده تا دیگه نیازی به تغییر کدهای مربوط به پیام های فارسی برنامه یا نمایش پنجره پیام تغییر زبان نباشه
سلام گرم خدمت جناب بهرامی گرامی
زیاد پیش میاد افرادی که مثل جنابعالی سابقه زیادی دارن و تخصص و مهارت خوبی بدست آوردن،
گاهی از تفنگ فیل کشی برای کشتن پشه استفاده میکنن و این بخاطر دیدشون نسبت به مسائل هست.
برای من هم پیش میاد ولی اون دلیلش دیمنشا هست!
از دید من در حدی که مدنظر جناب ardata بوده با همون روش پست 2 مقصود حاصل شده،
البته اگر از اینستالر استفاده میکنین که خب همونجا هم میشه - ولی همچنان داستان فیل و پشه است (بابت وقت و انرژی نسبت به نتیجه)
سایه عالی مستدام که بودنتون برکت هست.
mazoolagh
یک شنبه 18 شهریور 1403, 20:45 عصر
سلام جناب mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh) گرامی !
روز شما هم خوش!
....
سلام دوباره
دیدگاه من و شما نسبت به این قضیه متفاوت و واگرا هست و در محل نزاع توافق نظر نیست،
بنابراین چیزی نیست که با بحث و استدلال تغییر کنه،
و قرار هم نیست که یکی دیگری رو قانع کنه (دست کم من چنین قصدی ندارم).
لطفا بگذارید در همینجا ختم کلام رو اعلام کنیم.
برای شما آرزوی موفقیت دارم
atf1379
دوشنبه 19 شهریور 1403, 06:52 صبح
لذا بنده بخاطر مشاهده چنین حالتی به این نتیجه رسیدم که تابع استارتر محترم نمیتواند مفید باشد چرا که :
1- در قسمت کد نویسی متن فارسی علاوه بر مسیج باکس ها ممکن است بر اساس نیاز در قسمت های دیگر برنامه هم بکار رود (مثل نمونه ضمیمه)
2- وقتی زبان سیستم غیر از فارسی انتخاب شده باشد حروف فارسی به حروف ناخوانای دیگری تبدیل میشود . لذا در چنین حالتی کدی که استارتر محترم نوشته اند چه کمکی برای نشان دادن صحیح حروف فارسی میتواند بکند ؟ در کدی که ایشان بکار برده اند با استفاده از ansi ابتدا کد حروف فارسی استخراج و سپس با استفاده از unicode آن کدها به حروف فارسی تبدیل میشود , حالا سوال و ابهامی که در اینجا مطرح است این است که وقتی حروف فارسی به حروف ناخوانا تبدیل میشود آیا باز هم ansi قادر به تشخیص کد فارسی میشود که در نهایت توسط unicode به حروف فارسی تبدیل گردد ؟ این سوال را در همان پست 6 هم بطور واضح مطرح کردم ولی پاسخی به آن داده نشد. ( شاید هم در این حالت تابع فوق جواب بدهد و بنده نتوانستم بصورت صحیح از آن استفاده کنم)
سلام دوباره
دیدگاه من و شما نسبت به این قضیه متفاوت و واگرا هست و در محل نزاع توافق نظر نیست،
بنابراین چیزی نیست که با بحث و استدلال تغییر کنه،
و قرار هم نیست که یکی دیگری رو قانع کنه (دست کم من چنین قصدی ندارم).
لطفا بگذارید در همینجا ختم کلام رو اعلام کنیم.
برای شما آرزوی موفقیت دارم
حالا که جناب mazoolagh گرامی تمایلی به پاسخ سوال و ابهامی که برای بنده در خصوص نحوه یونیکد کردن حروف ناخوانی فارسی(با عنایت به توضیحات واضح و شفاف پست 13) ایجاد شده ندارند امیدوارم دوستان دیگر لطف کنن در ارتباط بااین موضوع راهنمائی لازم بفرمایند .
با تشکر
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.