Hola, recientemente he estado trabajando justamente en este asunto, lástima que el hilo de sea un poco antiguo pero igual no está de más responder esa última pregunta por las dudas alguien anda tambien haciendo lo mismo.....
Bueno, suponiendo que en tu formulario tenes un StringGrid y un BitBtn (ambos creados en tiempo de diseño) para que el boton se repinte en tu stringrid agregás esas dos lineas de código en el evento OnDrawCell de ese objeto y el boton toma la forma de la celda en el caso de que el usuario modifique el tamaño de la columna o fila del stringrid.
Código Delphi
[-]
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
bitbtn1.Parent := StringGrid1;
bitbtn1.BoundsRect:= StringGrid1.CellRect(2,3);
end;