Verfasst am: 23.03.2014, 14:21
Titel: Übergabe von Werten innerhalb einer GUI ohne GUIDE
Hallo,
ich erstelle gerade meine erste GUI ohne GUIDE, da ich gerne auf Reiter zurückgreifen möchte. Hierfür verwende ich die uitabpanel-Funktion aus dem File-Exchange.
Hier ein vereinfachter Code von dem was ich gerne machen möchte:
in der CreateTab-Funktion soll eine Listbox in einem Tab erstellt werden, auf die ich anschließend zugreifen möchte, jedoch wird die Variabel nicht übergeben.
Aus GUIs mit GUIDE erstellt habe ich den Befehl guidata, immer so verstanden, dass dieser meine Strukturen aktualisiert, bezogen auf die figure, in der ich dies gespeichert haben möchte. Hier sollte somit meine Struktur 'handles' in der figure 'hfig' gespeichert werden, welches jedoch nicht der Fall ist.
Ich würde mich freuen, wenn mir jemand weiterhelfen kann.
Aus GUIs mit GUIDE erstellt habe ich den Befehl guidata, immer so verstanden, dass dieser meine Strukturen aktualisiert, bezogen auf die figure, in der ich dies gespeichert haben möchte. Hier sollte somit meine Struktur 'handles' in der figure 'hfig' gespeichert werden, welches jedoch nicht der Fall ist.
Hallo, doch das ist der Fall,
das Problem liegt hier eher an der Übergabeparameter, ein Callback hat 2 Pflichtparameter, welche immer mit übergeben werden, und den 3. Parameter handles, wird nur beim GUIDE automatisch definiert/übergeben.
Also wenn du die GUI manuell bastelst, musst du die handles(also 3.Parameter) auch manuell übergeben. Bei der Übergabe wird aber kein Update der Struktur gemacht, sondern nur ein Zustand zum Zeitpunkt der Übergabe gemacht.
Deswegen hier besser Update manuell durchzuführen. (Kommentare dazu unten)
Weiteres Problem beim GUIDATA liegt in der Gefahr, dass die Werte überschrieben werden können.(siehe dazu Kommentare unten)
% nach hinten verschieben, damit die Änderungen in Handles-Struktur nicht überschrieben werden
%
% wenn eine Funktion eine Unterfunktion aufruft, und dort die Änderung in handles gemacht werden, kriegt die Oberfunktion davon nichts mit, also muss entweder Handles zurückgeben werden oder durch GUIDATA upgedated werden
uitabpanel('Parent',huipanelTabs,'style','centertop','Title',{'Test1','Test2'},'CreateFcn',@CreateTab);
function CreateTab(hfig,~,hpanel,~)
handles = guidata(hfig);
% 3.Parameter muss man explizit übergeben werden, sonst ist dieser undefiniert function Test_Callback(hfig, eventdata)
%
% besser update manuell durchführen, % weil bei der Übergabe wird der Zustand zum Zeitpunkt der Callback-Definition gemacht
handles = guidata(hfig);
abc = get(handles.lb_cell,'String')
vielen Dank für deine Hilfe, funktioniert jetzt genau, wie es soll. Die Übergabe der Variabeln funktioniert jetzt genauso wie ich mir das vorstelle.
Gruß,
Jan
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.