DT_VCENTER bewirkt nichts !
Habe hier ein Beispiel, das mit einem neuen Projekt und folgendem Code gemacht wurde:
Delphi-Quellcode:
procedure sgRechts (sg: TStringGrid; Rect: TRect; ACol, ARow:Integer);
var st: String;
begin
sg.Canvas.FillRect(Rect);
st := sg.Cells[ACol,ARow];
DrawText(sg.Canvas.Handle, PChar(st), StrLen(PChar(st)),Rect,DT_RIGHT OR DT_VCENTER);
end;
procedure Tform1.StringGrid1DrawCell(Sender: TObject; ACol,ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
inherited;
if (ACol in [1..3]) then
sgRechts(StringGrid1, Rect, ACol, ARow);
end;
Im Anhang sieht man das Ergebnis. In der letzten Zeile sieht man, wie es aussieht, bevor die Zelle verlassen wird.