Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bilder(Glyphs?) in einer Listbox (https://www.delphipraxis.net/2531-bilder-glyphs-einer-listbox.html)

Pseudemys Nelsoni 28. Jan 2003 10:57


Bilder(Glyphs?) in einer Listbox
 
wie kann ich in einer listbox kleine glyphs mit reinmachen?
also mache da ja grad (grad seit 2 monaten :D) n irc client...
möchte das statt den modes "*!@%+" eben ein gaaanz kleine bild als status gezeigt wird, wie geht das?

gruss silent

Luckie 28. Jan 2003 11:01

Bitmaps in TCombobox
Code:

//This code works also with TListBox

var
  Bitmap1, Bitmap2, Bitmap3, Bitmap4: TBitmap;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.Style:=csOwnerDrawVariable;
  //Set height of one item
  ComboBox1.ItemHeight:=20;
  //load all bitmaps
  Bitmap1 := TBitmap.Create;
  Bitmap1.LoadFromFile('chem16.bmp');
  Bitmap2 := TBitmap.Create;
  Bitmap2.LoadFromFile('chip16.bmp');
  Bitmap3 := TBitmap.Create;
  Bitmap3.LoadFromFile('factry16.bmp');
  Bitmap4 := TBitmap.Create;
  Bitmap4.LoadFromFile('skylin16.bmp');
  //assign bitmaps with item objects - caption of the items: Bitmap 1 - Bitmap 4 
  ComboBox1.Items.AddObject('Bitmap 1', Bitmap1);
  ComboBox1.Items.AddObject('Bitmap 2', Bitmap2);
  ComboBox1.Items.AddObject('Bitmap 3', Bitmap3);
  ComboBox1.Items.AddObject('Bitmap 4', Bitmap4);
end;
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  Bitmap: TBitmap;
  Offset: Integer;
begin
  offset:=0;
  with ComboBox1.Canvas do
  begin
    FillRect(Rect);
    Bitmap := TBitmap(ComboBox1.Items.Objects[index]);
    if Bitmap <> nil then
    begin
      //copy bitmap to combobox coordinate
      BrushCopy(Bounds(Rect.Left + 2, Rect.Top + 2, Bitmap.Width,
      Bitmap.Height), Bitmap, Bounds(0, 0, Bitmap.Width,
      Bitmap.Height), clred);
      Offset := Bitmap.width + 8;
    end;
    //Set a caption to each item
    TextOut(Rect.Left + Offset, Rect.Top, Combobox1.Items[Index]);
  end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  //free all bitmap objects
  bitmap1.Free;
  bitmap2.Free;
  bitmap3.Free;
  bitmap4.Free;
end;

Pseudemys Nelsoni 28. Jan 2003 11:29

hi luckie, danke für den code 8)

kann ich die bilder auch aus einer imagelist laden?
möchte nur die exe am ende haben ohne die bilder von irgendwo von der hd zu laden

PS: ich "code" ja noch nicht soo lang, gibt es ne kürzere methode?
will ja nur ein pic anzeigen <g>

gruss silent


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz