数値のセルだけ右寄せしよう

Excel とかだと普通に行われている、これをやりたいと思ったことはありませんか?
私は非常にやりたいと思っていました(私だけかな(^^;)
文字列を数値に変換できるかどうかの関数を利用すると、意外に難しくはありませんでした。
TStringGrid を継承して、DrawCell を以下のように override すれば良いでしょう。

procedure TStringGridEx.DrawCell(ACol, ARow: Integer; ARect: TRect;
  AState: TGridDrawState);
var
  NotUsed: Extended;
  CurrentDefaultDrawing: Boolean;
begin
  if DefaultDrawing then
  begin
    if not TextToFloat(PChar(Cells[ACol, ARow]), NotUsed, fvExtended) then
      Canvas.TextRect(ARect, ARect.Left + 2, ARect.Top + 2, Cells[ACol, ARow])
    else
    begin
      InflateRect(ARect, -2, -2);
      DrawText(Canvas.Handle, PChar(Cells[ACol, ARow]), -1,
        ARect, DT_VCENTER or DT_RIGHT or DT_SINGLELINE);
      InflateRect(ARect, 2, 2);
    end
  end;

  CurrentDefaultDrawing := DefaultDrawing;
  DefaultDrawing := False;

  inherited DrawCell(ACol, ARow, ARect, AState);

  DefaultDrawing := CurrentDefaultDrawing;
end;

Return index page