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

cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 20 déc. 2006 à 11:27 - Dernière réponse : cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention
- 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
japee 1792 Messages postés vendredi 27 décembre 2002Date d'inscription 12 novembre 2016 Dernière intervention - 20 déc. 2006 à 13:39
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

Merci japee 3

codes-sources a aidé 87955 internautes ce mois-ci

Commenter la réponse de japee
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 20 déc. 2006 à 14:12
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.