PDA

View Full Version : راست چین کردن Listview



jst
چهارشنبه 28 مرداد 1394, 00:34 صبح
به لطف دوستان تقریبا همه مشکلات و موتنع جهت تولید نرم افزار فارسی فراهم شده بجز نمایش listview به صورت راست چین . آیا دوستان راهکاری پیشنهاد می کنند ؟

golbafan
چهارشنبه 28 مرداد 1394, 08:20 صبح
سلام از لیست ویو های سایر کامپوننت ها استفاده کنید

مثلا از کامپوننت های jvcl یا tms

jst
چهارشنبه 28 مرداد 1394, 11:13 صبح
اینها هم راست چین ندارند . یا شایدم من پکیج اشتباهی دانلود کردم

BORHAN TEC
چهارشنبه 28 مرداد 1394, 19:01 عصر
من متوجه نیستم که در برنامه vcl میخواهید لیست ویو رو راست به چپ کنید یا در FMX !!!
ولی اگه قصدتون اینه که ListView رو توی VCL راست به چپ کنید باید از روال زیر استفاده کنید. این روال کاملاً تست شده و جواب میده:
procedure TForm1.SetRightToLeftListView(lv: TListView);const
LVM_FIRST = $1000; // ListView messages
LVM_GETHEADER = LVM_FIRST + 31;
var
header: thandle;
begin
header := SendMessage(lv.Handle, LVM_GETHEADER, 0, 0);
SetWindowLong(header, GWL_EXSTYLE, GetWindowLong(header, GWL_EXSTYLE) or
WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);


SetWindowLong(lv.Handle, GWL_EXSTYLE, GetWindowLong(lv.Handle, GWL_EXSTYLE) or
WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);
lv.invalidate;


lv.Width := lv.Width +1;
lv.Width := lv.Width -1;
end;

jst
چهارشنبه 28 مرداد 1394, 22:25 عصر
ضمن تشکر در FMX می خوام راست چین بشه

Mask
یک شنبه 01 شهریور 1394, 16:20 عصر
البته من خودم هم مشکل دارم .اما یه سری به کامپوننتهای TMS که برای فای مانکی داده بزن ببین چطوره قضیه و اعلام کن.

jst
دوشنبه 02 شهریور 1394, 00:39 صبح
اتفاقا نصبش کردم یه ابزاری بنام table view داره که نتونستم باهاش کارکنم و البته که راست چین نداشت .

BORHAN TEC
چهارشنبه 04 شهریور 1394, 14:05 عصر
البته من خودم هم مشکل دارم .اما یه سری به کامپوننتهای TMS که برای فای مانکی داده بزن ببین چطوره قضیه و اعلام کن.
هیچ فرقی نمیکنه. مادامی که خود FMX به صورت ذاتی bidi mode نداره هیچ شرکتی نمیاد کامپوننتهایی بسازه که از این ویژگی پشتیبانی کنه. مطلبی مثل این حرفی که زدم رو در نوشته های تیم tms هم دیده بودم.

یوسف زالی
چهارشنبه 04 شهریور 1394, 14:20 عصر
شاهین جان باهات موافق نیستم،
می تونی کامپوننت هایی با قابلیت BiDiMode بسازی.
منتها برای شرکت سازنده توجیه اقتصادی نداره.
البته اگر FMX این قابلیت رو داشت، خیلی بهتر بود، اما با توجه به این که سورس اون موجوده، می شه با جایگزین کردن یونیت مربوط به کلاس های زیربنایی، مثل TControl و یا یکم پایین تر مثل TCustomEdit این قابلیت رو بهش اضافه کرد. منتها کار زیادی می طلبه و فکر می کنم شرکت ها به این دلیل راغب نیستند که خود Embarcadero احتمالا پلن چنین چیزی رو داره و نمی خوان کار تکراری و البته با هزینه زیاد و سود کم انجام بدند.

BORHAN TEC
چهارشنبه 04 شهریور 1394, 14:27 عصر
حاج یوسف، من نگفتم که نمیشه، گفتم که شرکتی نمیاد این کار رو بکنه(بنا به همون دلایلی که گفتی) مگر اینکه خود FMX به صورت ذاتی بیاد و این قابلیت رو اضافه کنه تا بقیه شرکتها هم بیاد کامپوننتهایی با پشتیبانی از راست به چپ بسازند. تا الان فکر میکنم که بالای 20 بار از آقای مارکو کانتو این موضوع رو پرسیدم و ایشون میگن که این موضوع جزو مهمترین موضوعات در نقشه راه ماست ولی انجامش پیچیده و زمانبر هست. به نظر بنده احتمال اینکه شرکتی بیاد و این کار رو در حال حاضر انجام بده زیر یک درصده!!!

D-graphics programmer
سه شنبه 10 شهریور 1394, 02:07 صبح
procedure TForm1.Button1Click(Sender: TObject);
var
item:tlistboxitem;
i:byte;
begin
//right to left
for i := 0 to 3 do
begin
item:=tlistboxitem.Create(self);
item.StyledSettings := item.StyledSettings - [TStyledSetting.ssOther];
item.TextSettings.HorzAlign:=TTextAlign.Trailing;
item.Text:=FormatFloat('Right : 0#',i);
listbox1.AddObject(item);
end;
//center
for i := 0 to 3 do
begin
item:=tlistboxitem.Create(self);
item.StyledSettings := item.StyledSettings - [TStyledSetting.ssOther];
item.TextSettings.HorzAlign:=TTextAlign.Center;
item.Text:=FormatFloat('Center : 0#',i);
listbox1.AddObject(item);
end;
//left to right
for i := 0 to 3 do
begin
item:=tlistboxitem.Create(self);
item.StyledSettings := item.StyledSettings - [TStyledSetting.ssOther];
item.TextSettings.HorzAlign:=TTextAlign.Leading;
item.Text:=FormatFloat('Left : 0#',i);
listbox1.AddObject(item);
end;
end;

D-graphics programmer
سه شنبه 10 شهریور 1394, 02:19 صبح
البته در ListView می تونی تو پروپرتی هاش ست بکنی
چپ ...... راست...... وسط

Object inspector > itemObjects > Text > TextAlign [Center , Trailing , Leading ]

پست قبلی برای ListBox بود