Ereur de chargement image dans une création dynamique [Résolu]

Messages postés
641
Date d'inscription
dimanche 13 août 2006
Dernière intervention
13 décembre 2018
- - Dernière réponse : cs_Jean_Jean
Messages postés
641
Date d'inscription
dimanche 13 août 2006
Dernière intervention
13 décembre 2018
- 20 déc. 2006 à 14:12
<!--[if !supportEmptyParas]-->
<!--[endif]-->




[javascript:Insert_Emoticon('/imgs2/smile.gif');

]
Bj à tous


J’ai un nb dynamiques d’images de fond à charger à partir
d’un composant imagelist ou bien à partir de fichiers bmp existants


L’erreur est toujours la même : …access violation …
read of address
[javascript:Insert_Emoticon('/imgs2/smile_question.gif'); ]No comprendo !

les indices semblent bons



Voici le code:  <!--[endif]-->








Var aImgFond
: Timage; // globale






Dans create de la Fiche :






<!--[if !supportEmptyParas]-->









For N :=
NMaxLed to NMaxLed + NProcess - 1 do









begin










    aImgFond := TImage.Create(self);










    With aImgFond do 










    begin










       Left := L;  width  := W;  Top := T; 
Height := H;










      
ImageList1.GetBitmap(2,TImage(FindComponent('Image'+IntToStr(N))).Picture.Bitmap);











   
end;







end;






[javascript:Insert_Emoticon('/imgs2/smile_angry.gif');

]ça plante au chargement de l’image (ligne en rouge)



Si je remplace cette ligne par un chargement direct avec
l’instruction :

 Timage(FindComponent('Image' +
IntToStr(N))).Picture.LoadFromFile(Rep+'Niveaux.bmp');

ça plante également

J’ai fait ensuite :

<!--[if !supportEmptyParas]-->

For N :=
NMaxLed to NMaxLed + NProcess - 1 do

begin

    aImgFond := TImage.Create(self);

   
With TImage(FindComponent('Image' +
IntToStr(N))) do

    begin

       Left := L;  width  := W;  Top := T; 
Height := H;

       Picture.LoadFromFile(Rep+'Niveaux.bmp'); // ça plante ici!

    end;

end;

[javascript:Insert_Emoticon('/imgs2/smile.gif'); ]Merci pour vos lumières!

Jean_Jean

 

<!--[if !supportEmptyParas]--> <!--[endif]-->
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
3
Merci
Salut,

Je n'ai pas trop le temps de me pencher sur ton code, mais celui-là fonctionne, à toi de voir où se situe l'erreur (nommage du composant, pas de parent désigné, autre ?)  :

for N := NMaxLed to NMaxLed + NProcess - 1 do
begin
  aImgFond := TImage.Create(self);
  with aImgFond do
  begin
     Parent := Self;
     Name := 'Image' + IntToStr(N);
     // ou alors : Name := Format('Image'%d', [N]);
     Left := L;  width  := W;  Top := T;  Height := H;   
     ImageList1.GetBitmap(0, aImgFond.Picture.Bitmap);
  end;
end;

Bonne prog'

japee

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 91 internautes nous ont dit merci ce mois-ci

Commenter la réponse de japee
Messages postés
641
Date d'inscription
dimanche 13 août 2006
Dernière intervention
13 décembre 2018
1
0
Merci
[javascript:Insert_Emoticon('/imgs2/smile.gif');

]Bj Japee
Nickel!
Apparemment l'erreur venait de l'oublie de la ligne suivante:
      Parent  := Self;
      Le nommage est semble t-il automatique et la ligne suivante n'est pas nécessaire:
      Name   := 'Image' + IntToStr(N);

C'est un peu bizarre, car j'effectue auparavant une autre boucle de création dynamique qui nepose pas de pb et qui fonctionne de manière presque similaire.
Merci à Toi
A+
Commenter la réponse de cs_Jean_Jean

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.