2009-06-24 4 views
4

être tout à fait un débutant, je viens de recevoir ma première question a répondu (Delphi: TImage.Create causes Access violation) de tomber immédiatement dans un nouveau problème:Delphi: la création et l'affichage TImage sur 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; 

Quand j'afficher ce formulaire

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

les images ne sont pas visibles. Qu'est-ce que je fais mal?

Je tiens à remercier tout le monde pour leurs conseils. Heureusement, poser des questions élémentaires aide les autres à ne pas les poser à l'avenir :-)

+0

Si mes calculs sont corrects, c'est la 200 000e question. :) – cletus

Répondre

12

Définissez la propriété Parent de tous les composants image sur le formulaire qui les contient.

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

Eh bien, je suppose que vous devez ajouter les TImage simples composants à la commande liste de la forme actuelle? Cela signifie que le fait de créer un TImage dans le code ne signifie pas qu'il est réellement ajouté aux contrôles du formulaire. Vous devrez le faire en code - cependant, je n'ai pas touché Delphi depuis quelques années, donc je ne peux pas fournir de code pour le moment.

Questions connexes