Comment affecter la valeur d'une couleur à un tcolor?

codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 - 16 sept. 2009 à 11:28
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 20 sept. 2009 à 22:55
Bonjour,

Dans un DBGrid, j'essaie d'associer une couleur à chaque enregistrement selon un autre champ, disons le champ catégorie.

Dans une table access j'enregistre donc la catégorie et la couleur.

Dans l'évènement OnDrawColumnCell je n'arrive pas à convertir la valeur de la couleur pour l'associer à ma catégorie avec Dbgrid1.Canvas.Brush.Color :=????????????????

      Dbgrid1.Canvas.Font.color := clYellow;
      Dbgrid1.Canvas.Brush.Color := DM.tblEvenementsCOULEUR.Value ???Si quelqu'un peut m'aider d'avance merci!


Bonne journée

Cordialement, codial

10 réponses

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 9
16 sept. 2009 à 13:18
TColor = Integer (32-bits signé). Si ça peut aider ...

Cordialement, Bacterius !
0
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 1
16 sept. 2009 à 15:38
Bonjour bacterius

merci pour ta réponse. J'ai écrit ça:

if DBPlanning.DataSource.DataSet.FieldByName('couleur').Value > 0 then
      DBPlanning.Canvas.Brush.color :=  tcolor('$' + IntToStr(DM.tblEvenementsCOULEUR.Value));


Ce code repère bien les enregistrements concernés mais n'affecte pas la bonne couleur, à savoir dans mon exemple le jaune. De plus chaque champ à une couleur différente.

Une idée pour modifier cette ligne?

Cordialement, codial
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 9
17 sept. 2009 à 05:56
C'est surtout que son code ne peut pas fonctionner. Va donc transtyper une chaîne en TColor, en utilisant de plus une mauvaise base (tu prends une base 10 et tu la considères comme une base 16 !) :

if DBPlanning.DataSource.DataSet.FieldByName('couleur').Value > 0 then DBPlanning.Canvas.Brush.color :=  IntToStr(DM.tblEvenementsCOULEUR.Value);


Ca suffit normalement.

Cordialement, Bacterius !
0
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 1
17 sept. 2009 à 09:00
Bonjour,

VoicedMirror,

j'ai testé mais celà me restitue la même chose!!!! Merci quand même!!

Bacterius:

Dans mon enregistrement il y a le nombre de la couleur et la catégorie.
Dans mon DBGrid les bonnes lignes sont sélectionnées mais en noir.

En revanche, entre temps, j'ai testé ça:
 
if DBPlanning.DataSource.DataSet.FieldByName('couleur').Value > 0 then
      DBPlanning.Canvas.Brush.Color := 65535;   //DM.tblEvenementsCOULEUR.AsInteger;


et là, à l'ouverture du DBGrid, j'ai bien les bonnes lignes en jaunes.

Je pense que mon problème vient de la conversion de DM.tblEvenementsCOULEUR.AsInteger vers tcolor pour affecter le bon format de la couleur à gauche de ma ligne.

Sur:
DBPlanning.Canvas.Brush.color :=  IntToStr(DM.tblEvenementsCOULEUR.Value);

me renvoie un message d'erreur: Type incompatible 'Tcolor et string'.

Il me manque quelque chose..... Mais quoi ???

Cordialement, codial
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 9
17 sept. 2009 à 09:05
Et ça ça donne quoi :

if DBPlanning.DataSource.DataSet.FieldByName('couleur').Value > 0 then DBPlanning.Canvas.Brush.color :=  TColor(DM.tblEvenementsCOULEUR.Value);


Cordialement, Bacterius !
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 9
17 sept. 2009 à 09:07
Ah juste une question : c'est de quel type "Value" ? Je suspecte à présent qu'il s'agisse d'un string ... dans quel cas il faut faire StrToInt() et non pas TColor() !

Cordialement, Bacterius !
0
Utilisateur anonyme
17 sept. 2009 à 09:18
Salut,

Plus que de faire un transtypage qui sera lourd, pourquoi ne pas déclarer un champ couleur de type Integer pour stocker ta couleur ??
0
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 1
17 sept. 2009 à 10:37
Bonjour,

Mon champ couleur est un déja integer et non pas un string.
Je pense qu'il me manque quelque chose pour le rendre compatible avec
DBPlanning.Canvas.Brush.Color :=

Mais quoi???

Cordialement, codial
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 9
17 sept. 2009 à 13:32
Ca donne une erreur de compilation ou d'exécution ? Car à priori, un TColor étant un Integer, je ne vois pas comment l'affectation peut rater ... A mon avis ce n'est pas un problème de type, mais bien un problème de linkage comme le souligne VoicedMirror. Et là, ça sort de mes compétences.

Cordialement, Bacterius !
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
20 sept. 2009 à 22:55
Codial,

Es-tu absolument sûr d'avoir correctement encodé les valeurs des couleurs dans ta table ?

Peux-tu nous donner un extrait de ta table en précisant la couleur que tu es censé obtenir ?

[<a href="http://www.lapetition.be/en-ligne/justice-pour-mambo-4817.html Justice pour mambo]
May Delphi be with you

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0