Le 20/12/2016 22:24, Samuel Gougeon a écrit :
If i understand well your question -- rather the same than Jens's one,
that likes loops too, mainly "while" ones embeding xclick() :) --, i
would answer the same that i did to him:
A callback is a local (asynchronous) script that is executed each time
that the interactive component defining it is activated.
So here, each time you press the x^2 button, each time its callback is
executed.
In the callback, the instruction
x = evstr(e.string);
is not robust, because at the moment the button is pressed, the
variable "e"
may no longer exist. Clearing it or overwriting it with something else
in the meantime
doesnot affect the graphic component. "e" is just a handle (while
delete(e) would really
delete the component).
For a robust implementation, gcbo.stringis required instead.
OK, here, the button should refer to the edit area. So gcbo is not the
whole thing.
When writing things, either the button should depend on the edit area,
or at least
should have a way to get its handle. .tag and findobj() can be used to
do that :
Here is a robust implementation:
f = scf();
uicontrol(f, "style", "edit", ...
"position", [0 0 100 20], ..
"tag", "editArea");
uicontrol(f, "style", "text", ...
"position", [200 0 100 20], ..
"string", "", ..
"tag", "dispArea");
uicontrol(f, "style", "pushbutton", ...
"string", "$x^2$",...
"position", [100 0 100 20], ...
"callback", ..
"e = findobj(""tag"",""editArea"");" + ..
"t = findobj(""tag"",""dispArea"");" + ..
"x = evstr(e.string);" + ..
"y = x^2;" + ..
"t.string = string(y);" + ..
"plot2d(x, y, style = -1);");
HTH
Samuel
_______________________________________________
users mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/users