Re: Scoping constructs Block, Module, ModuleBlock
- To: mathgroup at smc.vnet.net
- Subject: [mg111300] Re: Scoping constructs Block, Module, ModuleBlock
- From: Michael <michael2718 at gmail.com>
- Date: Tue, 27 Jul 2010 04:15:15 -0400 (EDT)
On 7/22/2010 2:42 AM, John Fultz wrote:
> [...]
> I didn't look at your original code, but I think I probably know why your use of
> Block and Dynamic together failed. The principal point is that Block introduces
> an environment where variables can be temporarily redefined, but that
> environment evaporates the moment Block is finished evaluating. The contents of
> a Dynamic never even begin evaluating until well after the Shift-Enter
> evaluation is over.
> [...]
Hi again John,
I'm seeing a similar thing happen when I use DynamicModule:
xyz = "A";
f[] := DynamicModule[{tmp = "A"},
CreateDialog[{
PopupMenu[Dynamic[tmp], {"A", "B", "C", "D"}],
PopupMenu[Dynamic[xyz], {"A", "B", "C", "D"}]
}]
];
Button["Test", f[]]
If I click on the "Test" button, I don't see the value of "tmp" being
changed when I pick different options from the pop up menu, but I *do*
see the value of "xyz" being changed when I pick different options from
its pop up menu.
However, if I execute f[] directly, it works for both cases. Shouldn't
clicking the button produce identical results to calling whatever is
defined for its action? There seems to be something related to using a
dynamic module variable, perhaps it loses its definition during a Button
call or something.
> Sincerely,
>
> John Fultz
> jfultz at wolfram.com
> User Interface Group
> Wolfram Research, Inc.
Best Regards,
Michael