Pasando valor para sincronizar hilo

Soy nuevo en el tema, así que he estado intentando con esto durante horas (estoy usando XE4),

tengo un hilo simple

type
  TSendThread = class(TThread)
  private
  public
    procedure proc(const s : string);
  protected
    procedure Execute; override;
  end;

  procedure TSendThread.proc(const S: String);
  begin
    showmessage(s);
  end;

Ahora, en mi formulario principal, quiero llamar a eso "proc" con:

procedure TForm1.Button1Click(Sender: TObject);
var
  t : TSendThread;
begin
    t := TSendThread.create(true);
    t.Synchronize(nil, t.proc('foo'));
end;

Pero cada vez que intento t compilar eso me sale:

No hay una versión sobrecargada de 'Sincronizar' que pueda llamarse con estos argumentos

eso no tiene sentido (para mí) porque cuando quito el parámetro "S" de "proc" funciona bien.

Respuestas a la pregunta(3)

Su respuesta a la pregunta