4

作为一个新手,我刚刚回答了我的第一个问题(Delphi:TImage.Create 导致访问冲突)立即遇到一个新问题:

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;

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

我要感谢大家的建议。希望提出基本问题可以帮助其他人避免将来问他们:-)

4

2 回答 2

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;
于 2009-06-24T07:32:44.367 回答
1

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

这意味着:仅仅因为您正在创建一个TImagein 代码并不意味着它实际上已添加到表单的控件中。您必须在代码中执行此操作 - 但是,我已经有几年没有接触过 Delphi,所以我现在无法提供任何代码。

于 2009-06-24T07:35:45.547 回答