Tiene razón
[maeyanes].
Es mejor haciéndolo con una asignación directa sin el if.
Yo por mi parte opto por usar el TTimer pero haciendo la asignación directa.
O sea
Código Delphi
[-]
procedure TForm1.Timer1Timer(Sender: TObject);
var
Horario:TTime;
begin
Horario:=GetTime; BtEntrada.Enabled:=(Horario >= StrToTime('08:00:00')) and (Horario < StrToTime('12:00:00'));
BtEntradaAlmuerzo.Enabled:=(Horario >= StrToTime('12:00:00')) and (Horario < StrToTime('14:00:00'));
BtSalidaAlmuerzo.Enabled:=(Horario >= StrToTime('14:00:00')) and (Horario < StrToTime('18:00:00'));
BtSalida.Enabled:=(Horario >= StrToTime('18:00:00')) and (Horario < StrToTime('08:00:00'));
end;