Amigo mio, si no te he entendido mal, tienes varias formas de hacer lo que preguntas, pero a groso modo vienen a ser lo mismo, te pongo varios ejemplos:
Si quieres que el Timer se pare cuando Termine :
Código Delphi
[-]
TForm1.Timer1Timer(Sender: TObject);
begin
<> TTimer(Sender).Enabled := false;
... Codigo que quieras poner...
end;
TForm1.ClickButton1(Sender: TObject);
begin
if not Timer1.Enabled then
begin
.... Codigo que quieras poner...
end;
end;
Si el Timer siempre esta siempre activo pon una variable boolean
y puedes comprobar en el evento del boton y esa variable esta o
no en True, como si fuese un semaforo, tambien puedes poner el
boton inicialmente en desabilitado, y habilitarlo cuando se termine
el codigo dentro del evento OnTimer de la siguiente manera:
Facil.