Re: can't get InputField to work inside a While command
- To: mathgroup at smc.vnet.net
- Subject: [mg130811] Re: can't get InputField to work inside a While command
- From: Dushan Mitrovich <dushanm at nnips.net>
- Date: Fri, 17 May 2013 04:36:26 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <kmso9j$h67$1@smc.vnet.net> <kmvbdl$nok$1@smc.vnet.net>
David Bailey wrote:
> On 14/05/2013 08:14, Dushan Mitrovich wrote:> I need to be able to input
> parameters for an a-priori indeterminate
> > number of cases. The way I've been trying to do this is by using a
> > While statement containing InputFields, one of which asks if there are
> > to be more cases to deal with. If not, the previously True logical
> > 'test' for While is reset to False.
> >
> > But apparently InputField is not even recognized as part of the 'body'
> > inside a While. By itself InputField works as expected, but not in this
> > reduced example:
> >
> > cntr = 0;
> > While[cntr<3, cntr++; InputField[xx]]
> >
> > which only produces
> >
> > 1
> > 2
> > 3
> >
> > What am I missing? Or am I going about this the wrong way?
> >
> > - Dushan
> > [ reverse the middle word of address to reply ]
> >
>
> You need to realise the InputField construction generates a box only
> when it is output to a notebook (analogous to a Graphics object) - it
> doesn't evaluate to anything other than itself. This code will create a
> list of InputField objects, each attached to a different element of a
> list, and the result will be returned to your notebook as a column of
> boxes so you can change the various components and observe the result by
> evaluating the variable data.
>
> nin=7;
> data=ConstantArray[0,nin];
> Column[Table[With[{k=k},InputField[Dynamic[data[[k]]]]],{k,1,7}]]
>
> This may, or may not be what you really want. You may want to place the
> InputField objects in a separate, pop-up notebook with a close button to
> close the window before the program continues to execute. This is
> possible using CreateDialog.
>
> David Bailey
> http://www.dbaileyconsultancy.co.uk
>
>
Okay, thanks for the clarification. It seems I can't use InputField the
way I intended in a loop testing for a condition. Your example assumes
I know beforehand the number of times I need to invoke it, which
generally won't be the case.
But apparently I can use Input within such a loop, and I'll explore that
possibility further.
- Dushan