PDA

View Full Version : ListBox با آیتمهای چند خطی؟!



mbshareat
چهارشنبه 14 مهر 1389, 17:05 عصر
من نیاز به یه کادر لیست دارم که هر آیتم از اون یک یا چند خط باشه. می دونم می شه نوشتن در
ListBox رو با تنظیم پراپرتی Style برابر lbOwnerDrawFixed به عهده گرفت ولی سه مشکل باقی می مونه:
1. انتخاب چند خطی نیست و کادر انتخاب (چیزی مثل DrawFocusRect) روی یک خط ظاهر می شه!:افسرده:
2.نمی دونم کی باید تعیین کنم یه آیتم انتخاب شده تا طراحی اون رو توی رویداد OnDrawItem انجام بدم.من برای امتحان خواستم پس زمینه رو زرد کنم هم آیتمها زرد شدند. اون هم به محض اجرای برنامه.با این کد::عصبانی:

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
ListBox1.Canvas.Brush.Color:=clYellow;
ListBox1.Canvas.FillRect(Rect);
end;

3.تنظیم نوار لغزنده کنار کادر.:بامزه:
شاید بشه از RichEdit یا Memo هم استفاده کرد ولی هم لغزنده نداند هم انتخاب ندارند.
نمی دونم کامپوننت مخصوص این کار هم طراحی شده یا نه؟(البته من می خوام متن هم چند رنگ و لبه نرم باشه که راهشو هم بلدم و توی RichEdit نمی شه)
کسی راه حلی سراغ نداره؟ که حد اقل دو مشکل اول رو حل کنم؟:لبخندساده:

mbshareat
چهارشنبه 14 مهر 1389, 17:29 عصر
من اینجا (http://www.swissdelphicenter.ch/torry/showcode.php?id=2191) کد کادر کمبوی چند خطی پیدا کردم اما من که کمبو نمی خوام تازه نفهمیدم چطور ازش استفاده کنم.
اگه لطف کنین کدشو برای ListBox با مثال بذارین ممنون می شم!http://www.swissdelphicenter.ch/screenshots/ImageTipp2191.png

Delphi7_love
چهارشنبه 14 مهر 1389, 22:38 عصر
کامپونت Tms این قابلیت رو داره

mbshareat
چهارشنبه 14 مهر 1389, 23:34 عصر
ولی اگه همین کد ساده که در آدرسی که دادم اومده رو به راه کنین هم بیشتر به دردم می خوره.
من تو کادر کمبو تونستم ازش استفاده کنم(گرچه خط آخر رو درست نشون نمی داد ولی روند کا رو متوجه شدم)اما نمی دونم چرا در مورد ListBox مفید نیست و انگار کدی نوشته نشده!!:اشتباه:

mbshareat
پنج شنبه 15 مهر 1389, 01:05 صبح
بالاخره کشف کردم. کد زیر رو به FormCreate اضافه کردم برای کادر لیست هم کار کرد!!!
listbox1.MultiSelect:=true;
listbox1.MultiSelect:=False;
این هم مثل بعضی چیزای عجیب دیگه است:
برای فرار از پرش تصویر می شه از تنظیم Stretch استفاده کرد!
توی Word برای تعدیل جهت پرانتز می شه پرانتز باز رو با باز و بسته رو با خودش جایگزین کرد!
برای Minimize کردن فرم بدون لبه فرم رو مخفی و آشکار کردم و با پروسیجر مرتبط با غیر فعال شدن به نوار وظیفه بردم و الا Application.Minimize; جواب نمی داد!