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)
le hic c'est que j'obtiens
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; ....
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 ?
Partager