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

Langage Delphi Discussion :

Appel de procédure événement


Sujet :

Langage Delphi

  1. #1
    Membre du Club Avatar de James64
    Profil pro
    Inscrit en
    Février 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 99
    Points : 49
    Points
    49
    Par défaut Appel de procédure événement
    Salut,
    je veux appeler une procédure d'une autre form par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form5.BitBtn1Click(Sender)
    Il me renvoie une erreur du type : Classe d'exception TDataBaseError. Expression attendue mais ')' trouvé

    Pouvez vous m'aider

    Merci

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Ton Sender n'est pas de type Tobject, c'est pour ca
    C'est mieux comme cela.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Form5.Bitbtn1.Click;

  3. #3
    Membre du Club Avatar de James64
    Profil pro
    Inscrit en
    Février 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    Les procedures sont toutes de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure TForm1.BitBtn7Click(Sender: TObject);
    et l'appel ne fonctionne pas

  4. #4
    Membre du Club Avatar de James64
    Profil pro
    Inscrit en
    Février 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    G trouvé l'erreur. C'était trés indirecte mais ca genait l'appel click. Merci qd meme

    A plus

  5. #5
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Mais si, ça va marcher !

    Ca c'est la gestion de l'évènement du clic sur le bouton (la procédure que tu veux appeler) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    procedure TForm1.BitBtn7Click(Sender: TObject);
    Sender n'est rien d'autre la variable de l'objet qui à déclenché l'évènement...

    Ca, par contre, c'est ce qui permet de déclencher l'évènement décrit ci-dessus :
    Donc, quand tu écris Bitbtn7.Click, ça appelle procedure TForm1.BitBtn7Click(Sender: TObject);, si cette procedure est effectivement reliée à l'évènement Onclick du Bitbtn7 !

    Explications, comment ça se passe :
    En gros, dans OnClick est une variable de l'objet bouton qui accepte comme valeur une procedure, imagine le écrit comme ça (même si c'est un peut différent en réalité) et compare avec la variable i :
    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 MonClick(Sender: TObject);
    begin
      //du code
    end;
    ..............
    var
      i:integer;
      Bitbtn7.Onclick:TProcedure(Sender:TObject); <-- là c'est faux, mais c'est pour t'illustrer la chose...
     
    begin
      i:=5;
      Bitbtn7.Onclick:=Monclick;
    end;
    Lorsque tu cliques sur le bouton [b]Bitbtn7[b], delphi utiliseras cette procedure en interne, là aussi c'est fantaisiste mais ça permet de comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure Bitbtn7.click;
    begin
      if Bitbtn7.Onclick<>nil //Delphi vérifie si tu as mis une procedure 
                                      //dans sa variable, sinon il ne fait rien
      then Bitbtn7.Onclick(Bitbtn7);  //on appelle la procedure stockée 
                                                  //dans la variable avec comme paramètre
                                                 //le nom du bouton qui la déclenche
    end;
    Tu vois bien que delphi appelle ta procedure MonClick

    L'intéret de ceci c'est que tu peux avoir par exemple 3 boutons qui utilisent la même procedure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       Bitbtn1.Onclick:=Monclick;
       Bitbtn2.Onclick:=Monclick;
       Bitbtn3.Onclick:=Monclick;
    et si tu fais dans ton code Bitbtn2.click, la variable sender dans ta procedure MonClick sera égale à BitBtn2, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure MonClick(Sender: TObject);
    begin
      if sender=Bitbtn1 then showmessage('Bouton 1');
      if sender=Bitbtn2 then showmessage('Bouton 2');
      if sender=Bitbtn3 then showmessage('Bouton 3');
    end
    ... et là, le message Bouton 2 s'affichera...

    donc on résume le processus qui se déroule :
    1) tu cliques sur ton bouton, ou bien dans ton code tu écris BitBtn2.click;
    2) déroulement de la procedure click du bouton correspondant
    3) la procédure MonClick contenue dans la variable OnClick du bouton est éxécutée avec comme paramêtre dans la variable Sender le nom du bouton qui déclenche la procédure...

    Dans le cas qui t'intéresse :
    Dans l'unité de form1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.BitBtn7Click(Sender: TObject);
    begin
      Form5.Bitbtn1.Click;
    end;
    Dans l'unité de Fom5 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm5.BitBtn5Click(Sender: TObject);
    begin
      TonTraitement;
    end;
    TonTraitement peut être n'importe quoi...

    L'erreur que du décris proviens de cette partie là du code, pas du reste...
    En tout cas, je t'engage vivement à lire un tutoriel de base pour bien comprendre comment fonctionne les évènements (style essayer plein de chose avec 2 boutons sur une fiche avec un TEdit) avant de t'engager dans la programmation avec des bases de données[/list]
    Bidouilleuse Delphi

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/10/2012, 22h11
  2. Réponses: 7
    Dernier message: 27/06/2011, 15h56
  3. Réponses: 2
    Dernier message: 10/09/2008, 16h16
  4. Appel de procédure dans une page ASP
    Par PrinceMaster77 dans le forum ASP
    Réponses: 5
    Dernier message: 02/04/2004, 16h59
  5. Appel de procédure...
    Par AmaX dans le forum Langage
    Réponses: 4
    Dernier message: 24/11/2002, 17h48

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