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

Composants VCL Delphi Discussion :

[TFrame] Problème de gestion du OnMouseDown avec une Frame


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 30
    Points : 28
    Points
    28
    Par défaut [TFrame] Problème de gestion du OnMouseDown avec une Frame
    Salut,

    J'ai un petit problème avec la gestion du OnMouseDown d'un composant d'une frame.

    J'ai une frame et une fiche contenant cette frame.

    Je souhaite implémenter dans la fiche l'évènement OnMouseDown d'un composant de la frame. Mais l'évènement ne semble pas déclenché.

    Quelqu'un aurait il une solution?

    Merci d'avance!!!
    Si vous avez un travail où il n'y a pas de complications, vous n'avez pas de travail.
    Malcolm Forbes (Analyste financier américain)

  2. #2
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Après quelques petits essais sur les onmousedown de frame et de composants en frame, le comportement est différent selon l'ordre de création des procedures sur évènement.

    Je m'explique.

    J'ai créer une Frame et mis 2 instances sur une fiche.
    Sur le première, j'ai fait une procedure 'TForm1.Frame21MouseDown'

    Ensuite dans l'unit de la frame,
    j'ai fait une procedure 'TFrame2.FrameMouseDown'

    De nouveau dans la fiche,
    j'ai ensuite créé une procedure sur la deuxième frame
    'TForm1.Frame22MouseDown'
    Delphi m'a automatiquement ajouté à l'intérieur l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Frame22.FrameMouseDown(Sender, Button, Shift, X, Y);
    ce petit morceau n'a pas été rajouté dans la procedure de la première frame et le bien sur un mousedown sur cette première frame, l'évènement inclus dans l'unit de la frame n'est pas pris en compte.

    J'ai refait la même chose avec un composant dans la frame, c'est la même chose

    Ton problème ne serait t'il pas en rapport avec ceci ?

    J'espère avoir été clair.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    Merci pour ta réponse mais je ne pense pas que cela soit lié car mon problème est le non déclenchement de l'évènement "TForm1.Component1deFrame1MouseDown".
    Si vous avez un travail où il n'y a pas de complications, vous n'avez pas de travail.
    Malcolm Forbes (Analyste financier américain)

  4. #4
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Ou l'as tu implémenté ?

    Dans l'unit de la frame ?

    Dans l'unti de la fiche ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    Je ai implémenté l'évènement dans l'unit de la fiche car j'accède à des éléments uniquement disponibles sur cette fiche.
    Si vous avez un travail où il n'y a pas de complications, vous n'avez pas de travail.
    Malcolm Forbes (Analyste financier américain)

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    C'est bon je viens de trouver après un bon repas et une petite sièste, on a l'esprit plus clair

    Il m'a suffit de créer un gestionnaire d'evenement.

    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
     
    {----------UNIT FRAME---------------}
      TFrame
        (...)
        procedure viewContractsMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
      private
        FOnRightMouseButtonClick: TNotifyEvent;
        (...)
        procedure DoRightMouseButtonClick;
      public
        (...)
        property OnRightMouseButtonClick: TNotifyEvent read FOnRightMouseButtonClick write FOnRightMouseButtonClick;
      end;
     
    procedure TFrame.DoRightMouseButtonClick;
    begin
      if Assigned(FOnRightMouseButtonClick) then
        FOnRightMouseButtonClick(Self);
    end;
     
    procedure TFrame.viewContractsMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
      if (Button = mbRight) then DoRightMouseButtonClick;
    end;
     
     
    {----------UNIT FORM---------------}
      TForm
        (...)
      public
        (...)
        constructor Create(AOwner: TComponent); override;
        procedure RightMouseButtonClick(Sender: TObject);
      end;
     
    constructor TCashFlowEditor.Create(AOwner: TComponent);
    begin
      (...)
      Frame1.OnRightMouseButtonClick := RightMouseButtonClick;
      (...)
    end;
     
    procedure TForm.RightMouseButtonClick(Sender: TObject);
    begin
      // code à executer
    end;
    Merci quand meme pour ton aide bjl
    Si vous avez un travail où il n'y a pas de complications, vous n'avez pas de travail.
    Malcolm Forbes (Analyste financier américain)

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

Discussions similaires

  1. [J2EE/JSP] Gestion des erreurs avec une base SQL server 2005
    Par critok dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/04/2006, 16h57
  2. [Upload] Problème pour gestion d'erreur avec class
    Par allserv dans le forum Langage
    Réponses: 2
    Dernier message: 27/12/2005, 13h00
  3. problème pour faire un insert avec une image
    Par vbcasimir dans le forum Modules
    Réponses: 3
    Dernier message: 02/11/2005, 09h21
  4. Problème de gestion de chaînes avec pointeur
    Par LorDjidane dans le forum C
    Réponses: 18
    Dernier message: 19/10/2005, 15h40
  5. Réponses: 2
    Dernier message: 14/05/2004, 14h32

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