Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Help with dynamic functionality

  • To: mathgroup at smc.vnet.net
  • Subject: [mg128837] Re: Help with dynamic functionality
  • From: awnl <awnl at gmx-topmail.de>
  • Date: Thu, 29 Nov 2012 06:07:27 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <k94h9k$bh5$1@smc.vnet.net>

Hi,

> My actual problem is quite involved but I am including a simple
> example for illustrative purposes. I am trying to reproduce
> "Enabled"-like functionality as follows:
>
> Clear[y, SliderModule]; SetAttributes[SliderModule, HoldAll];
> SliderModule[enabled_] := DynamicModule[{x = 0}, {Slider[ Dynamic[x,
> (x = If[enabled, #, 0]) &]], Dynamic[x]}] {Checkbox[Dynamic[y]],
> Dynamic[y], SliderModule[y]}
>
> Ideally when the checkbox is checked then the user is able to move
> the slider; but when it is unchecked the slider resets to zero. The
> problem is when I uncheck the checkbox the slider doesn't reset to
> zero until I click on the slider itself. Is there a way to get the
> slider to immediately reset when I uncheck the checkbox? Please
> remember that this is a simplification of my actual problem so try to
> keep the SliderModule structure the same.

I think this would work as you want:

Clear[isEnabled, sliderModule];
sliderModule[Dynamic[enabled_]] := DynamicModule[{x = 0},
    Row[{
      Slider[
       Dynamic[x],
       Enabled -> Dynamic[
	  If[TrueQ[enabled],(*Print[x];*)True, x = 0; False]
	]
       ],
      Dynamic[x]
      }]
    ];

{Checkbox[Dynamic[isEnabled]], Dynamic[isEnabled],
  sliderModule[Dynamic[isEnabled]]}

it has the drawback though that the Enabled option will be reevaluated 
for every change in x, which might or might not be a problem and can be 
checked by uncommenting the Print. Adding the TrackedSymbols  option for 
that dynamic seems to not work as expected. So here is another version 
which recreates the slider when the enable-state is changed but doesn't 
do any unnecessary evaluations when the slider is moved:

Clear[isEnabled, sliderModule];
sliderModule[Dynamic[enabled_]] := DynamicModule[{x = 0},
    Row[{
      Dynamic[
       (*Print[x];*)
       If[Not@enabled, x = 0];
       Slider[Dynamic[x], Enabled -> TrueQ[enabled]],
       TrackedSymbols :> {enabled}
       ],
      Dynamic[x]
      }]
    ];



hth,

albert



  • Prev by Date: Re: how to orient Polar Plot 0 Degrees at the North Pole
  • Next by Date: Rules on integer elemens of the list
  • Previous by thread: Re: Help with dynamic functionality
  • Next by thread: Mathematica 9 now available