PDA

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



cayberfox
یک شنبه 02 تیر 1387, 23:04 عصر
با سلام
من یه کامپوننت کوچیک دارم مینویسم که که یک سری قابلیتهایی که میخواهم رو به 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:04 صبح
1 - در کدِ کامپوننت اولش بنویس inherited
2 - من این رو نوشتم و ایراد هم نگرفت



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

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

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

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