und wollte gerne aktualisieren, wenn ich einen neuen Wert in die Funktion height_stage_callback eingebe. Ich muss nun ueberpruefen, ob popupheight_stage auf Hoehe oder Dimensionen steht, damit ich mit diesem Wert weiterarbeiten kann.
Code:
% --- Executes on selection change in popupheight_stage. function popupheight_stage_Callback(hObject, ~, handles) %height/stage dim
contents = cellstr(get(handles.popupheight_stage,'String'));
switch contents{get(handles.popupheight_stage,'Value')} case 'Height'
% save variable as height
handles.height = str2double(get(handles.height_stage,'String'));
handles.max_x = (handles.height)^2; % sqrt(handles.height);+ ((width_layer{i}(1)/hspace{i}(s))+2)*vspace)^2 + (width_layer{i}(1))^2); set(handles.text_height_stage,'String', num2str(handles.max_x));
set(handles.text_height_stage_calc,'String','Stage dimension will be');
case 'Stage dimension'
% calculate height
handles.max_x = str2double(get(handles.height_stage,'String'));
handles.height = sqrt(handles.max_x);
set(handles.text_height_stage,'String', num2str(handles.height));
set(handles.text_height_stage_calc,'String','Height will be');
end% switch guidata(hObject,handles)
function height_stage_Callback(hObject, ~, handles)% height/stage dim % call popupheight_stage_Callback to update dimensions
popupheight_stage_Callback(gcbo, [], handles);
Mit Hilfe des Debug modus habe ich auch herausgefunden, dass handles. height auch aktualisiert wird in der popup-function, aber nicht uebergeben wird.
Warum? ich schreibe doch guidata(hObject,handles) und dachte, dass dann die globalen Variablen gespeichert werden.
Aber die Variable kommt in der test_par_height-Funktion nicht an, bzw. nur der globale gesetzte Wert.
Verfasst am: 17.11.2011, 12:12
Titel: Re: Variable innerhalb der Gui uebergeben bzw. aktualisieren
Hallo chris4aus,
Ja, Du hast den "handles" Struct, der im GUI gespeichert ist, erfolgreich upgedated. Aber in der Funktion popupheight_stage_Callback greifst du dennoch auf eine alte Version von "handles" zu.
Code:
function popupheight_stage_Callback(hObject, ~, handles)
handles = guidata(hObject); % Now it is uptodate!
Das "handles" als Input wird während der Erstellung des GUIs definiert, danach aber nicht mehr dynamisch geändert. Eigentlich ist es deshalb als Input eher ungeeignet.
Ich hatte extra in der Anleitung gelesen, alles in die handles zu packen, damit es immer mitgenommen wird - wuerdest du es einfach als neue Variable definieren?
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.