是相当一个新手,我刚喝了我的第一个问题回答(德尔福: 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;

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

我要感谢大家的意见。我们希望,询问基本问题,帮助他人避免要求他们在未来的: - )

有帮助吗?

解决方案

所有图像分量的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;

其他提示

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

这意味着:仅仅因为你在代码中创建一个<=>并不意味着它实际上是添加到窗体的控件。你必须做,在代码 - 但是,我没有碰过德尔福在几年,所以现在我不能提供任何代码

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top