Thông tin tài liệu
41
Tamuốnlàkhibấmchuột,sốlầnbấmsẽđượcđếmvàghilại.Trướchết
tagọiguidevàcóđượcmộtlayoutrỗng.VàoPropertyInspector(ôsoạnthảo
thuộctính)vàghi
vàoNamechuỗiʺct1_52ʺvàchấpnhậnthuộctíchTagmặc
địnhcủanólàfigure1;dùngFontchữmặcđịnh,cỡchữ12,bold.Tadùngô
EditTextđểghilạisốlầnbấm.TavàoPropertyInspectorr
ồichọnString.Ta
nhậpvàoônàychuỗiʺSolanbamchuot:0ʺ.TaghivàoôTagchuỗiʺeditmotʺ
và cũng dùng Font chữ mắcđịnh, cỡ chữ 12 và bold. Tiếp theo kéo
Pushbuttonvàolayoutvàsoạn
thảothu ộctínhchonóvớiFontchữmặcđịnh,
cỡchứ12,bold.TrongthuôctínhStringghichuỗiʺBamchuotʺ;ghivàTag
chuỗiʺpushbuttonmotʺ.Nhưvậylàtađãthiếtkếxong.Bâygiờtalưul
ạivới
tênlà
ct1_52.figvàct1_52.m.
Nhiệmvụtiếptheolàghicáclệnhcầnthiếtvàofile
ct1_52.m.Filenày
đãđượcMATLABtựđộngtạora.Taphảithêmvàođócácmãlệnhđểkhi
bấmchuộtthìsốlầnbấmđượcthểhiệntrênôEditText.Tasẽghicácmãlệnh
nàyvàophầ
n:
functionvarargout=pushbuttonmot_Callback(h,eventdata,handles,varargin)
dolệnhcầnđượcthựchiệnkhigọipushbutton.Nộidungcủact1_52.mlà:
functionvarargout=Ct1_52(varargin)
ifnargin==0
fig=openfig(mfilename,ʹreuseʹ);
set(fig,ʹColorʹ,get(0,ʹdefaultUicontrolBackgroundColorʹ));
42
handles=guihandles(fig);
guidata(fig,handles);
ifnargout>0
varargout{1}=fig;
end
elseif
ischar(varargin{1})
try
[varargout{1:nargout}]=feval(varargin{:});
catch
disp(lasterr);
end
end
functionvarargout=pushbuttonmot_Callback(h,eventdata,handles,varargin)
persistentdem;%biendemlapersistentdenotontaigiualangoiham
ifisempty(dem)
dem
=0;
end
dem=dem+1;
str=sprintf(ʹSolanbamchuot:%dʹ,dem);
set(handles.editmot,ʹStringʹ,str);
)ChuyểnđổitừđộFahrenheitsangđộCelcius:TathiếtkếmộtGUIđể
chuyểnđổinhiệtđộ.Giaodiệncódạngnhưsau:
ThuộctínhcủaLayoutđượcghiName:
ct1_53còncácthuộctínhkhác
làmặcđịnh.
43
Ta dùng hai Frame vớicácTag là frmmot và frame2. Các thuộc tính
khácchấpnhậngiátrịmặcđịnh.
EditTextthứnhấtcócácthuộctínhFontName:Arial,FontSize:demi,
FơntWeight:demi,String:Fahrenheit,Tag:editmotcòncácthuộc
tínhkháclà
mặcđịnh.
Edit Text thứ hai có các thuộc tính FontName: Arial, FontSize: demi,
FơntWeight:demi,String:đểtrống,Tag:edithaicòncácthuộc tínhkháclà
mặcđịnh.
Edit Text thứ ba có các thuộc tính FontName: Arial, FontSize: demi,
FơntWeight:demi,String:Celcius,Tag:editbacòncácthuộctínhkháclàmặc
định.
Edit Text thứ tư có các thuộc tính FontName: Arial, FontSize: demi,
FơntWeight:demi,String:đểtrống,Tag:editboncòncácthuộctínhkháclà
mặcđịnh.
Sau khi
thiết kế xong, lưu nó với tên ct3_18.fig. MATLAB tạo thêm
ct1_53.m.Bâygiờtacầnviếtmãchonó.Nhiệmvụcủađoạnmãlàkhitanhập
nhiệtđộFahrenheitvàoôEdittextthứhaithìtrong ôEditTextthứ4phải
xuấthiệngiátrịnhiệtđộCelcius
tươngứng.Dovậynộidungcủact1_53.mlà:
functionvarargout=Ct1_53(varargin)
ifnargin==0%LAUNCHGUI
fig=openfig(mfilename,ʹreuseʹ);
set(fig,ʹColorʹ,get(0,ʹdefaultUicontrolBackgroundColorʹ));
handles=guihandles(fig);
guidata(fig,handles);
ifnargout>0
varargout{1}=fig;
end
elseifischar(varargin{1})
try
[varargout{1:nargout}]=feval(varargin{:});%FEVALswitchyard
catch
disp(lasterr);
end
end
functionvarargout=edithai_Callback(h,eventdata,handles,varargin)
f=get(handles.edithai,ʹStringʹ);
44
f=str2num(f);
c=(f‐32)*5/9;
c=num2str(c);
set(handles.editbon,ʹStringʹ,c);
Trongđóđoạnmãcầnviếtnằmtrongđoạn:
functionvarargout=edithai_Callback(h,evendata,handles,varargin)
CáclệnhkháclàdoMATLABtựđộngtạora.
)Dùngsliderđểnhậpsốliệu:Tadùngvídụchuyểnđổinhiệtđộtrên
nhưngbâygiờsẽthêmsliderđểthay đổinhiệtđộđầuvào.Giaodiệnsẽcó
dạng:
Nhưvậytacần5phầntử,trongđócómộtphầntửlàslidervà4phần
tửEditText.
Layout có thuộc tính Name:
ct1_54, còn các thuộc tín h khác ta chấp
nhậngiátrịmặcđịnh.
SlidercóthuộctínhMax:1.0vàMin:0.0.
EditTextthứnh ấtcóthuộctínhFontSize:12,FơntWeight:bold,String:
Fahrenheitcòncácthuộctínhkhácchấp
nhậngiátrịmặcđịnh.
EditTextthứ2cóthuộctínhFontSize:12,FơntWeight:bold,String:để
trống.
Edit Text thứ 3 có thuộc tính FontSize: 12, FơntWeight: bold, String:
Celcius.
45
EditTextthứ4cóthuộctínhFontSize:12,FơntWeight:bold,String:
để
trống.(Cácthuộctínhmàtakhôngnhắcđếncónghĩalàchấpnhậngiátrịmặc
định).
Layoutđượclưuvớitên
ct1_54.fig.
Bâygiờtaviếtmãchophần
ct1_54.mmàMATLABđãtựđộngtạora.
Nhiệmvụcủanólànhậngiátrịthayđổitừcontrượt,cậpnh ậtchoEditText
2vàEditText4.Tacónộidungcủa
ct1_54.m:
functionvarargout=ct1_54(varargin)
ifnargin==0
fig=openfig(mfilename,ʹreuseʹ);
handles=guihandles(fig);
guidata(fig,handles);
ifnargout>0
varargout{1}=fig;
end
elseifischar(varargin{1})
try
[varargout{1:nargout}]=feval(varargin{:});%FEVALswitchyard
catch
disp(lasterr);
end
end
functionvarargout=slider1_Callback(h,eventdata,
handles,varargin)
f=get(handles.slider1,ʹValueʹ);%nhangiatritucontruot
f=f*180+32;%tinhradoFahrenheit
a=num2str(f);%bienlaithanhchuoi
set(handles.edit2,ʹStringʹ,a);%ghivaoodoFahrenheit
b=(f‐32)*5/9;%doithanhdoCelcius
b=num2str(b);%doilaithanhchuoi
set(handles.edit4,ʹStringʹ,b);%ghivao
odoCelcius
)Xuấtsốliệucólựachọn:Tavẫndùngvídụtrênnhưngbâygiờnhiệt
độ quyđổi có thể được tính theo thang nhiệtđộKenvine, Celcius hay
46
Rankine.Đểcóthểchọnlựata dùngmộttrongcácphươngán:Popupmenu,
Rdiobutton,ListboxhayCheckbox.GiaodiệnkhidùngPopupmenunhưsau:
NhưvậylàtacầnmộtSlider,baEditTextvàmộtPopupmenu.Layout
cóthuộctínhName:
ct13_55.
SlidercóthuộctínhMax:1vàMin:0
Edit Text thứ nhất có thuộc tính FontSize: 12, FơntWeight: bold và
String:Fahrenheit.
EditTextthứhaicóthuộctínhFontSize:12,FơntWeight:boldvàString
đểtrống.
EditTextthứ3
cóthuộctínhFontSize:12,FơntWeight:boldvàStringđể
trống.
Popupmenucóthuộctính FontSize:12,FontWeight:bold.Đểghivào
thuộctínhStringtabấmđúpchuộtvàoiconcủanóvàviết3dòng:Kelvine,
CelciusvàRankine.
Fileđược lưu với tên
ct1_55.fig. Vấnđềcòn lại là viết mã trong file
ct1_55.m.Mãcầnthựchiệnnhận giátrịtừSlider,xemPopupmenunàođược
chọnđểhiểnthịnhiệtđộtươngứng.File
ct1_55.mnhưsau:
functionvarargout=ct1_55(varargin)
ifnargin==0%LAUNCHGUI
fig=openfig(mfilename,ʹreuseʹ);
set(fig,ʹColorʹ,get(0,ʹdefaultUicontrolBackgroundColorʹ));
handles=guihandles(fig);
guidata(fig,handles);
47
ifnargout>0
varargout{1}=fig;
end
elseifischar(varargin{1})
try
[varargout{1:nargout}]=feval(varargin{:});
catch
disp(lasterr);
end
end
functionvarargout=slider1_Callback(h,eventdata,handles,varargin)
f=get(handles.slider1,ʹValueʹ);
f=f*180+32;
a=num2str(f);
set(handles.edit2,ʹStringʹ,a);
r=f+495.7;
c
=(f‐32)*5/9;
k=c+273.15;
chon=get(handles.popupmenu1,ʹValueʹ);
ifchon==1
t=k;
elseifchon==2
t=c;
elseifchon==3
t=r;
end
t=num2str(t);
set(handles.edit3,ʹStringʹ,t);
Tiếptheotaxéttrườnghợpdùnglistbox.ThayvìdùngPopupmenutadùng
Listbox.Cácphầntửkhácvàthuộctínhcủanókhôngthayđổi.Thuộctính
NamecủaLayoutlà
ct1_56.TavàoôStringcủaListboxvàghivàođó3dòng
Kelvine,CelciusvàRankine.Giaodiệnnhưsau:
48
Fileđượclưuvớitênct1_56.fig.Tiếptheoviếtlệnhchoct1_56.m.Tacó
filenàynhưsau:
functionvarargout=ct1_56(varargin)
ifnargin==
fig=openfig(mfilename,ʹreuseʹ);
set(fig,ʹColorʹ,get(0,ʹdefaultUicontrolBackgroundColorʹ));
handles=guihandles(fig);
guidata(fig,handles);
ifnargout>0
varargout{1}=fig;
end
elseifischar(varargin{1})
try
[varargout{1:nargout}]=feval(varargin{:});
catch
disp(lasterr);
end
end
functionvarargout=slider1_Callback(h,eventdata,handles,varargin)
f=get(handles.slider1,ʹValueʹ);
f=f*180+32;
a=num2str(f);
set(handles.edit2,ʹStringʹ,a);
r=f+495.7;
49
c=(f‐32)*5/9;
k=c+273.15;
chon=get(handles.listbox1,ʹValueʹ);
ifchon==1
t=k;
elseifchon==2
t=c;
elseifchon==3
t=r;
end
t=num2str(t);
set(handles.edit3,ʹStringʹ,t);
TatiếptụcxétphươngándùngRadiobutton.Giaodiệncódạng:
Ta dùng ba Radiobutton thay cho Listbox. Radiobutton thứ nhất có
thuộc tính FontSize: 12, FơntWeight: bold và String: Rankine. Radiobutton
thứ 2 có thu ộc tính FontSize: 12, FơntWeight: bold và String: Celcius.
Radibutton thứ 3 có thuộc tính FontSize: 12, FơntWeight: bold và
String:
Kelvine.Cácphầntửkhácvàthuộctínhcủachúngvẫnnhưcũ.Layout có
thuộctínhName:
ct1_57.LưuGUIvớitênct1_57.fig.
Tiếptheotaviếtcácmãlệnhtrong
ct1_57.m:
functionvarargout=ct1_57(varargin)
ifnargin==0
fig=openfig(mfilename,ʹreuseʹ);
set(fig,ʹColorʹ,get(0,ʹdefaultUicontrolBackgroundColorʹ));
handles=guihandles(fig);
50
guidata(fig,handles);
ifnargout>0
varargout{1}=fig;
end
elseifischar(varargin{1})
try
[varargout{1:nargout}]=feval(varargin{:}); catch
disp(lasterr);
end
end
functionmutual_exclude(off)
set(off,ʹValueʹ,0);
functionvarargout=slider1_Callback(h,eventdata,handles,varargin)
globalchon
f=get(handles.slider1,ʹValueʹ);
f=f*180+32;
a=num2str(f);
set(handles.edit2,ʹStringʹ,a);
r=f+495.7;
c=(f‐32)*5/9;
k=c+273.15;
ifchon==1
t=r;
elseifchon==2
t=c;
elseifchon==3
t=k;
end
t=num2str(t);
set(handles.edit3,ʹStringʹ,t);
functionvarargout
=radiobutton1_Callback(h,eventdata,handles,varargin)
global chon;
off = [handles.radiobutton2, handles.radiobutton3];
mutual_exclude(off);
chon = 1;
function varargout = radiobutton2_Callback(h, eventdata, handles, varargin)
global chon;
off = [handles.radiobutton1, handles.radiobutton3];
. end
end
functionvarargout=slider1_Callback(h,eventdata,handles,varargin)
f=get(handles.slider1,ʹValueʹ);
f=f*180+32;
a=num2str(f);
set(handles.edit2,ʹStringʹ,a);
r=f+495.7;
c
=(f‐32)*5/9;
k=c+273.15;
chon=get(handles.popupmenu1,ʹValueʹ);
ifchon==1
t=k;
elseifchon==2
t=c;
elseifchon==3
t=r;
end
t=num2str(t);
set(handles.edit3,ʹStringʹ,t);
Tiếptheotaxéttrườnghợpdùnglistbox.ThayvìdùngPopupmenutadùng
Listbox. Các phần tử khácvàthuộctính của nókhôngthayđổi.Thuộctính
Name của Layoutlà
ct1_56.TavàoôString của Listboxvàghivàođó3dòng
Kelvine,CelciusvàRankine.Giaodiệnnhưsau:
. đổinhiệtđộđầuvào.Giaodiệnsẽcó
dạng:
Nhưvậytacần5phần tử, trongđócómộtphần tử làslidervà4phần
tử EditText.
Layout có thuộc tính Name:
ct1_54, còn các thuộc tín h khác
Ngày đăng: 21/01/2014, 02:20
Xem thêm: Tài liệu Matlab - các toán tử cơ bản của Matlab - P2 pdf, Tài liệu Matlab - các toán tử cơ bản của Matlab - P2 pdf