![Visual FoxPro數(shù)據(jù)庫程序設(shè)計(jì)教程第三版課件第5章 面向?qū)ο蟮某绦蛟O(shè)計(jì)_第1頁](http://file4.renrendoc.com/view10/M02/23/2B/wKhkGWWAI6qAKdvLAAGk3ebThRk808.jpg)
![Visual FoxPro數(shù)據(jù)庫程序設(shè)計(jì)教程第三版課件第5章 面向?qū)ο蟮某绦蛟O(shè)計(jì)_第2頁](http://file4.renrendoc.com/view10/M02/23/2B/wKhkGWWAI6qAKdvLAAGk3ebThRk8082.jpg)
![Visual FoxPro數(shù)據(jù)庫程序設(shè)計(jì)教程第三版課件第5章 面向?qū)ο蟮某绦蛟O(shè)計(jì)_第3頁](http://file4.renrendoc.com/view10/M02/23/2B/wKhkGWWAI6qAKdvLAAGk3ebThRk8083.jpg)
![Visual FoxPro數(shù)據(jù)庫程序設(shè)計(jì)教程第三版課件第5章 面向?qū)ο蟮某绦蛟O(shè)計(jì)_第4頁](http://file4.renrendoc.com/view10/M02/23/2B/wKhkGWWAI6qAKdvLAAGk3ebThRk8084.jpg)
![Visual FoxPro數(shù)據(jù)庫程序設(shè)計(jì)教程第三版課件第5章 面向?qū)ο蟮某绦蛟O(shè)計(jì)_第5頁](http://file4.renrendoc.com/view10/M02/23/2B/wKhkGWWAI6qAKdvLAAGk3ebThRk8085.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2023年12月18日第1頁第5章面向?qū)ο蟮某绦蛟O(shè)計(jì)5.1對象程序設(shè)計(jì)概念5.2VisualFoxPro中的類5.3使用對象5.4簡單的輸入/輸出程序設(shè)計(jì)5.5VisualFoxPro中的事件與方法程序5.6用戶自定義類本章小結(jié)習(xí)題52023年12月18日第2頁本章要點(diǎn)面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念、VisualFoxPro中的對象與類、對象的訪問與引用、簡單的輸入輸出程序設(shè)計(jì)、創(chuàng)建自定義類。2023年12月18日第3頁早期的程序設(shè)計(jì)語言多采用結(jié)構(gòu)化程序設(shè)計(jì)(StructuredProgramming,SP)的方法,例如早期的BASIC、C語言、Pascal語言等。結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是將一個規(guī)模較大的、復(fù)雜的應(yīng)用系統(tǒng)劃分為若干個功能相關(guān)又相對獨(dú)立的較小的模塊,再將這些模塊劃分為更小的功能子模塊進(jìn)行編制,然后將這些模塊組裝起來,完成系統(tǒng)的設(shè)計(jì)。相對于以前的程序編寫方法,結(jié)構(gòu)化程序設(shè)計(jì)在一段時期內(nèi)能夠解決一些實(shí)際問題,所編寫的程序?qū)哟谓Y(jié)構(gòu)清晰,更便于閱讀和理解。但是隨著計(jì)算機(jī)技術(shù)的發(fā)展,我們面臨的問題越來越復(fù)雜,系統(tǒng)的規(guī)模也越來越大,這時再采用結(jié)構(gòu)化程序設(shè)計(jì)方法就顯得有些力不從心了。一是軟件開發(fā)周期長,二是程序代碼可重用性差,系統(tǒng)的維護(hù)更要花費(fèi)大量的人力和時間。為此,需要一種更為先進(jìn)、更能貼近人們解決問題的思維習(xí)慣方式的程序設(shè)計(jì)方法,近年來產(chǎn)生了面向?qū)ο蟮某绦蛟O(shè)計(jì)(ObjectOrientedProgramming,OOP)方法。2023年12月18日第4頁VisualFoxPro不但支持過程化編程,而且支持面向?qū)ο缶幊?。充分理解面向?qū)ο蟮幕靖拍?,掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,才能真正用好VisualFoxPro。本章的主要目標(biāo)在于為初學(xué)者樹立面向?qū)ο蟪绦蛟O(shè)計(jì)的概念。2023年12月18日第5頁5.1對象程序設(shè)計(jì)概念面向?qū)ο蟪绦蛟O(shè)計(jì)從所處理的數(shù)據(jù)入手,以數(shù)據(jù)為中心而不是以功能為中心來描述系統(tǒng)。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,采用對象、類、方法、事件、繼承等基本目概念,從分析問題領(lǐng)域中實(shí)體的屬性和行為及其相互關(guān)系入手。程序設(shè)計(jì)人員不再是單純地從代碼的第一行一直編寫到最后一行,而是考慮如何創(chuàng)建對象、利用自對象來簡化程序設(shè)計(jì)。2023年12月18日第6頁5.1.1對象1.對象“對象”(Object)是面向?qū)ο蟪绦蛟O(shè)計(jì)方法學(xué)中最基本的概念。在應(yīng)用領(lǐng)域中有意義的、與所要解決問題有關(guān)系的任何事物都可以稱作對象。它既可以是具體的物質(zhì)實(shí)體的抽象,也可以是人為的概念。例如一名學(xué)生、一所學(xué)校、一個表單、一個按鈕等都可以作為一個對象。2.類類(Class)和對象關(guān)系密切,但并不相同。類是對同一類對象的抽象,類包含了有關(guān)對象的特征和行為信息,它是對象的藍(lán)圖和框架,而類的實(shí)例就是一個對象。2023年12月18日第7頁5.1.2對象的屬性、事件與方法1.屬性所謂屬性(Property)就是對象表現(xiàn)出來的特征、狀態(tài)或行為,就像錄音機(jī)有型號、尺寸、顏色、出廠日期等特征一樣。不同的對象可以擁有各種相同或不同的屬性,其中有些屬性是只讀并且無法改變的,而有些則可以通過設(shè)定來改變。這就好像錄音機(jī)的出廠日期、型號等屬性是無法改變的,但操作面板上所顯示的時間則可通過設(shè)定來改變。2.方法方法(Method)是用來處理或操縱對象的途徑。對象通常會提供一些方法,以便應(yīng)用程序可以使用對象所提供的服務(wù)。例如,錄音機(jī)提供了“播放”、“停止”、“暫?!薄ⅰ翱爝M(jìn)”、“快退”等操作按鈕,而這些按鈕其實(shí)就相當(dāng)于錄音機(jī)提供的方法。用戶只要按下這些按鈕,就可以得到錄音機(jī)所提供的播放、停止播放、快進(jìn)、快退等服務(wù)。2023年12月18日第8頁3.事件與事件響應(yīng)事件(Event)就是對象所碰到的情況。例如,有錄音帶被放進(jìn)錄音機(jī),或者是錄音帶播完,這樣的情況就是一個“事件”。當(dāng)一個事件發(fā)生后,就需要對該事件進(jìn)行響應(yīng)。也就說,可以事先指定當(dāng)事件發(fā)生時,對象要做出什么樣的反應(yīng)。例如,當(dāng)“錄音帶放進(jìn)錄音機(jī)”的事件發(fā)生時,可以指定是直接“播放”,還是先“快進(jìn)”一小段后再開始“播放”。事件可以由一個用戶動作產(chǎn)生,如單擊鼠標(biāo)或按鍵,也可以由程序代碼或者系統(tǒng)產(chǎn)生,如計(jì)時器每隔一段時間產(chǎn)生的到時事件就是由系統(tǒng)產(chǎn)生。大多數(shù)情況下,事件是通過用戶的交互操作產(chǎn)生的。在VisualFoxPro中,可以激發(fā)事件的用戶動作包括:單擊鼠標(biāo)(Click)、雙擊鼠標(biāo)(DblClick)、按鍵(keyPress)、移動鼠標(biāo)(MouseMove)等。2023年12月18日第9頁4.事件過程在每一個對象上面,都已經(jīng)設(shè)定了該對象可能發(fā)生的事件,而每一個事件都會有一個對應(yīng)的空事件過程(也就是還沒有規(guī)定如何處理該事件的空程序)。在寫程序時,并不需要把對象所有的事件過程填滿,只要填入需要的部分就可以了。當(dāng)對象發(fā)生了某一事件,而該事件所對應(yīng)的事件過程中沒有程序代碼(也就是沒有規(guī)定處理步驟)時,則表明程序?qū)υ撌录安挥枥頃?,事件將交由系統(tǒng)預(yù)先設(shè)定的默認(rèn)處理方式處理,這樣不會對程序造成影響。2023年12月18日第10頁5.1.3面向?qū)ο缶幊堂嫦驅(qū)ο笫钩绦騿T的觀點(diǎn)從程序設(shè)計(jì)語言如何工作,轉(zhuǎn)向注重于執(zhí)行程序設(shè)計(jì)功能的對象模型,著重于建立能夠模擬需要解決的現(xiàn)實(shí)世界問題的對象。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對象是組成軟件的基本元件。每個對象可看成是一個封裝起來的獨(dú)立元件,在程序里擔(dān)負(fù)某個特定的任務(wù)。因此,在設(shè)計(jì)程序時,不必知道對象的內(nèi)部細(xì)節(jié),只是在需要時,對對象的屬性進(jìn)行設(shè)定和控制,書寫相應(yīng)的事件代碼即可。圖5-1示范了對象和應(yīng)用程序的關(guān)系。2023年12月18日第11頁對象數(shù)據(jù)與代碼屬性事件方法應(yīng)用程序讀取/設(shè)置調(diào)用響應(yīng)圖5-1面向?qū)ο缶幊棠P?023年12月18日第12頁5.1.4對象編程實(shí)例【例5-1】一個簡單表單程序的編寫示例。表單上有兩個按鈕,一個按鈕是“顯示英文”,另一個按鈕是“退出”。運(yùn)行時,首先顯示一行文字:“歡迎光臨!”。當(dāng)單擊“顯示英文”按鈕時,文字變成英文的“He11o,World!”;當(dāng)單擊“退出”按鈕時,關(guān)閉表單,程序結(jié)束。2023年12月18日第13頁(1)創(chuàng)建容器對象一一表單。操作步驟:“文件”菜單中的“新建”,彈出“新建”對話框,選取“表單”,單擊右上方的“新建文件”按鈕,進(jìn)入表單設(shè)計(jì)器。新表單具有默認(rèn)名稱Form1,默認(rèn)標(biāo)題Fom1。(2)定義數(shù)據(jù)環(huán)境一一本例沒有涉及數(shù)據(jù)庫與表操作。(3)擺放控件對象。(4)設(shè)置對象屬性。如果沒有出現(xiàn)“屬性”窗口,可以從“顯示”菜單中點(diǎn)選“屬性”,或者鼠標(biāo)左鍵單擊系統(tǒng)工具欄上的“屬性窗口”按鈕,使“屬性”窗口出現(xiàn)在屏幕上,如圖5-3所示。2023年12月18日第14頁圖5-3屬性窗口2023年12月18日第15頁(5)編寫事件代碼。針對事件進(jìn)行編程,從而實(shí)現(xiàn)對用戶鼠標(biāo)事件的響應(yīng)。①Command1的Click事件。鼠標(biāo)雙擊Command1,在出現(xiàn)的代碼窗口中,左上方“對象”框中應(yīng)是“Commmd1”,右上方“過程”框中應(yīng)是“Click”,表示現(xiàn)在編寫命令按鈕Command1的Click事件代碼。如果不是,應(yīng)使用鼠標(biāo)左鍵進(jìn)行選擇。在代碼窗口中輸入以下內(nèi)容:ThisForm..Label1.Caption="Hello,World!"②Command2的Click事件代碼。用鼠標(biāo)單擊代碼窗口左上方“對象”框右邊的向下箭頭,在彈出的列表中選擇“Comnand2”,或者在表單上直接用鼠標(biāo)雙擊Command2,在Click事件代碼窗口中輸入:Thisform.Release2023年12月18日第16頁
圖5-4運(yùn)行時表單界面圖5-5單擊“顯示英文”按鈕后的表單界面2023年12月18日第17頁5.2VisualFoxPro中的類類就像是一個模板,對象都是由它生成的。類定義了對象所有的屬性、事件和方法,從而決定了對象的屬性和它的行為。本節(jié)重點(diǎn)介紹VisualFoxPro中的類。5.2.1VisualFoxPro的基類基類是VisualFoxPro預(yù)先定義好的類,VisualFoxPro為用戶提供了29個基類,用戶既可以從中創(chuàng)建對象,也可以由基類派生出子類。VisualFoxPro的類有兩大主要類型,它們便是容器類和控件類。因此VisualFoxPro對象也分為兩大類型,即容器類對象和控件類對象。2023年12月18日第18頁1.容器類與容器類對象容器類可以容納別的對象,并允許訪問所包含的對象。比如,表單是一個容器類,當(dāng)創(chuàng)建一個具體的表單(如Forml)時,就是由表單這個容器類生成的一個容器類對象Form1,同時,又可以把按鈕、編輯框、文本框等放在表單中,無論在設(shè)計(jì)時刻還是在運(yùn)行時刻,都可以對其中任何一個對象進(jìn)行操作,如訪問、修!改它們的屬性值。表5-1列出了VisualFoxPro的容器類及其能包含的對象。2023年12月18日第19頁表5-1容器類及其能包含的對象容器名稱能包含的對象Container容器任意控件CommandGroup命令按鈕組命令按鈕Control控件任意控件Custom自定義任意控件、頁框、容器、自定義對象FormSet表單集表單、工具欄Form表單頁框、任意控件、容器或自定義對象Grid表格列標(biāo)頭對象以及除了表單集、表單、工具欄、計(jì)時器和其它列對象以外的任意對象Column表格表格列OptionGroup選項(xiàng)按鈕組選項(xiàng)按鈕PageFrame頁框頁面Page頁面任意控件、容器和自定義對象ToolBar工具欄任意控件、頁框和容器2023年12月18日第20頁2.控件類與控件類對象控件類不能容納其他對象,如命令按鈕(CommandButton)就是一個控件類,在命令按鈕中就不能包含其他對象。當(dāng)把一個具體的命令按鈕Command1放置到某個表單上時,該命令按鈕Command1就是一個由控件類CommandButton生成的控件類對象。控件類對象不能單獨(dú)使用和修改,而只能作為容器類中的一員,通過容器類創(chuàng)造的對象修改或訪問??丶惖淖畲蠛锰幨撬姆庋b性比容器類更為嚴(yán)密,因此使用起來比較方便,特別是對初學(xué)者。不過正是由于封裝的嚴(yán)密,它沒有容器類靈活。表5-2列出了VisualFoxPro中的控件類。2023年12月18日第21頁表5-2控件類控件類名稱名稱控件類名稱名稱CheckBox復(fù)選框OLEBoundControlOLE綁定控件ComboBox組合框OLEContainerControlOLE容器控件CommandButton命令按鈕OptionButton選項(xiàng)按鈕EditBox編輯框Separator空白空間Header標(biāo)題行Shape形狀I(lǐng)mage圖像Spinner微調(diào)控制器Label標(biāo)簽TextBox文本框Line線條Timer定時器ListBox列表框2023年12月18日第22頁5.2.2類的特性1.封裝一一隱藏不必要的復(fù)雜性封裝就是指將對象的方法程序和屬性代碼包裝在一起。2.繼承一一充分利用現(xiàn)有類的功能(1)子類與父類:類是對客觀事物的抽象,而抽象的層次是可以不同的。子類又叫派生類,是指以其他已有類定義為起點(diǎn)所建立的新類,該已有類稱為新類的父類。3.多態(tài)多態(tài)指由繼承而產(chǎn)生的相關(guān)的不同的類,其對象對同一消息做出不同的響應(yīng)。2023年12月18日第23頁5.3使用對象5.3.1對象的包容層次一個容器類對象包含另一個對象時,該對象是容器類對象的子對象,而容器類對象是該對象的父對象。圖5-6是一種可能的對象包容關(guān)系示意圖。2023年12月18日第24頁表單集FormSet表單Form1文本框Text1選項(xiàng)按鈕組選項(xiàng)按鈕1選項(xiàng)按鈕2命令按鈕Command1命令按鈕組命令按鈕1命令按鈕2圖5-6一種可能的對象包容層次示意圖2023年12月18日第25頁5.3.2對象的引用1.絕對引用通過提供對象的完整容器層次來引用對象稱為絕對引用。例如圖5-2中,用絕對引用方式引用標(biāo)簽Label1,格式如下:MyForm1.label1需要注意的是,當(dāng)表單是最高層對象時,絕對引用中表單名必須是相應(yīng)表單文件的文件名。【例5-1】中,表單的名字(Name屬性)是“Fom1”,表單的標(biāo)題(Caption)是“Fom1”,而表單文件名是“MyFom1.scx”。如果使用如下格式:Form1.Labell是錯誤的,系統(tǒng)將會報(bào)錯:“找不到別名Fom1”。2.相對引用2023年12月18日第26頁表5-3相對引用關(guān)鍵字及其意義關(guān)鍵字引用關(guān)系This該對象本身ThisForm該對象所在的表單ThisFormSet該對象所在的表單集Parent包含該對象的直接容器2023年12月18日第27頁表5-4相對引用示例對象引用使用的地方This在某對象的事件或方法程序代碼中訪問本控件ThisForm.Command1在Command1所在的同一表單的任意子對象的事件或方法程序代碼中訪問Command1ThisFormSet.Form1.Command1在此表單集的任意表單的任意子對象的事件或方法程序代碼中訪問Command1This.Parent在某對象的事件或方法程序代碼中訪問父對象2023年12月18日第28頁5.3.3設(shè)置屬性1.設(shè)置單個屬性在事件或方法程序中用命令設(shè)置屬性,語法如下:【格式1】<對象引用>.<對象屬性>=<值>【格式2】<對象引用>-><對象屬性>=<值>【功能】設(shè)置對象的屬性值。2023年12月18日第29頁常見的屬性值類型有數(shù)值型、字符型、邏輯型、顏色RGB值等。例如,對于圖5-2中的標(biāo)簽Label1,下列語句用絕對引用方式設(shè)置它的各種屬性,注意引用格式和屬性值類型:MYForm1.Label1.fontName="宋體“&&字符型,設(shè)置字體MYForm1.Label1.width=50 &&數(shù)值型,設(shè)置標(biāo)簽寬度MYForm1.Label1.visible=1 &&邏輯型,使控件可見MYForm1.Label1.ForeColor=RGB(0,0,0) &&顏色格式,標(biāo)簽為黑色文本如果在命令按鈕Commandl的Click事件過程中設(shè)置標(biāo)簽Labe11,也可使用相對引用格式:ThisForm.Label1.Enabled=.T. &&控件有效MYForm1.Label1.ForeColor=RGB(0,0,0) &&黑色文本MYForm1.Label1.Visible=.T. &&控件可見2023年12月18日第30頁2.設(shè)置多個屬性當(dāng)對一個對象一次設(shè)置多個屬性時,With…EndWith結(jié)構(gòu)可以簡化設(shè)置過程。語法如下:【格式】With<對象引用>.<屬性1>=<值1>…….<屬性n>=<值n>EndWith【功能】一次設(shè)置指定對象的多個屬性值。2023年12月18日第31頁例如,上面例子中設(shè)置標(biāo)簽Label1的多個屬性,可以使用以下語句實(shí)現(xiàn):withMyForml.Labell .Enabled=.T. &&控件有效.Forecolor=RGB(0,0,0) &&黑色文本.visible=.T. &&控件可見EndWith2023年12月18日第32頁5.4簡單的輸入/輸出程序設(shè)計(jì)5.4.1命令按鈕的使用命令按鈕(CommandButton)控件是使用最多的控件之一,常被用來執(zhí)行某些代碼,如開始計(jì)算、移動指針、關(guān)閉表單等,特定操作代碼通常放置在命令按鈕的Click事件中。命令按鈕的常用屬性,如表5-5示。2023年12月18日第33頁表5-5命令按鈕的常用屬性屬性說明Cancel指定當(dāng)用戶按下Esc鍵時,執(zhí)行與命令按鈕的Click事件相關(guān)的代碼Caption在按鈕上顯示的文本DisabledPicture當(dāng)按鈕失效時,顯示的.BMP文件DownPicture當(dāng)按鈕按下時,顯示的.BMP文件Enabled能否選擇此按鈕Picture顯示在按鈕上的.BMP文件2023年12月18日第34頁5.4.2用標(biāo)簽輸出信息【例5-2】在表單中顯示一個紅色楷體18磅的文本“VisualFoxpro程序設(shè)計(jì)”。5.4.3文本框輸入輸出2023年12月18日第35頁表5-6文本框的常用屬性屬性說明Alignment指定文本框中的內(nèi)容是左對齊、右對齊、居中還是自動對齊。自動對齊取決于數(shù)據(jù)類型,如數(shù)值型數(shù)據(jù)右對齊,字符型數(shù)據(jù)左對齊Century指定年份的前兩個數(shù)字是否顯示ControlSource在文本框中顯示表的字段或變量的值DateFormat將文本框中的日期編排為十五個預(yù)定的格式。如American,GermanInputMask指定每個字符輸入時必須遵守的規(guī)則PasswordChar指定文本框中是顯示用戶輸入的內(nèi)容,還是顯示占位符,并指定用作占位的字符ReadOnly指定用戶能否對該文本框的內(nèi)容進(jìn)行編輯SelectOnEntry當(dāng)文本框得到焦點(diǎn)時是否自動選中文本框的內(nèi)容TabStop確定用戶是否能用Tab鍵選擇該控件。如果TabStop設(shè)置為.F.,用戶仍能用鼠標(biāo)單擊的方法選擇該文本框2023年12月18日第36頁表5-7文本框的InputMask屬性及其值的設(shè)置設(shè)置說明9可以輸入數(shù)字和符號,如可以輸入一個負(fù)號#可以輸入數(shù)字、空格和字符*在值的左邊顯示符號“*”.指定十進(jìn)制小數(shù)點(diǎn)的位置,表示十進(jìn)制整數(shù)部分用逗號分隔2023年12月18日第37頁表5-8Format屬性常用格式符功能符功能A僅允許英文字母,不允許空格或標(biāo)點(diǎn)符號D使用當(dāng)前SETDATE所設(shè)定的日期格式E使用歐洲日期格式編輯日期數(shù)據(jù)K選定整個文體框進(jìn)行編輯。L在文本框中顯示前導(dǎo)0,而不是空格。只對數(shù)值型數(shù)據(jù)使用R顯示文本框的格式掩碼,掩碼字符并不存在控件集中。只能用于文本框中字符型或數(shù)值型數(shù)據(jù)。T刪除數(shù)據(jù)的前置和尾部空格。M允許多個預(yù)置選擇項(xiàng)。選擇項(xiàng)列表存儲在InputMask屬性中,列表中的各項(xiàng)用逗號分隔。列表中獨(dú)立的各項(xiàng)不能再包含嵌入的逗號。如果文本框的Value屬性并不包含此列表中的任何一項(xiàng),則它被設(shè)置為列表中的第一項(xiàng)。只能用于文本框中字符型數(shù)據(jù)。^用科學(xué)計(jì)數(shù)法顯示數(shù)據(jù)。!字符型數(shù)據(jù)中的字母轉(zhuǎn)化為大寫。只用于文本框$顯示貨幣符號,只用于數(shù)值或貨幣型數(shù)據(jù)。2023年12月18日第38頁【例5-3】利用文本框輸入球的半徑,然后按“計(jì)算”按鈕,得到球的體積。具體操作如下:(1)打開表單設(shè)計(jì)器,添加兩個文本框控件Text1和Text2,兩個標(biāo)簽控件Label1和Label2,兩個命令按鈕Command1和Command2,如圖5-9所示。2023年12月18日第39頁圖5-9表單界面設(shè)計(jì)2023年12月18日第40頁(2)設(shè)置對象屬性。修改表單Form1的屬性:標(biāo)題(Caption)改為文本框的使用。修改標(biāo)簽Label1的屬性:標(biāo)題(Caption)改為請輸入球的半徑:;字體(FontName)改為黑體;粗體字(FontBold)改為.T.——真;字體大小(FontSize)改為18;自動大?。ˋutoSize)改為.T.——真。修改標(biāo)簽Label2的屬性:標(biāo)題(Caption)改為球的體積為:;其它屬性與標(biāo)簽Label1相同。修改文本框Text1的屬性:InputMask改為9999.99;Value改為0;修改文本框Text2的屬性:InputMask改為9999.99;ReadOnly改為.T.;TabStop改為.F.;Value改為0。修改命令按鈕Command1的屬性:標(biāo)題(Caption)改為計(jì)算;粗體(FontBold)改為.T.——真。修改命令按鈕Command2的屬性:標(biāo)題(Caption)改為關(guān)閉;粗體(FontBold)改為.T.——真。2023年12月18日第41頁(3)編寫事件代碼。表單的事件代碼如下。Activate事件:Thisform.text1.SetFocusCommand1的事件代碼如下。Click事件:R=Thisform.text1.valueThisform.text2.value=4*3.14*R*R*R/3Thisform.text1.SetFocus(4)保存并運(yùn)行該表單,結(jié)果如圖5-10所示。2023年12月18日第42頁圖5-10計(jì)算球體積的表單運(yùn)行結(jié)果2023年12月18日第43頁5.5VisualFoxPro中的事件與方法程序1.事件在VisualFoxPro中,對象可以響應(yīng)50多種事件,當(dāng)事件發(fā)生時,將執(zhí)行包含在事件過程中的全部代碼。事件有的適用于專門控件,有的適用于多種控件。事件的發(fā)生大多由用戶操作引發(fā),部分由系統(tǒng)或其他對象引發(fā)。表5-10列出了VisualFoxPro中的核心事件。2.方法程序的調(diào)用每一類對象都有特定的方法程序,表單的常用方法程序如表5-9所示。2023年12月18日第44頁表5-9表單的常用方法方法名功能方法名功能AddObject向表單中添加對象Line在表單上畫線Hide隱藏表單Box在表單上畫矩形Show顯示表單Circle在表單上畫圓圈和圓弧Refresh刷新表單上控件的值Cls清除表單上的文本和圖形Release釋放表單或表單集SetFocus設(shè)置控件對象的焦點(diǎn)2023年12月18日第45頁【格式】<對象引用>.<方法程序>【功能】調(diào)用對象的方法程序。下列語句調(diào)用方法程序來顯示表單,并將焦點(diǎn)設(shè)置在命令按鈕Commandl上:MyForm1.showMYFmand1.setFocus2023年12月18日第46頁表5-10VisualFoxPro核心事件事件觸發(fā)事件操作Click按下并釋放鼠標(biāo)左鍵DblClick雙擊鼠標(biāo)左鍵,選擇列表框或組合框中選項(xiàng)并回車Destroy釋放對象時GetFocus接收到焦點(diǎn)(Focus)Init創(chuàng)建對象InteractiveChange使用鍵盤或鼠標(biāo)改變控件的值時KeyPress當(dāng)用戶按下并釋放一個鍵時Load在創(chuàng)建一個對象之前發(fā)生LostFocus當(dāng)對象失去焦點(diǎn)(Focus)時MouseDown當(dāng)用戶按下鼠標(biāo)鍵時MouseMove當(dāng)鼠標(biāo)移動到對象上時MouseUp當(dāng)釋放鼠標(biāo)按鍵時ProgrammaticChange以編程方式更改控件的值時發(fā)生RightClick在控件中按下并釋放鼠標(biāo)右鍵時Unload釋放對象時2023年12月18日第47頁5.6用戶自定義類5.6.1使用類設(shè)計(jì)器創(chuàng)建類1.“新建類”對話框新建類有三種方法可以進(jìn)入“新建類”對話框:·項(xiàng)目管理器中新建類?!奈募藛沃行陆?。·直接在命令窗口鍵入CreateClass命令。在如圖5-11所示的“新建類”對話框中,為新建類指定所需的類庫、基類和類名等。2023年12月18日第48頁圖5-11新建類對話框2023年12月18日第49頁2.類設(shè)計(jì)器類設(shè)計(jì)器的用戶界面與表單設(shè)計(jì)器相似,在類設(shè)計(jì)器中,新類的屬性、事件和方法主要通過屬性窗口進(jìn)行設(shè)計(jì)、定義和修改,如圖5-12所示。2023年12月18日第50頁圖5-12類設(shè)計(jì)器界面2023年12月18日第51頁【例5-4】創(chuàng)建一個自定義命令按鈕組類MyCmdGroup,命令按鈕按多行多列排列,用戶可以指定按鈕的行數(shù)和列數(shù)。(1)創(chuàng)建新類:選擇“文件”菜單中的“新建”按鈕,在“新建”對話框中選中“類”,單擊“新建文件”按鈕。在如圖5-11所示的“新建類”對話框中,類名:MyCmdGroup;派生于:CommandGroup;存儲于:f:\vfpr\MyClass.vcx。按“確定”按鈕進(jìn)入類設(shè)計(jì)器。2023年12月18日第52頁(2)添加類的新屬性:為新類添加兩個新屬性:①RowCount:命令按鈕的行數(shù):ColumnCount:命令按鈕的列數(shù)。步驟:選擇“類”菜單中的“新建屬性”,打開如圖5-13所示的“新建屬性”對話框,在“新建屬性”對話框的“名稱”一欄輸入“RowCount”,在“說明”一欄輸入“命令按鈕組中按鈕的行數(shù)”,單擊“添加”按鈕。②用同樣方法添加屬性“ColumnCount”,然后按“關(guān)閉”按鈕關(guān)閉“新建屬性”對話框。(3)為新屬性指定初始值:在類的屬性窗口(“其他”卡片中)找到這兩個新增屬性,將它們的值設(shè)為2。(4)輸入類信息:選主“類”菜單中的“類信息”,打開如圖5-14所示的“類信息對話框”,指定工具欄圖標(biāo)容器類圖標(biāo),如需要,可以輸入類的說明信息。2023年12月18日第53頁圖5-13新建屬性圖5-14類信息對話框2023年12月18日第54頁圖5-15類的Init代碼2023年12月18日第55頁(5)編制類的Init代碼:當(dāng)用戶使用這個類時,根據(jù)RowCount和ColumCount屬性值,自動計(jì)算各個按鈕的位置,如圖5-15所示。(6)保存并關(guān)閉類設(shè)計(jì)器:當(dāng)關(guān)閉類設(shè)計(jì)器時,系統(tǒng)提示“要將所作更改保存到類設(shè)計(jì)器——MyClass.vcx(MyCmdGroup)中嗎?”,選擇“是”按鈕。2023年12月18日第56頁3.使用用戶自定義類【例5-5】創(chuàng)建一個新表單,使用【例5-2】中創(chuàng)建的命令按鈕類為表單添加一個命令按鈕組。(1)新建表單:選擇“文件”菜單中的“新建”/“表單”/“新建文件”,進(jìn)入表單設(shè)計(jì)器;(2)將用戶自定義類加入表單控件工具欄:點(diǎn)擊表單控件工具欄的“查看類”按鈕,在彈出菜單中選定“添加”,在打開對話框中查找【例5-2】所保存的可視類MyClass.vcx文件,單擊“確定”按鈕,此時控件工具欄上將顯示自定義類的圖標(biāo)。2023年12月18日第57頁(3)添加自定義按鈕組:點(diǎn)擊自定義類圖標(biāo),在表單上用鼠標(biāo)單擊,一個自定義按鈕組將出現(xiàn)在表單上。(4)修改自定義按鈕組屬性:在屬性窗口中單擊“其他”卡片,在最下方找到RowCount和ColumnCount屬性,分別修改屬性值為4和3。(5)執(zhí)行表單:屏幕上將出現(xiàn)一個4×3的按鈕組,如圖5-16所示。2023年12月18日第58頁圖5-16使用自定義類2023年12月18日第59頁4.將一個表單存為類可以將一個表單直接存為可視類,步驟為:(1)在表單設(shè)計(jì)器中設(shè)計(jì)或打開一個表單。(2)通過“文件”菜單的“另存為類”,輸入類名、保存文件名和類描述,按“確定”按鈕。2023年12月18日第60頁5.6.2編程方式使用類也可以在代碼運(yùn)行中用編程的方式定義類,其基本語法為:DEFINECLASSClassnamelASParentClass[[Obje
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年堿錳電池合作協(xié)議書
- 小學(xué)一年級2025年秋季學(xué)期語文教學(xué)計(jì)劃
- 2025年企業(yè)公轉(zhuǎn)私借款合同(2篇)
- 2025年九年級第二學(xué)期思想品德教學(xué)工作總結(jié)(三篇)
- 2025年個人房屋買賣協(xié)議例文(五篇)
- 2025年買賣合同要式合同(2篇)
- 2025年代理委托貸款協(xié)議(2篇)
- 2025年九年級初三班主任的工作總結(jié)模版(二篇)
- 2025年二手房買賣購房合同樣本(三篇)
- 2025年個人私人借款合同標(biāo)準(zhǔn)版本(2篇)
- 外科手術(shù)及護(hù)理常規(guī)
- 學(xué)校開學(xué)教師安全培訓(xùn)
- 出口潛力分析報(bào)告
- 大美陜西歡迎你-最全面的陜西省簡介課件
- 三位數(shù)減三位數(shù)的減法計(jì)算題 200道
- 米粉項(xiàng)目可行性研究報(bào)告
- 蛇年元宵節(jié)燈謎大全(附答案)
- 2023年上海中僑職業(yè)技術(shù)大學(xué)單招考試職業(yè)技能考試模擬試題及答案解析
- 中國教育公益領(lǐng)域發(fā)展報(bào)告
- 第2章第1節(jié)有機(jī)化學(xué)反應(yīng)類型課件高二下學(xué)期化學(xué)魯科版選擇性必修3
- 生物質(zhì)能利用原理與技術(shù) - 第二章生物質(zhì)能資源與植物
評論
0/150
提交評論