OnDrawCell Centre De Texte StringGrid - Delphi
J'essaie de faire entrer le texte dans mon StringGrid au centre. Après quelques recherches, j'ai trouvé cette fonction posté par quelqu'un d'autre ici que lorsqu'il est utilisé sur DefaultDraw:False devrait fonctionner.
procedure TForm1.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
S: string;
SavedAlign: word;
begin
if ACol = 1 then begin // ACol is zero based
S := StringGrid1.Cells[ACol, ARow]; // cell contents
SavedAlign := SetTextAlign(StringGrid1.Canvas.Handle, TA_CENTER);
StringGrid1.Canvas.TextRect(Rect,
Rect.Left + (Rect.Right - Rect.Left) div 2, Rect.Top + 2, S);
SetTextAlign(StringGrid1.Canvas.Handle, SavedAlign);
end;
end;
Cependant si j'ai mis DefaultDraw:False, le StringGrid semble glitchey.
Les lignes dans la fonction que remplissent les StringGrid avec du texte est
Sg.RowCount := Length(arrpos);
for I := 0 to (Length(arrpos) - 1) do
begin
sg.Cells[0,i] := arrpos[i];
sg.Cells[1,i] := arrby[i];
end;
arrpos et arrby sont des tableaux de string. sg est le StringGrid.
J'ai besoin après qu'a été l'exécution du texte apparaissent dans le centre de la cellule.
Mise à JOUR
Pour ceux qui souffrent de problèmes similaires l'un des principaux problèmes avec ce morceau de code est de savoir si l'instruction si
if ACol = 1 then begin
Cette ligne signifie qu'il sera exécuté uniquement le code de la colonne 1 par exemple, la deuxième colonne depuis StringGrid 0. Vous pouvez supprimer en toute sécurité l'instruction if et il s'exécutera et de travailler SANS avoir à le désactiver par défaut le dessin.
- J'ai juste essayé ton code et il fonctionne très bien. (Delphi 5 et 10 @Win7)
- Le problème avec le code de la procédure, pour StringGrid2 cependant, dans le code, il est répertorié comme StringGrid1. Une autre raison pour laquelle je déteste delphi auto-complet.Cependant, je PENSE que Dorin Duminica la méthode est plus efficace de toute façon.
Vous devez vous connecter pour publier un commentaire.
cela fonctionne dans mon test