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 :

Changer couleur font label lors du passage du curseur


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut Changer couleur font label lors du passage du curseur
    Bonjour,
    J'ai des labels jaunes et je voudrais que lorsque le curseur de la souris passe sur les 5 labels de ma Form, ceux-ci deviennt orange.
    Pour l'instant j'ai trouvé le code pour le rouge:

    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
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, jpeg, ExtCtrls, StdCtrls;
     
    type
      TForm1 = class(TForm)
        MainMenu: TImage;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Label5: TLabel;
        procedure Label3MouseEnter(Sender: TObject);
        procedure Label5Click(Sender: TObject);
        procedure Label1MouseEnter(Sender: TObject);
        procedure Label2MouseEnter(Sender: TObject);
        procedure Label4MouseEnter(Sender: TObject);
        procedure Label5MouseEnter(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
     
     
    procedure TForm1.Label3MouseEnter(Sender: TObject);
    begin
      Form1.Label3.font.Color := clRed;
    end;
     
    procedure TForm1.Label1MouseEnter(Sender: TObject);
    begin
      Form1.Label1.Font.Color := clRed;
    end;
     
    procedure TForm1.Label2MouseEnter(Sender: TObject);
    begin
      Form1.Label2.Font.Color := clRed;
    end;
     
    procedure TForm1.Label4MouseEnter(Sender: TObject);
    begin
      Form1.Label4.Font.Color := clRed;
    end;
     
    procedure TForm1.Label5MouseEnter(Sender: TObject);
    begin
      Form1.Label5.Font.Color := clRed;
    end;
     
    procedure TForm1.Label5Click(Sender: TObject);
    begin
    Application.Terminate;
    end;
    end.
    Quelques petits soucis cependant:

    1) Lors de la compilation, seul le label3, premier utilisé pour test se colore en rouge, les autres restent jaunes.

    2) Je voudrais que ce soit en orange au lieu du rouge, mais clOrange ne marche pas...

    3) Je voudrais que le font des labels redevienne jaune lorsque le curseur n'est plus dessus (not OnMouseEnter?)

    Merci pour votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Points : 85
    Points
    85
    Par défaut
    couleur orange en delphi : $000080FF


    ya un petit prog pour ca : ColorCop.exe : http://www.scriptfx.com/webtools/col...s/colorcop.zip

    une couleur en delphi c en hexadecimal, de 0 a F : $00BBVVRR (bleu, vert, rouge) (RGB)

    exemple rouge : $000000FF

    et 'not OnMousseEnter' c'est OnMousseLeave

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Comme précisé par Magik Mushroom, la valeur pour le orange est $000080FF.

    Tu peux d'ailleurs définir la constante clOrange:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      const clOrange = TColor($000080FF);
    Ensuite puisque les évènements OnMouseEnter et OnMouseLeave seront identiques pour tous les labels, autant centraliser ces évènements dans une seule méthode en utilisant le Sender.

    Ton code se résume à ceci:
    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
    type
      TForm1 = class(TForm)
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Label5: TLabel;
        procedure LabelMouseEnter(Sender: TObject);
        procedure LabelMouseLeave(Sender: TObject);
        procedure Label5Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    const
      clOrange = TColor($000080FF);
     
    procedure TForm1.LabelMouseEnter(Sender: TObject);
    begin
      TLabel(Sender).Font.Color := clOrange;
    end;
     
    procedure TForm1.LabelMouseLeave(Sender: TObject);
    begin
      TLabel(Sender).Font.Color := clYellow;
    end;
     
    procedure TForm1.Label5Click(Sender: TObject);
    begin
      Close;  // Close appellera Application.Terminate puisque fiche principale. 
    end;
     
    end.
    Depuis l'inspecteur d'objet prend le soin d'affecter à chacun des Labels les deux procédures LabelMouseEnter et LabelMouseLeave.

    @+ Claudius

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    Nickel!
    J'essaie et je vous tiens au courant!
    Merci à vous deux!

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    Re,
    Voici mon code final:

    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
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, jpeg, ExtCtrls, StdCtrls;
     
    type
      TForm1 = class(TForm)
        MainMenu: TImage;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Label5: TLabel;
        procedure LabelMouseEnter(Sender: TObject);
        procedure Label5Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    const
    clOrange = TColor($000080FF);
     
    procedure TForm1.LabelMouseEnter(Sender: TObject);
    begin
      TLabel(Sender).Font.Color := clOrange;
    end;
     
    procedure TForm1.Label5Click(Sender: TObject);
    begin
    Close;
    end;
    end.
    Pas d'erreur, mais ça ne marche pas.
    Les labels restent jaunes.
    Que se passe-t'il?

  6. #6
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Le code qu'a posté Cl@udius fonctionne parfaitement ... Tu as oublié ce passage de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.LabelMouseLeave(Sender: TObject);
    begin
      TLabel(Sender).Font.Color := clYellow;
    end;
    Le OnMouseEnter, permet d'exécuter du code quand le curseur de la souris entre dans le TLabel, et le OnMouseLeave, lorsque tu en sors. Donc si tu ne mets que le OnMouseEnter, il est normal que tu n'aies pas de changement ... et que la couleur reste orange (vu ton code d'avant)

    A+

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    Merci, j'ai un autre problème, je répète 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
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, jpeg, ExtCtrls, StdCtrls;
    
    type
      TForm1 = class(TForm)
        MainMenu: TImage;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Label5: TLabel;
        procedure TForm1.LabelMouseEnter(Sender: TObject);
        procedure TForm1.Label5Click(Sender: TObject);
        procedure TForm1.LabelMouseLeave(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    const
    clOrange = TColor($000080FF);
    
    procedure LabelMouseEnter(Sender: TObject);
    begin
      TLabel(Sender).Font.Color := clOrange;
    end;
    
    procedure LabelMouseLeave(Sender: TObject);
    begin
      TLabel(Sender).Font.Color := clYellow;
    end;
    
    procedure Label5Click(Sender: TObject);
    begin
    Close;
    end;
    end.
    Je compile > Je reçois le message Expected '=' but received '(' là où j'ai mis en gras en rouge dans le code.
    Pourquoi j'ai ça?

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 969
    Points : 15 434
    Points
    15 434
    Par défaut
    Comme ça ça fonctionne :
    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
        procedure LabelMouseEnter(Sender: TObject);
        procedure LabelMouseLeave(Sender: TObject);
        procedure Label5Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    const
      clOrange = TColor($000080FF);
     
    procedure TForm1.LabelMouseEnter(Sender: TObject);
    begin
      TLabel(Sender).Font.Color := clOrange;
    end;
     
    procedure TForm1.LabelMouseLeave(Sender: TObject);
    begin
      TLabel(Sender).Font.Color := clYellow;
    end;
     
    procedure TForm1.Label5Click(Sender: TObject);
    begin
      Close;
    end;
    Laborieux, mmmh ?
    --
    jp

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    Je ne comprends pas, j'ai recopié ton code, mes labels ne réagissent pas...

    Edit: C'est bon j'ai trouvé, il faut taper LabelMouseEnter dans le champ MouseEnter de chaque label.
    Pareil pour les MouseLeave.

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 969
    Points : 15 434
    Points
    15 434
    Par défaut
    Cl@udius te l'a déjà dit ce matin :
    Depuis l'inspecteur d'objet prend le soin d'affecter à chacun des Labels les deux procédures LabelMouseEnter et LabelMouseLeave.
    --
    jp

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    Oui justement mais je ne savais pas qu'il fallait mettre LabelMouseEnter au lieu de Label1MouseEnter.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    Merci à tous, ça a l'air de marcher maintenant!

    J'ai une autre demande, je voudrais dans le même esprit aggrandir le font de mes labels lorsque la souris est dessus et les ramener à leur taille initiale lorsque la souris n'est plus dessus.
    Font de 18 à 20.

    Un petit coup de main, s'il vous plait?

    Edit: Comment faire pour mettre deux actions pour la même action dans l'inspecteur d'objets, par la même occasion?
    Les séparer par une virgule? Un point-virgule?

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 969
    Points : 15 434
    Points
    15 434
    Par défaut
    Citation Envoyé par User Name Voir le message
    (...)Font de 18 à 20.
    Un petit coup de main, s'il vous plait?
    Ouais, ben, faudrait voir à chercher un peu quand même, quoi, parce que là c'est vraiment simple. Et tu vas jamais rien comprendre si tu cherches pas par toi-même !

    Idem pour l'autre question.
    --
    jp

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    C'est bon j'ai trouvé.
    Il suffisait d'ajouter:

    TLabel(Sender).Font.Size := 20 dans la procédure LabelMouseEnter et
    TLabel(Sender).Font.Size := 18 dans la procédure LabelMouseLeave.

    Problème: Certains de mes labels descendent de 1cm dans la Form lorsqu'ils grandissent.
    Normal?

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

Discussions similaires

  1. [CS4] Changer la couleur d'un texte lors du passage de la souris
    Par loubiak67 dans le forum Dreamweaver
    Réponses: 4
    Dernier message: 08/01/2010, 02h46
  2. changer couleur d'un <label>
    Par gabychon dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/01/2006, 15h19
  3. changer couleur du lien au passage de la sourie
    Par toome dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 01/08/2005, 11h11
  4. Réponses: 11
    Dernier message: 11/06/2005, 15h08
  5. Changer la couleur du texte lors passage souris sur un TD !
    Par Kokito dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/01/2005, 16h40

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