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.
InformationsquelleAutor jskrwyk | 2011-01-18