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

ludo1244 7 Messages postés vendredi 16 septembre 2011Date d'inscription 19 octobre 2011 Dernière intervention - 16 sept. 2011 à 15:36 - Dernière réponse : nictdtet 6 Messages postés mercredi 30 décembre 2009Date d'inscription 21 novembre 2011 Dernière intervention
- 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
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 16 sept. 2011 à 22:22
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] )

Merci Caribensila 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 73 internautes ce mois-ci

Commenter la réponse de Caribensila
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 16 sept. 2011 à 18:18
0
Merci
Bonjour,

Montre-nous ce qui tu as codé pour voir où ça coince.
Commenter la réponse de Caribensila
ludo1244 7 Messages postés vendredi 16 septembre 2011Date d'inscription 19 octobre 2011 Dernière intervention - 16 sept. 2011 à 19:43
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
ludo1244 7 Messages postés vendredi 16 septembre 2011Date d'inscription 19 octobre 2011 Dernière intervention - 16 sept. 2011 à 19:44
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
ludo1244 7 Messages postés vendredi 16 septembre 2011Date d'inscription 19 octobre 2011 Dernière intervention - 18 sept. 2011 à 15:09
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
ludo1244 7 Messages postés vendredi 16 septembre 2011Date d'inscription 19 octobre 2011 Dernière intervention - 18 sept. 2011 à 15:17
0
Merci
en faite j'ai réussi merci beaucoup !!!!
Commenter la réponse de ludo1244
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 19 sept. 2011 à 14:17
0
Merci
Bonjour ludo1244,

Pourrais-tu nous montrer ta solution ?


cantador
Commenter la réponse de cs_cantador
ludo1244 7 Messages postés vendredi 16 septembre 2011Date d'inscription 19 octobre 2011 Dernière intervention - 19 sept. 2011 à 15:35
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
Utilisateur anonyme - 18 oct. 2011 à 13:41
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
ludo1244 7 Messages postés vendredi 16 septembre 2011Date d'inscription 19 octobre 2011 Dernière intervention - 19 oct. 2011 à 08:38
0
Merci
A ok, merci beaucoup
Commenter la réponse de ludo1244
nictdtet 6 Messages postés mercredi 30 décembre 2009Date d'inscription 21 novembre 2011 Dernière intervention - 27 oct. 2011 à 19:34
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
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 27 oct. 2011 à 23:08
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
nictdtet 6 Messages postés mercredi 30 décembre 2009Date d'inscription 21 novembre 2011 Dernière intervention - 29 oct. 2011 à 18:30
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.