Verfasst am: 15.07.2016, 07:59
Titel: Übergabe von uicontrol-handles an Callback
Guten morgen allerseits,
ich verzweifle im Moment an folgender Problematik:
Abhängig davon, welche Eingaben in einigen uicontrol-Elementen gemacht werden, soll die komplette GUI sich unterschiedlich verhalten. Dazu möchte ich die Eigenschaften anderer uicontrol-Elemente manipulieren, z.B. bei einem Dropdown enable on / off.
Das bekomme ich im Moment nur hin, wenn ich beim erstellen der GUI penibel auf die Reihenfolge achte, in welcher ich die einzelnen Elemente anlege. Dies macht das Erstellen der GUI noch unbequemer, als es eh schon ist
Ich habe zwei Varianten ausprobiert:
Code:
% function h2Callback( source,callbackdata,handle ) % %H2CALLBACK Summary of this function goes here % % Detailed explanation goes here % if get(source,'value') ~= 1 % set(handle,'enable','on') % else % set(handle,'enable','off') % end % % end
%% Variante 1: Funktioniert nicht, weil beim erstellen von h2 das handle h1 % noch nicht besteht
% Zunächst alle Elemente mit enable --> off. Die Callback-Funktionen können % nicht ausgelöst werden, bevor alle Elemente bestehen
f = figure()
fp = get(f,'position')
h2 = uicontrol('parent',f,'string',{'1','2'},'style','popup','enable','off','position',[0.25*fp(3)0.75*fp(4)0.5*fp(3)0.1*fp(4)],'callback',{@h2Callback,h1})
h1 = uicontrol('parent',f,'string',{'1','2'},'style','popup','enable','off','position',[0.25*fp(3)0.25*fp(4)0.5*fp(3)0.1*fp(4)])
% erst wenn alle Panels bestehen, wird z.B. h2 enabled --> das übergebene % Handle besteht jetzt definitiv set(h2,'enable','on')
%% Variante 2: funktioniert auch nicht. % Der Gedanke war, zunächst Dummies für die Handles anzulegen. % Diese sollten dann beim Erstellen der uicontrol-Elemente durch die % richtigen Handles überschrieben werden
Die Frage nun:
Kann ich / wie kann ich Dummy-Handles erstellen? Bzw. kann ich in einer Callback-Funktion andersweitig auf die Handles der anderer uicontrol-Elemente zugreifen?
Ich danke euch schon mal recht herzlich!
Grüße
Steffen
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.