Ereur de chargement image dans une création dynamique

Résolu
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 - 20 déc. 2006 à 11:27
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre 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]-->

2 réponses

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
20 déc. 2006 à 13:39
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
3
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
20 déc. 2006 à 14:12
[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+
0
Rejoignez-nous