PDA

View Full Version : مشکل راست به چپ پروژه در دلفی 2009



جواد ملاولی
شنبه 07 شهریور 1388, 00:00 صبح
سلام رفقا،
برای راست به چپ کردن پیغامهای برنامه در Delphi 2009، از عبارت
Application.BidiMode := bdRightToLeft استفاده می کنم. این کد در ویندوز ویستا درست عمل می کنه ولی در ویندوز XP درست نیست. مشکل از کجاست؟
ضمناً ویندوز xp من سرویس پک 3 است.
این عکس رو هم ببینید.

جواد ملاولی
شنبه 07 شهریور 1388, 18:07 عصر
از رفقا کسی نمی تونه کمک کنه؟

K.Mohammadreza
شنبه 07 شهریور 1388, 20:09 عصر
اصلا نيازي به اين کار نيست شما نبايد کد بالا را استفاده کنيد بلکه بايد فرم ها و کنترلهاي آنها را راست به چپ کنيد و. نيازي به کد بالا وجود ندارد مگر در صورت استفاده از اسکاين

جواد ملاولی
یک شنبه 08 شهریور 1388, 00:06 صبح
اصلا نيازي به اين کار نيست شما نبايد کد بالا را استفاده کنيد بلکه بايد فرم ها و کنترلهاي آنها را راست به چپ کنيد و. نيازي به کد بالا وجود ندارد مگر در صورت استفاده از اسکاين

سلام دوست عزیز. ممنون از توجهت. نکته ای که هست اینه که اون عکسی رو که گذاشتم فرم نیست بلکه همون دستور پیغامه (MessageDlg). من در دلفی 7 همین کار رو کردم و مشکلی نداره. همون طور که در بالا گفتم دلفی 2009 هم در ویستا با این کار مشکل نداره ولی در ایکس پی اذیت می کنه. نمی دونم دلیلش چیه؟

vcldeveloper
یک شنبه 08 شهریور 1388, 03:01 صبح
من در دلفی 7 همین کار رو کردم و مشکلی نداره.
دلفی 7 هم همین مشکل را داره. دلفی 7 فقط یک نوع فرم برای MessageDlg میسازه. دلفی 2009 دو نوع فرم میسازه، یکی در صورتی که ویندوز ویستا یا بالاتر باشه، و Theme هم فعال باشه، یکی برای حالتی که Theme فعال نیست، یا ویندوز قدیمی تر هست.
اون کدی که شما در دلفی 2009 می بینید برای ویستا درست نمایش میده، همون حالت اول هست که در دلفی 7 وجود نداره. کدی که دلفی 2009 و دلفی 7 برای سیستم عامل های قدیمی تر از ویستا استفاده می کنند، مثل هم هست. من یک بررسی مختصر که انجام دادم، حتی محل قرارگیری متن روی فرم را هم مثل هم محاسبه می کنند، و کد تولید شده در هر دوی آنها، مشکلی که شما گفتید رو در ویندوزهای قدیمی داره.

برای برطرف کردن مشکل، می تونید Application.BidiMode را روی bdRightToLeftReadingOnly یا bdRightToLeftNoAlign تنظیم کنید.

جواد ملاولی
یک شنبه 08 شهریور 1388, 07:59 صبح
دلفی 7 هم همین مشکل را داره.
آقای کشاوز ضمن تشکر از شما، قبلا من استفاده کردم؛ مشکل نداره. عکس زیر رو ببینید.


برای برطرف کردن مشکل، می تونید Application.BidiMode را روی bdRightToLeftReadingOnly یا bdRightToLeftNoAlign تنظیم کنید.
در اینصورت کپشن پیغام و همچنین عکس اون در سمت چپ قرار می گیره.

K.Mohammadreza
یک شنبه 08 شهریور 1388, 15:33 عصر
دوست عزيز من که نگفتم شما از فرم ها استفاده کرديد بجاي تابع messagedlg من گفتم دستور application.bidimode := bdrighttoleft را حذف کنيد و ...
دستور بالا باعث نميشه در کادر پيغام عکس پيغام جاش تغيير کنه از گوشه سمت چپ به سمت راست بيايد و چون اين اتفاق نمي افته متن پيغام روي عکس داخل کادر پيغام ميره و خراب نشون داده مي شه

جواد ملاولی
یک شنبه 08 شهریور 1388, 17:20 عصر
دوست عزيز من که نگفتم شما از فرم ها استفاده کرديد بجاي تابع messagedlg من گفتم دستور application.bidimode := bdrighttoleft را حذف کنيد و ...

اگه من بد فمیدم معذرت می خوام.


دستور بالا باعث نميشه در کادر پيغام عکس پيغام جاش تغيير کنه از گوشه سمت چپ به سمت راست بيايد و چون اين اتفاق نمي افته متن پيغام روي عکس داخل کادر پيغام ميره و خراب نشون داده مي شه
چرا ؛ این دستور جای عکس پیغام رو عوض میکنه. عکسی رو که در پست قبلی گذاشتم ببینید.

K.Mohammadreza
یک شنبه 08 شهریور 1388, 19:27 عصر
من واقعا تعجب ميکنم وفتي اون عکس را ديدم. اگر واقعا موفق شديد که چنين کاري را قبلا انجام بديد پيشنهاد ميکنم همان پروژه را مجددا بررسي کنيد و اگر به نتيجه اي رسيديد در همين تاپيک نتايج را قرار بدين.

جواد ملاولی
یک شنبه 08 شهریور 1388, 19:50 عصر
من واقعا تعجب ميکنم وفتي اون عکس را ديدم. اگر واقعا موفق شديد که چنين کاري را قبلا انجام بديد پيشنهاد ميکنم همان پروژه را مجددا بررسي کنيد و اگر به نتيجه اي رسيديد در همين تاپيک نتايج را قرار بدين.
من کار خارق العاده ای نکردم. فقط همون یه خط کد رو که در پست اول گفتم نوشتم.
مشکل اینه که دلفی 2009 در ویندوز xp این کار رو انجام نمیده و اذیت می کنه والا در سایر حالتها درست کارمی کنه.

نمیدونم آقای کشاورز راه حل جدیدی پیدا کرد یا نه؟

vcldeveloper
دوشنبه 09 شهریور 1388, 03:38 صبح
قبلا من استفاده کردم؛ مشکل نداره. عکس زیر رو ببینید.
من با دلفی 7 سرویس پک 1 روی ویستا و XP تست کردم، مشکل داشت. کدهاش رو هم که بررسی کردم، عین کدهای دلفی 2009 بود.


نمیدونم آقای کشاورز راه حل جدیدی پیدا کرد یا نه؟
من دیگه موضوع رو پیگیری نکردم. فرصت نشد.

جواد ملاولی
دوشنبه 09 شهریور 1388, 22:09 عصر
کدهاش رو هم که بررسی کردم، عین کدهای دلفی 2009 بود.

اگه کدهاشون عین همدیگه است، چرا در ویندوز xp سرویس پک 2، دلفی 7 با این قضیه مشکل نداره ولی دلفی 2009 مشکل داره؟


من با دلفی 7 سرویس پک 1 روی ویستا و XP تست کردم، مشکل داشت.
تعجب می کنم که دلفی 7 شما مشکل داشته!؟