Bonjour à tous,

Récemment j'ai posé une question sur un stringgrid concernant le WordBreak

http://www.developpez.net/forums/d66...-dt_wordbreak/

J'aimerais savoir comment faire pour que lorsque le calcul du wordbreak est fait que la taille de la colonne soit aussi grand que le plus grand des mots.

Je m'explique :
imaginons que j'ai ses titres en ligne 0
Colonne 0 :
CONGES
Colonne 1 :
MALADIE
...
Colonne 9 :
TRAVAUX
HORS
DEPARTEMENT

La fonctionne proposé par AndNotor fonctionne bien mais dans la colonne 9 le 'D' et le dernier 'T' de département dépasse la taille de la cellule et se superpose aux autres.

J'ai tenté cela en plus de la fonctionne de AndNotOr (voir en rouge)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TFStatistiques.GridSemaineNombreDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
Var
  NewRect :TRect;
begin
....
      //Calculation du rectangle nécessaire à l'affiche du texte en single ou multiline
      DrawText(Handle, PChar(Cells[Acol,Arow]), -1, NewRect, DT_CENTER or DT_WORDBREAK or DT_CALCRECT);
      //Centrage du texte
      OffsetRect(NewRect, (Rect.Right -NewRect.Right) div 2, (Rect.Bottom -NewRect.Bottom) div 2);
      // Agrandissement de la taille de la colonne si le texte est trop grand
     if (Rect.Right-NewRect.Right) < 0 then GridSemaineTemps.ColWidths[Acol] := GridSemaineTemps.ColWidths[Acol] - ((Rect.Right-NewRect.Right)*4);

      //Affichage
      DrawText(Handle, PChar(Cells[Acol,Arow]), -1, NewRect, DT_CENTER or DT_WORDBREAK)
    end;
 
....
le hic c'est que j'obtiens
Colonne 9 :
TRAVAUX HORS
DEPARTEMENT

Donc maintenant, le text est sur 2 lignes et je retombe sur le même problème.
De plus au niveau de l'affichage c'est pas esthétique.

Il y a-t-il une autre solution ?