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