Pergunta

Sendo bastante um novato, eu só tive a minha primeira pergunta respondida ( Delphi: TImage.Create provoca violação de acesso ) para colidir imediatamente em um novo 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;

Quando eu exibir este formulário

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

as imagens não são visíveis. O que estou fazendo de errado?

Eu quero agradecer a todos por seus conselhos. Esperemos que, fazendo perguntas elementares ajuda os outros a evitar pedir-los no futuro: -)

Foi útil?

Solução

Defina a propriedade Parent de todos os componentes de imagem para o formulário que os contém.

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;

Outras dicas

Bem, acho que você tem que adicionar os componentes TImage individuais à lista de controle do formulário atual?

Isso significa: só porque você está criando um TImage em código não significa que ele é realmente adicionado para controles do formulário. Você vai ter que fazer isso em código -. No entanto, eu não tocou Delphi em um par de anos, então eu não pode fornecer qualquer código agora

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top