德尔福:创造和发展在FormCreate上显示TImage

时间:2009-06-24 07:29:17

标签: delphi delphi-7 timage

作为一个新手,我刚刚回答了第一个问题(Delphi: TImage.Create causes Access violation)以立即遇到一个新问题:

procedure TSelectorForm.FormCreate(Sender: TObject);
var
  Loop: Byte;
begin
  for Loop := 1 to 10 do
  begin
    ArrayOfImages[Loop] := TImage.Create(SelectorForm);
    MainForm.MyImageList.GetBitmap(Loop - 1, ArrayOfImages[Loop].Picture.Bitmap);
    ArrayOfImages[Loop].Top := ...
    ArrayOfImages[Loop].Left := ...
    ArrayOfImages[Loop].Enabled := True;
    ArrayOfImages[Loop].Visible := True;
  end;
end;

当我显示此表格时

procedure TMainForm.MyImageClick(Sender: TObject);
begin
  SelectorForm.Visible := True;
end;

图像不可见。我做错了什么?

我要感谢大家的建议。希望,提出基本问题有助于其他人在将来避免询问他们: - )

2 个答案:

答案 0 :(得分:12)

将所有图像组件的Parent属性设置为包含它们的表单。

procedure TSelectorForm.FormCreate(Sender: TObject);
var
  Loop: Byte;
begin
  for Loop := 1 to 10 do
  begin
    ArrayOfImages[Loop] := TImage.Create(SelectorForm);
    MainForm.MyImageList.GetBitmap(Loop - 1, ArrayOfImages[Loop].Picture.Bitmap);
    ArrayOfImages[Loop].Top := ...
    ArrayOfImages[Loop].Left := ...
    ArrayOfImages[Loop].Visible := True;
    ArrayOfImages[Loop].Parent := SelectorForm;
  end;
end;

答案 1 :(得分:1)

好吧,我想你必须将单个TImage组件添加到当前表单的控件列表中?

这意味着:仅仅因为您在代码中创建TImage并不意味着它实际上已添加到表单的控件中。你必须在代码中这样做 - 但是,我在几年内没有触及过Delphi,所以我现在无法提供任何代码。