Delphi: создание и отображение TImage в FormCreate - PullRequest
4 голосов
/ 24 июня 2009

Будучи совсем новичком, мне только что ответили на мой первый вопрос ( 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;

изображения не видны. Что я делаю не так?

Я хочу поблагодарить всех за советы. Надеемся, что элементарные вопросы помогут другим избежать их в будущем: -)

Ответы [ 2 ]

12 голосов
/ 24 июня 2009

Установите для свойства 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 голос
/ 24 июня 2009

Ну, я полагаю, вам нужно добавить отдельные TImage компоненты в контрольный список текущей формы?

Это означает, что только то, что вы создаете TImage в коде, не означает, что оно фактически добавлено к элементам управления формы. Вам придется делать это в коде - однако я не прикасался к Delphi уже пару лет, поэтому сейчас не могу предоставить какой-либо код.

...