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

C++Builder Discussion :

Type TColor affiché en tant qu'integer dans inspecteur d'objet


Sujet :

C++Builder

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut Type TColor affiché en tant qu'integer dans inspecteur d'objet
    Bonjour,

    J'ai un soucis aujourd'hui avec le composant TQuickRep mais j'ai déjà eu ce problème avec des composants faits maison.
    Dans l'inspecteur d'objets, toutes les propriétés de type TColor sont affichées en tant qu'integer et non comme des TColor.
    Cela me pose problème pour la reprise d'un vieux projet développé sous BCB_6 et que je dois recompiler avec BCB_XE.
    A quoi cela peut il être dû ?

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Salut, je ne comprends pas trop ta question. TColor est un enum de type int: http://docwiki.embarcadero.com/Libra...UITypes.TColor

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 670
    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 670
    Points : 10 677
    Points
    10 677
    Par défaut
    Attention: TColor est une grosse bouse comme AnsiString

    Effectivement tu as une liste de TColor prédéfini préfixé par cl (clBlack, clWhite, ...)
    Il y a des valeurs mystiques comme clWindow, clBtnFace, ... valeurs avec lesquelles tu te demandes si elles vont correspondre à "leur couleur visuelle" en cours d'exécution.

    Et tu as aussi la possibilité de définir avec un entier. Mais:
    • c'est un système BVR: 0xAABBVVRR (et pourquoi ???). En gros du bleu c'est 0x00FF0000, vert c'est 0x0000FF00 et le rouge 0x000000FF.
    • Je mets toujours l'information alpha même si c'est 00.
    • Dans le code en C++, il faut toujours caster: TColor color = (TColor) 0x007f7f7f

  4. #4
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par Crayon Voir le message
    Salut, je ne comprends pas trop ta question. TColor est un enum de type int: http://docwiki.embarcadero.com/Libra...UITypes.TColor
    Un dessin vaut mieux qu'un long discours :

    inspecteur sous BCB6 :
    Nom : bcb6.jpg
Affichages : 125
Taille : 22,3 Ko

    inspecteur sous XE :
    Nom : bcbXE.jpg
Affichages : 128
Taille : 18,7 Ko

    Je ne suis pas l'auteur du composant. Je rappelle qu'il s'agit de QuickReport, écrit en pascal.
    Si je devais travailler sur un nouveau projet, je me contenterais de l'integer à la place du TColor, mais là, il s'agit de reprendre un projet existant.
    Le problème est que, quand je reprends le vieux projet avec BCB XE, le fait d'avoir un entier à la place du TColor provoque des erreurs de ce type :
    Nom : msg.jpg
Affichages : 125
Taille : 31,8 Ko

    Dans ce cas, plus aucune possibilité de sélectionner une couleur comme le permet normalement l'inspecteur.
    Et si je tente de saisir par exemple clBlack directement, j'obtiens l'erreur suivante :
    Nom : msg2.jpg
Affichages : 122
Taille : 19,4 Ko

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 670
    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 670
    Points : 10 677
    Points
    10 677
    Par défaut
    Tout semble indiquer qu'avec BCB6 la valeur est écrite en chaîne de caractères : il faut ouvrir le .DFM est vérifier de visu si c'est Color = 'clBlack' ou bien Color = 0.

    Si tu as une valeur entière décimale c'est normal : par exemple 8355711 c'est la même chose que 0x007F7F7F.

    Sinon, ton exemple n'est pas pertinent parce que le noir 'clBlack' c'est zéro (0x00000000) ... tout comme la valeur par défaut.
    Mais si par exemple, c'est du 'clRed', tu devrais avoir soit 0x000000FF soit 255.

  6. #6
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    Voilà un extrait du DFM :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      object CompositeReport: TQuickRep
        Left = -16
        Top = 488
        Width = 794
        Height = 1123
        Frame.Color = clRed
        Font.Charset = DEFAULT_CHARSET
        Font.Color = clWindowText
        Font.Height = -13
        Font.Name = 'Arial'
        Font.Style = []
    Manifestement, ce n'est ni du numérique ni du texte (pas de quotes).
    Cependant, il semblerait que cela soit un bug de Builder XE.
    J'ai trouvé un début de piste ici : http://codeverge.com/embarcadero.cpp...erties/1081034

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/05/2015, 11h13
  2. Réponses: 8
    Dernier message: 01/04/2011, 11h04
  3. Réponses: 12
    Dernier message: 21/04/2010, 14h55
  4. Afficher le contenu d'une variable integer dans tMsgBox
    Par jeanphi45 dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 04/03/2010, 14h39
  5. Licence MySql en tant que BD dans une application web
    Par Volta dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 26/02/2004, 14h38

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