Delphi XE8でFiremonkeyのTListBoxに画像を表示するには

TListBoxItemのOnPaintイベントで表示する方法と、TListBoxItemの上にTImageコンポーネントを置いて表示する方法を紹介します。

TListBoxItemのOnPaintイベントで表示する方法

フォーム上にTButtonコンポーネントとTListBoxコンポーネントを配置します。

TButtonコンポーネントのOnClickイベントを記述します。

procedure TForm2.Button1Click(Sender: TObject);
var
  Item: TListBoxItem;
begin
  Item := TListBoxItem.Create(nil);
  Item.Parent := ListBox1;
  Item.Height := 200;
  Item.OnPaint := ListBoxItemPaint;
end;

ボタンを押すと、ListBox1に項目を追加します。

ListBox1の項目は、フォームのListBoxItemPaintメソッドで描画します。

フォームにListBoxItemPaintメソッドを追加します。

type
  TForm2 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { private 宣言 }
    procedure ListBoxItemPaint(Sender: TObject; Canvas: TCanvas;
      const ARect: TRectF);
  public
    { public 宣言 }
  end;

ListBoxItemPaintメソッドで画像を描画します。

procedure TForm2.ListBoxItemPaint(Sender: TObject; Canvas: TCanvas;
  const ARect: TRectF);
const
  IMAGEFILE_PATH =
    'C:\Program Files (x86)\Embarcadero\Studio\16.0\Images\Splash\256Color\CHEMICAL.BMP';
var
  Bitmap: TBitmap;
  SrcRect, DstRect: TRectF;
begin
  Bitmap := TBitmap.Create;
  Bitmap.LoadFromFile(IMAGEFILE_PATH);

  SrcRect.Left := 0;
  SrcRect.Top := 0;
  SrcRect.Width := Bitmap.Width;
  SrcRect.Height := Bitmap.Height;

  DstRect.Left := 0;
  DstRect.Top := 0;
  DstRect.Width := Bitmap.Width;
  DstRect.Height := Bitmap.Height;

  Canvas.DrawBitmap(Bitmap, SrcRect, DstRect, 1.0, True);
  Bitmap.Free;
end;

listbox01

TListBoxItemの上にTImageコンポーネントを置いて表示する方法

フォーム上にTButtonコンポーネントとTListBoxコンポーネントを配置します。

TButtonコンポーネントのOnClickイベントを記述します。

procedure TForm2.Button1Click(Sender: TObject);
const
  IMAGEFILE_PATH =
    'C:\Program Files (x86)\Embarcadero\Studio\16.0\Images\Splash\256Color\CHEMICAL.BMP';
var
  Item: TListBoxItem;
  Image: TImage;
begin
  Item := TListBoxItem.Create(nil);
  Item.Parent := ListBox1;
  Item.Height := 200;

  Image := TImage.Create(Item);
  Image.Parent := Item;
  Image.Width := 240;
  Image.Height := 180;
  Image.Bitmap.LoadFromFile(IMAGEFILE_PATH);
end;

ボタンを押すと、ListBox1に項目を追加します。

追加した項目の上にTImageコンポーネントを配置し、そのTImageコンポーネントに画像を表示します。

listbox02

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です