《VB基礎(chǔ)語法》PPT課件
《《VB基礎(chǔ)語法》PPT課件》由會員分享,可在線閱讀,更多相關(guān)《《VB基礎(chǔ)語法》PPT課件(44頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第三章 VBS的基本語法,3.1 基本數(shù)據(jù)類型 數(shù)值型 integerlongsingledoublecurrencybyte 字符串類型 string 日期類型 date 同時表示日期和時間 dim firstday as date firstday=#99/12/31# firstday=“99/12/31” firstday=“22:30:50”,邏輯類型 boolean 邏輯型變量的取值范圍只能是true(-1)或false(0)。 Dim switch as boolean switch=true switch=-1 這兩條賦值語句功能是相同。 變體類型 variant 變體型變量
2、是一種十分靈活的變量,可以保存各種類型 的數(shù)據(jù)。在定義變量中沒有明確指明數(shù)據(jù)類型時,變量缺省時定義為變體類型。 dim x dim y as variant 上述兩個語句都是定義一個變體變量。,對象類型 定義對象變量時,可以直接指明對象的類型。 dim obj1 as commandbutton dim obj2 as textbox 定義了對象變量后,使用set語句為對象變量賦值。 Set obje=command1 obj1.caption=“打開” 修改命令按鈕的標題 obj1.fontbold=true 用戶自定義類型 它類似于C語言中的“結(jié)構(gòu)體”類型的數(shù)據(jù)。 Type 類型名
3、元素名 as 類型 元素名 as 類型 元素名 as 類型 end type,例:定義一個employee(職工)類型,其中包括職工號、姓名、年齡。 Type employee empno as integer name as string*10 age as integer end type dim emp as emloyee 在后面的程序中我們可以用“變量.元素”這樣的形式來引用各個成員。 emp.name=“張三” emp.no=83001 emp.age=21 3.2 變量的聲明 在VB中使用一個變量時,可不加任何聲明而直接使用,叫做隱式聲明。使用這種方
4、法雖簡單,但卻不利于程序調(diào)試,所以一般對于變量最好先聲明,后使用。設(shè)置方式: 在“工具”菜單中選“選項”,在對話框中選“編輯器”,在“要求變旦聲明”中選中。 dim 變量名 as 數(shù)據(jù)類型 dim name as string dim sum(3) as integer,使用static聲明變量 static 變量名 as 數(shù)據(jù)類型 static a as integer 使用static聲明變量為靜態(tài)變量。它與dim聲明的變量不同之處在于在執(zhí)行一個過程結(jié)束時,過程中所用到的static變量的值會保留,下次再調(diào)用此過程時,變量的初值是上次調(diào)用結(jié)束時被子保存留的值,而dim 聲明的變量在過程結(jié)
5、束時不保留,每次調(diào)用時需要重新初始化。 3.3 運算符和表達式 算術(shù)運算符 +-*/(整除)mod 關(guān)系運算符 == 邏輯運算符 notandorxor(邏輯異或)eqv(邏輯等于),3.3 字符串連接運算符 +& c=“abcd” + “ef” c=“abcd” & “ef”這兩式子的運算結(jié)果是相同。 但是,由于“+”號同時也是加法運算符,VB又支持變體型的變量,所以將加號用做字符串連接運算符有時會引起混淆。因此,在進行字符串連接時應該 選用“&”操作符而不是“+”操作符。 3.4 基本語句 賦值語句 變量名=表達式 條件語句 1)if then 語句 2)if then 語句組
6、 endif,3)if then 語句組1 else 語句組2 endif (例:ch03 ex3.vbp) 4)if then 語句組1 else if then 語句組2 else 語句組3 endif (例:ch03ex4.vbp),,,,,,,語句組1,條件,語句組2,,,,,T,F,,,條件1,,,,語句組1,,,條件2,,,,語句組2,,語句組3,,,,,,,,T,F,T,F,多分支語句 select case 變量或表達式 case 值1 語句組1 case 值2 語句組2 case 值3
7、語句組3 case else 語句組n end select (例:ch03ex5.vbp) 變量或表達式:可以是整型或字符串表達式 值:是一組用逗號分隔枚舉值。,(例:編寫一個分數(shù)等級轉(zhuǎn)換表 分數(shù)等級 =90 優(yōu) =80 良 =70 中 =60 及格 <=60 不及格 x = Val(Text1.Text) Select Case x 10 Case 10, 9 Text2.Text = 優(yōu) Case 8 Text2.Text = 良 Case 7 Text2.Text = 中 Case 6 Te
8、xt2.Text = 及格 Case 0, 1, 2, 3, 4, 5 Text2.Text = 不及格 End Select 轉(zhuǎn)向語句 goto 標號 on 表達式 goto 標號1,標號2,,循環(huán)語句 1)do while 條件 語句體 exit do 語句體 loop 2)do 語句體 exit do 語句體 loop while 條件 條件真時退出循環(huán) 3)do until 條件 條件假時執(zhí)行循環(huán)體 語句體 exit do 語句體 loop 4)for 循環(huán)變量=初值 to 終值 step步長 語句體
9、 exit for 語句體 next 循環(huán)變量,例:(實驗書第三章練習三)編寫求一元二次方程根。(ch03練習3.vbp) 注:format(numer,fmt) 功能:將數(shù)值型量轉(zhuǎn)為字符型量。 Numer:為一個數(shù)值型 量。 Fmt:為用戶定義格式。 #:顯示數(shù)字,不在前或后補0。 0:顯示數(shù)字,在前或后補0 . :小數(shù)點。 ,:千位符。 %:百分比。 例:x=2.33333 format(x, “##.##”) 結(jié)果為:2.33 字符串 例:求 1+2+3++100的和 (ch03ex6.vbp) 例:設(shè)計一個窗體打印九九乘法表 (ch03ex7.vbp) 例:編寫求1*1+2*
10、2+3*3+100*100的和。 Vb常用函數(shù):(見P67),,3.5 以對象為核心的程序設(shè)計 在VB的程序設(shè)計中,對象起著最重要的角色,窗體是一個對象,每一個放置在窗體上控件也都是對象。由于VB是面向?qū)ο蟮某绦蛟O(shè)計語言,它的代碼結(jié)構(gòu)與對象有著很大關(guān)系,在VB中每一 個窗體和控件都有一些預先定義好了的事件。 例:命令按鈕對象,當用戶單擊命令按鈕時,命令按鈕對象會產(chǎn)生click事件。,,Click事件,,Private sub command1_click() 被驅(qū)動執(zhí)行的程序 end sub,(單擊鼠標左鍵),對程序而言,可以不處理這個事件,此時這個事件對程序便沒有什么作用。但是如果程序要處
11、理這個事件,該如何進行?,因此,如果覺得某個對象的某種事件有進行處理的必要,則以“該 對象的名稱”與“該事件的名稱”定義這個事件程序,如下示: private sub 對象名_事件名() 在此編寫希望被驅(qū)動執(zhí)行的程序 end sub 將來該對象的這個事件發(fā)生時,其對應的事件程序會被驅(qū)動。以后學習每一種對象時,需了解該對象會產(chǎn)生哪些事件和事件發(fā)生時機,這樣才能讓用戶與所編寫的程序充分產(chǎn)生交互關(guān)系。 了解對象的特性 其實很多對象只要看它的名字,就可以了解它的基本特性。 例如:textbox 同時亦可以通過了解對象的屬性。 懂得控制對象 控制對象的方法不外乎以下兩種: 1
12、)設(shè)置對象屬性 2)調(diào)用對象方法,其實方法是對象內(nèi)部的子程序,這種子程序的作用是要求對象執(zhí)行某件工作。 例如:很多控件都具有move方法,調(diào)用這個方法可讓控件移動它的位置。 查閱“方法” 要了解某一種對象提供了哪些方法,可以打開該 對象的MSDN幫助文件,再選取“方法”選。 3.6 常用事件在程序設(shè)計中應用 事件驅(qū)動模式是VB程序的主流,我們必須了解每一種對象會產(chǎn)哪些事件,以及這些事件產(chǎn)生的時機。隨著對象在特性上的差異,可能產(chǎn)生的事件也會有的不同。下面先介紹一些常用事件,及在程序設(shè)計中應用。 生與滅事件 事件 發(fā)生時機 initialize 窗體第一次被裝入時
13、terminate 窗體最后一次被卸載時 load 窗體每一次被裝入時 unload 窗體每一次被卸載時 queryunload 窗體每一次被卸載時,Initialize與load事件區(qū)別 同樣都是發(fā)生在窗體被裝入時,兩者很容易混淆,實際上intialize事件只有在窗體第一次被裝入時發(fā)生,而load事件是在窗體每次被裝入時都有發(fā)生。 例:打開第三章formlife.vbp 什么程序代碼寫在intialize或load事件程序? 1)控件的初始化:幾乎都是放在load事件程序中,因為控件會隨著窗體的卸載而一起被清除,所以每次被裝入時都
14、要進行初始化。 2)變量的初始化:放在initialize事件程序中居多,因為變量的內(nèi)容光煥發(fā)不會隨著窗體的卸載波而消失。當然,如果希望每次窗體被裝入時都有重新設(shè)置變量的內(nèi)容,就要將變量的初始化放在load事件程序中。 如何禁止用戶使用關(guān)閉按鈕半閉窗體? 在unload事件程序中含有一個cancel參數(shù),如果將這個參數(shù)設(shè)置為true則窗體就不能關(guān)閉。,例:在程序中不允許用戶通過單擊關(guān)閉按鈕關(guān)閉窗體。 Dim switch as boolean form_unload if not switch then cancel=true endif end sub command1_cli
15、ck switch=true unload me end sub Queryunloadd與unload事件有何區(qū)別 queryunload比unload事件先發(fā)生。,Queryunload事件比unload事件多了一個unloadmode參數(shù) unloadmode可以取值 意義 vbformcontrolmenu(=0) 用戶單擊窗體上的關(guān)閉按鈕 vbformcode(=1) unload語句調(diào)用 vbappwindows(=2) 用戶結(jié)束windows操作系統(tǒng) 也即可以利用unloadmode參數(shù)來判斷用戶是否用鼠標單
16、擊了窗體上的關(guān)閉按鈕。借助queryunload事件的參數(shù)簡化上面的程序。 Private sub command1_click() unload me end sub private sub form_queryunload(cancel as integer,unloadmode as integer) if unloadmode=vbformcontrolmenu then cancel=true end sub,,Queryunload事件另一個應用: 經(jīng)常用來檢驗程序結(jié)束前,窗口關(guān)閉前是否已經(jīng)保存了該保存的東西,如果尚未保存,就顯示一個對話框的信息。 對話框msgbox函數(shù)使用。
17、 Msgbox函數(shù)格式: msgbox(prompt ,buttons,title) prompt:是一個字符串,設(shè)置顯示在對話框中信息內(nèi)容。 Buttons:(可選參數(shù))用于顯示對話框中顯示按鈕數(shù)。形式、圖樣見P77。 Tile:(可選參數(shù))設(shè)置顯示在對話框標題中信息。,,,title,prompt,,,,,,buttons,例:練習使用msgbox函數(shù)(ch03練習11.vbp) 1)調(diào)用msgbox顯示兩個按鈕(是,否),提示信息“要關(guān)閉窗體嗎?”。是,關(guān)閉窗體,否, 2)調(diào)用msgbox提示信息為“操作錯誤”顯示圖標為 3)調(diào)用msgbox提示信息為“沒有滿足條件的記錄”,顯示圖標為
18、: 例:(第三章練習5)編寫一個程序,當用戶單擊窗體關(guān)閉按鈕時,彈出對話框,要用戶確定是否真的關(guān)閉窗體,是關(guān)閉,否取消關(guān)閉窗體。 狀態(tài)改變的事件 事件發(fā)生時機 activate 當窗體成為活動窗口時 deactivate 當窗體不再是活動窗口時 gotfocus 對象獲得焦點時 lostfocus 對象丟失焦點時 rezies 對象大小改變時,Activate與gotfocus事件有何區(qū)別 只有窗體對象才有activate事件,其他控件都有沒有activate事件,它表示窗體變成“活動窗口” gotfocus事件中,除
19、了窗體對象含有這個事件外,其它控件如命令按鈕,文本框、復選框、圖片框等,也都有含有這個事件。 當光標落在某個對象上(對象獲得焦點時)則會發(fā)生gotfocus事件。 例:當輸入光標移到textbox時,整個textbox都變成被選區(qū)。 注:在textbox控件對象中有兩個屬性,用途是用來設(shè)置選取區(qū)。 Selstart 設(shè)置選取區(qū)的起始位置 sellength 用來設(shè)置選區(qū)的長度 private sub text1_gotfocus() text1.selstart=0 text1.sellength=len(text1.text) end sub 例:(第三章練習六)當輸入光標移到t
20、extbox時,希望將其文字顏色設(shè)置為紅色,以提醒用戶注意,當輸入光標離開textbox其文字還原原來的黑色。,當窗體大小改變時會發(fā)生resize事件 例:讓控件隨著窗體一起調(diào)整大小。(在窗體上放置textbox及picturebox) private sub form_resize() text1.left=0 text1.top=0 text1.width=me.scalewidth/2 text1.height=me.scaleheight picture1.left=me.scalewidth/2 picture1.top=0 picture1.height=me.scaleheigh
21、t end sub 鍵盤類事件 事件 發(fā)生時機 keypress 用戶按下鍵盤并且放開時 keydown 用戶按下鍵盤時 keyup 用戶放開按鍵時,例:(ch03/ex12.vbp)P85 鼠標類事件 事件 發(fā)生時機 click 用戶在對象上按下鼠標左鍵并且放開時 dblclick 用戶在對象上面雙擊鼠標時 mousedown 用戶在對象上面按下鼠標左鍵時 mouseup 用戶在對象上面放開鼠標左鍵時 mousemove 用戶在對象上面移動鼠標時 mouseup和click事件有何
22、區(qū)別 1)如果用戶在對象上按下鼠標左鍵,而鼠標仍然在對象上時放開鼠標,會先發(fā)生mouseup事件再發(fā)生click事件。 2)若用戶在對象上按下鼠標左鍵,然后將鼠標移到對象之外再放開鼠標:只發(fā)生mouseup事件。 3)若用戶在對象之外按下鼠標左鍵,然后將鼠標移到對象上再入開鼠標:只發(fā)生mouseup事件。,Mouseup與click選擇 在windows操作的慣例中,所謂“用鼠標單擊”指的是“按下鼠標左鍵,不要移開鼠標并放開鼠標左鍵”(也就是click意思)。因此,如果程序想要針對用戶“用鼠標單擊”做反應,就應該 將程序編寫在click事件程序中。 至于mouseup事件通常與mousedow
23、n配對使用。 例:寫一個可供用戶畫線的程序,當用戶按下鼠標左鍵時,決定線段的第一點,然后用戶會移動鼠標,當放開鼠標左鍵時,就由第一點畫一條線到鼠標指針所在的位置。(ch03練習7a.vbp) 如何在對象上作圖 1)用pset方法畫點 格式:對象名.pset (x,y) ,顏色 其中顏色可以用RGB函數(shù)指定或符號常量(vbred vbgreen vbblue) rgb(red,green,blue) 其中:red,green,blue取值0255的整數(shù)。點的大小由對象的drawWidth屬性決定。 功能:返回一個顏色值。,,例:在窗體中隨機地顯示若干彩色的點。窗體上有兩個命令按鈕:“畫點”和“退
24、出”。單擊“畫點”按鈕,則在窗體上隨機畫上若干點。單擊“退出”按鈕,結(jié)束程序的運行。(ch03練習13.vbp) Private Sub Command1_Click() For i = 1 To 3000 x = Rnd * Width y = Rnd * Height r = Int(256 * Rnd) g = Int(256 * Rnd) b = Int(256 * Rnd) PSet (x, y), RGB(r, g, b) Next i End Sub,例:設(shè)計一個窗體使用鼠標在其上任意繪制圖形。(ch03ex8.vbp) Dim mouse As Boolean mouse變
25、量用來標志畫圖的開始 Private Sub Form_Load() mouse = False Me.ForeColor = vbRed Me.DrawWidth = 2 End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) mouse = True PSet (X, Y) End Sub,Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As
26、Single) If mouse Then PSet (X, Y) End If End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) mouse = False End Sub,2)line方法 對象.line step(x1,y1) - step(x2,y2),顏色,BF 功能:用來畫直線和矩形框等。 Step:設(shè)置坐標值是絕對坐標還是相對坐標。(有step 是相對坐標) 缺省step(x1,y1)時:從上一次畫圖點到當前點畫直線。 選擇B:利用對角坐標
27、畫出矩形。 選擇F:矩形以矩形邊框填充。 直線的寬度由對象的drawWidth指定,直線的樣式由對象的drawStyle屬性指定。(P145) 3)circle方法 對象.circle step(x,y),r,c,sang,eang,mod (x,y) 園、園弧或者橢圓的園心坐標。 r 園、園弧的半徑。 c 設(shè)置繪圖顏色。 sang 在畫園弧時設(shè)置園弧或橢圓弧的起始角度(0--2)。 eand 在畫園弧時設(shè)置園弧或橢圓弧的終止角度(0--2) 。 Mod 在畫橢圓時設(shè)置橢圓的縱橫比值(大于1則橢圓細而高) 園的樣式:由對象的fillStyle屬性決定。P150。線的寬度由對象的dr
28、awWidth指定,線的樣式由對象的drawStyle屬性指定。 畫扇形:則起始角及終止角都是取負值。(ch03ex10.vbp),例:設(shè)計一個窗體,單擊繪圖按鈕時,在窗體繪制如下圖形:(ch03ex9.vbp),Private Sub Command1_Click() Circle (2500, 1500), 1000 Circle (2500, 1500), 1000, , , , 2.5 Form1.FillStyle = 7 Circle (2500, 1500), 1000, , , , 0.4 End Sub,例:設(shè)計一個窗體,在上面繪制如下圖所示的弧和扇形(ch03ex10.vb
29、p),Const pi = 3.14159 Private Sub Form_Load() Me.Show Me.ForeColor = vbRed Me.DrawWidth = 2 Circle (1800, 500), 1000, , -pi, -1.5 * pi Circle (3500, 500), 1000, , pi, 1.5 * pi End Sub,例: 1)在picture1(300,300)上畫一點,(ch03畫圖方法.vbp) 2)在picture1上畫從(600,600)(1000,1000)兩點直線,顏色紅色。 3)在picture1上畫以點(1200,1000)到點
30、(2000,2500)對角點矩形,顏色為綠色。 4)在picture1上畫以(1500,600)為園心半徑200,顏色為藍色的園。 5)在picture1上畫園弧,以(4500,600)為園弧園心,半徑400,起始角900,終止角2700。 6)在picture1上畫橢圓,橢園園心為(3500,1500),半徑為500,橢園橫軸與縱軸比率0.5,線條顏色為黃色。,例:設(shè)計一個窗體,根據(jù)用戶輸入的三個班的學生人數(shù),顯示各班人數(shù)所占比例的餅圖(ch03ex11.vbp),Option Explicit Const pi = 3.14159 Private Sub Command1_Click()
31、Dim a, b, c, s, i As Integer a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) s = a + b + c,Picture1.FillStyle = 0 For i = 1 To 200 Picture1.FillColor = vbRed Picture1.Circle (1500, 1500 - i), 1000, vbRed, -2 * pi, -2 * pi * a / s, 2 / 3 Picture1.FillColor = vbGreen Picture1.Circle (1500,
32、 1500 - i), 1000, vbGreen, -2 * pi * a / s, -2 * pi * (a + b) / s, 2 / 3 Picture1.FillColor = vbBlue Picture1.Circle (1500, 1500 - i), 1000, vbBlue, -2 * pi * (a + b) / s, -2 * pi, 2 / 3 Next i Picture1.FillColor = vbRed Picture1.Circle (1500, 1500 - i), 1000, vbWhite, -2 * pi, -2 * pi * a / s, 2 /
33、3 Picture1.FillColor = vbGreen Picture1.Circle (1500, 1500 - i), 1000, vbWhite, -2 * pi * a / s, -2 * pi * (a + b) / s, 2 / 3 Picture1.FillColor = vbBlue Picture1.Circle (1500, 1500 - i), 1000, vbWhite, -2 * pi * (a + b) / s, -2 * pi, 2 / 3 End Sub,回到上一例(ch03練習7a.vbp) dim x0,y0 as integer private su
34、b form_mousedown(button as integer,shift as integer, x as single, y as single) x0=x y0=y me.mousepointer=2 end sub private sub form_mouseup(button as integer, shift as integer, x as single,y as single) line (x0,y0)-(x,y) end sub,,如何讓畫線的程序具有預覽的功能?(ch03練習7.vbp) 所謂“預覽”意思是移動鼠標時,可以看到要畫的線,而當放開鼠標時,決定最終直線。
35、分析: 定義 全程變量 (x0,y0) 表示畫直線起始點 (x1,y1) 表示上一次畫直線的終點坐標。 1)利用mousedown獲得畫直線起始點 x0=x, y0=y 并將畫圖方式選擇為: me.drawmode=vbnotxorpen (原值:vbcopypen) 含義:同一圖形(在同一位置上)畫兩次等于沒有畫。 2)利用mousemove(鼠標移動時發(fā)生事件) 首先注意畫直線起始點確定沒有?(有起始點才能畫直線 isempty(x0)=false) 第一次(從起始點)移鼠標時畫直線(isempty(x1)=true) line(x0,y0)-(x,y) x1=x, y
36、1=y 、,第二次(及以上)移動鼠標時: 首先將上一次畫直線擦去 (isempty(x1)=false ) line (x0,y0)-(x1,y1) 然后再畫新的直線 line(x0,y0)-(x,y) x1=x, y1=y 3)利用mouseup事件捕獲畫直線最后一點。 如果有直線起始點(x0,y0)且有(x1,y1) 首先擦去已畫過直線 line(x0,y0)-(x1,y1) x1=empty 將畫筆改回初始值:me.drawmode=vbco
37、pypen 畫直線:line(x0,y0)-(x,y) x0=empty 4)利用isempty(變量名)判斷是否有直線的起始點及上一次畫直線的終止點。(ch03練習7.vbp) 對話框的設(shè)計 對話框是VB應用程序與用戶進行信息交換的窗口,可以使用VB提供函數(shù),msgbox函數(shù)或inputbox函數(shù)作為對話框,亦可以使用commondialog控件設(shè)計對話框,甚至用戶自已設(shè)計對話框。,Inputbox函數(shù) inputbox(prompt ,title) prompt:用于設(shè)定顯示在對話框中的信息內(nèi)容。 Title:是一個可選參數(shù),用于設(shè)定顯示在對話框中標題的信息內(nèi)容。 函數(shù)返回值:返回用戶輸入
38、字符串,如果用戶單擊cancel則返回空字符串。 注意:使用inputbox函數(shù)作對話框,一般只用于簡單數(shù)據(jù)輸入到窗口。 例:編寫一個具有預覽功能畫弧程序。(ch03練習10.vbp) 在對象上畫弧的方法: 對象名.circle (x,y),r,c,sang,eang 1)在通用中定義全局變量 Dim ang1, ang2 As Single Dim r1 As Single Dim x0, y0 As Single 2)在窗體上放置一個命令按鈕,單擊命令按鈕開始畫弧,輸入畫弧起始角及終止角。,Private Sub Command1_Click() pi = 3.14 ang1 = pi *
39、 (Val(InputBox(輸入起始角:))) / 180 ang2 = pi * (Val(InputBox(輸入終止角:))) / 180 End Sub 3)在mousedown事件中獲得畫弧的園心。 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) x0 = X y0 = Y Me.DrawMode = vbNotXorPen End Sub 4)在mousemove事件中,將上一次弧擦掉,畫新的弧。,Private Sub Form_MouseMove(
40、Button As Integer, Shift As Integer, X As Single, Y As Single) If Not IsEmpty(x0) Then If Not IsEmpty(r1) Then Circle (x0, y0), r1, , ang1, ang2 End If r1 = ((X - x0) 2 + (Y - y0) 2) 0.5 Circle (x0, y0), r1, , ang1, ang2 End If End Sub,5)在mouseup 事件中畫出最后圖形 Private Sub Form_MouseUp(Button A
41、s Integer, Shift As Integer, X As Single, Y As Single) If Not IsEmpty(x0) Then If Not IsEmpty(r1) Then Circle (x0, y0), r1, , ang1, ang2 End If Me.DrawMode = vbCopyPen r1 = ((x0 - X) 2 + (y0 - Y) 2) 0.5 Circle (x0, y0), r1, , ang1, ang2 x0 = Empty r1=empty End If End Sub,3.7 主動模式的程序設(shè)計 除了“事件驅(qū)動”
42、程序設(shè)計模式之外,VB也允許我們將程序設(shè)置成“主動模式”。主動模式的程序與以前我們所講DOS程序很相似。 如何將程序設(shè)置為主動模式 1)啟動VB,建立一個“標準EXE”工程,選取“工程/工程名稱屬性”菜單命令,在“工程屬性”對話框中,將“啟動對象”設(shè)置為“sub main()” 2)利用菜單的“工程/添加模塊”命令新增一個模塊,在標準模塊的代碼窗口中輸入sub main子程序。 3)執(zhí)行這個程序。 例:建立一個工程名為:主動 .vbp 工程,并且在該工程中建立一個submain()子程序,讀取用戶數(shù)據(jù),且設(shè)置為啟動對象。 1)啟動VB,在“工程/工程屬性”中將“啟動對象設(shè)置為:submain
43、2)在“工程/添加模塊”中添加一個標準模塊。在標準模塊代碼窗口中輸入submain子程序。,使用MSChart控件繪制圖形 除了利用line和circle方法繪制各種幾何圖形外,也可以直接利用VB中的MSChart控件支持真正的三維表示,支持所有主要的圖表類型,值和數(shù)據(jù)點以條形圖、折線圖、標記圖、填充區(qū)域圖或餅圖形式顯示。,sub main() dim s as string s=inputbox(“ 請輸入數(shù)據(jù)“) msgbox “您輸入了” + s end sub doevents與主動模式程序 對VB程序而言,主動模式與事件驅(qū)動模式是可以并存的,如果我們所編寫的程序只含有主動模式程序代碼,將語句一行一行地編寫成主程序和相關(guān)子程序即可。 但是如果所編寫的程序同時有主動模式和事件驅(qū)動模式的程序代碼,那么就不應該讓主動模式的程序執(zhí)行費時很多工作,因為主動模式的程序執(zhí)行時,其他事件驅(qū)動模式的程序代碼將被鎖住,而無法執(zhí)行。 當然有時候還是很難避免讓主動模式的程序執(zhí)行費時很久的工作,就必須在主程序中插入doevents語句使主程序做間歇性的休息,允許其他的事件驅(qū)動模式的程序代碼有機會被執(zhí)行。,例:打開ch03doevets.vbp工程,,
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。