![學(xué)生管理系統(tǒng)_第1頁](http://file4.renrendoc.com/view/ddf75016a3fb8a1b1e4a9c0a75d14771/ddf75016a3fb8a1b1e4a9c0a75d147711.gif)
![學(xué)生管理系統(tǒng)_第2頁](http://file4.renrendoc.com/view/ddf75016a3fb8a1b1e4a9c0a75d14771/ddf75016a3fb8a1b1e4a9c0a75d147712.gif)
![學(xué)生管理系統(tǒng)_第3頁](http://file4.renrendoc.com/view/ddf75016a3fb8a1b1e4a9c0a75d14771/ddf75016a3fb8a1b1e4a9c0a75d147713.gif)
![學(xué)生管理系統(tǒng)_第4頁](http://file4.renrendoc.com/view/ddf75016a3fb8a1b1e4a9c0a75d14771/ddf75016a3fb8a1b1e4a9c0a75d147714.gif)
![學(xué)生管理系統(tǒng)_第5頁](http://file4.renrendoc.com/view/ddf75016a3fb8a1b1e4a9c0a75d14771/ddf75016a3fb8a1b1e4a9c0a75d147715.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第10章 面向信息管理程序設(shè)計(jì)本章學(xué)習(xí)目標(biāo) 掌握MDI多窗體程序設(shè)計(jì)方法; 熟悉工具欄和狀態(tài)欄的程序設(shè)計(jì)方法; 掌握用CommonDialog控件創(chuàng)建通用對(duì)話框的方法;目錄10.1【案例13】學(xué)生信息管理系統(tǒng)10.2實(shí)戰(zhàn)演練 10.3知識(shí)點(diǎn)播 10.4 經(jīng)驗(yàn)總結(jié)10.1【案例13】學(xué)生信息管理系統(tǒng)一、案例綜述 學(xué)生信息管理系統(tǒng)的前臺(tái)用戶界面利用我們前面所學(xué)的Visual Basic知識(shí)設(shè)計(jì),采用MDI多文檔界面方式,整個(gè)工程由一個(gè)主窗體件和包括登錄、添加用戶、修改密碼、添加學(xué)籍信息、修改學(xué)籍信息、查詢學(xué)籍信息、添加班級(jí)信息、修改班級(jí)信息、添加課程信息、修改課程信息、設(shè)置年級(jí)課程信息、添加成績信
2、息、修改成績信息、查詢成績信息等15個(gè)窗體以及一個(gè)公用標(biāo)準(zhǔn)模塊組成;后臺(tái)數(shù)據(jù)庫“student.mdb” 利用Microsoft Access2003創(chuàng)建;并且利用ADO對(duì)象作為數(shù)據(jù)源,將Visual Basic的窗體與數(shù)據(jù)庫進(jìn)行連接。二、案例分析 隨著學(xué)校的規(guī)模不斷擴(kuò)大,學(xué)生數(shù)量急劇增加,有關(guān)學(xué)生的各種信息量也成倍增長。面對(duì)龐大的信息量,就需要有學(xué)生信息管理系統(tǒng)來提高學(xué)生管理工作的效率。通過這樣的系統(tǒng),可以做到信息的規(guī)范管理、科學(xué)統(tǒng)計(jì)和快速的查詢,從而減少管理方面的工作量。本案例將介紹如何建立一個(gè)學(xué)生信息管理系統(tǒng)。1.系統(tǒng)功能分析 系統(tǒng)開發(fā)的總體任務(wù)是實(shí)現(xiàn)學(xué)生信息關(guān)系的系統(tǒng)化、規(guī)范化和自動(dòng)化
3、。 系統(tǒng)功能分析是在系統(tǒng)開發(fā)的總體任務(wù)的基礎(chǔ)上完成的。本案例中的學(xué)生信息管理系統(tǒng)需要完成的功能主要有: 有關(guān)學(xué)籍等信息的輸入,包括學(xué)生基本信息、所在班級(jí)、所學(xué)課程和成績等。學(xué)生信息的查詢,包括學(xué)生基本信息、所在班級(jí)、已學(xué)課程和成績等。學(xué)生信息的修改。班級(jí)管理信息的輸入,包括班級(jí)設(shè)置、年級(jí)信息等。班級(jí)管理信息的查詢。班級(jí)管理信息的修改。學(xué)校基本課程信息的輸入?;菊n程信息的修改。學(xué)生課程的設(shè)置和修改。學(xué)生成績信息的輸入。學(xué)生成績信息的修改。學(xué)生成績信息的查詢。學(xué)生成績信息的統(tǒng)計(jì)。 2.系統(tǒng)功能模塊設(shè)計(jì) 對(duì)上述各項(xiàng)功能進(jìn)行集中、分塊,按照結(jié)構(gòu)化程序設(shè)計(jì)的要求,得到系統(tǒng)功能模塊圖。3.系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
4、 數(shù)據(jù)庫在一個(gè)信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)的好壞將直接對(duì)應(yīng)用系統(tǒng)的效率以及實(shí)現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)可以提高數(shù)據(jù)存儲(chǔ)的效率,保證數(shù)據(jù)的完整和一致。同時(shí),合理的數(shù)據(jù)庫結(jié)構(gòu)也將有利于程序的實(shí)現(xiàn)。 設(shè)計(jì)數(shù)據(jù)庫系統(tǒng)時(shí)應(yīng)該首先充分了解用戶各個(gè)方面的需求,包括現(xiàn)有的以及將來可能增加的需求。(1)數(shù)據(jù)庫需求分析 用戶的需求具體體現(xiàn)在各種信息的提供、保存、更新和查詢,這就要求數(shù)據(jù)庫結(jié)構(gòu)能充分滿足各種信息的輸出和輸入。收集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)處理的流程,組成一份詳盡的數(shù)據(jù)字典,為后面的具體設(shè)計(jì)打下基礎(chǔ)。 在仔細(xì)分析調(diào)查有關(guān)學(xué)生信息需要的基礎(chǔ)上,將得到本系統(tǒng)所處理的數(shù)據(jù)流程
5、。針對(duì)一般學(xué)生信息管理系統(tǒng)的需求,通過對(duì)學(xué)生學(xué)習(xí)過程的內(nèi)容和數(shù)據(jù)流程分析,設(shè)計(jì)如下面所示的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu): 學(xué)生基本信息:包括的數(shù)據(jù)項(xiàng)有:學(xué)生學(xué)號(hào)、學(xué)生姓名、性別、出生日期、班號(hào)、聯(lián)系電話、入校日期、家庭住址、備注等。 班級(jí)信息:包括的數(shù)據(jù)項(xiàng)有:班號(hào)、所在年級(jí)、班主任姓名、所在教室等。 課程基本信息:包括的數(shù)據(jù)項(xiàng)有:課程號(hào)、課程名稱、課程類別、課程描述等。 課程設(shè)置信息:包括的數(shù)據(jù)項(xiàng)有:年級(jí)信息、所學(xué)課程等。 學(xué)生成績信息:包括的數(shù)據(jù)項(xiàng)有:考試編號(hào)、所在班號(hào)、學(xué)生學(xué)號(hào)、學(xué)生姓名、所學(xué)課程、考試分?jǐn)?shù)等。有了上面的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)項(xiàng)和數(shù)據(jù)流程,我們就能進(jìn)行下面的數(shù)據(jù)庫設(shè)計(jì)。 (2)數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)
6、計(jì) 得到上面的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)以后,就可以設(shè)計(jì)出能夠滿足用戶需求的各種實(shí)體,以及它們之間的關(guān)系, 為后面的邏輯結(jié)構(gòu)設(shè)計(jì)打下基礎(chǔ)。這些實(shí)體包含各種具體信息,通過相互之間的作用形成數(shù)據(jù)的流動(dòng)。 本案例根據(jù)上面的設(shè)計(jì)規(guī)劃出的實(shí)體有:學(xué)生實(shí)體、班級(jí)實(shí)體、年級(jí)實(shí)體、課程實(shí)體。然后畫出各個(gè)實(shí)體具體的描述E-R圖 。(3)數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì) 現(xiàn)在需要將上面的數(shù)據(jù)庫概念結(jié)構(gòu)轉(zhuǎn)化為Microsoft Access 2003數(shù)據(jù)庫系統(tǒng)所支持的實(shí)際數(shù)據(jù)模型,也就是數(shù)據(jù)庫的邏輯結(jié)構(gòu)。在上面的實(shí)體以及實(shí)體之間關(guān)系的基礎(chǔ)上,形成數(shù)據(jù)庫中的表格以及各個(gè)表格之間的關(guān)系。每個(gè)表格表示在數(shù)據(jù)庫中的一個(gè)表。10.2實(shí)戰(zhàn)演練 一、數(shù)
7、據(jù)庫的實(shí)現(xiàn)1.建立學(xué)生信息管理系統(tǒng)文件目錄 在硬盤上建立學(xué)生信息管理系統(tǒng)數(shù)據(jù)文件目錄,如在D盤上建立“D:學(xué)生信息管理”目錄。2.建立學(xué)生信息數(shù)據(jù)庫與數(shù)據(jù)表結(jié)構(gòu) 在Microsoft Access2003中,先建立學(xué)生信息數(shù)據(jù)庫student.mdb,然后建立student、class、course、gradecourse、result、user等學(xué)生信息管理系統(tǒng)數(shù)據(jù)表,并輸入測試數(shù)據(jù)。具體方法已經(jīng)在前面章節(jié)中介紹過,這里我們不再贅述。二、創(chuàng)建數(shù)據(jù)源文件1.首先啟動(dòng)操作系統(tǒng)(這里以Windows XP為例)的控制面板 2.選擇“性能和維護(hù)” | “管理工具” |“數(shù)據(jù)源 (ODBC)”|“文件
8、DSN”選項(xiàng)卡| “添加”按鈕|選擇“Microsoft Access Driver (*.mdb)”|“下一步”按鈕|“瀏覽”按鈕,可以指定保存數(shù)據(jù)源連接文件的路徑|“下一步”按鈕|“完成”按鈕|“選擇”按鈕|“確定”按鈕,這樣就完成了對(duì)數(shù)據(jù)庫的配置。 三、學(xué)生信息管理系統(tǒng)主窗體模塊的創(chuàng)建1.創(chuàng)建學(xué)生信息管理系統(tǒng)工程文件Student_Mis 為了用Visual Basic創(chuàng)建應(yīng)用程序,應(yīng)當(dāng)使用工程。啟動(dòng)Visual Basic后,單擊【文件】|【新建工程】|【標(biāo)準(zhǔn) EXE 】,Visual Basic將自動(dòng)產(chǎn)生一個(gè)Form窗體,屬性都是缺省設(shè)置。這里我們刪除這個(gè)窗體,單擊【文件】|【保存工
9、程】菜單,將這個(gè)工程命名為Student_Mis,并將該工程保存在“D:學(xué)生信息管理”目錄下。2.為工程項(xiàng)目添加ADOADO雖然集成在Visual Basic 6.0中,但只是可選項(xiàng)。因此在創(chuàng)建工程項(xiàng)目后,需要為項(xiàng)目添加ADO。選擇菜單【工程】|【引用】|選擇“Mircrosoft ActiveX Objects 2.6 Library”選項(xiàng),單擊“確定”按鈕。這樣在程序中使用ADO時(shí)不會(huì)出現(xiàn)編譯錯(cuò)誤。 3.創(chuàng)建學(xué)生信息管理系統(tǒng)的主窗體Visual Basic創(chuàng)建的應(yīng)用程序可以是SDI(單文檔界面)和MDI(多文檔界面)。在SDI的程序中,每個(gè)窗體之間是獨(dú)立的。而MDI的程序中,有一個(gè)窗體是主
10、窗體,可以包含其他窗體,它的類型是MDI Form。這個(gè)案例采用多文檔界面,這樣可以使程序更加美觀、整齊有序。 單擊【工程】|【添加MDI窗體】菜單,生成一個(gè)如下圖所示的窗體,屬性設(shè)置見表10-7,主菜單的設(shè)置方法將在后面介紹。 在主窗體中加入狀態(tài)欄控件,可以實(shí)時(shí)反映系統(tǒng)中的各個(gè)狀態(tài)的變化。關(guān)于狀態(tài)欄的設(shè)計(jì),我們將在后面章節(jié)中詳細(xì)介紹。狀態(tài)欄控件需要在通常的屬性窗口中設(shè)置一般屬性,還需要在其特有的彈出式菜單中進(jìn)行設(shè)置。選中狀態(tài)欄控件,單擊鼠標(biāo)右鍵,選中“屬性”菜單,出現(xiàn)如下圖所示的窗體。在“通用”屬性頁對(duì)一般屬性進(jìn)行設(shè)置,在“窗格”屬性頁對(duì)各個(gè)文本框進(jìn)行設(shè)置,在“字體”屬性頁對(duì)文本字體進(jìn)行設(shè)置
11、,在“圖片”屬性頁可以添加圖片。 4.創(chuàng)建主窗體的菜單在主窗體中,單擊鼠標(biāo)右鍵,選擇彈出式菜單中的【菜單編輯器】命令,創(chuàng)建如圖10-22所示的菜單結(jié)構(gòu)。5.創(chuàng)建公用標(biāo)準(zhǔn)模塊在sual BaSic中可以用公用標(biāo)準(zhǔn)模塊來存放整個(gè)工程項(xiàng)目公用的函數(shù)、全局變量等。整個(gè)工程項(xiàng)目中的任何地方都可以調(diào)用公用標(biāo)準(zhǔn)模塊中的函數(shù)、變量,這樣可以極大地提高代碼的效率。單擊【工程】|【添加模塊】菜單,為工程添加一個(gè)標(biāo)準(zhǔn)模塊Module,保存為Module1.bas。下面就可以開始添加需要的代碼了。由于系統(tǒng)中各個(gè)功能模塊都將頻繁使用數(shù)據(jù)庫中的各種數(shù)據(jù),因此需要一個(gè)公共的數(shù)據(jù)操作函數(shù),用以執(zhí)行各種SQL語句。添加函數(shù)Ex
12、ecuteSQL。ExecuteSQL函數(shù)有兩個(gè)參數(shù):SQL和MsgString。其中SQL用來存放需要執(zhí)行的SQL 語句,MsgString用來返回執(zhí)行的提示信息。函數(shù)執(zhí)行時(shí),首先判斷SQL語句中包含的內(nèi)容:當(dāng)執(zhí)行查詢操時(shí),ExecuteSQL函數(shù)將返回一個(gè)與函數(shù)同名的記錄藁_對(duì)象(Recordset),所有滿足條件的記錄包含在對(duì)象中;當(dāng)執(zhí)行如刪除、更新、添加等操作時(shí),不返回記錄集對(duì)象。在ExecuteSQL函數(shù)中使用了Connect String函數(shù),這個(gè)函數(shù)用來連接數(shù)據(jù)庫。 由于學(xué)生信息管理系統(tǒng)啟動(dòng)后,需要對(duì)用戶進(jìn)行判斷。如果登錄這是授權(quán)用戶,將進(jìn)入系統(tǒng),否則將停止程序的執(zhí)行。這個(gè)判斷需
13、要在系統(tǒng)運(yùn)行的最初進(jìn)行,因此經(jīng)代碼放在公用標(biāo)準(zhǔn)模塊中。過程Main將在系統(tǒng)啟動(dòng)時(shí)首先執(zhí)行,這就保證對(duì)用戶的管理。系統(tǒng)需要知道登錄用戶的信息,定義全局變量UserName:Public UserName As String四、系統(tǒng)用戶管理模塊的創(chuàng)建1.用戶登錄窗體的創(chuàng)建系統(tǒng)啟動(dòng)后,將首先出現(xiàn)如下圖所示的用戶登錄窗體,用戶首先輸入用戶名,然后輸入密碼。如果用戶3次輸入密碼不正確,將退出程序。 為窗體定義全局變量OK,用來判斷登錄是否成功;定義miCount,用來記載輸入密碼的次數(shù)。并且在載入窗體時(shí)初始化這兩個(gè)全局變量,代碼如下: 強(qiáng)制變量聲明 option Explicit 記錄確定次數(shù) Dim
14、miCount As Integer Private Sub Form_Load() OK=False miCount=O End SubOption Explicit是用來規(guī)定所有變量使用前必須定義。這樣可以避免由于輸入錯(cuò)誤而產(chǎn)生的新變量。 當(dāng)用戶輸入完用戶名和用戶密碼,單擊cmdOK按鈕將對(duì)用戶信息進(jìn)行判斷。用戶單擊該按鈕,將觸發(fā)按鈕cmdOK的Click事件。 用戶如果沒有輸入用戶名和用戶密碼,將出現(xiàn)消息框提示。如果輸入的用戶名在用戶表格中沒有找到,將提示重新輸入用戶名,文本框txtUserName將重新獲得輸入焦點(diǎn)。如果用戶輸入的密碼不正確,文本框txtPassword將重新獲得輸入焦
15、點(diǎn)。用戶登錄成功,全局變量OK將被賦值為True;一旦三次輸入密碼均不正確,全局變量OK將被賦值為False。公用模塊中的Main過程將根據(jù)OK的值決定是退出,或者進(jìn)入系統(tǒng)。 如果用戶取消登錄,單擊cmdCancel按鈕,將觸發(fā)按鈕的Click事件。 2.添加用戶窗體的創(chuàng)建 進(jìn)入系統(tǒng)后,選擇菜單【系統(tǒng)】|【添加用戶】就可以添加用戶,出現(xiàn)如下圖所示的窗體。 用戶需要兩次輸入密碼,用來確保輸入密碼的正確。用戶輸入信息完畢,單擊cmdOK按鈕將觸發(fā)Click事件。 一旦輸入完畢,系統(tǒng)將首先查詢數(shù)據(jù)庫中與新建用戶名相同的記錄,如果有相同記錄將提示用戶重新輸入用戶名。當(dāng)確定數(shù)據(jù)庫中沒有相同的用戶名,并且
16、兩次輸入密碼一致時(shí),將把該條紀(jì)錄添加到數(shù)據(jù)庫中。單擊cmdCancel按鈕將取消添加用戶的操作。 3.修改用戶密碼窗體的創(chuàng)建用戶可以修改自己的密碼,選擇菜單【系統(tǒng)】|【修改密碼】,出現(xiàn)如下圖所示的窗體。兩次輸入密碼后,單擊cmdOK按鈕,將觸發(fā)Click事件判斷是否修改密碼, 當(dāng)兩次輸入密碼一致時(shí),數(shù)據(jù)庫中的記錄將更新。 五、學(xué)籍管理模塊的創(chuàng)建1.添加學(xué)籍信息窗體的創(chuàng)建選擇【學(xué)籍管理】|【添加學(xué)籍信息】菜單,將出現(xiàn)如下圖所示的窗體: 在載入窗體時(shí),程序?qū)⒆詣?dòng)在兩個(gè)下拉式文本框中添加內(nèi)容,這樣可以規(guī)范化輸入內(nèi)容。在班號(hào)選擇的下拉式文本框中,將出現(xiàn)所有班級(jí),用戶不用輸入內(nèi)容。用戶輸入內(nèi)容完畢后,單
17、擊按鈕cmdOK將觸發(fā)Click事件。程序首先對(duì)是否輸入內(nèi)容進(jìn)行判斷,然后進(jìn)行格式判斷,使用了下面兩個(gè)函數(shù): 判斷數(shù)據(jù)是否日期格式IsDate(txtBorndate.Text)判斷數(shù)據(jù)是否日期格式IsDate(txtRudate.Text)判斷是否有重復(fù)記錄是很重要的,否則數(shù)據(jù)庫中將發(fā)生錯(cuò)誤。單擊按鈕cmdCancel將觸發(fā)Click事件,取消添加學(xué)籍信息。 2.修改學(xué)籍信息窗體的創(chuàng)建選擇【學(xué)籍管理】|【修改學(xué)籍信息】菜單,將出現(xiàn)如下圖所示的窗體。 第一排按鈕用來方便地瀏覽數(shù)據(jù)庫中各條記錄.第二排按鈕用來修改紀(jì)錄。由于記錄集為整個(gè)窗體功用,需要將記錄集對(duì)象定義為全局變量。程序在窗體載入時(shí)自動(dòng)
18、加入各條記錄。由于程序中各處需要顯示數(shù)據(jù),定義函數(shù)viewData。單擊“第一條記錄”按鈕,將顯示第一條記錄。單擊“最后一條記錄”按鈕,將顯示最后一條記錄 。單擊 “上一條記錄”按鈕,將顯示上一條記錄 。單擊“下一條記錄”按鈕,將顯示下一條記錄 。單擊“修改記錄”按鈕,將進(jìn)入修改狀態(tài),各個(gè)文本框?qū)⒂行?。這時(shí)移動(dòng)記錄的按鈕將失效,可以避免誤操作 。修改完畢后,單擊“更新數(shù)據(jù)”按鈕,將觸發(fā)Click事件 。單擊“取消修改記錄”按鈕時(shí),將取消所作的修改 。單擊“刪除記錄”按鈕將刪除當(dāng)前記錄 。 3.查詢學(xué)籍信息窗體的創(chuàng)建 選擇【學(xué)籍管理】|【查詢學(xué)籍信息】菜單,將出現(xiàn)如下圖所示的窗體。在這里可以按照
19、各種方式以及它們的組合進(jìn)行查詢。 注意:窗體上需要添加一個(gè)表格控件(MSHFlexgrid),用來顯示查詢后得到的結(jié)果。該控件并不在工具箱中,執(zhí)行菜單命令【工程】|【部件】,在部件對(duì)話框中選擇“Microsoft Hierarchical FlexGrid Control 6.0(OLEDB)”則可將表格控件(MSHFlexgrid)添加到工具箱內(nèi)。選中表格控件,單擊鼠標(biāo)右鍵并在彈出式菜單中選擇“屬性”,出現(xiàn)屬性頁。設(shè)置表格的行和列,還可以設(shè)置固定的行和列。首先選擇查詢方式,然后輸入查詢內(nèi)容。單擊“查詢”按鈕,觸發(fā)Click事件進(jìn)行查詢 。程序首先判斷查詢方式,如果沒有設(shè)置查詢方式將提示;然后
20、對(duì)查詢內(nèi)容進(jìn)行組合,組成SQL語句,進(jìn)行查詢。查詢到數(shù)據(jù)集以后,需要正常顯示在表格控件中。運(yùn)用循環(huán)將每一條記錄的每一個(gè)字段顯示出來。 提示:程序中使用了With語句,該語句的作用是對(duì)某個(gè)對(duì)象執(zhí)行一系列的操作,而不用重復(fù)指出對(duì)象的名稱。使用形式如下: With 對(duì)象 語句塊 End With單擊按鈕“退出查詢”將退出程序 。六、幫助模塊的設(shè)計(jì) 一個(gè)良好的Windows應(yīng)用程序應(yīng)該提供在線幫助功能,這將給用戶帶來極大的方便。應(yīng)用軟件幫助系統(tǒng)可以在HTML Help中使用稱為HTML Help Workshop(HHW)的創(chuàng)作工具來創(chuàng)建。應(yīng)用軟件幫助系統(tǒng)的創(chuàng)建不是本教材涉及的內(nèi)容,在這里我們不做詳細(xì)
21、介紹,請讀者參見Windows標(biāo)準(zhǔn)幫助系統(tǒng)HTMLHelp的制作等相關(guān)書籍。 我們在這里只創(chuàng)建一個(gè)“關(guān)于”窗口,其中包括本系統(tǒng)的名稱、所有者、聯(lián)系方式等。學(xué)生信息管理系統(tǒng)的“關(guān)于”窗口如下圖所示。 七、系統(tǒng)的編譯1. 工程項(xiàng)目屬性的設(shè)置在系統(tǒng)的編譯和發(fā)行以前,需要設(shè)置工程項(xiàng)目的屬性。選擇菜單【工程】|【Student_Mis屬性】,出現(xiàn)如下圖所示的屬性設(shè)置窗口。 (1)設(shè)置工程項(xiàng)目類型為“標(biāo)準(zhǔn) EXE”,啟動(dòng)對(duì)象為“Sub Main。另外還可以設(shè)置系統(tǒng)的幫助文件。 (2)在版本信息設(shè)置中,可以更新系統(tǒng)的版本號(hào)。 (3)在編譯設(shè)置中,設(shè)置編譯時(shí)優(yōu)化產(chǎn)生高效的代碼。屬性設(shè)置窗口的“部件”屬性和“調(diào)
22、試”屬性這里不用設(shè)置。2可執(zhí)行應(yīng)用程序的生成 最后選擇【文件】|【生成 Student_Mis.exe】菜單,編譯開始。編譯完畢后,即生成了相應(yīng)的可執(zhí)行文件。編譯通過后,生成可執(zhí)行文件Student_Misexe。我們需要在發(fā)行前對(duì)生成的可執(zhí)行文件進(jìn)行測試。通過測試的可執(zhí)行文件,就可以發(fā)布運(yùn)行了。10.3知識(shí)點(diǎn)播 10.3.1 多重窗體及其操作10.3.2 MDI多文檔界面及其操作10.3.3 工具欄和狀態(tài)欄10.3.4 通用對(duì)話框10.3.1多重窗體及其操作1.多窗體的概念 多重窗體是指一個(gè)應(yīng)用程序中有多個(gè)并列的普通窗體,每個(gè)窗體可以由自己的界面和程序代碼,完成不同的功能。當(dāng)一個(gè)程序中需要多
23、個(gè)界面時(shí),如輸入數(shù)據(jù)窗體、顯示統(tǒng)計(jì)結(jié)果窗體、某些對(duì)話框等,則需要用到多個(gè)窗體,稱為多重窗體。 多重窗體處理的操作步驟如下: (1)在應(yīng)用程序設(shè)計(jì)中,分別創(chuàng)建每一個(gè)窗體及其在上的控件對(duì)象,并設(shè)置相關(guān)的屬性值。 (2)對(duì)每個(gè)窗體及其上的控件對(duì)象設(shè)計(jì)相應(yīng)的程序代碼,即在代碼窗口中創(chuàng)建相應(yīng)對(duì)象的事件過程。 (3)將應(yīng)用程序存盤保存起來。要注意的是,在存盤保存時(shí),每一個(gè)窗體都應(yīng)單獨(dú)保存,并保存其工程文件。 (4)設(shè)定程序運(yùn)行時(shí)的啟動(dòng)窗體,往往我們將這個(gè)窗體稱為“主窗口”,并啟動(dòng)程序。 2.添加窗體 添加新窗體有如下圖所示的幾種方法: 通過以上幾種方法可以打開 “添加窗體”對(duì)話框如下圖所示,在對(duì)話框中選擇
24、“新建”選項(xiàng)卡新建一個(gè)窗體;選擇“現(xiàn)存”選項(xiàng)卡把一個(gè)屬于其他工程的窗體添加到當(dāng)前工程中,這是因?yàn)槊恳粋€(gè)程體都是以獨(dú)立的FRM文件保存的。注意:當(dāng)添加一個(gè)已有的窗體到當(dāng)前工程時(shí)有兩個(gè)問題要注意:(1)該工程內(nèi)的每個(gè)窗體的Name屬性不能相同,否則不能將現(xiàn)存的窗體添加進(jìn)來;(2)在該工程內(nèi)添加進(jìn)來的的現(xiàn)存窗體實(shí)際上在多個(gè)工程中共享,因此,對(duì)該窗體所做的改變,會(huì)影響到共享該窗體的所有工程。 3.刪除窗體如果工程中需要將某些窗體刪除的話,可以采用以下方法:(1)選定要?jiǎng)h除的窗體,選取【工程】菜單下的【移除】命令;(2)在工程資源管理器中右擊要?jiǎng)h除的窗體,打開上下文菜單,選取【移除】命令。4.保存窗體選
25、定要保存的窗體,在【文件】菜單中選取【保存窗體】或【另存窗體】命令,即可保存當(dāng)前窗體文件。 注意:在存盤保存時(shí),每一個(gè)窗體都應(yīng)單獨(dú)保存,并保存其工程文件。5. 設(shè)置啟動(dòng)窗體一個(gè)應(yīng)用程若具有多個(gè)窗體的話,它們多是并列關(guān)系。程序運(yùn)行過程中,首先執(zhí)行的對(duì)象被稱為啟動(dòng)對(duì)象。缺省情況下,第一個(gè)創(chuàng)建的窗體被自動(dòng)指定為啟動(dòng)對(duì)象,即啟動(dòng)窗體。在應(yīng)用程序開始運(yùn)行時(shí),此窗體就被顯示出來。如果想在應(yīng)用程序啟動(dòng)時(shí),顯示別的窗體,那么就要設(shè)置啟動(dòng)窗體。 設(shè)置啟動(dòng)窗體的步驟如下:(1)從“工程”菜單中選取“工程屬性”命令,打開“工程屬性”對(duì)話框。如下圖所示;(2)選取“通用”選項(xiàng)按鈕;(3)在“啟動(dòng)對(duì)象”列表框中選取要作
26、為啟動(dòng)窗體的窗體;(4)選取“確定”。 啟動(dòng)對(duì)象既可以是窗體,也可以是Main子過程。如果啟動(dòng)對(duì)象是Main子過程,則程序啟動(dòng)時(shí)不加載任何窗體,以后由該過程根據(jù)不同情況決定是否加載或加載那一個(gè)窗體。如果要設(shè)置Main子過程為啟動(dòng)對(duì)象,則就應(yīng)在工程屬性對(duì)話框的“啟動(dòng)對(duì)象”下拉列表框中選擇“Sub Main”。 注意: Main子過程必須放在標(biāo)準(zhǔn)模塊中,絕對(duì)不能放在窗體模塊內(nèi)。 6.有關(guān)窗體的語句和方法當(dāng)一個(gè)窗體要顯示在屏幕之前,該窗體必須先“建立”,接著被裝入內(nèi)存(Load),最后顯示(Show)在屏幕上。同樣,當(dāng)窗體暫時(shí)不需要時(shí),可以從屏幕上隱藏(Hide);直至從內(nèi)存中刪除(Unload)。
27、下面是有關(guān)窗體的語句和方法。 (1)Load語句:該語句把一個(gè)窗體裝入內(nèi)存。執(zhí)行Load語句后,可以引用窗體中的控件及各種屬性,但此時(shí)窗體沒有顯示出來。其形式如下:Load 窗體名稱如:Load Form2 加載Form2窗體(2)Unload語句:該語句與Load語句的功能相反,它從內(nèi)存中刪除指定的窗體。其形式如下: Unload 窗體名稱如:Unload Form2 卸載Form2窗體Unload的一種常見用法是Unload Me,其意義是關(guān)閉窗體自己。在這里,關(guān)鍵字Me代表Unload Me語句所在的窗體。 (3)Show方法:該方法用來顯示一個(gè)窗體,它兼有加載和顯示窗體兩種功能。也就是
28、說,在執(zhí)行Show時(shí),如果窗體不再內(nèi)存中,則Show自動(dòng)把窗體裝入內(nèi)存,然后再顯示出來。其形式如下: 窗體名稱.Show 模式如:Form2.Show 裝入并顯示Form2窗體 提示: “模式”用來確定窗體的狀態(tài),有0和1兩個(gè)值?!澳J健睘?,表示窗體是“模式型”(Modal),用戶無法將鼠標(biāo)移到其他窗口,也就是說,只有在關(guān)閉該窗體后才能對(duì)其它窗體進(jìn)行操作,如Office軟件中“幫助”菜單的“關(guān)于”命令所打開的對(duì)話框窗口。若“模式”為0,表示窗體是“非模式型”(Modeless),可以對(duì)其它窗口進(jìn)行操作,如Office軟件中“編輯”菜單的“替換”命令所打開的“替換”對(duì)話框窗口?!澳J健比笔≈禐?/p>
29、0?!按绑w名稱”缺省時(shí)為當(dāng)前窗體。(4) Hide方法:該方法用來將窗體暫時(shí)隱藏起來,并沒有從內(nèi)存中刪除。其形式如下: 窗體名稱. Hide如:Form2.Hide 隱藏Form2窗體其中:“窗體名稱”缺省時(shí)為當(dāng)前窗體。 7.不同窗體間數(shù)據(jù)的存取不同窗體間數(shù)據(jù)的存取分為兩種情況:(1)存取控件中的屬性 在當(dāng)前窗體中要存取另一個(gè)窗體中某個(gè)控件的屬性,表示如下: 另一窗體名.控件名.屬性 例如,要在當(dāng)前窗體(Form1)中的Text1.Text屬性值去自Form2窗體的兩個(gè)Text1、Text2控件的數(shù)值和,實(shí)現(xiàn)的語句如下:Text1=Val(Form2.Text1)+ Val(Form2.Tex
30、t2)(2)存取變量的值 這時(shí),必須規(guī)定在要存取的窗體內(nèi)聲明的是全局(Public)變量,表示如下:另一窗體名.全局變量名為了方便起見,要在多個(gè)窗體中存取的變量一般放在標(biāo)準(zhǔn)模塊內(nèi)聲明。10.3.2 MDI多文檔界面及其操作1.創(chuàng)建和設(shè)計(jì)MDI窗體及其子窗體開發(fā)MDI多文檔界面的應(yīng)用程序至少需要兩個(gè)窗體:一個(gè)(只能一個(gè))MDI窗體和一個(gè)(或若干個(gè))子窗體。在不同窗體中共用的過程、變量應(yīng)存放在標(biāo)準(zhǔn)模塊中。(1)創(chuàng)建和設(shè)計(jì)MDI窗體用戶要建立一個(gè)MDI窗體,可以選擇菜單命令【工程】|【添加MDI窗體】,打開如下圖所示的添加MDI窗體對(duì)話框。 MDI窗體是子窗體的容器,所以該窗體中一般有菜單欄、工具欄
31、、狀態(tài)欄,不可以有文本框等控件。(2)創(chuàng)建和設(shè)計(jì)MDI子窗體MDI子窗體主要是顯示應(yīng)用程序的文檔,因此,在該窗體上應(yīng)有文本框,也可以有菜單欄。MDI子窗體是一個(gè)MDIChild屬性為True的普通窗體。因此,要?jiǎng)?chuàng)建一個(gè)MDI子窗體,應(yīng)先創(chuàng)建一個(gè)新的普通窗體,然后將它的MDIChild屬性設(shè)置為True即可。在工程管理起窗口可以看到,子窗體的圖標(biāo)與普通窗體的圖標(biāo)不同,如下圖所示。若要建立多個(gè)子窗體,則重復(fù)進(jìn)行上述操作。 注意:只有在創(chuàng)建好MDI主窗體后才能創(chuàng)建MDI子窗體。標(biāo)準(zhǔn)窗體MDI子窗體MDI窗體 2.顯示MDI窗體及其子窗體顯示MDI窗體及其子窗體的方法是Show。加載子窗體時(shí),其父窗體
32、(MDI窗體)會(huì)自動(dòng)加載并顯示。而加載MDI窗體時(shí),其子窗體并不會(huì)自動(dòng)加載。MDI窗體有AutoShowChildren屬性,決定是否自動(dòng)顯示子窗體。如果它被設(shè)置為True,則當(dāng)改變子窗體的屬性(如Caption等)后,會(huì)自動(dòng)顯示該字窗體,不再需要Show方法;如果設(shè)置AutoShowChildren屬性為False,則改變子窗體的屬性后,不會(huì)自動(dòng)顯示該字窗體,自窗體處于隱藏狀態(tài)直至用Show方法把它們顯示出來。MDI子窗體沒有AutoShowChildren屬性。3.MDI窗體的“窗口”菜單大多數(shù)MDI應(yīng)用程序都有“窗口”菜單。在“窗口”菜單上顯示了所有打開的子窗體的標(biāo)題名稱,并能對(duì)已打開子
33、窗體進(jìn)行“層疊”、“平鋪”、“垂直”與“排列圖標(biāo)”等相操作的菜單項(xiàng)。 (1)顯示已打開子窗體的標(biāo)題名稱在VB中,如果要在某個(gè)菜單上顯示所有打開的子窗體標(biāo)題名稱,只需利用菜單編輯器將該菜單的WindowList屬性設(shè)置為True,即選中顯示窗口列表檢查框。(2)排列窗口在菜單編輯器中,給MDI的“窗口”菜單添加 “層疊”、“平鋪”、“垂直”與“排列圖標(biāo)”四個(gè)一級(jí)子菜單項(xiàng)。然后利用Arrange方法實(shí)現(xiàn)“層疊”、“平鋪”、“垂直”與“排列圖標(biāo)”的功能。格式: MDI窗體名.Arrange (排列方式)“排列方式”的取值見表10-15。 如:MDIMainForm.Arrange(0) 或 MDIM
34、ainForm.Arrange(vbCascade)10.3.3工具欄和狀態(tài)欄1工具欄設(shè)計(jì)工具欄已經(jīng)成為Windows應(yīng)用程序常用的界面元素。工具欄含有帶圖形的命令按鈕,它提供了對(duì)應(yīng)用程序中常用命令的快速訪問,通過工具欄可以更方便用戶操作。在Visual Basic中,可以用ToolBar控件和ImageList控件創(chuàng)建工具欄。ImageList控件為其他控件保管圖像,可以把它視為一種圖像倉庫。用戶可以不編寫裝載位圖或圖標(biāo)(使用LoadPicture函數(shù))的代碼,而是一次性將用到的所有圖像填充到ImageList中。在需要的時(shí)候設(shè)置Key的值,然后在代碼中使用key或Index屬性引用所需的圖
35、像。(1)添加ToolBar控件和ImageList控件 ToolBar控件屬于系統(tǒng)擴(kuò)充的ActiveX控件。使用時(shí)必須將其加入工具箱中。執(zhí)行菜單命令:【工程】 |【部件】|使“Microsoft Windows Common Control 6.0”復(fù)選框有效,部件將被添加到“工具箱”面板上,共有9個(gè)控件添加到“工具箱”中,其中有要用到的ToolBar、StatusBar和ImageList等控件。 (2)在ImageList控件中添加圖像ImageList控件不單獨(dú)使用,專門為其他控件提供圖像庫,是一個(gè)圖像容器控件。工具欄按鈕的圖像就是通過ToolBar控件從ImageList控件的圖像庫
36、中獲得的。在窗體上增加ImageList控件后,選中垓控件,默認(rèn)名為ImageList1,再單擊右鍵,從彈出菜單中選擇“屬性”,然后在“屬性頁”對(duì)話框選擇“圖像”標(biāo)簽,如下圖所示。 其中:索引(Index):表示每個(gè)圖像的編號(hào),在ToolBar的按鈕中引用,系統(tǒng)自動(dòng)設(shè)置。關(guān)鍵字(Key):表示每個(gè)圖像的標(biāo)識(shí)名,在ToolBar的按鈕中引用。圖像數(shù):表示已插入的圖像數(shù)目?!安迦雸D片”按鈕:插入新圖像,圖像文件的擴(kuò)展名為.ico、.bmp、.gif、.jpg等。“刪除圖片”按鈕:刪除選中的圖像。(3)在ToolBar控件中添加按鈕ToolBar工具欄可以建立多個(gè)按鈕,每個(gè)按鈕的圖像來自ImageL
37、ist對(duì)象中插入的圖像。為工具欄連接圖像在窗體上增加在ToolBar控件后,選中垓控件,默認(rèn)名為ToolBar1,再單擊右鍵,從彈出菜單中選擇“屬性”,打開“屬性頁”對(duì)話框,如下圖所示,選擇“通用”標(biāo)簽。 其中:“圖像列表”下拉式列表框:設(shè)置與ToolBar相關(guān)聯(lián)的ImageList控件?!翱蓳Q行的”復(fù)選框:被選中表示當(dāng)工具欄的長度不能容納所有的按鈕時(shí),在下一行顯示,否則剩余的不顯示?!皹邮健保菏荲B 6.0新增的。不同的“樣式”值設(shè)計(jì)的工具欄效果如圖10-39所示,除菜單按鈕(5)外的5種樣式。注意:若要對(duì)ImageList控件進(jìn)行增、刪圖像,必須先在ToolBar控件的“圖像列表”下拉式列
38、表框設(shè)置“無”,也就是與ImageList切斷聯(lián)系,否則VB提示無法對(duì)ImageList控件進(jìn)行編輯。 為工具欄增加按鈕選擇“按鈕”標(biāo)簽,打開該選項(xiàng)卡,如下圖所示,單擊“插入按鈕”可以在工具欄增加按鈕,對(duì)話框中主要屬性:索引(Index):表示每個(gè)按鈕的數(shù)字編號(hào),在ButtonClick事件中引用。關(guān)鍵字(Key):表示每個(gè)按鈕的標(biāo)識(shí)名,在ButtonClick事件中引用。樣式(Style):表示按鈕樣式,共6種,見表10-16。圖像(Image):表示 ImageList對(duì)象中的圖像,它的值可以是圖中的Key或Index。值(Value):表示按鈕的狀態(tài),有按下(tbrPressed)和沒按
39、下(tbrUnpressed),對(duì)樣式1和樣式2有用。 (4)響應(yīng)ToolBar控件事件ToolBar控件常用的事件有兩個(gè):ButtonClick和ButtonMenuClick。前者對(duì)按鈕樣式為02,后者對(duì)樣式為5的菜單按鈕。實(shí)際上,工具欄上的按鈕時(shí)控件數(shù)組,單擊工具欄上的按鈕會(huì)發(fā)生ButtonClick事件或ButtonMenuClick事件,我們可以利用數(shù)組的索引(Index屬性)或關(guān)鍵字(Key屬性)來識(shí)別被單擊的按鈕,再使用Select Case語句完成代碼編制?,F(xiàn)以ButtonClick事件舉例。用索引Index確定按鈕 Private Sub Toolbar1_ButtonCli
40、ck(Byval Button As ComctlLib.Button) Select Case Button.Index Case 1 Case 2 End SelectEnd Sub用關(guān)鍵字Key確定按鈕用關(guān)鍵字Key確定按鈕與用索引Index確定按鈕相似,只要用Button.Key代替Button.Index即可。注意:第1個(gè)按鈕的Index值為1。用Index還是用Key比較,Key 可讀性好,可維護(hù)性好。當(dāng)單擊菜單按鈕時(shí)響應(yīng)ButtonMenuClick事件,該事件形式如下:Private Sub Object_ButtonMenuClick (index As Integer,By
41、val Button As ComctlLib.Button)End Sub 2狀態(tài)欄設(shè)計(jì)狀態(tài)欄(StatusBar)控件能夠提供一個(gè)長方條,通常位于窗體的底部,主要用于顯示應(yīng)用程序的各種狀態(tài)信息。StatusBar控件屬于ActiveX控件。StatusBar控件由若干個(gè)面板(Panel)組成,每一個(gè)面板包含文本和圖片。StatusBar控件最多能分成16個(gè)Panel對(duì)象。在窗體上增加在StatusBar控件后,選中垓控件,默認(rèn)名為StatusBar1,再單擊右鍵,從彈出菜單中選擇“屬性”,打開“屬性頁”對(duì)話框,選擇“窗格”標(biāo)簽,如下圖所示。 其中:索引(Index):表示每個(gè)窗格的數(shù)字編號(hào)
42、。文本(Text):用于設(shè)置窗格要顯示的內(nèi)容,如當(dāng)前光標(biāo)的位置、日期、時(shí)間等狀態(tài)信息。關(guān)鍵字(Key):表示每個(gè)窗格的標(biāo)識(shí)名。樣式(Style):指定窗格的顯示方式,共7種,含義見表10-17,可顯示相關(guān)按鍵的狀態(tài)、系統(tǒng)日期與系統(tǒng)時(shí)間,也可顯示用戶自定義信息?!安迦氪案瘛卑粹o:可以在狀態(tài)欄增加新的窗格,最多可分成16個(gè)窗格。“刪除窗格”按鈕:可以在狀態(tài)欄刪除窗格?!盀g覽”按鈕:可插入圖像,圖像文件的擴(kuò)展名為.ico或.bmp。10.3.4通用對(duì)話框1添加通用對(duì)話框控件通用對(duì)話框是一種ActiveX控件, 在使用之前,應(yīng)先將通用對(duì)話框添加到工具箱中。執(zhí)行菜單命令:【工程】 |【部件】|使“Mic
43、rosoft CommonDialog Control 6.0”復(fù)選框有效,可將CommonDialog控件添加到工具箱中。在工具箱中雙擊CommonDialog圖標(biāo)可將控件添加到窗體中。通用對(duì)話框 CommonDialog控件在窗體上顯示為一圖標(biāo),此圖標(biāo)的大小不能改變,用戶也無法指定對(duì)話框在屏幕上顯示的位置。當(dāng)程序運(yùn)行時(shí),通用對(duì)話框是不可見的。通用對(duì)話框的屬性設(shè)置可以在屬性窗口或程序代碼中進(jìn)行,也可以通過“屬性頁”對(duì)話框來設(shè)置。 2屬性頁在屬性窗口中選擇(自定義),會(huì)打開“屬性頁”對(duì)話框,如下圖所示。 3通用對(duì)話框的基本屬性和方法 (1)Name屬性 :系統(tǒng)默認(rèn)的名稱為 CommonDial
44、og1, CommonDialog2, (2)Action屬性:該屬性直接決定打開哪種對(duì)話框,取值如表10-18所示。例如,利用通用對(duì)話框CommonDialog1產(chǎn)生一個(gè)“打開文件”對(duì)話框,可以執(zhí)行下列語句: CommonDialog1.Action=1 或 CommonDialog1.ShowOpen(3)DialogTitle屬性:該屬性用于設(shè)置對(duì)話框的標(biāo)題 (4)ConcelError屬性:該屬性表示用戶在使用對(duì)話框進(jìn)行對(duì)話時(shí),單擊“取消”按鈕是否產(chǎn)生錯(cuò)誤信息。 4.“打開文件”對(duì)話框 在程序中將通用對(duì)話框的Action屬性設(shè)置為1,或用ShowOpen方法打開,則彈出“打開文件”對(duì)話
45、框。常用屬性:DefaultEXT屬性 :設(shè)置對(duì)話框中默認(rèn)文件類型,即擴(kuò)展名。如:CommonDialog1.DefaultExt=txt 設(shè)置缺省文件擴(kuò)展名為.txt。FileName屬性 :設(shè)置并返回最后被選中的文件的路徑及文件名。FileTitle屬性 :設(shè)置并返回最后被選中的文件名(不包括路徑)。Filter屬性 :設(shè)置文件過濾器,用來指定在對(duì)話框中顯示的文件類型。 格式:描述符1 過濾符1 描述符2 過濾符2如:CommonDialog1.Filter=Word文檔(*.DOC)|*.DOC|文本文檔(*.TXT)|*.txt|所有文件(*.*)|*.* 每個(gè)過濾器都有一個(gè)值依次為1
46、,2,3,。FilterIndex屬性 :設(shè)置缺省的文件過濾器。如:CommonDialog1.FilterIndex=3 指定缺省的過濾器為所有文件(*.*)|*.*InitDir屬性 :初始化路徑,設(shè)置缺省的文件目錄,并返回最后被選中的文件目錄。Flags屬性:設(shè)置對(duì)話框的外觀。MaxFileSize屬性:設(shè)置將要被打開的文件名的最大尺寸。注意:打開對(duì)話框并不能真正“打開”文件,而僅僅是用來選擇一個(gè)文件。 5. “另存為”對(duì)話框利用通用對(duì)話框CommonDialog1產(chǎn)生一個(gè)如下圖的“另存為”對(duì)話框,可以執(zhí)行下列語句: CommonDialog1.Action=2 或 CommonDial
47、og1.ShowSave和“打開”對(duì)話框一樣,“另存為”對(duì)話框也只能用來選擇文件,本身不能執(zhí)行保存文件的操作。 6. “顏色”對(duì)話框利用通用對(duì)話框CommonDialog1產(chǎn)生一個(gè)如下圖所示的“顏色”對(duì)話框,可以執(zhí)行下列語句: CommonDialog1.Action=3 或 CommonDialog1.ShowColor常用屬性:Color屬性:是“顏色”對(duì)話框最重要的屬性,它返回或設(shè)置用戶選定的顏色。當(dāng)用戶在調(diào)色板中選中某顏色時(shí),該顏色值賦給Color屬性。 Flags(標(biāo)志)屬性:用來設(shè)置對(duì)話框的一些選項(xiàng),可以是多個(gè)值的組合,控制對(duì)話框的外觀。其格式為:對(duì)話框名.Flags=值。標(biāo)志的值
48、是一個(gè)整數(shù),使用形式有3種,即符號(hào)常量、十六進(jìn)制整數(shù)和十進(jìn)制整數(shù)。標(biāo)志屬性的取值見表10-19。為了設(shè)置或讀取Color屬性值,必須把Flags屬性設(shè)置為cdlCCRGBInit。 7. “字體”對(duì)話框 “字體”對(duì)話框可以根據(jù)需要選擇字體的大小、樣式等。利用通用對(duì)話框CommonDialog1產(chǎn)生一個(gè)如下圖所示的“字體”對(duì)話框,可以執(zhí)行下列語句: CommonDialog1.Action=4 或 CommonDialog1.ShowFont常用屬性:Flags屬性:設(shè)置“字體“對(duì)話框的選項(xiàng),顯示對(duì)話框之前必須設(shè)置該屬性。常用的取值為表10-20所列的三個(gè)Visual Basic常量,同時(shí)取多個(gè)
49、值,要用OR運(yùn)算符連接。使用屬性窗口可以設(shè)置Flags屬性值,也可以用賦值語句在程序代碼中設(shè)置屬性值。 在顯示“字體”對(duì)話框前如果沒有為設(shè)置合法的數(shù)值,在程序運(yùn)行時(shí)將出現(xiàn)沒有安裝字體的錯(cuò)誤信息,如下圖所示。Color屬性:能夠確定選定字體的顏色。若要使用這個(gè)屬性,則必須先設(shè)置Flags屬性設(shè)置為cdlCFEffects或256。FontSize屬性:返回字體大小。FontBold屬性:確定是否選擇“粗體”。FontItalic屬性:確定是否選擇“斜體”。FontUnderline屬性:確定是否選擇“刪除線”,若要使用這個(gè)屬性,則必須先設(shè)置Flags屬性設(shè)置為cdlCFEffects或256。F
50、ontStrikethru屬性:確定是否選擇“下劃線”,若要使用這個(gè)屬性,則必須先設(shè)置Flags屬性設(shè)置為cdlCFEffects或256。 8. “打印”對(duì)話框 “打印”對(duì)話框指定打印輸出的方法。在打印對(duì)話框中可指定打印頁數(shù)范圍、打印質(zhì)量、復(fù)制數(shù)目等,此外還有一個(gè)是否打印到文件的選項(xiàng)。利用通用對(duì)話框CommonDialog1產(chǎn)生一個(gè)如下圖所示的“打印”對(duì)話框,可以執(zhí)行下列語句: CommonDialog1.Action=5 或 CommonDialog1.ShowPrinter常用屬性:FromPage屬性:打印時(shí)起始頁號(hào)。ToPage屬性:打印終止頁號(hào)。 Copies屬性:指定打印份數(shù),是
51、整型值。 注意:“打印”對(duì)話框并不能處理打印工作,僅僅是一個(gè)供用戶選擇打印參數(shù)的界面,所選參數(shù)存于各屬性中,若要打印必須編寫程序來完成打印操作。 9. “幫助”對(duì)話框幫助對(duì)話框本身不能建立應(yīng)用程序的幫助文件,只能調(diào)用已創(chuàng)建好的幫助文件。創(chuàng)建幫助文件需要用其他的工具制作,如Microsoft Windows Help Compiler,即Help編輯器。利用通用對(duì)話框CommonDialog1調(diào)用一個(gè)如圖10-49所示的記事本“幫助”文件,可以執(zhí)行下列語句: CommonDialog1.Action=6 或 CommonDialog1.ShowHelp常用屬性:HelpCommand屬性:返回和
52、設(shè)置聯(lián)機(jī)Help幫助類型。HelpFile屬性:指定Help文件的路徑及其名稱。即找到幫助文件,再從文件中找到相應(yīng)內(nèi)容,顯示在Help窗口中。HelpKey屬性:在幫助窗口顯示由該幫助關(guān)鍵字指定的幫助信息。HelpContext屬性:返回或設(shè)置所需要的HelpTopic的Context ID,一般與HelpCommand(設(shè)置為vbHelpContents)一起使用,指定要顯示的HelpTopic。 10.4 經(jīng)驗(yàn)總結(jié)一、Visual Basic中軟件封面技術(shù)封面的制作。 假設(shè)封面窗體名為Frmcover,主窗體名為Frmmain,其中封面窗體是通過窗體的Picture屬性直接加載當(dāng)前路徑下的
53、一張名稱為“Clouds.jpg”圖片。那么,我們在封面窗體Frmcover的Load事件中編寫代碼如下: Private Sub Form_Load() FrmCover.Picture = LoadPicture(App.Path + Clouds.jpg) End Sub為了使這樣的一個(gè)窗體更加象一個(gè)封面,應(yīng)該去除窗體的控制框,標(biāo)題欄和最大最小化按鈕,同時(shí)窗體的大小也不允許用戶改變。因而在封面窗體的屬性中,屬性ControlBox應(yīng)設(shè)為False,Caption應(yīng)設(shè)為空,Maxbutton和Minbutton應(yīng)設(shè)為False,Borderstyler屬性設(shè)為1,即固定的單線邊界,這樣就實(shí)現(xiàn)了一個(gè)具有專業(yè)水準(zhǔn)的封面。 2. 浮動(dòng)窗體的實(shí)現(xiàn)。 由于主窗體先載入,然后激發(fā)封面的事件(Event),使封面窗體成為當(dāng)前活動(dòng)窗體,所以必須保證窗體總是浮在主窗體的上面,在Visual Basic中,這個(gè)問題主要依靠調(diào)用Windows的API函數(shù)SetWindowPos來實(shí)現(xiàn)。從Visual Basic應(yīng)用程序中訪問API函數(shù),必須在Visual Basic應(yīng)用程序中用Declare語句將API函數(shù)聲明為外部過程,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025委托招標(biāo)代理合同
- 2025【合同范本】建筑工程施工合同示本
- 2025二手空調(diào)購銷合同范本
- 長城遺址修繕方案
- 促銷活動(dòng)合同范例
- 2024年六年級(jí)品社下冊《去中學(xué)看看》說課稿2 蘇教版
- 配件報(bào)價(jià)實(shí)施方案
- 2024年五年級(jí)英語下冊 Unit 4 Did You Have a Nice Trip Lesson 19 Li Ming Goes Home說課稿 冀教版(三起)
- 貴州籠式球場護(hù)欄施工方案
- 砂石加工賬目處理方案
- 醫(yī)藥高等數(shù)學(xué)智慧樹知到課后章節(jié)答案2023年下浙江中醫(yī)藥大學(xué)
- 城市道路智慧路燈項(xiàng)目 投標(biāo)方案(技術(shù)標(biāo))
- 水泥采購?fù)稑?biāo)方案(技術(shù)標(biāo))
- 醫(yī)院招標(biāo)采購管理辦法及實(shí)施細(xì)則(試行)
- 初中英語-Unit2 My dream job(writing)教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 廣州市勞動(dòng)仲裁申請書
- 江西省上饒市高三一模理綜化學(xué)試題附參考答案
- 23-張方紅-IVF的治療流程及護(hù)理
- 頂部板式吊耳計(jì)算HGT-20574-2018
- 因數(shù)和倍數(shù)復(fù)習(xí)思維導(dǎo)圖
- LY/T 2986-2018流動(dòng)沙地沙障設(shè)置技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論