Pregunta

Siendo un novato, acabo de recibir mi primera pregunta ( Delphi: TImage.Create hace que la infracción de acceso ) se encuentre inmediatamente con un nuevo problema:

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;

Cuando visualizo este formulario

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

las imágenes no son visibles. ¿Qué estoy haciendo mal?

Quiero agradecer a todos por sus consejos. Con suerte, hacer preguntas elementales ayuda a otros a evitar hacerlas en el futuro :-)

¿Fue útil?

Solución

Establezca la propiedad principal de todos los componentes de la imagen en el formulario que los contiene.

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;

Otros consejos

Bueno, supongo que debe agregar los componentes individuales TImage a la lista de control del formulario actual.

Eso significa: el hecho de que esté creando un TImage en el código no significa que realmente se agregue a los controles del formulario. Tendrá que hacerlo en código; sin embargo, no he tocado a Delphi en un par de años, por lo que no puedo proporcionar ningún código en este momento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top