Tableau d'image dynamiquement crée [Résolu]

Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Dernière intervention
19 octobre 2011
- - Dernière réponse : nictdtet
Messages postés
6
Date d'inscription
mercredi 30 décembre 2009
Dernière intervention
21 novembre 2011
- 29 oct. 2011 à 18:30
bonjour !
je cherche de l'aide pour mon programme

j'essaye de crée des image dynamiquement et de ensuite les mettre dans un tableau!
est-ce que quelqu'un pourrait m'aider ? svp
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
3
Merci
Si tu ne connais pas le nombre de balls à l'avance, tu dois utiliser un tableau dynamique en variable globale :

var BallEnemie : array of TImage;


Ensuite, à chaque création de Ball, tu procèdes ainsi :

var     UnTImage : TImage;
begin
  SetLength(BallEnemie,Length(BallEnemie)+1);
  UnTImage := TImage.Create(Self);
  BallEnemie[High(BallEnemie)] := UnTImage;
  with  BallEnemie[High(BallEnemie)] do begin
    parent := form1;
    height := 9;
    Width  := 9;
    top    := random(form1.ClientHeight);
    left   := form1.ClientWidth - 10;
    picture.LoadFromFile('Ball.jpg');
  end;


Et tu fais référence à tes balls par leur indice ( BallEnemie[i] )

Dire « Merci » 3

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

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

Commenter la réponse de Caribensila
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
0
Merci
Bonjour,

Montre-nous ce qui tu as codé pour voir où ça coince.
Commenter la réponse de Caribensila
Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Dernière intervention
19 octobre 2011
0
Merci
procedure TForm1.TimerCreationBallEnemieTimer(Sender: TObject);
var I, II : integer;
 Image : Timage;
begin
  with TImage.create(Form1)do // création de l'image
  begin
    name := 'BallEnemie'+LbCompteur.caption;
    parent := form1;
    height := 9;
    Width := 9;
    top := random(form1.ClientHeight);
    left := form1.ClientWidth - 10;
    picture.LoadFromFile('Ball.jpg');
  end;
  //incrémente le compteur de ball
  LbCompteur.caption := inttostr(strtoint(LbCompteur.caption) + 1);
end;

Et j'ai envie que chaque fois qu'une image est crée qu'elle soie enregistrer dans un tableau pour pouvoir les appeler plus tard
Commenter la réponse de ludo1244
Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Dernière intervention
19 octobre 2011
0
Merci
désolé pour les quelques variable inutile mais j'essayais des trucs et j'ai pas penser a les enlever
Commenter la réponse de ludo1244
Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Dernière intervention
19 octobre 2011
0
Merci
bah .. la quand j'essaye de l’appeler sa me dit que sa provoque une classe d'exception et violation de l'adresse 0042F7Fc --'
Et merci pour se bout de code ;)
Commenter la réponse de ludo1244
Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Dernière intervention
19 octobre 2011
0
Merci
en faite j'ai réussi merci beaucoup !!!!
Commenter la réponse de ludo1244
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
Bonjour ludo1244,

Pourrais-tu nous montrer ta solution ?


cantador
Commenter la réponse de cs_cantador
Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Dernière intervention
19 octobre 2011
0
Merci
j'ai utilser celle de Caribensila, mais quelqu'un pourrait m'expliquer les trois première ligne de code, je les comprend pas très bien.
Commenter la réponse de ludo1244
0
Merci
Salut,

@Tous : Désolé pour le UP.

@Ludo : l'aide de Delphi (Touche F1) est tres bien faite. C'est pour cela que tu n'as aucune réponse.

{La fonction Length permet de récupérer la taille de ton tableau =>Donc Length(BallEnemie) te renvoit la taille de BallEnemie.

La fonction SetLength permet de définir la taille de ton tableau. Donc la ligne en dessous, récupère par la fonction Length la taille de ton tableau, et l'augmente de 1 par la fonction SetLength} :

SetLength(BallEnemie,Length(BallEnemie)+1);



{On crée un nouveau TImage dénommé UnTImage}
UnTImage := TImage.Create(Self);



{On va rajouter cette image à notre tableau : Pour cela on se place au dernier élément de BalleEnemie dont l'indice est donné par la fonction High. Ensuite on assigne cette image à cet élément du tableau}
BallEnemie[High(BallEnemie)] := UnTImage;
Commenter la réponse de Utilisateur anonyme
Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Dernière intervention
19 octobre 2011
0
Merci
A ok, merci beaucoup
Commenter la réponse de ludo1244
Messages postés
6
Date d'inscription
mercredi 30 décembre 2009
Dernière intervention
21 novembre 2011
0
Merci
Bonjour à tous.
Ludo1244, Comment est-on passé de Acces violation à " Ok tout marche bien navette " ?

Problème similaire me semble-t-il avec un enregistrement (Record) :

_____________________________________________________________________________________
RECORD DE PROCEDURES
Pourquoi cela est compilé mais provoque une erreur d'exécution ??
_____________________________________________________________________________________
implementation
type
TProc = procedure;

var
MonRecord :
record
Interdire,
Autoriser

: TProc;

end;


procedure Interdire;
begin // procedure
FaireTruc := false;
end; // procedure

procedure Autoriser;
begin // procedure
FaireTruc := true;
end; // procedure

procedure D_appel
begin // procedure
MonRecord.Interdire;
MonRecord.Autoriser;
end // procedure

_____________________________________________________________________________________
_____________________________________________________________________________________
Commenter la réponse de nictdtet
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
0
Merci
Salut,

Le type TProcedure est un type standard de Delphi.

var
  MonRecord : record
    Interdire,
    Autoriser: TProcedure;
  end;
  FaireTruc : Boolean;

procedure Interdire;
begin
  FaireTruc := false;
end;

procedure Autoriser;
begin
  FaireTruc := true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 MonRecord.Interdire := Interdire;//Affectation de la procédure Interdire au record.
 MonRecord.Autoriser := Autoriser;//Affectation de la procédure Autoriser au record.
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MonRecord.Interdire;//Appelle la procédure Interdire.
  Edit1.text := BoolToStr(FaireTruc,true);//Vérification.
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  MonRecord.Autoriser;//Appelle la procédure Autoriser.
  Edit1.text := BoolToStr(FaireTruc,true);//Vérification
end;
Commenter la réponse de Caribensila
Messages postés
6
Date d'inscription
mercredi 30 décembre 2009
Dernière intervention
21 novembre 2011
0
Merci
Grand Merci PL. J'essaye dès que possible.
Commenter la réponse de nictdtet

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.