Re: Manipulate: How to correctly adjust one control
- To: mathgroup at smc.vnet.net
- Subject: [mg103064] Re: [mg103049] Manipulate: How to correctly adjust one control
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Sun, 6 Sep 2009 07:38:31 -0400 (EDT)
- Reply-to: hanlonr at cox.net
You can nest Manipulate Manipulate[ Manipulate[ Text[x], {{x, 1, "x ="}, If[choice == 1, 0, 1], If[choice == 1, 10, 20], 0.1}], {{choice, 1, "select choice"}, {1 -> "UP", -1 -> "DOWN"}, ControlType -> SetterBar}] Bob Hanlon ---- Nasser Abbasi <nma at 12000.org> wrote: ============= Hello. This is Mathematica 7. I have Manipulate control (a slider) which I want to dynamically adjust its initial value and maximum value based on what one selects as a choice from another control (SetterBar) and also change the position of the slider (i.e. the current value of the slider) based on the choice selected. The following code below seems to work initially. Using 'If' statement, I check the current choice, and set the initial and maximum value of the slider. The problem though is that the current value of the slider (i.e. the current position of the slider) remains at whatever value it was before the user changed the choice, and this could result in the current value of the slider being larger than the maximum being set for the new choice. What I want is the following: When the user selects a new choice (from the SetterBar), I want to reset the current position on the slider as well the initial and the maximum value. Here is the code to help explain: Manipulate[Text[x], {{x, 1, "x="}, If[choice == 1, 0, 1], If[choice == 1, 10, 20], 0.1}, {{choice, 1, "select choice"}, {1 -> "UP", -1 -> "DOWN"}, ControlType -> SetterBar} ] So, when one selects UP, I change the initial slider value to start at 1 instead of at 0, and made the maximum slider to be 10 instead of 20. However, the value of 'x' itself could be at say 12 at this time (becuase the user was moving it), and so it overflows now. How can I also update 'x' to start at some specific value each time the user changes the choice from UP to DOWN or from DOWN to UP? Putting another If statement does NOT work: Manipulate[Text[x], {{x, If[choice == 1, 3, 5], "x="}, If[choice == 1, 0, 1], If[choice == 1, 10, 20], 0.1}, {{choice, 1, "select choice"}, {1 -> "UP", -1 -> "DOWN"}, ControlType -> SetterBar} ] I know I need to use Dynamic[] somewhere, but I not sure where and how to force current slider value to rest each time the setterbar is clicked. I need some sort of action associated with SetterBar which I can use each time its value changes, but SetterBar has no such option. any help is appreciated. --Nasser
- Follow-Ups:
- Re: Re: Manipulate: How to correctly adjust one
- From: Syd Geraghty <sydgeraghty@me.com>
- Re: Re: Manipulate: How to correctly adjust one