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

 Delphi Discussion :

Afftecter l'évènement onclick à partir d'un autre Form


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 163
    Points
    163
    Par défaut Afftecter l'évènement onclick à partir d'un autre Form
    Bonjour,

    Quelle est la méthode pour affecter à partir du Form2 l'évènement OnClick d'un Item de Menu situé sur le Form1, sachant que la fonction est sur le Form2 ?

    Dans le form2, je met par exemple :

    Form1.MenuItem1.OnClick := MaProcedure;

    procedure Form2.MaProcedure(Sender: TObject);
    ....
    end;

    Ça compile, mais il ne se passe rien quand je clique sur le menu.

    Thierry B.

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    où as-tu placé le code qui fixe le OnClick ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 163
    Points
    163
    Par défaut
    Dans le Form 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm2.FormActivate(Sender: TObject);
    begin
      Form1.MenuItem1.OnClick := MaProcedure;
    end;
    Le pire c'est que j'ai créé un prototype vide avec deux fenêtres reproduisant "à priori" uniquement cette partie du code et ça marche très bien.
    Mais dans le vrai programme, il passe bien sur la ligne

    Form1.MenuItem1.OnClick := MaProcedure;

    et MaProcedure est aussi utilisé dans Form2 directement par un menu et il fonctionne.

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    OnCreate me semble plus adapté, non ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 163
    Points
    163
    Par défaut
    En fait dans mon programme les forms sont non modales. A chaque fois que je change de fenêtre les évènements Ajouter / Supprimer du menu de la fenêtre principale doivent être modifiés en fonction de la fenêtre activée, c'est pourquoi j'ai utilisé Activate au lieu de OnCreate.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 163
    Points
    163
    Par défaut
    J'ai à moitié trouvé.

    Dans le form1, j'ai déjà un évènement par défaut sur MenuItem1, défini visuellement. Dans ce cas réaffecter l'évènement dans le code ne fait plus rien, c'est toujours celui défini visuellement qui s'exécute. Qu'est-ce qu'il faut faire dans ce cas ?

    Edit : le fait d'affecter l'évènement en conception ou directement dans le code ne change rien, dans les deux cas je ne peux plus le modifier ensuite.

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    Utilises-tu un TActionList ?

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 163
    Points
    163
    Par défaut
    Non,

    j'aurai pu, est-ce que ça pourrait changer quelque chose ?

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 163
    Points
    163
    Par défaut
    Ah oui, ça marche si je change plutot

    Form1.Action1.OnExecute := MaProcedure;

    dans Form2. Bon je vais utiliser TActionList, mais est-ce normal que la méthode que j'utilisai ne fonctionne pas ?

  10. #10
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    je pense que tu as un problème de séquence dans l'appel de ton code

    TActionList force certaines propriétés, c'est pour cela que j'y ai pensé...mais tu n'es pas obligé de l'utiliser.

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

Discussions similaires

  1. Pb d'ouverture d'un form à partir d'un autre form
    Par jeremy_d dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/05/2008, 12h09
  2. Réponses: 1
    Dernier message: 06/05/2007, 10h43
  3. Réponses: 3
    Dernier message: 02/04/2007, 20h37
  4. Réponses: 4
    Dernier message: 21/04/2006, 22h08
  5. [C#] appeler Close() d'un form à partir d'un autre form
    Par vvvvv dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/02/2006, 18h36

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