![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Иконки в ListBox
Nver © (2006-05-25 12:43:00)Можно ли сделать иконки около строк в ListBox? Если нет, то чем тогда можно воспользоваться?
Amoeba (2006-05-25 13:22:00) [1]Лучше битмапы заранее поместить в ImageList, а не грузить каждый раз из файлов, и брать уже из оттуда.
unknown (2006-05-25 13:21:00) [2]Хотя, в принципе, без отступа красивее получается :)
Nver (2006-05-25 13:21:00) [3]Спасибо =)
unknown (2006-05-25 13:19:00) [4]Можно. Это достаточно просто, вот к примеру :
const
Step:byte=2; // Для красивости понадобится отступ
BmpSize:byte=16; // возьмем bmp размером 16x16
var
Form1: TForm1;
Bmp1,Bmp2:Graphics.TBitMap;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Bmp1:=Graphics.TBitMap.Create;
Bmp2:=Graphics.TBitMap.Create;
Bmp1.LoadFromFile('c:\bmp1.bmp');
Bmp2.LoadFromFile('c:\bmp2.bmp');
with ListBox1 do
begin
Style:=lbOwnerDrawFixed;
Items.Text:='aaa'#13#10'bывапи ывап ывыавп ывап bb'#13#10'cывап ыавпыв ы cc'#13#10'ddd'#13#10'eee';
end;
end;
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with ListBox1.Canvas do
begin
FillRect(Rect);
if (Index mod 2)=0 then
Draw(Rect.Left+Step,Rect.Top+Step,Bmp1)
else
Draw(Rect.Left+Step,Rect.Top+Step,Bmp2);
Rect.Left:=Rect.Left+Step+BmpSize;
DrawText(Handle,PAnsiChar(ListBox1.Items[Index]),-1,Rect,DT_WORD_ELLIPSIS);
end;
end;