IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

affectation de onclick sur TImage créé dynamiquement


Sujet :

Composants VCL Delphi

  1. #1
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut affectation de onclick sur TImage créé dynamiquement
    Bonjour,

    Je crée des composants TImage dynamiquement par cette methode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        MonImage := TImage.Create(form1);
        MonImage.Parent := form1;
     
        MonImage.Left := StrToInt(tableaubdd[3]);
        MonImage.Top := StrToInt(tableaubdd[2]);
        MonImage.width := StrToInt(tableaubdd[4]);
    Le tout dans une boucle. Mais si je veux leur affecté un évènement onclick cela ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      MonImage.Onclick := clickimage;
    J'ai essayé toutes les méthodes du site et aucune ne marche (il me dit toujours une erreur) sur mon programme.
    Voila.

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut
    Citation Envoyé par Darkyl Voir le message
    il me dit toujours une erreur
    Quelle est cette erreur ?

    @+

  3. #3
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [Erreur] jeu.pas(133): Types incompatibles : 'TNotifyEvent' et 'procedure, untyped pointer or untyped parameter'

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Alors c'est surement parce que ta procédure ClickImage n'est pas de type TNotifyEvent.
    Son prototype doit se présenter ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure ClickImage(Sender: TObject);
    @+ Claudius

  5. #5
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    j'avais mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    procedure cliquer(image:TImage);
    J'ai remplacé par ta methode et même erreur.

    En plus je me servais de image.name (par ex) dans cliquer et par ta methode, Sender.name ne marche pas.

    Je ne comprends pas...

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Darkyl Voir le message
    Sender.name ne marche pas.
    Sender représente l'objet sur lequel tu viens de cliquer. Il suffit faire un cast sur ce Sender vers le type TImage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.Cliquer(Sender: TObject);
    begin
      with TImage(Sender) do
      begin
        // ... par exemple
       ShowMessage(Name);
      end;
    end;
    @+

  7. #7
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    J'ai pas tro bien compris, aprés begin je peux mettre directement name := ... ?

    Même le problème c'est que même sans me servir de l'appelant, sans rien mettre entre le begin et end de cliquer, il me dit la même erreur que plus haut avec ta methode..

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Montre-nous le code de la procédure OnClick telle qu'elle est actuellement.

  9. #9
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    OK pour le TImage(Sender).name, ca marche.

    Mais Image.onclick:=cliquer(Sender: TObject); il me dit toujours la même erreur.

    C'est pas tellement la procedure cliquer qui pose probleme, c'est son appel lors de la création du composant image

  10. #10
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image.OnClick := Cliquer;
    Tout simplement.

  11. #11
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    Il me dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [Erreur] jeu.pas(149): Types incompatibles : 'pointeur de méthode et procédure normale'
    Ca fait 3 h que j'essaie...lol

  12. #12
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Fais voir ton code.
    La partie Interface avec la procédure OnClick, ainsi que la partie implémentation de la procédure Cliquer et de la procédure où tu créés dynamiquement les TImage.

  13. #13
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    procedure cliquer(Sender: TObject);//procedure cliquer(image:TImage);
    var a:integer;
        G,h:textfile;
        action:string;
    begin
      AssignFile(G,'C:\Users\Darkyl\Desktop\jeu\joueur\Darkyl\map.txt');
      reset(G);
      read(G,action);
     
      if tabmenu='' then
      else
     
        //trouve la ligne de map.txt correspondante
     
        a:=0;
        while nomimagecase[a]<>TImage(Sender).name do
           begin
           a:=a+1;
           end;
     
        if tabmenu='construire' then
          begin
          AssignFile(G,'C:\Users\Darkyl\Desktop\jeu\joueur\Darkyl\BDD\production.txt');
          reset(G);
          readln(G);
     
     
     
          // remplace la ligne de lecture de map.txt avec
     
     
          //nomimagecase[a]:=Label.caption
          //image.Picture.LoadFromFile('C:\Users\Darkyl\Desktop\jeu\images\maison.png')
    end;
    end;
    et l'appel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    procedure affichermap;
          var F:textfile;
              tableaubdd:TStringList;
              lig:string;
              a,x,y,n:integer;
              b: integer;
              MonImage:TImage;
              MonBoutton:TButton;
              simul,es1,es2,es3:string;
     
    begin
    AssignFile(F,'C:\Users\Darkyl\Desktop\jeu\joueur\Darkyl\map.txt');
    reset(F);
    n:=0;
     
     for a := 1 to 20 do
      begin
      x := a*20;
     
      for b := 1 to 20 do
        begin
        y := b*20;
     
        readln(F,lig);
        tableaubdd:=listseparateur(lig,'/');
     
        MonImage := TImage.Create(form1);
        MonImage.Parent := form1;
        form1.Memo2.lines.add(tableaubdd[2]+ '/ '+tableaubdd[3]);
        MonImage.Left := StrToInt(tableaubdd[3]);
        MonImage.Top := StrToInt(tableaubdd[2]);
        MonImage.width := StrToInt(tableaubdd[4]);
        MonImage.Picture.LoadFromFile('C:\Users\Darkyl\Desktop\jeu\images\1.png');
        MonImage.OnClick:=cliquer;
     
        xtab[n]:=StrToInt(tableaubdd[2]);
        ytab[n]:=StrToInt(tableaubdd[3]);
        nomcase[n]:=tableaubdd[0];
        nomimagecase[n]:=tableaubdd[1];
     
     
        n:=n+1;
        end;
    end;
     
    end;

  14. #14
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    Pas d'autyre référence à cliquer ou a affichermap, ni dans les déclaration (privé,public) ni ailleur, il faudrait peut-être?

  15. #15
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Côté Interface:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      TForm1 = class(TForm)
        // ...
        procedure Cliquer(Sender: TObject);
      private
        { Déclarations privées }
        // ...
      public
        { Déclarations publiques }
        // ...
      end;
    côté implémentation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.Cliquer(Sender: TObject);
    begin
      // Ton code...
    end;
     
    procedure AfficherMap
    begin
          // ...
          MonImage.OnClick := Form1.Cliquer;
          // ...
    end;

  16. #16
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    il me dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [Erreur] jeu.pas(16): Déclaration forward ou external non satisfaite : 'TForm1.Cliquer'
    juste aprés la déclaration dans l'interface

  17. #17
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    ok ca marche, merci beaucoup Cl@udius pour avoir pris le temps. Ca m'aide énormément.

  18. #18
    Membre averti
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Points : 352
    Points
    352
    Billets dans le blog
    1
    Par défaut
    Pour ceux que ca interesse, Il fallait que je mettre TForm1. devant cliquer dans l'implémentation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Procédure onclick sur sous-menus dynamique
    Par julesclaude dans le forum Langage
    Réponses: 3
    Dernier message: 29/06/2008, 21h43
  2. affectation sur un tableau dynamique
    Par oranoutan dans le forum C
    Réponses: 35
    Dernier message: 27/06/2007, 01h16
  3. OnClick sur un bouton créé dynamiquement
    Par Jeankiki dans le forum Delphi
    Réponses: 4
    Dernier message: 05/11/2006, 18h44
  4. OnClick sur un component créé dynamiquement.
    Par aliwassem dans le forum Delphi
    Réponses: 3
    Dernier message: 01/11/2006, 22h04
  5. OnClick sur un Panel créé dynamiquement.
    Par tazthedev dans le forum Delphi
    Réponses: 8
    Dernier message: 21/10/2006, 01h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo