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 :

comment appeler une procédure événementielle


Sujet :

Delphi

  1. #1
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut comment appeler une procédure événementielle
    Bonjour à tou(te)s
    Ma question a sans doute été posée x fois...
    Peut-on simuler, par programmation, un événement utilisateur (clic sur un bouton, par ex)
    Autrement dit, quelle est la synthaxe pour appeler une procédure événement (TForm1.Button1Click par ex)
    J'ai besoin d'exécuter le code qui s'y trouve alors que, bien sûr, aucun clic n'est fait sur ledit bouton...
    Merci
    Choisir, c'est renoncer...

  2. #2
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 16
    Points : 19
    Points
    19
    Par défaut Le réponse est dans la question...
    Bonjour.

    Si par exemple, tu veux appeller le click d'un bouton nommé Button1, tu fais simplement Button1.OnClick(nil);

    Vala

  3. #3
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut Re: Le réponse est dans la question...
    Citation Envoyé par rtoutain
    Si par exemple, tu veux appeller le click d'un bouton nommé Button1, tu fais simplement Button1.OnClick(nil);
    Pour éviter de zoulis effets de bords indésirables, il est quand même préférable de passer le contrôle comme paramètre Sender...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Button1.OnClick(Button1);
    Mais cependant, dans le cas d'un bouton, il y a plus simple :Pour d'autres contrôles et évènements (ex : TEdit.OnChange), appeler "manuellement" le gestionnaire d'évènement reste indispensable.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  4. #4
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    Ok et merci,
    sauf que Button1.Onclick provoque une erreur de compil (Identificateur non déclaré) alors que Button1.click fonctionne...
    J'aimerais tout de même comprendre
    Choisir, c'est renoncer...

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par OutOfRange
    sauf que Button1.Onclick provoque une erreur de compil (Identificateur non déclaré) alors que Button1.click fonctionne...
    J'aimerais tout de même comprendre
    Anormal, c'est un évènement tout à fait normal, il est toujours défini (même s'il peut être à Nil, mais ça provoquerait une erreur à l'exécution, pas à la compilation). Cet évènement est défini pour la VCL comme pour la CLX, c'est même lui qui est appelé par la méthode Click. Tu as bien passé les paramètres ?
    Sinon, montre donc ton code, stp.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    Ce code (je te le livre brut de fonderie) compile et exécute correctement (DELPHI 7)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure Tpal.FormCreate(Sender: TObject);
    begin
      j:=dateof(date);
      chargparam(11);
      chargparam(12);
      chargparam(13);
      calendar.Date:=j;
      CeJour.Caption:='Aujourd''hui '+FormatDateTime('ddd d mmm yyyy',j);
      datejournal.Caption:=FormatDateTime('ddd d mmmm yyyy',j);
      MaJVisu(modvisu);
      majournal;
      pal.CeJourClick(CeJour);
      chemin:=extractfilepath(paramstr(0));
    end;
    alors que celui-ci refuse de compiler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure Tpal.FormCreate(Sender: TObject);
    begin
      j:=dateof(date);
      chargparam(11);
      chargparam(12);
      chargparam(13);
      calendar.Date:=j;
      CeJour.Caption:='Aujourd''hui '+FormatDateTime('ddd d mmm yyyy',j);
      datejournal.Caption:=FormatDateTime('ddd d mmmm yyyy',j);
      MaJVisu(modvisu);
      majournal;
      pal.CeJourOnClick(CeJour);
      chemin:=extractfilepath(paramstr(0));
    end;
    [Erreur] pal1.pas(626): Identificateur non déclaré : 'CeJourOnClick'
    Choisir, c'est renoncer...

  7. #7
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par OutOfRange
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pal.CeJourOnClick(CeJour);
    [Erreur] pal1.pas(626): Identificateur non déclaré : 'CeJourOnClick'
    Normal, on t'as dit que c'était OnClick, pas CeJourOnClick ! ;-)
    Je t'explique : tu as associé l'évènement OnClick de ton bouton (qui s'appelle CeJour, donc) à une procédure nommée CeJourClick, stockée dans la classe TPal. OK, donc, cette procédure existe.
    Mais lorsque tu appelles pal.CeJourClick(CeJour), tu appelles directement la méthode du gestionnaire, et ça, c'est très mal : on en a brûlé pour moins que ça, au Moyen-Âge...
    Il faut réellement appeler la méthode OnClick du bouton CeJour : donc, mettre cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CeJour.OnClick(CeJour);
    ou celle-ci :Bien sûr, c'est exactement le même principe pour tous les gestionnaires d'évènements, quel que soit le type de contrôle visé.

    Tu comprends où était ton erreur ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  8. #8
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    OK Mac Lak
    Mea culpa et merci pour tes explications
    En fait cela fait relativement peu de temps que je programme en Pascal et j'avoue que programmation événementielle et langage orienté objet ne m'ont pas encore livré tous leurs secrets
    J'ai longtemps programmé en interprété, style basic...
    Donc si l'écriture de code élémentaire ne me pose aucun pb en Delphi, je manque un peu de recul au niveau structuration des prog
    Mais faut pas désespérer !
    Choisir, c'est renoncer...

  9. #9
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par OutOfRange
    Mea culpa et merci pour tes explications
    Mea culpa de quoi ? De débuter ? ;-) On est tous passés par là !!

    Je reconnais qu'au début, c'est un peu dur de se mettre à la programmation structurée (surtout orientée objet) lorsque l'on arrive du BASIC... Mais tu verras, non seulement on s'y fait vite, mais en plus, tu n'arriveras plus à revenir à des langages non-structurés sans râler comme un putois !!
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

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

Discussions similaires

  1. Comment appeler une procédure dans une autre unité ?
    Par michel71 dans le forum Langage
    Réponses: 1
    Dernier message: 19/09/2007, 16h27
  2. Réponses: 2
    Dernier message: 04/04/2007, 18h30
  3. [VB.NET]Comment appelé une procédure click d'un bouton?
    Par mustang-f27 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/11/2006, 13h01
  4. Réponses: 1
    Dernier message: 07/02/2006, 00h11
  5. Comment appeler une procédure ?
    Par darkmalak01 dans le forum Débuter
    Réponses: 2
    Dernier message: 03/10/2005, 19h05

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