Por otro lado, viendo tu código, hacer algo así, para mantener lo hecho en tiempo de diseño:
Código Delphi
[-]
TForm1 = class(TForm)
...
private
Botones: array[1..9] of TButton;
...
end;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
Botones[1] := Button1;
Botones[2] := Button2;
...
end;
Otra opción, puede ser manejar una función que devuelva un TButton pasándole su Index, esta si sería un feo case, pero te evitarías el resto:
Código Delphi
[-]
function TForm1.GetButton(Index: Integer): TButton;
begin
case Boton of
1: Result := Button1;
2: Result := Button2;
...
else
raise ...
end;
end;
Saludos!