hallo, ich glaube mein problem ist recht einfach, aber ich komm selber nicht drauf wie ich es lösen könnte. wenn ich bei meiner gui den startbutton drücke möchte ich dass die häkchen in allen vorher markierten checkboxes wieder verschwinden. wie kann ich denn außerhalb einer callbackfunktion auf hObject einer bestimmten Checkbox zugreifen? danke schon mal. tuli
danke. aber geht das auch noch außerhalb des callbacks dieser checkbox? dazu brauch ich doch noch den tag-namen oder? ich habe nämlich 26 pushbuttons und diese alle einzeln zurückzusetzen ist doch aufwendig. kann ich das vielleicht mit einer schleife lösen, wenn ich zb tags checkbox1 bis checkbox26 vergebe?
Hallo,
wenn du alle checkboxen in deiner figure suchen möchtest, dann kannst du das auch über Befehl findall erreichen.
In Callback denke ich doch, dass du alle handles hast, oder?
myPushbuttonCallback(hObject,eventdata, handles),
dann suche dir in handles-Struct den Tag-Name von deinem Figure (handles.myFigure).
Und weiter nach Beispiel vorgehen:
Code:
% figure mit checkboxen
h=figure uicontrol(h,'Style','checkbox','String','checkbox1','Position',[2032010020],'Value',1) uicontrol(h,'Style','checkbox','String','checkbox2','Position',[2028010020],'Value',1) uicontrol(h,'Style','checkbox','String','checkbox3','Position',[2024010020],'Value',1)
% suche alle checkboxen in figure % h kannst durch dein figure handle ersetzen
allChkBox = findall(h,'Style','checkbox');
set(allChkBox,'Value',0);
ah das ist ja super. kann ich das auch nur von einem panel machen, weil es gibt noch andere checkboxen, die ich nicht zurücksetzen will. mir allchild(panel_tag) gehts irgendwie nicht...
tuli
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 15.05.2008, 12:18
Titel:
aber selbst wenn ich es so mache, geht es nicht, das program läuft zwar durch ohne fehlermeldung, aber die häkchen bleiben trotzdem da... hab ich da irgendwo den falschen handle angegeben?
Code:
functionvarargout = versuchsgui(varargin) % VERSUCHSGUI M-file for versuchsgui.fig % VERSUCHSGUI, by itself, creates a new VERSUCHSGUI or raises the existing % singleton*.
%
% H = VERSUCHSGUI returns the handle to a new VERSUCHSGUI or the handle to % the existing singleton*.
%
% VERSUCHSGUI('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in VERSUCHSGUI.M with the given input arguments.
%
% VERSUCHSGUI('Property','Value',...) creates a new VERSUCHSGUI or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before versuchsgui_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to versuchsgui_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help versuchsgui
% Last Modified by GUIDE v2.5 15-May-2008 10:49:56
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @versuchsgui_OpeningFcn, ...
'gui_OutputFcn', @versuchsgui_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
ifnargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
% --- Executes just before versuchsgui is made visible. function versuchsgui_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to versuchsgui (see VARARGIN)
% Choose default command line output for versuchsgui
handles.output = hObject;
handles.checkbox=zeros(1,3);
% Update handles structure guidata(hObject, handles);
% UIWAIT makes versuchsgui wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. functionvarargout = versuchsgui_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure varargout{1} = handles.output;
% --- Executes on button press in checkbox1. function checkbox1_Callback(hObject, eventdata, handles) % hObject handle to checkbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) if(get(hObject,'Value') == get(hObject,'Max'))
handles.checkbox(1)=1;
else
handles.checkbox(1)=0;
end
% --- Executes on button press in checkbox2. function checkbox2_Callback(hObject, eventdata, handles) % hObject handle to checkbox2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) if(get(hObject,'Value') == get(hObject,'Max'))
handles.checkbox(2)=1;
else
handles.checkbox(2)=0;
end
% --- Executes on button press in checkbox3. function checkbox3_Callback(hObject, eventdata, handles) % hObject handle to checkbox3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) if(get(hObject,'Value') == get(hObject,'Max'))
handles.checkbox(3)=1;
else
handles.checkbox(3)=0;
end
% --- Executes on button press in start. function start_Callback(hObject, eventdata, handles) % hObject handle to start (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
allChkBox = findall(handles,'Style','checkbox');
set(allChkBox,'Value',0);
guidata(hObject, handles);
save temp
Na ja, hab wohl nicht verständlich erklärt.
Neues Versuch:
Variable handles ist ein Struct.
Das heißt wenn du z.B einfach handles ohne Strichpunkt in deiner Callback-Funktion schreibst.
Code:
function start_Callback(hObject, eventdata, handles) % hObject handle to start (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
Bekommst eine ganze liste mit Feldern von handles.
Du musst als Feld den Tag-Namen von deinem Figure eingeben. Also in deneim Fall wohl versuchsgui. Ich hoffe du siehst in der Ausgabe
Code:
function start_Callback(hObject, eventdata, handles) % hObject handle to start (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
allChkBox = findall(handles.versuchsgui,'Style','checkbox');
set(allChkBox,'Value',0);
guidata(hObject, handles);
save temp
Hast du schon auch ausprobiert, dass ich einen Beitrag höher beschrieben habe?
tuli
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.05.2008, 11:54
Titel:
ja hab ich versucht, geht leider auch nicht, ich bekomme entweder eine fehlermeldung, dass es den tagnamen nicht gibt, oder wenn ich hOject nehme bleibt allChkBox einfach leer. ich habe jetzt alle einzeln zurückgesetzt. ist zwar nicht so schön, aber funktioniert;-)
danke nochmal.
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.