Comment affecter la valeur d'une couleur à un tcolor?
codial
Messages postés265Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention 5 mai 2015
-
16 sept. 2009 à 11:28
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDerniè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 :=????????????????
codial
Messages postés265Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention 5 mai 20151 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.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 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);
codial
Messages postés265Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention 5 mai 20151 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.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 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() !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 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.