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 :

Comment appeler une procédure d'un autre formulaire.


Sujet :

Langage Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Comment appeler une procédure d'un autre formulaire.
    Bonjour. Je débute (presque) sous delphi 7, et je ne sais pas comment appeler une procédure d'un TForm parent.
    mon exemple:
    J'ai est un MainForm (de type TFORM) qui cré un TForm "enfant" VideoForm, et je voudrai appeler une procédure de MainForm

    depuis un bouton de VideoForm:

    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
     
    unit MainFormUnit;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DSPack, StdCtrls,VideoFormUnit,SmartFlashFormUnit,retmonitortools,
      ExtCtrls, DB, MySQLDataset, MySQLServer, ComCtrls,Contnrs;
     
    type
      TMainForm = class(TForm)
        ButtonOpenDisplay: TButton;
        ...
      private
        ...
      public
        procedure playnext(i : integer);
      end;
     
    var
      MainForm: TMainForm;
      VideoForm : TVideoForm;
     
    implementation
      ...
     
    procedure TMainForm.FormCreate(Sender: TObject);
    begin
      VideoForm := TVideoForm.Create(Self);
      VideoForm.Show;
    end;
     
    procedure TMainForm.playnext(i : integer);
    begin
      Memo1.Lines.add('Play Next Invoked !!!!');
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    unit VideoFormUnit;
    ...
    procedure TVideoForm.ButtonClick(Sender: TObject);
    begin
        Application.MainForm.playnext(12);
    end;
    Comme vous vous en doutez, l'appel à Application.MainForm.playnext() ne marche pas.
    Je ne sais pas comment appeler la procedure playnext de MainForm depuis TVideoForm...
    Une âme charitable aurait elle l'obligence de me donner un coup de main ?
    Merci d'avance.
    CMatias.

  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

    Dans ton unité VideoFormUnit ajoutes MainFormUnit aux uses de la partie implémentation, ainsi ta fonction publique sera accessible.

    @+ Claudius.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Salut

    Dans ton unité VideoFormUnit ajoutes MainFormUnit aux uses de la partie implémentation, ainsi ta fonction publique sera accessible.

    @+ Claudius.
    Merci Claudius, malheureusement MainFormUnit appel déjà l'unité VideoFormUnit. Si j'appel MainFormUnit depuis VideoFormUnit j'ai une erreur de clause circulaire.
    Merci quend même.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    As-tu fait attention à rajouter les uses dans la partie Implementation et non la partie Interface ? C'est très important car si tu déclare dans les uses de Interface tu auras effectivement une référence circulaire mais si tu la met dans Interface tu ne l'auras pas.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  5. #5
    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
    Au niveau de MainFormUnit fait référence à VideoFormUnit dans la partie Interface.

    Et pour VideoFormUnit fait référence à MainFormUnit dans la partie implémentation.

    [Edit1] Grillé !!

    [Edit2] Bienvenue sur DVP !


    @+ Claudius

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Cool ! C'est cool, c'est même très cool. Je ne savais pas qu'on pouvait déclarer une clause USE dans l'implementation.

    Voila mon ovation en ton honneur :
    Merci Moulte.

    Je suis ravis de me joindre à votre forum.
    CMATIAS.

+ 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. Réponses: 1
    Dernier message: 07/02/2006, 00h11
  4. Comment appeler une procédure ?
    Par darkmalak01 dans le forum Débuter
    Réponses: 2
    Dernier message: 03/10/2005, 19h05
  5. comment appeler une procédure événementielle
    Par OutOfRange dans le forum Débuter
    Réponses: 8
    Dernier message: 03/06/2005, 19h32

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