Tableau d'image dynamiquement crée

Résolu
ludo1244
Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Statut
Membre
Dernière intervention
19 octobre 2011
- 16 sept. 2011 à 15:36
nictdtet
Messages postés
6
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
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

13 réponses

Caribensila
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
16 sept. 2011 à 22:22
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] )
3
Caribensila
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
16 sept. 2011 à 18:18
Bonjour,

Montre-nous ce qui tu as codé pour voir où ça coince.
0
ludo1244
Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Statut
Membre
Dernière intervention
19 octobre 2011

16 sept. 2011 à 19:43
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
0
ludo1244
Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Statut
Membre
Dernière intervention
19 octobre 2011

16 sept. 2011 à 19:44
désolé pour les quelques variable inutile mais j'essayais des trucs et j'ai pas penser a les enlever
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ludo1244
Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Statut
Membre
Dernière intervention
19 octobre 2011

18 sept. 2011 à 15:09
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 ;)
0
ludo1244
Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Statut
Membre
Dernière intervention
19 octobre 2011

18 sept. 2011 à 15:17
en faite j'ai réussi merci beaucoup !!!!
0
cs_cantador
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
19 sept. 2011 à 14:17
Bonjour ludo1244,

Pourrais-tu nous montrer ta solution ?


cantador
0
ludo1244
Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Statut
Membre
Dernière intervention
19 octobre 2011

19 sept. 2011 à 15:35
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.
0
Utilisateur anonyme
18 oct. 2011 à 13:41
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;
0
ludo1244
Messages postés
7
Date d'inscription
vendredi 16 septembre 2011
Statut
Membre
Dernière intervention
19 octobre 2011

19 oct. 2011 à 08:38
A ok, merci beaucoup
0
nictdtet
Messages postés
6
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
21 novembre 2011

27 oct. 2011 à 19:34
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

_____________________________________________________________________________________
_____________________________________________________________________________________
0
Caribensila
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
27 oct. 2011 à 23:08
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;
0
nictdtet
Messages postés
6
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
21 novembre 2011

29 oct. 2011 à 18:30
Grand Merci PL. J'essaye dès que possible.
0