Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Иконки в 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо