Radio buttonların genel kullanım biçimi kullanıcının bir kac secenekten sadece birini seçmesini saglamaktır. Radiobutton secili durumdayken degeri 1 secilmemis durumdayken degeri 0 dır.Pratikte radiobutonlarıda checkbox gibi aynı anda birden cok secim yapma imkanıda saglanabilir.Fakat yaygın kullanımı tek secim oldugundan burada da böyle bir uygulama yapacağız.
Örnegimizde bir cok yerde karsımıza cıkan bir soruya yanıt vermeden yola cıkarak soruya radiobutton ile yanıt vermeyi görecegiz. Figur yüzeyimize 2 tane static text ve 3 tanede radiobutton yerlestirin. Bütün nesnelerdeki stringleri asagıdaki sekilde görüldügü gibi değistirin, Etiketi radiobutton1 olan radio butonu bulup özellikler penceresini acın. Özellikler penceresinden value sekmesine tıklayın. Açılacak küçük kutucukta 0 degerini 1 olarak değistirip OK dügemsine tıklarsanız.Radiobuttonun baslangıcta secilmis olmasını saglarsınız veya hiçbir değisiklik yapmadan baslangıcta hepsinin seçilmemiş konumda kalmasını da saglayabilirsiniz.
Son durumda ki ekran görüntüsü.
Bu figuru radiobutton.fig olarak kaydedin ve karşınıza çıkacak m-function dosyasını aşağıdaki gibi kodlayın
durum=get(gcbo,'value');
satırı içinde bulunulan radiobutton un o andaki value degerini durum değiskenine ata
b=findobj(gcbf,'Tag','radiobutton2');
c=findobj(gcbf,'Tag','radiobutton3');
satırları aktif figurde etiketleti sırasıyla radiobutton2 ve radiobutton3 olan nesneleri bul ve sırasıyla b ve c değiskenlerine ata.(2 ve 3. radiobuttonlarda ise a değiskenine radiobutton1 atanmıstır)
d=findobj(gcbf,'Tag','text2');
satırı aktif figurde etiketi text2 olan nesneyi bul ve d değiskenine ata demektir
if durum==1
set(b,'value',0);
set(c,'value',0);
set(d,'string','TURKIYE CUMHURIYETI');
end
Yukarıdaki if yapısı durum değiskeninin degeri 1 ise diger radiobuttonların degerlerini 0 yap
manasındadır.Bu durumda her seferde tek bir radiobutton secilmis olur.Eger diger radio
butonlara 0 degerini atamaz iseniz aynı anda birden fazla radiobutton seçebilirsiniz.
En son set(d,'string','TURKIYE CUMHURIYETI');
satırı ise text2 nin string degerini TURKIYE CUMHURIYETI olarak atanmasını saglar.Diger
radiobuttonlardada mantık aynıdır.Sadece yazılan yazı ve değiskenler farklılık gösterir.
İkinci bir durum olarak bilinmesi gereken program calıstıgında radiobutton1 aktif oldugundan
program calısır calısmaz ekranda TURKIYE CUMHURIYETI yazması gereklılıgıdır.Bunuda
static text2 nin string kısmını TURKIYE CUMHURIYETI olarak degıstırmenız ile
yapabileceksiniz.En son durumdaki ekran görüntüsü asagıdaki gibi olacaktır.
Örnegimizde bir cok yerde karsımıza cıkan bir soruya yanıt vermeden yola cıkarak soruya radiobutton ile yanıt vermeyi görecegiz. Figur yüzeyimize 2 tane static text ve 3 tanede radiobutton yerlestirin. Bütün nesnelerdeki stringleri asagıdaki sekilde görüldügü gibi değistirin, Etiketi radiobutton1 olan radio butonu bulup özellikler penceresini acın. Özellikler penceresinden value sekmesine tıklayın. Açılacak küçük kutucukta 0 degerini 1 olarak değistirip OK dügemsine tıklarsanız.Radiobuttonun baslangıcta secilmis olmasını saglarsınız veya hiçbir değisiklik yapmadan baslangıcta hepsinin seçilmemiş konumda kalmasını da saglayabilirsiniz.
Son durumda ki ekran görüntüsü.
Bu figuru radiobutton.fig olarak kaydedin ve karşınıza çıkacak m-function dosyasını aşağıdaki gibi kodlayın
function varargout = radiobutton(varargin)
% RADIOBUTTON Application M-file for radiobutton.fig
% FIG = RADIOBUTTON launch radiobutton GUI.
% RADIOBUTTON('callback_name', ...) invoke the named callback.
if nargin == 0 % LAUNCH GUI
fig = openfig(mfilename,'reuse');
% Use system color scheme for figure:
set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));
% Generate a structure of handles to pass to callbacks, and store it.
handles = guihandles(fig);
guidata(fig, handles);
if nargout > 0
varargout{1} = fig;
end
elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
try
[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
catch
disp(lasterr);
end
end
%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and
%| sets objects' callback properties to call them through the FEVAL
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| (H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback. You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks. Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| ('', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.
% --------------------------------------------------------------------
function varargout = radiobutton1_Callback(h, eventdata, handles, varargin)
% Stub for Callback of the uicontrol handles.radiobutton1.
durum=get(gcbo,'value');
b=findobj(gcbf,'Tag','radiobutton2');
c=findobj(gcbf,'Tag','radiobutton3');
d=findobj(gcbf,'Tag','text2');
if durum==1
set(b,'value',0);
set(c,'value',0);
set(d,'string','TURKIYE CUMHURIYETI');
end
% --------------------------------------------------------------------
function varargout = radiobutton2_Callback(h, eventdata, handles, varargin)
% Stub for Callback of the uicontrol handles.radiobutton2.
durum=get(gcbo,'value');
a=findobj(gcbf,'Tag','radiobutton1');
c=findobj(gcbf,'Tag','radiobutton3');
d=findobj(gcbf,'Tag','text2');
if durum==1
set(a,'value',0);
set(c,'value',0);
set(d,'string','KKTC');
end
% --------------------------------------------------------------------
function varargout = radiobutton3_Callback(h, eventdata, handles, varargin)
% Stub for Callback of the uicontrol handles.radiobutton3.
durum=get(gcbo,'value');
a=findobj(gcbf,'Tag','radiobutton1');
b=findobj(gcbf,'Tag','radiobutton2');
d=findobj(gcbf,'Tag','text2');
if durum==1
set(a,'value',0);
set(b,'value',0);
set(d,'string','DIGER');
end
Kodlar incelenecek olursa tek radiobutton üzerinden incelemeye başlayalımdurum=get(gcbo,'value');
satırı içinde bulunulan radiobutton un o andaki value degerini durum değiskenine ata
b=findobj(gcbf,'Tag','radiobutton2');
c=findobj(gcbf,'Tag','radiobutton3');
satırları aktif figurde etiketleti sırasıyla radiobutton2 ve radiobutton3 olan nesneleri bul ve sırasıyla b ve c değiskenlerine ata.(2 ve 3. radiobuttonlarda ise a değiskenine radiobutton1 atanmıstır)
d=findobj(gcbf,'Tag','text2');
satırı aktif figurde etiketi text2 olan nesneyi bul ve d değiskenine ata demektir
if durum==1
set(b,'value',0);
set(c,'value',0);
set(d,'string','TURKIYE CUMHURIYETI');
end
Yukarıdaki if yapısı durum değiskeninin degeri 1 ise diger radiobuttonların degerlerini 0 yap
manasındadır.Bu durumda her seferde tek bir radiobutton secilmis olur.Eger diger radio
butonlara 0 degerini atamaz iseniz aynı anda birden fazla radiobutton seçebilirsiniz.
En son set(d,'string','TURKIYE CUMHURIYETI');
satırı ise text2 nin string degerini TURKIYE CUMHURIYETI olarak atanmasını saglar.Diger
radiobuttonlardada mantık aynıdır.Sadece yazılan yazı ve değiskenler farklılık gösterir.
İkinci bir durum olarak bilinmesi gereken program calıstıgında radiobutton1 aktif oldugundan
program calısır calısmaz ekranda TURKIYE CUMHURIYETI yazması gereklılıgıdır.Bunuda
static text2 nin string kısmını TURKIYE CUMHURIYETI olarak degıstırmenız ile
yapabileceksiniz.En son durumdaki ekran görüntüsü asagıdaki gibi olacaktır.