Rysowanie Itemów ListBoxu

0

Hm mam dziwny problem :))) hehe

procedure TForm1.ListCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
Sender.Canvas.Draw(20, 20, Im[Item.Index]);
end;

W Tabeli tej są ikonki TGraphic i do każdej pozycji ma mi dodać ikonkę tylko tyle że wcale mi jej nie rysuje tzn. rysuje ale tylko wtedy jak przeciągne scroolbarem listview w dół (i też nie na każdej pozycji), a i tak jak na nie nacisnę jakąś pozycję to ikonka znika..
Może ktoś wie co mam zrobić może wsadzić do w inną procedurę albo jeszcze coś innego...

Z góry dzięki {browar} {browar} :-) --Delphi 6; Pozdrawiam eSka :-)

0

Też się kiedyś nad tym zastanawiałem i w końcu wyszło mi tak :

const max=10;

device_class=object
name:string[20];
picture:tbitmap;
end;

var
MainForm: TMainForm;
device:array[1..max]of device_class;
max_device:byte;

procedure TMainForm.FormCreate(Sender: TObject);
var licznik:byte;
begin
devices.ItemHeight:=32;
devices.Font.Size:=16;

for licznik:=0 to max do
begin
device[licznik].name := jakas tabela z nazwami
device[licznik].picture:=tbitmap.create;
device[licznik].picture.LoadFromFile(jakaś nazwa bmp);
devices.Items.AddObject(device[licznik].name, device[licznik].picture) ;
end;
end;

procedure TMainForm.DevicesDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var Bit: TBitmap;
begin
Bit:= TBitmap((Control as TListBox).Items.Objects[Index]);
// rysujemy element
with devices.Canvas do
begin
FillRect(Rect);
Draw(1, Index * devices.ItemHeight, Bit);
TextOut(Bit.Width + 6, index*devices.ItemHeight, (Control as TListBox).Items[Index]);
end;
end;

Mogłem o czymś zapomnieć, bo wycinałem ten fragmen z programu. Ale też to nie chodzi najlepiej bo przy scrolowaniu coś nie zawsze dobrze rysuje

POZdroWieNIa--POzdrOWieNIa

0

dzieki --Delphi 6; Pozdrawiam eSka :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1