리스트박스에 항목이 추가 될때마다 그 항목의 앞머리에 아이콘을 부여해주고 싶거든여..
부탁드립니당..
제가 해본것은
listbox1.Items.Add('아이콘 나와라!');
listbox1.items.Objects[0] := TBitmap.Create;
listbox1.Items.Objects[0] := image1.picture.Bitmap;
이미지 컴포넌트에 제가쓸 이미지를 로더시켜 놓구여..
위와 같이 불러봤는데 불러지질 않네여...
리스트 박스트이 style은 lbOwnerDrawFixed 으로 놓구 했거덩여..
답변 기다리겠습니당..^^ 좋은 하루들 되세요...
ListBox의 DrawItem이벤트에 아래것을 추가해보세요
procedure TForm1.Button2Click(Sender: TObject);
var
i : integer;
begin
i := listbox1.Items.Add('아이콘 나와라!');
listbox1.items.Objects[i] := TBitmap.Create;
listbox1.Items.Objects[i] := image1.picture.Bitmap;
end;
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
Bitmap: TBitmap; { temporary variable for the item뭩 bitmap }
Offset: Integer; { text offset width }
begin
with (Control as TListBox).Canvas do { draw on control canvas, not on the form }
begin
FillRect(Rect); { clear the rectangle }
Offset := 2; { provide default offset }
Bitmap := TBitmap((Control as TListBox).Items.Objects[Index]); { get the bitmap }
if Bitmap <> nil then begin
BrushCopy(Bounds(Rect.Left + Offset, Rect.Top, Bitmap.Width, Bitmap.Height),
Bitmap, Bounds(0, 0, Bitmap.Width, Bitmap.Height), clRed); {render bitmap}
Offset := Bitmap.width + 6; { add four pixels between bitmap and text}
end;
TextOut(Rect.Left + Offset, Rect.Top, (Control as TListBox).Items[Index]) { display the text }
end;
end;
hsr/////////////////////////////////////