View Full Version : مشکل نمایش ایتمهای ComboBox در حالت راست به چپ
  
hamed1308
پنج شنبه 09 تیر 1401, 13:59 عصر
با سلام و ادب
دوستان وقتی از ComboBox دلفی استفاده میکنم در زمان راست به چپ کردن وقتی Style  را csOwnerDrawFixed انتخاب میکنم ComboBox  در نمایش اطلاعات از راست به چپ دچار مشکل میشه لطفا راهنمایی کنید ممنون
153879
mbshareat
پنج شنبه 09 تیر 1401, 18:28 عصر
سلام و احترام
ببینید این کد به درد میخوره؟
procedure SetWinControlBiDi(Control: TWinControl);
var
 ExStyle: Longint;
const
 WS_EX_NOINHERITLAYOUT = $00100000; // Disable inheritence of mirroring by children
 WS_EX_LAYOUTRTL = $00400000; // Right to left mirroring
begin
 ExStyle := GetWindowLong(Control.Handle, GWL_EXSTYLE);
 SetWindowLong(Control.Handle, GWL_EXSTYLE, ExStyle or WS_EX_RTLREADING or WS_EX_RIGHT
   or WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT );
end;
hamed1308
جمعه 10 تیر 1401, 00:09 صبح
ممنون از توجه شما دوست عزیز
نه این کد هم همچنان همون مشکل را دارد فقط کاری که انجام میشه دکمه باز کننده ComboBox را به سمت راست منتقل میکنه
153880
mbshareat
جمعه 10 تیر 1401, 00:18 صبح
csOwnerDrawFixed برای این هست که خودتون متن داخلش رو بنویسید. من خودم هم در برنامه ام از یه لیست باکس برای نمایش متن فارسی استفاده میکنم. باید طول متن رو با Canvas.TextWidth به دست بیارید و از Rect.Right کم کنید و با TextOut بنویسید.. البته اگر متن شما حاوی فاصله در راست یا چپ، باشه در مواردی مشکلاتی پیش میاد. در برنامه خودم، کلمات رو یکی یکی می نویسم.(در برنامه من، همه متن فارسی یا ترکیب فارسی و انگلیسی نیست و حتی شکل هم هست(قلم داس!))
اما نمی دونم چرا نیاز دارید خودتون متن رو بنویسید؟
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.