




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Visual Basic 屬性、方法和事件屬性、方法和事件概述 Visual Basic 的窗體和控件是具有自己的屬性、方法和事件的對象。可以把屬性看作一個對象的性質(zhì),把方法看作對象的動作,把事件看作對象的響應(yīng)。日常生活中的對象,如小 孩玩的氣球同樣具有屬性、方法和事件。氣球的屬性包括可以看到的一些性質(zhì),如它的直徑和顏色。其它一些屬性描述氣球的狀態(tài)(充氣的或未充氣的)或不可見的 性質(zhì),如它的壽命。通過定義,所有氣球都具有這些屬性;這些屬性也會因氣球的不同而不同。氣球還具有本身所固有的方法和動作。如:充氣方法(用氦氣充滿氣球的動作),放氣方法(排出氣球中的氣體)和上升方法(放
2、手讓氣球飛走)。所有的氣球都具備這些能力。氣球還有預(yù)定義的對某些外部事件的響應(yīng)。例如,氣球?qū)Υ唐扑氖录憫?yīng)是放氣,對放手事件的響應(yīng)是升空。如果能對氣球編程的話,Visual Basic 代碼將如下所示。其作用是設(shè)置氣球的屬性:Balloon.Color = RedBalloon.Diameter = 10Balloon.Inflated = True注意代碼的語法,首先是對象 (Balloon),接著是屬性 (Color),然后是賦值(Red)。重復(fù)這條語句,但是,換一個不同的值,就可以改變氣球的顏色。屬性也可以在程序設(shè)計(jì)階段在“屬性”窗口中設(shè)置。調(diào)用氣球的方法是這樣的:Balloon.In
3、flateBalloon.DeflateBalloon.Rise 5它的語法與屬性的語法相似,對象(一個名詞)后面緊跟著方法(一個動詞)。在第三個例子中有一個附加項(xiàng),稱為一個參數(shù),表示氣球上升的高度。一些方法有一個或多個參數(shù),它們對執(zhí)行的動作做進(jìn)一步的描述。氣球?qū)σ粋€事件的響應(yīng)如下所示:Sub Balloon_Puncture()Balloon.DeflateBalloon.MakeNoise "Bang"Balloon.Inflated = FalseBalloon.Diameter = 1End Sub 本例中代碼描述了當(dāng)刺穿事件發(fā)生時氣球的行為:調(diào)用 Deflate
4、方法,然后以 "Bang"(發(fā)出的聲響)為參數(shù)調(diào)用 MakeNoise 方法。因?yàn)闅馇蛞巡辉偈浅錃鉅顟B(tài),所以把 Inflated 屬性置為 False,并給 Diameter 屬性設(shè)置一個新值。實(shí)際上對氣球不能編程,但是,可以對 Visual Basic 的窗體或控件進(jìn)行編程。作為程序員,由您作主。您決定應(yīng)更改哪些屬性,調(diào)用哪些方法,對哪些事件作出響應(yīng),從而得到希望的外觀和行為。設(shè)計(jì)窗體窗體對象是 Visual Basic 應(yīng)用程序的基本構(gòu)造模塊,是運(yùn)行應(yīng)用程序時與用戶交互操作的實(shí)際窗口。窗體有自己的屬性、事件和方法用于控制其外觀和行為。設(shè)計(jì)窗體的第一步是設(shè)置它的屬性。這可
5、以在設(shè)計(jì)時在“屬性”窗口中完成,或者運(yùn)行時由代碼來實(shí)現(xiàn)。注意 設(shè)計(jì)時,即在 Visual Basic 環(huán)境中創(chuàng)建應(yīng)用程序的任何時刻,此時你可以操作窗體和控件,設(shè)置它們的屬性,對它們的事件編程。運(yùn)行時是指實(shí)際運(yùn)行應(yīng)用程序并與應(yīng)用程序進(jìn)行交互的時間。設(shè)置窗體屬性 窗體的許多屬性會影響窗體的外觀。Caption 屬性決定窗體標(biāo)題欄中顯示的文本;圖標(biāo)屬性設(shè)置在窗體最小化時顯示的圖標(biāo)。MaxButton 和 MinButton屬性決定窗體是否能最大化或最小化。通過改變 BorderStyle 屬性,可以控制窗體如何調(diào)整大小。Height 和 Width 屬性決定的窗體初始大小;Left 和 Top 屬性
6、根據(jù)屏幕的左上角確定窗體的位置。WindowState 屬性可以把窗體設(shè)成在啟動時最大化、最小化或正常大小。Name 屬性設(shè)置窗體的名稱,在代碼中用這個名稱引用該窗體。首次在工程中添加窗體時,該窗體的名稱被缺省為 Form1;添加第二個窗體,其名稱被缺省為 Form2,以此類推。最好給 Name 屬性設(shè)置一個有實(shí)際意義的名稱,如給一個條目窗體命名為 "frmEntry"。熟悉這些窗體屬性,最好的辦法是實(shí)踐。在“屬性”窗口(圖 3.3)中更改窗體的一些屬性,然后運(yùn)行該應(yīng)用程序并觀察修改的效果。如果想詳細(xì)了解每個屬性,可以選擇該屬性并按 F1 鍵查看聯(lián)機(jī)幫助。窗體事件和方法窗體
7、作為對象,能夠執(zhí)行方法并對事件作出響應(yīng)。無論是因?yàn)橛脩艚换ィ€是通過代碼調(diào)整窗體的大小,都會觸發(fā)一個 Resize事件。當(dāng)窗體尺寸變化時,允許您在窗體上進(jìn)行移動控件或調(diào)整控件大小等操作。 每當(dāng)一個窗體變成活動窗體時,就會產(chǎn)生一個 Activate 事件;當(dāng)另一個窗體或應(yīng)用程序被激活時,就會產(chǎn)生 Deactivate 事件。這些事件對初始化或結(jié)束窗體行為十分方便。例如,在 Activate 事件中,可以編寫代碼突出顯示一個特定文本框中的文本;在 Deactivate 事件中,可以把更改保存到一個文件或數(shù)據(jù)庫中。要使一個窗體可見,可調(diào)用 Show 方法:Form2.Show調(diào)用 Show 方法與設(shè)
8、置窗體 Visible 屬性為 True 具有相同的效果。窗體的許多方法都調(diào)用文本或圖形。Print、Line、Circle 和 Refresh 方法可用于直接在窗體表面上寫和畫。這些方法和更多的方法將在第十二章“使用文本和圖形”中詳細(xì)討論。詳細(xì)信息 關(guān)于窗體的詳細(xì)信息,請參閱第六章“創(chuàng)建用戶界面”中的“再論窗體”。單擊按鈕執(zhí)行操作使用戶與應(yīng)用程序交互的最簡便的方法是給用戶提供一個按鈕。可以用Visual Basic 提供的 CommandButton 控件,或利用包含圖形的 Image 控件,如一個圖標(biāo),來創(chuàng)建自己的“按鈕”。使用 CommandButton 大多數(shù) Visual Basic
9、 應(yīng)用程序都有 CommandButton,使用戶通過簡單的敲擊按鈕來執(zhí)行操作。當(dāng)用戶選中按鈕時,不僅會執(zhí)行相應(yīng)操作,還會使該按鈕看上去象被按下并釋放一樣。無論 何時,只要用戶單擊按鈕,就會調(diào)用 Click 事件過程。將代碼寫入 Click 事件過程,執(zhí)行想要執(zhí)行的動作。在程序執(zhí)行時,有多種方法可以選中 CommandButton :用鼠標(biāo)單擊按鈕。按 TAB 鍵把焦點(diǎn)移到相應(yīng)按鈕上,然后按 SPACE 鍵或 ENTER 鍵選中該按鈕。參閱本章后面的“焦點(diǎn)概述”。按 CommandButton 的快捷鍵(ALT +下劃線的字符)。在代碼中設(shè) CommandButton 的 Value 屬性為
10、True。 cmdClose.Value = True在代碼中調(diào)用 CommandButton 的 Click 事件。 cmdClose_Click 如果該 CommandButton 是窗體的缺省命令按鈕,既使將焦點(diǎn)移到其它不是 CommandButton 的控件上,按下回車鍵也會選中該按鈕。在設(shè)計(jì)時,通過設(shè)置某按鈕的 Default 屬性為 True ,指定它為窗體的缺省CommandButton 。如果該 CommandButton 是窗體的缺省的取消按鈕,即使把焦點(diǎn)移到其它控件上,也能通過按 ESC 鍵選中該按鈕。在設(shè)計(jì)時,通過設(shè)置某按鈕的 Cancel 屬性為 True,指定它為窗體
11、的缺省的取消按鈕。 所有這些操作都使 Visual Basic 調(diào)用 Click 事件過程。“測試按鈕”應(yīng)用程序利用 Caption 屬性可以在按鈕上顯示文字,告訴用戶該按鈕的功能。在圖3.4 中,在控件示例應(yīng)用程序的測試按鈕范例中包含一個 Caption 屬性為"Change Signal" 的 CommandButton(此例的工作為Controls.vbp 示例應(yīng)用程序中的 Buttons.frm)。注意,S 是這個按鈕的快捷鍵,用一條下劃線表示。在 Caption 屬性的正文內(nèi)插入一個 (&) 符號,將使得此符號后面的字符成為該按鈕的快捷鍵(例如,Chang
12、e &Signal)。用戶單擊 CommandButton,將執(zhí)行該 CommandButton 的 Click 事件過程中的代碼。在這個范例中,每次單擊按鈕,將變換一個不同的交通燈圖標(biāo)。詳細(xì)信息 關(guān)于 CommandButton 的屬性的詳細(xì)信息,請參閱第七章“使用Visual Basic 的標(biāo)準(zhǔn)控件”。用于顯示和輸入文本的控件Label 和 TextBox 控件是用于顯示和輸入文本的。讓應(yīng)用程序在窗體中顯示文本時使用 Label,允許用戶輸入文本時用 TextBox。Labels 中的文本為只讀文本,而 TextBox 中的文本為可編輯文本。可由用戶編輯的文本,例如一個順序條目Te
13、xtBox字段或一個密碼框 只能顯示的文本,例如在窗體中標(biāo)識一個Label字段或給用戶顯示指令Labels 和 TextBoxes 將在以下部分討論:用 Label 顯示文本(vbconUsingLabels)使用 Label 控件的基本知識。使用 TextBox(vbconWorkingWithTextBox)使用 TextBox 的基本知識。用 Label 顯示文本 Label 控件顯示的文本用戶不能直接修改。如 TextBox 和 ScrollBar 這些沒有自己的 Caption 屬性的控件,可以用 Label 標(biāo)識。在 Label 中實(shí)際顯示的文本是由 Caption 屬性控制的,該
14、屬性可以在設(shè)計(jì)時在“屬性”窗口中設(shè)置或在運(yùn)行時用代碼賦值。在缺省情況下,標(biāo)題是 Label 控件中唯一的可見部分。但是,如果把BorderStyle 屬性設(shè)成 1(可以在設(shè)計(jì)時進(jìn)行),那么 Label 就有了一個邊框,看起來像一個 TextBox。還可以通過設(shè)置 Label 的 BackColor、BackStyle、ForeColor 和 Font 屬性來,改變 Label 的外觀。改變 Label 尺寸以適應(yīng)其內(nèi)容設(shè)計(jì)時可在“屬性”窗口中指定單行 Label 的標(biāo)題。但是如果要輸入一個較長的或在運(yùn)行時可能變化的標(biāo)題,該怎么辦呢?Label 提供了兩種屬性:AutoSize 和 WordWr
15、ap,用于幫助您改變控件尺寸以適合較長或較短的標(biāo)題。AutoSize 屬性決定控件是否自動改變尺寸以適應(yīng)其內(nèi)容。如該屬性設(shè)為True,Label 就會根據(jù)其內(nèi)容進(jìn)行水平方向變化,如圖 3.5 所示。WordWrap 屬性使 Label 根據(jù)其內(nèi)容進(jìn)行垂直方向變化,而保持其寬度不變,如圖3.6 所示。本例的工作版,請參閱應(yīng)用程序示例 Controls.vbp 中的 WordWrap.frm。注意 如果在 Controls.vbp 中運(yùn)行AotoSize示例,就會發(fā)現(xiàn)為了同時使用 WordWrap,必須兩個復(fù)選框都選中。這是因?yàn)椋胧?Label 的WordWrap 屬性起作用,就必須設(shè)置 Au
16、toSize 為 True。只有在一個單字的寬度超過控件的當(dāng)前寬度時,Label 的寬度才會增加。詳細(xì)信息 關(guān)于 Label 控件屬性的詳細(xì)信息,請參閱第七章“使用 VisualBasic 的標(biāo)準(zhǔn)控件”。使用 Text BoxesTextBox 是一種通用控件,可以由用戶輸入文本或顯示文本。除非把TextBox 的 Locked 屬性設(shè)為 True,否則不能用 TextBox 顯示不希望用戶更改的文本。TextBox 中顯示的實(shí)際文本是受 Text 屬性控制的。Text 屬性可以用三種方式設(shè)置:設(shè)計(jì)時在“屬性”窗口進(jìn)行、運(yùn)行時通過代碼置或在運(yùn)行時由用戶輸入。通過讀 Text 屬性能在運(yùn)行時檢索
17、 TextBox 的當(dāng)前內(nèi)容。多行 Text Box 和 Word WrapTextBox 在缺省情況下只顯示單行文本,且不顯示 ScrollBar。如果文本長度超過可用空間,則只能顯示部分文本。通過設(shè)置 MultiLine 和 ScrollBars兩種屬性(只能在設(shè)計(jì)程序時設(shè)置),可以改變 TextBox 的外觀和行為。注意 不要把 ScrollBars 屬性與 ScrollBar 控件混淆,ScrollBar 控件并不屬于 TextBox,它具有自己的屬性集。 把MultiLine屬性設(shè)為True,可以使 TextBox 在運(yùn)行時接受或顯示多行文本。只要沒有水平方向ScrollBar,多行
18、TextBox 中的文本會自動按字換行。ScrollBars 屬性的缺省值被設(shè)置為0(None)。自動按字換行省去用戶在行尾插入換行符的麻煩。當(dāng)一行文本已超過所能顯示的長度時,TextBox自動將文本折回到 下一行顯示。在設(shè)計(jì)時,不能在“屬性”窗口輸入換行符。在過程中,可以通過插入一個回車加上換行符(ANSI 字符 13 和 0)來產(chǎn)生一個行斷點(diǎn)。也可以用常量 vbCrLf 插入一個回車與換行符組合。例如,下面的事件過程是在加載窗體時,把兩行文本放入一個多行 TextBox (Text1) 中的示例。Sub Form_Load ()Text1.Text = "Here are two
19、 lines" _& vbCrLf & "in a text box"End Sub使用 TextBox 中的文本利用 TextBox 的 SelStart、SelLength 和 SelText 屬性,可以控制 TextBox的插入點(diǎn)和選擇行為。這些屬性僅能在運(yùn)行時使用。當(dāng)一個 TextBox 首次得到焦點(diǎn)時,TextBox 缺省的插入點(diǎn)和光標(biāo)位置在文本的最左邊。用戶可以用鍵盤和鼠標(biāo)移動它們。當(dāng) TextBox 失去焦點(diǎn)而后再得到時,插入點(diǎn)位置與用戶最后設(shè)置的位置一樣。 在有些情況下,它可能與用戶設(shè)置不一致。如:在字處理應(yīng)用程序中,用戶會希望新字
20、符出現(xiàn)在已有文本后面;在數(shù)據(jù)項(xiàng)應(yīng)用程序中,用戶會希望他的輸入替 換原有條目。使用 SelStart 和 SelLength 屬性,用戶可以根據(jù)需要改變 TextBox 的行為。SelStart 屬性是一個數(shù)字,指示文本串內(nèi)的插入點(diǎn),其中 0 表示最左邊的位置。如果 SelStart 屬性值大于或等于文本中的字符數(shù),那么插入點(diǎn)將被放在最后一個字符之后,如圖 3.7 所示。該例子的工作版,請參閱應(yīng)用程序示例 Controls.vbp 中的 Text.frm。SelLength 屬性是一個設(shè)置插入點(diǎn)寬度的數(shù)值。把SelLength設(shè)為大于 0 的值,會選中并突出顯示從當(dāng)前插入點(diǎn)開始的SelLengt
21、h個字符。圖3.8 顯示選擇的性能。如果有一段文本被選中,此時用戶鍵入的 文字將替換被選中的文本。有些情況下,也可以用粘貼命令用新文本替換原有的文本。 SelText 屬性是一串文本,可以在運(yùn)行時給它賦值以替換當(dāng)前選中的文本。如果沒有選中的文本, SelText 將在當(dāng)前插入點(diǎn)插入文本。詳細(xì)信息 關(guān)于 TextBox 控件的屬性的詳細(xì)信息,請參閱第七章“使用Visual Basic 的標(biāo)準(zhǔn)控件”。詳細(xì)信息 關(guān)于 TextBox 控件的屬性的詳細(xì)信息,請參閱第七章“使用Visual Basic 的標(biāo)準(zhǔn)控件”。為用戶提供選擇的控件大多數(shù)應(yīng)用程序需要向用戶提供選擇,如簡單的“Yes/No”選項(xiàng)、或者
22、從包含成百個可能性的列表中進(jìn)行選擇。Visual Basic 包含幾種用于提供選擇的標(biāo)準(zhǔn)控件。下列表格總結(jié)了這些控件及其用途。用 CheckBox 選擇單個選項(xiàng) CheckBox 表明一個特定的狀態(tài)是選定 (on) 還是清除 (off)。在應(yīng)用程序中使用 CheckBox 為用戶提供了“True/False”或“yes/no”的選擇。因?yàn)镃heckBox 彼此獨(dú)立工作,所以用戶可以同時選擇任意多個 CheckBox。例如,在圖 3.9 中,可同時選定粗體和斜體。 CheckBox 應(yīng)用程序 這個例子使用一個 CheckBox 來決定文本用普通字體還是用斜體字顯示。關(guān)于此例的工作版本,請參閱應(yīng)用
23、程序示例 Controls.vbp 中的 Check.frm。如圖 3.10 所示,此應(yīng)用程序有一個 TextBox,一個 Label,一個CommandButton 和兩個 CheckBox。下表列出了應(yīng)用程序中的對象的屬性設(shè)置。 選定粗體或斜體時,CheckBox 的 Value 屬性值設(shè)置為 1 ,不選定時為 0。缺省 Value 值為 0,所以除非改變 Value 屬性值,否則第一次顯示時不會選定 CheckBox。可以用常量 vbChecked 和 vbUnchecked 表示數(shù)值 1 和0。check box 應(yīng)用程序中的事件 當(dāng)單擊 CheckBox 時,會發(fā)生 CheckBox
24、 的 Click 事件。此事件過程測試是否選定 CheckBox(即是否 Value = vbChecked)。如果選定,通過設(shè)置 Font對象的 Bold 或 Italic 屬性,將文本轉(zhuǎn)換為粗體或斜體;該 Font 對象是由TextBox 的 Font 屬性返回的。Private Sub chkBold_Click ()If ChkBold.Value = vbChecked Then'如果選定。txtDisplay.Font.Bold = TrueElse'如果沒有選定。txtDisplay.Font.Bold = False End IfEnd SubPrivate S
25、ub chkItalic_Click ()If ChkItalic.Value = vbChecked Then'如果選定。txtDisplay.Font.Italic = TrueElse'如果沒有選定。txtDisplay.Font.Italic = FalseEnd IfEnd Sub用選項(xiàng)按鈕進(jìn)行選項(xiàng)分組選項(xiàng)按鈕表示給用戶一組兩個或更多的選擇。但是,不同于 CheckBox,選項(xiàng)按鈕總是作為一組的組成部分工作的;因此,選擇一個選項(xiàng)按鈕就會立即清除該組中的其它按鈕。定義一個選項(xiàng)按鈕組,告訴用戶“這是一組選擇,從中選一個,而且只選一個”。例如,在圖 3.11 所示的選項(xiàng)按鈕
26、組中,用戶只能在三個選項(xiàng)按鈕中選擇一個。創(chuàng)建選項(xiàng)按鈕組直接放在一個窗體中(也就是不在 Frame 或 PictureBox 中)的所有的選項(xiàng)按鈕構(gòu)成一組。如果想創(chuàng)建別的選項(xiàng)按鈕組,必須將其中一些選項(xiàng)按鈕組放到 Frame 或 PictureBox 中去。 所有在給定的 Frame 中的選項(xiàng)按鈕,組成一個獨(dú)立的組,在 PictureBox 中的所有選項(xiàng)按鈕也是如此。用這種方法生成一個獨(dú)立的組時,總是要先畫好一個 Frame 或 PictureBox ,然后,將選項(xiàng)按鈕畫到里面。圖 3.12 顯示了一個具有兩個選項(xiàng)按鈕組的窗體。在 Frame 中畫了一組選項(xiàng)按鈕后,用戶只能在組內(nèi)選擇一個選項(xiàng)按鈕。
27、要在 Frame 中為控件分組,請按照以下步驟執(zhí)行:1. 在“工具箱”中選擇 Frame 控件,并在窗體上畫出 Frame。2. 在“工具箱”中選擇 OptionButton 控件,并在 Frame 內(nèi)畫出控件。3. 如果還想在 Frame 中增加選項(xiàng)按鈕,重復(fù)步驟 2。先畫 Frame ,再在 Frame 上畫每個控件,這樣移動 Frame 時控件會一起移動。如果將已經(jīng)存在的控件移到 Frame 上,此控件不會和 Frame 一起移動。注意 如果將已存在的控件分組到一個 Frame 中去,可以選擇這些控件,然后剪貼到 Frame 或 Picture 控件上去。控件的容器當(dāng)控件是獨(dú)立的對象時,
28、窗體和控件之間存在著某種父子關(guān)系。圖 3.12 表明 選項(xiàng)按鈕怎樣才能包含在一個窗體或一個 Frame 控件中。 要理解容器的概念,首先要把所有的控件都想象為所在窗體的孩子。實(shí)際上,大多數(shù)控件都支持只讀 Parent 屬性,它的值就是控件所在的窗體。作為孩子,控件決定其在父窗體上的位置。控件的 Left 屬性和 Top 屬性是相對父窗體而言,且控件不能移出父窗體的邊界。移動容器的同時也移動了控件,因此控件與容器的相對位置不變(即控件的 Left 屬性和 Top 屬性不變)。選定或禁止選項(xiàng)按鈕一個選項(xiàng)按鈕可以用以下方法選擇:1.在運(yùn)行期間用鼠標(biāo)單擊選項(xiàng)按鈕。2.用Tab鍵定位到選項(xiàng)按鈕組,然后在
29、組內(nèi)使用方向鍵(箭頭鍵)定位選項(xiàng)按鈕。3.用代碼將它的 Value 屬性設(shè)置為 True:optChoice.Value = True4.使用在 Label 的標(biāo)題中指定的快捷鍵。5.要使某個按鈕成為選項(xiàng)按鈕組中的缺省按鈕,只要在設(shè)計(jì)時將其 Value屬性設(shè)置成 True。它保持被選中狀態(tài),直到用戶選擇另一個不同的選項(xiàng)按鈕或用代碼改變它。要禁用選項(xiàng)按鈕,將其 Enabled 屬性設(shè)置為 False。程序運(yùn)行時,若此選項(xiàng)按鈕變灰,表示無法選取此選項(xiàng)按鈕。Options 應(yīng)用程序圖 3.13 所示的窗體使用選項(xiàng)按鈕為一臺計(jì)算機(jī)選擇處理器類型和操作系統(tǒng)。當(dāng)用戶在組內(nèi)選擇了選項(xiàng)按鈕后,Label 的標(biāo)
30、題就改變,反映當(dāng)前的選擇。關(guān)于此例的工作版本,請參閱應(yīng)用程序示例 Controls.vbp 中的Options.frm。下表列出了應(yīng)用程序中對象屬性的設(shè)置。 Options 應(yīng)用程序中的事件選項(xiàng)應(yīng)用程序?qū)κ录捻憫?yīng)如下:前三個選項(xiàng)按鈕的 Click 事件為窗體級的 string 變量 strComputer 分配一個相應(yīng)的描述。后兩個選項(xiàng)按鈕的 Click 事件為第二個窗體級變量 strSystem 分配一個相應(yīng)的描述。這個方法的關(guān)鍵就在于使用這兩個窗體級變量,strComputer 和strSystem。這兩個變量具有不同的 string 值,選項(xiàng)按鈕的最后選定就依賴于這些值。每次選擇新的選
31、項(xiàng)按鈕,其 Click 事件的代碼就更新相應(yīng)變量的值。Private Sub opt586_Click()strComputer = "Pentium"Call DisplayCaptionEnd Sub然后它調(diào)用一個名為 DisplayCaption 的過程,此過程把兩個變量連在一起并改變 Label 的 Caption 屬性。Sub DisplayCaption()lblDisplay.Caption = "You selected a " &_strComputer & " running " & str
32、SystemEnd Sub使用子過程是因?yàn)楦淖?Caption 屬性的過程對所有五個選項(xiàng)按鈕來說基本是一樣的,只不過變量的值因情況而異。這就可以避免在每個 Click 事件中重復(fù)同樣的代碼。詳細(xì)信息 變量和子過程將在第五章“編程基礎(chǔ)”中討論。使用 ListBox 和 ComboBox ListBox 和 ComboBox 為用戶提供了選擇。按照缺省規(guī)定,選項(xiàng)以垂直單列方式顯示,也可以設(shè)置成多列方式。如果項(xiàng)目數(shù)量超過 ComboBox 或ListBox 所能顯示的數(shù)目,ScrollBar 自動出現(xiàn)在控件上。于是用戶可以在列表中上下左右滾動。圖 3.14 為一個單列 ListBox。ComboBo
33、x 兼有 TextBox 和 ListBox 兩者的功能。該控件允許用戶通過鍵入文本或選擇列表中的項(xiàng)目來進(jìn)行選擇。圖 3.15 為一個 ComboBox。 與其它含有單值的控件相反,例如 Label 的 Caption 屬性或 TextBox 的text 屬性,ListBox 和 ComboBox 含有多個值或值的集合。在運(yùn)行時用內(nèi)置的方法增加、刪除及保持集合中的值。要將幾條項(xiàng)目添加到名為 List1 的ListBox 中,其代碼如下:List1.AddItem "Paris"List1.AddItem "New York"List1.AddItem &
34、quot;San Francisco" ListBox 和 ComboBox 是在有限空間為用戶提供大量選項(xiàng)的有效方法。詳細(xì)信息 關(guān)于 ListBox 和 ComboBox 控件的詳細(xì)信息,請參閱第七章“使用 Visual Basic 的標(biāo)準(zhǔn)控件”。使用 ScrollBar 作為輸入設(shè)備滾動條通常與 TextBox 或窗口一起使用,但有時也可作輸入設(shè)備。因?yàn)镾crollBar 控件可按比例指示當(dāng)前位置,所以可以單獨(dú)使用以控制程序輸入,如控制聲音音量或調(diào)整圖片顏色。HScrollBar(水平)和 VScrollBar(垂直)控件是獨(dú)立的,它有自己的事件、屬性和方法集。ScrollBar
35、 控件與附屬于TextBox、ListBox、ComboBox 或 MDI 窗體的內(nèi)部 ScrollBar 不同。(TextBox 和 MDI 窗體具有 ScrollBars 屬性,可增加或刪除附屬于控件的 ScrollBar。)現(xiàn)在 Windows 界面提示行支持 Slider 控件作為輸入設(shè)備而不用ScrollBar。關(guān)于 Slider 控件的例子,請參閱 Windows 95 的控件面板。VisualBasic 的專業(yè)版和企業(yè)版中包含一個 Windows 95 風(fēng)格的 Slider 控件。詳細(xì)信息 關(guān)于 ScrollBar 控件的詳細(xì)信息,請參閱第七章“使用 VisualBasic 的標(biāo)
36、準(zhǔn)控件”。顯示圖片和圖形的控件因?yàn)?Windows 是圖形用戶界面,所以在應(yīng)用程序上界面顯示圖形圖像的方法十分重要。Visual Basic 包含四個控件以簡化與圖形有關(guān)的操作,它們是PictureBox 控件、Image 控件、Shape 控件和 Line 控件。Image、Shape 和 Line 控件有時被稱作輕量圖形控件。它們需要較少的系統(tǒng)資源,因此比 PictureBox 控件顯示得快并且包含 PictureBox 中可用的屬性、方法和事件的子集。每一個控件都適用于一個特定的目的。使用 PictureBox 控件PictureBox 控件的主要作用是為用戶顯示圖片。實(shí)際顯示圖片由 P
37、icture 屬性決定。Picture 屬性包括被顯示的圖片的文件名(及可選的路徑名)。注意 窗體對象也具有 Picture 屬性,通過設(shè)置該屬性可直接在窗體背景上顯示圖片。要在運(yùn)行時顯示或替換圖片,可利用函數(shù) LoadPicture 來設(shè)置 Picture 屬性。提供圖片文件名和可選路徑名,由 LoadPicture 函數(shù)處理加載和顯示圖片的細(xì)節(jié)。picMain.Picture = LoadPicture("VANGOGH.BMP") PictureBox 控件具有 AutoSize 屬性,當(dāng)該屬性設(shè)置為 True 時,PictureBox能自動調(diào)整大小與顯示的圖片匹配。
38、如果要用 AutoSize 屬性設(shè)置為 True的 PictureBox ,設(shè)計(jì)窗體時就需要特別小心。圖片將不考慮窗體上的其它控件而調(diào)整大小,這可能導(dǎo)致意想不到的后果,如覆蓋其它控件。設(shè)計(jì)時應(yīng)通過加載每一幅圖片來檢查是 否有這種現(xiàn)象發(fā)生。使用 PictureBox 作為容器Picture box 控件也可以用作其它控件的容器。像 Frame 控件一樣,可以在PictureBox 控件上面加上其它控件。這些控件隨 PictureBox 移動而移動,其 Top 和 Left 屬性是相對 PictureBox 而言,而與窗體無關(guān)。 PictureBox 容器的一種普通用法是 ToolBar 或 St
39、atusBar 。可將 Image 控件置于這些容器中作為按鈕或添加Label顯示狀態(tài)信息。將Align屬性設(shè)置為Top、Bottom、Left或Right ,PictureBox將粘貼在窗體的邊緣。圖 3.16 為一個Align屬性設(shè)置為Bottom的PictureBox 。它包含兩個可用于顯示狀態(tài)信息的 Label 控件。PictureBox 的其它用法PictureBox 控件有幾種方法使 PictureBox 可用于其它目的。例如:把PictureBox 看作是一塊空畫布,可以在它上面畫畫或打印,或者顯示文本、圖形,甚至是簡單的動畫。Print 方法允許向 PictureBox 控件輸
40、出文本,如同向打印機(jī)輸出一樣。有幾種字體屬性可以控制由 Print 方法輸入的文本的特性;Cls 方法可以清除輸出。Circle、Line、Point 和 Pset 方法可以用于在 PictureBox 中畫圖形。一些屬性如 DrawWidth、FillColor 和 FillStyle 允許自定義圖形的外觀。用 PaintPicture 方法在圖片控件內(nèi)移動 Image 、并在幾幅不同的 Image 間快速變化就能產(chǎn)生動畫。詳細(xì)信息 關(guān)于 PictureBox 控件的詳細(xì)信息,請參閱第七章“使用 VisualBasic 的標(biāo)準(zhǔn)控件”。輕量圖形控件Image、Shape 和 Line 控件都被
41、認(rèn)為是輕量圖形控件,也就是說,它們只支持 PictureBox 的屬性、方法和事件的一個子集。因此,它們需要較少的系統(tǒng)資源而且加載也比 PictureBox 控件更快。用 Image 控件代替 PictureBox Image 控件與 PictureBox 控件相似,但它只用于顯示圖片。它不能作為其它控件的容器,也不支持 PictureBox 的高級方法。圖片加載于 Image 控件的方法和它們加載于 PictureBox 中的方法一樣。設(shè)計(jì)時,將 Picture 屬性設(shè)置為文件名和路徑,運(yùn)行時,利用 Loadpicture 函數(shù)。Image 控件調(diào)整大小的行為與 PictureBox 不同。
42、它具有 Stretch 屬性,而PictureBox 具有 AutoSize 屬性。將 AutoSize 屬性設(shè)為 True 可使PictureBox 根據(jù)圖片調(diào)整大小,設(shè)為 False 則圖片將被剪切(只有一部分圖片可見)。Stretch 屬性設(shè)為 False(缺省值)時,Image 控件可根據(jù)圖片調(diào)整大小。將 Stretch 屬性設(shè)為 True 將根據(jù) Image 控件的大小來調(diào)整圖片的大小,這可能使圖片變形。詳細(xì)信息 關(guān)于 Image 控件的詳細(xì)信息,請參閱第七章“使用 Visual Basic's的標(biāo)準(zhǔn)控件”。使用 Image 控件創(chuàng)建自己的按鈕 Image 控件也可以識別 C
43、lick 事件,因此可在要用 CommandButton 的任何地方使用該控件。這種方法可以方便地建立有圖片的按鈕來取代標(biāo)題。將幾個 Image 控件組成一組,水平置于屏幕頂端(通常在一個 PictureBox中),可以在應(yīng)用程序中建立一個 ToolBar。例如,對 Test Buttons一 例給出的 Image 控件 ,用戶可以像選擇CommandButton 一樣來選擇它。窗體第一次被顯示時,控件顯示 VisualBasic 的圖標(biāo)庫中三個交通圖標(biāo)中的一個。每單擊 Image 控件一次,就顯示一個不同的圖標(biāo)(該例的工作版本,請參閱 Controls.vbp 示例應(yīng)用程序中的 Button
44、.frm)。如果設(shè)計(jì)時觀察一下窗體,就會發(fā)現(xiàn)它實(shí)際包含所有三個圖標(biāo),它們堆集在一起。改變頂部 Image 控件的 Visible 屬性為 False,下一幅圖像(如果其 Visible 屬性為真)將顯示于頂部。圖 3.17 為一個交通圖標(biāo)的 Image 控件 (Trffc10a.ico)。要在 Image 控件的周圍建立一個邊框,將 BorderStyle 屬性設(shè)為 1 固定的單邊框。注意 與 CommandButton 不同,單擊 Image 控件時,并不顯示它被按下的動作。也就是說除非在 MouseDown 事件中改變位圖,否則“按鈕”正在被按下對用戶來說是看不到的。詳細(xì)信息 關(guān)于在 Im
45、age 控件中顯示圖形圖像的詳細(xì)信息,請參閱第七章“使用 Visual Basic 的標(biāo)準(zhǔn)控件”。使用 Shape 控件和 Line 控件Shape 和 Line 控件可用來在窗體表面畫圖形元素。這些控件不支持任何事件,只用于表面裝飾。 有幾種屬性可以控制 Shape 控件的外觀。通過設(shè)置 Shape 屬性,Shape 控件可顯示為矩形、正方形、橢圓型、圓角矩形或圓角正方形。設(shè)置 BorderColor和 FillColor 屬性可以改變顏色,BorderStyle、BorderWidth、FillStyle 和DrawMode 屬性控制如何畫圖。Line 控件與 Shape 控件相似,但僅用
46、于畫線。詳細(xì)信息 關(guān)于 Shape 和 Line 控件的附加信息,請參閱第七章“使用Visual Basic 的標(biāo)準(zhǔn)控件”。Images 應(yīng)用程序 圖 3.18 所示窗體用了四個 Image 控件,一個 Shape 控件,一個 PictureBox控件和一個 CommandButton 控件。當(dāng)用戶選擇撲克牌符號時,Shape 控件使該符號突出顯示,并且在 PictureBox 中顯示相應(yīng)的描述。關(guān)于本例的工作版本,請參閱 Controls.vbp 示例應(yīng)用程序中的 Images .frm。 下表列出了應(yīng)用程序中對象的屬性設(shè)置。 Images 應(yīng)用程序中的事件Image 應(yīng)用程序?qū)κ录捻憫?yīng)如
47、下:1.每一個 Image 控件的 Click 事件使 Shape 控件的 Left 屬性與它自己的 Left 屬性相同,并將圖形移到 Image 的頂端。2.調(diào)用 PictureBox 的 Cls 方法清除 StatusBar 的當(dāng)前標(biāo)題。3.調(diào)用 PictureBox 的 Print 方法在 StatusBar 上打印新標(biāo)題。Image 控件 Click 事件的代碼如下:Private Sub imgHeart_Click()shpCard.Left = imgClub.LeftpicStatus.ClspicStatus.Print "Selected: Club"s
48、hpCard.Visible = TrueEnd Sub注意,Click 事件代碼中第一行利用 = 操作符為 Shape 控件的 Left 屬性賦一個值 (讓它等于 Image 控件的 Left 屬性)。下面兩行調(diào)用方法,因而不需要操作符。在第三行中,值 ("Selected: Club") 是 Print 方法的一個參數(shù)。該應(yīng)用代碼中還有一行很重要;它在 Form Load 事件中。shpCard.Visible = False將 Shape 控件的 Visible 屬性設(shè)為 False,Shape 控件被隱藏起來直至單擊第一幅 Image。在 Image 控件 Clic
49、k 事件的最后一步將 Visible 屬性設(shè)為True。詳細(xì)信息 關(guān)于屬性、方法和事件詳細(xì)信息,請參閱第五章“編程基礎(chǔ)”。附加控件Visual Basic 工具箱還包含幾個其它的標(biāo)準(zhǔn)控件。有些控件可用來處理外部數(shù)據(jù)庫中的大量數(shù)據(jù)。有些控件可用來訪問 Windows 文件系統(tǒng)。還有其它一些控件難以分類,但卻十分有用。 在 Visual Basic 應(yīng)用程序中還可使用 ActiveX 控件,以前稱為自定義控件或 OLE 控件,用法與使用標(biāo)準(zhǔn)控件一樣。Visual Basic 的專業(yè)版和企業(yè)版中的若干 ActiveX 事件同樣具有創(chuàng)建自定義控件的功能。可以想像,加上大量廠商制作的附加 ActiveX
50、 控件,幾乎可以完成任何工作。詳細(xì)信息 關(guān)于使用 ActiveX 控件的詳細(xì)信息,請參閱第四章“工程的管理”。數(shù)據(jù)訪問控件現(xiàn)代商業(yè)中,大多數(shù)信息存放于一個或多個中央數(shù)據(jù)庫中 。 Visual Basic 提供了多種數(shù)據(jù)訪問控件,可以訪問多數(shù)流行的數(shù)據(jù)庫,如 Microsoft Access和 SQL 服務(wù)器。1.ADO Data 控件用來連接數(shù)據(jù)庫。可把它看成是數(shù)據(jù)庫與窗體中其它控件之間的一個管道線。Data 控件的屬性、方法和事件允許從應(yīng)用程序內(nèi)部定位和處理外部數(shù)據(jù)。2.DataList 控件與 ListBox 控件相似。DataList 控件與ADO Data 控件一起使用時,它將自動被來
51、自外部數(shù)據(jù)庫某一字段的數(shù)據(jù)清單填充。3.DataCombo 控件如同 DBList 和 TextBox 的組合。TextBox 區(qū)域內(nèi)選中的文本可以編輯,變更出現(xiàn)在底層數(shù)據(jù)庫中。4.DataGrid 控件顯示在網(wǎng)格或表中的數(shù)據(jù)。與ADO Data 控件一起使用時,它顯示來自于外部數(shù)據(jù)庫多個字段的完全可編輯數(shù)據(jù)。5.Microsoft Hierarchical FlexGrid 控件是唯一能顯示數(shù)據(jù)的多個視圖的控件。可把它看作網(wǎng)格和樹或大綱控件的組合。運(yùn)行時,用戶可重新安排行和列以提供數(shù)據(jù)的不同視圖。詳細(xì)信息 關(guān)于 Data 控件的詳細(xì)信息,請參閱第七章“使用 Visual Basic 的標(biāo)準(zhǔn)控
52、件”。文件系統(tǒng)控件Visual Basic 提供三個控件以增加應(yīng)用程序中的文件處理能力。通常,這些控件在一起使用以查看驅(qū)動器、目錄和文件。有一些特殊的屬性和事件使它們相互聯(lián)系。DriveListBox 控件看起來像 ComboBox 。它提供下拉式驅(qū)動器清單,用戶可以從中作出選擇。DirListBox 與 ListBox 控件相似,但它具有顯示當(dāng)前所選驅(qū)動器目錄清單的內(nèi)置能力。FileListBox 控件看起來像顯示所選目錄的文件名清單的 ListBox。注意 這些控件主要是為在早期 Visual Basic 版本中創(chuàng)建的應(yīng)用程序的向下兼容性而提供的。CommonDialog 控件提供處理文件
53、訪問的簡單方法。關(guān)于 CommonDialog 控件的詳細(xì)信息,請參閱本章后面的“其它控件”。其它控件Visual Basic 還提供了其它幾個標(biāo)準(zhǔn)控件。每個控件都服務(wù)于唯一的目的。Timer 控件可以在應(yīng)用中以重復(fù)時間間隔產(chǎn)生一個事件。這對不需要與用戶交互的代碼的執(zhí)行非常有用。OLE 容器控件很容易為應(yīng)用程序增加鏈接和嵌入等功能。通過 OLE 容器控件,可以提供對任何 OLE可用的應(yīng)用程序(如 Microsoft Excel、Word 和其它許多應(yīng)用程序)的功能的訪問,。CommonDialog 控件在應(yīng)用程序中增加內(nèi)置對話框 ,用來選擇文件、顏色、字體和打印函數(shù)。詳細(xì)信息 關(guān)于標(biāo)準(zhǔn)控件的附
54、加信息,請參閱第七章“使用 Visual Basic 的標(biāo)準(zhǔn)控件”。 焦點(diǎn)概述 焦點(diǎn)是接收用戶鼠標(biāo)或鍵盤輸入的能力。當(dāng)對象具有焦點(diǎn)時,可接收用戶的輸入。在 Microsoft Windows 界面,任一時刻可運(yùn)行幾個應(yīng)用程序,但只有具有焦點(diǎn)的應(yīng)用程序才有活動標(biāo)題欄,才能接受用戶輸入。在有幾個TextBox 的 Visual Basic 窗體中,只有具有焦點(diǎn)的 TextBox 才顯示由鍵盤輸入的文本。當(dāng)對象得到或失去焦點(diǎn)時,會產(chǎn)生 GotFocus 或 LostFocus 事件。窗體和多數(shù)控件支持這些事件。下列方法可以將焦點(diǎn)賦給對象。運(yùn)行時選擇對象。運(yùn)行時用快捷鍵選擇對象。在代碼中用 SetFocus 方法。有些對象,它是否具有焦點(diǎn)是可以看出來的。例如,當(dāng)命令按鈕具有焦點(diǎn)時,標(biāo)題周圍的邊框?qū)⑼怀鲲@示(見圖 3.19)。只有當(dāng)對象的 Enabled 和 Visible 屬性為 True 時,它才能接收焦點(diǎn)。Enabled 屬性允許對象響應(yīng)由用戶產(chǎn)生的事件,如鍵盤和鼠標(biāo)事件。Visible屬性決定了對象在屏幕上是否
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 難忘的一個人500字作文10篇范文
- 兒童節(jié)游樂場活動方案
- 企業(yè)與貓咖的合作協(xié)議
- 運(yùn)輸承包合同與運(yùn)輸車輛承包合同
- 品牌服裝采購與分銷合同
- 公交公司小隊(duì)活動方案
- 快樂童話創(chuàng)作與故事主題(5篇)
- 公交車禮讓行人活動方案
- 對失敗與成功的新認(rèn)識議論文15篇
- 重新簽訂離婚協(xié)議書
- 【編制說明】電力電纜通道用防火隔板及槽盒技術(shù)規(guī)范
- 分布式光伏經(jīng)濟(jì)評價規(guī)范
- 振動力學(xué)期末試卷-06.07.08期末-上海交大
- MOOC 大學(xué)物理(上)-西北工業(yè)大學(xué) 中國大學(xué)慕課答案
- 伊朗鋼結(jié)構(gòu)包裝專項(xiàng)方案
- 雨污分流改造方案
- 小升初數(shù)學(xué)知識點(diǎn)總結(jié)(小考復(fù)習(xí)精編專項(xiàng)講義)六年級數(shù)學(xué)小升初復(fù)習(xí)系列:數(shù)與式知識點(diǎn)梳理大全
- E+H-壓力變送器培訓(xùn)
- 統(tǒng)編版高中語文必修下冊《跨媒介閱讀與交流》標(biāo)準(zhǔn)課件
- 重慶市地質(zhì)災(zāi)害專業(yè)監(jiān)測預(yù)警技術(shù)要求(試行)
- 幼兒園戶外自主游戲中教師的有效介入研究-以積木游戲?yàn)榘咐ㄗ罱K成稿)
評論
0/150
提交評論