Pb avec Drawtext..

XgaletteX Messages postés 102 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 12 août 2005 - 17 juin 2005 à 22:54
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 - 18 juin 2005 à 13:46
Bonjour, je cherche a utiliser drawtext mais je n'y arrive pas , voila mon code:

With Sender As TStringGrid Do With Canvas Do
Begin
{ Sélection de la couleur de fond }
If gdFixed in State
Then Brush.Color := clBtnFace
Else If gdSelected In State
Then Brush.Color := clNavy
Else Brush.Color := clWhite;


{ Dessin du fond }
FillRect(Rect);


{ Sélection de la couleur de texte }
If gdSelected In State Then
SetTextColor(Canvas.Handle,clWhite)
Else SetTextColor(Canvas.Handle,clBlack);


{ Dessin du texte en utilisant la fonction API }
DrawText(Canvas.Handle, PChar(Cells[ACol,ARow]), -1, Rect ,
DT_CALCRECT or DT_WORDBREAK );

D'après l'aide dt_calcrect permet de calculer la taille du rectangle en fonction, de la taille du texte, mais j'ai plus rein qui s'affiche dans mes cellules qunad je mets ca....

3 réponses

ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
18 juin 2005 à 04:00
Essaye comme ça :



procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

begin

With Sender As TStringGrid Do With Canvas Do

Begin

{ Sélection de la couleur de fond }

If gdFixed in State Then Brush.Color := clBtnFace

Else If gdSelected In State Then Brush.Color : = clNavy
Else Brush.Color := clWhite;

{ Dessin du fond }

FillRect(Rect);

{ Sélection de la couleur de texte }

If gdSelected In State Then SetTextColor(Canvas.Handle,clWhite)

Else SetTextColor(Canvas.Handle,clBlack);

{ Dessin du texte en utilisant la fonction TextOut de l'objet TCanvas }

TextOut(Rect.Left+5, Rect.Top+5, Cells[ACol,ARow]); // Modifie les +5 en fonction de l'espace que tu veux laisser autour du texte

End;

end;


@+
Bonne Prog'
Nico [www.ni69.new.fr]
<hr size ="2" width="100%">




N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !



0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
18 juin 2005 à 09:00
Lorsque tu utilises DT_CALCRECT, la fonction DrawText ne dessine pas le texte, mais modifie la variable Rect pour l'adapter à la taille nécessaire pour l'affichage du texte.

Il faut ensuite rappeler la fonction DrawText pour afficher le texte en utilisant le Rect ainsi modifié



Ken@vo

<hr size="2" width="100%">Code, Code, Codec !

[%3C/body ]
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
18 juin 2005 à 13:46
C'est juste Kenavo

Mais à ce moment là, il vaut mieux utiliser TextOut, car la taille du
rectangle ne sert à rien au final puisqu'on veut simplement afficher du
texte

@+
Bonne Prog'
Nico [www.ni69.new.fr]
<hr size="2" width="100%">





N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !




0
Rejoignez-nous