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

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

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Points : 175
    Points
    175
    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 confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    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+
    .
    Why
    .
    //------------------

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

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Points : 175
    Points
    175
    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 confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    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/
    .
    Why
    .
    //------------------

  5. #5
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Points : 195
    Points
    195
    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 habitué Avatar de Modulpro
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Points : 175
    Points
    175
    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 habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Points : 195
    Points
    195
    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 habitué Avatar de Modulpro
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Points : 175
    Points
    175
    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 averti

    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
    Points : 404
    Points
    404
    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?

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

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Points : 175
    Points
    175
    Par défaut
    Bonsoir,

    Merci pour le conseil, cela fonctionne très bien avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SpBt.canvas.roundrect(4,4,SpBt.width-4,SpBt.height-4,4,4);
    Juste une dernière petite question : comment afficher ensuite la caption du speedbutton ?
    (encore une fois, "faire un DrawText", cela ne me parle pas beaucoup : je n'ai trouvé aucune procédure de ce nom sur le speedButton ou sur son canvas)

  11. #11
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Salut

    Utilise les propriétés TextOut ou TextRect du Canvas ... Pour centrer le texte, utilise les propriétés TextHeight et TextWidth qui te renvoient les dimensions en pixel du texte.

    Bonne chance

  12. #12
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Points : 195
    Points
    195
    Par défaut
    Bonjour

    Une fois de plus j'ai été un peu vite, désolé, il s'agit plutôt de TextRect
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextRect(ARect: TRect; X, Y: integer; const Text: string; const Style: TTextStyle);
    ARect détermine la zone du canvas dans lequel on va écrire le texte, sans en sortir, X et Y les coordonnées du texte dans ladite zone, et enfin Style détermine la façon dont ton texte va être écrit (alignement gauche/droite, haut/bas, avec ou sans retour à la ligne, ...)

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

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

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

    Merci beaucoup pour vos réponses, graçe aux quelles j'ai (enfin) pu obtenir un button en couleur !!
    (la propriété TextOut me convient parfaitement, encore merci)

+ 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