Re: PopupMenu Problems

*To*: mathgroup at smc.vnet.net*Subject*: [mg122507] Re: PopupMenu Problems*From*: Armand Tamzarian <mike.honeychurch at gmail.com>*Date*: Sun, 30 Oct 2011 04:23:52 -0500 (EST)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*References*: <j8gnvh$5ig$1@smc.vnet.net>

On Oct 29, 10:27 pm, Don <don... at comcast.net> wrote: > Below is the code for a simple PopupMenu > > The purpose is to present the user with a PopupMenu that > gives two options: "Linear" or "NonLinear". > > There are two problems with this code: > > (1) The word "Linear" (the default) is suppose to show up in > the window next to the right of the word " Function:". > Right now, it's just left as a blank. It was thought > that setting the inital value of the variable "fnc1" to Linear > would solve that problem. > > (2) After the user makes a choice by clicking on the down arrow and > clicking on an option (Linear or NonLinear) the > code should then "fall through" and Print "999" to show > it is positioned to determine which option the user chose by > executing the following Which function, but this never happens. > The act of choosing an option by the user should result in executin= g the Which function and subsequent functions. > > How can this code be modified to fix those two problems? > Thank you in advance. > > Don > > Remove[master$FE]; > master$FE[] := Module[{}, > Interpretation[{fnc1 = Linear}, > > backgrndClr = ColorData["Aquamarine", 0.15]; > Panel[Grid[ > { > {Style["PopupMenu", 36, Bold], SpanFromLeft > }, > > { > Style["Function:", Bold, 22], > PopupMenu[Dynamic[fnc1], {"Linear", > "NonLinear"}, AutoAction -> True > ] , > SpanFromLeft > } > }, > > ItemStyle -> Directive[FontSize -> 26, Bold], > Spacings -> {2, 2}, > Dividers -> {None, {2 -> > Directive[Black, AbsoluteThickness[Large]]}} > ], ImageSize -> {300, 250}, Background -> backgrndClr], > > Print[" Begin Which Function - 999 "]; > > fnc1String = ToString[fnc1]; > > Which[ > fnc1String == "Linear", > linear$FE[], > > fnc1String == "NonLinear", > nonLinear$FE[] > > ];(* End Which *) > > Print["777"]; > ](* Interpretation *) > (* Print["888"];*) > ](* End Module master$FE *) This seems to do want you require (assuming I have understood your post): Remove[master$FE]; master$FE[] := DynamicModule[{fnc1 = "Linear", backgrndClr = ColorData["Aquamarine", 0.15]}, Column[{ Panel[ Grid[{{Style["PopupMenu", 36, Bold], SpanFromLeft}, {Style["Function:", Bold, 22], PopupMenu[Dynamic[fnc1], {"Linear", "NonLinear"}, AutoAction -> True], SpanFromLeft}}, ItemStyle -> Directive[FontSize -> 26, Bold], Spacings -> {2, 2}, Dividers -> {None, {2 -> Directive[Black, AbsoluteThickness[Large]]}}], ImageSize -> {300, 250}, Background -> backgrndClr], Dynamic[ Print[" Begin Which Function - 999 "]; Which[fnc1 == "Linear", linear$FE[], fnc1 == "NonLinear", nonLinear$FE[]];(*End Which*)Print["777"]; Spacer[0], TrackedSymbols :> {fnc1}] }] ] master$FE[] Mike