PDA

View Full Version : مشکل با راست به چپ در Dbgrid



delphiprog3000
دوشنبه 29 مهر 1387, 10:26 صبح
با سلام به دوستان و اساتید محترم.

اخیرا با راست به چپ دیبیگرید به مشکل برخوردم. بدین صورت که ما یک کد را به این صورت 12-22 در دیتابیس ذخیره میکنیم.

اما در هنگام نمایش برعکس آن را نمایش میدهد. ولی هنگام جستجو با همان حالت قبل نتیجه جستجو را میاورد. اما برای نمایش در Dbgrid به همان صورت برعکس میباشد.


با تشکر.............

ghabil
سه شنبه 30 مهر 1387, 11:36 صبح
اینو بزار توی OnGetText فیلدت ، اگر هم توضیح بیشتر خواستی RTL و LTR Force رو اینجا سرچ کن:



Text := Char(253) + Sender.AsString;


تگ رو هم Edit کن از Write - > Right

delphiprog3000
سه شنبه 30 مهر 1387, 18:05 عصر
با سلام و تشکر از پاسخ شما.

اگه امکان داره در این رابطه یه توضیح مختصر نیز بدهید.

با تشکر................

ghabil
جمعه 03 آبان 1387, 02:31 صبح
سیستم خواندن و نوشتن دو جهته در ویندوز به این شکل هست که ویندوز حروف خودشون نشون میدهند که باید از راست نمایش داده بشند یا از چپ، یعنی وقتی که شما یک حرف فارسی رو مینویسید طبیعا ویندور میفهمه که جهت نمایش از راست هست و وقتی یک حرف انگلیسی میفهمه که جهت نمایش از چپ ، اما برخی حروف هستند که جهت خاصی ندارند و جهتشون از روی حروف قبیشون تعیین میشه ، که - (دش) هم از همین دسته هستند پس وقتی شما در یک محیطی که حرف قبلیش فارسی هست یا حهتش راست به چپ مینویسید 12 دش 22 همینطوری که اینجا هم میبینید ابتدا 12 از چپ به راست نوشته میشه بعد چون جهت نوشته راست به چپ هست دش فارسی در نظر گرفته میشه و در سمت چپ نوشته میاد و بعد 22 .
اما شما همیشه میتونید با استفاده از Forceهای (Left To Right(LTR و RTL جهت پروسس نوشته رو عوض کنید ، کاری که اینجا ما کردیم....
امیدوارم با اینکه توضیحم مختصر بود ولی مفید بوده باشه...

کد انسی LTF FORCE = 253 و RTL Force = 254

smakhavan
پنج شنبه 05 دی 1387, 08:39 صبح
سلام من اين كار را انجام دادم ولي اون كاراكتري را هم كه اضافه كردم نشون ميده!! مشكل از كجاست؟

delphiprog3000
پنج شنبه 05 دی 1387, 12:16 عصر
سلام من اين كار را انجام دادم ولي اون كاراكتري را هم كه اضافه كردم نشون ميده!! مشكل از كجاست؟

سلام دوست من. مشکل بنده با این روش حل شده. بنده به این صورت کد پروژه ها را به صورت یک عدد به همراه سال آن بدین صورت: 1200/86 , 1300/87

باید کارکتر وسط مشخص باشه. حال مشکل شما به چه صورت؟

موفق باشید............

ghabil
جمعه 06 دی 1387, 04:10 صبح
تو چرا محیطت یونکده مگه تو دلفی کار نمیکنی؟! یا داری از کامپونت یونیکد استفاده میکنی؟

vcldeveloper
جمعه 06 دی 1387, 17:40 عصر
تو چرا محیطت یونکده مگه تو دلفی کار نمیکنی؟! یا داری از کامپونت یونیکد استفاده میکنی؟
دیگه این روزا با دلفی 2009 کی از کامپوننت یونیکد استفاده می کنه؟! ;-)

smakhavan
شنبه 07 دی 1387, 19:21 عصر
سلام من به طور جدي تصميم گرفتم كه از 2009 استفاده كنم
حالا مشكل من را كسي جواب نداد چكار كنم من ميخوام 12-34-56789 را به همون صورتي كه 123456789 و با خط تيره نمايش بدم. چكار كنم؟

ghabil
شنبه 07 دی 1387, 20:10 عصر
خوب دیگه باید Force یونیکدی بزاری : چون نمیدونم دقیقا دلفی چجوری یونیکد شده اینطوری کار کن:

یک NotePad باز کن ، توش right Click کن بعد Insert Unicode...>Right to left mark رو انتخاب کن ، بعد چیزی رو که بهت داد (که قابل دیدن نیست ولی قابل انتخاب و کپی کردن هست) رو بردار ببر او دلفی و توی کد بالا بجای Char(253) بزارش (طبیعطا توی کوتیشن)

vcldeveloper
شنبه 07 دی 1387, 23:45 عصر
نمیدونم دقیقا دلفی چجوری یونیکد شده
از ویندوز تبعیت کرده و از UTF-16 استفاده میکنه. برای این کار هم یک Type جدید با نام UnicodeString ایجاد کرده، و String را به آن Map کرده. این نوع جدید مثل WideString نیست، و تمام قابلیت های string در نسخه های گذشته را داره. AnsiString هم که در نسخه های قبلی برابر String بود، یک تغییر در ساختار داخلی خودش داشته، و الان میتونی بهش Code Page بدی. از UTF-8 هم در AnsiString پشتیبانی میشه.
یک StringBuilder هم مثل دات نت بهش اضافه شده. یک کلاس TCharacter هم اضافه شده که انواع اقسام مقایسه ها روی رشته های یونیکد، و تبدیل ها را میشه باهاش انجام داد.
تمام API ویندوز که نسخه یونیکد دارند، الان از نسخه یونیکدشان بجای نسخه ANSI استفاده میشه.

کلا، اگه وقت کردی، Delphi 2009 Handbook را بخوان. اگه حال نداری 400 صفحه درباره دلفی بخونی، اون مقاله 20 صفحه ایی در بخش مقالات (خلاصه مبحث یونیکد در دلفی 2009 از همین کتاب مارکو کانتو) را بخوان، ضرر نمیکنی ;-)

smakhavan
دوشنبه 16 دی 1387, 11:06 صبح
سلام من اين كار را انجام دادم ولي اون كاراكتري را هم كه اضافه كردم نشون ميده!! مشكل از كجاست؟

متاسفانه من هنوز نتونستم جوابم را بگيرم

ghabil
دوشنبه 16 دی 1387, 18:36 عصر
دقیقا چی کار کردی ؟ کاری که من گفتم رو انجام دادی و جهت درست نشد؟!!

smakhavan
پنج شنبه 19 دی 1387, 09:20 صبح
عكسش را كه گذاشتم كه! مقدار اون را نشون ميده
http://barnamenevis.org/forum/showpost.php?p=655229&postcount=5

rezazd
یک شنبه 22 دی 1387, 13:02 عصر
در کنترل پانل قسمت تنظیمات سفارشی زبان حالتهای کانتکست ناشیونال و ... امتحان کنید
خوب با هرکدام برنامه تون درست بود هنگام اجرای برنامه کانتکست رو به حالت درست تغییر بدهید این تغیر فقط در حیطه برنامه شما وجود دارد و تنظیم کلی ویندوز رو بهم نمیزند
هلپ دلفی هفت مثالهای خوبی داره

ghabil
دوشنبه 23 دی 1387, 06:06 صبح
تو اون روشی که گفتم از توی نوت پد کد RTL رو کپی کنی رو تست کردی و اینجوری شد؟