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

Lazarus Pascal Discussion :

Couleur d'un TButton [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Modulpro
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut Couleur d'un TButton
    Bonjour,

    Ma question va peut-être paraître stupide : à quoi sert la propriété "color" d'un TButton ?
    J'ai essayé de la modifier via l'inpecteur d'objet et via le code, et le button reste désepérément blanc, à la conception comme à l'execution.
    D'où une autre question : comment modifier la couleur de fond d'un Tbutton?

    Merci d'avance (c'est agaçant d'être bloqué sur quelque chose d'aussi simple)

  2. #2
    Membre chevronné Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 60

    Informations forums :
    Inscription : Novembre 2004
    Messages : 669
    Par défaut
    Bonjour
    Sous Ubuntu - Gnome / Lazarus 0.9.28.2
    Le TButton change bien de couleur quand on la change d'a partir sa propriété Color.
    A+

  3. #3
    Membre éprouvé Avatar de Modulpro
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut
    Bonjour,

    J'ai effectivement la 0.9.28.2, mais je travail sous XP. J'ai essayé sur deux PC differents, à chaque fois, le TButton reste blanc.
    Qulequ'un a t-il le même probleme ?
    Est-ce que Windows n'imposerait pas certains réglages pas défauts ?

  4. #4
    Membre chevronné Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 60

    Informations forums :
    Inscription : Novembre 2004
    Messages : 669
    Par défaut
    Quand je programmer sous Windows XP avec Borland Builder 6, j'avait le même problème avec les TButton, la propriété Color ne colorisée pas le bouton,

    CGI pour BCB6 avait créé un composant TButton avec la propriété Color qui marchait,
    Je ne sais pas créer des composants avec Lazarus, peut on l'arranger pour Lazarus ?
    j'avais imprimé la page, je peut la retrouver si il le faut.

    sinon il y a cela, bouton degradé :
    http://chgi.developpez.com/compo7/

  5. #5
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Par défaut
    Bonjour

    Sous Windows, Lazarus utilise les composant du système (cad les API windows) et le TButton de windows ne permet pas le changement de couleur.

    Une des solutions est de rajouter un événement sur 'onPaint' et de dessiner à la main la couleur définie dans la propriété Color (Sans oublier de faire un DrawText après, bien sûr).
    Une des autres solution est d'utiliser le speedbutton, entièrement paramétrable.

  6. #6
    Membre éprouvé Avatar de Modulpro
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut
    Bonjour,

    Tout d'abord, merci pour la réponse.
    Etant programmeur débutant, deux questions me viennent :
    - Comment "ajouter un événement sur 'onPaint' " ? (je n'ai trouvé aucune propriété onPaint sur les Tbutton)
    - Comment " dessiner une couleur à la main" ?

  7. #7
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Par défaut
    Bonjour

    Pour ce qui est de l'événement onPaint du TButton, j'ai été un peu vite .... effectivement, celui-ci n'existe pas c’était juste de la théorie.

    Du coup le TSpeedButton reste la solution multiplateforme à utiliser.


    Sinon pour dessiner une couleur à la main :

    Quand on dessine dans une fenêtre, on dessine dans un canvas. Le canvas a une brosse (brush) qui permet de définir la couleur avec laquelle on va dessiner. Du coup on obtient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    objet.canvas.brush.color := clRed;
    object.canvas.rectangle(Left,Top,Right,Bottom);
    PS : onPaint existe sur TSpeedButton

  8. #8
    Membre éprouvé Avatar de Modulpro
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut
    Merci pour ces précisions.

    J'ai réussis à dessiner sur le canvas du Tspeedbutton en remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Left,Top,Right,Bottom)
    par Resultat : un rectangle de la couleur demandée, mais qui ne ressemble plus du tout à un button (les coins ne sont pas arrondis, pas de cadre bleu...)

    N'y a t-il pas de solution pour colorer uniquement le fond du speedbutton (au lieu de dessiner par dessus) ?

    Merci.

  9. #9
    Membre expérimenté

    Profil pro
    dirlo
    Inscrit en
    Février 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : dirlo

    Informations forums :
    Inscription : Février 2008
    Messages : 83
    Par défaut
    pourquoi pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Roundrect(1,1,width-2,height-2,?,?)
    ou quelque chose comme ça?

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

Discussions similaires

  1. Changer la couleur d'un TButton
    Par optixpro dans le forum C++Builder
    Réponses: 8
    Dernier message: 01/05/2009, 01h02
  2. En faisant OnEnter / OnLeave sur TButton : changer Couleur
    Par kerotan dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/12/2007, 10h05
  3. Changement de couleur du caption d'un TButton
    Par Bourak dans le forum Delphi
    Réponses: 4
    Dernier message: 27/07/2007, 17h04

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