PDA

View Full Version : سوال: draw item در tlistbox



lord_viper
یک شنبه 02 تیر 1387, 23:34 عصر
با سلام
من یه کامپوننت کوچیک دارم مینویسم که که یک سری قابلیتهایی که میخواهم رو به listbox اضافه میکنه 2 تا مشکل دارم تابع drowitem رو override کردم تا بتونم برای item های listbox عکس قرار بدم همین کد رو تو رویداد مورد نظر روی فورم مینویسم اجرا میشه ولی تو component عمل نمیکنه
[code]
procedure tlvplistbox.DrawItem( Index: Integer;Rect: TRect; State:
TOwnerDrawState);
begin
canvas.Brush.Color:=fcl;
if odselected in state then
canvas.Brush.Color:=fcolor;
if odHotLight in state then
canvas.Brush.Color:=fcl;
canvas.FillRect(rect);
if not(imagelist=nil)then
begin
imagelist.Draw(canvas,rect.Left,rect.Top,index);
canvas.TextOut(20,rect.Top,items[index]);
end;
inherited;
end;
[code/]
2 وقتی میخواهم از tbitmap استفاده کنم میگه کلاسparent اون windows هست و شما باید از tag bitmap استفاده کنین ونمیتونم یک نمونه از bitmap رو create کنم
با تشکر

babak_delphi
دوشنبه 03 تیر 1387, 00:34 صبح
1 - در کدِ کامپوننت اولش بنویس inherited
2 - من این رو نوشتم و ایراد هم نگرفت



var
b : TBitmap;
begin
b := TBitmap.Create;
end;

lord_viper
دوشنبه 03 تیر 1387, 08:51 صبح
با تغییر inherited مشکل حل شد.
اگه windows رو uses نکنین ایراد نمیگیره
چون trect از توابع windows هست باید اونو توی unit مربوط به component استفاده کنم

rezamahdizadeh
دوشنبه 10 تیر 1387, 08:08 صبح
اگر بخواهيم كل يك ListBox را شكلش را تغيير دهيم بايد كدام تابع را override كرد؟

vcldeveloper
سه شنبه 11 تیر 1387, 02:53 صبح
اگر بخواهيم كل يك ListBox را شكلش را تغيير دهيم بايد كدام تابع را override كرد؟
متد Paint آن