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

Checkboxen, UIpanel (ButtonGroup), SelectionChangeFcn

 

Germanus
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 15.12.09
Wohnort: ---
Version: 7.8.0 (R2009b), Linux
     Beitrag Verfasst am: 14.07.2011, 09:28     Titel: Checkboxen, UIpanel (ButtonGroup), SelectionChangeFcn
  Antworten mit Zitat      
Hallo,

irgendwie wird die SelectionChangeFcn für eine ButtonGroup, welche (nur) Checkboxen enthält, ignoriert. Was mache ich falsch?

Zuerst habe ich mittels GUIDE in einem neuen GUI eine ButtonGroup erstellt. Dann habe ich in diese Checkboxen eingefügt. Alle Bezeichner (Tags) habe ich voreingestellt gelassen. Anschliessend habe ich eine vorprogrammierte SelectionChangeFcn einfügen lassen (Im GUIDE-Hauptfenster: View -> Callbacks -> SelectionChangeFcn). Zuallerletzt habe ich noch in der OpeningFcn den Callback gesetzt.

Im Callback möchte ich z.B. eine externe function aufrufen.

Das Problem lautet nun wie folgt: Im Falle von RadioButtons funktioniert dieses Vorgehen und verkürzt den Code, da nicht für jede Radio-Callback ein Code geschrieben werden muss, sondern die Callback der ButtonGroup (welche der Elternteil aller vereinten Buttons darstellt) dies übernimmt.

Bei Checkboxen wird die SelectionChangeFcn schlicht und ergreifend ignoriert. Gibt es einen Trick, diese trotzdem zu verwenden?

Anbei mein Minimalbeispiel:

Code:

function TestGUI_CheckBoxCallback_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;
set(handles.uipanel1,...
   'SelectionChangeFcn',@uipanel1_SelectionChangeFcn);

guidata(hObject, handles);


function varargout = TestGUI_CheckBoxCallback_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;


function checkbox1_Callback(hObject, eventdata, handles)

disp('Du hast mich über den Callback der ersten Checkbox erwischt')


function checkbox2_Callback(hObject, eventdata, handles)


function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)

disp('Du hast mich über den Callback der Buttongroup erwischt')

 



MFG,
Germanus
Private Nachricht senden Benutzer-Profile anzeigen


Georg J
Forum-Century

Forum-Century



Beiträge: 113
Anmeldedatum: 22.06.11
Wohnort: ---
Version: R2008a
     Beitrag Verfasst am: 15.07.2011, 22:23     Titel:
  Antworten mit Zitat      
Hi Germanus,

Du kannst bei jedem uicontrol eine Callback Funktion definieren. Nur bei den Radiobuttons muss man den Umweg über die selection change function machen.

Code:
h_chbox=uicontrol('Style','checkbox','String','hello','value',0,'callback','SelectionChangeFcn(hObject, eventdata, handles)');


Gruss, Georg
Private Nachricht senden Benutzer-Profile anzeigen
 
Germanus
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 15.12.09
Wohnort: ---
Version: 7.8.0 (R2009b), Linux
     Beitrag Verfasst am: 25.07.2011, 15:11     Titel:
  Antworten mit Zitat      
Hallo Georg,

da ich das ganze GUI mit Guide erstellt habe, musste ich deinen Vorschlag noch ein wenig weiterdenken. Ich möchte mich bei der Anzahl der Checkboxen nicht festlegen und auch die Bezeichnung variabel lassen. Eigentlich müsste man für jedes Objekt dann eine Callback schreiben, oder diese von Guide vorprogrammierte dann füllen. Kürzer geht es wenn man den gemeinsamen Hauptnenner aller Checkboxen in einer Group nimmt, sprich 'parent' und dann allen 'children' des 'parent' die gleiche Callback-Fkt zuweist. Der relevante Teil des Beispielquelltexts (Rest via Guide) sieht dann wie folgt aus:

Code:

function TestGUI_CheckBoxCallback_OpeningFcn(hObject, eventdata, handles, varargin)

ch = get(handles.uipanel1,'children');

for c=1:length(ch)
   set(ch(c),'callback',@mycallback)
end

function mycallback(hObject, eventdata, handles)
fkt_AktiveCheckBoxenFinden(get(hObject,'parent'))
 


Die aufgerufene callback-Funktion kann als Beispiel gesehen werden. Wenn es jemanden interessiert, wie man dann die aktiven Buttons erhält, so empfehle ich die Diskussion "Radiobutton nicht gleich aktiv bzw Daten nicht verarbeitet" unter http://www.gomatlab.de/viewtopic,p,70783.html#70783

MFG,
Germanus
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 - 2025 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.