2009-06-24 11 views
4

ziemlich ein Neuling zu sein, habe ich hatte gerade meine erste Frage beantwortet (Delphi: TImage.Create causes Access violation) sofort in ein neues Problem zu stoßen:Delphi: Erstellen und Anzeigen von TImage auf 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; 

Wenn ich tragen dieses Formular

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

Die Bilder sind nicht sichtbar. Was mache ich falsch?

Ich möchte allen für ihren Rat danken. Hoffentlich hilft es elementare Fragen zu vermeiden, sie in Zukunft zu fragen :-)

+0

Wenn meine Berechnungen korrekt sind, ist dies die 200.000ste Frage. :) – cletus

Antwort

12

Setzen Sie die Parent-Eigenschaft aller Bildkomponenten auf das Formular, das sie enthält.

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

Nun, ich nehme an, dass Sie die einzelnen TImage Komponenten an die Steuerliste des aktuellen Formulars hinzufügen müssen?

Das bedeutet: nur weil Sie eine TImage in Code erstellen bedeutet nicht, dass es tatsächlich zu den Steuerelementen des Formulars hinzugefügt wird. Sie müssen das im Code tun - aber ich habe Delphi in ein paar Jahren nicht berührt, daher kann ich momentan keinen Code bereitstellen.