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

mehrere Radiobutton an- und wegklicken

 

gapbeherif

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2013, 20:29     Titel: mehrere Radiobutton an- und wegklicken
  Antworten mit Zitat      
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.
if ispc && 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');

%1
if ((r1 == 1) && (r2 == 0) && (r3 == 0))
     set(handles.edit1,'string','1');
end

%12
if ((r1 == 1) && (r2 == 1) && (r3 == 0))
     set(handles.edit1,'string','12');
end

%13
if ((r1 == 1) && (r2 == 0) && (r3 == 1))
     set(handles.edit1,'string','13');
end

%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

%12
if ((r1 == 1) && (r2 == 1) && (r3 == 0))
    set(handles.edit1,'string','12');
end
 
%23
if ((r1 == 0) && (r2 == 1) && (r3 == 1))  
    set(handles.edit1,'string','23');
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');

%3
if ((r1 == 0) && (r2 == 0) && (r3 == 1))
     set(handles.edit1,'string','3');
end

%13
if ((r1 == 1) && (r2 == 0) && (r3 == 1))
     set(handles.edit1,'string','13');
end

%23
if ((r1 == 0) && (r2 == 1) && (r3 == 1))
     set(handles.edit1,'string','23');
end

%123
if ((r1 == 1) && (r2 == 1) && (r3 == 1))
    set(handles.edit1,'string','123');
end
% Hint: get(hObject,'Value') returns toggle state of radiobutton3


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.09.2013, 11:34     Titel: Re: mehrere Radiobutton an- und wegklicken
  Antworten mit Zitat      
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
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.