版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《VisualBasic程序設(shè)計(jì)教程》前言編寫本書的目地有兩個(gè):一是適應(yīng)于高校公共計(jì)算機(jī)的教學(xué),讓學(xué)生能夠通過計(jì)算機(jī)等級(jí)考試,主要內(nèi)容在前12章。二是適應(yīng)于提高計(jì)算機(jī)編程水平的學(xué)生,即計(jì)算機(jī)專業(yè)化教學(xué),主要內(nèi)容在前13-14章。本書主要應(yīng)用于公共計(jì)算機(jī)的等級(jí)考試教學(xué),也適應(yīng)于專業(yè)計(jì)算機(jī)的入門教學(xué)。公共計(jì)算機(jī)部分主要是第一章至第十二章,建議至少64課時(shí)。專業(yè)部分為第十三章至第十四章,建議至少20課時(shí),總共84課時(shí)。VB是1991年的產(chǎn)物,從VB1.0,2.0至6.0中文標(biāo)準(zhǔn)版、專業(yè)版及企業(yè)版、VB.NET,微軟在不斷地演繹VB的精彩故事。VB程序設(shè)計(jì)發(fā)展至今,其包含的概念、內(nèi)容越來越多,功能越來越強(qiáng),要想在短時(shí)間內(nèi)學(xué)會(huì)它,越來越不容易。為此,按照“厚基礎(chǔ),強(qiáng)能力”的指導(dǎo)思想,在教學(xué)內(nèi)容的選取,教學(xué)的組織和方法上,注重高級(jí)語言的語法規(guī)則、面向?qū)ο蟪绦蛟O(shè)計(jì)基本方法、分析和解決實(shí)際問題能力的有機(jī)結(jié)合,為學(xué)習(xí)和應(yīng)用打下基礎(chǔ)。本書提供了較多的難度適中的完整范例,有利于模仿學(xué)習(xí)。為了突出教師授課和學(xué)生自學(xué)時(shí)由淺入深循序漸進(jìn)的過程,本書內(nèi)容安排如下:本書共分十四章,第1章至第4章是入門知識(shí),其中包括了VB開發(fā)環(huán)境的介紹和面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念。為了使讀者理論聯(lián)系實(shí)際,充分體會(huì)VB可視化編程的好處,以及照顧到后續(xù)章節(jié)的學(xué)習(xí)和上機(jī)實(shí)踐,常用的幾種控件和輸入輸出方法的介紹也放在了這一部分中。第5章至第12章主要介紹VB語言基礎(chǔ),介紹了VB設(shè)計(jì)用戶界面,以及全部的內(nèi)部控件的詳細(xì)介紹,講解了多個(gè)實(shí)例的編程,能夠利用編程工具進(jìn)行程序的調(diào)試和錯(cuò)誤處理是程序員的基本素質(zhì),也是在學(xué)習(xí)過程中解決問題的有效途徑。第13章至14章介紹了數(shù)據(jù)庫訪問及程序改錯(cuò)與調(diào)試,作者認(rèn)為80%以上的應(yīng)用程序會(huì)使用數(shù)據(jù)庫功能,所以篇幅組織得較大,并且有較完整的實(shí)例介紹。教師可以根據(jù)具體情況在課堂講授時(shí)作一定的剪裁。書中難免不足之處,敬請專家和讀者批評指正并賜教。編者2008年10月附本書主編:蘇嘯副主編:胡艷維編委:劉熹、鐘友華、李希勇、劉秋萍
第1章VisualBasic概述VisualBasic(可視化BASIC,簡稱VB)是微軟公司推出的一種新型的現(xiàn)代程序設(shè)計(jì)語言。VB雖然以BASIC語言為基礎(chǔ),但是在許多方面都做了重大的改進(jìn)和突破。VB的產(chǎn)生使更多的專業(yè)、非專業(yè)人員都能夠參與到開發(fā)Windows應(yīng)用程序的行列中,計(jì)算機(jī)程序設(shè)計(jì)進(jìn)入了新的階段。本章介紹計(jì)算機(jī)程序設(shè)計(jì)語言及方法的發(fā)展概況、VB的特點(diǎn)、啟動(dòng)和退出、集成開發(fā)環(huán)境和開發(fā)VB應(yīng)用程序的基本步驟。§1.1計(jì)算機(jī)程序設(shè)計(jì)語言簡介人們在使用計(jì)算機(jī)解決實(shí)際專業(yè)問題時(shí),需要用某種特定的“語言”同計(jì)算機(jī)交流、溝通,計(jì)算機(jī)語言是人類與計(jì)算機(jī)交流信息的主要途徑。這類語言通過語法、語義、描述記號(hào)來表述各種運(yùn)算和處理過程,能夠?yàn)橛?jì)算機(jī)所識(shí)別、理解、執(zhí)行,最終完成某項(xiàng)工作任務(wù)。這些語言統(tǒng)稱為計(jì)算機(jī)程序設(shè)計(jì)語言。1.1.1程序設(shè)計(jì)語言的發(fā)展程序設(shè)計(jì)語言與計(jì)算機(jī)硬件共同誕生、共同發(fā)展,隨著計(jì)算機(jī)及其應(yīng)用的不斷發(fā)展,不斷完善、變革、創(chuàng)新。目前,程序設(shè)計(jì)語言的發(fā)展可概括為如下四個(gè)階段。1、機(jī)器語言機(jī)器語言屬于第一代程序設(shè)計(jì)語言。機(jī)器語言由0、1二進(jìn)制代碼組成,能被計(jì)算機(jī)直接識(shí)別的機(jī)器指令的集合。機(jī)器語言能直接針對計(jì)算機(jī)的硬件結(jié)構(gòu)描述各種算法,因此不需要翻譯,能夠被計(jì)算機(jī)直接執(zhí)行,速度快,但是,用機(jī)器語言編程非常繁瑣,程序的可讀性極差,程序的修改、調(diào)試極不方便。機(jī)器語言面向機(jī)器,不同機(jī)器的指令系統(tǒng)不同,不能通用,不便于計(jì)算機(jī)的推廣應(yīng)用。2、匯編語言匯編語言采用特定的助記符號(hào)表示機(jī)器語言中的指令和數(shù)據(jù),相對機(jī)器語言來說,比較容易記憶和學(xué)習(xí),所以也稱匯編語言為符號(hào)語言。它使用便于識(shí)別的符號(hào),如英語單詞或其縮寫作為助記符,來代替機(jī)器指令編寫程序,然后由專門的轉(zhuǎn)換程序,將這些符號(hào)轉(zhuǎn)換為機(jī)器語言指令代碼。匯編語言也能夠針對計(jì)算機(jī)的硬件去編寫程序,執(zhí)行速度快。目前,針對一些實(shí)時(shí)性要求較高的實(shí)際問題,仍采用匯編語言來編寫程序。但是它和機(jī)器語言一樣,對機(jī)器的依賴性強(qiáng),語言的通用性問題沒有得到根本解決。3、高級(jí)語言高級(jí)語言采用一組通用的英語單詞、數(shù)學(xué)式及規(guī)定的符號(hào),按嚴(yán)格的語法規(guī)則和邏輯關(guān)系表述各種運(yùn)算和處理過程。由于采用這種表達(dá)方式編寫程序,接近自然語言和數(shù)學(xué)語言,符合人們的習(xí)慣,為此稱之為高級(jí)語言。高級(jí)語言有較強(qiáng)的通用性,用高級(jí)語言編寫的程序能夠在不同的計(jì)算機(jī)系統(tǒng)上運(yùn)行。高級(jí)語言的種類有許多,適用于不同的應(yīng)用領(lǐng)域。世界上出現(xiàn)最早的高級(jí)語言是FORTRAN,是用于編制數(shù)值計(jì)算機(jī)程序的主要語言,主要適用于科學(xué)計(jì)算方面。后來隨著C語言的廣泛應(yīng)用,F(xiàn)ORTRA語言逐漸被C語言所取代。20世紀(jì)60年代以來,出現(xiàn)了很多高級(jí)語言,流行過的有BASIC、COBOL、PASCAL、PL/1和ADA。由于C語言既適合系統(tǒng)軟件設(shè)計(jì),也適合應(yīng)用軟件設(shè)計(jì)。著名的UNIX操作系統(tǒng)就是用C語言編寫的,C語言是目前國際上公認(rèn)的優(yōu)秀程序設(shè)計(jì)語言。4、4GL語言一般被稱為“第四代語言”,是一種交互式、非過程化的、面向用戶的編程語言,與高級(jí)語言相比它更接近人類自然語言。第四代語言經(jīng)常被用于訪問數(shù)據(jù)庫,目前主要用于數(shù)據(jù)庫開發(fā)的查詢語言,例如,SQL就屬于4GL語言。1.1.2程序設(shè)計(jì)語言的發(fā)展趨勢計(jì)算機(jī)網(wǎng)絡(luò)的飛速發(fā)展和廣泛應(yīng)用,對人們的工作和生活產(chǎn)生了極大影響,使當(dāng)今社會(huì)發(fā)生極大變革。最先受到影響,對發(fā)展起到很大促進(jìn)作用,當(dāng)屬程序設(shè)計(jì)語言。Java語言的出現(xiàn)就是明顯例子,Java是網(wǎng)絡(luò)對程序設(shè)計(jì)語言發(fā)展影響最大的事件。概括分析,今后程序設(shè)計(jì)語言的發(fā)展將著重在以下幾個(gè)方面。1、智能化逐步提高新型計(jì)算機(jī)語言應(yīng)該更容易學(xué)習(xí)、掌握,更便于使用。程序設(shè)計(jì)語言的發(fā)展過程就是一個(gè)追求方便、易用的過程?,F(xiàn)在的計(jì)算機(jī)語言已經(jīng)逐步具有一定的智能化的特點(diǎn),使軟件開發(fā)逐步走向更高級(jí)的階段。進(jìn)一步發(fā)展將會(huì)使更多的用戶,不需要專門、系統(tǒng)培訓(xùn),就能夠很容易地掌握最新程序設(shè)計(jì)方法,使用計(jì)算機(jī)的智能化程度將會(huì)更高。2、較強(qiáng)的可移植性在不同的計(jì)算機(jī)或操作系統(tǒng)平臺(tái)上,程序不需要重新編譯即可執(zhí)行,真正做到“與系統(tǒng)無關(guān)”是人們追求的理想目標(biāo)。Java語言在某些方面上實(shí)現(xiàn)了這種功能,程序的通用性很強(qiáng),受到用戶的歡迎。3、適應(yīng)網(wǎng)絡(luò)的特性網(wǎng)絡(luò)編程語言隨著Internet普及,將會(huì)更快發(fā)展并廣泛應(yīng)用。簡單易學(xué)的Vbscript、JavaScript很適合非專業(yè)人員使用。微軟最新推出的VisualS中VC.net、VB.net、C#等緊密與Web開發(fā)標(biāo)準(zhǔn)結(jié)合,將會(huì)和Java一樣被廣泛應(yīng)用到網(wǎng)絡(luò)程序的開發(fā)。應(yīng)未來網(wǎng)絡(luò)需求,將會(huì)產(chǎn)生更好的網(wǎng)絡(luò)編程語言。4、高效與安全性IT的發(fā)展過程中,社會(huì)對軟件需求增長很快,要求軟件開發(fā)具有較高的時(shí)效性和安全性,以及針對性。極大提高現(xiàn)代程序設(shè)計(jì)語言的要求。1.1.3計(jì)算機(jī)程序設(shè)計(jì)方法發(fā)展概況隨著計(jì)算機(jī)科學(xué)技術(shù)及其應(yīng)用的飛速變化,計(jì)算機(jī)程序設(shè)計(jì)語言的發(fā)展在不斷豐富、完善。與此同時(shí),程序設(shè)計(jì)方法也不斷改進(jìn)。人們在待續(xù)探討、研究,以使程序設(shè)計(jì)的方法能夠更加系統(tǒng)化,更接近人類自然語言的習(xí)慣和思維方式,使軟件開發(fā)更加科學(xué)化。程序設(shè)計(jì)方法的發(fā)展主要經(jīng)歷了以下幾個(gè)階段。1、模塊化程序設(shè)計(jì)將一項(xiàng)較大的開發(fā)任務(wù)分成若干項(xiàng)獨(dú)立的小任務(wù),分頭編寫各個(gè)模塊,然后將這些獨(dú)立的模塊有機(jī)地結(jié)合起來形成一個(gè)整體,實(shí)現(xiàn)系統(tǒng)的功能。2、結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)是指僅僅使用三種基本控制結(jié)構(gòu)(順序、選擇和重復(fù))實(shí)現(xiàn)程序的設(shè)計(jì)方法。其基本設(shè)計(jì)原則是:模塊化原則、自頂向下原則和逐步求精的原則。在充分分析需求的基礎(chǔ)上,實(shí)現(xiàn)系統(tǒng)功能。3、面向?qū)ο蟮某绦蛟O(shè)計(jì)該設(shè)計(jì)更接近人類的思維方式和自然語言習(xí)慣,能夠直接描述客觀對象。發(fā)展面向?qū)ο蠓椒ǖ哪康?,是提高軟件系統(tǒng)的可重用性、可擴(kuò)充性和可維護(hù)性。與傳統(tǒng)面向過程的程序設(shè)計(jì)方法比較,有兩點(diǎn)重大突破:①操作代碼與代碼運(yùn)行過程所需要的數(shù)據(jù)共同封裝在一起組成了一種新的數(shù)據(jù)類型類;并且“類”具有繼承及擴(kuò)充機(jī)制。②具有人機(jī)交互式的可視化程序設(shè)計(jì)界面。4、計(jì)算機(jī)輔助軟件工程(Case)計(jì)算機(jī)輔助軟件工程(Case)的目標(biāo),就是要實(shí)現(xiàn)系統(tǒng)開發(fā)過程中各階段的工作,能夠達(dá)到基于計(jì)算機(jī)的自動(dòng)化的過程。采用輔助軟件工具和方法支持開發(fā),將系統(tǒng)按功能進(jìn)行劃分,利用工具對數(shù)據(jù)建模,能夠自動(dòng)生成計(jì)算機(jī)程序,完成開發(fā)設(shè)計(jì)任務(wù)。Case工具的成熟及使用,還有待一個(gè)發(fā)展過程?!?.2VB的基本特點(diǎn)VB(簡稱VB),是在BASIC語言基礎(chǔ)上發(fā)展而來,具有上手容易,功能強(qiáng)大、效率高的特點(diǎn)。是最受歡迎的Windows應(yīng)用程序開發(fā)語言,它具有以下基本特點(diǎn)。1、可視化的設(shè)計(jì)平臺(tái)VB提供可視化設(shè)計(jì)平臺(tái),把Windows界面設(shè)計(jì)的復(fù)雜性“封裝”起來,使界面設(shè)計(jì)如同搭積木游戲一樣。只需按設(shè)計(jì)要求,可輕松地用系統(tǒng)提供的工具在窗口中畫出各個(gè)對象,并結(jié)合布局和功能為其設(shè)置相應(yīng)的屬性,VB自動(dòng)產(chǎn)生程序界面的設(shè)計(jì)代碼。為開發(fā)Windows風(fēng)格的應(yīng)用程序,提供了簡化編程難度的有效方法,大幅度提高了效率。2、事件驅(qū)動(dòng)的編程機(jī)制事件驅(qū)動(dòng)是一種適用于圖形用戶界面的編程方式。當(dāng)用戶在窗口界面上點(diǎn)擊或操作一個(gè)對象時(shí),該對象就會(huì)觸發(fā)一個(gè)事件,且該事件所對應(yīng)的程序代碼就會(huì)被執(zhí)行,從而完成指定的操作任務(wù)。3、能夠充分利用系統(tǒng)資源動(dòng)態(tài)數(shù)據(jù)交換(DynamicDataExchange,DDE)是Windows操作系統(tǒng)下應(yīng)用程序間的一種標(biāo)準(zhǔn)通信方式。VB支持DDE,并可實(shí)現(xiàn)和其他支持DDE的應(yīng)用程序進(jìn)行動(dòng)態(tài)數(shù)據(jù)交換或通信。VB支持Windows的對象的鏈接與嵌入技術(shù)(objectLinkandEmbedding,OLE),其他應(yīng)用程序的對象能夠鏈接或嵌入到VB應(yīng)用程序中,例如,Word文檔、Excel電子表格、圖像、聲音等,使VB能夠充分利用其他應(yīng)用程序的數(shù)據(jù)。動(dòng)態(tài)鏈接庫(DynamicLinkLibrary,DLL)是Windows最顯著的特點(diǎn)之一,VB支持這項(xiàng)技術(shù)。VB程序運(yùn)行中,需要調(diào)用函數(shù)庫的某個(gè)函數(shù)時(shí),Windows就可從DLL中讀出并運(yùn)行。例如,可以將用C、C++、匯編語言等編寫的程序添加到VB程序中。4、具有較強(qiáng)的數(shù)據(jù)庫管理功能VB提供了開放式數(shù)據(jù)庫連接功能,可以直接訪問或通過連接的方式管理并操作后臺(tái)的大型數(shù)據(jù)庫。能自動(dòng)生成SQL語句實(shí)現(xiàn)數(shù)據(jù)操作功能、能直接使用ActiveX數(shù)據(jù)對象(ADO)進(jìn)行數(shù)據(jù)庫管理。用VB設(shè)計(jì)應(yīng)用程序的前臺(tái)界面,通過ADO連接操作后臺(tái)數(shù)據(jù)庫,是開發(fā)應(yīng)用系統(tǒng)的常用方法。5、全面支持多媒體技術(shù)VB提供了多種功能的多媒體控體,能夠讓用戶在較短的時(shí)間內(nèi),很快掌握編寫圖、文、聲、像并茂的多媒體應(yīng)用程序的技能?!?.3VB的安裝、啟動(dòng)和退出1.3.1安裝VisualBasic1、VB的版本1991年微軟公司推出VB1.0之后,其版本在不斷更新。1998年微軟公司發(fā)布開發(fā)工具套件:MicrosoftVisualStudio98,其中含VB6.0。VB6.0有三個(gè)版本,不同的版本是為不同層次的人員和不同的開發(fā)需求設(shè)計(jì)的,用戶可根據(jù)情況安裝相應(yīng)的版本?!B標(biāo)準(zhǔn)版:它是初學(xué)者學(xué)習(xí)VB開發(fā)應(yīng)用程序的學(xué)習(xí)版本。提供了各種控件和數(shù)據(jù)庫訪問的基本功能?!B專業(yè)版:在標(biāo)準(zhǔn)版的功能基礎(chǔ)上,提供了更加完整的工具集和各種附加的功能,為專業(yè)人員開發(fā)客戶/服務(wù)器應(yīng)用程序提供條件?!B企業(yè)版:包含專業(yè)版的全部功能和特征,適合專業(yè)人員開發(fā)更高性能的分布式應(yīng)用程序,能夠快速訪問Oracle和SQLServer等數(shù)據(jù)庫。2、基本安裝過程安裝VB6.0和安裝其他Windows應(yīng)用程序的過程類似。將VB6.0的光盤放入光驅(qū)后,一般情況下光盤的安裝程序會(huì)自動(dòng)啟動(dòng),進(jìn)入安裝界面。也可通過“我的電腦”或“資源管理器”在光盤上找到安裝程序:Setup.exe,運(yùn)行該程序,進(jìn)入安裝界面。安裝VB6.0的基本步驟。(1)運(yùn)行安裝程序后,出現(xiàn)“VB6.0中文企業(yè)版安裝向?qū)А钡膶υ捒颉#?)直接單擊[下一步]按鈕,出現(xiàn)“最終用戶許可協(xié)議”對話框,選擇[接受協(xié)議]單選按鈕。單擊[下一步]按鈕,出現(xiàn)“產(chǎn)品和用戶ID”對話框。(3)輸入正確的產(chǎn)品ID號(hào)(購買軟件可以獲得該序列號(hào))、輸入姓名和公司名稱(輸入的文字沒有限制)。然后單擊[下一步]按鈕,出現(xiàn)“VB6.0中文企業(yè)版”對話框。(4)選擇[安裝VB6.0中文企業(yè)版]后,單擊[下一步]按鈕,出現(xiàn)“VB6.0中文企業(yè)版安裝程序”對話框。(5)可選擇“典型安裝”,或者“自定義安裝”。如果選擇“自定義安裝”,會(huì)出現(xiàn)對話框,用戶在其中選擇所需的組件。單擊[更改文件夾]按鈕,可改變VB的默認(rèn)安裝文件夾。(6)單擊[繼續(xù)]按鈕,安裝程序?qū)⑽募?fù)制到硬盤中。安裝結(jié)束后,需要重新啟動(dòng)計(jì)算機(jī)。(7)計(jì)算機(jī)再次啟動(dòng)后,出現(xiàn)“安裝MSDN”對話框,如果不需要安裝MSDN,則應(yīng)該取消[安裝MSDN]復(fù)選框,單擊[退出]按鈕即可。需要安裝MSDN,可按后面的提示進(jìn)行操作。3、組件的添加和刪除如果需要安裝VB的新組件,或者刪除不需要的組件,要再次運(yùn)行VB的安裝程序。在出現(xiàn)的對話框中,可以選擇[添加/刪除]、[重新安裝]或[全部刪除]按鈕,再次出現(xiàn)對話框時(shí),根據(jù)需要選擇相應(yīng)的選項(xiàng)即可。1.3.2啟動(dòng)和退出VisualBasic1、啟動(dòng)成功安裝VB之后,便可以啟動(dòng)VB系統(tǒng)了。運(yùn)行VB系統(tǒng)的方法有多種,可以采用下列方法之一?!みx擇[開始]→[程序],選擇選擇[程序]組中的[MicrosoftVB6.0中文版]程序組,在其中選擇[MicrosoftVB6.0中文版]命令,即可啟動(dòng)VB6.0系統(tǒng)?!ぴ谧烂嫔想p擊[MicrosoftVB6.0中文版]的快捷方式,或者在資源管理器中找到VB6.0安裝目錄,雙擊VB6.exe可執(zhí)行文件,均可運(yùn)行VB系統(tǒng)。每次啟動(dòng)VB系統(tǒng)時(shí),出現(xiàn)如圖1.3-1所示的“新建工程”對話框,該對話框共有3個(gè)選項(xiàng)卡,單擊[新建]選項(xiàng)卡,可以在其中選擇要?jiǎng)?chuàng)建的應(yīng)用程序的類型,共有13種類型的應(yīng)用程序,選擇其中的某一種應(yīng)用程序類型后(最常選擇的是“標(biāo)準(zhǔn)EXE”),單擊[打開]按鈕,即可建立一個(gè)新的VB工程。單擊[現(xiàn)存]選項(xiàng)卡,可以在選定的文件夾中,選擇已經(jīng)存在的工程文件。單擊[最新]選項(xiàng)卡,可以在最近使用過的工程中,選擇所需要的工程文件。創(chuàng)造或打開工程文件后,即可進(jìn)入VB的集成開發(fā)環(huán)境。2、退出退出VB的方法和退出其他Windows應(yīng)用程序的方法類似,可以選擇下列方法之一。·選擇[文件]→[退出]命令?!螕魬?yīng)用程序關(guān)閉]按鈕,或者按Alt+F4鍵退出當(dāng)前應(yīng)用程序?!B系統(tǒng)在退出前,會(huì)自動(dòng)判斷用戶在本次操作中是否修改了工程文件的內(nèi)容,并詢問用戶是否保存文件,用戶確認(rèn)后可退出VB系統(tǒng)?!?.4VB集成開發(fā)環(huán)境VB系統(tǒng)為開發(fā)應(yīng)用程序提供了良好的集成開發(fā)環(huán)境,如圖1.4-1所示。它集成了各種不同的功能,例如,界面設(shè)計(jì)、代碼編輯、模塊的編譯、運(yùn)行、調(diào)試等。該界面由多個(gè)窗口構(gòu)成VB的集成開發(fā)環(huán)境。開發(fā)VB應(yīng)用程序時(shí),需要這些窗口配合使用。1.4.1主窗口VB系統(tǒng)的主窗口由標(biāo)題欄、菜單欄和工具欄組成,為用戶提供了開發(fā)VB應(yīng)用程序的各種命令和工具。1、標(biāo)題欄標(biāo)題欄與Windows其他應(yīng)用程序相似,另外說明了當(dāng)前的工程文件名和VB的當(dāng)前工作模式狀態(tài),其中的“[設(shè)計(jì)]”,表明集成開發(fā)環(huán)境此時(shí)處于設(shè)計(jì)模式。VB的三種工作模式及其作用如下。(1)設(shè)計(jì)模式該模式下,用戶可以進(jìn)行程序界面的設(shè)計(jì)和代碼的編寫工作。程序運(yùn)行后出現(xiàn)錯(cuò)誤時(shí),對程序代碼的編輯過程,也在設(shè)計(jì)模式中進(jìn)行。(2)運(yùn)行模式程序界面和代碼的設(shè)計(jì)完成后,運(yùn)行應(yīng)用程序時(shí)處于該模式。VB應(yīng)用程序運(yùn)行后,一直處于等待事件發(fā)生的狀態(tài)中,退出應(yīng)用程序,則回到設(shè)計(jì)模式。運(yùn)行階段不能進(jìn)行界面和代碼的編輯工作。(3)中斷模式應(yīng)用程序運(yùn)行出現(xiàn)錯(cuò)誤時(shí),處于中斷模式。該階段可以編輯代碼,重新運(yùn)行程序,但是程序界面不能夠被編輯。2、菜單欄菜單欄中包含VB系統(tǒng)所有的可用命令,這是程序開發(fā)過程中用于設(shè)計(jì)、調(diào)試、運(yùn)行和保存應(yīng)用程序所需要的命令,共有13個(gè)菜單項(xiàng)。[文件]:主要提供對工程文件的創(chuàng)建、打開、保存和增刪等操作命令。將當(dāng)前應(yīng)用程序生成可執(zhí)行文件的操作命令也在其中。[編輯]:主要提供對應(yīng)用程序進(jìn)行編輯的各種操作命令。[視圖]:主要提供設(shè)計(jì)程序界面、運(yùn)行和調(diào)試程序時(shí)各種窗口的切換。[工程]:主要提供為工程添加窗體、模塊、控制、部件等對象的命令。[格式]:主要提供對窗體控制的對齊、尺寸及間距等格式化的命令。[調(diào)試]:主要提供調(diào)試程序的各種命令。[運(yùn)行]:主要提供程序啟動(dòng)、中斷和停止等命令。[查詢]:主要提供對數(shù)據(jù)庫查詢的相關(guān)命令。[圖表]:主要提供對圖表的新建、設(shè)置、添加、顯示和修改等命令。[工具]:主要提供添加過程、過程屬性、菜單編輯器、相關(guān)選項(xiàng)的設(shè)置及應(yīng)用程序的發(fā)布等命令。[外接程序]:主要提供在VB中進(jìn)行數(shù)據(jù)庫管理和外接程序管理器的功能。[窗口]:主要提供窗口的排列和過程文件的切換命令。[幫助]:啟動(dòng)幫助系統(tǒng),打開幫助窗口,為用戶提供學(xué)習(xí)和查詢VB的相關(guān)信息??丶ぞ呦浯翱谠O(shè)計(jì)器屬性窗口布局窗口工程窗口工具欄控件工具箱窗口設(shè)計(jì)器屬性窗口布局窗口工程窗口工具欄圖1.4-1VB集成開發(fā)環(huán)境3、工具欄工具欄中集中了各種用圖標(biāo)表示的按鈕,每個(gè)按鈕對應(yīng)一個(gè)命令,單擊按鈕,即可執(zhí)行對應(yīng)的命令。默認(rèn)情況下,VB啟動(dòng)后顯示標(biāo)準(zhǔn)工具欄,除此,VB還提供了編輯、窗口編輯器和調(diào)試等專用的工具欄??梢酝ㄟ^選擇[視圖]→[工具欄]命令將其他工具欄在集成環(huán)境中移入或移出。4、控件工具箱控制部件簡稱控件,是用戶設(shè)計(jì)應(yīng)用程序界面的工具。VB的標(biāo)準(zhǔn)工具箱中包含建立應(yīng)用程序所需的各種控件。VB還提供了很多ActiveX控件,可以將它們添加到工具箱中。如果控件工具箱在集成環(huán)境中沒有出現(xiàn),可選擇[視圖]→[工具箱]命令使其再現(xiàn)。標(biāo)準(zhǔn)工具箱中包含了系統(tǒng)自動(dòng)提供的控件,稱為標(biāo)準(zhǔn)控件,如表1.4-2所示。標(biāo)準(zhǔn)控件的功能和使用方法在下章介紹。表1.4-2控件圖標(biāo)樣式與控件名稱控件圖標(biāo)控件名稱控件圖標(biāo)控件名稱圖片框(PictureBox)垂直滾動(dòng)條(VscrollBar)標(biāo)簽(Lable)定時(shí)器(Timer)文本框(TextBox)驅(qū)動(dòng)器列表框(DriverListBox)框架(Frame)目錄列表框(DirListBox)命令按鈕(CommandButton)文件列表框()復(fù)選框(CheckBox)輪廓(Shape)選項(xiàng)按鈕(OptionButton)直線(Line)下拉式列表框(ComboBox)圖像框(Image)列表框(ListBox)數(shù)據(jù)控件(Data)水平滾動(dòng)條(HscrollBar)OLE容器(OLE)1.4.2工程窗口工程是應(yīng)用程序各種類型文件的集合,應(yīng)用程序是建立在工程的基礎(chǔ)上完成的,工程文件的擴(kuò)展名為.Vbp。它包含的三類主要文件為:窗體文件(.Frm)、標(biāo)準(zhǔn)模塊文件(.Bas)、類模塊文件(.Cls)。工程文件就是與該工程有關(guān)的所有文件和對象的清單,這些文件和對象自動(dòng)鏈接到工程。每個(gè)工程中的對象和文件也可以供其他工程使用。窗口中列出當(dāng)前工程中的窗體和模塊,以層次化管理方式顯示各類文件,而且允許同時(shí)打開多個(gè)工程。在工程資源管理器標(biāo)題欄的下方有三個(gè)按鈕,其含義和作用如下:[查看代碼]按鈕:單擊后切換到代碼編輯器窗口,查看或編輯代碼。[查看對象]按鈕:單擊后切換到窗體設(shè)計(jì)器窗口,查看或設(shè)計(jì)當(dāng)前窗體。[切換文件夾]按鈕:單擊后可以在工程中的不同層次之間切換。1.4.3屬性窗口在VB集成環(huán)境中,屬性窗口的默認(rèn)位置是在工程窗口的下方,如圖1.4-3所示。單擊工具欄中的屬性窗口按鈕或按F4鍵,可以使隱藏起來的屬性窗口再次出現(xiàn)。應(yīng)用程序中的窗體及其控件的屬性,均可以通過屬性窗口設(shè)置,例如,名稱、標(biāo)識(shí)、顏色、字體等。屬性窗口由以下幾部分組成。(1)對象下拉列表框:標(biāo)識(shí)當(dāng)前對象的名稱及其所屬的類別,例如,圖1.4-3中Forml是名稱,F(xiàn)orm說明是窗體類。單擊其右邊的箭頭可列出所選窗體中包含的對象列表。(2)選項(xiàng)卡:可按字母序或分類序兩種方式,列出所選對象的所有屬性。(3)屬性列表:該表中列出所選對象的各個(gè)屬性的默認(rèn)值,可以在設(shè)計(jì)模式或運(yùn)行模式重新設(shè)置、修改其屬性值。不同的對象,列出的屬性也不盡相同。列表左邊列出的是各種屬性,右邊是對應(yīng)的屬性值。(4)屬性含義:顯示所選取屬性的簡短文字說明。圖1.4-3屬性窗口圖1.4-4窗體設(shè)計(jì)器1.4.4窗體設(shè)計(jì)器“窗體設(shè)計(jì)器”如圖1.4-4所示,是用戶設(shè)計(jì)應(yīng)用程序界面的窗口,也稱為“對象窗口”。其中的窗體是用來開發(fā)VB應(yīng)用程序界面的,用戶可以在窗體中放置各種控件,窗體中的控件可隨意在窗體上移動(dòng)、放縮,但控件被鎖定后則不可隨意修改。窗體是VB應(yīng)用程序的主要部分,用戶通過與窗體上的控件進(jìn)行交互得到操作結(jié)果。每個(gè)窗體必須有一個(gè)惟一的窗體名稱,建立窗體時(shí)的默認(rèn)名稱為Form1,F(xiàn)orm2,……,用戶可以根據(jù)需要在工程中建立多個(gè)窗體。在窗體的空白處單擊右鍵,在快捷菜單中,選擇[查看代碼]、[菜單編輯器]或[屬性窗口]命令,以便快速切換到其他窗口。如果窗體設(shè)計(jì)器在集成環(huán)境中沒有出現(xiàn),可以選擇[視圖]→[對象窗口]命令使春再現(xiàn)。1.4.5代碼編輯窗口“代碼編輯窗口”如圖1.4-5所示,是用來對過程或事件過程的代碼進(jìn)行編輯的窗口,也稱為“代碼窗口”。VB系統(tǒng)為用戶提供了較強(qiáng)的代碼編輯功能,可以通過多種方式打開代碼編輯窗口。事件代碼事件名對象名事件代碼事件名對象名圖1.4-5代碼窗口·雙擊窗體中的任何位置?!螕艄こ檀翱谥械腫查看代碼]按鈕?!螕羰髽?biāo)右鍵,從快捷菜單中選擇[查看代碼]命令。·選擇[視圖]→[代碼窗口]命令。1、代碼窗口的組成(1)對象下拉列表框列表框位于標(biāo)題欄下左半部。單擊下拉列表按鈕,會(huì)彈出列表,列表中給出當(dāng)前窗體及所包含的所有對象名。(2)過程下拉列表框列表框位于標(biāo)題欄下右半部。單擊下拉列表按鈕,會(huì)彈出列表,列表中給出所選對象的所有事件名稱。(3)代碼編輯區(qū)窗口中的空白區(qū)域即為代碼編輯區(qū)。用戶可以在其中編輯程序代碼,操作方法與通常文字處理軟件類似,而且在VB代碼編輯方面提供了一些自動(dòng)功能。(4)查看視圖按鈕在代碼窗口的左下角,有“過程查看”和“全模塊查看”兩個(gè)按鈕,前者用于查看一個(gè)過程,后者可以查看程序中的所有過程。2、代碼編輯器的自動(dòng)功能用戶在編輯程序代碼時(shí)可以直接輸入語句、函數(shù)、對象的屬性或方法等內(nèi)容,也可以利用VB提供的自動(dòng)功能簡化輸入過程。(1)自動(dòng)提示信息當(dāng)用戶輸入正確的VB函數(shù)后,在當(dāng)前行的下面會(huì)自動(dòng)顯示出該函數(shù)的語法格式,當(dāng)前項(xiàng)為加黑顯示,為用戶輸入提供參考。輸入一面后,下一項(xiàng)又變?yōu)榧雍陲@示。(2)自動(dòng)列出成員用戶在輸入控件名后面的小數(shù)點(diǎn)時(shí),VB系統(tǒng)會(huì)自動(dòng)彈出下拉列表框,列表中包含了該控件的所有成員:屬性、方法,繼續(xù)輸入成員名的字母,系統(tǒng)會(huì)自動(dòng)顯示出相關(guān)的屬性名和方法名,可以從中選擇所需的內(nèi)容。如果操作中沒有出現(xiàn)自動(dòng)提示信息和自動(dòng)列出成員的功能,按Ctrl+J鍵可以使其出現(xiàn)。(3)自動(dòng)語法檢查在輸入代碼的過程中,每次按回車鍵時(shí),VB都會(huì)自動(dòng)檢查該行語句的語法。如果出現(xiàn)錯(cuò)誤,VB會(huì)警告提示,同時(shí)該語句變?yōu)榧t色。1.4.6立即窗口圖1.4-6立即窗口立即窗口是在中斷模式狀態(tài)下用來觀察處理結(jié)果、調(diào)試程序使用的窗口。選擇[視圖]→[立即窗口]命令,即可打開如圖1.4-6所示的立即窗口??梢栽诹⒓创翱谥兄苯虞斎朊睿^察結(jié)果;也可以在程序中使用Debug對象輸出的方式,將結(jié)果送到立即窗口。例如,在程序中輸入Debug.printdate即可在立即窗口中顯示系統(tǒng)日期?!?.5開發(fā)VB應(yīng)用程序的基本步驟用傳統(tǒng)的高級(jí)語言編寫程序,除去要將各種處理功能用語句描述之外,還需要設(shè)計(jì)用戶操作界面,設(shè)計(jì)得為了在屏幕上畫出一個(gè)圖形,就必須編寫一大段程序語句。VB可視化編程改變了這種狀況,而采用了面向?qū)ο蠛褪录?qū)動(dòng)的編程方法。因此用VB開發(fā)應(yīng)用程序,包括兩部分工作:設(shè)計(jì)用戶界面和編寫程序代碼。1.5.1VB示例題目要求和運(yùn)行效果設(shè)計(jì)一個(gè)程序,界面由三個(gè)命令按鈕和一個(gè)文本框組成,如圖1.5-1所示。當(dāng)用戶單擊“歡迎”按鈕時(shí),在文本框中顯示“歡迎學(xué)習(xí)使用VB”;單擊“清除”按鈕時(shí),清除文本框的內(nèi)容;單擊“退出”按鈕時(shí),退出程序的運(yùn)行。圖1.5-1示例的設(shè)計(jì)界面表1.5-1示例中的對象屬性設(shè)置控件名稱屬性屬性值Form1Caption“示例”Text1Text“”Command1Caption“歡迎”Command2Caption“清除”Command3Caption“退出”2、操作步驟(1)新建工程。選擇[文件]→[新建工程]命令,在出現(xiàn)的“新建工程”對話框中選擇[標(biāo)準(zhǔn)EXE],然后單擊[確定]按鈕。(2)添加文本框控件。把鼠標(biāo)指針移到工具箱中的文本框圖標(biāo)abl上,單擊鼠標(biāo),鼠標(biāo)指針變形為“+”,然后將鼠標(biāo)移到窗體合適的位置上,按住鼠標(biāo)左鍵做斜線拖動(dòng),當(dāng)控件的尺寸符合需要時(shí),釋放鼠標(biāo),文本框被添加到窗體中。(3)添加按鈕控件。添加按鈕與添加文本框的操作相似,區(qū)別僅僅是在工具箱中選擇的工具不同。連續(xù)添加三個(gè)按鈕控件。(4)設(shè)置控件屬性。按照表1.5-1設(shè)置窗體、文本框和命令按鈕的屬性。(5)編寫代碼。在工程窗口單擊[查看代碼]按鈕,在對象列表框中分別選擇三個(gè)按鈕對應(yīng)的名稱,出現(xiàn)三個(gè)事件過程的框架,在其中輸入相應(yīng)的代碼即可。(6)運(yùn)行程序。確認(rèn)代碼正確后,單擊[運(yùn)行]按鈕。運(yùn)行后的界面如圖1.5-2所示。3、程序代碼PrivateSubCommand1_Click()Text1.Text=“歡迎學(xué)習(xí)使用VB”‘為文本框賦值EndSubPrivateSubCommand2_Click()Text1.Text=“”‘清除值EndSubPrivateSubCommand3_Click()End‘退出程序EndSub圖1.5-2示例的運(yùn)行界面1.5.2基本步驟通過以上程序示例處理過程,可以歸納出開發(fā)VB應(yīng)用程序的基本步驟如下。1、界面設(shè)計(jì)應(yīng)用程序界面由窗體和控件兩部分組成,用戶可以在窗體中放置各種控件,以構(gòu)成用戶所需要的程序界面。在窗體上設(shè)計(jì)界面時(shí),可以使用前面介紹的鼠標(biāo)拖動(dòng)的方法,也可以用鼠標(biāo)雙擊工具箱中的控件按鈕,這樣窗體的中心位置會(huì)自動(dòng)出現(xiàn)相應(yīng)的控件,然后再將控件移動(dòng)到合適的位置,調(diào)整其尺寸大小??梢允褂酶袷讲藛沃械拿钍箍丶R、調(diào)整尺寸、設(shè)置間距。為了防止處于理想位置的控件被無意移動(dòng),可以選擇格式菜單中的鎖定控件命令。如果需要對個(gè)別控件的位置做微調(diào),按住Ctrl鍵后,再用方向箭頭來調(diào)整。2、屬性設(shè)置在屬性窗口和程序示例的過程中,對有關(guān)屬性設(shè)置的基本問題作了介紹??梢栽趯傩源翱谥徐o態(tài)設(shè)置對象的屬性,也可以在程序中對屬性進(jìn)行設(shè)置或修改,進(jìn)行動(dòng)態(tài)設(shè)置。例如,示例程序中語句Text1.Text=“歡迎學(xué)習(xí)使用VB”,就是在程序運(yùn)行階段,修改文本框的文本屬性。這種動(dòng)態(tài)修改對象屬性的方法在VB程序中經(jīng)常使用。3、編寫程序代碼VB中,程序代碼集中在“過程”內(nèi)組織編寫。過程分為多種,示例中程序代碼在事件過程內(nèi)編寫。事件過程中的代碼是為響應(yīng)在一個(gè)對象上發(fā)生的“事件”所進(jìn)行的操作。例如,示例中的Command2_Click()事件過程,將對象和單擊事件結(jié)合起來構(gòu)成一個(gè)事件過程。當(dāng)單擊“清除”按鈕的事件發(fā)生時(shí),執(zhí)行了Text1.Text=“”的操作命令,體現(xiàn)了VB事件驅(qū)動(dòng)的機(jī)制。4、運(yùn)行和保存程序可以通過多種方式運(yùn)行一個(gè)VB應(yīng)用程序?!みx擇[運(yùn)行]→[啟動(dòng)]命令。·單擊工具欄中的[啟動(dòng)]按鈕。·按F5功能鍵??梢酝ㄟ^多種方式結(jié)束正在運(yùn)行的VB應(yīng)用程序?!みx擇[運(yùn)行]→[結(jié)束]命令?!螕艄ぞ邫谥械腫結(jié)束]按鈕。保存VB應(yīng)用程序的操作與其他Windows應(yīng)用程序類似。但是,在VB的一個(gè)工程中包含多個(gè)不同類型的文件,這些文件需要分別保存。選擇[文件]→[保存Form1]命令,即可保存第一個(gè)窗體;選擇[文件]→[保存工程]命令,即可保存當(dāng)前工程文件。5、獨(dú)立運(yùn)行VB應(yīng)用程序VB應(yīng)用程序可以脫離VB的集成環(huán)境,直接運(yùn)行在Windows狀態(tài)。因此需要對應(yīng)用程序進(jìn)行編譯,生成.EXE文件。選擇[文件]→[生成工程1.EXE]命令,在出現(xiàn)的對話框中,輸入可執(zhí)行文件的名稱,單擊[確定]按鈕,即可生成在Windows中直接運(yùn)行的文件。在保存該文件的文件夾中雙擊文件名即可執(zhí)行,也可以將其快捷方式發(fā)送到Windows的桌面上,簡化操作過程。1.6小結(jié)本章介紹計(jì)算機(jī)程序設(shè)計(jì)語言及方法的發(fā)展概況、VB的特點(diǎn)、啟動(dòng)和退出、集成開發(fā)環(huán)境和開發(fā)VB應(yīng)用程序的基本步驟。
第2章對象及其操作§2.1VB的對象2.1.1對象的屬性、方法和事件VB不僅是一種模塊化非常好的語言,同時(shí)也是一種面向?qū)ο蟮目梢暬_發(fā)工具。VB提供了面向?qū)ο蟪绦蛟O(shè)計(jì)的強(qiáng)大功能,不僅提供了大量的控件對象,而且還提供了創(chuàng)建自定義對象的方法和工具。1、對象的概念對象在現(xiàn)實(shí)生活中很常見。比如,一個(gè)人是一個(gè)對象,一臺(tái)計(jì)算機(jī)是一個(gè)對象,一輛汽車也是一個(gè)對象,對象是具有某些特性的具體事物的抽象。每一個(gè)對象包含了許多屬性,例如,一輛汽車包含了外殼、車輪、發(fā)動(dòng)機(jī)…等等屬性。一個(gè)對象中可包含多個(gè)對象,例如,汽車是一個(gè)對象,車輪是汽車中的一部分,車輪也是一個(gè)對象,它包含了外胎、內(nèi)胎…等等屬性。2、VB中的對象Windows應(yīng)用程序中,窗體和控件是基本的用戶接口元素,VB中這些元素稱為對象,每個(gè)對象都有自己的屬性、方法,并且可以響應(yīng)外部事件。VB中所有的控件都在工具箱中(由VB系統(tǒng)提供)。通過這些現(xiàn)有控件,程序員可方便地編寫出標(biāo)準(zhǔn)Windows應(yīng)用程序。該編寫程序過程類似于搭積木,把這些現(xiàn)有的控件在窗體中拼裝起來,然后為它們定制相應(yīng)屬性值,并為每個(gè)控件所響應(yīng)的事件編制響應(yīng)過程,就完成了程序的編寫。這樣看來VB編程比較容易。3、對象的屬性對象的屬性是標(biāo)識(shí)一個(gè)對象的所有特征,實(shí)際是對象所屬類的成員變量。對象的屬性屬于對象的數(shù)據(jù)部分,例如控件的顏色、大小、字體都是對象的屬性。大多數(shù)對象屬性在對象生成時(shí)自動(dòng)設(shè)置,也可以在設(shè)計(jì)時(shí)通過屬性窗口或運(yùn)行時(shí)通過代碼改變屬性。VB對窗體中新創(chuàng)建的每個(gè)控件對象都會(huì)賦予缺省屬性。例如,缺省的Name屬性就是控件的名稱再加上一個(gè)序號(hào)??丶ο蟮膶傩灾?,有些屬性只能在設(shè)計(jì)中設(shè)置,有些屬性只能在運(yùn)行時(shí)設(shè)置。例如,列表框的Text屬性,這個(gè)屬性返回當(dāng)前列表框中所選項(xiàng)目的內(nèi)容。設(shè)計(jì)時(shí)設(shè)置沒有意義,因?yàn)檫\(yùn)行時(shí)這個(gè)值經(jīng)常改變,運(yùn)行時(shí)使用才有價(jià)值。但文本框的Multiline屬性必須在設(shè)計(jì)時(shí)設(shè)置。這個(gè)屬性是設(shè)置文本框中的文本是否顯示多行文本,在運(yùn)行時(shí)設(shè)置沒有用。屬性分為只讀屬性和可讀寫屬性。只讀屬性在運(yùn)行時(shí)使用,如列表框中的ListCount屬性,它就是只讀屬性,在運(yùn)行時(shí)只能讀取列表中的項(xiàng)目數(shù),而不能設(shè)置。下面列出了常用的公共屬性:Name:用于設(shè)置控件的名稱,這個(gè)名稱用來標(biāo)識(shí)該控件,可用它來引用該對象。例如,按鈕的Name名稱屬性為Command1,則程序中可用“Command1”Alignment:設(shè)置控件文字的對齊方式。有三種值,值為0時(shí)文字左對齊,值為1時(shí)文字右對齊,值為2時(shí)文字居中對齊。Appearance:設(shè)置控件外觀樣式,為0表示平面外觀,為1表示三維外觀。默認(rèn)控件外觀是三維外觀。BackColor:設(shè)置控件顯示文字或繪制圖形的背景顏色。Borderstyle:設(shè)置控件邊界樣式。對于窗體來說,值為0表示無邊界,為3表示固定對話框、為4表示固定工具窗口,為5表示可變工具窗口。ForeColor:設(shè)置控件顯示文字或圖形的前景顏色。Font:設(shè)置控件中文字的所用字體樣式,字號(hào)和特殊顯示方式。Caption:設(shè)置控件顯示標(biāo)題。Text:設(shè)置可接受輸入的控件中輸入或顯示的字符串。如文本框控件中輸入的文本。Width:設(shè)置控件寬度??稍诖绑w設(shè)計(jì)器中用鼠標(biāo)可視化設(shè)置控件的寬度,這時(shí)該屬性會(huì)反映出當(dāng)前控件的寬度。但要精確設(shè)置控件尺寸時(shí),可直接設(shè)置控件的寬度。缺省單位是Twips,就是將每一個(gè)點(diǎn)的1/20,每英寸有1440Twips。Height:同Width類似,設(shè)置控件高度。Left:設(shè)置控件左上角橫坐標(biāo)。坐標(biāo)原點(diǎn)為平面的左上角。用戶可用布局設(shè)計(jì)器設(shè)置窗體的位置,窗體中控件可用鼠標(biāo)直接拖動(dòng)。如要精確控制控件的位置,可在屬性窗中設(shè)置橫坐標(biāo)位置。Top:同Left類似,用于設(shè)置控件的縱坐標(biāo)。Index:當(dāng)使用控件數(shù)組時(shí),表示控件組中的編號(hào)。Enable:設(shè)置控件是否可用。當(dāng)這個(gè)屬性值為False,控件變灰,不能獲得焦點(diǎn),也不會(huì)響應(yīng)任何事件。Visible:設(shè)置控件是否可見,如果設(shè)置為False,則控件在窗口中不會(huì)顯現(xiàn)。TabIndex:設(shè)置窗體中控件用Tab鍵獲得焦點(diǎn)的順序。TabStop:設(shè)置是否能夠使用Tab鍵來將焦點(diǎn)從一個(gè)對象移動(dòng)到另一個(gè)對象。HelpContextID;用來設(shè)置一個(gè)控件對象的上下文幫助文件的編號(hào)。4、對象的方法對象的方法是指對象內(nèi)含的可以進(jìn)行的操作。例如一個(gè)窗體對象,可使用它的Clear方法清除窗體中文字或圖形,利用Hide方法和Show方法控制窗體的隱藏和顯示。對象的方法實(shí)際是在對象的類中定義的成員函數(shù)。VB中,所有控件方法都是有一定含義的動(dòng)詞,通過這個(gè)動(dòng)詞就可以了解控件方法的含義。在調(diào)用方法時(shí)采用和引用控件方法一樣的點(diǎn)(.)操作符引用,如果有參數(shù),在方法后加上參數(shù)值,參數(shù)中間用空格隔開。格式如:ListBox1.Additem“中國”‘在列表框中加入第一項(xiàng),名為“中國”ListBox1.Additem“法國”‘在列表框中加入第二項(xiàng),名為“法國”下面列出了控件所有的常用方法:Clear:清除控件中的內(nèi)容。如果對象是列表框,Clear方法會(huì)刪除列表框中所有項(xiàng)目,如果是剪貼板則清除剪貼板中的內(nèi)容。Drag:用于控件開始、結(jié)束或取消拖動(dòng)操作。只有當(dāng)對象的DragMode屬性設(shè)置為手工時(shí),才需要使用Drag方法控制拖放操作。也可以對DragMode屬性設(shè)置為自動(dòng)的對象使用Drag。當(dāng)參數(shù)為0時(shí)表示取消移動(dòng)操作,當(dāng)其參數(shù)為1時(shí)表示開始移動(dòng)操作,當(dāng)參數(shù)為3時(shí)表示結(jié)束移動(dòng)操作。Move:用于移動(dòng)控件并且改變控件的尺寸。該方法的語法格式為:Object.Moveleft,top,width,height其中只有l(wèi)eft參數(shù)是必須的。但是,要指定任何其他的參數(shù),必須先指定出現(xiàn)在語法中該參數(shù)前面的全部參數(shù)。例如,如果不先指定left和top參數(shù),則無法指定width參數(shù)。任何沒有指定的尾部的參數(shù)則保持不變。OLEDrag:用于開始一個(gè)部件的OLE拖動(dòng)操作。Refresh:用于一個(gè)窗體或控件重新刷新。Setfocus:用于將焦點(diǎn)移動(dòng)到指定的窗體或控件。但是該控件的Enabled屬性TabStop屬性必須設(shè)置為True。ShowWhatThis:用于顯示W(wǎng)indowsHelp所提供的“這是什么”彈出式幫助窗口,幫助的內(nèi)容是在HelpContextID屬性所設(shè)置的幫助文件。Zorder:用于設(shè)置窗體和控件的圖層位置,在設(shè)計(jì)時(shí)可以通過“格式”菜單中的“順序 ”子菜單利用“置前”和“置后”命令設(shè)置控件的圖層位置。5、對象響應(yīng)的事件控件所響應(yīng)的事件就是它所能夠識(shí)別的外部變化,是它產(chǎn)生動(dòng)作的通道,事件從屬于控件對象。當(dāng)外部條件發(fā)生變化或用戶對控件進(jìn)行操作時(shí),如該控件能夠識(shí)別這種變化,就會(huì)調(diào)用相應(yīng)的事件過程。編寫事件響應(yīng)代碼在代碼編輯器中進(jìn)行,如圖2.1-1所示。在代碼編輯器的右邊有一個(gè)事件列表,這個(gè)事件列表從屬于左邊的控件對象,當(dāng)左邊控件列表中的控件改變后,右邊的事件列表也會(huì)發(fā)生變化。圖2.1-1代碼窗口中Form對象的事件列表圖2.1-1中Form_load()過程就是響應(yīng)窗體載入時(shí)所調(diào)用的過程。響應(yīng)事件的過程名構(gòu)成一般由發(fā)生事件的控件名和發(fā)生的事件名組合而成??丶憫?yīng)的事件可分為:鼠標(biāo)事件、鍵盤事件和焦點(diǎn)事件等。鼠標(biāo)事件是VB編程中最常見的事件,大多數(shù)控件都可響應(yīng)鼠標(biāo)操作事件,編寫鼠標(biāo)操作響應(yīng)事件是程序員編寫VB程序的很重要部分。2.1.2對象屬性設(shè)置、對象變量的聲明和引用1、對象屬性值的設(shè)置設(shè)置對象屬性值的語法形式如下:perty=exproession參數(shù):object:對象的名稱,property:屬性的名稱,expression:賦值的表達(dá)式。2、對象變量的聲明和引用對象變量和其他變量一樣,可以被聲明和引用。對象變量的聲明可分帶New關(guān)鍵字和不帶New關(guān)鍵字兩種形式:·使用New關(guān)鍵字的語法形式:{Dim|static|private|public}objectvatnameasnewclassname·不使用New關(guān)鍵字的語法形式:{Dim|static|private|public}objectvatnameasclassname或{Dim|static|private|public}objectvatnameasobject例如,在窗體代碼的通用部分,可以用下面的語句為窗體聲明一個(gè)副本:Dimvarformasnewform1為窗體加一個(gè)命令按鈕,并編寫如下代碼:Privatesubcommand1_click()varform.Visible=trueEndsub則運(yùn)行時(shí),每按一下命令按鈕,就會(huì)生成一個(gè)新的窗體。2.1.3對象數(shù)組像聲明和使用其他數(shù)據(jù)類型數(shù)組那樣,也可以聲明和使用對象類型數(shù)組。對象數(shù)組的成員是對象,它既可以是固定大小的,也可以是動(dòng)態(tài)的。例2.1-1窗體變量數(shù)組范例⑴首先建立“標(biāo)準(zhǔn)EXE”工程。圖2.1-2窗體變量數(shù)組設(shè)計(jì)界面⑵在窗體上加上一個(gè)命令按鈕Command1,并在窗體的【通用】代碼部分聲明窗體變量數(shù)組。在Command1的Click事件中加入顯示語句。程序代碼見圖2.1-3。⑶調(diào)試運(yùn)行。當(dāng)按下按鈕時(shí),屏幕上會(huì)出現(xiàn)6個(gè)窗體。圖2.1-3完整程序代碼2.1.4對象集合和集合對象對象集合是由一組對象組成的集合,它為跟蹤對象提供了一個(gè)非常有效的方法。對象集合與對象數(shù)組不同,當(dāng)增加或減少對象集合中的對象成員時(shí),它的大小并不改變。并且,集合本身也是一個(gè)對象——集合對象(Collection對象),可以使用Dim、New關(guān)鍵字創(chuàng)建集合對象,形式如下:DimSetNameAsNewCollection集合對象有自己的屬性和方法。其中有幾個(gè)非常有用的屬性和方法,可以對集合進(jìn)行計(jì)數(shù)、插入和刪除等操作?!ount屬性:返回集合中對象的數(shù)目,該屬性是只讀屬性?!dd方法:用于給集合添加新的對象?!emove方法:從集合對象中刪除一個(gè)成員?!tem方法:以位置或索引鍵返回一個(gè)集合對象的特定成員。對象集合中的對象作為集合的成員被引用。集合中的每個(gè)成員從0開始順次編號(hào),這就是成員的索引號(hào)。例如,在窗體有一個(gè)控件集合Controls,其中包含其所在窗體上的所有控件,此控件集合只能在運(yùn)行時(shí)調(diào)用。如果對集合中的所有對象都必須執(zhí)行相同操作,則可用集合簡化代碼。例如,可在窗體加上ListBox控件List1,并用下列代碼遍歷控件集合,將各個(gè)控件的名字加在列表框中。DimMyControlasControlForEachMyControlInForm1.Controls把每個(gè)控件的名字送到列表框2.1.5Screen對象和Printer對象VB中的Screen對象是指整個(gè)Windows桌面。Screen對象根據(jù)窗體在屏幕上的布局而操作窗體,并在運(yùn)行時(shí)控制應(yīng)用程序窗體之外的鼠標(biāo)指針。當(dāng)模式窗體被顯示時(shí),使用Screen對象可以設(shè)置Screen對象的MousePoniter屬性為沙漏指針(hourglasspointer)。Screen對象通過關(guān)鍵字Screen訪問。Printer對象是實(shí)現(xiàn)與系統(tǒng)打印機(jī)通信(最初是缺省系統(tǒng)打印機(jī))的接口對象。Printer代表的是當(dāng)前缺省打印機(jī)(又稱默認(rèn)打印機(jī))?!?.2窗體2.2.1窗體的創(chuàng)建每次新建一個(gè)“標(biāo)準(zhǔn)EXE”工程,系統(tǒng)都會(huì)自動(dòng)生成一個(gè)名稱為Form1的窗口,這是VB的第一個(gè)窗體。窗體實(shí)際上是一個(gè)對象,稱為窗體對象,是VB應(yīng)用程序的基本組成部分,也是編程中最常見的對象,是控件的容器。一個(gè)窗體對應(yīng)一個(gè)窗本模塊,窗體模塊的擴(kuò)展名是.FRM,是一個(gè)標(biāo)準(zhǔn)的模塊文件。窗體有自己的屬性、事件和方法,可以用這些屬性、事件和方法來控制窗體的外觀和行為。圖2.2-1添加窗體對話框如果要為工程創(chuàng)建一個(gè)新的窗體,可以在系統(tǒng)的“工程”菜單中選擇“添加窗體(F)”命令,則會(huì)出現(xiàn)一個(gè)如圖2.2-1所示的“添加窗體”對話框。在彈出的對話框中,單擊“打開(O)”按鈕后,則會(huì)為工程添加一個(gè)新的窗體并自動(dòng)為新窗體設(shè)置一個(gè)新的名稱。窗體創(chuàng)建完成后,便可以在其上增加并設(shè)置控件,也可以在運(yùn)行時(shí)對建立的窗體進(jìn)行操作。如果創(chuàng)建了多個(gè)窗體,在程序啟動(dòng)時(shí),雖然載入了所有的窗體,但只是顯示第一個(gè)窗體(默認(rèn)的啟動(dòng)窗體)。如果要顯示其他窗體,必須使用顯示命令(Show)。如果要讓別的窗體成為啟動(dòng)窗體,可在系統(tǒng)“工程”菜單中“工程屬性”對話框中的“通用”選項(xiàng)卡中選擇啟動(dòng)對象,如圖2.2-2所示。這樣,選定的對象便成了啟動(dòng)對象。圖2.2-2選擇啟動(dòng)對象2.2.2窗體的屬性、方法和常用事件1、屬性、方法和事件的基本概念窗體同VB的其他對象一樣,都有屬性、方法和事件。VB的窗體、控件等各類對象都具有各自的屬性、方法和事件。屬性是一個(gè)對象的特征,方法是對象的動(dòng)作,事件則是對象對特定消息的響應(yīng)。各種不同的對象,既有相同的屬性,又有各自特有的屬性,而且各種屬性又有只讀的非只讀之分。大多數(shù)屬性在設(shè)計(jì)時(shí)與運(yùn)行時(shí)都可修改,而有些卻只能在設(shè)計(jì)時(shí)修改。對于可見控件,一般具有大小、位置、字體、顏色、可見性等屬性。對于單個(gè)控件,Index屬性無效,而對于控件數(shù)組,Index屬性是可修改的整數(shù)。對于控件數(shù)組中所有對象,都必須有一個(gè)名稱(Name)屬性,用來標(biāo)識(shí)對象,但這個(gè)名稱屬性只能在設(shè)計(jì)時(shí)修改。例如,窗體中的“(名稱)”屬性便是窗體的標(biāo)識(shí)名,對當(dāng)前窗體的任何窗體引用都必須使用這個(gè)屬性。如果這個(gè)屬性可以獲得其值,則稱為“可讀”。如果可以設(shè)置其值,則稱為“可寫”。方法既可認(rèn)為是對象的動(dòng)作,也可認(rèn)為是對對象的操作??梢酝ㄟ^“方法”這個(gè)方式,獲取對象的信息,也可使對象發(fā)生某一動(dòng)作,從而使對象達(dá)到設(shè)計(jì)的效果和目的。有許多方法為各類對象所共有,也有些是特有。對象接收到一個(gè)特定的消息后便會(huì)對它做出響應(yīng),這在VB中稱為事件。當(dāng)一個(gè)事件發(fā)生時(shí),會(huì)激活與此事件相對應(yīng)的事件過程,如果沒有為此事件編寫過程,則VB只是在內(nèi)部進(jìn)行處理。如果為此事件編寫了處理過程,則VB會(huì)運(yùn)行該過程。事件過程是編程的核心,事件則是編寫的程序與系統(tǒng)的接口,這稱為VB的“事件驅(qū)動(dòng)模式”。2、窗體的屬性窗體的屬性有多種,這些屬性共同構(gòu)成了窗體的結(jié)構(gòu)。通過對屬性的設(shè)置,可以控制窗體的外觀。窗體屬性的訪問以窗體的名稱加上屬性的名稱來描述。其語法形式如下:[FrmName.]PropertyName[=Value]其中,F(xiàn)rmName是窗體名。PropertyName是屬性名,如果是返回屬性,則不使用[=Value]選項(xiàng);如果要設(shè)置屬性值,則必須給出要設(shè)置的屬性值,即Value的值。如果是當(dāng)前窗體,F(xiàn)rmName可省略,也可用Me關(guān)鍵字代替。VB中提供了一個(gè)Me關(guān)鍵字,是一個(gè)隱含聲明的變量,適用于類模塊中的每個(gè)過程,相當(dāng)于對類模塊的引用。當(dāng)過程變量與模塊變量的名稱相同時(shí),可用此關(guān)鍵字引用模塊變量,不必考慮模塊名稱的變化。窗體屬性可分為外觀、位置、行為、字體和其他等幾類。外觀類屬性決定窗體的外觀形態(tài),主要有Caption、Appearance、BackColor、BorderStyle、FontTransparent、Picture等屬性。窗體位置類屬性決定窗體大小、位置等特性,主要有Top、Left、Width、Height、Moveable等屬性。行為類屬性控制窗體的行為操作,主要有AutoRedraw、Enabled、Visible、等屬性。字體類是Font屬性,控制窗體字體特性。下面是窗體常用的屬性:(1)、Caption屬性用來確定顯示在Form對象標(biāo)題欄中的文本。當(dāng)窗體為最小化時(shí),該文本被顯示在窗體圖標(biāo)的下面。(2)、Appearance屬性窗體上控件的繪圖風(fēng)格。設(shè)計(jì)時(shí)可以進(jìn)行設(shè)置,運(yùn)行時(shí)只能讀取。此屬性只有0和1兩種值。屬性為0(Flat)時(shí),表示平面繪制控件和沒有可視化效果的窗體,為1(3D)時(shí),表示帶有三維效果的繪制控件。(3)、名稱(Name)屬性決定對象的引用。編寫VB代碼時(shí),與對象相關(guān)的代碼都是基于對象名稱,即代碼中用對象的名稱來表示其本身。為便于閱讀和理解代碼,可在創(chuàng)建對象后為其設(shè)置一個(gè)具有實(shí)際意義的名稱屬性。此名稱屬性只能在設(shè)計(jì)時(shí)更改,運(yùn)行時(shí)不能改變。窗體的名稱屬性就是窗體對象的名稱,VB把“名稱”當(dāng)作一個(gè)屬性來看待,提供一個(gè)命名窗體的方式。對象名稱遵循一種命名約定:對象名必須以字母開關(guān),窗體名中可包含數(shù)字和下劃線(_),但不能包含標(biāo)點(diǎn)符號(hào)或空格(雖然VB6.0的中文版中可使用中文名稱,但是按照一般編程規(guī)律,不使用中文名稱。)(4)、BackColor屬性用來返回或設(shè)置對象的背景顏色。其屬性值是VB顏色值,可使用Windows環(huán)境的紅-綠-藍(lán)(RGB)顏色方案(標(biāo)準(zhǔn)RGB顏色),也可用系統(tǒng)缺省顏色?!GB顏色方案RGB顏色方案是Windows通過以三原色(R、G、B)不同的量值組合而形成的一個(gè)顏色體系。標(biāo)準(zhǔn)RGB顏色的有效取值范圍是0~16777215(&HFFFFFF)。該范圍內(nèi)數(shù)的高字節(jié)為0,較低的3個(gè)字節(jié),從最低字節(jié)到最高字節(jié)依次決定紅、綠和藍(lán)的量。紅綠和藍(lán)的成分,分別由一個(gè)介于0~225(&HFF)之間的數(shù)來表示。如果最高字節(jié)不為0,VB將使用系統(tǒng)顏色,這些顏色由用戶的控制面板設(shè)置值和對象瀏覽器中的“VB對象庫”所列出的常數(shù)來確定。在設(shè)計(jì)時(shí)的缺省設(shè)置值是由常數(shù)vbWindowBackground定義的系統(tǒng)缺省顏色。(5)、ForeColor屬性用來返回或設(shè)置在對象里顯示圖片和文本的前景顏色,其顏色的設(shè)置與BackColor屬性的設(shè)置方法一樣。在設(shè)計(jì)時(shí)的缺省設(shè)置值是由常數(shù)vbWindowText定義的系統(tǒng)缺省顏色。(6)、FontTransparent屬性用來返回或設(shè)置一個(gè)邏輯值,該值決定是否將Form的背景文本和圖形顯示在字符周圍的空區(qū)。當(dāng)值是True(缺省值)時(shí),允許背景圖形和文本以某種字體在字符的周圍空區(qū)顯示出來;是False時(shí),則屏蔽在字體字符周圍已有的背景圖形和文本。(7)、BorderStyle屬性用來返回或設(shè)置對象的邊框樣式。Form對象和Textbox控件中BorderStyle屬性在運(yùn)行時(shí)只讀。此屬性的取值見表2.2-1窗體的BorderStyle屬性設(shè)置值。表2.2-1窗體的BorderStyle屬性設(shè)置值常數(shù)設(shè)置值描述vbBSNone0無(沒有邊框或與邊框相關(guān)的元素)vbFixedSingle1固定單邊框??梢园刂撇藛胃?、標(biāo)題欄、“最大化”按鈕和“最小化”按鈕。只有使用“最大化”和“最小化”按鈕才能改變大小。vbSizable2(缺省值)可高速的邊框??梢允褂迷O(shè)置值1列出的全體可選邊框元素重新改變尺寸vbFixedDouble3固定對話框??梢园刂撇藛慰蚝蜆?biāo)題欄,不能包含“最大化”和“最小化”按鈕,不能改變尺寸vbFixedToolWindow4固定工具窗口。不能改變尺寸。顯示關(guān)閉按鈕并用縮小的字體顯示標(biāo)題欄。窗體在Windows9x的任務(wù)條中不顯示vbSizableToolWindow5可變尺寸工具窗口。可變大小,顯示關(guān)閉按鈕并用縮小的字體顯示標(biāo)題欄。窗體在Windows9x的任務(wù)條中不顯示(8)、Picture屬性用來返回或設(shè)置控件中要顯示的圖片。缺省值是(None),表示無圖片。設(shè)計(jì)時(shí)可以通過點(diǎn)擊屬性框的方式加載一個(gè)圖片,圖片加載后,應(yīng)在工程目錄下生成一個(gè)文件存儲(chǔ)圖片信息,生成可執(zhí)行的EXE文件,這個(gè)信息文件中的數(shù)據(jù)將會(huì)包括在可執(zhí)行文件中。運(yùn)行時(shí),不能直接將圖片文件賦給該屬性,必須通過使用加載圖片的函數(shù)LoadPicture來設(shè)置。語法形式如下:FrmName.Picture=LoadPicture(PicFile)‘其中,PicFile是圖片文件的文件名。例如:Form1.Picture=LoadPicture(“c:\windows\sss.bmp”)‘載入圖片F(xiàn)orm1.Picture=LoadPicture()’清除圖片(9)、Font屬性決定窗體上使用的字體,但不影響標(biāo)題欄上的字體。此屬性的設(shè)置通過Font對象中的相應(yīng)屬性來實(shí)現(xiàn)。例如,為了使窗體FrmForml中的字體呈“粗體”,可如下描述:FrmForm1.Font.Bold=True(10)、Top屬性用來返回或設(shè)置一個(gè)Single數(shù)據(jù),它以緹為單位表示該窗口上邊緣在屏幕中的位置??捎么藢傩垣@得窗體的上邊緣位置,也可通過修改此屬性來移動(dòng)窗體的位置。緹是英語twip的間譯字,是屏幕的一種量度單位,等于1/20磅。緹是獨(dú)立于屏幕的單位,可確保在所有顯示系統(tǒng)中,屏幕應(yīng)用程序中的屏幕元素的位置和比例都相同。邏輯上1英寸約為1440緹,1厘米為567緹(顯示時(shí),屏幕項(xiàng)目的長度用英寸或厘米測量)。(11)、Left屬性用來返回或設(shè)置一個(gè)Single數(shù)據(jù),它以緹為單位指出該窗口左邊緣在屏幕中的位置,可讀寫??梢杂肔eft屬性和Top屬性共同表示在屏幕上窗體的左上角的坐標(biāo)。當(dāng)其值發(fā)生改變時(shí),窗體的位置會(huì)改變。(12)、Width屬性用來返回或設(shè)置一個(gè)Single數(shù)據(jù),它以緹為單位表示該窗口的寬度。此屬性可讀/寫。(13)、Height屬性用來返回或設(shè)置一個(gè)Single數(shù)據(jù),其內(nèi)容是以緹為單位的窗口的高度。屬性可讀/寫。通過改變Height屬性和Width屬性可以改變窗體的大小。(14)、Moveable屬性該值指定窗體的可移動(dòng)性,一個(gè)Boolean值。當(dāng)其值是True時(shí),可以使用鼠標(biāo)拖動(dòng)窗體,使之移動(dòng)和改變大小;當(dāng)其值是False時(shí),便不能拖動(dòng)窗體。無論Moveable屬性是何值,都可以通過設(shè)置Top、Left、Height、Width的屬性值來改變窗體的大小。(15)、StartUpPosition屬性表示窗體首次出現(xiàn)時(shí)的位置,只能在設(shè)計(jì)時(shí)修改,在運(yùn)行時(shí)只能讀取該屬性。其值只能是表2.2-2中的4個(gè)設(shè)置值中的一個(gè)。表2.2-2StartUpPosition屬性的設(shè)置值常數(shù)值描述vbStartUpManual0手動(dòng)vbStartUpOwner1所有者中心vbStartUpScreen2屏幕中心vbStartUpWindowsDefault3窗口缺省當(dāng)StartUpPosition屬性設(shè)置為vbStartUpOwner或vbStartUpScreen時(shí),窗體中設(shè)置的Left屬性和Top屬性無效。(16)、AutoRedraw屬性用于返回或設(shè)置圖形的繪制方法,即是否“保存”輸出的圖形,是一個(gè)Boolean值。當(dāng)值是True時(shí),窗體的自動(dòng)重繪有效,圖形和文本輸出到屏幕,并存儲(chǔ)圖像在內(nèi)存中。該對象不接受繪制事件,必要時(shí),用存儲(chǔ)在內(nèi)存中的圖像進(jìn)行重繪。當(dāng)值是False(缺省值)時(shí),窗體的自動(dòng)重繪無效,且將圖形或文本只寫到屏幕上。當(dāng)需要重畫該對象時(shí),VB會(huì)激活對象繪制事件。(17)、Enabled屬性用來返回或設(shè)置窗體事件的反應(yīng)狀態(tài),是一個(gè)Boolean值。其值是True(缺?。瑒t允許對事件作出反應(yīng);否則阻止對事件作出反應(yīng),即使窗體無效。當(dāng)窗口呈無效狀態(tài)時(shí),不響應(yīng)Click等事件,而且其系統(tǒng)按鈕呈無效狀態(tài),只能通過關(guān)閉應(yīng)用程序才能關(guān)閉窗體。(18)、Visible屬性用來返回或設(shè)置窗體是否可見,是Boolean值。屬性是True,則窗體可見,如果是False,則窗體不可見。要在啟動(dòng)時(shí)隱藏一個(gè)對象,在設(shè)計(jì)時(shí)可將Visible屬性設(shè)置為False。在代碼中設(shè)置該屬性,能夠?qū)崿F(xiàn)在運(yùn)行時(shí)隱藏然后又重新顯示控件以響應(yīng)某特別事件。(19)、ControlBox屬性用來返回或設(shè)置在運(yùn)行時(shí)是否顯示系統(tǒng)控制菜單框,此屬性在運(yùn)行時(shí)為只讀。如果其值True(缺省值)則顯示控制菜單框,是False則刪除控制菜單框。為了顯示控制菜單框,可將窗體的BorderStyle屬性值設(shè)置為1(固定單邊框)、2(可變尺寸)或3(固定對話框)。(20)、Icon屬性表示在運(yùn)行時(shí)窗體處于最小化時(shí)顯示的圖標(biāo)。在設(shè)計(jì)時(shí),可以通過“選擇屬性值”的方式為應(yīng)用程序加載一個(gè)圖標(biāo)。(21)、MaxButton屬性是一個(gè)Boolean值,標(biāo)識(shí)窗體是否具有“最大化”按鈕。此屬性只能在設(shè)計(jì)時(shí)設(shè)置,在運(yùn)行時(shí)只讀。如果其值是True(缺省值),則窗體具有“最大化”按鈕。如果是False,則窗體沒有“最大化”按鈕。利用“最大化”按鈕可以將窗體窗口擴(kuò)大為全屏幕。要顯示“最大化”按鈕,必須將BorderStyle屬性設(shè)置為1(固定單邊框)、2(可變尺寸)或3(固定雙邊框)。窗口最大化后,“最大化”按鈕自動(dòng)地變成“恢復(fù)”銨鈕,將窗口最小化或恢復(fù)窗口把“恢復(fù)”按鈕變回最大化按鈕。(22)、MinButton屬性是一個(gè)Boolean值,標(biāo)識(shí)窗體是否有“最小化”按鈕。此屬性只能在設(shè)計(jì)時(shí)設(shè)置,在運(yùn)行時(shí)是只讀的。如果其值是True(缺省值),則窗體具有“最小化”按鈕;是False,則窗體沒有:最小化:按鈕?!白钚』卑粹o能夠?qū)⒋绑w窗口最小化為圖標(biāo)。要顯示“最小化”按鈕,必須將BorderStyle屬性設(shè)置為1(固定單邊)、2(可變尺寸)或3(固定雙邊框)。(23)、ShowlnTaskbar屬性用來返回或設(shè)置窗體是否出現(xiàn)在Windows任務(wù)欄中。該值在運(yùn)行時(shí)只讀。如果其值是True(缺省值),則窗體的標(biāo)記出現(xiàn)在任務(wù)欄中;如果是False,則不出現(xiàn)。(24)、WindowState屬性是一個(gè)整數(shù)值,用來標(biāo)識(shí)在運(yùn)行時(shí)窗體窗口的可視狀態(tài)。WindowState屬性值是常數(shù)值vbNormal(0)、VbMinimized(1)、VbMaximized(2)三個(gè)中的之一,分別表示窗體窗口的狀態(tài)是正常(缺省值)、最小化(最小化為一個(gè)圖標(biāo))、最大化(擴(kuò)大到最大尺寸)。(25)、ScaleMode屬性指示對象坐標(biāo)的度量單位,在窗體屬性中屬于“縮放”類。其值可參見表2.2-3表2.2-3ScaleMode屬性的設(shè)置值常數(shù)設(shè)置值描述VbUser0指出ScaleHeight、ScaleWidth、ScaleLeft和ScaleTop屬性中的一個(gè)或多個(gè)被設(shè)置為自定義的值VbTwips1緹(缺省值)(每邏輯英寸為1440緹,每邏輯厘米為567緹)VbPoints2磅(每邏輯英寸為72磅)VbPixels3像素(監(jiān)視器或打印機(jī)分辨率的最小單位)VbCharacters4字符(水平每個(gè)單位=120緹,垂直每個(gè)單位=240緹)VbInches5英寸VbMillimeters6毫米VbCentimeters7厘米VbHimetric8HiMetricVbContainerPosition9控件容器使用的單位,決定控件的位置VbContainerSize10控件容器使用的單位,決定控件的大小通過對ScaleMode屬性與相關(guān)的ScaleHeight、ScaleWidth、ScaleLeft和ScaleTop屬性的設(shè)置,可以建立起一個(gè)帶有正、負(fù)坐標(biāo)的自定義坐標(biāo)系統(tǒng)。這4個(gè)Scale屬性與ScaleMode屬性按下面的方式進(jìn)行交互作用:·把其他任何Scale屬性設(shè)置為任何值都將導(dǎo)致ScaleMode自動(dòng)地設(shè)置為0(用戶定義)?!ぐ裇caleMode屬性設(shè)置為一個(gè)大于0的數(shù),將使ScaleHeight和ScaleWidth的度量單位發(fā)生改變,并將ScaleLeft和ScaleTop設(shè)置為0。CurrentX和CurrentY的設(shè)置值同時(shí)會(huì)發(fā)生改變以反映當(dāng)前點(diǎn)的新坐標(biāo)。3、窗體的方法窗體的方法是對窗體的操作,其語法形式一般為:[FrmObject.]MethodName[argumentlist]其中,F(xiàn)rmOject是窗體對象的名稱,如果是當(dāng)前窗體,則可省略其名稱或可用關(guān)鍵字Me代替。MethodName是方法的名稱,argumentlist是方法的參數(shù)列表。下面是窗體的一些常用方法。(1)、Move方法Move方法用來移動(dòng)窗體,不支持命名參數(shù)。語法形式如下:Moveleft[﹐top[﹐width[﹐height]]]其中,left是單精度值,表示移動(dòng)的目標(biāo)位置的左邊的水平坐標(biāo)(x-軸)。Top是單精度值,表示要移動(dòng)到的頂邊的垂直坐標(biāo)(y-軸)。Width是單精度值,表示新的寬度。Height是單精度值,表示新的高度。對窗體和控件,坐標(biāo)系統(tǒng)總是用緹。移動(dòng)屏幕上的窗體總是相對于左上角的原點(diǎn)(0,0)。坐標(biāo)系統(tǒng)或度量單位在設(shè)計(jì)時(shí)用ScaleMode屬性進(jìn)行設(shè)置,在運(yùn)行時(shí)使用Scale方法可以更改該坐標(biāo)系統(tǒng)。(2)、Scale方法用來定義窗體的坐標(biāo)系統(tǒng),不支持命名參數(shù)。語法形式如下:Scale(x1,y1)-(x2,y2)其中,(x1,y1)是可選的均為單精度值,表示定義左上角的水平(x-軸)坐標(biāo)和垂直(y-軸)坐標(biāo)。這些值必須用括號(hào)括起,如果省略,則第二組坐標(biāo)也必須省略。x2,y2也是可選的,均為單精度值,表示定義右下角的水平坐標(biāo)和垂直坐標(biāo)。這些值必須用括號(hào)括起,如果省略,則第一組坐標(biāo)也必須省略。Scale方法使能夠?qū)⒆鴺?biāo)系統(tǒng)設(shè)置到所選擇的任意刻度。Scale對運(yùn)行時(shí)的圖形語句以及控件位置的坐標(biāo)系統(tǒng)都有影響。如果使用不帶參數(shù)的Scale(兩組坐標(biāo)都省略),坐標(biāo)系統(tǒng)將重置為緹。(3)、Cls方法用來清除運(yùn)行時(shí)所生成的圖形和文本。其語法形式如下:ClsCls只是清除運(yùn)行時(shí)所產(chǎn)生的文本和圖形,設(shè)計(jì)時(shí)使用Picture屬性設(shè)置的背景位圖和放置的控件不受Cls影響。如果激活Cls之前AutoRedraw屬性設(shè)置為False,調(diào)用時(shí)該屬性設(shè)置為True,則放置在Form或PictureBox中的圖形和文本也不受影響。調(diào)用Cls之后,窗體CurrentX和CurrentY屬性復(fù)位為0。(4)、Hide方法用來隱藏窗體,但不能使其卸載。其語法形式如下:Hide隱藏窗體時(shí)窗體將從屏幕上刪除,其Visible屬性將設(shè)置為False,用戶將無法訪問隱藏窗體上的控件,但是對于運(yùn)行中的VB應(yīng)用程序,或?qū)τ谕ㄟ^DDE與該應(yīng)用程序通信的進(jìn)程及對于Timer控件的事件,隱藏窗體的控件仍然可用。窗體被隱藏時(shí),用戶只有等到被隱藏窗體的事件過程的全部代碼執(zhí)行完后才能夠與該應(yīng)用程序交互。(5)、Show方法用來顯示窗體。語法形式如下:[style]﹐[ownerform]其中,參數(shù)style是個(gè)可選取的整數(shù),用來決定窗體的模式。如果style為0,則窗體是無模式的。如果style為1,則窗體是模式的。參數(shù)ownerform是可選的字符串表達(dá)式,指出部件所屬的窗體被顯示。對于標(biāo)準(zhǔn)VB窗體,使用關(guān)鍵字Me。如果調(diào)用Show方法時(shí)指定的窗體沒有裝載,VB將自動(dòng)裝載該窗體。(6)、Print方法用來在窗口中顯示文本。其語法形式如下:Print[outputlist]其中,outputlist是可選的,是要打印的表達(dá)式或表達(dá)式的列表。如果省略,則打印一個(gè)空白行。Outputlist參數(shù)的語法和組成部分如下:{Spc(n)|Tab(n)}expressioncharpos其中,Spc(n)是可選的,用來在輸出中插入空白字符,這里,n為要插入的空白字符數(shù)。Tab(n)也是可選的,用來將插入點(diǎn)定位在約對列號(hào)上,這里,n為列號(hào)。使用無參數(shù)的Tab(n)會(huì)將插入點(diǎn)定位在下一個(gè)打印區(qū)的起始位置。Exprission也是可選的,是要打印的數(shù)值表達(dá)式或字符串表達(dá)式(可以用空白或分號(hào)來分隔多個(gè)表達(dá)式)。可選的charpos指定下Tab(n)將插入點(diǎn)定位在絕對列號(hào)上。使用無參數(shù)的Tab將插入點(diǎn)定位在下一個(gè)打印區(qū)的起始位置。如果省略charpos,則在下一行打印下一字符。(7)、SetFocus方法SetFocus方法的作用是將焦點(diǎn)移至指定的窗體,即激活窗體。其語法形式如下:窗體名.SetFocus焦點(diǎn)不能移到不可見(隱藏)的窗體或控件中,也不能把焦點(diǎn)移到Enabled屬性被設(shè)置為False的窗體或控件中。(8)、Refresh方法Refresh方法可強(qiáng)制全部重繪一個(gè)窗體,可用于對窗體的刷新。4、窗體的事件窗體的事件過程,提供了對窗體編程的接口??梢酝ㄟ^窗體的事件過程完成對窗體的操作。在編程時(shí),從代碼編輯窗口中選定窗體對象和相應(yīng)事件名稱后,系統(tǒng)會(huì)自動(dòng)在代碼編輯窗口中添加一個(gè)事件過程,并將光標(biāo)移動(dòng)到該過程內(nèi)(如果已經(jīng)有該事件過程,光標(biāo)直接移動(dòng)到該過程內(nèi),不再添加新事件過程)。生成的事件過程形式如下:PrivateSubForm_EvintName([argumentlist])…EndSub其中,EventName是事件的名稱,對于不同的事件,將生成不同的過程。有的事件過程有參數(shù),而有的事件過程沒有參數(shù)。窗體的有些事件可能激發(fā)其他事件,也可以在事件過程中調(diào)用其他事件。下面是幾個(gè)常用的窗體事件:(1)、Load事件當(dāng)一個(gè)窗體被裝載或使用Load語句啟動(dòng)程序或引用未裝載的窗體屬性或控件時(shí),就會(huì)觸發(fā)并調(diào)用Load事件。語法:PrivateSubForm_Load()PrivateSubMDIForm_Load()通常,Load事件過程用來包含一個(gè)窗體的啟動(dòng)代碼。多用于指定控件缺省設(shè)置值、指明裝入ComboBox或ListBox控件的內(nèi)容,以及初始化窗體級(jí)變量等。Load事件在Initialize事件之后發(fā)生。例2.2-1為下拉框加入下拉數(shù)據(jù),在Form_Load()事件中為空的ComboBox控件中裝入數(shù)據(jù)項(xiàng)。代碼如下,結(jié)果如圖2.2-3所示圖2.2-3下拉框中數(shù)據(jù)項(xiàng)PrivateSubForm_Load()Combo1.AddItem"北京"'向列表中添加項(xiàng)。Combo1.AddItem"上海"Combo1.AddItem"南京"Combo1.AddItem"廣州"Combo1.ListIndex=2'設(shè)置缺省選擇。EndSub(2)、Paint事件在一個(gè)對象被移動(dòng)或大小變化之后,或在一個(gè)覆蓋該對象的窗體被移開之后,該對象部分或全部暴露時(shí),發(fā)生Paint事件。語法:PrivateSubForm_Paint()PrivateSubobject_Paint([indexAsInteger])表2.2-4Paint事件語法參數(shù)描述部分描述object一個(gè)對象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對象index一個(gè)整數(shù),用來唯一地標(biāo)識(shí)一個(gè)在控件數(shù)組中的控件如果需要代碼中各種圖形方法的輸出,則Paint事件過程就很有用。使用Paint過程,可以確保這樣的輸出在必要時(shí)能被重繪。使用Refresh方法時(shí),Paint事件即被調(diào)用。如果AutoRedraw屬性被設(shè)置為True,重新繪圖會(huì)自動(dòng)進(jìn)行,于是就不需要Paint事件。如果ClipControls屬性被設(shè)置為False,在Paint事件過程中的繪圖方法僅影響該窗體中新暴露的區(qū)域。否則,繪圖方法將在該窗體未被控件覆蓋的所有區(qū)域(Image、Label、Line和Shape控件除外)。在Resize事件過程中使用Refresh方法可在每次調(diào)整窗體大小時(shí)強(qiáng)制對整個(gè)對象進(jìn)行。注意:對某些任務(wù)使用Paint事件過程能導(dǎo)致一個(gè)層疊事件。在下列情況下要避免使用Paint事件過程:1)移動(dòng)一個(gè)窗體或控件,或者是調(diào)整其大小。2)對影響大小或外觀的任何變量進(jìn)行改變,如:設(shè)置對象的BackColor屬性。調(diào)用Refresh方法。對上述這些任務(wù)來說,Resize事件可能更為合適。例2.2-2畫出一個(gè)與一個(gè)窗體各邊的中點(diǎn)相交的菱形,且當(dāng)窗體大小改變時(shí),菱型自動(dòng)調(diào)整。圖2.2-4Paint事件PrivateSubForm_Paint()DimHalfX,HalfY'聲明變量.HalfX=ScaleLeft+ScaleWidth/2'設(shè)置到寬度的一半。HalfY=ScaleTop+ScaleHeight/2'設(shè)置到高度的一半。Line(ScaleLeft,HalfY)-(HalfX,ScaleTop)'畫一個(gè)菱形。Line-(ScaleWidth+ScaleLeft,HalfY)Line-(HalfX,ScaleHeight+ScaleTop)Line-(ScaleLeft,HalfY)EndSubPrivateSubForm_ResizeRefreshEndSub(3)、Resize事件當(dāng)一個(gè)
溫馨提示
- 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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江師范大學(xué)《氣壓與液壓傳動(dòng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 產(chǎn)學(xué)研協(xié)同育人機(jī)制心得體會(huì)發(fā)言
- 長春信息技術(shù)職業(yè)學(xué)院《商務(wù)計(jì)劃》2023-2024學(xué)年第一學(xué)期期末試卷
- 使用開源軟件減少軟件許可費(fèi)
- 產(chǎn)品功能技術(shù)演講模板
- 保險(xiǎn)市場應(yīng)對策略模板
- 業(yè)務(wù)操作-2020年房地產(chǎn)經(jīng)紀(jì)人《房地產(chǎn)經(jīng)紀(jì)業(yè)務(wù)操作》真題匯編
- 社團(tuán)參與與高中生活模板
- 農(nóng)科技講座模板
- 二零二五版養(yǎng)老機(jī)構(gòu)設(shè)施改造及智能化升級(jí)合同3篇
- 做好八件事快樂過寒假-2024-2025學(xué)年上學(xué)期中學(xué)寒假家長會(huì)課件-2024-2025學(xué)年高中主題班會(huì)課件
- 【課件】寒假是用來超越的!課件 2024-2025學(xué)年高中上學(xué)期寒假學(xué)習(xí)和生活指導(dǎo)班會(huì)
- 2024-2025學(xué)年北師大版數(shù)學(xué)七年級(jí)上冊期末練習(xí)卷
- 2025年山東兗礦集團(tuán)公司招聘筆試參考題庫含答案解析
- 燃?xì)庥邢薰竟こ滩抗芾碇贫葏R編
- 2024年中國干粉涂料市場調(diào)查研究報(bào)告
- (自考)經(jīng)濟(jì)學(xué)原理中級(jí)(政經(jīng))課件 第二章 商品和貨幣
- ×××老舊小區(qū)改造工程施工組織設(shè)計(jì)(全面)
- 科創(chuàng)板知識(shí)題庫試題及答案
- GB/T 3324-2024木家具通用技術(shù)條件
- 《材料合成與制備技術(shù)》課程教學(xué)大綱(材料化學(xué)專業(yè))
評論
0/150
提交評論