Matlab < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 22:45 Fr 06.12.2013 | Autor: | Crashday |
Hallo Leute,
ich habe 2 Fragen bzw. diesen Callbacks, am besten anhand eines Beispiels:
1. Frage:
________________________________
[...]
global a;
a=1;
[...]
vh.pb_handle(i+2)=uicontrol(vh.fig_handle,'Style','push',...
'Unit','normalized',...
'Position',[0.49 0.05+(a/(4*13)) 0.10 0.08],...
'CData',vh.schwarz(1:60,1:60,:),...
'String',' ',...
'Callback',' push_aendern(a+2)');
_____________________________________
Wie kriege ich es hin, dass der Callbackbefehl meine Variable mitnimmt, ich kriege immer als Fehlermeldung:
Undefined function or variable 'a'.
Error while evaluating uicontrol Callback
Ich will sozusagen, wenn a = 1 ist, und bei dem Push Button + 2 gerechnet wird, dass die Funktion push_aendern eine Variable übernimmt mit dem Wert 3.
2. Frage:
Falls ich nur in der main Datei bin, also in meinem Hauptprogramm:
______________________________________
[...]
global a;
a=1;
[...]
vh.rb_handle(1)=uicontrol(vh.fig_handle,'Style','radio',...
'Unit','normalized',...
'Position',[0.81 0.15 0.07 0.05],...
'String',' ',...
'CData',vh.schwarzmini(1:36,1:36,:),...
'Callback',' farben(1)');
[...]
switch varargin{:}
case 'farben(z)'
______________________
hierbei will ich sozusagen einen case fall schreiben, dass z=1 ist und dann den Rumpf füllen. Ich glaube aber eher, dass das hier nicht so geht. Switch/case heißt ja eigentlich, dass man die verschiedenen Fälle betrachtet und dann den jeweiligen ausführt. Hierbei müsste ich doch eine separate Funktion + neue matlab Datei, so wie ich es programmiert habe, machen oder?
Danke schon mal für eure Hilfe
Crashday
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:02 Sa 07.12.2013 | Autor: | wieschoo |
Was hast du alles ausprobiert?
Hast du schon einmal eine anonyme Funktion ausprobiert?
Oder
set(object_handle,'Callback',{@my_function}); ?
Es wäre sinnvoll, wenn du ein Minimalbeispiel bastelst und hier hochlädst.
|
|
|
|
|
[...]
global a;
a=1;
[...]
vh.pb_handle(a+2)=uicontrol(vh.fig_handle,'Style','push',...
'Unit','normalized',...
'Position',[0.49 0.05+(a/(4*13)) 0.10 0.08],...
'CData',vh.schwarz(1:60,1:60,:),...
'String',' ',...
'Callback',' push_aendern(a+2)');
Funktion push_aendern:
function push_aendern(z)
global vh
if get(vh.rb_handle(1),'Value')==1
set(vh.pb_handle(z), 'CData',vh.schwarz(1:60,1:60,:))
_____________________________________
Also es soll so funktionieren. Ich habe verschiedene Radiobuttons definiert, die jetzt keine wesentliche Rolle spiele. Jeder Radio Button führt eine Aktion aus. Der Clue ist hierbei: Wenn jetzt z. B. der dritte Push Button ausgeführt wird, also a=1, dann soll die Callback
'Callback',' push_aendern(a+2)');
aufgerufen werden, also das sozusagen das steht:
'Callback',' push_aendern(3)'), damit in der neue Funktion, z =3 definiert wird, da wenn dort z. B. der erste Radio Button aktiviert ist, dann soll der 3. Push Button mit schwarz gefüllt werden sozusagen
if get(vh.rb_handle(1),'Value')==1
set(vh.pb_handle(z), 'CData',vh.schwarz(1:60,1:60,:))
passiert dann das:
if get(vh.rb_handle(1),'Value')==1
set(vh.pb_handle(3), 'CData',vh.schwarz(1:60,1:60,:))
und somit muss ich die globale Variable irgendwie mit übernehmen, nur ich weiß leider nicht wie...
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:20 Di 10.12.2013 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|