2009-06-24 1 views
4

Будучи довольно новичком, я только что был мой первый вопрос ответил (Delphi: TImage.Create causes Access violation) немедленно столкнуться с новой проблемой:Delphi: создание и отображение TImage на FormCreate

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

Если мои расчеты верны, это 200 000-й вопрос. :) – cletus

ответ

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

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

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