Automatiser la taille d'un colonne dun StringGrid
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:
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 ?