VB實(shí)例(含代碼和窗體)_第1頁(yè)
VB實(shí)例(含代碼和窗體)_第2頁(yè)
VB實(shí)例(含代碼和窗體)_第3頁(yè)
VB實(shí)例(含代碼和窗體)_第4頁(yè)
VB實(shí)例(含代碼和窗體)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、-作者xxxx-日期xxxxVB實(shí)例(含代碼和窗體)【精品文檔】VB實(shí)例第一天、使用VB收發(fā)電子郵件大叔:我說(shuō)LOLI呀,既然你已經(jīng)學(xué)習(xí)過(guò)VB的基礎(chǔ)知識(shí),也做過(guò)一些簡(jiǎn)單的程序,那么我也就不浪費(fèi)口水教你認(rèn)識(shí)界面、了解控件和學(xué)習(xí)語(yǔ)法了。不如我來(lái)教教你怎么樣制作出一些切實(shí)可用的程序,這樣既能夠加深對(duì)VB的認(rèn)識(shí),還可以讓你擁有十足的成就感呢!LOLI:好呀,那做一些什么程序呢?大叔:當(dāng)然不會(huì)像我哥哥當(dāng)年那樣簡(jiǎn)單至極的程序,而是一些具有實(shí)用性的程序,也可以做一個(gè)小游戲之類的,你看怎么樣? LOLI:好的,不過(guò)今天別教我做游戲,不然明天就沒(méi)有心思學(xué)了。大叔:這個(gè)我自然知道,那我們就開始動(dòng)手制作一個(gè)收發(fā)電子

2、郵件的程序吧。LOLI:收發(fā)電子郵件?這個(gè)會(huì)不會(huì)很難呢?大叔:正所謂會(huì)者不難,難者不會(huì),有我這位名師指點(diǎn),你還怕什么呢?開始動(dòng)手吧!一、準(zhǔn)備工作大叔:在VB中編寫電子郵件程序需要通過(guò)調(diào)用微軟公司的MAPI(Messaging Application Programming Interface,消息應(yīng)用程序編程接口),這需要借助兩個(gè)實(shí)現(xiàn)電子郵件收發(fā)功能的核心控件:MAPI會(huì)話控件和MAPI消息控件。MAPI會(huì)話控件用于建立和控制一個(gè)Microsoft Mail會(huì)話,MAPI消息控件用于創(chuàng)建和收發(fā)郵件消息。此外,Windows系統(tǒng)中必須要有遵從MAPI的郵件系統(tǒng),比如Exchange、Outloo

3、k等軟件,而還要進(jìn)行一番設(shè)置,確保郵件系統(tǒng)可以正常使用。LOLI:呵呵,沒(méi)關(guān)系,我用的就是Outlook,正好符合要求。不過(guò)你說(shuō)的MAPI控件在哪里找呢? 大叔:在VB中就有現(xiàn)成的,不過(guò)程序沒(méi)有直接放置在工具箱里,需要我們自己將MAPI控件加入VB工具箱。首先直接在VB左邊的控件欄中右擊鼠標(biāo),并在彈出菜單中選擇“部件”命令,這時(shí)可以激活部件設(shè)置窗口,在其中的“控件”列表框中選取“Microsoft MAPI Controls”一項(xiàng)(如圖1所示),接著按下“確定”按鈕之后可以發(fā)現(xiàn)工具箱中將多出了兩個(gè)圖標(biāo),這就是MAPI會(huì)話控件和MAPI消息控件的圖標(biāo)(如圖2所示)。 圖一圖二二、郵件發(fā)送程序大叔

4、:添加好我們所需要的控件之后,就開始定制郵件的發(fā)送程序吧。這個(gè)郵件發(fā)送程序的基本處理過(guò)程是:根據(jù)用戶輸入信息組成郵件,然后使用MAPI消息控件的Send方法將郵件發(fā)出。具體的方法按照下述步驟完成:1、新建一個(gè)VB項(xiàng)目,并將缺省窗體Form1的Caption屬性設(shè)置為“發(fā)送郵件”。 2、在Form1中加入一個(gè)MAPI會(huì)話控件MAPISession1和一個(gè)MAPI消息控件MAPIMessages1。3、在Form1中加入三個(gè)TextBox控件,將它們的名稱屬性分別設(shè)置為“txtSendTo”、“txtSubject”和“txtMessage”,另外還要將txtMessage的Multiline屬性

5、設(shè)置為“True”。這三個(gè)TextBox控件將分別用于填寫郵件的收件人地址、郵件主題和郵件正文。4、在Form1中加入三個(gè)Label控件,將它們的Caption屬性分別設(shè)置為“收件人”、“主題”和“內(nèi)容”,并將它們放在合適的位置用以標(biāo)注相應(yīng)的TextBox控件。5、在Form1中加入一個(gè)Command Button控件,將其Caption屬性和名稱屬性分別設(shè)置為“發(fā)送”和“Send”。所有的控件添加完畢之后應(yīng)該如圖3所示。圖三LOLI:還挺像這么回事的呢,接著應(yīng)該填寫代碼了吧。大叔:是呀,下面就是代碼部分的內(nèi)容:1、將下列代碼加入Form1的Form_Load事件:Private Sub Fo

6、rm_Load()MAPISession1.SignOn/運(yùn)行程序之后進(jìn)行郵箱登錄操作End Sub 2、將下列代碼加入Form1的Form_Unload事件:Private Sub Form_Unload(Cancel As Integer)MAPISession1.SignOff/退出程序時(shí)候進(jìn)行退出郵箱操作End Sub 3、將下列代碼加入cmdSend的Click事件:Private Sub cmdSend_Click()With MAPIMessages1.MsgIndex = -1.RecipDisplayName = txtSendTo.Text/收信人地址.MsgSubject

7、 = txtSubject.Text/郵件主題.MsgNoteText = txtMessage.Text/郵件正文.SessionID = MAPISession1.SessionID/發(fā)送程序和郵件工具之間建立的任務(wù)數(shù).SendEnd WithMsgBox 郵件發(fā)送完畢!, , 發(fā)送郵件/發(fā)送成功顯示信息框End Sub 這樣一個(gè)電子郵件發(fā)送部分就制作完成了,運(yùn)行程序之后只要填寫好郵件的收件人、主題和內(nèi)容后,按下“發(fā)送”命令按鈕,郵件就已經(jīng)成功地發(fā)往目的地了(如圖4所示)。圖4LOLI:真的發(fā)送出去了,不過(guò)這是不是你的障眼法呢?我要收到這封信才相信!大叔:對(duì)我還不相信?好吧,下面再制作一個(gè)

8、郵件接收程序來(lái)收取這封信件。三、郵件接收程序大叔:郵件接收程序比郵件發(fā)送程序要復(fù)雜一些,這個(gè)程序首先需要使用MAPI消息控件的Fetch方法讀取郵件,這個(gè)過(guò)程將把用戶收件箱中所有未讀郵件全部裝入MAPI消息控件中。接著,檢查MAPI消息控件的MsgCount屬性以確定通過(guò)Fetch方法讀取的郵件的總數(shù),然后可以通過(guò)設(shè)置MAPI消息控件的MsgIndex屬性來(lái)指定具體需要處理哪一封郵件。需要說(shuō)明的是,MsgIndex屬性值的計(jì)數(shù)是從0開始的,也就是說(shuō),第一封郵件的索引號(hào)是0,第二封郵件的索引號(hào)是1,依次類推。具體步驟如下: 1、新建一個(gè)VB項(xiàng)目,將缺省窗體Form1的Caption屬性設(shè)置為“接

9、收郵件”。2、在Form1中加入一個(gè)MAPI會(huì)話控件MAPISession1和一個(gè)MAPI消息控件MAPIMessages1。3、在Form1中加入三個(gè)Label控件和一個(gè)TextBox控件,將三個(gè)標(biāo)簽控件的名稱屬性分別設(shè)置為“l(fā)blMsgDateReceived”、“l(fā)blMsgOrigDisplayName”和“l(fā)blMsgSubject”,將TextBox控件的名稱屬性設(shè)置為“txtMsgNoteText”,并將標(biāo)簽控件的Caption屬性和文本框控件的Text屬性的內(nèi)容清空。這四個(gè)控件將分別用于顯示郵件的日期、發(fā)件人、主題和內(nèi)容。4、將txtMsgNoteText控件的Locked屬性

10、和Multiline屬性設(shè)置為“True”,ScrollBars屬性設(shè)置為“2-Vertical”。5、在Form1中再加入四個(gè)Label控件用于標(biāo)注上述四個(gè)控件,將它們的Caption屬性分別設(shè)置為“日期”、“發(fā)件人”、“主題”和“內(nèi)容”。6、在Form1中加入一個(gè)Label控件,將其名稱屬性設(shè)置為“l(fā)blMsgCount”,Caption屬性設(shè)置為“第 0 封郵件,總計(jì) 0 封郵件”。這個(gè)控件用于顯示接收的郵件總數(shù)以及當(dāng)前正在處理第幾封郵件。7、在Form1中加入三個(gè)Command Button控件,將它們的名稱屬性分別設(shè)置為“cmdPrevious”、“cmdNext”和“cmdClos

11、e”,Caption屬性分別設(shè)置為“上一封”、“下一封”和“關(guān)閉”。LOLI:那么具體的程序代碼呢?大叔:又著急了不是?我還會(huì)騙你嗎?下面就是具體的程序代碼:1、編寫一個(gè)子程序FetchNewMail:Public Sub FetchNewMail()MAPIMessages1.FetchUnreadOnly = TrueMAPIMessages1.Fetch/Fetch命令將信件抓到系統(tǒng)存貯器的inbuffer中End Sub 2、編寫一個(gè)子程序DisplayMessage:Public Sub DisplayMessage()lblMsgCount.Caption = 第 & Ltrim(

12、Str(MAPIMessages1.MsgIndex + 1) & 封郵件,總計(jì) & Ltrim(Str(MAPIMessages1.MsgCount) & 封郵件/由MsgCount知道信件數(shù)量,再用MsgIndex設(shè)置要看哪一封信件的內(nèi)容、標(biāo)題lblMsgDateReceived.Caption = MAPIMessages1.MsgDateReceived/收取信件的日期txtMsgNoteText.Text = MAPIMessages1.MsgNoteText/收取信件的內(nèi)容lblMsgOrigDisplayName.Caption = MAPIMessages1.MsgOrigDi

13、splayName/發(fā)送郵件的姓名lblMsgSubject.Caption = MAPIMessages1.MsgSubject/郵件主題End Sub 3、將下列代碼加入Form1的Form_Load事件:Private Sub Form_Load()MAPISession1.SignOnMAPIMessages1.SessionID = MAPISession1.SessionIDFetchNewMail/調(diào)用Fetch子程序DisplayMessage/調(diào)用DisPlayMessage子程序End Sub 4、將下列代碼加入cmdPrevious的Click事件:Private Sub

14、 cmdPrevious()If MAPIMessages1.MsgIndex 0 ThenMAPIMessages1.MsgIndex = MAPIMessages1.MsgIndex - 1/當(dāng)收取信件超過(guò)1封的時(shí)候,通過(guò)“上一封”按鈕查看前面的信件DisplayMessageElseBeepEnd IfEnd Sub5、將下列代碼加入cmdNext的Click事件:Private Sub cmdNext_Click()If MAPIMessages1.MsgIndex MAPIMessages1.MsgCount - 1 ThenMAPIMessages1.MsgIndex = MAPI

15、Messages1.MsgIndex + 1/當(dāng)收取信件超過(guò)1封的時(shí)候,通過(guò)“下一封”按鈕查看后面的信件DisplayMessageElseBeepEnd IfEnd Sub6、將下列代碼加入cmdClose的Click事件:Private Sub cmdClose_Click()Unload MeEnd Sub 程序運(yùn)行后,在窗體加載過(guò)程中,窗體Load事件中的代碼會(huì)讀取新郵件,如果有新郵件,就顯示第一個(gè)新郵件,如果有多個(gè)新郵件,則可以使用“上一封”和“下一封”命令按鈕前后翻閱。你再看看,這封收取下來(lái)的郵件是不是我們剛才發(fā)送出去的?LOLI:呵呵,真厲害!其實(shí)剛才我知道你肯定可以收到這封郵件

16、的,只不過(guò)是說(shuō)著玩的,嘿嘿。我來(lái)試著給別人發(fā)送一些郵件。大叔:那你就用它給好朋友發(fā)送幾封郵件,告訴他們是用你自己編寫的程序發(fā)送的,他們保證大吃一驚呢。第二天、自制媒體播放器LOLI:大叔來(lái)看我剛剛下載的黑衣人2,可好玩了。大叔:用MediaPlayer看的?不如這樣吧,今天我教你怎樣制作一個(gè)媒體播放器,你看如何?LOLI:自己做的媒體播放器也可以看黑衣人2嗎?大叔:那是當(dāng)然的,不然我豈不是變成了大騙子?LOLI:呵呵,那感情好呀,這樣我可以拿到班上給同學(xué)炫耀一下嘍。大叔:我們這個(gè)媒體播放器的目的是可以播放VCD、WAV、MP3等媒體文件,而且全部的功能基本上和Windows附帶的媒體播放器差不

17、多。其實(shí)要制作這樣一個(gè)播放器并不困難,因?yàn)樵赩B中提供了一個(gè)MediaPlayer控件,它幫我們解決了很多實(shí)際問(wèn)題,只要按照下面的步驟就可以了。1、因?yàn)槲覀冃枰褂玫組ediaPlayer控件,所以剛開始就要右擊工具面板并在部件添加窗口里選擇“Windows MediaPlayer”來(lái)添加這個(gè)控件,同時(shí)還要添加“CommonDialog”控件。2、在窗口設(shè)計(jì)器中創(chuàng)建一個(gè)MediaPlayer控件、五個(gè)Command Button控件和一個(gè)CommonDialog控件。3、將Form1的Caption屬性更改為“大叔的媒體播放器”。4、分別將五個(gè)Command Button控件的Caption屬

18、性分別命名為“暫?!?、“播放”、“停止”、“選擇”和“退出”,然后把它們按照一定的位置放好。5、選中CommonDialog控件之后,在右邊屬性的“Filter”對(duì)話框中輸入“*.RMVB|*.wav)|*.wav|MIDI(*.mid)|*.mid|MPEG(*.mpeg)|*.mpeg|DAT(*.dat)|*.dat|AVI(*.avi)|*.avi|MP3(*.mp3)|*.mp3”的文件過(guò)濾選項(xiàng),這樣就可以支持各種常見(jiàn)的媒體影像文件了。LOLI:看起來(lái)和真正的MediaPlayer差不多呀,還蠻有專業(yè)水準(zhǔn)的呢。大叔:是呀,這全要?dú)w功于MediaPlayer控件,下面就是代碼編寫部分內(nèi)

19、容了:1、首先要雙擊Form1窗口,并選擇“通用”對(duì)象,輸入下面的通用代碼:Option ExplicitDim playfilename As String/定義播放文件的名稱Dim playposition As Double/定義當(dāng)前播放的位置 2、雙擊“暫停”按鍵并輸入下列代碼:Private Sub Command1_Click()Command1.Enabled = False/暫停按鍵失效MediaPlayer1.Pause/暫停播放playposition = MediaPlayer1.CurrentPosition/當(dāng)前的播放位置End Sub 3、雙擊“播放”按鍵并輸入下列

20、代碼:Private Sub Command2_Click()Command1.Enabled = True/暫停按鍵有效Command3.Enabled = True/停止按鍵有效MediaPlayer1.filename = playfilename/播放媒體文件名稱MediaPlayer1.SelectionStart = playposition/當(dāng)前播放的位置MediaPlayer1.Play/播放媒體文件End Sub 4、雙擊“停止”按鍵并輸入下列代碼:Private Sub Command3_Click()playposition = 0/停止播放Command3.Enable

21、d = False/停止按鍵無(wú)效Command1.Enabled = False/暫停按鍵無(wú)效Command2.Enabled = True/播放按鍵有效MediaPlayer1.Stop/停止播放End Sub 5、雙擊“選擇”按鍵并輸入下列代碼:Private Sub Command4_Click()CommonDialog1.showopen/打開文件對(duì)話框playfilename = CommonDialog1.filename/記錄播放文件名playposition = 0/第一次打開文件時(shí)候,播放位置為0End Sub 6、雙擊“退出”按鍵并輸入下列代碼:Private Sub C

22、ommand5_Click()Unload Me/卸載窗口End/結(jié)束程序End Sub 代碼全部輸入完畢之后,運(yùn)行程序后按下“選擇”按鍵,此時(shí)會(huì)彈出打開文件對(duì)話框供你選擇需要播放的文件。選中相應(yīng)的文件之后,就可以進(jìn)行欣賞了。如果需要在別的計(jì)算機(jī)上使用這個(gè)程序的話,還可以選擇“工具”菜單下的“生成.exe文件”選項(xiàng)來(lái)制作一個(gè)可以直接運(yùn)行的exe格式文件,這樣將程序復(fù)制到其他機(jī)器上就可以使用了?!盠OLI:好開心呀,我來(lái)試試用自己做的程序看黑衣人2,哈哈,真過(guò)癮!大叔:瞧你樂(lè)得這個(gè)勁,那你就慢慢看吧。對(duì)了,通過(guò)VB還可以制作Flash動(dòng)畫、QuickTime等多種格式的播放器,你自己不如依葫蘆畫

23、瓢的嘗試一下,看看你的天份有多少,呵呵!LOLI:放心吧,保證不會(huì)讓你失望的!第三天、定時(shí)鬧鐘程序 LOLI:叮當(dāng)大叔,你知道Windows中的計(jì)劃任務(wù)工作原理嗎?它能夠在指定的時(shí)間開始相應(yīng)的工作,蠻方便的呢。大叔:不要認(rèn)為它很神秘,其實(shí)用VB來(lái)設(shè)計(jì)這樣一個(gè)程序是非常容易的事。不如今天就教你怎樣制作一個(gè)簡(jiǎn)單的定時(shí)鬧鐘程序?這樣可以在指定的時(shí)間到達(dá)之后自動(dòng)運(yùn)行設(shè)置好的程序,你看怎么樣?LOLI:好呀,好呀,趕緊開始吧。大叔:首先要添加程序所需要的控件。1、新建一個(gè)工程,將Form1的startupposition屬性設(shè)置為“2-centerscreen”,同時(shí)將maxbutton屬性設(shè)置為“Fa

24、lse”。這樣程序運(yùn)行之后窗口出現(xiàn)在屏幕中間,而且最大化按鈕處于無(wú)效狀態(tài)。2、在Form1窗口中添加三個(gè)Command Button,分別將它們的Caption屬性更改為“預(yù)設(shè)文件”、“設(shè)定時(shí)間”、“即時(shí)啟動(dòng)”和“退出”。3、在“預(yù)設(shè)文件”按鈕后面放置一個(gè)Label控件用于顯示預(yù)設(shè)的文件路徑和名稱,并且將它的Caption屬性設(shè)置為空。4、在“設(shè)定時(shí)間”按鈕后面放置三個(gè)Label控件,其中Label2和Label4的Caption屬性設(shè)置為空,Label3控件的Caption屬性設(shè)置為“當(dāng)前時(shí)間:”。5、添加一個(gè)common dialog控件,不過(guò)別忘記需要從部件添加窗口里添加到工具箱中喲。6

25、、添加一個(gè)Timer控件,并將它的interval屬性設(shè)置為500。所有控件添加設(shè)置完成后應(yīng)該如圖所示。LOLI:就這么簡(jiǎn)單的幾個(gè)控件可以實(shí)現(xiàn)定時(shí)鬧鐘的功能嗎?大叔:別小瞧了VB的功能,看完下面的代碼再說(shuō)吧。 1、雙擊Form1窗口,并選擇“通用”對(duì)象,輸入下面的通用代碼:Option ExplicitDim AlarmTime/申明變量 2、雙擊“預(yù)設(shè)文件”按鈕并輸入下面的代碼:Private Sub Command1_Click()Call dialog/調(diào)用dialog子程序End Sub 3、雙擊“設(shè)定時(shí)間”按鈕并輸入下面的代碼:Private Sub Command2_Click()

26、AlarmTime = InputBox(請(qǐng)輸入你想設(shè)定的時(shí)間,例如(19:12:00), 小鬧鐘)If AlarmTime = ThenExit SubIf Not IsDate(AlarmTime) Then/isdate函數(shù)是判斷輸入的是否可轉(zhuǎn)換成date格式MsgBox 你所輸入的不是時(shí)間格式,請(qǐng)重試!, ,Wrong Else AlarmTime = CDate(AlarmTime)End If/判斷輸入的是否可轉(zhuǎn)換成time格式 End Sub 4、雙擊“即時(shí)啟動(dòng)”按鈕并輸入下面的代碼:Private Sub Command3_Click()Call deng/調(diào)用deng子程序

27、End Sub5、雙擊“退出”按鈕并輸入下面的代碼:Private Sub Command4_Click()endEnd Sub 6、雙擊Form1窗口,選擇“Click”事件,并輸入下列代碼:Private Sub Form_Click()frmAbout.Show/顯示關(guān)于對(duì)話框End Sub 7、雙擊Form1窗口,選擇“Load”事件,并輸入下列代碼:Private Sub Form_Load() Command3.Enabled = 0 AlarmTime = /初始化時(shí)command3為不可用的End Sub 8、雙擊Form1窗口,選擇“Resize”事件,并輸入下列代碼:Pri

28、vate Sub Form_Resize()If WindowState = 1 Thenmintime/如果窗口被最小化,則調(diào)用mintime程序elsecaption=小鬧鐘End IfEnd Sub 9、編寫mintime子程序:Sub mintime()Caption = Format(Time, long Time)/使用長(zhǎng)時(shí)間格式來(lái)顯示時(shí)間End Sub 10、雙擊Timer1控件并輸入下列代碼:Private Sub Timer1_Timer()f Label2.Caption CStr(Time) ThenLabel2.Caption = AlarmTimeLabel3.Cap

29、tion = Time/顯示時(shí)間每秒鐘的變化End If If Time = AlarmTime ThenCall deng/判斷如果現(xiàn)在的時(shí)間超過(guò)了設(shè)定的時(shí)間,則調(diào)用deng子程序End IfIf WindowState = 1 ThenIf Minute(CDate(Caption) Minute(Time) Thenmintime/最小化時(shí)顯示時(shí)間每分鐘的變化End IfEnd If End Sub 11、編寫dialog子程序:Sub dialog() CommonDialog1.Flags = cdlCFBoth CommonDialog1.ShowOpenLabel1.Captio

30、n = CommonDialog1.filename/把打開的文件名給于label1If Label1 “ Then Command3.Enabled = 1/如果label1不為空時(shí),則command3即可用ElseExit SubEnd If End Sub 12、編寫deng子程序Sub deng() Dim ssss = Shell(Label1.Caption, 1)/啟動(dòng)指定的文件,并且結(jié)束小鬧鐘程序EndEnd Sub 好了,現(xiàn)在試著運(yùn)行程序看看。先點(diǎn)擊上部的“預(yù)設(shè)文件”按鈕添加一個(gè)定時(shí)自動(dòng)運(yùn)行的程序,然后通過(guò)“設(shè)定時(shí)間”按鈕設(shè)置好一個(gè)時(shí)間,這樣當(dāng)時(shí)間到達(dá)的時(shí)候就會(huì)自動(dòng)運(yùn)行你所需

31、要的這個(gè)程序了。LOLI:這倒不錯(cuò),以后我用電腦學(xué)習(xí)一段時(shí)間之后就可以通過(guò)這個(gè)程序來(lái)定時(shí)運(yùn)行游戲,這樣就不會(huì)錯(cuò)過(guò)休息娛樂(lè)的時(shí)間了,哈哈。大叔:不會(huì)吧,我教你做的這個(gè)程序就用來(lái)定時(shí)玩游戲?我真是服了你!不管怎么樣,好好研究一下這個(gè)程序,雖然很小巧,但的確是非常實(shí)用的!第四天、打字練習(xí)程序大叔:我說(shuō)LOLI呀,前幾分鐘之前還看你在編程序,怎么現(xiàn)在又開始玩游戲了?LOLI:都是昨天定時(shí)程序的作用呀,我現(xiàn)在是編程10分鐘,游戲50分鐘,這樣勞逸結(jié)合,安排的不錯(cuò)吧。大叔:有你這么安排的嗎?整個(gè)就是在浪費(fèi)時(shí)間!別玩游戲了,今天教你一些什么呢?LOLI:最好是寓教于樂(lè)的程序最好,比如一邊玩游戲一邊學(xué)習(xí)的。大

32、叔:給我出難題?那就教你一個(gè)寓教于樂(lè)的程序,來(lái)制作一個(gè)打字練習(xí)程序怎么樣?LOLI:真的?也好,我先看看再說(shuō)。大叔:OK,還是老規(guī)矩,先創(chuàng)建一些控件再說(shuō)。1、新建一個(gè)工程,將Form1的Caption屬性修改為“打字練習(xí)”,同時(shí)將MaxButton和MinButton兩個(gè)屬性都設(shè)置為“False”,這樣在程序運(yùn)行之后可以取消右上角的最小化和最大化按鈕。2、添加一個(gè)Frame控件,將它的Caption屬性設(shè)置為空,并且將BorderStyle屬性設(shè)置為“0-None”,然后在這個(gè)Frame中添加1個(gè)Label控件。3、在Form1窗口中添加4個(gè)Label控件,其中兩個(gè)Label控件的Captio

33、n屬性分別設(shè)置為“得分”和“剩余”,另外兩個(gè)Label控件的BackStyle和BorderStyle屬性均設(shè)置為“1-Opaque”和“1-Fixed”,這樣將使得它們以3D立體形式顯示出來(lái),最后分別將這兩個(gè)Label控件的Caption屬性設(shè)置為“0”和“200”。4、在Frame區(qū)域中再添加一個(gè)Label控件。5、在Form1窗口中添加一個(gè)Command Button控件,將它的Caption屬性更改為“開始”。6、添加三個(gè)Timer控件,并將它的interval屬性分別設(shè)置為100、1000和100。 所有控件添加設(shè)置完成后應(yīng)該如圖所示。LOLI:看起來(lái)好復(fù)雜的樣子,代碼編寫部分是不是

34、也很繁瑣?大叔:說(shuō)難不難,說(shuō)簡(jiǎn)單也不簡(jiǎn)單。我們的目的是通過(guò)嵌套在Frame中的兩個(gè)Label控件來(lái)隨機(jī)顯示字母,然后通過(guò)鍵盤輸入字母,由程序檢驗(yàn)輸入的字母和顯示的字母是否一樣,如果一樣則說(shuō)明正確,可以加分,否則說(shuō)明輸入錯(cuò)誤。其實(shí)最關(guān)鍵要把握住編程的思想,這個(gè)說(shuō)起來(lái)就話長(zhǎng)了,還是看看具體的源代碼怎么寫吧。 1、雙擊Form1窗口,并選擇“通用”對(duì)象,輸入下面的通用代碼:Option ExplicitDim score As Integer/定義變量Dim speed As Integer/定義變量2、編寫init子程序(用于設(shè)置第一個(gè)出現(xiàn)的字母)Sub init()Label1.Caption

35、= Chr(Int(Rnd * 26) + 49)/設(shè)定Label1隨機(jī)顯示的字母speed = Int(Rnd * 100 + 100)/設(shè)定Label1隨機(jī)顯示字母的速度Label1.Left = Int(Rnd * Frame1.Width)/設(shè)定Label1代表字母出現(xiàn)的左邊位置Label1.Top = Frame1.Top/設(shè)定Label1代表字母出現(xiàn)的頂部位置End Sub 3、編寫init1子程序(用于第二個(gè)出現(xiàn)的字母)Sub init1()Label6.Caption = Chr(Int(Rnd * 26) + 97)/設(shè)定Label2隨機(jī)顯示的字母speed = Int(Rn

36、d * 100 + 100)/設(shè)定Label2隨機(jī)顯示字母的速度Label6.Left = Int(Rnd * Frame1.Width)/設(shè)定Label2代表字母出現(xiàn)的左邊位置Label6.Top = Frame1.Top/設(shè)定Label2代表字母出現(xiàn)的頂部位置End Sub 4、雙擊“開始”按鈕并輸入下列代碼:Private Sub Command1_Click()init/調(diào)用init子程序Timer1.Enabled = True/激活Time1控件Timer2.Enabled = True/激活Time2控件Command1.Visible = FalseLabel5.Caption

37、 = 200Label4.Caption = 0End Sub 5、雙擊Form1窗口,并選擇“KeyPress”對(duì)象,輸入下面的用代碼:Private Sub Form_KeyPress(KeyAscii As Integer)If Chr(KeyAscii) = Label1.Caption Then/校驗(yàn)鍵盤輸入字符和Label1顯示的字符initscore = score + 1/得分加1Label4.Caption = scoreEnd IfIf Chr(KeyAscii) = Label6.Caption Then/校驗(yàn)鍵盤輸入字符和Label2顯示的字符init1score =

38、score + 1Label4.Caption = score/Label4控件顯示得分情況End IfEnd Sub 6、雙擊Form1窗口,并選擇“Load”對(duì)象,輸入下面的用代碼:Private Sub Form_Load()RandomizeTimer1.Enabled = False/Time1控件失效Timer2.Enabled = False/Time2控件失效End Sub 7、雙擊Timer1控件并輸入下列代碼:Private Sub Timer1_Timer()Label1.Top = Label1.Top + speedIf Label1.Top Frame1.Heigh

39、t Then/第一個(gè)字母超出屏幕范圍的時(shí)候調(diào)用init子程序重新出現(xiàn)一個(gè)字母initEnd IfLabel6.Top = Label6.Top + speedIf Label6.Top Frame1.Height Then/第二個(gè)字母超出屏幕范圍的時(shí)候調(diào)用init1子程序重新出現(xiàn)一個(gè)字母init1End IfEnd Sub 8、雙擊Timer2控件并輸入下列代碼:Private Sub Timer2_Timer()Label5.Caption = Val(Label5.Caption) - 1/扣除剩余個(gè)數(shù)中的一個(gè)If Val(Label5.Caption) = 0 ThenTimer1.En

40、abled = False/剩余個(gè)數(shù)小于等于0的時(shí)候結(jié)束練習(xí)Label1.Caption = /不顯示字母Label6.Caption = Select Case scoreCase Is = 80MsgBox vbCrLf + 別放棄,再來(lái)一次!/顯示信息框Case Is 120MsgBox vbCrLf + 成績(jī)不錯(cuò),加油!Case Is 180MsgBox vbCrLf + 好厲害!最高分呀!End SelectCommand1.Visible = TrueLabel4.Caption = 0Label5.Caption = 200Timer1.Enabled = FalseTimer2

41、.Enabled = FalseEnd IfEnd Sub 上面就是全部的源代碼了,你可以運(yùn)行試試看。 LOLI:呵呵,想測(cè)試我的打字速度?那還不是小菜一碟?大叔:嘿嘿,別說(shuō)大話,先運(yùn)行一下再說(shuō)。怎么樣,得了多少分?還小菜一碟嗎?LOLI:速度太快了,要是慢一點(diǎn)的話,我肯定能夠得高分!大叔:慢一點(diǎn)?慢一點(diǎn)怎么能體現(xiàn)出你的高超技術(shù)呢?其實(shí)速度可以通過(guò)init和init1程序來(lái)控制,只要將數(shù)值更改的小一些就可以輕輕松松的得到高分了。LOLI:我想到了一個(gè)好辦法,先把速度降低,然后自己得一個(gè)高分,截圖保存之后拿給朋友看看,讓他們也測(cè)試一下,但是給他們的程序就是速度非??斓?,這樣就可以大大的刺激他們一

42、下了,哈哈哈哈。大叔:整天就想著這些損人不利己的事情,有空還是真正練習(xí)一下自己的指法比較好,省得到時(shí)候出丑呢!第五天、Flash動(dòng)畫播放器LOLI:叮當(dāng)大叔,上次你教我做媒體播放器之后不是讓我自己做一個(gè)Flash動(dòng)畫的播放器嗎?但是我始終沒(méi)有搞定,還是你來(lái)幫幫忙吧。大叔:咦,現(xiàn)在怎么變得謙虛起來(lái)了?既然是這樣,就由我出馬搞定吧。一、準(zhǔn)備工作大叔:制作Flash動(dòng)畫播放器的時(shí)候需要調(diào)用一個(gè)Flash控件Swflash.ocx,這個(gè)控件可以通過(guò)安裝Flash,或者通過(guò)安裝Windows 98自帶的Flash插件來(lái)搞定。比如采取后一種方法,只要在控制面板中選擇“添加/刪除程序”圖標(biāo),進(jìn)入“Windo

43、ws 安裝程序”界面之后在“多媒體”一項(xiàng)中點(diǎn)選“Macromedia Shockwave Flash”前的復(fù)選框確定即可。LOLI:不用這么麻煩吧,其實(shí)我的計(jì)算機(jī)中已經(jīng)安裝過(guò)Flash了,還用它制作過(guò)一些動(dòng)畫呢。大叔:切,你不早說(shuō)?浪費(fèi)我這么多口水。不過(guò)即使已經(jīng)安裝了Flash,也要用鼠標(biāo)右擊工具箱,并在彈出的部件添加窗口中選把Shockwave flash、Microsoft Common Dialog Control 6.0 (SP3)和Microsoft Windows Common Control 6.0 (SP3)這三個(gè)控件添加到工具箱中。完成這一步設(shè)置后,就可以開始制作Flash動(dòng)

44、畫播放器了。二、制作Flash播放器大叔:咱們制作的這個(gè)Flash動(dòng)畫播放器要能夠一次打開多個(gè)Flash動(dòng)畫文件,可以在播放過(guò)程中選擇播放打開的文件、隨時(shí)改變播放質(zhì)量、畫面大小等狀態(tài),而且在播放過(guò)程中可以隨時(shí)對(duì)播放的當(dāng)前幀數(shù)進(jìn)行調(diào)整或者手動(dòng)進(jìn)行逐幀播放,在狀態(tài)欄里有當(dāng)前播放狀態(tài)的相關(guān)說(shuō)明等等。下面先來(lái)添加程序所需要的控件。1、新建一個(gè)工程,將Form1的Caption屬性設(shè)置為“大叔的Flash動(dòng)畫播放器”。2、在Form1窗口中添加一個(gè)CommonDialog控件,將CommonDialog1控件的CancelError設(shè)置為“True”,DialogTitle設(shè)置為“打開Flash動(dòng)畫文件

45、”,F(xiàn)ilter屬性設(shè)置為“Flash動(dòng)畫(.swf)|.swf|”,F(xiàn)ilterIndex設(shè)置為“1”,MaxFileSize設(shè)置為“10240”。3、在Form1窗口中添加一個(gè)Slider控件,將Slider1的SelectRanger的屬性設(shè)置為“True”,SmallChange屬性和LargeChange屬性均設(shè)置為“10”,TickFrequengcy屬性設(shè)置為“20”,TextPosition設(shè)置為“1-SldBelowRight”。4、在Form1窗口中添加3個(gè)Label控件,并將Label1的Caption設(shè)置為“0幀”,Label2和Label3的Caption設(shè)置為空字符

46、串。 5、在Form1窗口中添加8個(gè)CommandButton控件,將它們的名稱屬性分別設(shè)置為“cmdOpen”、“cmdPlay”、“cmdPause”、“cmdPre”、“cmdPreFrame”、“cmdNextFrame”、“cmdNext”和“cmdExit”,Caption屬性分別設(shè)置為“打開”、“播放”、“暫?!薄ⅰ吧弦粋€(gè)”、“上一幀”、“下一幀”、“下一個(gè)”和“退出”。6、在Form1窗口中添加一個(gè)Status Bar控件,在這個(gè)控件上單擊鼠標(biāo)右鍵并選擇“屬性”命令,從彈出的窗口中選擇“窗格”標(biāo)簽,用鼠標(biāo)點(diǎn)擊“插入窗格”5次表示插入5個(gè)狀態(tài)窗格,在索引15中分別設(shè)置“文本”屬性

47、分別為“共打開了0個(gè)文件”、“狀態(tài):”、“等待”、“幀數(shù):”、“0”。7、接著按下“Ctrl+E”的組合按鍵進(jìn)入菜單編輯器,設(shè)置第一個(gè)菜單標(biāo)題為“顯示控制”,名稱為mnuDisplay。在“顯示控制”菜單下分別設(shè)立“全部顯示”、“隨窗口大小變化”和“縮放至窗口大小”子菜單標(biāo)題,名稱分別為:mnuDisplay0、mnuDisplay1和mnuDisplay2。設(shè)置第二個(gè)菜單標(biāo)題為“質(zhì)量控制”,名稱為mnuQuality。在“質(zhì)量控制”菜單下分別設(shè)立“低分辨率”和“高分辨率”的子菜單,名稱分別為mnuQuality0和mnuQuality1。設(shè)置第三個(gè)菜單標(biāo)題為“播放控制”,名稱為mnuPlay

48、Control。在“播放控制”菜單下分別設(shè)立“循環(huán)播放”、“放大畫面”和“縮小畫面”子菜單,名稱分別為mnuLoopPlay、mnuZoomIn和mnuZoomOut。8、選擇“工程”菜單下的“添加窗體”命令,新增一個(gè)窗口Form2作為播放窗口。在Form2上加入1個(gè)ShockwaveFlash控件和1個(gè)Timer控件,將Timer1控件的Interval屬性設(shè)置為“20”。最后,對(duì)各窗體、控件的大小和位置進(jìn)行適當(dāng)?shù)恼{(diào)整,LOLI:乖乖,看來(lái)這次是玩真的了,又是控件又是菜單,還有一個(gè)播放窗口,厲害。大叔:下面就來(lái)針對(duì)Form1進(jìn)行代碼添加。1、雙擊Form1窗口,并選擇“通用”對(duì)象,輸入下面的

49、通用代碼:Dim FileNames() As String /用于保存打開的文件名稱Dim PlayFileNum As Integer/用于計(jì)算正在播放的文件序號(hào)Dim TotalFile As Integer/用于統(tǒng)計(jì)打開的文件總數(shù) 2、雙擊“打開”按鈕并輸入下列代碼:Private Sub cmdOpen_Click()On Error GoTo ExitOpenCommonDialog1.Flags = cdlOFNAllowMultiselect Or cdlOFNFileMustExist Or cdlOFNExplorerCommonDialog1.FileName = Com

50、monDialog1.ShowOpen/顯示“打開”對(duì)話框。FileNames() = Split(CommonDialog1.FileName, vbNullChar)/以vbNullChar作為子字符串的邊界分隔字符串CommonDialog1返回的FileNameIf UBound(FileNames) = 0 Then/只打開了一個(gè)文件Form2!ShockwaveFlash1.Movie = FileNames(0)TotalFile = 1PlayFileNum = 0Else/打開了多于一個(gè)文件Form2!ShockwaveFlash1.Movie = FileNames(0)

51、FileNames(1)TotalFile = UBound(FileNames)PlayFileNum = 1End IfStatusBar1.Panels(1).Text = 共打開了 Trim(Str(TotalFile) 個(gè)文件cmdPlay_ClickExitOpen:End Sub 3、雙擊“播放”按鈕并輸入下列代碼:Private Sub cmdPlay_Click()If TotalFile 1 Then Exit Sub /還沒(méi)有打開文件。Form2.Caption = FileNames(PlayFileNum) 大叔的Flash動(dòng)畫播放器/顯示Form2開始播放動(dòng)畫For

52、m2.ShowForm2!ShockwaveFlash1.Playing = TrueIf TotalFile = 1 Then PlayFileNum = 0StatusBar1.Panels(3).Text = 正在播放文件: FileNames(PlayFileNum) /顯示狀態(tài)條的信息Slider1.Max = Form2!ShockwaveFlash1.TotalFrames/顯示滑動(dòng)條的狀態(tài)Label2.Caption = Str(Slider1.Max / 2) 幀Label3.Caption = Str(Slider1.Max) 幀End Sub 4、雙擊“暫?!卑粹o并輸入下列代碼:Private Sub cmdPause_Click()Form2!ShockwaveFlash1.StopEnd Sub 5、雙擊“上一個(gè)”按鈕并輸入下列代碼:Private Sub cmdPre_Click() If TotalFile 1 Then/打開多個(gè)文件時(shí)PlayFileNum = PlayFileNum 1If PlayFileNum 1 Then PlayFileNum = TotalFileForm2!ShockwaveFlash1.Movie = FileNames(0) FileNames(PlayFileN

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論