




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