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

EDI Delphi Discussion :

[VCL] une checkbox ne prend pas en compte la couleur (fonte et même fond) !


Sujet :

EDI Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 890
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 890
    Billets dans le blog
    66
    Par défaut [VCL] une checkbox ne prend pas en compte la couleur (fonte et même fond) !
    Bonjour,

    c'est moi ou c'est un bug ?
    pour une fois qu'avec une version XE (DX 10 pour être précis) je fais un programme VCL

    voilà j'ai posé sur ma forme une checkbox et je veux que le texte soit rouge, rien de plus facile normalement puisque il y a la propriété Font.Color
    sauf que, en mode design comme au runtime , rien à faire la checkbox reste en noir (clWindowText)

    j'ai également testé avec XE4 sur un autre poste même chose !

    Qu'en est-il chez vous (pour les versions XE, j'ai testé jusqu'à 2010 avec les versions que j'ai de disponibles sans noter de problème) ? est-ce un bug répertorié ou jamais reporté ? c'est pour cette raison que je pose cette question dans EDI

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 828
    Par défaut
    J'ai eu récemment le souci, ... mais sans le résoudre

    Il me semble que pour le résoudre, il faut:
    1. Soit activer le thème Windows
    2. Soit intercepter le message WM_CTLCOLORSTATIC ... mais je n'y suis pas arrivé. Et en plus, il faut que ce soit le bon message et je n'en suis pas sûr

  3. #3
    Membre Expert
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Par défaut
    Bonjour,

    La checkbox est un contrôle Windows qui fait donc appel à une API Windows et utilise le Style windows. D'ou la couleur qui n'est pas paramétrable. D'ailleurs si vous regardez l'aide sur la partie Font/Color vous verez ceci :

    Remarque : La modification de la couleur de fonte du libellé (Caption) n'est pas supportée pour certains contrôles..
    Et de plus si vous allez dans Projets/Options/Application et que vous décochez l'option "Activer les thèmes d'exécution" et que vous exécutez votre application, vous verrez que le couleur est bien prise en compte.
    Donc ce n'est pas un bug, mais un fonctionnement voulu.
    Pour la solution ne rien mettre dans le caption de la Checkbox et venir coller un Tlabel (Le Tlabel n'étant pas un contrôle windows. Il est dessiné directement par la VCL) avec la couleur que vous voulez directement contre la checkbox.

  4. #4
    Membre Expert
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Par défaut
    J'en profite pour rajouter que si ça marchait avant avec Delphi 2010, c'est parce que, si je ne me trompe pas, les styles VCL sont apparus en Delphi XE2.

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 890
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 890
    Billets dans le blog
    66
    Par défaut
    Re,

    Effectivement, après recherches, ce comportement est du aux Styles (nouveauté VCL que je n'avais pas intégré) je vote pour la solution
    Citation Envoyé par Thierry Laborde
    Pour la solution ne rien mettre dans le caption de la Checkbox et venir coller un Tlabel (Le Tlabel n'étant pas un contrôle windows. Il est dessiné directement par la VCL) avec la couleur que vous voulez directement contre la checkbox.
    bien évidemment (on ne sait jamais le programme pourrait devenir pérenne et les utilisateurs vouloir des thèmes )

    Donc c'était moi le (trop d'habitudes avec les "vieilles" versions)

    Merci

  6. #6
    Membre Expert
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Par défaut
    L'autre solution peut être aussi de créer un style particulier dans lequel vous définissez une couleur spécifique pour les textes des checkbox. Ce qui aura l'avantage de le définir une seule fois et d'avoir dans votre application toutes les checkbox avec la même couleur.

  7. #7
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Ou bien utiliser un composant tiers. (Ou encore réinventer la roue en développant son propre composant).

    Les checkbox de devexpress sont customisables par exemple. Mais je ne serais pas surpris que chez TMS ça ne soit pas le cas également. Ou chez d'autres aussi...

  8. #8
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 231
    Par défaut
    Le fait que la TCheckBox ne change pas de couleur de texte remonte à Delphi 7 et TXPManifest qui utilisait le style de l'OS qui n'acceptait plus que l'on change certains élements

    Idem, je collais un label à coté qui en plus lui gère son AutoSize ce que le TCheckBox ne fait pas !

    Ensuite, je suis encore sous Delphi XE2 ayant fait dans une autre société du C++Builder XE3, j'aime bcp les Styles VCL mais la propriété StyleElements me manque !
    Du coup, je me suis fait un tas de StyleHook (TButton, TListView, TTabControl, TDBGrid, TEdit ...) merci au site "The Road to Delphi" qui m'a servi de base pour mes propres StyleHook
    Pour contourner certains limitations pour changer la couleur de fond et de fonte des Edit en particulier lorsqu'un Style est actif (ce qui est le cas pour pas mal de mes applis avec Amethyst Kamri en PROD et Smokey Karmi en DEBUG)
    Aide via F1 - Utilisez l'I.A. - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité ! Sachez-le : l'IA remplace la très grande majorité des développeurs, pas seulement les ignares ...

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 472
    Par défaut
    Effectivement la Tcheckbox avec les styles c'est assez pénible. Le wordwrap n'est pas géré si un style est appliqué en DXE2 mais je crosi que c'est corrigé ensuite.....

    ShaiLeTroll, si tu as utilisé les styleshook pour pouvoir gérer les couleurs lorsque l'on en a besoin malgré l'utilisation d'un style,
    peux tu nous éclairer un peu, j'avoue que je me suis un peu perdu et j'ai fais des essais non concluants en me basant sur
    le site "The Road to Delphi" mais je n'ai pas tout compris !
    Merci

  10. #10
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 828
    Par défaut
    Ahahahahah toi aussi

    Il me semble [toujours] qu'il te manque la bibliothèque: VCL Styles Utils

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 472
    Par défaut
    Effectivement je ne l’invoque pas. J'ai Vcl.styles.hooks pour les boites de dialogue mais pas Vcl.styles.utils.

    Tu peux indiquer en gros son utilité ?

    Merci

  12. #12
    Invité de passage
    Homme Profil pro
    loisir
    Inscrit en
    Février 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : loisir

    Informations forums :
    Inscription : Février 2014
    Messages : 1
    Par défaut
    Bonjour, utilise un Panel comme fond.

    Il suffit de déposer un PANEL avec la couleur voulu, alignement et bord que tu souhaites (ou pas de bord), puis mettre par dessus ton CHECKBOX.

    Une réponse quelque peu tardive, mais ça peu être utile !!

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 890
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 890
    Billets dans le blog
    66
    Par défaut
    Bonjour,
    cette réponse tardive n'est pas vraiment une bonne idée. Déterrer un post résolu non plus.
    9 ans ont coulé sous les ponts, depuis j'utilise plus FMX que VCL et les styles, même s'ils ont encore beaucoup de secrets que je tâche de découvrir, ne sont plus une inconnue pour moi du moins en ce qui concerne FMX.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/06/2014, 08h21
  2. Réponses: 1
    Dernier message: 13/02/2007, 16h53
  3. Visual Basic ne prend pas en compte mon chgt de variable
    Par Crazy_Gun dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 09/12/2005, 14h40
  4. ne prend pas en compte le "0" ? comprend pas !!!
    Par pierre987321 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/10/2005, 19h39
  5. [JAR] Archive qui ne prend pas en compte librairie externe
    Par Shiryu44 dans le forum Général Java
    Réponses: 3
    Dernier message: 22/04/2005, 13h59

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