was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews
 sonstiges ¦  tutorials ¦  Add&Win Gewinnspiel

Tips (1541)

Dateien (137)
Datenbanken (90)
Drucken (35)
Grafik (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Mathematik (76)
Multimedia (45)
Oberfläche (107)
Objekte/
ActiveX (51)

OpenTools API (3)
Sonstiges (126)
Strings (83)
System (266)
VCL (242)

Tips sortiert nach
Komponente


Tip suchen

Tip hinzufügen

Add&Win Gewinnspiel

Werbung

55 Visitors Online


 
...Bitmaps in einer TListBox verwenden?
Autor: Jan 'eGo' Urbansky
Homepage: http://uned.utstation.de/personal
[ Tip ausdrucken ]  

Tip Bewertung (7):  
     


{ 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;


 

Bewerten Sie diesen Tipp:

dürftig
ausgezeichnet


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners