2

所以我是 Delphi 的新手,我有一个按钮,当它被点击时,它会打开一个 OpenPictureDialog。然后我想创建一个弹出框,其中加载了该图片。我不确定最好的方法是什么?

我想在按钮单击事件上创建一个新表单,然后将图像放入其中,但我不知道如何将 TImage 传递给表单构造函数。

OpenPictureDialog1.Execute;
img.Picture.LoadFromFile(OpenPictureDialog1.FileName);
TForm2.Create(Application, img).Show;

有没有人对如何做到这一点或解决我正在尝试做的事情有更好的想法?

谢谢。

4

1 回答 1

6

您最好将 TImage 组件放在辅助表单中并传递文件名,例如,为您的表单创建一个新的构造函数,如下所示:

type
  TForm2 = class(TForm)
    Image1: TImage;
  private
  public
    constructor CreateWithImage(AOwner: TComponent; AImgPath: string);
  end;

...
implementation
...

constructor TForm2.CreateWithImage(AOwner: TComponent; AImgPath: string);
begin
  Create(AOwner);
  Image1.Picture.LoadFromFile(AImgPath);
end;

然后,您可以像这样创建并显示您的表单:

procedure TForm1.Button1Click(Sender: TObject);
var
  Form2: TForm2;
begin
  if OpenPictureDialog1.Execute then
  begin
    Form2 := TForm2.CreateWithImage(Self, OpenPictureDialog1.FileName);
    Form2.Show;
  end;
end;

编辑

如果你想在运行时创建图像,你可以这样做:

type
  TForm2 = class(TForm)
  private
    FImage: TImage; //this is now in the private section, 
                     //and not the default (published)
  public
    constructor CreateWithImage(AOwner: TComponent; AImgPath: string);
  end;

...
implementation
...

constructor TForm2.CreateWithImage(AOwner: TComponent; AImgPath: string);
begin
  Create(AOwner);
  FImage := TImage.Create(Self);
  FImage.Parent := Self;
  FImage.Align := alClient;
  FImage.Picture.LoadFromFile(AImgPath);
end;
于 2013-01-18T17:09:35.193 回答