Un texte sans font sur cellule de stringGrid [Résolu]

Signaler
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008
-
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008
-
Je seche sur le coup là
J'ai récupéré ce code, j'y ai ajouté des info en rouge
Procedure Degrader(Canevas : TCanvas;Rect : TRect;FStartColor:Tcolor;FEndColor:Tcolor; Donnee:String);
Var
  aBand : TRect;    { Bande rectangulaire de couleur courante        }
  i    : Integer;  { Compteur pour parcourir la hauteur de la fiche }
  FStartRGB  : Array[0..2] of Byte;    { RGB de la couleur de départ }
  FCurrentRGB : Array[0..2] of Byte;    { RGB de la couleur courante  }
  FDeltaRGB  : Array[0..2] of Integer; { RGB à ajouter à la couleur de départ pour atteindre la couleur de fin }
  nbtranches: integer;
Begin
  { Calcul des valeurs RGB pour la couleur courante }
  FStartRGB[0] := GetRValue( ColorToRGB( FStartColor ) );
  FStartRGB[1] := GetGValue( ColorToRGB( FStartColor ) );
  FStartRGB[2] := GetBValue( ColorToRGB( FStartColor ) );
  { Calcul des valeurs à ajouter pour atteindre la couleur de fin }
  FDeltaRGB[0] := GetRValue( ColorToRGB( FEndColor )) - FStartRGB[0] ;
  FDeltaRGB[1] := GetgValue( ColorToRGB( FEndColor )) - FStartRGB[1] ;
  FDeltaRGB[2] := GetbValue( ColorToRGB( FEndColor )) - FStartRGB[2] ;


  { Initialisation des dimensions de la bande de couleur }
  aBand.Left :=Rect.Left;
  aBand.Right:=Rect.Right;
  nbtranches:=min(256, Rect.Bottom-Rect.Top);
  { Boucle pour remplir la fiche courante en dégradé }
  With Canevas Do
  Begin
      Pen.Style:=psSolid;
      Pen.Mode:=pmCopy;
      For i:= 0 To nbtranches-1 Do
      Begin
          { Dimensions verticales de la bande }
          aBand.Left :=Rect.Left;
          aBand.Right:=Rect.Right;
          aBand.Top := Rect.Top+Round((Rect.Bottom-Rect.Top)/nbtranches*i);
          aBand.Bottom := Rect.Top+Round((Rect.Bottom-Rect.Top)/nbtranches*(i+1));


          { Calcul de la couleur courante }
          FCurrentRGB[0] := (FStartRGB[0] + MulDiv( i , FDeltaRGB[0] , nbtranches )) mod 256;




          FCurrentRGB[1] := (FStartRGB[1] + MulDiv( i , FDeltaRGB[1] , nbtranches )) mod 256;
          FCurrentRGB[2] := (FStartRGB[2] + MulDiv( i , FDeltaRGB[2] , nbtranches )) mod 256;
          { Affichage sur la fiche }
          Brush.color:=RGB(FCurrentRGB[0],FCurrentRGB[1],FCurrentRGB[2]);
          FillRect(aBand);
      End;
      DrawText(Handle, PChar(Donnee), -1, Rect, DT_CENTER or DT_NOPREFIX or DT_VCENTER or DT_SINGLELINE  );
  End;
End;

Je l'utilise comme suit

procedure TFormPrincipal.StringGridSemaineDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
Begin

   With Sender As TStringGrid Do With Canvas Do
   Begin
      if (Arow = 0) And (ACol >0) then
      Begin
         Degrader(StringgridSemaine.Canvas,Rect,clcream,clblue, Cells[Acol,Arow]);//$00DB9E5D,$00C98843);
      end;
   end;
end;

Mon problème c'est que le text de mes cellule qui se trouve par dessus le dégradé comporte un font bleu donc c'est horrible en fait !!! j'arrive pas ecrire juste le texte sans aucun font dans mon dégradé.

Il y a-t-il des spécialiste dans le coin lolol. Merci de votre aide.

2 réponses

Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
44
Salut,

essaye en ajoutant ceci juste avant le DrawText :
Brush.Style := bsClear;

 
@+
Cirec

<hr siz="" />
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008

C'est parfait.
Merci Cirec