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 :

Détection d'un clic sur un composant enfant et dessin sur le parent


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    stagiaire développement informatique
    Inscrit en
    Juillet 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : stagiaire développement informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Détection d'un clic sur un composant enfant et dessin sur le parent
    Bonjour,

    Mon titre n'est pas très très clair alors je m'explique : j'ai créé un composant et j'ai besoin de détecter quand on clique dessus alors j'ai créé des événements basiques :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    procedure MouseDown(Button : TMouseButton; Shift : TShiftState; X, Y : integer); override;
        procedure MouseMove(Shift : TShiftState; X, Y : integer); override;
        procedure MouseUp(Button : TMouseButton; Shift : TShiftState; X, Y : integer); override;
    Mon problème c'est que sur mon composant j'en ai implanté d'autres, par exemple j'ai un shape sur le haut de mon composant, un edit (en lecture seule donc j'ai pas besoin de cliquer dessus) au milieu et du coup quand je clique sur un de ces deux derniers composants je ne détecte pas quand l'utilisateur clique sur mon composant de base.

    Si vous avez une solution ça m'aiderait bien !


    J'ai une deuxième question : j'aimerais depuis mon composant, pouvoir dessiner sur le parent, donc sur la fiche sur laquelle il va apparaître, est-ce que c'est possible ? et comment faire SVP ?

    Merci pour vos réponses

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 844
    Points : 11 274
    Points
    11 274
    Billets dans le blog
    6
    Par défaut
    Pour le premier point, il suffit d'affecter aux OnMouseMove et autres des composants fils la procédure de ton composant père.

    Pour le second point, le Parent sera-t-il forcément une fiche ? Pourquoi pas un Panel ? Où veux-tu écrire sur le Parent ?
    Delphi 5 Pro - Delphi 10.4 Rio Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    stagiaire développement informatique
    Inscrit en
    Juillet 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : stagiaire développement informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Pour le premier point, il suffit d'affecter aux OnMouseMove et autres des composants fils la procédure de ton composant père.

    Pour le second point, le Parent sera-t-il forcément une fiche ? Pourquoi pas un Panel ? Où veux-tu écrire sur le Parent ?


    Merci de la réponse ça a l'air plus facile que ce a quoi je m'attendais pour le premier point, par contre je suis pas sur d'avoir compris précisemment, j'ai déclaré la procédure MouseDown dans un composant fils et dans l'implémentation j'ai créé cette procédure : (Tentete => fils) (FlowStep5 =>Parent)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TEntete.MouseDown(Button : TMouseButton; Shift : TShiftState; X, Y : integer);
    begin
      inherited;
      FlowStep5.mouseDown(button, Shift , X, Y );
    end;
    ça ne fonctionne pas donc si tu pouvais me donner quelques précisions ce serais sympa




    Pour le deuxième point j'aimerais pouvoir dessiner sur les bords de mon composant qui sera, pour ce que j'ai prévu, installé sur une fiche. J'aimerais par exemple que quand on le clique dessus, je dessine a moitié sur le composant a moitié en dehors pour bien montrer qu'il est séléctionné. Un peu comme en design Time en fait..

  4. #4
    Futur Membre du Club
    Homme Profil pro
    stagiaire développement informatique
    Inscrit en
    Juillet 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : stagiaire développement informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    quelqu'un pourrait me montrer un exemple pour affecter l'évènement d'un composant père au composant fils svvpp ?? ça m'aiderait beaucoup

  5. #5
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 844
    Points : 11 274
    Points
    11 274
    Billets dans le blog
    6
    Par défaut
    Je pense qu'il faut faire qqch qui ressemble à :
    - dans le Create de ton compo, où tu crées les enfants (je suppose), tu affectes au OnMouseDown (par ex.) des enfants la procédure MouseDown de ton compo ;
    - celle-ci devra traduire les coordonnées relatives au fils en absolues du composant, si nécessaire.

    Dans ton exemple, je ne vois pas le paramètre Sender : as-tu redéfini les événements ? Ce paramètre te servirait à tester si fils ou parent, le type cliqué, etc.
    Delphi 5 Pro - Delphi 10.4 Rio Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  6. #6
    Futur Membre du Club
    Homme Profil pro
    stagiaire développement informatique
    Inscrit en
    Juillet 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : stagiaire développement informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    j'ai rajouté ce code dans mon constructeur, le résultat est le même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      entete.OnMouseDown:=OnMouseDown;
      entete.OnMouseMove:=OnMouseMove;
      entete.OnMouseUp:=onMouseup;
    Pour le paramètre sender, si je le rajoute, il faut que j'enlève les override et inherited sinon mon programme ne se compile plus. après ça mes évènements ne fonctionnent pus du tout

Discussions similaires

  1. Dessiner sur un composant
    Par Panaméen dans le forum Windows Forms
    Réponses: 9
    Dernier message: 18/05/2009, 15h08
  2. [SWING]Dessiner sur un composant
    Par Tarteens dans le forum AWT/Swing
    Réponses: 22
    Dernier message: 02/07/2007, 11h50
  3. Dessiner sur un composant sans Canvas
    Par josse95 dans le forum C++Builder
    Réponses: 10
    Dernier message: 31/03/2007, 20h01
  4. Dessiner sur un composant sans Canvas
    Par bandit boy dans le forum C++Builder
    Réponses: 6
    Dernier message: 08/02/2007, 14h12
  5. dessiner sur un composant picturebox
    Par xantares dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 03/01/2007, 13h05

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