Verfasst am: 19.09.2013, 20:29
Titel: mehrere Radiobutton an- und wegklicken
Hallo Leute,
ich habe hier ein kleines Programm geschrieben, welches 3 Radiobutton enthält.
Wenn ich auf radiobutton1 klicke, dann erscheint in einer Edit-Text-Box eine 1.
Wenn ich auf radiobutton1 und radiobutton2 klicke, erscheint eine 12.
Bei radiobutton1 und radiobutton3 eine 13 usw.
Wenn ich z.B. radiobutton1, radiobutton2, radiobutton3 angeklickt habe
erscheint 123 wenn ich radiobutton3 wiederum wegklicke, bleibt 123 in der edit-text-box bestehen,
ich möchte aber das da dann eine 12 steht;
wie kann man das ändern?
Code:
function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. ifispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in radiobutton1. function radiobutton1_Callback(hObject, eventdata, handles) % hObject handle to radiobutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
r1 = get(handles.radiobutton1,'value');
r2 = get(handles.radiobutton2,'value');
r3 = get(handles.radiobutton3,'value');
%123 if((r1 == 1) && (r2 == 1) && (r3 == 1)) set(handles.edit1,'string','123');
end % Hint: get(hObject,'Value') returns toggle state of radiobutton1
% --- Executes on button press in radiobutton2. function radiobutton2_Callback(hObject, eventdata, handles) % hObject handle to radiobutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
r1 = get(handles.radiobutton1,'value');
r2 = get(handles.radiobutton2,'value');
r3 = get(handles.radiobutton3,'value');
%2 if((r1 == 0) && (r2 == 1) && (r3 == 0)) set(handles.edit1,'string','2');
end
%123 if((r1 == 1) && (r2 == 1) && (r3 == 1)) set(handles.edit1,'string','123');
end % Hint: get(hObject,'Value') returns toggle state of radiobutton2
% --- Executes on button press in radiobutton3. function radiobutton3_Callback(hObject, eventdata, handles) % hObject handle to radiobutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
r1 = get(handles.radiobutton1,'value');
r2 = get(handles.radiobutton2,'value');
r3 = get(handles.radiobutton3,'value');
Verfasst am: 20.09.2013, 11:34
Titel: Re: mehrere Radiobutton an- und wegklicken
Hallo gapbeherif,
Du kannst den gleichen Callback für alle 3 Radio-Buttons verwenden:
Code:
function radiobutton_Callback(hObject, eventdata, handles) % hObject handle to radiobutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
r = [get(handles.radiobutton1,'value'), ... get(handles.radiobutton2,'value'), ... get(handles.radiobutton3,'value')];
pool = '123';
set(handles.edit1,'string', pool(r == 1));
end
Das sieht einfacher aus, oder? Wenn man dem Leitspruch des Programmier-Helden D.E.Knuth folgt: "KISS - Keep it simple stupid" verringert man die Anzahl der Stellen, an denen man einen Bug einbauen kann.
Bemerkung: Radio-Buttons sollten unbedingt entsprechend ihres Einsatzzweckes benutzt werden, sich als gegenseitig ausschließen. Wenn man mehrere Optionen hat, die unabhängig voneinander gesetzt werden können, sind Checkboxes vorgesehen.
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.