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

Lazarus Pascal Discussion :

Création d'un bouton à la volée + événement OnClick


Sujet :

Lazarus Pascal

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 81
    Points : 52
    Points
    52
    Par défaut Création d'un bouton à la volée + événement OnClick
    Bonjour à tous

    J'essaie en vain de créer sur ma form_principale un bouton à la volee qui gère son événement OnClick()

    La création du bouton en lui même c'est fait je crois avoir compris
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    unit form_principal;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
      StdCtrls;
     
    type
     
      { Tform_principale }
     
      Tform_principale = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure UnBoutonClick(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end;
     
    var
      form_principale: Tform_principale;
      UnBouton: TButton;
     
    procedure FormPrincipaleMaximise;
    procedure FormPrincipaleCreateElements;
     
    implementation
     
    { Tform_principale }
     
    procedure Tform_principale.UnBoutonClick(Sender: TObject);
    begin
      ShowMessage('clic');
    end;
     
    procedure FormPrincipaleCreateElements;
    begin
      UnBouton := TButton.Create(form_principale);
      // Ici Self designe Form1. On aurait put mettre Form1 à la place de Self
      with UnBouton do
      begin
        Left    := 10;  // On initialise la propriété Left
        Top     := 20;  // et Top
        Width   := 220; // Ainsi que la largeur
        Caption := 'Je suis un nouveau bouton. Cliquez sur moi.';
        // On donne un titre au bouton
        Parent  := form_principale;
        // Ici c'est Form1 qui sera chargé d'afficher le composant. Maintenant le bouton est visible
        OnClick := UnBoutonClick(form_principale);
        // On affecte la procédure à l'événement OnClick du nouveau bouton
      end;
    end;
     
    procedure FormPrincipaleMaximise;
    begin
      // Maximisation de la fenetre principale
      form_principale.WindowState := wsMaximized;
    end;
     
    procedure Tform_principale.FormCreate(Sender: TObject);
    begin
      FormPrincipaleMaximise;
      FormPrincipaleCreateElements;
    end;
     
    initialization
      {$I form_principal.lrs}
     
    end.
    Par contre je n'arrive pas à lui dire
    SI CLIC SUR UnBouton ALORS execute procedure UnBoutonClick()

    Si quelqu'un a un début de solution...

    A ++ la communauté

    EDIT : je viens de trouver un tuto ici
    http://llb.developpez.com/compo_dyn/

    J'espère trouver la solution dedans

  2. #2
    Membre expérimenté
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Points : 1 688
    Points
    1 688
    Par défaut
    Bonsoir,

    Pour que cela fonctionne il faut faire

    OnClick := @UnBoutonClick
    Pour que l'association entre l'évènement et la procédure puisse fonctionner. (Ne pas oublier le @)

    Cordialement,
    Chris

  3. #3
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    unit form_principal;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
      StdCtrls;
     
    type
     
      { Tform_principale }
     
      Tform_principale = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure UnBoutonClick(Sender: TObject);
      private
        procedure FormPrincipaleMaximise;
        procedure FormPrincipaleCreateElements;
     
        UnBouton: TButton;
      public
        { public declarations }
      end;
     
    var
      form_principale: Tform_principale;
     
    implementation
     
    { Tform_principale }
     
    procedure Tform_principale.UnBoutonClick(Sender: TObject);
    begin
      ShowMessage('clic');
    end;
     
    procedure Tform_principale.FormPrincipaleCreateElements;
    begin
        UnBouton := TButton.Create(self);
        UnBouton.Left    := 10;  // On initialise la propriété Left
        UnBouton.Top     := 20;  // et Top
        UnBouton.Width   := 220; // Ainsi que la largeur
        UnBouton.Caption := 'Je suis un nouveau bouton. Cliquez sur moi.';
        UnBouton.Parent  := self;
        UnBouton.OnClick := @UnBoutonClick;
    end;
     
    procedure Tform_principale.FormPrincipaleMaximise;
    begin
      // Maximisation de la fenetre principale
      self.WindowState := wsMaximized;
    end;
     
    procedure Tform_principale.FormCreate(Sender: TObject);
    begin
      FormPrincipaleMaximise;
      FormPrincipaleCreateElements;
    end;
     
    initialization
      {$I form_principal.lrs}
     
    end.
    Il est indispensable de connaitre la programmation objet avant de se mettre à utiliser Lazarus sinon on se retrouve très vite à faire des trucs pas très jolies.

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 81
    Points : 52
    Points
    52
    Par défaut Vous êtes des champions !!
    Merci à vous 2 ...
    Bonne nuit a bientôt.

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

Discussions similaires

  1. Problème avec l'évènement onClick du bouton
    Par phenix1988 dans le forum Développement Web en Java
    Réponses: 6
    Dernier message: 29/12/2011, 20h53
  2. Réponses: 13
    Dernier message: 03/09/2010, 10h27
  3. Bouton alternant 2 fonctions sur le même événement onClick
    Par claire67 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/03/2009, 12h04
  4. évènement onclick d'un bouton
    Par brudao dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/02/2009, 09h47
  5. Pb Création évènement OnClick
    Par BigMike dans le forum C++Builder
    Réponses: 10
    Dernier message: 26/06/2006, 15h47

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