版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章VisualBasic導(dǎo)論
【學(xué)習(xí)目的和要求】
1.掌握面向?qū)ο蟪绦蛟O(shè)計(jì)方法的基本概念。
2.掌握建立VisualBasic應(yīng)用程序的一般步驟和方法。
3.熟悉VisualBasic的集成開(kāi)發(fā)環(huán)境。
【學(xué)習(xí)要點(diǎn)】
一.面向?qū)ο蟮某绦蛟O(shè)計(jì)方法基礎(chǔ)
1.關(guān)于VisualBasic
面向?qū)ο蟪绦蛟O(shè)計(jì)到底是什么含義,我們從VisualBasic的名字上來(lái)看,就可以得到許
多關(guān)于這一方面的信息。首先是“Visual",“Visual”一詞在詞典上的含義是“看的、視覺(jué)
的、用于看的”,引申到計(jì)算機(jī)程序設(shè)計(jì)領(lǐng)域中就變?yōu)椤翱梢暬某绦蛟O(shè)計(jì)",Microsoft公
司的其他冠以Visual的產(chǎn)品大都含有這個(gè)意思,例如VisualFoxPro、VisualC++、VisualJ++
等等。那么什么是“可視化的程序設(shè)計(jì)”呢?它指的是一種開(kāi)發(fā)圖形用戶界面(GraphicalUser
Interface、簡(jiǎn)稱GUI)的方法,使用這種程序設(shè)計(jì)方法,程序員無(wú)須編寫(xiě)大量代碼去描述
界面元素的外觀和位置,只要把預(yù)先建立的界面元素(例如命令按鈕、列表框等)用鼠標(biāo)拖
放到屏幕上適當(dāng)?shù)奈恢蒙霞纯伞H绻脩羰褂眠^(guò)諸如“計(jì)算器”之類的應(yīng)用程序,那么他實(shí)
際上已經(jīng)掌握了創(chuàng)建用戶界面的必要技巧。
圖1T“計(jì)算器”應(yīng)用程序的界面
圖1-1是WindowsXP操作系統(tǒng)自帶的一個(gè)應(yīng)用程序“計(jì)算器”的界面。在VisualBasic
集成環(huán)境中,用戶可以不用編寫(xiě)一行程序,僅僅使用鼠標(biāo)就可以創(chuàng)建一個(gè)如上圖所示的
Windows應(yīng)用程序的界面,當(dāng)然僅有界面的這個(gè)程序還不會(huì)對(duì)用戶做的任何選擇做出反應(yīng),
如果真得要使程序具有“計(jì)算器”的能力,我們就需要用到第二個(gè)單詞——“Basic”了。
等我們學(xué)完本門(mén)課程,完全有能力開(kāi)發(fā)出這樣一個(gè)實(shí)用的小程序。
即使計(jì)算機(jī)技術(shù)發(fā)展到今天這種局面,在計(jì)算機(jī)領(lǐng)域里單詞“Basic”也仍然里如雷貫
耳、婦孺皆知,這是因?yàn)锽asic語(yǔ)言是迄今為止在計(jì)算機(jī)技術(shù)發(fā)展歷史上應(yīng)用最為廣泛的一
種語(yǔ)言。在全世界、會(huì)使用Basic語(yǔ)言編程的人員數(shù)以百萬(wàn)計(jì),就連Microsoft公司的總裁
Gates在剛出道時(shí)也曾是一個(gè)Basic程序員(也許正是因?yàn)檫@一點(diǎn),Gates才會(huì)對(duì)Basic語(yǔ)言
情有獨(dú)鐘,花大力氣去發(fā)展VisualBasic)。僅此一點(diǎn),就注定了VisualBasic會(huì)擁有龐大的
用戶群。
VisualBasic在原有BASIC語(yǔ)言的基礎(chǔ)上進(jìn)一步發(fā)展,至今已經(jīng)包含了數(shù)百條語(yǔ)句、函
數(shù)及關(guān)鍵詞,其中很多和WindowsGUI有直接關(guān)系。專業(yè)人員可以用VisualBasic實(shí)現(xiàn)其他
任何Windows編程語(yǔ)言的功能,而初學(xué)者只要掌握幾個(gè)關(guān)鍵詞就可以建立實(shí)用的應(yīng)用程序。
所以,Visual和Basic這兩個(gè)單詞連在一起,就可以從中得到關(guān)于它的一個(gè)簡(jiǎn)單的概念一
使用Basic語(yǔ)言進(jìn)行可視化程序設(shè)計(jì)的開(kāi)發(fā)工具。VisualBasic自從1991年推出后,因?yàn)榻?/p>
面友好、簡(jiǎn)單易用,因而得到了迅速推廣,目前比較流行使用的版本是VisualBasic6.0。使
用VisualBasic不僅可以方便地開(kāi)發(fā)一般的Windows應(yīng)用程序,進(jìn)行多媒體和數(shù)據(jù)庫(kù)應(yīng)用系
統(tǒng)的開(kāi)發(fā)也同樣可以得心應(yīng)手。本書(shū)后面我們將VisualBasic統(tǒng)一簡(jiǎn)稱為VB。
2.面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念
1)對(duì)象(Object)
在新一代Windows程序開(kāi)發(fā)工具中,幾乎都具有面向?qū)ο螅∣bjectOriented)特性,Visual
Basic自然也不例外。在用VB開(kāi)發(fā)應(yīng)用程序的過(guò)程中,事實(shí)上就是圍繞著對(duì)象來(lái)進(jìn)行,那
么到底什么是對(duì)象呢?
可以把對(duì)象想象成日常生活中的各種物體,例如:書(shū)籍、汽車(chē)等,這些都可以稱為對(duì)象。
以汽車(chē)來(lái)說(shuō)吧,每輛汽車(chē)本身是?個(gè)對(duì)象,而汽車(chē)又是由許多對(duì)象組成的,例如:輪胎、引
擎、車(chē)燈、方向盤(pán)等,每一個(gè)零件都是個(gè)對(duì)象,對(duì)象中還可以包含其它對(duì)象。與汽車(chē)的概
念相類似,在VB程序中,窗體(Form)、命令按鈕(CommandButton)、歹U表框(ListBox)
等都是對(duì)象。在程序設(shè)計(jì)的過(guò)程中,這些對(duì)象就是程序的主角。如圖1-2所示。
窗體對(duì)象
命令按鈕對(duì)象
列表框?qū)ο?/p>
圖1-2窗體、命令按鈕、列表框?qū)ο?/p>
2)屬性(Property)
每一個(gè)對(duì)象都有其相應(yīng)的特性,在計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言中被稱作屬性。仍然以汽車(chē)來(lái)說(shuō)
吧,與它相關(guān)的屬性數(shù)據(jù)有:顏色、長(zhǎng)度、寬度、馬力、是否有安全氣囊,乘坐人數(shù)等。記
錄這些屬性數(shù)據(jù)的地方就叫做屬性欄。屬性欄中所記錄的屬性數(shù)據(jù)叫做屬性值。我們都知道,
不同款式的汽車(chē)會(huì)有不同的長(zhǎng)度、寬度,也就是說(shuō),同一類對(duì)象雖然擁有相同的屬性欄,但
其屬性值卻有可能不同。例如兩輛汽車(chē)都有顏色的屬性,其中一輛是紅色,另外一輛是黑色,
那么兩輛汽車(chē)對(duì)應(yīng)顏色這個(gè)屬性的屬性值分別就是“紅色”和“黑色”。屬性名和屬性值的
概念如圖1-3所示。
屬性名
屬性值
圖1-3屬性窗口、屬性名和屬性值
3)類(Class)
我們剛剛提到“同一類對(duì)象擁有相同的屬性欄”,其實(shí)更加準(zhǔn)確的說(shuō)法應(yīng)該是“同一類
對(duì)象的大部分屬性欄相同二為什么這樣說(shuō)呢?例如,拿般的車(chē)子與坦克車(chē)來(lái)比較,雖然
都有車(chē)長(zhǎng)、車(chē)寬的屬性欄,但是坦克車(chē)就會(huì)多出一些記錄大炮口徑、履帶形式的屬性欄。如
果兩個(gè)對(duì)象間的屬性欄差異太大,那么,它們根本不能算是同一類對(duì)象。例如汽車(chē)和樹(shù)木,
它們就不能算是同一類對(duì)象,這些形形色色的對(duì)象分別屬于不同的種類,這就是所謂的類。
還有一個(gè)典型的例子,那就是人類,每一個(gè)人都是一個(gè)具體的對(duì)象,所有人共同構(gòu)成了
人類。顯而易見(jiàn),對(duì)象應(yīng)當(dāng)是類的一個(gè)實(shí)例。
4)方法(Method)
對(duì)象除了具有屬性之外,還包含了一些控制對(duì)象的動(dòng)作或功能,稱作對(duì)象的方法。所謂
方法,指的是控制對(duì)象動(dòng)作行為的方式。它是對(duì)象本身內(nèi)含的函數(shù)或過(guò)程,它也是一個(gè)動(dòng)作,
是一個(gè)簡(jiǎn)單的不必知道細(xì)節(jié)的無(wú)法改變的事件,但不被稱作事件;同樣,方法也不是隨意的,
一些對(duì)象有一些特定的方法。在VB中方法的調(diào)用形式是:
對(duì)象名.方法名
以汽車(chē)為例,假設(shè)車(chē)子這個(gè)對(duì)象中共有五個(gè)動(dòng)作,分別是放開(kāi)手制動(dòng)、踩油門(mén)、踩離合
器、放開(kāi)離合器、掛檔。如果我們要車(chē)子從靜止?fàn)顟B(tài)啟動(dòng),就可以組合這五個(gè)動(dòng)作:
A.放開(kāi)手制動(dòng)
B.踩離合器
C.掛檔
D.放開(kāi)離合器
E.踩油門(mén)
這樣,車(chē)子就能順利啟動(dòng)。這五個(gè)動(dòng)作都是車(chē)子這個(gè)對(duì)象所提供的功能,以程序設(shè)計(jì)的
專業(yè)術(shù)語(yǔ)來(lái)說(shuō),這就是對(duì)象所提供的方法。方法是用來(lái)控制對(duì)象操作的內(nèi)部程序。方法如同
工具一樣,設(shè)計(jì)者借助它們用程序來(lái)控制對(duì)象。
現(xiàn)在,已經(jīng)對(duì)類、對(duì)象、屬性、方法等名詞有了基本的認(rèn)識(shí),我們?cè)賮?lái)看看在VB中的
情形。在VB中提供了很多類和對(duì)象,例如:Form、命令按鈕、文本框、滾動(dòng)條等,它們
各自擁有許多的屬性和方法。我們可以在這些對(duì)象的屬性欄中填入屬性值,也可以運(yùn)用這些
對(duì)象的方法來(lái)控制對(duì)象,這就是VB程序設(shè)計(jì)的基礎(chǔ)。
5)事件(Event)
對(duì)某個(gè)對(duì)象來(lái)說(shuō),事件就是發(fā)生在該對(duì)象上.的事情。事件的發(fā)生不是隨意的,某些事件
僅發(fā)生在某些對(duì)象上。VB中提供了很多對(duì)象,每種對(duì)象會(huì)響應(yīng)相關(guān)的事件,供程序設(shè)計(jì)者
利用它們?cè)O(shè)計(jì)出應(yīng)用程序。例如,命令按鈕就是一個(gè)對(duì)象。在按鈕上最常發(fā)生的事情就是被
“按一下”,這個(gè)“按一下”就是按鈕對(duì)象的一個(gè)事件。在按鈕上面用鼠標(biāo)按一下,在Windows
環(huán)境下的說(shuō)法就叫做單擊,于是我們就說(shuō)按鈕有一個(gè)Click(單擊)事件。
6)事件過(guò)程(EventProcedure)
當(dāng)在對(duì)象上發(fā)生了某個(gè)事件后,我們必須想辦法來(lái)處理這個(gè)事件,而處理的步驟就是事
件過(guò)程。事件過(guò)程是針對(duì)事件而來(lái)的,而事件過(guò)程中的處理步驟在VB程序設(shè)計(jì)中就是所謂
的程序代碼。換句話說(shuō),VB程序設(shè)計(jì)者的主要工作,就是為對(duì)象編寫(xiě)事件過(guò)程中的程序代
碼。
對(duì)于每?個(gè)VB所提供的對(duì)象,都已經(jīng)設(shè)定了該對(duì)象所能夠響應(yīng)的事件,而每一個(gè)事件
都會(huì)有一個(gè)對(duì)應(yīng)的空事件過(guò)程(也就是還沒(méi)有規(guī)定如何處理該事件的空程序)。在編寫(xiě)程序
時(shí),我們并不需要把對(duì)象所有的事件過(guò)程都填滿,只要在需要響應(yīng)的事件過(guò)程中填入相應(yīng)的
處理代碼就可以了。例如:對(duì)于一個(gè)窗體對(duì)象而言,既有Click(單擊)事件也有Dblclick
(雙擊)事件,但是在某個(gè)具體應(yīng)用程序中,不需要考慮到Dblclick(雙擊)事件,此時(shí)我
們只需要在Click事件過(guò)程中輸入代碼,在Dblclick事件過(guò)程中無(wú)須輸入代碼。如圖1-4所
不。
E工程1-For*l(Code)
圖1-4代碼窗口
當(dāng)對(duì)象上發(fā)生了某一事件,而該事件所對(duì)應(yīng)的事件過(guò)程中沒(méi)有程序代碼(也就是沒(méi)有規(guī)
定處理步驟)時(shí)怎么辦?也沒(méi)有什么關(guān)系,那只不過(guò)代表程序?qū)υ撌录安挥枥頃?huì)”罷了,
也就是不予處理該事件。
7)事件驅(qū)動(dòng)程序設(shè)計(jì)(EventDrivenProgrammingModel)
寫(xiě)完程序后開(kāi)始執(zhí)行時(shí),程序會(huì)先等待某個(gè)事件的發(fā)生,然后再去執(zhí)行處理此事件的事
件過(guò)程。事件過(guò)程要經(jīng)過(guò)事件的觸發(fā)才會(huì)被執(zhí)行,這種動(dòng)作模式就稱為事件驅(qū)動(dòng)程序設(shè)計(jì):
也就是說(shuō),由事件控制著整個(gè)程序的執(zhí)行流程。
當(dāng)事件過(guò)程處理完某一事件后,程序就會(huì)進(jìn)入等待狀態(tài),直到下一個(gè)事件發(fā)生為止。簡(jiǎn)
單來(lái)說(shuō),VB程序的執(zhí)行步驟如下:
A.等待事件的發(fā)生
B.事件發(fā)生時(shí),去執(zhí)行其對(duì)應(yīng)的事件過(guò)程
C.重新開(kāi)始步驟A
如此周而復(fù)始地執(zhí)行,直到程序結(jié)束為止。這就是事件驅(qū)動(dòng)程序設(shè)計(jì)。
二.創(chuàng)建VB應(yīng)用程序的一般步驟
使用可視化集成環(huán)境的開(kāi)發(fā)工具來(lái)編寫(xiě)程序,絕對(duì)不能想到哪里就寫(xiě)到哪里,因?yàn)樗鼈?/p>
跟傳統(tǒng)面向過(guò)程程序語(yǔ)言的結(jié)構(gòu)有很到的不同。我們將用VB開(kāi)發(fā)程序的一般步驟整理如
下,供參考。
編寫(xiě)VB程序的基本步驟:
1.建立基礎(chǔ)結(jié)構(gòu):首先要想象一下程序執(zhí)行后應(yīng)該是什么樣子。此時(shí)不妨用筆和紙簡(jiǎn)
化程序完成后窗口的草圖,并注明一些操作(如按下按鈕)發(fā)生的反應(yīng)、控件彼此間的關(guān)系
等等。
2.組建程序結(jié)構(gòu):在窗體上放置所需的控制元件。所謂窗體就是窗口,而控件就是指
像文本框、列表框、命令按鈕、滾動(dòng)條等各種對(duì)象。
3.調(diào)整元件屬性:在屬性窗口上填寫(xiě)或修改窗體及其它控件的屬性值。
4.為對(duì)象配上相應(yīng)的程序代碼:為所有可能發(fā)生事件的控件編寫(xiě)事件過(guò)程。例如用鼠
標(biāo)在命令按鈕上單擊,對(duì)命令按鈕而言就是發(fā)生了一個(gè)Click事件。發(fā)生事件之后所做的處
理,就是以編寫(xiě)一個(gè)事件過(guò)程來(lái)響應(yīng)。
5.測(cè)試程序執(zhí)行結(jié)果:執(zhí)行、測(cè)試,然后再修改,直到滿意為止。
上面列出的程序設(shè)計(jì)基本步驟,不僅僅適用于VB,其它像Delphi、C++Builder等可視
化程序開(kāi)發(fā)工具也都可以這樣依次進(jìn)行。但是請(qǐng)不要忘記,這只是基本步驟而已,如果還想
要更進(jìn)一步細(xì)分,其實(shí)還包括系統(tǒng)分析、使用手冊(cè)的編寫(xiě)、聯(lián)機(jī)幫助的制作等等。我們特別
要強(qiáng)調(diào)的是,學(xué)好程序設(shè)計(jì)的最佳方法就是“練習(xí)、練習(xí)、再練習(xí)”,絕對(duì)沒(méi)有其它捷徑。
所謂“熟能生巧”,指的是當(dāng)你熟悉了該語(yǔ)言中的各種特性和語(yǔ)法,并且對(duì)各種控件有了基
本印象后,設(shè)計(jì)程序時(shí)才能很快地找到所需的對(duì)象并迅速加以組合,編寫(xiě)相應(yīng)地事件代碼,
設(shè)計(jì)成一個(gè)完整的應(yīng)用程序。
最后,我們總結(jié)一下利用VB開(kāi)發(fā)應(yīng)用程序的基本設(shè)計(jì)機(jī)制就是:改變對(duì)象的屬性、使
用對(duì)象的方法、為對(duì)象事件編寫(xiě)事件過(guò)程。
【相關(guān)習(xí)題】
1.VB是用于開(kāi)發(fā)____環(huán)境下的應(yīng)用程序的工具。
A.DOSB.WindowsC.DOS和WindowsD.UNIX
2.VB是一種面向的程序設(shè)計(jì)語(yǔ)言.
A.過(guò)程B.用戶C.方法D.對(duì)象
3.VB采用了編程機(jī)制。
A.面向過(guò)程B.面向?qū)ο驝.事件驅(qū)動(dòng)D.可視化
4.一只白色的足球被踢進(jìn)球門(mén),則白色、足球、踢、進(jìn)球門(mén)是______。
A.屬性、對(duì)象、方法、事件B.屬性、對(duì)象、事件、方法
C.對(duì)象、屬性、方法、事件D.對(duì)象、屬性、事件、方法
5.能被對(duì)象所識(shí)別的動(dòng)作與對(duì)象可執(zhí)行的活動(dòng)分別稱為對(duì)象的o
A.方法、事件B.事件、方法C.事件、屬性D.過(guò)程、方法
6.在VB中有一行程序代碼:Textl.Text="VisualBasic”,其中的Textl、Text和"Visual
Basic”分別代表o
A.對(duì)象、值、屬性B.對(duì)象、方法、屬性
C.對(duì)象、屬性、值I).屬性、對(duì)象、值
7.以下有關(guān)對(duì)象屬性的說(shuō)法中正確的是。
A.對(duì)象所有的屬性都羅列在屬性窗口列表中
B.不同對(duì)象不可能有同名屬性
C.不同對(duì)象的同名屬性取值一定相同
1).對(duì)象的某些屬性既可以在實(shí)行窗口中設(shè)置,也可以通過(guò)程序代碼設(shè)置或改變
8.以下有關(guān)對(duì)象屬性的說(shuō)法中錯(cuò)誤的是。
A.所有的對(duì)象都具有Name(名稱)屬性
B.只能在執(zhí)行時(shí)設(shè)置或改變的屬性為執(zhí)行時(shí)屬性
C.對(duì)象的某些屬性只能在設(shè)計(jì)時(shí)設(shè)定,不能使用代碼改變
I).Enabled屬性值設(shè)為False的控件對(duì)象在窗體上將不可見(jiàn)
9.在設(shè)計(jì)階段,當(dāng)雙擊窗體上的某個(gè)控件時(shí),所打開(kāi)的窗口是。
A.工程資源管理器窗口B.工具箱窗口C.代碼窗口D.屬性窗口
10.剛建立一個(gè)新的標(biāo)準(zhǔn)EXE工程后,不在工具箱中出現(xiàn)的控件是o
A.單選按鈕B.圖片框C.通用對(duì)話框D.文本框
11.以下敘述中錯(cuò)誤的是。
A.一個(gè)工程中只能有一個(gè)SubMain過(guò)程
B.窗體的Show方法的作用是將指定的窗體裝入內(nèi)存并顯示該窗體
C.窗體的Hide方法和Unload方法的作用完全相同
D.若工程文件中有多個(gè)窗體,可以根據(jù)需要指定一個(gè)窗體為啟動(dòng)窗體
12.以下敘述中錯(cuò)誤的是。
A.VisualBasic是事件驅(qū)動(dòng)型可視化編程工具
B.VisualBasic應(yīng)用程序不具有明顯的開(kāi)始和結(jié)束語(yǔ)句
C.VisualBasic工具箱中的所有控件都具有寬度(Width)和高度(Height)屬性
I).VisualBasic中控件的某些屬性只能在運(yùn)行時(shí)設(shè)置
13.以下敘述中錯(cuò)誤的是。
A.在工程資源管理器窗口中只能包含一個(gè)工程文件及屬于該工程的其他文件
B.以.BAS為擴(kuò)展名的文件是標(biāo)準(zhǔn)模塊文件
C.窗體文件包含該窗體及其控件的屬性
D.一個(gè)工程中可以含有多個(gè)標(biāo)準(zhǔn)模塊文件
14.以下不屬于VisualBasic系統(tǒng)的文件類型是。
A..FrmB..BatC..VbgD..Vbp
15.以下敘述中錯(cuò)誤的是。
A.打開(kāi)一個(gè)工程文件時(shí),系統(tǒng)自動(dòng)裝入與該工程有關(guān)的窗體、標(biāo)準(zhǔn)模塊等文件
B.保存VisualBasic程序時(shí),應(yīng)分別保存窗體文件及工程文件
C.VisualBasic應(yīng)用程序只能以解釋方式執(zhí)行
1).事件可以由用戶引發(fā),也可以由系統(tǒng)引發(fā)
16.如果一個(gè)工程含有多個(gè)窗體及標(biāo)準(zhǔn)模塊,則以下敘述中錯(cuò)誤的是。
A.如果工程中含有SubMain過(guò)程,則程序一定首先執(zhí)行該過(guò)程
B.不能把標(biāo)準(zhǔn)模塊設(shè)置為啟動(dòng)模塊
C.用Hide方法只是隱藏一個(gè)窗體,不能從內(nèi)存中清除該窗體
D.任何時(shí)刻最多只有一個(gè)窗體是活動(dòng)窗體
17.假定一個(gè)VisualBasic應(yīng)用程序由一個(gè)窗體模塊和一個(gè)標(biāo)準(zhǔn)模塊構(gòu)成。為了保存該應(yīng)
用程序,以下正確的操作是。
A.只保存窗體模塊文件
B.分別保存窗體模塊、標(biāo)準(zhǔn)模塊和工程文件
C.只保存窗體模塊和標(biāo)準(zhǔn)模塊文件
D.只保存工程文件轉(zhuǎn)貼
18.為了清除窗體上的一個(gè)控件,下列正確的操作是________。
A.按回車(chē)鍵
B.按Esc鍵
C.選擇(單擊)要清除的控件,然后按Del鍵
D.選擇(單擊)要清除的控件,然后按回車(chē)鍵
【參考答案】
1.B2.D3.C4.B5.B6.C
7.D8.D9.C10.C11.C12.C
13.A14.B15.C16.A17.B18.C
第二章程序設(shè)計(jì)與算法
【學(xué)習(xí)目的和要求】
了解程序的基本組成和程序設(shè)計(jì)的一般步驟。
【學(xué)習(xí)要點(diǎn)】
由于計(jì)算機(jī)只能執(zhí)行算術(shù)運(yùn)算和邏輯運(yùn)算,所以其解決問(wèn)題的方法、步驟和人們生活中
的處理不同,必須考慮其特殊性。如果利用計(jì)算機(jī)編寫(xiě)程序?qū)崿F(xiàn)某個(gè)功能,不管多復(fù)雜的操
作,也必須轉(zhuǎn)化為算術(shù)和邏輯運(yùn)算的組合,因此,在編寫(xiě)程序之前,必須按照要求,設(shè)計(jì)出
符合計(jì)算機(jī)特性的解題步驟,這就是算法設(shè)計(jì)。
作為算法,應(yīng)具有以下基本特征:
1)確定性
2)可行性
3)有窮性
4)輸入性
5)輸出性
結(jié)構(gòu)化程序設(shè)計(jì)方法中,規(guī)定了算法的三種基本結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),
任何復(fù)雜的問(wèn)題都可以轉(zhuǎn)化為這三種結(jié)構(gòu)的程序設(shè)計(jì)。當(dāng)然,不管是順序結(jié)構(gòu)還是分支和循
環(huán)結(jié)構(gòu)的程序,都必須按一定的算法設(shè)計(jì)的步驟執(zhí)行。在計(jì)算機(jī)語(yǔ)言的發(fā)展過(guò)程中,對(duì)不同
問(wèn)題的處理已經(jīng)形成相對(duì)固定的處理方法,這些我們會(huì)在后面的內(nèi)容中介紹。
第三章常用控件與界面設(shè)計(jì)
【學(xué)習(xí)目的和要求】
1.掌握窗體界面的設(shè)計(jì)方法,合理使用常用控件,并對(duì)窗體進(jìn)行布局。
2.掌握窗體和常用控件常見(jiàn)的屬性、事件和方法。
【學(xué)習(xí)要點(diǎn)】
一.VB用戶界面設(shè)計(jì)基礎(chǔ)
VB程序界面的設(shè)計(jì)可以分為兩個(gè)步驟:先繪制控件,然后確定控件屬性。繪制控件是
指在工具箱里單擊所需要的控件,然后在窗體里按下鼠標(biāo),并拖曳到合適位置松開(kāi)鼠標(biāo)即可。
確定屬性要做的任務(wù)是先選中控件,然后按F4鍵或單擊工具欄上的屬性窗口按鈕進(jìn)入屬性
(Propenes)設(shè)置窗口,再在屬性窗口中找到要設(shè)置的屬性并進(jìn)行設(shè)置。
1.常見(jiàn)屬性的設(shè)置
1)Name屬性
對(duì)象都有名字,計(jì)算機(jī)把名字看成對(duì)象與對(duì)象之間的根本差異,因此在同一窗體里不許
出現(xiàn)重名的情況(除非這是一個(gè)控件數(shù)組)。
在簡(jiǎn)單的程序里,給控件命名不是很必要,完全可以使用控件Name屬性的缺省值,例
如Textl。但在有幾十個(gè)控件的復(fù)雜窗體里,如果用默認(rèn)的名稱就很難區(qū)分它們。所以,專
業(yè)的程序設(shè)計(jì)人員推薦使用由三個(gè)小寫(xiě)字母的前綴和一個(gè)第一個(gè)字母為大寫(xiě)的描述性單詞
組成的名字。其中前三個(gè)小寫(xiě)字母是各種對(duì)象名稱的簡(jiǎn)稱,如下表3-1所示。例如可以用
cmdExit來(lái)表示一個(gè)命令按鈕,前綴cmd表示是一個(gè)命令按鈕,而Exit則表示“退出”的含
義。此種命名方法雖然不是必須的,但卻是一個(gè)優(yōu)秀程序員應(yīng)當(dāng)具備的素質(zhì)。
表3-1常見(jiàn)對(duì)象的推薦命名前綴
對(duì)象前綴例子
標(biāo)簽(Label)IblIblFakeName
文本框(TextBox)txttxtWarning
命令鈕(CommandButton)cmdcmdExit
窗體(Form)frmfrmTax
框架(Frame)frafraGroupButtons
組合框(ComboBox)cbocboCrimesCommitted
列表框(ListBox)1stIstCandidates
確認(rèn)框(CheckBox)chkchkCareerChioce
選項(xiàng)鈕(OptionButton)optimgPrettyDrawing
菜單(Menu)mnu1inBorder
圖形(Image)imgoptStationlOl
圖片框(PictureBox)picpicPrettyPicture
水平滾動(dòng)條(HorizontalScrollBar)hsbhsbTemperature
垂直滾動(dòng)條(VerticalScrollBar)vsbvsbMoneyRaised
目錄列表框(DirectoryListBox)dirdirTree
驅(qū)動(dòng)器列表框(DriveListBox)drvdrvHardDisk
文件列表框(FileListBox)filfilDocuments
2)Caption屬性
Caption即標(biāo)題,是可以在對(duì)象外觀上直接看見(jiàn)的文本,可以長(zhǎng)達(dá)255字符,包括空格
和標(biāo)點(diǎn)符號(hào),比如一個(gè)叫cmdOk的命令鈕,它的Caption屬性就可以是“確定”。注意:
并不是所有的對(duì)象都有此屬性,比如文本框、圖片框、線條等就沒(méi)有Caption屬性。
為按鈕設(shè)置熱鍵:在設(shè)置Caption屬性時(shí),在需要加下劃線的字母前加上符號(hào),
例如“&File",輸出的就是“file",這樣就可以通過(guò)按ALT健和標(biāo)題上那個(gè)帶下劃線的
字母來(lái)選取它了,不必為此編寫(xiě)任何代碼。如下圖3T所示,我們?yōu)椤按_定”按鈕和“取消”
按鈕分別設(shè)置了熱鍵。和X,事實(shí)上,只需要設(shè)置Caption屬性分別是“確定(&0)”和“取
消(&X)”即可。
圖3T
另外,很多初學(xué)者會(huì)對(duì)Name和caption這兩個(gè)屬性分不清,下面我們對(duì)Name和
caption來(lái)做一個(gè)比較。
①Name是系統(tǒng)用來(lái)識(shí)別對(duì)象的,編程時(shí)需要用它來(lái)指代各對(duì)象;Caption是給用戶看
的,提示用戶該對(duì)象的作用;
②Name可以采用系統(tǒng)默認(rèn)的名稱,但Caption應(yīng)該根據(jù)實(shí)際情況改成意義明了的名詞,
便于操作者使用;
③所有對(duì)象都有Name,但不一定都有Caption屬性。
3)Top,Left屬性
這兩個(gè)屬性決定對(duì)象的位置。只有兩種情況需要在屬性窗口里設(shè)置這兩個(gè)屬性:第一種
是用戶沒(méi)有鼠標(biāo),第二種是程序員需要十分精確地設(shè)定這兩個(gè)值。當(dāng)選中對(duì)象,單擊并拖曳
它的時(shí)候,便在修改這兩個(gè)值了。
4)Height,Width屬性
這兩個(gè)屬性決定了對(duì)象的大小,當(dāng)選中控件時(shí),它周?chē)霈F(xiàn)八個(gè)小黑方塊,把鼠標(biāo)指向
這些方塊,鼠標(biāo)指針將變成一個(gè)雙向的箭頭,這時(shí)按下鼠標(biāo)并拖曳它,即可改變控件的大小,
也就改變了Height,Width屬性。Top、Left和Height、Width屬性的含義見(jiàn)下圖3-2。
Top屬性
Height屬性
Left屬性
Width屬性
圖3-2
2.窗體的屬性
窗體對(duì)象常用的屬性如下表3-2所示。
表3-2窗體常用的屬性
屬性名稱說(shuō)明
系統(tǒng)識(shí)別窗體的標(biāo)識(shí)名,一個(gè)窗體名必須以一個(gè)字母開(kāi)頭,
Name窗體名稱
可包含數(shù)字和下劃線,但不能包含空格和標(biāo)點(diǎn)符號(hào)。
Caption窗體標(biāo)題出現(xiàn)在窗體標(biāo)題欄中的文本內(nèi)容
這個(gè)屬性是用戶經(jīng)常要使用的一種屬性。當(dāng)用戶的應(yīng)用程
序在工具條上最小化或在Windows桌面上變?yōu)橐粋€(gè)獨(dú)立應(yīng)
Icon窗體圖標(biāo)
用程序時(shí),該屬性決定將采用何種圖標(biāo),窗體控制框里的
圖標(biāo)也由它決定。
BackColor窗體背景色川以從屬性框里彈出調(diào)色板,選擇所需要的顏色
ForeColor窗體前景色窗體上打印文字的顏色
這個(gè)屬性決定了窗體邊框的樣式,共有6種屬性值。改變
BorderStyle邊框風(fēng)格窗體的BordrStyle屬性后,窗體在屏幕上沒(méi)有變化,它只
在運(yùn)行時(shí)才變?yōu)樗蟮臉幼印?/p>
Apearance外形這個(gè)屬性用來(lái)決定控件是否采用三維效果
ControlBox控制按鈕用來(lái)決定是否采用控件框的屬性,僅在程序運(yùn)行時(shí)才有效。
用來(lái)改變?cè)摯绑w上顯示信息的字體、字型和字號(hào),它控制
Font字體
著直接在窗體上打印的文本顯示。
該屬性決定窗體是否可見(jiàn),默認(rèn)情況下值為T(mén)rue,是可見(jiàn)
Visible可見(jiàn)性
的,值為False,運(yùn)行時(shí)將看不見(jiàn)窗體。
WindowState窗體狀態(tài)指定窗體在運(yùn)行時(shí)的三種狀態(tài):正常、最小化、最大化。
Enabled活動(dòng)性默認(rèn)值為T(mén)rue,決定窗體能否被訪問(wèn)。
Left>Top>左邊距、頂邊
決定窗體在屏幕上的位置及窗體大小。
Height^Width距、高度、寬度
二.VB窗體的創(chuàng)建
1.設(shè)置窗體屬性
1)在設(shè)計(jì)態(tài)通過(guò)屬性窗口設(shè)置,直接在屬性窗口中選擇或輸入即可。
2)在程序代碼中改變屬性值
代碼中的格式為:對(duì)象名.屬性=屬性值
例如:Forml.BackColor=RGB(255,0,0)'設(shè)置窗體的背景色
Forml.Caption="歡迎同學(xué)們學(xué)習(xí)VB”'設(shè)置窗體的標(biāo)題屬性
2.窗體的常用方法
1)Move方法
用以移動(dòng)窗體或其它控件。
語(yǔ)法:object.MoveLeft,Top,Width,Height
說(shuō)明:只有l(wèi)eft參數(shù)是必須的。但是,要指定任何其它的參數(shù),必須先指定出現(xiàn)在語(yǔ)
法中該參數(shù)前面的全部參數(shù)。例如,如果不先指定left利top參數(shù),則無(wú)法指定width參
數(shù)。任何沒(méi)有指定的尾部的參數(shù)則保持不變。
例3-1運(yùn)行程序,單擊窗體Forml后,窗體向右移動(dòng)500個(gè)特維(特維是窗體默認(rèn)的
度量單位)。
分析:
程序運(yùn)行后,如果單擊窗體就執(zhí)行相應(yīng)的操作,所以應(yīng)編寫(xiě)窗體的單擊事件過(guò)程,可調(diào)
用窗體的Move方法實(shí)現(xiàn)。Move方法的第一個(gè)參數(shù)就是指定移動(dòng)對(duì)象后的水平位置,要求每
單擊窗體就將窗體在原來(lái)的基礎(chǔ)上向右移動(dòng)500個(gè)特維,窗體水平方向原來(lái)的位置是
Forml.Left,移動(dòng)后的位置是Forml.Left+500,所以可編寫(xiě)代碼如下:
PrivateSubFormClickO
Forml.MoveForml.Left+500
EndSub
注意:如果在調(diào)用對(duì)象的方法和屬性時(shí)省略對(duì)象名,系統(tǒng)默認(rèn)為是當(dāng)前窗體對(duì)象,所以
上述代碼還可以寫(xiě)成如下形式:
PrivateSubFormClickO
MoveLeft+500
EndSub
考慮一下:如果不用Move方法,是否可以實(shí)現(xiàn)上述功能?以下程序可以實(shí)現(xiàn)嗎?
PrivateSubFormClickO
Forml.Left=Forml.Left+500
EndSub
例3-2運(yùn)行程序,單擊窗體Forml后,窗體向下移動(dòng)500個(gè)特維(特維是窗體默認(rèn)的
度量單位)。
分析:
本例與例3T唯一不同就是窗體移動(dòng)的方向不同,垂直方向移動(dòng)的位置由Top屬性決定,
如果編寫(xiě)如下程序,考慮一下,是否正確?
PrivateSubForm_Click()
Forml.MoveForml.Top+500
EndSub
大家可以上機(jī)運(yùn)行一下,結(jié)果會(huì)發(fā)現(xiàn)單擊窗體后,窗體仍然是水平移動(dòng),而且只會(huì)移動(dòng)
一次,以后就不會(huì)再移動(dòng),為什么?
調(diào)用Move方法時(shí)要注意,它帶4個(gè)參數(shù),每個(gè)參數(shù)的作用是不同的,第一參數(shù)決定其
移動(dòng)后的水平位置,第二個(gè)參數(shù)決定其移動(dòng)后的垂直位置,要求水平位置不變,垂直方向向
下移動(dòng)500特維,所以正確的程序是:
PrivateSubForm_Click()
Forml.MoveForml.Left,Forml.Top+500
EndSub
參考上一個(gè)例子,考慮一下,如果不用Move方法,是否可以實(shí)現(xiàn)上述功能?考慮用窗
體的Left和Top屬性是否可以完成?
例3-3運(yùn)行程序,單擊窗體后,將窗體上的命令按鈕C1向下移動(dòng)500個(gè)特維,同時(shí)將
其高度和寬度變?yōu)樵瓉?lái)的兩倍。
分析:
Move方法是很多對(duì)象都可以執(zhí)行的公共方法,除了窗體,標(biāo)簽、文本框、命令按鈕等
都可以執(zhí)行Move方法。因?yàn)镸ove方法的第三個(gè)參數(shù)和第四個(gè)參數(shù)分別用來(lái)指定對(duì)象的寬度
和高度,即對(duì)象在移動(dòng)位置的同時(shí)還可以改變大小。原來(lái)命令按鈕C1的寬度是Cl.Width,
高度是CLHeight,所以移動(dòng)后寬度應(yīng)為Cl.Width*2,高度為CLHeight*2,所以可以編寫(xiě)
程序如下:
PrivateSubForm_Click()
Cl.MoveCl.Left,Cl.Top+500,Cl.Width*2,Cl.Height*2
EndSub
2)Print方法
Print方法主要用來(lái)在對(duì)象上輸出信息,除了窗體對(duì)象外,還可以在圖片框、立即窗口
等對(duì)象中輸出信息。在窗體的所有方法中,Print方法可能是用得最多的。
語(yǔ)法:object.Print[表達(dá)式列表]
例3-4以下語(yǔ)句運(yùn)行后在窗體上輸出內(nèi)容為行,分別為。
Print1,2,3
Print4;5;6
分析:
這里有幾個(gè)注意點(diǎn):
①Print方法前若缺省對(duì)象名,系統(tǒng)默認(rèn)為在窗體上輸出,所以這兩條語(yǔ)句都是在窗
體上輸出內(nèi)容。
②Print方法如果同時(shí)輸出多個(gè)數(shù)據(jù)項(xiàng),每個(gè)數(shù)據(jù)項(xiàng)之間可用逗號(hào)或分號(hào)分隔,注意
逗號(hào)分隔和分號(hào)分隔是有區(qū)別的,逗號(hào)分隔格式稱為分區(qū)格式,系統(tǒng)將顯示區(qū)域每14列劃
為一個(gè)分區(qū),第一個(gè)輸出項(xiàng)會(huì)從第一個(gè)分區(qū)輸出,后面的輸出項(xiàng)將依次從下一個(gè)分區(qū)開(kāi)始輸
出;分號(hào)分隔格式稱為緊湊格式,數(shù)據(jù)項(xiàng)之間是緊跟著輸出。
很顯然,這兩條語(yǔ)句中第一個(gè)是分區(qū)輸出格式,第二個(gè)是緊湊輸出格式,一共輸出兩行,
顯示結(jié)果如下圖3-3所示:
圖3-3
可以看出,第一行是分區(qū)輸出,每個(gè)數(shù)據(jù)項(xiàng)之間的間隔較大,每個(gè)分區(qū)間隔14歹人第
二行雖然是緊湊輸出,但數(shù)據(jù)也沒(méi)有連在一起顯示,這是因?yàn)閂B在輸出數(shù)值數(shù)據(jù)時(shí),系統(tǒng)
會(huì)自動(dòng)在每個(gè)輸出項(xiàng)后輸出一個(gè)空格作為分隔符,如果是正數(shù),還會(huì)在每個(gè)整數(shù)前輸出一個(gè)
空格作為符號(hào)位,所以每個(gè)數(shù)據(jù)項(xiàng)之間還有2個(gè)空格分隔。
例3-5以下語(yǔ)句運(yùn)行后在窗體上輸出內(nèi)容為行,分別為。
Print1,2,3;
Print4;5;6
分析:
這兩條語(yǔ)句與例2-4唯一的區(qū)別就在于第一條語(yǔ)句后有一個(gè)分號(hào)分隔符。如果Print
輸出項(xiàng)后沒(méi)有任何分隔符,那么語(yǔ)句執(zhí)行完系統(tǒng)會(huì)自動(dòng)換行,如果下面還有輸出語(yǔ)句,則該
語(yǔ)句從下一行開(kāi)始顯示;如果Print輸出項(xiàng)后有分隔符,不管是逗號(hào)還是分號(hào),都說(shuō)明該語(yǔ)
句執(zhí)行完后不會(huì)換行,下一個(gè)輸出語(yǔ)句還會(huì)從這一行的下一個(gè)位置顯示(下一個(gè)顯示位置取
決了最后分隔的是逗號(hào)還是分號(hào))。所以,這兩條語(yǔ)句在窗體上只顯示一行,顯示結(jié)果如下
圖3-4所示:
圖3-4
例3-6以下語(yǔ)句運(yùn)行后在窗體上輸出內(nèi)容為_(kāi)____行,分別為o
Print1;2;3
Printa;b;c
分析:
由于這三條Print語(yǔ)句末尾后都沒(méi)有分隔符號(hào),所以每輸完一行就會(huì)自動(dòng)換行,一共輸
出三行。其中第一行按緊湊格式輸出1、2、3,由于是數(shù)值數(shù)據(jù),每個(gè)數(shù)據(jù)項(xiàng)之間會(huì)有空格
分隔;第二行Print語(yǔ)句后沒(méi)有任何輸出項(xiàng),表示輸出一個(gè)空行;第三行按緊湊格式輸出3
個(gè)字符,由于系統(tǒng)在輸出字符數(shù)據(jù)時(shí)不會(huì)輸出前置空格和尾隨空格,所以這3個(gè)字符數(shù)據(jù)輸
出是連在一-起的。顯示結(jié)果如下圖3-5所示:
圖3-5
例3-7以下語(yǔ)句運(yùn)行后在窗體上輸出內(nèi)容為行,分別為。
Print1;2;3;
Printa;b;c
分析:
仍然是3條Print語(yǔ)句,和例2-6唯一的區(qū)別是第一條Print語(yǔ)句后有分號(hào)分隔符,因
為有分隔符號(hào),所以在輸完第一行1、2、3后不會(huì)換行,第二句Print語(yǔ)句會(huì)直接在第一行
末尾輸出空行,輸完后換行,所以運(yùn)行后會(huì)在窗體上輸出兩行內(nèi)容,第二條print語(yǔ)句的作
用相當(dāng)于取消第一條語(yǔ)句后的分隔符號(hào),起換行的作用,顯示結(jié)果如下圖3-6所示:
圖3-6
例3-8編寫(xiě)程序,要求運(yùn)行時(shí)單擊窗體后,在窗體上輸出如圖2-7的內(nèi)容。
圖3-7
分析:
程序要求運(yùn)行時(shí),當(dāng)窗體的單擊事件發(fā)生時(shí)實(shí)現(xiàn)上述功能,所以應(yīng)將代碼放在
FormClick事件過(guò)程中。
Print方法輸出信息時(shí)可以利用Tab函數(shù)或Spc函數(shù)實(shí)現(xiàn)定位輸出。在輸出項(xiàng)之前用Tab
函數(shù)定位,可將內(nèi)容在指定列輸出,而Spc函數(shù)主要用來(lái)輸出空格。如執(zhí)行語(yǔ)句
PrintTab(10);12;spc(5);15
將在當(dāng)前行的第10列輸出12,再輸出5個(gè)空格,然后輸出15。
注意:用Tab函數(shù)、Spc函數(shù)和輸出項(xiàng)配合時(shí),一般用分號(hào)分隔。
所以以上圖形可以編寫(xiě)程序如下:
PrivateSubForm_click()
PrintTab(5);
PrintTab(4);”***"
PrintTab(3);”*****"
PrintTab(2);”*******"
EndSub
若用Spc函數(shù),則程序可以寫(xiě)成:
PrivateSubForm_click()
PrintSpc(4);"*"
PrintSpc⑶;”***“
PrintSpc(2);”*****"
PrintSpc(l);”*******"
EndSub
3)Show-,Hide方法
這兩個(gè)方法分別用來(lái)顯示和隱藏Form對(duì)象。
說(shuō)明:
如果調(diào)用Show方法時(shí)指定的窗體沒(méi)有裝載,VisualBasic將自動(dòng)裝載該窗體。Hide
方法可以暫時(shí)將窗體隱藏,用戶將無(wú)法訪問(wèn)隱藏窗體上的控件,但并不會(huì)將窗體從內(nèi)存中卸
載。如果調(diào)用Hide方法時(shí)窗體還沒(méi)有加載,那么Hi加方法將加載該窗體但不顯示它。
可以利用這兩個(gè)方法在不同的窗體之間進(jìn)行切換。
例3-9編寫(xiě)程序,要求運(yùn)行時(shí)單擊窗體Forml后,將Forml隱藏,顯示窗體Form2。
分析:
程序中要用到兩個(gè)窗體,除了創(chuàng)建工程時(shí)默認(rèn)的窗體外,可以執(zhí)行“工程”一“添加窗
體”菜單項(xiàng)實(shí)現(xiàn)窗體Form2的添加。雖然這時(shí)工程中有兩個(gè)窗體,但工程執(zhí)行時(shí)只有一個(gè)啟
動(dòng)窗體,默認(rèn)為第一個(gè)創(chuàng)建的窗體。要實(shí)現(xiàn)上述功能,可以編寫(xiě)程序如下:
PrivateSubForm_click()
Forml.Hide
Form2.Show
EndSub
4)Cis方法
清除運(yùn)行時(shí)Form或PictureBox所生成的圖形和文本。
語(yǔ)法:object.Cis
說(shuō)明:
Cis將清除圖形和打印語(yǔ)句在運(yùn)行時(shí)所產(chǎn)生的文本和圖形,比如可以執(zhí)行Cis方法將窗
體上用Print方法輸出的內(nèi)容。
注意:設(shè)計(jì)時(shí)在Form中使用Picture屬性設(shè)置的背景位圖和放置的控件不受Cis影
響。調(diào)用Cis之后,object的CurrentX和CurrentY屬性復(fù)位為0?
3.窗體的常用事件
1)Load事件
這個(gè)事件發(fā)生在窗體被裝入內(nèi)存時(shí),且發(fā)生在窗體出現(xiàn)在屏幕之前。窗體出現(xiàn)之前,VB
會(huì)看一看Load事件里有沒(méi)有代碼,如果有,那么它先執(zhí)行這些代碼,再讓窗體出現(xiàn)在屏幕
上。
2)Click事件,Dblclick事件
這兩個(gè)事件在單擊或雙擊窗體時(shí)發(fā)生。不過(guò)單擊窗體里的控件時(shí),窗體的Click事件并
不會(huì)發(fā)生,VB會(huì)去看控件的Click事件里有沒(méi)有代碼。
3)Activate(活動(dòng)事件)與Deactivate(非活動(dòng)事件)
顯示多個(gè)窗體時(shí),可以從一個(gè)窗體切換到另一個(gè)窗體。每次激活一個(gè)窗體時(shí),發(fā)生
Activate事件,而前一個(gè)窗體發(fā)生Deactivate事件。
4)Resize事件
在窗體被改變大小時(shí)會(huì)觸發(fā)此事件。
4.窗體的控制
1)裝入或卸出窗體
要裝入或卸出窗體,用Load或Unload語(yǔ)句。
裝入窗體:LoadFormName
卸載窗體:UnLoadFormName
FormName變量是要裝入或卸出的窗體名。Load語(yǔ)句只是把窗體裝入內(nèi)存,并不顯示出
來(lái),要顯示窗體可以使用窗體的Show方法。
注意:卸載當(dāng)前窗體還可以執(zhí)行語(yǔ)句UnLoadMe,Me在VB中表示當(dāng)前窗體對(duì)象的關(guān)鍵
字。
2)End語(yǔ)句
End語(yǔ)句的功能是終止應(yīng)用程序的執(zhí)行,并從內(nèi)存卸載所有窗體。
三.常用控件
1.常用的標(biāo)準(zhǔn)控件的屬性、方法和事件
公共屬性:Name^Caption>Enabled、Fontsize^Height、Width、Index>Left、Top>
TabStop
公共方法:Move>Refresh、Setfocus(設(shè)置焦點(diǎn))
公共事件:Click>DblClick>LostFocus(失去焦點(diǎn))
2OTfextBox文本框
文本框用于接受用戶在文本框內(nèi)輸入內(nèi)容或顯示內(nèi)容,具體屬性和事件見(jiàn)下表3-5。
表3-5文本框常用屬性和事件
屬性、方法、
說(shuō)明
事件
Text屬性即用戶從文本框輸入的內(nèi)容
PasswordChar
設(shè)置口令時(shí)用的掩碼,如:用*代替實(shí)際輸入的內(nèi)容
屬性
MaxLength屬
最大長(zhǎng)度,缺省值是0,即可以輸入任意個(gè)字符
性
MultiLine屬為T(mén)rue時(shí)可以多行文本,為False時(shí)只能輸入一行
性文本
Alignment屬文本在框中的對(duì)齊方式:0=左對(duì)齊,1=右對(duì)齊,2=
性居中
Change事件當(dāng)框中的文本內(nèi)容發(fā)生變化時(shí)觸發(fā)該事件
LostFocus事
當(dāng)光標(biāo)離開(kāi)文本框時(shí)觸發(fā)該事件
件
控件的屬性通常會(huì)在上機(jī)考試中要求設(shè)置,這時(shí)候就要求根據(jù)題目的要求,知道應(yīng)該對(duì)
哪個(gè)屬性進(jìn)行設(shè)置。下面我們來(lái)看?個(gè)例子。
請(qǐng)根據(jù)以下各小題的要求設(shè)計(jì)VisualBasic應(yīng)用程序(包括界面和代碼)。
(1)在標(biāo)題為“文本框”、名稱為Forml的窗體上畫(huà)一個(gè)名稱為T(mén)extl的文本
框,無(wú)初始內(nèi)容,其dj、寬分別為2000、1800,可顯不多行,有小平談動(dòng)
條,并通過(guò)屬性窗口把文本框的字體樣式設(shè)置為“斜體”(如圖詼?zhǔn)?。
卷信時(shí)必須存放在考生文件夾下,工程文件名為sjtLvbp,窗體文件名
為sjtl.fririo
根據(jù)題目的要求,我們應(yīng)當(dāng)進(jìn)行以下步驟的操作:
A)設(shè)置窗體的Caption屬性為“文本框”
B)在窗體上放一個(gè)TextBox控件,設(shè)置其Text屬性為空,設(shè)置其Height屬性為2000,
Width屬性為1800,設(shè)置其MultiLine為T(mén)rue,設(shè)置ScrollBars為1
C)設(shè)置Font屬性中字型為斜體
例3-10編寫(xiě)程序,要求一運(yùn)行程序,在文本框Textl中輸入的每一個(gè)字符都顯示
為“*";單擊命令按鈕Commandl,則文本框中顯示真正的內(nèi)容;單擊命令按鈕Command2,
則文本框中顯示的每一個(gè)字符都顯示成“?北程序運(yùn)行界面分別見(jiàn)圖3-8、3-9和370。
圖3-8
圖3-9
言“Foral
圖3-10
分析:
要求一運(yùn)行程序就將在文木框Textl中輸入的每一個(gè)字符都顯示為"*",應(yīng)該在屬性
窗口中設(shè)置其PasswordChar屬性為“*"。兩個(gè)命令按鈕的事件過(guò)程如下:
PrivateSubCommand1Click()
Textl.PasswordChar=""'將PasswordChar設(shè)置為空串,將取消文本框的密碼屬
性
EndSub
PrivateSubCommand2_Click()
Textl.PasswordChar="?"
EndSub
2)Label標(biāo)簽
標(biāo)簽用于在窗體上添加文字說(shuō)明,具體屬性和事件見(jiàn)下表3-6?
表3-6標(biāo)簽常用屬性和事件
屬性、方法、事件說(shuō)明
Alignment屬性指明Caption文本的對(duì)齊方式:0二左對(duì)齊,1二右對(duì)齊,2二居中
自動(dòng)調(diào)節(jié)大小,為T(mén)rue時(shí)可根據(jù)文本大小自動(dòng)調(diào)整標(biāo)簽大小,
AutoSize屬性
為False時(shí)標(biāo)簽大小不能改變,過(guò)長(zhǎng)的文本被截掉
為T(mén)rue時(shí)可根據(jù)標(biāo)簽大小自動(dòng)換行(前提條件是AutoSize為
Wordwrap屬性
True)
下面我們來(lái)看一個(gè)例子。
請(qǐng)根據(jù)以下各小題的要求設(shè)計(jì)VisualBasic應(yīng)用程序(包括界面和代碼)。
Cl)在各鰲咨駕蘆軸翳5Z'第堂”的窗體上畫(huà)一個(gè)名稱為L(zhǎng)abell的標(biāo)簽,
樂(lè)簽的
2)標(biāo)簽可根據(jù)顯示內(nèi)容宣動(dòng)調(diào)整其大小匕
3)標(biāo)簽帶有援框,目棕譬內(nèi)容顯示為三號(hào)字。
運(yùn)行后的窗彳本如圖所不。
y4~?
薦蠢時(shí)必須存放在考生文件夾下,工程文件名為sjtl.vbp,窗體文件
名為sjtl.fririo
標(biāo)簽
I計(jì)算機(jī)等級(jí)考試
我們應(yīng)該完成以下兒個(gè)步驟。
A)設(shè)置窗體的Caption屬性為"標(biāo)簽"
B)在窗體上放一個(gè)Label控件,設(shè)置其Caption屬性為“計(jì)算機(jī)等級(jí)考試”
C)設(shè)置Label控件的AutoSize屬性為T(mén)rue
D)設(shè)置其BoderStyle屬性為1,設(shè)置Font屬性中的大小為三號(hào)字
3)ListBox列表框
列表框主要用于列出可供用戶選擇的項(xiàng)目列表,具體屬性和事件見(jiàn)下表3-7。
表3-7列表框常用屬性和事件
屬性、方法、事件說(shuō)明
用于保存列表內(nèi)容,訪問(wèn)形式:[對(duì)象名].List(列表項(xiàng)序號(hào)),
List屬性
列表項(xiàng)的序號(hào)由上到下依次為0、1、2、3……。
ListCount屬性列表項(xiàng)數(shù)目
列表項(xiàng)索引,其值為最后選中的列表項(xiàng)序號(hào),第一個(gè)為0,如果
Listindex屬性
未選中任何表項(xiàng),其值為-1。
列表項(xiàng)正文,其值為最后選中的列表項(xiàng)的文本,它與List
Text屬性
(Listl.Listindex)相同。
Columns屬性列表框顯示形式,取0時(shí)為一列顯示所有行,其他值為多列。
排序?qū)傩?為T(mén)rue時(shí),列表項(xiàng)按ASCII碼排序,為False時(shí),
Sort屬性
則不排序。
添加列表項(xiàng),使用格式:
Addltem方法[對(duì)象名.]Addltem〈列表項(xiàng)文本>[,插入位置序號(hào)]
若不指定位置,則插入到列表末尾。
Clear方法清除列表所有項(xiàng)目
刪除指定列表項(xiàng)內(nèi)容,格式:[對(duì)象名.]Removeitem刪除項(xiàng)序
Removeitem方法
號(hào)
下面我們來(lái)看一個(gè)例子。
在名稱為Forml的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)防兒童出生缺陷育兒知識(shí)科普講座
- 團(tuán)隊(duì)凝聚力培訓(xùn)
- 瑜伽消防知識(shí)培訓(xùn)課件
- 二零二五年度農(nóng)村土地流轉(zhuǎn)交易服務(wù)平臺(tái)建設(shè)合同2篇
- 行政年終述職匯報(bào)
- 陜西省延安市延長(zhǎng)縣2024-2025學(xué)年七年級(jí)上學(xué)期1月英語(yǔ)期末考試試卷(無(wú)答案)
- 高端服裝分揀包裝產(chǎn)業(yè)化項(xiàng)目可行性研究報(bào)告模板-立項(xiàng)拿地
- 2025年度社交網(wǎng)絡(luò)APP用戶增長(zhǎng)與活躍度提升合同3篇
- 湖南省張家界市桑植縣2024-2025學(xué)年七年級(jí)上學(xué)期地理期末試卷(含答案)
- 河北省承德市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)統(tǒng)編版階段練習(xí)((上下)學(xué)期)試卷及答案
- 2024年省宿州市“宿事速辦”12345政務(wù)服務(wù)便民熱線服務(wù)中心招考15名工作人員高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 2024年安徽省行政執(zhí)法人員資格認(rèn)證考試試題含答案
- 中國(guó)2型糖尿病運(yùn)動(dòng)治療指南 (2024版)
- 人教版初中九年級(jí)全冊(cè)英語(yǔ)單詞表
- 人教版小學(xué)二年級(jí)數(shù)學(xué)下冊(cè)數(shù)學(xué)口算、脫式、豎式、應(yīng)用題
- DZ∕T 0405-2022 無(wú)人機(jī)航空磁測(cè)數(shù)據(jù)采集技術(shù)要求(正式版)
- 會(huì)計(jì)業(yè)務(wù)培訓(xùn)方案(2篇)
- 楚天華通醫(yī)藥設(shè)備有限公司純化水設(shè)備介紹A32017年3月1日
- 投資合作備忘錄標(biāo)準(zhǔn)格式
- 職場(chǎng)吐槽大會(huì)活動(dòng)方案
- 《生物質(zhì)熱電聯(lián)產(chǎn)工程設(shè)計(jì)規(guī)范》
評(píng)論
0/150
提交評(píng)論