第二章 VB的界面設計
2.1 VB用戶(hù)界面設計基礎
1. 概述
界面的設計有兩步:先繪制控件,然后確定控件屬性。
繪制控件:在工具箱里單擊想畫(huà)的控件,在窗體里按下鼠標并拖曳,然后松開(kāi)鼠標即可。確定屬性:先選中控件,然后按F4鍵或單擊工具欄上的屬性窗口進(jìn)入屬性(Properties)窗口,再在屬性窗口中找到要設置的屬性并進(jìn)行設置。
2. 常用屬性的設置
(1)Name屬性
對象都有名字,計算機把名字看成對象于對象之間的根本差異,因此在同一窗體里不許出現重名的情況(除非這是一個(gè)控件數組),且名字不得超過(guò)40個(gè)字。
在簡(jiǎn)單的程序里,給控件命名不是很必要,完全可以使用控件Name屬性的缺省值。例如Text1。但在有幾十個(gè)控件的復雜窗體里,就很難區分它們。所以,VB推薦由三個(gè)小寫(xiě)字母的前綴和一個(gè)第一個(gè)字母為大寫(xiě)的描述性單詞組成的名字。例如cmdMyButton是一個(gè)命令按鈕(前綴是cmd)
推薦的前綴
對象
前綴
例子
確認框(Check Box)
chk
chkCareerChioce
組合框(Combo Box)
cbo
cboCrimesCommitted
命令鈕(Command Button)
cmd
cmdExit
數據庫控件(Data Control)
dat
datTopSecretInfo
目錄列表框(Directory List Box)
dir
dirTree
驅動(dòng)器列表框(Drive List Box)
drv
drvHardDisk
文件列表框(File List Box)
fil
filDocuments
窗體(Form)
frm
frm1040Tax
框架(Frame)
fra
fraGroupButtons
水平滾動(dòng)條(Horizontal Scroll Bar)
hsb
hsbTemperature
圖形(Image)
img
imgPrettyDrawing
標簽(Label)
lbl
lblFakeName
線(xiàn)(Line)
lin
linBorder
列表框(List Box)
lst
lstCandidates
菜單(Menu)
mnu
mnuHamAndEggs
選項鈕(Option Button)
opt
optStation101
圖形框(Picture Box)
pic
picPrettyPicture
幾何圖形(Shape)
shp
shpUpOrShipOut
文本框(Text Box)
txt
txtWarning
垂直滾動(dòng)條(Vertical Scroll Bar)
vsb
vsbMoneyRaised
(2)Caption屬性
Caption即標題,是可以在對象外觀(guān)上直接看見(jiàn)的文本,可以長(cháng)達255字符,包括空格和標點(diǎn)符號,比如一個(gè)叫cmdOk的命令鈕,它的Caption屬性就可以是“Ok”。 注意:并不是所有的對象都有此屬性,比如文本框、圖片框、線(xiàn)條等就沒(méi)有。
為按鈕設置熱鍵:在設置Caption屬性時(shí),在需要加下劃線(xiàn)的字母前加上 “&” 符號,例如 “&File”,輸出的就是“File”,這樣就可以通過(guò)按ALT鍵和標題上那個(gè)帶下劃線(xiàn)的字母來(lái)選取它了, 不必為此編任何代碼。
Name和 caption的比較:
1) Name是系統用來(lái)識別對象的,編程時(shí)需要用它來(lái)指代各對象;Caption是給用戶(hù)看的,提示用戶(hù)該對象的作用;
2) Name可以采用系統默認的名稱(chēng),但Caption應該根據實(shí)際情況改成意義明了的名詞;
3)所有對象都有Name,但不一定都有Caption;
(3)Top,Left屬性
這兩個(gè)屬性決定對象的位置。只有兩種情況需要在屬性窗口里設置這兩個(gè)屬性:第一種是用戶(hù)沒(méi)有鼠標,第二種是程序員需要十分精確地設定這兩個(gè)值。當選中對象,單擊并拖曳它的時(shí)候,便在修改這兩個(gè)值了。
(4)Height,Width屬性
這兩個(gè)屬性決定了對象的大小,當選中控件時(shí),它周?chē)霈F八個(gè)小黑方塊,把鼠標指向這些方塊,鼠標指針將變成一個(gè)雙向的箭頭,這時(shí)按下鼠標并拖曳它,即可改變控件的大小,也就改變了Height,Width屬性。
2.2 創(chuàng )建窗體
1. 窗體的屬性
(1) 常用屬性簡(jiǎn)介
屬性 名稱(chēng) 說(shuō)明
Name 窗體名稱(chēng) 系統識別窗體的標識名,一個(gè)窗體名必須以一個(gè)字母開(kāi)頭,可包含數字和下劃線(xiàn),但不能包含空格和標點(diǎn)符號。
Caption 窗體標題 出現在窗體標題欄中的文本內容
Icon 窗體圖標 這個(gè)屬性是用戶(hù)經(jīng)常要使用的一種屬性。當用戶(hù)的應用程序在工具條上最小化或在Windows桌面上變?yōu)橐粋€(gè)獨立應用程序時(shí),該屬性決定將采用何種圖標,窗體控制框里的圖標也由它決定。
BackColor 窗體背景色 可以從屬性框里彈出調色板,選擇所需要的顏色
ForeColor 窗體前景色 窗體上打印文字的顏色
BorderStyle 邊框風(fēng)格 這個(gè)屬性決定了窗體邊框的樣式,共有6種屬性值。改變窗體的BordrStyle屬性后,窗體在屏幕上沒(méi)有變化,它只在運行時(shí)才變?yōu)樗蟮臉幼印?div style="height:15px;">
Apearance 外形 這個(gè)屬性用來(lái)決定控件是否采用三維效果
ControlBox 控件按鈕控件按鈕 用來(lái)決定是否采用 控件框的屬性,僅在程序運行時(shí)才有效。
Font 字體 用來(lái)改變該窗體上顯示信息的字體、字型和字號,它控制著(zhù)直接在窗體上打印的文本顯示。
Visible 可見(jiàn)性 該屬性決定窗體是否可見(jiàn), 默認情況下是可見(jiàn)的。錯誤地改變其值是很危險的,窗體會(huì )從眼前消失,
WindowState 窗體狀態(tài) 指定窗體在運行時(shí)的三種狀態(tài):正常、最小化、最大化。
Enabled 活動(dòng)性 默認值為T(mén)rue,決定窗體能否被訪(fǎng)問(wèn)。
Left、Top、Height、Width 左邊距、頂邊距、高度、寬度 決定窗體在屏幕上的位置及窗體大小。
(2)設置屬性的方法
1)在設計態(tài)通過(guò)屬性窗口設置
直接在屬性窗口中選擇或輸入既可。
2)在程序代碼中改變屬性值
代碼中的格式為: 對象名 . 屬性 = 屬性值
例:Form1.BackColor=RGB(255,0,0)
2. 窗體的常用方法
(1)Hide方法
用以隱藏 MDIForm或 Form 對象,但不能使其卸載。
語(yǔ)法:object.Hide
object 所在處代表一個(gè)對象表達式,其值為“應用于”列表中的一個(gè)對象。如果省略object,則帶有焦點(diǎn)的窗體就認為是該 object。
說(shuō)明:
¨ 隱藏窗體時(shí),它就從屏幕上被刪除,并將其 Visible 屬性設置為 False。 用戶(hù)將無(wú)法訪(fǎng)問(wèn)隱藏窗體上的控件,但是對于運行中的 Visual Basic 應用程序,或對于通過(guò) DDE 與該應用程序通訊的進(jìn)程及對于 Timer 控件的事件,隱藏窗體的控件仍然是可用的。
¨ 窗體被隱藏時(shí),用戶(hù)只有等到被隱藏窗體的事件過(guò)程的全部代碼執行完后才能夠與該應用程序交互。
¨ 如果調用 Hide 方法時(shí)窗體還沒(méi)有加載,那么Hide 方法將加載該窗體但不顯示它。
(2)Move方法
用以移動(dòng) MDIForm、Form 或控件。
語(yǔ)法:object . Move left,top, width, height
Move方法的語(yǔ)法包含下列部分:
部分
描述
object
可選的。一個(gè)對象表達式,其值為“應用于”列表中的一個(gè)對象。如果省略 object,帶有焦點(diǎn)的窗體缺省為 object。
left
必需的。單精度值,指示 object 左邊的水平坐標 (x-軸)。
top
可選的。單精度值,指示 object 頂邊的垂直坐標 (y-軸)。
Width
可選的。單精度值,指示 object 新的寬度。
height
可選的。單精度值,指示 object 新的高度。
說(shuō)明:只有 left 參數是必須的。但是,要指定任何其它的參數,必須先指定出現在語(yǔ)法中該參數前面的全部參數。例如,如果不先指定 left 和 top 參數,則無(wú)法指定 width參數。任何沒(méi)有指定的尾部的參數則保持不變。
(3)Print 方法
在 Immediate 窗口中顯示文本。
語(yǔ)法:object . Print [outputlist]
Print 方法的語(yǔ)法具有下列對象限定符和部分:
部分
描述
object
必需的。對象表達式,其值為“應用于”列表中的對象。
outputlist
可選的。要打印的表達式或表達式的列表。如果省略,則打印一空白行。
outputlist 參數具有以下語(yǔ)法和部分:
{Spc(n) | Tab(n)} expressioncharpos
部分
描述
Spc(n)
可選的。用來(lái)在輸出中插入空白字符,這里,n 為要插入的空白字符數。
Tab(n)
可選的。用來(lái)將插入點(diǎn)定位在絕對列號上,這里,n 為列號。使用無(wú)參數的 Tab(n) 將插入點(diǎn)定位在下一個(gè)打印區的起始位置。
expression
可選。要打印的數值表達式或字符串表達式。
Charpos
可選。指定下個(gè)字符的插入點(diǎn)。使用分號 (;) 直接將插入點(diǎn)定位在上一個(gè)被顯示的字符之后。使用 Tab(n) 將插入點(diǎn)定位在絕對列號上。使用無(wú)參數的 Tab 將插入點(diǎn)定位在下一個(gè)打印區的起始位置。如果省略 charpos,則在下一行打印下一字符。
說(shuō)明:
¨ 可以用空白或分號來(lái)分隔多個(gè)表達式。
¨ 對系統指定的國別設置,用小數點(diǎn)分隔符將所有打印到 Immediate 視窗的數據正確格式化。關(guān)鍵字要用適用于主應用程序的語(yǔ)言輸出。
¨對于 Boolean 數據,或者打印 True或者打印 False。根據主機應用程序的地區設置來(lái)翻譯True 和 False 關(guān)鍵字。
¨使用系統能識別的標準短日期格式書(shū)寫(xiě) Date 數據。當日期或時(shí)間部件丟失或為零時(shí),只書(shū)寫(xiě)已提供的部件。
¨ 如果 outputlist 數據是 Empty,則無(wú)內容可寫(xiě)。但是,如果outputlist 數據是 Null,則輸出 Null。在輸出 Null 關(guān)鍵字時(shí),要把關(guān)鍵字正確翻譯出來(lái)。
¨ 要把錯誤數據作為 Error errorcode輸出。在輸出 Error 關(guān)鍵字時(shí),要把關(guān)鍵字正確翻譯出來(lái)。
¨如果在具有缺省顯示空間的模塊外使用此方法,則需要 object。例如,如果沒(méi)有指定對象就在標準模塊上調用此方法,則將導致錯誤發(fā)生,但是,如果在窗體模塊上進(jìn)行調用,則會(huì )在窗體上顯示“outputlist”。
注意: 因為Print 方法是按照字符比例進(jìn)行打印,所以字符數與字符所占據的寬度固定的列的數目無(wú)關(guān)。例如,像 “W” 這樣的寬字母占據的寬度超過(guò)一固定列寬,而像 "i" 這樣的窄字母占據的寬度則較小??紤]到要使用比平均字符更寬的空間,表列一定要留有足夠余地。另外,也可以使用固定間距的字體(像 Courier 字體)來(lái)確保每一字符均只占一列。
(4)PrintFrom方法
用以將 Form 對象的圖象逐位發(fā)送給打印機。
語(yǔ)法:object.PrintForm
說(shuō)明:PrintForm 將打印 Form 對象的全部可見(jiàn)對象和位圖。在繪制圖形時(shí),如果 AutoRedraw 屬性為 True,則在運行時(shí)PrintForm 將打印 Form 對象或 PictureBox控件上的圖形。
¨PrintForm 所使用的打印機是由操作系統的控制面板中的設置來(lái)決定。
(5) Refresh方法
強制全部重繪一個(gè)窗體或控件。
語(yǔ)法:object.Refresh
說(shuō)明:在下列情況下使用 Refresh 方法:
¨在另一個(gè)窗體被加載時(shí)顯示一個(gè)窗體的全部。
¨更新諸如 FileListBox 控件之類(lèi)的文件系統列表框的內容。
¨ 更新 Data 控件的數據結構。
Refresh 方法不能用于 MDI 窗體,但能用于 MDI 子窗體。不能在 Menu或 Timer 控件上使用 Refresh方法。
通常,如果沒(méi)有事件發(fā)生,窗體或控件的繪制是自動(dòng)處理的。但是,有些情況下希望窗體或控件立即更新。例如,如果使用文件列表框、目錄列表框或者驅動(dòng)器列表框顯示當前的目錄結構狀態(tài),當目錄結構發(fā)生變化時(shí)可以使用 Refresh 更新列表。
可以在 Data 控件上使用 Refresh方法來(lái)打開(kāi)或重新打開(kāi)數據庫(如果DatabaseName, ReadOnly, Exclusive 或 Connect 屬性的設置值發(fā)生改變),并能重建控件的 Recordset 屬性?xún)鹊?dynaset。
(6)Show方法
用以顯示 MDIForm 或 Form 對象。
語(yǔ)法:object.Show style, ownerform
Show 方法的語(yǔ)法包含下列部分:
部分
描述
object
可選的。一個(gè)對象表達式,其值為“應用于”列表中的一個(gè)對象。如果省略 object,則與活動(dòng)窗體模塊關(guān)聯(lián)的窗體缺省為 object。
Style
可選的。一個(gè)整數,它用以決定窗體是模式還是無(wú)模式 。如果 style 為 0,則窗體是無(wú)模式的;如果 style 為 1,則窗體是模式的。
Ownerform
可選的。字符串表達式,指出部件所屬的窗體被顯示。對于標準的Visual Basic 窗體,使用關(guān)鍵字 Me。
說(shuō)明:
¨如果調用 Show 方法時(shí)指定的窗體沒(méi)有裝載,VisualBasic 將自動(dòng)裝載該窗體。
¨當 Show 在顯示無(wú)模式窗體時(shí),隨后遇到的代碼則要執行。當Show 在顯示模式窗體 (modalform) 時(shí),則隨后的代碼直到該窗體被隱藏或卸載時(shí)才能執行。
¨當 Show 在顯示模式窗體時(shí),除了模式窗體中的對象之外不能進(jìn)行輸入(鍵盤(pán)或鼠標單擊)。對其它窗體進(jìn)行輸入前程序必須隱藏或卸載模式窗體(通常是處于響應用戶(hù)某些操作狀態(tài))。MDIForm 不能是形式的。
¨在模式窗體顯示時(shí),雖然應用程序中的其它窗體失效,但其它應用程序不會(huì )失效。
¨應用程序的啟動(dòng)窗體在其 Load 事件調用后會(huì )自動(dòng)出現。
下面的例子說(shuō)明如何使用ownerform 參數:
Private Sub cmdShowResults_Click()
' 顯示模式窗體 frmResults.
frmResults.Show vbModal, Me
End Sub
(7)Cls方法
清除運行時(shí) Form 或 PictureBox 所生成的圖形和文本。
語(yǔ)法:object.Cls
說(shuō)明:
¨Cls 將清除圖形和打印語(yǔ)句在運行時(shí)所產(chǎn)生的文本和圖形,而設計時(shí)在 Form 中使用 Picture 屬性設置的背景位圖和放置的控件不受Cls 影響。如果激活 Cls 之前 AutoRedraw屬性設置為 False, 調用時(shí)該屬性設置為 True,則放置在 Form 或 PictureBox中的圖形和文本也不受影響。 這就是說(shuō),通過(guò)對正在處理的對象的 AutoRedraw 屬性進(jìn)行操作,可以保持 Form 或 PictureBox 中的圖形和文本。
¨調用 Cls 之后,object 的 CurrentX 和 CurrentY 屬性復位為 0。
3.窗體的常用事件
(1) Load事件
這個(gè)事件發(fā)生在窗體被裝入內存時(shí),且發(fā)生在窗體出現在屏幕之前。窗體出現之前,Visual Basic會(huì )看一看Load事件里有沒(méi)有代碼,如果有,那么它先執行這些代碼,再讓窗體出現在屏幕上。
(2) Click事件,Dblclick事件
這兩個(gè)事件在單擊或雙擊窗體時(shí)發(fā)生。不過(guò)單擊窗體里的控件時(shí),窗體的Click事件并不會(huì )發(fā)生,VisualBasic會(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ǔ)句。
裝入窗體: Load formName
卸出窗體: UnLoad formName
FormName變量是要裝入或卸出的窗體名。 Load語(yǔ)句只是把窗體裝入內存,并不顯示出來(lái),要顯示窗體可以使用窗體的Show方法。
(2) 顯示或隱藏窗體
要顯示或隱藏窗體,用Show或Hide方法。若尚未裝入內存則先裝入再顯示。
顯示窗體: formName.show mode
隱藏窗體: formName.hide
FormName變量是窗體名,可選變元mode為0(缺省值)時(shí)窗體為非模態(tài),為1時(shí)窗體為模態(tài)。模態(tài)窗體完全占有應用程序控制權,不允許切換到別的應用程序,除非關(guān)閉!而非模態(tài)窗體則反之。
(3)END語(yǔ)句
END語(yǔ)句的功能是終止應用程序的執行,并從內存卸在所有窗體。語(yǔ)法是: END
2.3 控件
1. 常用控件介紹
(1)標準控件一
TextBox 文本框
Timer計時(shí)器
HscrollBar水平滾動(dòng)條
ListBox列表框
Pointer 指針
VScrollBar 垂直滾動(dòng)條
CheckBox 復選框
Label標簽
DirListBox 文件夾列表框
PictureBox圖片框
Line 線(xiàn)條
DriveListBox 驅動(dòng)器列表框
ComboBox 組合框
Shape 圖形
FileListBox文件列表框
OptionButton選項按鈕
Image圖象
Data 數據控件
CommandButton 命令按鈕
Frame 框架
OLE控件
(2) 常用控件的屬性、方法和事件
公共屬性
Name、Caption、Enabled、Fantsize、Height、Width、Index、Left、Top、 TabStop
公共方法
Move、Refresh、Setfocus(設置焦點(diǎn))
公共事件
Click、DblClick、LostFocus(失去焦點(diǎn))
控件名稱(chēng)
屬性、方法、事件
說(shuō)明
TextBox 文本框
(用于接受用戶(hù)在框內輸入的內容)
Text屬性
即用戶(hù)從文本框輸入的內容
PasswordChar屬性
設置口令時(shí)用的掩碼,如:用*代替實(shí)際輸入的內容
MaxLength屬性
最大長(cháng)度,缺省值是0,即可以輸入任意個(gè)字符
MultiLine屬性
為T(mén)rue時(shí)可以多行文本,為False時(shí)只能輸入一行文本
Alignment 屬性
文本在框中的對齊方式:0=左對齊,1=右對齊,2=居中
Chang事件
當框中的文本內容發(fā)生變化時(shí)觸發(fā)該事件
LostFocus事件
當光標離開(kāi)文本框時(shí)觸發(fā)該事件
Label 標簽(用于在窗體上添加文字說(shuō)明)
Alignment屬性
Caption文本的對齊方式:0=左對齊,1=右對齊,2=居中
WordWrap屬性
為T(mén)rue時(shí)可根據標簽大小自動(dòng)換行
AutoSize屬性
自動(dòng)調節大小,為T(mén)rue時(shí)可根據文本大小自動(dòng)調整標簽大小,為False時(shí)標簽大小不能改變,過(guò)長(cháng)的文本被截掉
ListBox 列表框
(用于列出可供用戶(hù)選擇的項目列表)
List屬性
用于保存列表內容,訪(fǎng)問(wèn): [對象名]. List(列表項序號)
列表項的序號由上到下依次為0、1、2、3……
ListCount屬性
列表項數目
ListIndex屬性
列表項索引,其值為最后選中的列表項序號,第一個(gè)為0,如果未選中任何表項,其值為-1。
Text屬性
列表項正文,其值為最后選中的列表項的文本,它與
List(ListIndex)相同。
Columns屬性
列表框顯示形式取0時(shí)為一列顯示所有行,其他值為多列。
Sort屬性
排序屬性,為T(mén)rue時(shí),列表項按ASCII碼排序,為False時(shí),則不排序。
AddItem方法
添加列表項,使用格式:
[ 對象名.] AddItem<列表項文本>[,插入位置序號]
若不指定位置,則插入到列表末尾。
Clear方法
刪除列表所有項目
RemoveItem方法
刪除列表項,使用格式:
[ 對象名 .] RemoveItem 刪除項序號
PictureBox 圖片框
Image 圖象(用來(lái)把圖形放入程序里)
AutoSize/Stretch
屬性
調整圖片框以適應圖象 / 調整圖象以適應外框
Picture屬性
決定控件中顯示的圖象
裝入圖形:
imgMyHand.Picture = LoadPicture ( “c:\graphics\hand.bmp” )
刪除圖形: imgMyHand.Picture = LoadPicture ( “ ” )
ComboBox 組合框(將列表框和文本框結合在一起)
Style屬性
外觀(guān)屬性:取0時(shí),系統創(chuàng )建一個(gè)帶下拉式列表框的組合框;為1時(shí),系統創(chuàng )建一個(gè)由文本框和列表框直接組合在一起的簡(jiǎn)單組合框,可以從列表框中選擇,也可以直接在文本框中輸入;為2時(shí),系統創(chuàng )建一個(gè)沒(méi)有文本框的下拉式列表框,單擊列表框上的按鈕才顯示文本框,用戶(hù)不能在文本框中輸入,只能在列表框中選擇。
Text 屬性
其值為用戶(hù)從列表框中選定的文本或直接輸入的文本。
AddItem方法
添加列表項,使用格式:
[ 對象名.] AddItem<列表項文本>[,插入位置序號]
若不指定位置,則插入到列表末尾。
Clear方法
刪除列表所有項目
RemoveItem 方法
刪除列表項,使用格式:
[ 對象名 .] RemoveItem 刪除項序號
CommandButton
命令按鈕
Cancel屬性
取消屬性,它為T(mén)rue時(shí), 按〖ESC〗即等于單擊此按鈕。
Default屬性
缺省屬性,它為T(mén)rue時(shí), 按回車(chē)鍵即等于單擊此按鈕。
Timer計時(shí)器
Interval屬性
兩次調用Timer事件的事件間隔,用于創(chuàng )建動(dòng)態(tài)效果。
Frame 框架
CheckBox 復選框
OptionButton選項按鈕
Alignment屬性
決定它們的對齊方式,0=左對齊,1=右對齊。
Value屬性
決定它們是否被選中的屬性
2. 常用控件的使用辨析
(1)文本框和標簽的區別:
文本框通常用于向計算機輸入信息,而標簽通常用于輸出信息。文本框是一個(gè)十分重要的控件,因為由復選框和選項按鈕向程序輸入的信息畢竟只有少數的幾條信息而已。標簽和文本框的區別很小,標簽可以看成是一個(gè)在運行時(shí)不能修改正文的文本框,因此標簽主要用于輸出信息。
(2) Label的AutoSize屬性和WordWrap屬性
¨ 為了使標簽具有垂直伸展和字換行處理,必須設置它的AutoSize屬性和WordWrap屬性同時(shí)為T(mén)rue。
¨ AutoSize屬性為False,WordWrap屬性為False時(shí),若標簽不夠高而Caption太長(cháng)時(shí),Caption將被切割掉。
¨ AutoSize屬性為False,WordWrap屬性為T(mén)rue時(shí),情況也如此。
¨ AutoSize屬性為T(mén)rue,WordWrap屬性為False時(shí),表示可以水平伸展,但只顯示一行信息。
(3) PictureBox和Image的Stretch屬性和AutoSize屬性
¨ Image只有Stretch屬性,而PictureBox只有AutoSize屬性。
¨ AutoSize屬性設為T(mén)rue,則PictureBox改變自己的大小來(lái)適應其中的圖形。
¨ Stretch屬性設為T(mén)rue,則Image中的圖形將改變自己的大小來(lái)適應外面的邊框。
(4)Frame 框架、CheckBox 復選框、OptionButton選項按鈕的區別:
¨ 復選框和選項按鈕用于向程序輸入信息, 框架用來(lái)對復選框和選項按鈕進(jìn)行分組。
¨ 復選框選中時(shí)會(huì )在小方框里打一個(gè)鉤,選項按鈕選中時(shí)會(huì )在小圓圈里點(diǎn)一個(gè)點(diǎn)。
3.控件使用舉例
例3、4
2.4 定制菜單
1. 菜單概述
Windows中的菜單一般由菜單條、菜單、菜單項、子菜單、彈出式菜單組成。
2. 普通菜單的設計
(1)給菜單命名
菜單標題和菜單命令也有Caption和Name屬性,設置了這兩個(gè)屬性就等于創(chuàng )建了菜單。Name是一個(gè)抽象名稱(chēng),Caption是屏幕上可見(jiàn)的,可在Caption里加入 “&” 來(lái)設置熱鍵。
(2) 增加和刪除菜單
在Menu Editor中部有三個(gè)命令鈕分別是下一個(gè)、插入、刪除。插入可用來(lái)增加新的菜單。在這三個(gè)鍵下面的Caption列表框里選中菜單項(這時(shí)它的底色就變成深藍色),單擊插入鍵,VisualBasic將上一個(gè)增亮菜單下推并增亮一空行,就可以輸入新菜單名和標題了。刪除鍵可用來(lái)刪掉菜單。選中要刪掉的菜單,單擊Delete鍵就可以刪掉它了。
(3) 移動(dòng)菜單標題
有四種情況:向上移動(dòng),向下移動(dòng),向左縮排,向右縮排,選中某一菜單標題,安上下箭頭,則這個(gè)菜單將上下移動(dòng)到你喜歡的位置上,這也決定了它在界面中的位置。如果按左右箭頭,情況則有所不同。由于菜單是分級的,所以,如果它沒(méi)有縮排,則它是一個(gè)菜單標題;如果它縮排一次,那么它將變成一個(gè)菜單命令;如果縮排兩次,那么它將成為一個(gè)子菜單命令。VB里可以總共設計四層子菜單。
(4) 設置分離條
分離條是指在菜單中將命令分組的線(xiàn),VB將分離條也看成一個(gè)菜單項,它也需要Caption和Name屬性,而且也有其它屬性,分離條與菜單項的區別是分離條的Caption屬性必須是連字號即減號。也就是,當設置了一個(gè)Caption屬性為 “-” 的菜單項時(shí),實(shí)際上就設置了一個(gè)分離條,分離條的名字可以是barFile1之類(lèi),以表明分離條的位置。
(5)菜單的各種簡(jiǎn)單屬性
在菜單編輯器里有許多確認框和一些文本框及一個(gè)下拉式的列表框,這些決定了菜單的各種屬性。
1) Checked 復選屬性
這個(gè)屬性值設置為真,將在菜單命令左邊產(chǎn)生一個(gè)打勾的確認標志。
2) Enabled有效屬性
各種各樣的用戶(hù)會(huì )產(chǎn)生千奇百怪的操作,在許多Edit菜單里都會(huì )有不同形式的讓菜單命令模糊的情況。Enabled屬性為真,則菜單命令是清晰的,Enabled屬性為假,則菜單命令是模糊的,這時(shí)用戶(hù)就不能選中這個(gè)菜單項了。
3) Visible 可見(jiàn)屬性
對暫時(shí)不用的菜單, 如果把Visible屬性設為假,則菜單根本不會(huì )出現在屏幕上。這樣做比把Enabled屬性設為假顯得更加干脆!
4) Index屬性
可以生成菜單命令數組,用索引號區分開(kāi)。例如向File菜單中添加一系列最近打開(kāi)的文件名。添加菜單可用Load方法。以上屬性可以在運行時(shí)設置,形成動(dòng)態(tài)的菜單的情況。
例如:
mnuUndo.Enabled = False
mnuProperty.Visible = False
還可以改變Caption等屬性。
mnuUndo.Caption = “Redo”
(6)為每個(gè)菜單項編寫(xiě)事件過(guò)程代碼
3. 生成彈出式菜單(或浮動(dòng)菜單)
幾乎每個(gè)Windows應用程序都提供彈出式菜單,用戶(hù)可以右鍵單擊窗體或控件取得這個(gè)菜單。彈出式菜單也屬于普通菜單,只是不固定在窗體上,而是可以在任何地方顯示。
彈出式菜單用PopupMenu方法調用。假設已經(jīng)用菜單編輯器生成了名為mnuedit的菜單,則可以在MouseUp事件加入如下代碼就可以生成彈出式菜單:
If Button = 2 Then PopupMenumnuedit
4.菜單設計示例
例 5
2.5 設計狀態(tài)條、工具欄、進(jìn)程條等
1. 創(chuàng )建狀態(tài)條
選中狀態(tài)條,按F4鍵進(jìn)入屬性窗口,雙擊(Custom)可以進(jìn)入主要的設置窗口SBarCtrl屬性窗口。
(1)選擇面板形狀
在SBarCtrl屬性窗口里選擇General標簽,在Style列表框里選擇多面板(缺省形式)或單面板簡(jiǎn)單文本形式。
(2)添加或刪除狀態(tài)條面板
在SBarCtrl屬性窗口里選擇Panels標簽,單擊Insert按鈕添加一個(gè)面板,或單擊Remove按鈕刪除一個(gè)面板。
(3)在單面板里顯示文本
在SBarCtrl屬性窗口里選擇General標簽,在SimpleText框里輸入想顯示在狀態(tài)條面板里的文本。用代碼顯示的方式是:
StatusBar1.SimpleText= "New string to appear"
(4)在多面板里顯示文本或圖形
1). 在SBarCtrl屬性窗口里選擇Panels標簽,用Index旁的按鈕選擇面板序號。
2). 在Text框里輸入想顯示在狀態(tài)條面板里的文本。
3). 如果想加入圖形,單擊Browse按鈕打開(kāi)一個(gè)圖形選擇對話(huà)框,選擇想加入的圖形,然后單擊打開(kāi)按鈕。
4). 最后按確定按鈕。
5). 用代碼顯示的方式是:StatusBar1.Panels(x).Text= "New string to appear"
6). 編寫(xiě)代碼
如果是一個(gè)單面板狀態(tài)條,當用戶(hù)單擊狀態(tài)條時(shí),只需用下面的事件過(guò)程來(lái)響應:
Private SubStatusBar1_Click()
End Sub
如果是一個(gè)多面板狀態(tài)條,就需要鑒別用戶(hù)單擊的是哪一個(gè)面板,可用下面的事件過(guò)程來(lái)識別用戶(hù)所單擊的面板:
Private SubStatusBar1_PanelClick(ByVal Panel As Panel)
Select CasePanel.Index
Case 1
'Codeto follow if user clicks the first panel
Case 2
'Codeto follow if user clicks the second panel
Case 3
'Codeto follow if user clicks the third panel
End Select
End Sub
2. 創(chuàng )建工具欄
1. 建立工具條
1).在工具箱里單擊工具條圖標,拖到窗體的任何位置,VisualBasic自動(dòng)將ToolBar移到頂部。
2).按F4鍵打開(kāi)屬性窗口。
3).雙擊(Custom),打開(kāi)ToolBar屬性窗口。
4). 選擇Buttons標簽。
5). 單擊Insert按鈕,Visual Basic就會(huì )在你的工具條上顯示一個(gè)空按鈕,現在為你的每一個(gè)按鈕重復這一步。
6). 單擊確定按鈕。
如果想把按鈕分組,首先生成一個(gè)分隔的按鈕,再在剛才提到的對話(huà)框里將這個(gè)按鈕的Style屬性改為3-Separator。
(2)為工具條增加圖畫(huà)
1). 在Visual Basic工具箱里單擊ImageList圖標,并將它拖到窗體的任何位置(位置不重要,因為它總是不可見(jiàn)的)。
2). 按F4打開(kāi)屬性窗口。
3). 雙擊(Custom),打開(kāi)ImageListCtrl屬性窗口。
4). 選擇Image標簽。
5). 單擊Insert Picture,在現在圖形的對話(huà)框里選擇想使用的位圖或圖標,然后單擊打開(kāi)按鈕。為每個(gè)想添加圖形的工具條按鈕重復此步。
6). 單擊確定按鈕。
7). 單擊工具條,按F4,雙擊(Custom),顯示ToolBar屬性對話(huà)框。
8). 選擇General標簽,在ImageList框里選擇剛才添加的ImageList控件。
9). 選擇Buttons標簽,單擊緊挨Index框的向左或向右箭頭以選擇一個(gè)按鈕序號。出現在工具條最左邊的按鈕序號為1。
10). 在Image框里輸入一個(gè)數,輸入為1,則顯示剛才ImageList控件里的第一個(gè)圖形,輸入為2,則顯示剛才ImageList控件里的第二個(gè)圖形。
11). 為每個(gè)按鈕重復第10步。
12). 單擊確定按鈕,現在VisualBasic就會(huì )在工具條上顯示精美的圖形了。
(3)為工具條添加文本信息
在ToolBar屬性對話(huà)框中選擇Buttons標簽,在Caption框里輸入想顯示在按鈕上的文本。
(4)添加ToolTips
ToolTips是一種當點(diǎn)到工具按鈕時(shí)彈出的小標簽。ToolTips很方便,可以告訴那些新手每個(gè)按鈕是干什么用的。在剛才提到的ToolBar屬性對話(huà)框中選擇Buttons標簽,在ToolTipText框里輸入想作為T(mén)oolTip的文本。
(5)編寫(xiě)代碼
雙擊工具條,以下面的格式輸入代碼就可以了:
Private SubToolbar1_ButtonClick(ByVal Button As Button)
SelectCase Button.Index
Case1
'Codeto follow if user clicks the first button
Case2
'Codeto follow if user clicks the second button
Case3
'Codeto follow if user clicks the third button
End Select
End Sub
3. 創(chuàng )建進(jìn)程條
進(jìn)程條的三個(gè)屬性:
(1). Min屬性代表進(jìn)程條全空時(shí)的值,缺省時(shí)為0。
(2). Max屬性代表進(jìn)程條全空時(shí)的值,缺省時(shí)為100。
(3) Value屬性代表進(jìn)程條當前的值(不用在屬性窗口里找這個(gè)屬性,它不出現在屬性窗口中,但它的確存在),它大于Min屬性,小于Max屬性。改變Value屬性的值將改變進(jìn)程條的進(jìn)度顯示。
為了了解進(jìn)程條的功能,在窗體里添加一個(gè)進(jìn)程條和一個(gè)命令鈕,雙擊命令鈕進(jìn)入代碼窗口,鍵入如下代碼:
Private SubCommand1_Click()
If ProgressBar1.Value< ProgressBar1.Max Then
ProgressBar1.Value= ProgressBar1.Value + 5
Else
ProgressBar1.Visible= False ‘當進(jìn)程條滿(mǎn)了的時(shí)候讓進(jìn)程條消失
EndIf
End Sub
4. 創(chuàng )建滑塊
(1). 選擇滑塊的外觀(guān)
1). Orientation屬性決定滑塊的方位,可以是垂直的或水平的滑塊。
2). TickStyle屬性決定滑塊標記的樣子。
3). TickFrequency屬性規定了沿著(zhù)滑塊的標記的間隔大小,缺省的狀態(tài)是1,表明每個(gè)可能值都出現標記,如果把值設置為3,則每三個(gè)可能值出現一個(gè)標記。
(2)滑塊的Min,Max,Value屬性
這三個(gè)屬性和進(jìn)程條的這三個(gè)屬性差不多,Min,Max表示滑塊的最小和最大值,Value表示進(jìn)程條的當前值。
(3)滑塊的LargeChange,SmallChange屬性
LargeChange規定了當用戶(hù)用鼠標單擊滑塊時(shí),滑塊可移動(dòng)的距離。SmallChange規定了用戶(hù)按左箭頭或右箭頭時(shí)滑塊的移動(dòng)距離。
5. 創(chuàng )建TabStrip頁(yè)框控件
(1)設置樣式
在TabStrip屬性窗口里選擇General標簽,在Style列表框里選擇Tabs或Buttons樣式。
(2)規定TabStrip的標題和ToolTips
1). 在TabStrip屬性窗口里選擇Tabs標簽,在Caption框里輸入標題。
2). 在TabStrip屬性窗口里選擇Tabs標簽,在ToolTipText框里輸入ToolTip。
(3)增減標簽總數
在TabStrip屬性窗口里選擇Tabs標簽,單擊Insert Tab按鈕增加標簽,單擊RemoveTab按鈕刪除標簽。
(4)在TabStrip上顯示圖形
1) 在窗體里拖入一個(gè)ImageList控件,
2) 按F4打開(kāi)屬性窗口。
3) 雙擊(Custom),打開(kāi)ImageListCtrl屬性窗口并選擇Image標簽。
4) 單擊Insert Picture,在現在圖形的對話(huà)框里選擇想使用的位圖或圖標,然后單擊打開(kāi)按鈕。為每個(gè)想添加圖形的Tab按鈕重復此步。
5) 單擊確定按鈕?,F在ImageList里存儲了需要的圖形。
6) 選擇TabStrip,進(jìn)入TabStrip屬性窗口并選擇General標簽,在ImageList列表框里選擇ImageList1。
7) 現在選擇Tabs標簽,單擊緊挨Index框的向左或向右箭頭以選擇一個(gè)Tab序號。在Image框里輸入一個(gè)數,輸入為1,則顯示剛才ImageList控件里的第一個(gè)圖形,輸入為2,則顯示剛才ImageList控件里的第二個(gè)圖形。
8) 單擊確定按鈕。
(5)用戶(hù)響應
可用類(lèi)似下面的代碼來(lái)識別用戶(hù)在哪一個(gè)項目上單擊。
Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.Index
Case 1
'Code to follow if user clicks the firsttab
Case 2
'Code to follow if user clicks the secondtab
Case 3
'Code to follow if user clicks the thirdtab
End Select
End Sub
(6)在TabStrip上放置其它控件
在用戶(hù)選擇了標簽后,TabStrip要求編寫(xiě)代碼來(lái)顯示或隱藏控件。下面的代碼上是一個(gè)TabStrip上有一個(gè)命令鈕和一個(gè)選項鈕的例子,當用戶(hù)選擇了第一個(gè)Tab時(shí),選項鈕出現,當用戶(hù)選擇了第二個(gè)Tab時(shí),命令鈕出現。
Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.Index
Case 1
Command1.Visible = False
Option1.Visible = True
Case 2
Command1.Visible = True
Option1.Visible = False
End Select
End Sub
2.6 Visual Basic的輸入機制
程序的基本操作就是數據的輸入,數據處理和數據的輸出。VisualBasic可中用于輸入的控件主要有:文本框Text Box、復選框Check Box、選項按鈕Option Button、列表框List Box、組合框Combo Box、滾動(dòng)條Scroll Bar、通用對話(huà)框控件。還有一個(gè)函數叫InputBox函數,也可用于數據的輸入。
1. 通過(guò)文本框輸入數據
只要取得文本框的Text屬性就可以對其進(jìn)行操作了。下面的代碼可將Text1文本框的正文變成大寫(xiě)輸出至Text2文本框。
Private Sub Form_Click ()
Text2.Text = UCase(Text1.Text)
End Sub
2. 通過(guò)復選框和選項按鈕輸入數據
只要檢測到Check Box和Radio Button的Value屬性值就可以知道它們是否被選上了。
3. 通過(guò)列表框和組合框輸入數據
(1) 列表框List Box和組合框Combo Box的不同
它們在Windows的Open,Save As對話(huà)框里最為常見(jiàn)。組合框又包括三種類(lèi)型,這三種類(lèi)型要在它的Style屬性里設置。列表框僅僅把可以選擇的項目列出來(lái),而組合框里有的類(lèi)型可以允許用戶(hù)輸入數據。它們的異同是:
名稱(chēng)
是否有下拉選項
是否允許用戶(hù)輸入
列表框
否
否
組合框類(lèi)型0
是
是
組合框類(lèi)型1
否
是
組合框類(lèi)型2
是
否
(2) 列表項目的增減
使用AddItem,RemoveItem語(yǔ)句可以增減列表項目。通常將項目增減的語(yǔ)句放入Form_Load事件里。
ListBoxName.AddItem item
ComboBoxName.AddItem item
item是新項目名稱(chēng),必須是字符串類(lèi)型,非字符串類(lèi)型可通過(guò)Str函數或Format函數來(lái)轉換。
列表框,組合框的每一項目都有一個(gè)Index值,第一個(gè)項目的Index值是0,第二個(gè)是1,依此類(lèi)推。刪除項目可通過(guò)刪除其Index值來(lái)實(shí)現。
ListBoxName. RemoveItem item
ComboBoxName.RemoveItem item
如:ListBoxName. RemoveItem 0則刪除了第一項,這時(shí)原來(lái)的第二項就變成了第一項。
可以在設計階段設定列表項目,方法是:
在屬性窗口選擇List屬性,將出現一個(gè)下拉列表,在列表中輸入第一項,按Ctrl+Enter,輸入第二項……,最后用Enter結束。
(3) 取得列表框/組合框的數據
可以通過(guò)取得Text屬性或通過(guò)取得ListIndex屬性來(lái)判斷哪一項被選擇了。ListIndex屬性的值也同樣是第一個(gè)為0,第二個(gè)為1……如:
If List1.Text = “Visual Basic”Then Instructions
If List1.ListIndex = 1 ThenInstructions
組合框有時(shí)允許用戶(hù)自己輸入數據,這時(shí)所輸入數據的ListIndex值為-1。
4. 通過(guò)滾動(dòng)條Scroll Bar取得數據
在Visual Basic的工具箱里有兩種滾動(dòng)條:一種是垂直的,一種是水平的,它們的差異無(wú)非是擺放的方向不一樣。
(1) 滾動(dòng)條的主要屬性及事件
1)Min,Max屬性
Min屬性決定滾動(dòng)條最左端或最頂端所代表的值。Max屬性決定滾動(dòng)條最右端或最下端所代表的值。
2)LargeChange,SmallChange屬性
SmallChange決定在滾動(dòng)條兩端的箭頭鈕上單擊時(shí)改變的值。LargeChange決定在滑塊上方或下方區域單擊時(shí)改變的值。
3)Value屬性
Value屬性代表當前滑塊所處位置的值,這個(gè)值由滑塊的相對位置決定。
4)Change事件
當滑塊位置發(fā)生變化時(shí)就引發(fā)了Change事件。
(2) 取得滾動(dòng)條的數據
滾動(dòng)條并不是一個(gè)數據輸入的好控件,因為無(wú)法從滾動(dòng)條上直接看出輸入的數據,但它的優(yōu)點(diǎn)是可以表示一定范圍里的相對位置。為了得到數據,只要取得滾動(dòng)條的Value屬性就可以了。
5. InputBox函數
InputBox函數提供一個(gè)簡(jiǎn)單的對話(huà)框供用戶(hù)輸入信息。在把其它版本的BASIC程序移植到Visual Basic時(shí),InputBox函數通常用來(lái)代替INPUT語(yǔ)句。這個(gè)對話(huà)框的樣子基本上是上面的樣子。
它的完整語(yǔ)法是:x = InputBox(prompt, title, default, xpos, ypos, helpfile, context)
其中,prompt是提示的字符串,這個(gè)參數是必須的。title是對話(huà)框的標題,是可選的。default是文本框里的缺省值,也是可選的。xpos,ypos決定輸入框的位置。helpfile,context用于顯示與該框相關(guān)的幫助屏幕。返回值 x 將是用戶(hù)在文本框里輸入的數據,x是一個(gè)字符串類(lèi)型的值。如果用戶(hù)按了Cancel鈕,則 x 將為空字符串。
6. 使用通用對話(huà)框控件
Windows應用程序里的Open對話(huà)框,Save As對話(huà)框在各個(gè)應用程序里看起來(lái)都是一樣的,通用對話(huà)框控件就可以提供這些對話(huà)框的標準功能。
(1) Open對話(huà)框及Save As對話(huà)框
打開(kāi)Open對話(huà)框使用ShowOpen方法,打開(kāi)Save As對話(huà)框使用ShowSave方法。
Private Sub mnuOpen_Click ()
On Error GoTo ErrorHandler
CommonDialog1.CancelError= True
CommonDialog1.Filter = "TextFiles (*.txt)|*.txt|Batch Files (*.bat)|*.bat|All Files (*.*)|*.*"
CommonDialog1.ShowOpen 'display Open common dialog box.
Call OpenFile(CommonDialog1.FileName)
ErrorHandler:
Exit Sub
End Sub
其中第三行決定了在文件格式類(lèi)型欄里出現的文件類(lèi)型。第五行需要一個(gè)自己的打開(kāi)文件的過(guò)程,這個(gè)過(guò)程需要的參數就是通用對話(huà)框返回的文件名。通用對話(huà)框的CancelError屬性設為T(mén)rue的話(huà),用戶(hù)單擊Cancel按鈕將產(chǎn)生一個(gè)錯誤信息程序,憑借這個(gè)信息程序可以檢測到用戶(hù)的放棄操作。
(2) Color對話(huà)框
下面的過(guò)程可用用戶(hù)選擇的顏色作為窗體的底色。
Private Sub mnuColor_Click ()
On Error GoTo CancelButton
CommonDialog1.CancelError= True
CommonDialog1.ShowColor
Form1.BackColor = CommonDialog1.Color
CancelButton:
Exit Sub
End Sub
(3) Fonts對話(huà)框
下面的過(guò)程可用字體對話(huà)框改變文本框的字體:
Private Sub mnuFonts_Click ()
On Error GoTo CancelButton
CommonDialog1.CancelError =True
CommonDialog1.Flags = cdlCFBoth' Flags property must be set to cdlCFBoth
CommonDialog1.ShowFont ' DisplayFont common dialog box.
Text1.FontName = CommonDialog1.FontName
Text1.FontSize = CommonDialog1.FontSize
Text1.FontBold = CommonDialog1.FontBold
Text1.FontItalic = CommonDialog1.FontItalic
Text1.FontUnderline = CommonDialog1.FontUnderline
Text1.FontStrikethru = CommonDialog1.FontStrikethru
Text1.ForeColor = CommonDialog1.Color
CancelButton:
Exit Sub
End Sub
代碼的第三行出現了通用對話(huà)框的Flags屬性決定了通用對話(huà)框的一些可選項,不過(guò)即使不賦值給Flags,代碼也一樣會(huì )按缺省的情況去執行的。
2.7 Visual Basic的輸出機制
作為輸出的對象,Visual Basic提供了標簽,文本框,窗體,圖片框(Picture Box)等用于輸出,而且Visual Basic里也有一堆命令、屬性涉及信息的輸出,較常用的有:MsgBox函數,Print方法,Cls方法,Tab函數,Format函數,FontName,FontSize,FontBold,FontItalic,FontStrikethru,FontUnderline屬性,CurrentX,CurrentY屬性等。
1. 通過(guò)MsgBox函數輸出
了解Windows應用程序的人都知道當用戶(hù)操作錯誤時(shí),應用程序往往打出一個(gè)消息框來(lái)提示用戶(hù)的錯誤,象這樣:
Dim Action As Integer
Action = MsgBox("單擊確定鍵將引爆此計算機!", vbYesNo+ vbCritical + vbDefaultButton2, "警告!")
If Action = 6 Then Explode
這個(gè)功能在Visual Basic里是通過(guò)MsgBox函數來(lái)實(shí)現的,這樣程序員就不必自己去畫(huà)一個(gè)消息框了。語(yǔ)法是:
Action = MsgBox (msg, type,title)
其中,msg是消息的內容,是一個(gè)字符串型的變量,type及title參數是可以省略的,type參數指定顯示的按鈕是什么及使用什么樣的圖標(這個(gè)參數往往讓新程序員思考幾分鐘),title參數指定消息框的標題。type參數的含義是:
數值
符號常量
意義
0
vbOKOnly
只顯示 Ok 按鈕
1
vbOKCancel
顯示 Ok Cancel 按鈕
2
vbAbortRetryIgnore
顯示 Abor Retry Ignore 按鈕
3
vbYesNoCancel
顯示 Yes No Cancel 按鈕
4
vbYesNo
顯示 Yes No 按鈕
5
vbRetryCancel
顯示 Retry Cancel 按鈕
16
vbCritical
Stop Sign對極其重要的問(wèn)題提醒用戶(hù)
32
vbQuestion
Question Mark增亮沒(méi)有危險的問(wèn)題
48
vbExclamation
Exclamation Mark強調警告用戶(hù)必須知道的事情
64
vbInformation
Information Mark可以使乏味的信息變得有趣
0
vbDefaultButton1
第一個(gè)按鈕缺省
256
vbDefaultButton2
第二個(gè)按鈕缺省
512
vbDefaultButton3
第三個(gè)按鈕缺省
例如:Action = MsgBox (“Are you girl?”, vbYesNo + vbQuestion, “Question”)。使用這個(gè)函數時(shí)VisualBasic將產(chǎn)生一個(gè)標題為Question,具有問(wèn)號和Yes,No按鈕的消息框。作為一個(gè)函數,本質(zhì)上還是要返回值的,MsgBox的返回值確定了用戶(hù)的選擇,程序可根據返回值做出相應的動(dòng)作。
返回值
含義
返回值
含義
1
選擇 Ok 按鈕
5
選擇 Ignore 按鈕
2
選擇 Cancel 按鈕
6
選擇 Yes 按鈕
3
選擇 Abort 按鈕
7
選擇 No 按鈕
4
選擇 Retry 按鈕
2. Print方法,Cls方法,Tab函數
(1) Print方法
Print 方法的語(yǔ)法是:object. Print expressionlist
object表示Print作用的對象,比如是Form或者是Picture Box,object是可以省略的,省略時(shí)的Print往往在窗體上輸出。expressionlist是輸出的內容,允許許多項數據的輸出,在數據間可以加入“,”或”;”。加入分號將使下一數據項緊挨著(zhù)上一數據項輸出。而加入逗號,則Visual Basic將下一數據項在下一打印區輸出,其實(shí)就是空了幾個(gè)空格后再輸出。兩個(gè)打印區之間有14個(gè)字符的寬度,其實(shí)這也很難衡量,比如14個(gè)“W”所占的寬度大概是14個(gè)“i”所占寬度的三倍多。幸好中國日本之類(lèi)的方塊字所占的寬度基本上是一樣的,所以較好處理一些。
(2) Tab函數
Tab函數只用在Print方法中,它用來(lái)移動(dòng)下一個(gè)字符到打印位置,這將省去數空格的功夫。語(yǔ)法是:Tab(column)
Tab函數將Visual Basic自定義的14字符寬的打印區扔到一邊,用自己的方式定義了新的靈活的打印區寬度。
(3) Cls方法
Cls也是一個(gè)古老的BASIC語(yǔ)句,原來(lái)它的作用總是把屏幕變成黑色,然后在左上角或左下角閃爍一個(gè)光標,VisualBasic里它的作用是清除繪圖語(yǔ)句和Print語(yǔ)句產(chǎn)生的文字和圖形。
語(yǔ)法是:object. Cls
object指清除的對象,可以是Form或Picture Box。如果object省略,通常Visual Basic都把當前的窗口作為Cls操作的對象。
3. Format函數
Format函數用于制定字符串或數字的輸出格式。語(yǔ)法是:x= Format (expression,fmt)
expression是所輸出的內容。fmt是指輸出的格式,這是一個(gè)字符串型的變量,這一項若省略的話(huà),那么Format函數將和Str函數的功能差不多。如:
語(yǔ)句
輸出
Format (2, “0.00”)
2.00
Format (.7, “0%”)
70%
Format (1140, “$#,##0”)
$1,140
簡(jiǎn)單地,fmt里的字符是這樣的:
字符
意義
字符
意義
0
顯示一數字,若此位置沒(méi)有數字則補0
.
小數點(diǎn)
#
顯示一數字,若此位置沒(méi)有數字則不顯示
,
千位的分隔符
%
數字乘以100并在右邊加上”%”號
- + $ ( )
這些字出現在fmt里將原樣打出
Format函數也可用來(lái)對時(shí)間進(jìn)行輸出。
fmt
輸出
fmt
輸出
m/d/yy
8/16/96
h:mm:ss a/p
10:41:29 p
d-mmmm-yy
16-August-96
h:mm
22:41
d-mmmm
16-August
h:mm:ss
22:41:29
mmmm-yy
august-96
m/d/yy h:mm
8/16/96 22:41
hh:mm AM/PM
10:41 PM
4. FontName,FontSize,FontBold,FontItalic,FontStrikethru,FontUnderline屬性
很明顯,這些屬性都與字體有關(guān),許多控件都有這些屬性。通常它們在設計階段可以雙擊font屬性來(lái)設置,運行期間可以直接設置。它們的意義是:
FontName
字體的名稱(chēng)
FontItalic
字體是否用斜體顯示
FontSize
字體的大小
FontStrikethru
字體是否有刪除線(xiàn)
FontBold
字體是否用粗體顯示
FontUnderline
字體是否有下劃線(xiàn)
如:Text1.FontBold= True,將把Text1文本框的FontBold屬性設為T(mén)rue。
5. 窗體,圖片框的CurrentX,CurrentY屬性
這兩個(gè)不可見(jiàn)的屬性確定了下一次打印或繪圖的水平及垂直坐標。如上面講的Print方法,當expression后使用 “,” 時(shí),Visual Basic將改變CurrentX,CurrentY值為下一打印區域開(kāi)始的值,于是,輸出便指向了下一個(gè)打印區域。而Cls方法將把操作對象的CurrentX,CurrentY的值設為(0,0)。
6. 通過(guò)標簽控件輸出
標簽控件的特點(diǎn)是運行時(shí)不能直接修改它,通常一個(gè)文本框旁邊都有一個(gè)標簽用來(lái)標識文本框。標簽的Autosize和WordWrap屬性是一對有用且令人困惑的屬性。