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 :

Gérer évènement composant runtime?


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 123
    Points : 68
    Points
    68
    Par défaut Gérer évènement composant runtime?
    Bonjour

    Jusqu'ici, j'utilisais la barre de Raize au design, et je crééais donc les groups + items statiquement.

    J'aimerais à présent modifier le contenu de la barre pour qu'il reflète les actions que l'utilisateur peut effectuer dans tel ou tel contexte. Ca revient à vider la barre, et créer de nouveaux groups et items dynamiquement à l'exécution.

    Pour gérer l'évènement click sur les items, on me dit d'ajouter une procédure liée à l'évènement OnClick, mais ça marche pô

    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
     
    procedure TForm1.MyOnClick(Sender: TObject);
    begin
      //Find which item triggered this
      case Of of
     
      end;
    end;
     
    procedure TForm1.FormDblClick(Sender: TObject);
    begin
      //E2010 Incompatible types: 'TNotifyEvent' and 'procedure, untyped
    pointer or untyped parameter'
      //RzGroupBar1.OnClick := MyOnClick(RzGroupBar1);
     
      //E2010 Incompatible types: 'TObject' and 'Class reference'
      //RzGroupBar1.OnClick := MyOnClick(TRzGroupBar);
     
    end;
    Merci pour toute piste.

  2. #2
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Quel est le type de RzGroupBar1 ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 123
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par ALWEBER Voir le message
    Quel est le type de RzGroupBar1 ?
    Voici la classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    type
      TForm1 = class(TForm)
        RzGroupBar1: TRzGroupBar;
        RzGroup1: TRzGroup;
        procedure FormActivate(Sender: TObject);
      private
        { Private declarations }
        procedure MyOnClick(Sender: TObject);
      public
        { Public declarations }
      end;
    J'ai trouvé qu'il fallait ne rien mettre : apparemment, Delphi utilise le paramètre implicite Sender: RzGroupBar1.OnClick := MyOnClick;

    Par contre, l'évènement MyOnClick n'est pas appelé:

    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
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, RzGroupBar;
     
    type
      TForm1 = class(TForm)
        RzGroupBar1: TRzGroupBar;
        RzGroup1: TRzGroup;
        procedure FormActivate(Sender: TObject);
      private
        { Private declarations }
        procedure MyOnClick(Sender: TObject);
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.MyOnClick(Sender: TObject);
    begin
      ShowMessage('clicked');
      //Find which item triggered this
      {
      case Of index(Sender)
        0:
     
     
      else
      end;
      }
    end;
     
    procedure TForm1.FormActivate(Sender: TObject);
    begin
      {
      //How to fill contents at run-time, and handle events?
      RzGroupBar1.AddGroup('Group1');
      RzGroupBar1.AddGroup('Group2');
      RzGroupBar1.Groups.AddToGroup()
      }
     
      //No OnClick() event
      //RzGroup1.On
     
      //Doesn't work
      RzGroupBar1.OnClick := MyOnClick;
     
    end;
    Merci.

  4. #4
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Je pense avoir une idée de la solution. Peux tu m'envoyer le source de l'unité dans laquelle sont décrits les objets
    TRzGroupBar et TRzGroup ?

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 460
    Points : 24 874
    Points
    24 874
    Par défaut
    Citation Envoyé par fredtheman Voir le message
    Bonjour
    J'ai trouvé qu'il fallait ne rien mettre : apparemment, Delphi utilise le paramètre implicite Sender: RzGroupBar1.OnClick := MyOnClick;
    Absolument pas !
    Tu confonds l'appel d'un évènement et l'affectation de celui-ci, dans la ligne ci-dessus, c'est une affectation, il n'y a pas de passage de paramètre, mais l'affectation d'un pointeur de procédure, c'est le @ qui est implicite pour récupérer l'adresse de la méthode

    la seule chose que je peux dire, c'est as-tu tenté simplement ceci pour affecter le Gestionnaire d'Evènement (MyOnClick) à l'évènement OnClick, puis d'en effectuer l'appel ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.FormDblClick(Sender: TObject);
    begin
      RzGroupBar1.OnClick := Self.MyOnClick; // Affectation
      RzGroupBar1.OnClick(RzGroupBar1); // Appel avec RzGroupBar1 comme Sender
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/01/2009, 17h42
  2. dropdownlist gérer événement lors d'une selection
    Par blandine555 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 25/07/2007, 19h11
  3. Réponses: 1
    Dernier message: 10/11/2006, 12h43
  4. Réponses: 1
    Dernier message: 20/08/2006, 18h48
  5. [Frame] Gérer les composants
    Par chastel dans le forum Débuter
    Réponses: 4
    Dernier message: 07/05/2004, 17h57

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