Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Рисование картинок в TListBox

Delphi , Компоненты и Классы , Списки

Рисование картинок в TListBox

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ Create a TImage on your Formular and assign a bitmap }
 { Create a TListbox on your Formular }

 type
   TForm1 = class(TForm)
     ListBox1: TListBox;
     Image1: TImage;
     procedure FormCreate(Sender: TObject);
     procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
       Rect: TRect; State: TOwnerDrawState);
     procedure ListBox1MeasureItem(Control: TWinControl; Index: Integer;
       var Height: Integer);
   private
     {...}
   public
     {...}
   end;

 procedure TForm1.FormCreate(Sender: TObject);
 begin
   with ListBox1.Items do
   begin
     Clear;
     ListBox1.Style := lbOwnerDrawVariable;
     AddObject('Bitmap1', Image1.Picture.Bitmap);
     AddObject('Bitmap2', Image2.Picture.Bitmap);
     AddObject('Bitmap3', Image3.Picture.Bitmap);
   end;
 end;

 procedure CenterText(Cnv: TCanvas; Rect: TRect; S: string);
 var
    X, Y: Integer;
 begin
   X := (Rect.Right + Rect.Left - Cnv.TextWidth(S)) div 2;
   Y := (Rect.Bottom + Rect.Top - Cnv.TextHeight(S)) div 2;
   Cnv.TextOut(X, Y, S);
 end;

 procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
   Rect: TRect; State: TOwnerDrawState);
 var
    Bitmap: TBitmap;
 begin
   with ListBox1 do
   begin
     Canvas.FillRect(Rect);
     if Items.Objects[Index] <> nil then
     begin
       Bitmap := Items.Objects[Index] as TBitmap;
       Canvas.BrushCopy(Bounds(Rect.Left + 2, Rect.Top + 2,
         Bitmap.Width, Bitmap.Height), Bitmap, Bounds(0, 0, Bitmap.Width,
         Bitmap.Height), Bitmap.Canvas.Pixels[0, Bitmap.Height - 1]);
     end;
     Rect.Left   := Rect.Left + Bitmap.Width + 4;
     Rect.Bottom := Rect.Top + Bitmap.Height + 4;
     CenterText(Canvas, Rect, Items.Strings[Index]);
   end;
 end;

 procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
   var Height: Integer);
 begin
   if Index = 0 then Height := Image1.Height + 4;
 end;

Статья Рисование картинок в TListBox раздела Компоненты и Классы Списки может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Списки ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
28.03.2024 21:00:12/0.059691905975342/2