PDA

View Full Version : مشکل با نمایش فارسی و انگلیسی کنار هم



lord_viper
چهارشنبه 02 آذر 1390, 16:39 عصر
با سلام

من تو باید یک مقداری رو تو گرید ویو نشون بدم که ترکیبی از فارسی و انگلیسی هست مثل این
955 /0824092 451 ش 1380
عددی مثل 1380 همیشه در انتها وجود داره ولی به خاطر وجود حرف فارسی ش یا حرف دیگه فارسی به صورت زیر به نمایش درمیاد

955 /0824092 1380 451 ش
ایا راهی یا تنظیمی برای نمایش درست این مشکل وجو داره؟
من از delphi xe2 بدون اپدیت1-2 استفاده میکنم
(احساس میکنم مشل از چیز دیگس تو sql server هم که میخواهم این اطلاعات رو ببینم وقتی کوئری میزنم همین مشکل رو داره)

vcldeveloper
چهارشنبه 02 آذر 1390, 22:55 عصر
با چه کدی این داده رو به اون کنترل میدید؟ این مشکل به خاطر فقدان پشتیبانی درست از Bi-Directional Text هست. وقتی در یک متن داده های راست به چپ و چپ به راست با هم نمایش داده میشند، از یکسری کارکترهای کنترلی برای مشخص کردن جهت خوانده شدن متن استفاده میشه تا هر دو متن به درستی نمایش داده بشند. الان کد یونیکد کارکترهای مربوط به راست به چپ و چپ به راست یادم نیست، ولی باید بتونید با یک جستجوی ساده در اینترنت پیداشون کنید.

lord_viper
پنج شنبه 03 آذر 1390, 08:30 صبح
dbgrid به adoQuery متصل هست و یه سلکت ساده میزنم و اطلاعات رو تو dbgrid نمایش میدهم
دیتابیس رو به من دادن که روش کار کنم خودم ایجاد نکردم
در برنامه قبلی نویسندش میومد مقادیر 3 ادیت رو با 5 تا space بینش با هم جمع میکرد و درون این فیلد میریخت

vcldeveloper
پنج شنبه 03 آذر 1390, 15:16 عصر
dbgrid به adoQuery متصل هست و یه سلکت ساده میزنم و اطلاعات رو تو dbgrid نمایش میدهم
DBGrid اگر خصوصیت BiDiMode اش بر روی RightToLeft تنظیم شده باشه، باید متن های این چنینی را درست نمایش بده. اون اعداد باید حتما انگلیسی باشند؟ در حالت عادی اعداد با توجه به Context شان به صورت فارسی یا لاتین رسم میشند، و در همچین حالتی، DBGrid متن را به درستی نمایش میده.

gbg
دوشنبه 07 آذر 1390, 14:15 عصر
منم این مشکل رو داشتم ولی چون زیاد حاد نموده تا حالا دنبالش نرفتم
ولی بهتره یه راحی پیدا کرد براش

az-navaei
شنبه 30 فروردین 1393, 18:57 عصر
کد کاراکتر چپ به راست که با نام LRM شناخته می شود در یونیکد 200E است و در اسکی 253.
کد کاراکتر راست به چپ که با نام RLM شناخته می شود در یونیکد 200F است و در اسکی 254.
به طور مثال

Edit1.BiDiMode:=bdlRightToLeft;
Edit1.Text:=CHR(253) +'6403/2-r جمله فارسی ';

اگر بخواهید از کد یونیکد هم استفاده کنید از (widechar($200E استفاده می کنید

مرد مباح
چهارشنبه 03 اردیبهشت 1393, 03:35 صبح
ممنون از توضیح شما.
آیا این کد همیشه جواب میده؟
من توی یک بخش از DevExpress اینو امتحان کردم (هم #254 و هم widechar($200f) رو) و جواب نداد. فکر کنم باید قابلیت RTL توی کامپوننت مادر تعریف شده یاشه تا بشه از این کدها استفاده کرد. درسته؟
اگر نه کمی توضیح بدین تا بتونم خودم رو اصلاح کنم.