作为一个新手,我刚刚回答了第一个问题(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;
图像不可见。我做错了什么?
我要感谢大家的建议。希望,提出基本问题有助于其他人在将来避免询问他们: - )
答案 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,所以我现在无法提供任何代码。