MacDaddy91
Messages postés9Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention 1 décembre 2005
-
31 oct. 2005 à 20:42
MacDaddy91
Messages postés9Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention 1 décembre 2005
-
31 oct. 2005 à 22:08
Bj, J'aimerai savoir si il est possible dans un StringGird d'avoir dans une colonne le texte aligné à gauche et dans une autre le texte aligné à droite et si oui commen le faire
Merci
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 31 oct. 2005 à 21:06
Salut,
Dans l'evenement OnDrawCell, tu mets ceci :
<hr size= "2" width="100%"> procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin with StringGrid1, StringGrid1.Canvas do
begin
if ACol in [1, 2, 6, 8] then // Liste des colonnes avec alignement à gauche.
begin FillRect(Rect);
TextOut(Rect.Left + 2, Rect.Top, Cells[ACol, ARow]);
end
else // Le reste est aligné à droite.
begin
FillRect(Rect);
TextOut(Rect.Right - TextWidth(.Cells[ACol, ARow]) - 2, Rect.Top, Cells[ACol, ARow]);
end;
end;
end;
<hr size ="2" width="100%">@ ++
Florent
Si tu ne te plantes pas ......
tu ne poussera jamais
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 31 oct. 2005 à 21:08
Aïe, il y a un point qui traine à la 14eme ligne.
Il ne faut pas lire
TextOut(Rect.Right - TextWidth(. Cells[ACol, ARow]) - 2, Rect.Top, Cells[ACol, ARow]);
mais bien sur
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 31 oct. 2005 à 21:16
Hum, tu te compliques la vie.
L'évenement OnDrawCell te fornit un parametre Rect: TRect qui t'indique les bords de la cellule à dessiner: ce n'est donc pas la peine de faire ce calcul inutile qui par ailleurs est faux si la colonne à une largeur propre à elle (il faudrait appeler StringGrid.ColWidths[ACol].
Pareil pour la taille de la police. La classe TCanvas fournit tout cela bien gentiment dans sa fonction TextWidth().
Pour ce qui est des marges (le +2 chez toi et le -2 chez moi) c'est juste un goût personnel. Moi, je ne mets pas de marges en haut.
Si tu ne te plantes pas ......
tu ne poussera jamais
Vous n’avez pas trouvé la réponse que vous recherchez ?
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 31 oct. 2005 à 21:22
Bien sûr, c'est l'essentiel.
Par contre, l'utilisation de TextRect() est peut être plus intelligente que TextOut() comme je l'ai fait. Mais comme l'évenement OnDrawCell est appelé pour chaque cellule, il n'y a pas de problème de débordement.
Maintement on n'attent plus que l'avis de [auteurdetail.aspx?ID=523855 MacDaddy91] qui par ailleurs, validera une (ou plusieurs) reponse(s).
@ ++
Florent
Si tu ne te plantes pas ......
tu ne poussera jamais