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

 Delphi Discussion :

peut-on savoir si le curseur sort d'un objet?


Sujet :

Delphi

  1. #1
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut peut-on savoir si le curseur sort d'un objet?
    Bonjour à tous,

    1. Je voudrais savoir s’il y a un moyen de savoir si le curseur est sorti d’un objet car je voudrais faire un bouton qui change de couleur quand on passe dessus et qui revient à la couleur initiale dès qu’on part(en POO).

    2.Est-ce qu’il y aurait un moyen de savoir si on utilise la molette de la souris sur un TPaintbox sans passer par le OnMouseWheel de la form(toujours en POO) ?

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Yop !
    Citation Envoyé par Basile le disciple Voir le message
    1. Je voudrais savoir s’il y a un moyen de savoir si le curseur est sorti d’un objet car je voudrais faire un bouton qui change de couleur quand on passe dessus et qui revient à la couleur initiale dès qu’on part(en POO).
    Selon les composants, il existe les événements OnMouseEnter et OnMouseLeave (ou Exit, me rappelle plus).

    Pour la 2, je passe.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    Le problème, c'est que mon objet dérive d'un TPaintbox qui n'a aucun de ces évènements.

  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
    Bonjour,

    Regardez ceci avec CMMouseEnter et CMMouseLeave

    http://www.phidels.com/php/index.php...9fde5237d95b95

  5. #5
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    Merci beaucoup mais je n'arrive pas à l'introduire dans mon code :

    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
    74
    75
    76
    77
    78
    79
    80
    81
     
    unit UScroolbar;
     
    interface
     
    uses
       Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
       Dialogs, UDegrade, ExtCtrls;
     
    type
      TScroll = class
      private
        fWidth,fHeight : integer;
        FOnMouseover,FOnMouseOut : TNotifyEvent;
     
        Paintbox1 : TPaintbox;
        bmp : TBitmap;
     
        procedure DoPaint(sender : TObject);
        procedure CMMouseEnter(var msg:TMessage); message CM_MOUSEENTER;
        procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE;
      public
     
         constructor create(aowner : TWINCONTROL);reintroduce;
     
      published
     
      property OnMouseover:TNotifyEvent read FOnMouseover write FOnMouseover ;
      property OnMouseOut :TNotifyEvent read FOnMouseOut write FOnMouseOut ;
     
    end;
     
     
    implementation
     
    Uses Unit1;
     
    constructor TScroll.create(aowner : TWINCONTROL);
    begin
      inherited create;
      Paintbox1:=TPaintbox.Create(aowner);
      bmp:=TBitmap.Create;
     
      fWidth:=50;
      fHeight:=300;
     
      With Paintbox1 do
      begin
        Parent:=aowner;
        Width:=fWidth;;
        Height:=fHeight;
        OnPaint:=DoPaint;
        bmp.Width:=Width;
        bmp.Height:=Height;
      end;
    end;
     
    procedure TScroll.DoPaint(sender : TObject);
    begin
      With bmp.Canvas do
      begin
     
      end;
      Paintbox1.Canvas.Draw(0,0,bmp);
    end;
     
    procedure TScroll.CMMouseEnter(var msg:TMessage);
    begin
     inherited;
       Form1.Caption:='entre';
       if assigned(OnMouseover) then OnMouseover(self);
    end;
     
    procedure TScroll.CMMouseLeave(var msg: TMessage);
    begin
     inherited;
     Form1.Caption:='sort';
     if assigned(OnMouseOut) then OnMouseOut(self);
    end;
     
    end.
    Pourriez-vous m'aider?

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par Basile le disciple Voir le message
    Merci beaucoup mais je n'arrive pas à l'introduire dans mon code :
    Ce qui précède n'est pas un message d'erreur valide, et à partir de là (c'est-à-dire rien), impossible de te dire quoi faire...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    Je n'ai rien mis car delphi compile parfaitement mais le caption de la form ne change pas!

  8. #8
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 857
    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 857
    Points : 11 291
    Points
    11 291
    Billets dans le blog
    6
    Par défaut
    C'est pê plutôt la PaintBox qui devrait écouter les messages : le TScroll n'est qu'une classe qui ne reçoit sûrement pas de messages de Windows, alors qu'un TWinControl doit en recevoir ?
    Delphi 5 Pro - Delphi 11.3 Alexandria 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 !

  9. #9
    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
    En vérité, l'objet ne dérive pas de TPaintBox, mais il en contient une.

    Pour continuer sur le même chemin, Il faudrait dériver TPaintBox avec les évènements OnMouse... et utiliser ce composant dans le TScroll.

  10. #10
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 685
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 685
    Points : 13 102
    Points
    13 102
    Par défaut
    Cette classe TScroll ne sert à rien. C'est bien TPaintBox qu'il faut dériver.

  11. #11
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    Excusez-moi pour le retard de ma réponse mais j'avais une semaine très chargée.

    Merci beaucoup pour vos réponses, je vais dériver d'un TPaintbox pour pouvoir déclarer ces deux événements!

    Est-ce que quelqu’un aurait une idée pour le OnMouseWheel(Down et Up) dans le TPaintbox.

  12. #12
    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
    TPaintBox hérite de TControl qui implemente les méthodes et évènements de scroll en section "protected". Il suffit de les dériver avec le mot clef "Override".

  13. #13
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    Merci beaucoup pour votre réponse mais je n'ai pas trouver la procedure qui gère
    le OnMouseWheelDown dans le TControl.

  14. #14
    Membre averti

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Points : 332
    Points
    332
    Par défaut
    Bonjour,

    Dans D2006 on trouve sans problème 'OnMouseWheel'.
    Faites une recherche. Qu'elle est votre VERSION de Delphi ?

    TControl.OnMouseWheel Evénement

    Se produit quand l'utilisateur fait tourner la molette de la souris.

    Classe
    TControl

    Syntaxe

    [Delphi] property OnMouseWheel: TMouseWheelEvent;

    Description
    Ecrivez du code dans le gestionnaire d'événement OnMouseWheel pour répondre aux messages de la molette de la souris. S'il n'y a pas de gestionnaire d'événement OnMouseWheel ou si le message de la molette de la souris n'est pas géré dans le gestionnaire d'événement OnMouseWheel, selon
    le sens de rotation de la molette un événement OnMouseWheelUp ou OnMouseWheelDown a lieu;
    PL

  15. #15
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Bnsoir Basile,

    Comme le dit AndNotOr, ton unité ne sert strictement à rien, il te faut dérriver le composant TPaintBox, créer ton propre composant serait mieux...

    Exemple :

    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
    unit PaintBoxEx ;
     
    interface
     
    uses
      SysUtils, Classes, Controls, Messages, Windows, Dialogs, StdCtrls;
     
    type
     
      TPaintBoxEx = class(TPaintBox)
      private
        { Déclarations privées }
      protected
        { Déclarations protégées }
         procedure WMMOUSEWHEEL(var Message :TMessage); message WM_MOUSEWHEEL;
     
      public
        { Déclarations publiques }
      published
        { Déclarations publiées }
      end;
     
    procedure Register;
     
    implementation
     
    procedure TPaintBoxEx.WMMOUSEWHEEL(var Message: TMessage);
    begin
      inherited;
    //
    // Que faire ? dans qu'elle étagère ?
    //
    end;
     
     
    procedure Register;
    begin
      RegisterComponents('ExCompos', [TPaintBoxEx]);
    end;
    end.

    Bye.

  16. #16
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    Le problème, c'est que j'hérite du Canvas du TPaintbox et je ne veux pas avoir de propriété canvas dans mon objet.

  17. #17
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Basile le disciple Voir le message
    Le problème, c'est que j'hérite du Canvas du TPaintbox et je ne veux pas avoir de propriété canvas dans mon objet.
    dans ce cas ton TScroll doit utiliser un dérivé de TPaintBox qui déclarera des événements OnMouseOver et OnMouseOut que ton TScroll définira...mais c'est un montage curieux.

    il y a-t-il une raison particulière pour laquelle tu ne veux pas dériver de TWinControl ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  18. #18
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    Bonjour, merci pour votre réponse

    Je ne veux pas qu'un objet puisse être parent de TScroll!

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/07/2007, 18h15
  2. [D1] Peut-on savoir si le navigateur a été fermé ?
    Par adaneels dans le forum Contribuez
    Réponses: 6
    Dernier message: 03/11/2006, 09h09
  3. [jtable] Comment savoir si le curseur est dans la cellule?
    Par doudine dans le forum Composants
    Réponses: 2
    Dernier message: 23/01/2006, 16h34
  4. [Système]comment peut on savoir si java tourne sur l'ordi?
    Par loveflower dans le forum Général Java
    Réponses: 2
    Dernier message: 03/01/2005, 18h01
  5. peut-on savoir si un champ a une sequence??
    Par e11137 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/01/2004, 14h54

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