Te aconsejo que te informes sobre el procedimiento "Synchronize", porque al parecer no has entendido la dinámica ni el funcionamiento del mismo.
Todo lo que ejecutes en el procedimiento pasado a "Synchronize" se ejecuta en el hilo principal, logrando una sincronización de todos los hilos. Por ello se produce el "cuelgue" de tu aplicación. Ese cuelgue se debe al procedimiento "Sleep", el cual bloquea al hilo durante 1000 milisegundos. Tan solo debes alterar el código como te indico a continuación, ejecutando dicho procedimiento dentro del "Execute" del hilo:
Código Delphi
[-]procedure CambiaTituloEnHilo.Execute;
var
inicio:integer;
begin
for inicio:=1 to 400 do
begin
Synchronize(Actualiza_Ttitulo_Ventana);
sleep(1000); end;
end;
Código Delphi
[-]Procedure CambiaTituloEnHilo.Actualiza_Ttitulo_Ventana;
begin
form1.Caption:=inttostr(inicio);
end;