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 13
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
Rejoignez-nous