WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Übergabe von uicontrol-handles an Callback

 

steffen1187
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 19.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2016, 07:59     Titel: Übergabe von uicontrol-handles an Callback
  Antworten mit Zitat      
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 Wink

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

h1 = 0.1;
h2 = 0.1;

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)])
set(h2,'enable','on')
 


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
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.