@Romanson

Кто нибудь знает MultiResBitmap в Image Delphi?

в MultiResBitmap добавил несколько картинок, добавил несколько Buttons, при нажатие каждой из ник нужно менять на соответсвующую картинку в MultiResBitmap. допустим Button1 на картинку 1. и т.д. не могу вьехать как это сделать

unit Unit2;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Controls.Presentation, FMX.Objects;

type
  TForm2 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Button2: TButton;
    Button3: TButton;
    Panel1: TPanel;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Panel1DragOver(Sender: TObject; const [Ref] Data: TDragObject;
      const [Ref] Point: TPointF; var Operation: TDragOperation);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.fmx}

procedure TForm2.Button1Click(Sender: TObject);
begin
panel1.Visible:=true;
label1.Text:='1111';
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
image1.MultiResBitmap.Bitmaps[2];
image1.Release;
label1.Text:='2222';
panel1.Visible:=true;
end;

procedure TForm2.Button3Click(Sender: TObject);
begin
label1.Text:='3333';
panel1.Visible:=true;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
panel1.Visible:=false;
end;

procedure TForm2.Panel1DragOver(Sender: TObject; const [Ref] Data: TDragObject;
  const [Ref] Point: TPointF; var Operation: TDragOperation);
begin
if label1.Text = '1111' then
image1.MultiResBitmap.Bitmaps[1]; // что тут делать?

end;

end.
  • Вопрос задан
  • 1848 просмотров
Решения вопроса 2
ORTOL
@ORTOL
Delphi
Картинки меняются по следующему алгоритму ...
procedure TForm1.Button1Click(Sender: TObject);
begin
 Image1.Bitmap.Assign(Image1.MultiResBitmap.Items[1].Bitmap);
end;

Просто меняй на соответствующий индекс ... Индексы начинаются с нуля, один это следующая картинка.
Ответ написан
@Romanson Автор вопроса
if length(s)  <1 then s:='' else
  begin

    rs := TResourceStream.Create(HInstance, s, RT_RCDATA);
  try
  image1.Visible:=true;
    Image1.Bitmap.LoadFromStream(rs);
     application.processmessages;
  finally
    FreeAndNil(rs);

  end;
  Image1.Repaint;
 end;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы