Tableau StringGird

Résolu
MacDaddy91 Messages postés 9 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 1 décembre 2005 - 31 oct. 2005 à 20:42
MacDaddy91 Messages postés 9 Date d'inscription mardi 31 mai 2005 Statut Membre Derniè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

7 réponses

florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
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
3
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
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

TextOut(Rect.Right - TextWidth(Cells[ACol, ARow]) - 2, Rect.Top, Cells[ACol, ARow]);

@ ++ Florent
3
bv94 Messages postés 40 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 16 décembre 2006 1
31 oct. 2005 à 21:11
Dans l'événement ondrawcell :

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if acol = 1 then
StringGrid1.canvas.TextRect(rect,rect.left+2,rect.top+2,StringGrid1.Cells[acol,arow])
else
StringGrid1.canvas.Textrect(rect,rect.Left+(StringGrid1.DefaultColWidth - (length(StringGrid1.Cells[acol,arow])*(StringGrid1.Font.size-2))),rect.top+2,StringGrid1.Cells[acol,arow]);
end;

Bonne continuation...

BV94
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bv94 Messages postés 40 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 16 décembre 2006 1
31 oct. 2005 à 21:19
Tu as raison, j'ai fait ca vite fait, mais ca a le merite de fonctionner...

BV94
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
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
0
MacDaddy91 Messages postés 9 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 1 décembre 2005
31 oct. 2005 à 22:08
Merci les gars c'est génial!!!!!!
0
Rejoignez-nous