VB可視化界面設(shè)計(jì).ppt
《VB可視化界面設(shè)計(jì).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《VB可視化界面設(shè)計(jì).ppt(78頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第2章VB可視化界面設(shè)計(jì) 主講 XXXXTEL XXXX 2 第2章VB可視化界面設(shè)計(jì) 2 1導(dǎo)學(xué)案例2 2面向?qū)ο蠡镜母拍? 3窗體和基本控件2 4綜合應(yīng)用2 5擴(kuò)展與提高 3 2 1導(dǎo)學(xué)案例 例2 1 編一個(gè)大小寫(xiě)轉(zhuǎn)換的程序 單擊 轉(zhuǎn)換為小寫(xiě) 按鈕把左邊文本框輸入的字符串中的字母全部轉(zhuǎn)換為小寫(xiě) 單擊 轉(zhuǎn)換為大寫(xiě) 按鈕把左邊文本框輸入的字符串中的字母全部轉(zhuǎn)換為大寫(xiě) 轉(zhuǎn)換結(jié)果在右邊文本框中顯示 運(yùn)行界面如下圖所示 4 設(shè)計(jì)步驟如下 1 界面設(shè)計(jì)第一步 改變窗口標(biāo)題名 實(shí)現(xiàn)方法是把窗體的Caption屬性設(shè)置為 大小寫(xiě)轉(zhuǎn)換 第二步 在窗體上畫(huà)兩個(gè)文本框 分別用于接收用戶輸入的原始字符串和顯示轉(zhuǎn)換后的字符串 第三步 在窗體上畫(huà)兩個(gè)標(biāo)簽用于顯示提示信息 設(shè)置它們的Caption屬性分別為 原始字符串 和 轉(zhuǎn)換后的字符串 第四步 在窗體上畫(huà)三個(gè)命令按鈕 設(shè)置它們的Caption屬性分別為 轉(zhuǎn)換為小寫(xiě) 轉(zhuǎn)換為大寫(xiě) 和 退出 5 2 編寫(xiě)事件過(guò)程代碼如下 PrivateSubCommand1 Click Dimf c 使用變量f Text1 Textc LCase f Text2 Text cEndSubPrivateSubCommand2 Click Text2 Text UCase Text1 Text 不使用變量 直接使用文本框EndSubPrivateSubCommand3 Click EndEndSub 6 說(shuō)明 界面設(shè)計(jì)目的就是使計(jì)算機(jī)能與用戶進(jìn)行如下交流 顯示相關(guān)信息和程序運(yùn)行的結(jié)果 接收用戶輸入的數(shù)據(jù)和命令 在VB中 窗體是最基本的對(duì)象 一個(gè)應(yīng)用程序都包含有窗體對(duì)象 控件也是VB的對(duì)象 它們和窗體是應(yīng)用程序的 積木塊 共同構(gòu)成用戶界面 7 本例中用到幾個(gè)常用界面元素及其作用 1 窗體Form 窗體是任何一個(gè)應(yīng)用程序必不可少的對(duì)象 因?yàn)榇绑w是其他對(duì)象的載體 各類控件對(duì)象必須建立在窗體上 窗體就如一塊 畫(huà)布 是所有控件的容器 用戶可以根據(jù)自己的需要利用工具箱上的控件在 畫(huà)布 上 畫(huà) 界面 2 標(biāo)簽Label的作用是顯示信息 在例2 1中分別顯示 原始字符串 和 轉(zhuǎn)換后的字符串 的提示信息 讓用戶對(duì)界面的操作更加明了 3 文本框Text用于顯示和接收數(shù)據(jù) 如例2 1中左邊的文本框Text1用于接收用戶輸入要轉(zhuǎn)化的字符串 右邊的文本框Text2顯示轉(zhuǎn)化后的字符串 4 命令按鈕Command用于驅(qū)動(dòng)相關(guān)命令 事件過(guò)程代碼 的執(zhí)行 例如 在例2 1中單擊 退出 按鈕時(shí)驅(qū)動(dòng)事件過(guò)程代碼End的執(zhí)行 結(jié)束程序的運(yùn)行 8 2 2面向?qū)ο蠡镜母拍?2 2 1對(duì)象對(duì)象是客觀世界中的事物或人們頭腦中的各種概念在計(jì)算機(jī)程序中的抽象表示 或者說(shuō) 是現(xiàn)實(shí)世界中個(gè)體的數(shù)據(jù)抽象模型 是面向?qū)ο蟪绦蛟O(shè)計(jì)的基本元素 一本書(shū) 一家圖書(shū)館 一輛汽車等都是一個(gè)對(duì)象 一份報(bào)表 一個(gè)賬單也是一個(gè)對(duì)象 可見(jiàn) 世界上的各個(gè)事物都是由各種 對(duì)象 組成的 任何事物都是對(duì)象 是某一個(gè)對(duì)象類的一個(gè)實(shí)例 每個(gè)對(duì)象都有自己的特征 行為和發(fā)生在該對(duì)象上的一切活動(dòng) 如以某個(gè) 學(xué)生 作為對(duì)象 該對(duì)象具有姓名 學(xué)號(hào) 性別 身高 體重 年齡等特征 具有學(xué)習(xí) 行走 睡覺(jué)等行為 以及外界作用在 學(xué)生 對(duì)象上的各種活動(dòng) 如上課鈴響 放學(xué)等 9 2 2 2屬性 屬性是一個(gè)對(duì)象的特性 不同的對(duì)象有不同的屬性 VB程序中的對(duì)象都有許多屬性 它們是用來(lái)描述和反映對(duì)象特征的參數(shù) 例如 控件名稱 Name 標(biāo)題 Caption 文本 Text 顏色 Color 字體 Font 是否可見(jiàn) Visible 等屬性決定了對(duì)象展現(xiàn)給用戶的界面具有什么樣的外觀及功能 同類對(duì)象的屬性是一樣的 也就是具有相同的屬性 如人 具有相同的屬性 區(qū)別不同的人 也就是不同的對(duì)象 就在于屬性值的不同 10 對(duì)象屬性的設(shè)置 除了用屬性窗口設(shè)置對(duì)象屬性外 也可以在程序中用程序語(yǔ)句設(shè)置 一般格式如下 對(duì)象名 屬性名 屬性值例如 給一個(gè)對(duì)象名為Command1的命令按鈕的Caption屬性賦值為 確定 其在程序代碼中的書(shū)寫(xiě)形式為 Command1 Caption 確定 11 2 2 3事件 事件過(guò)程和事件驅(qū)動(dòng) VB是采用事件驅(qū)動(dòng)編程機(jī)制的語(yǔ)言 傳統(tǒng)編程使用的是面向過(guò)程 按順序進(jìn)行的機(jī)制 這種編程方式的缺點(diǎn)是寫(xiě)程序的人總是要關(guān)心什么時(shí)候發(fā)生什么事情 而在事件驅(qū)動(dòng)編程中 程序員只要編寫(xiě)響應(yīng)用戶動(dòng)作的程序 如選擇命令 移動(dòng)鼠標(biāo)等 而不必考慮按精確次序執(zhí)行的每個(gè)步驟 12 1 事件 對(duì)于對(duì)象而言 事件 Event 就是VB預(yù)先設(shè)置好的能夠被對(duì)象識(shí)別的動(dòng)作 不同的對(duì)象能夠識(shí)別的事件不一樣 同一事件 作用于不同的對(duì)象 就會(huì)引發(fā)不同的響應(yīng) 產(chǎn)生不同的結(jié)果 例如 在學(xué)校 教學(xué)樓的鈴聲是一個(gè)事件 教師聽(tīng)到鈴聲就要開(kāi)始講課 向?qū)W生傳授知識(shí) 學(xué)生聽(tīng)到鈴聲 就要準(zhǔn)備上課 接受知識(shí) 若行政人員不受影響 就可不予響應(yīng) 在VB中 系統(tǒng)已為每個(gè)對(duì)象預(yù)先定義好了一系列的事件 例如Click 單擊 DbClick 雙擊 Load 裝入 MouseMove 移動(dòng)鼠標(biāo) Change 改變 等 13 2 事件過(guò)程 對(duì)象響應(yīng)某個(gè)事件后所執(zhí)行的操作通過(guò)一段程序代碼來(lái)實(shí)現(xiàn) 這樣的一段程序代碼叫做事件過(guò)程 EventProcudure 一個(gè)對(duì)象可以識(shí)別一個(gè)或多個(gè)事件 因此可以使用一個(gè)或多個(gè)事件過(guò)程對(duì)用戶或系統(tǒng)的事件做出響應(yīng) 雖然一個(gè)對(duì)象可以擁有許多事件過(guò)程 但并不需要為每一個(gè)事件都編寫(xiě)程序 僅當(dāng)需要時(shí)才在相應(yīng)的事件過(guò)程中填寫(xiě)代碼 在程序中使用多少事件過(guò)程 要由設(shè)計(jì)者根據(jù)程序的具體要求來(lái)確定 14 VB事件過(guò)程的一般格式如下 PrivateSub對(duì)象名稱 事件名稱 參數(shù)列表 事件響應(yīng)程序代碼 EndSub 15 3 事件驅(qū)動(dòng) VB是事件驅(qū)動(dòng)程序設(shè)計(jì)方式 程序執(zhí)行后系統(tǒng)等待某個(gè)事件的發(fā)生 然后去執(zhí)行處理此事件的事件過(guò)程 待事件過(guò)程執(zhí)行完后 系統(tǒng)又處于等待某事件發(fā)生的狀態(tài) 這程序員只需要編寫(xiě)響應(yīng)用戶動(dòng)作的程序 如選擇命令 移動(dòng)鼠標(biāo)等 而不必考慮按精確次序執(zhí)行的每個(gè)步驟 用戶對(duì)事件驅(qū)動(dòng)的順序決定了代碼執(zhí)行的順序 因此應(yīng)用程序每次運(yùn)行所經(jīng)歷的代碼路徑可能不同 16 對(duì)象 事件和事件過(guò)程之間的關(guān)系如下圖所示 17 2 2 4方法 方法就是控件所能做的行動(dòng) 就象人一樣 唱歌 跳舞都是人的行動(dòng) 而屬性就類似于人的外貌特征 方法是附屬于對(duì)象的行為和動(dòng)作 也可以理解為指使對(duì)象動(dòng)作的指令 面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言 為程序設(shè)計(jì)人員提供了一種特殊的過(guò)程 稱為方法供用戶直接調(diào)用 這給用戶的編程帶來(lái)了很大的方便 18 對(duì)象方法調(diào)用格式為 對(duì)象 方法 參數(shù)列表 例如 Form1 Print Goodmorning 可以在名為 Form1 的窗體上顯示字符串 Goodmorning 在VB中 打印機(jī)的對(duì)象名為Printer 如果執(zhí)行 Printer Print Goodmorning 則在打印機(jī)上打印出字符串 Goodmorning 上面兩條指令使用的是同一個(gè)方法 但由于對(duì)象不同 執(zhí)行操作的設(shè)備也不一樣 在調(diào)用方法時(shí) 可以省略對(duì)象名 在這種情況下 VB所調(diào)用的方法作為當(dāng)前對(duì)象的方法 一般把當(dāng)前窗體作為當(dāng)前對(duì)象 19 2 2 5控件 1 控件的命名就是窗體或控件的Name屬性值 一般情況下 窗體和控件都有默認(rèn)值 如Form1 Command1 Text1等 2 控件的畫(huà)法3 控件的基本操作 選擇 復(fù)制和刪除 縮放和移動(dòng)和多個(gè)控件的對(duì)齊與調(diào)整4 控件屬性設(shè)置 20 2 3窗體和基本控件 2 3 1控件的公共屬性Name屬性Caption屬性Enable屬性Visible屬性Left Top Height Width屬性BackColor ForeColor屬性FontName FontSize FontBold FontItalic FontStrikethru FontUnderline屬性Font對(duì)象屬性MousePointerMouseIcon屬性 21 2 3 2窗體 一個(gè)窗體對(duì)應(yīng)一個(gè)窗體模塊 一個(gè)應(yīng)用程序包含一個(gè)或多個(gè)窗體模塊 VB的窗體結(jié)構(gòu)同Windows環(huán)境下的窗口十分類似 在程序運(yùn)行前 即設(shè)計(jì)階段 稱為窗體 程序運(yùn)行后也可以稱為窗口 窗體由5部分組成 如圖2 6所示 22 23 1 窗體主要屬性 1 Caption屬性 2 Picture屬性 3 MaxButton MinButton最大 最小化按鈕屬性 4 Icon圖標(biāo)和ControlBox控制菜單框?qū)傩?5 BorderStyle屬性 24 2 窗體事件 1 Click 單擊 事件 2 Load 裝入 事件3 窗體的方法 1 Print方法 2 Move方法 3 Cls方法 25 例2 2 窗體的Click DblClick和Load事件以及Cls Print方法和相關(guān)屬性的使用 運(yùn)行界面如圖2 7所示 26 屬性設(shè)置 在屬性窗口中對(duì)窗體的MaxButton和MinButton的值都設(shè)為False Picture屬性值設(shè)置為學(xué)校圖標(biāo)圖片Gxgxy1 bmp文件 27 例2 2程序代碼如下 PrivateSubForm Click Caption 鼠標(biāo)單擊 Picture LoadPicture App Path gxgxy2 bmp 加載圖片Print 歡迎使用VB EndSubPrivateSubForm DblClick ClsCaption 鼠標(biāo)雙擊 Picture LoadPicture 刪除圖片Print 結(jié)束使用VB EndSub 28 例2 2程序代碼如下 PrivateSubForm Load FontSize 40FontBold TrueCaption 裝入圖片 EndSub 29 說(shuō)明 1 App Path表示裝入的圖片文件與應(yīng)用程序在同一個(gè)文件夾 若運(yùn)行時(shí)無(wú)該文件 系統(tǒng)會(huì)顯示 文件未找到 的信息 用戶可通過(guò)查找文件的方法 并將所需文件復(fù)制到應(yīng)用程序所作的文件夾 2 屬性或方法前省略了對(duì)象 表示默認(rèn)屬性或方法作用于當(dāng)前窗體對(duì)象 3 MaxButton和MinButton屬性只能在屬性窗口設(shè)置 4 為了在Form Load 事件中利用Print方法在窗體上顯示文字 必須將Form1窗體的AutoRedraw屬性設(shè)置為True 30 2 3 3命令按鈕控件CommandBotton 命令按鈕主要屬性 1 Caption屬性表示按鈕上顯示的文字 如果某個(gè)字母前加入 則程序運(yùn)行時(shí)標(biāo)題中的該字母帶下劃線 帶有下劃線的字母就成為快捷鍵 當(dāng)用戶按下Alt 該快捷鍵 便可激活并操作該按鈕 例如 在對(duì)某個(gè)按鈕設(shè)置其Caption屬性時(shí)輸入 OK 程序運(yùn)行時(shí)就會(huì)顯示OK 如圖2 8 當(dāng)用戶按下Alt O快捷鍵時(shí)便可激活Command1 Click事件 31 2 Style屬性 表示按鈕樣式 0 Standard 默認(rèn) 標(biāo)準(zhǔn)風(fēng)格的命令控件 它既不支持背景顏色BackColor 也不支持圖片屬性Picture 按鈕上不能顯示圖形 1 Graphical 圖形顯示 風(fēng)格控件 它既能設(shè)置BackColor 也能設(shè)置Picture屬性 按鈕上可以顯示圖形也能顯示文字 3 Picture屬性 設(shè)置按鈕上顯示的圖形文件 bmp和 ico 為了使用這個(gè)屬性 必須把Style屬性值必須設(shè)置為1 否則Picture屬性無(wú)效 4 ToolTipText屬性 設(shè)置按鈕的提示文本 按鈕若是圖形 當(dāng)運(yùn)行時(shí)鼠標(biāo)指向該按鈕就加以文字提示 32 2 命令按鈕的常用事件命令按鈕的常用事件是Click事件 3 命令按鈕的方法命令按鈕的方法主要有SetFocus 該方法是把光標(biāo)移到指定的命令按鈕上 33 2 2 4標(biāo)簽控件Label 標(biāo)簽主要屬性 1 AutoSize屬性 決定Label控件是否調(diào)整自己的大小來(lái)適應(yīng)文本 True 自動(dòng)調(diào)整大小 False 保持原設(shè)計(jì)的大小 正文若太長(zhǎng)自動(dòng)剪掉 2 WordWrap屬性 當(dāng)一行文本過(guò)長(zhǎng)時(shí)自動(dòng)換行 3 BackStyle屬性 背景樣式 0 Transparent 透明顯示 控件后面若有其他控件均可顯示出來(lái) 1 Opaque 不透明 此時(shí)可為控件設(shè)置背景顏色 34 標(biāo)簽主要屬性 4 BorderStyle屬性 邊框樣式 0 None 控件周圍沒(méi)有單邊框 1 FixedSingle 控件帶有單邊框 5 Alignment屬性控件上標(biāo)題 Caption 對(duì)齊方式 其中 0 LeftJustify 左對(duì)齊 1 RightJustify 右對(duì)齊 2 Center 居中 35 2 標(biāo)簽的方法 標(biāo)簽控件支持Move方法 用于實(shí)現(xiàn)標(biāo)簽的移動(dòng) 例如 設(shè)窗體上有一個(gè)標(biāo)簽控件Label1 運(yùn)行時(shí) 單擊該標(biāo)簽控件 使該標(biāo)簽控件向右移動(dòng)500twip 可以通過(guò)如下代碼實(shí)現(xiàn) PrivateSubLabel1 Click Label1 MoveLabel1 left 500EndSub 36 3 標(biāo)簽的事件 標(biāo)簽經(jīng)常響應(yīng)的事件有 單擊 Click 雙擊 DbleClick 和改變 Change 但實(shí)際上標(biāo)簽僅起到在窗體上顯示文字作用 因此 一般不需要編寫(xiě)事件過(guò)程 37 例2 3 編寫(xiě)一個(gè)如圖2 10所示的簡(jiǎn)易的鍵盤指法練習(xí)程序 單擊 開(kāi)始 按鈕 進(jìn)行指法練習(xí) 同時(shí) 開(kāi)始 按鈕變?yōu)?結(jié)束 按鈕 字母在屏幕上向上移動(dòng) 輸入正確則會(huì)消失 同時(shí)隨機(jī)產(chǎn)生新的字母 要求能統(tǒng)計(jì)正確率 擊鍵次數(shù)和所用的時(shí)間 38 1 界面設(shè)計(jì) 在窗體上添加4個(gè)標(biāo)簽 用于在屏幕上同時(shí)顯示4個(gè)小寫(xiě)字母 1個(gè)命令按鈕用于控制指法練習(xí)的開(kāi)始和結(jié)束 2個(gè)計(jì)時(shí)器 一個(gè)用于隨機(jī)產(chǎn)生字母和控制字母在窗體中移動(dòng) 另一個(gè)用于計(jì)時(shí) 39 2 程序代碼如下 Dimm n t PrivateSubCommand1 Click IfCommand1 Caption 開(kāi)始 ThenForm1 Clst 0Timer1 Enabled TrueTimer2 Enabled TrueCommand1 Caption 結(jié)束 ElseCommand1 Caption 開(kāi)始 Timer1 Enabled FalseTimer2 Enabled FalseIfm 0ThenPrint 正確率為 n m 100 Print 擊鍵次數(shù) m 次 共用時(shí) t 秒 EndIfEndSub 40 PrivateSubCommand2 Click EndEndSubPrivateSubForm KeyPress KeyAsciiAsInteger m m 1 統(tǒng)計(jì)擊鍵次數(shù)IfChr KeyAscii Label1 CaptionThenLabel1 Caption n n 1EndIfIfChr KeyAscii Label2 CaptionThenLabel2 Caption n n 1EndIfIfChr KeyAscii Label3 CaptionThenLabel3 Caption n n 1EndIfIfChr KeyAscii Label4 CaptionThenLabel4 Caption n n 1EndIfEndSub 41 PrivateSubTimer1 Timer RandomizeIfLabel1 Caption ThenLabel1 Top Form1 ScaleHeightLabel1 Caption Chr CInt Rnd 26 97 隨機(jī)產(chǎn)生一個(gè)小寫(xiě)字母ElseLabel1 Top Label1 Top 20EndIfIfLabel2 Caption ThenLabel2 Top Form1 ScaleHeightLabel2 Caption Chr CInt Rnd 26 97 隨機(jī)產(chǎn)生一個(gè)小寫(xiě)字母ElseLabel2 Top Label2 Top 20EndIf 42 IfLabel3 Caption ThenLabel3 Top Form1 ScaleHeightLabel3 Caption Chr CInt Rnd 26 97 ElseLabel3 Top Label3 Top 20EndIfIfLabel4 Caption ThenLabel4 Top Form1 ScaleHeightLabel4 Caption Chr CInt Rnd 26 97 ElseLabel4 Top Label4 Top 20EndIfIfLabel1 Top 0ThenLabel1 Top Form1 ScaleHeightIfLabel2 Top 0ThenLabel2 Top Form1 ScaleHeightIfLabel3 Top 0ThenLabel3 Top Form1 ScaleHeightIfLabel4 Top 0ThenLabel4 Top Form1 ScaleHeightEndSub 43 PrivateSubTimer2 Timer t t 1 計(jì)算練習(xí)時(shí)間EndSub 44 2 3 5文本框控件TextBox 所謂人機(jī)對(duì)話 就是計(jì)算機(jī)能獲知用戶給它的信息 同時(shí) 它也能作出相應(yīng)的反饋 對(duì)于前者 我們除了用鼠標(biāo)向計(jì)算機(jī)發(fā)出命令外 也常需要以鍵盤向計(jì)算機(jī)輸入一些內(nèi)容 如鍵入用戶的姓名 年齡 性別等 文本框被用來(lái)顯示用戶輸入的信息 是Windows操作系統(tǒng)下進(jìn)行人機(jī)對(duì)話的常用元素 在VB編程中 文本框是一個(gè)文本編輯區(qū)域 類似于一個(gè)簡(jiǎn)單的文本編輯器 可以在這個(gè)區(qū)域中輸入 編輯 修改和顯示文本 45 1 文本框主要屬性 1 Text屬性 設(shè)置文本框中顯示的內(nèi)容 2 MultiLine屬性 設(shè)置控件是否可以接受多行文本 False 默認(rèn)值 在文本框中只能輸入單行文本 True時(shí) 可以使用多行文本 即在文本框中輸入或輸出文本時(shí)可以換行 并在下一行接著輸入或輸出 按Ctrl Enter鍵可以插入一個(gè)空行 3 ScrollBars屬性 設(shè)置控件是否具有水平或垂直滾動(dòng)條 0 文本框中沒(méi)有滾動(dòng)條1 只有水平滾動(dòng)條2 只有垂直滾動(dòng)條3 同時(shí)具有水平和垂直滾動(dòng)條 注意 當(dāng)MultiLine屬性為True時(shí) 它才起作用 此外 當(dāng)在文本框中加入水平滾動(dòng)條 或同時(shí)具有水平和垂直滾動(dòng)條 后 文本框中文本的自動(dòng)換行功能將不起作用 只能通過(guò)回車鍵或Ctrl Enter鍵換行 46 1 文本框主要屬性 4 PassWordChar屬性以特定的字符來(lái)代替控件中的文本字符 這個(gè)屬性很適合設(shè)置密碼對(duì)話框 5 Locked屬性設(shè)置文本框內(nèi)容在運(yùn)行時(shí)是否可以被用戶編輯 當(dāng)設(shè)置值為False 默認(rèn)值 時(shí) 可以編輯文本框中的文本 當(dāng)設(shè)置值為True時(shí) 可以滾動(dòng)和選擇文本框中的文本 但不能編輯 47 2 文本框的常用事件 1 Change事件當(dāng)用戶向文本框輸入新的內(nèi)容 或在程序代碼中對(duì)文本框的Text屬性進(jìn)行賦值從而改變了文本框的Text屬性時(shí) 將觸發(fā)Change事件 程序運(yùn)行后 在文本框中每輸入一個(gè)字符 就會(huì)引發(fā)一次Change事件 2 GotFocus事件當(dāng)運(yùn)行用Tab鍵或鼠標(biāo)單擊對(duì)象 或用SetFocus方法設(shè)置焦點(diǎn)時(shí) 觸發(fā)該事件 稱之為 獲得焦點(diǎn) 該事件適用于窗體和大部分可接受鍵盤輸入的控件 當(dāng)文本框獲得焦點(diǎn) 即處于活動(dòng)狀態(tài) 時(shí) 鍵盤上輸入的每個(gè)字符都將在該文本框中顯示出來(lái) 只有當(dāng)一個(gè)文本框被激活并且可見(jiàn)性Visible屬性值為True時(shí) 才能接收到焦點(diǎn) 48 2 文本框的常用事件 3 LostFocus事件當(dāng)按下Tab鍵使光標(biāo)離開(kāi)當(dāng)前對(duì)象 或者用鼠標(biāo)選擇窗體的其他對(duì)象 即焦點(diǎn)離開(kāi)文本框時(shí)觸發(fā)該事件 稱之為 失去焦點(diǎn) 用Change事件和LostFocus事件過(guò)程都可以檢查文本框的Text屬性值 但后者更有效 4 KeyPress事件當(dāng)在鍵盤上按下某個(gè)鍵時(shí)觸發(fā)該事件 KeyPress事件返回一個(gè)參數(shù)KeyAscii 該參數(shù)值為整數(shù) 表示所按下鍵的ASCII碼值 49 3 文本框的方法 SetFocus方法是文本框中較常用的方法 格式如下 對(duì)象 SetFocus該方法可以把焦點(diǎn)移動(dòng)到指定的文本框中 當(dāng)在窗體上建立了多個(gè)文本框后 可以用該方法把光標(biāo)置于所需要的文本框 50 Label與TextBox的區(qū)別 Label控件不能由用戶直接對(duì)其進(jìn)行編輯 這是它與文本框控件最顯著的區(qū)別 另外 label控件有一個(gè)BackStyle屬性 當(dāng)其值為0時(shí) 控件呈透明顯示 而TextBox控件則沒(méi)有此屬性 從人機(jī)對(duì)話的角度來(lái)看 對(duì)于大多數(shù)VB程序 都用文本框控件來(lái)接受信息 而用標(biāo)簽框控件來(lái)向用戶反饋信息 并不是每種控件都能夠得到焦點(diǎn) 如Label控件 由于它只顯示文本 而不能由用戶對(duì)其編輯操作 所以就不具有焦點(diǎn) 當(dāng)TextBox控件獲得焦點(diǎn)時(shí) 所顯示的是文本框中有一個(gè)閃爍的小光標(biāo) TextBox有一個(gè)方法 SetFocus 而Label控件則沒(méi)有 51 例2 4 簡(jiǎn)單密碼程序 程序運(yùn)行界面如圖2 11所示 52 分析 在默認(rèn)情況下 PasswordChar屬性值為空字符串 鍵盤上輸入的字符與文本框中顯示出來(lái)的字符是一致的 如果把該屬性設(shè)置為某個(gè)字符 例如 則無(wú)論從鍵盤上輸入什么字符 文本框中顯示的總是 這樣可以使人看不到輸入的密碼 便于保密 53 程序代碼如下 PrivateSubCommand1 Click IfText1 Text 123456 ThenText2 Text 密碼正確 繼續(xù) ElseText2 Text 密碼錯(cuò)誤 重新輸入 EndIfEndSubPrivateSubCommand2 Click Text1 Text Text2 Text Text1 SetFocusEndSub 54 2 4綜合應(yīng)用 例2 5 建立一個(gè)計(jì)算機(jī)等級(jí)考試報(bào)名登記界面 窗體上有5個(gè)標(biāo)簽 3個(gè)文本框 3個(gè)命令按鈕 其中文本框1中輸入姓名 文本框2中輸入班級(jí) 文本框3中輸入等級(jí) 標(biāo)簽5上將考生的信息全部顯示出來(lái) 程序運(yùn)行界面如圖2 12所示 55 分析 本題的難點(diǎn)在于如何將3個(gè)文本框中的內(nèi)容連接起來(lái) 以作為標(biāo)簽5的Caption屬性值 這里引入一個(gè)字符型變量str 用來(lái)存放字符串連接運(yùn)算的結(jié)果 Chr 10 表示產(chǎn)生換行符 56 程序代碼如下 PrivateSubCmdClean Click Text1 Text Text2 Text Text3 Text Label5 Caption EndSubPrivateSubCmdExit Click EndEndSubPrivateSubCmdOK Click DimstrAsStringstr 姓名 Text1 Text Chr 10 班級(jí) Text2 Text 圖2 13例2 6運(yùn)行界面Chr 10 等級(jí) Text3 TextLabel5 Caption strEndSub 57 例2 6 設(shè)計(jì)一個(gè)模擬抽獎(jiǎng)的程序 其界面如圖2 13所示 要求單擊 開(kāi)始 按鈕 則不停的隨機(jī)產(chǎn)生兩位數(shù)的數(shù)字 單擊 抽獎(jiǎng) 按鈕 則確定中獎(jiǎng)數(shù)字 58 分析 隨機(jī)數(shù)是通過(guò)隨機(jī)函數(shù)來(lái)產(chǎn)生的 要不斷地產(chǎn)生 則要用計(jì)時(shí)器控件來(lái)控制 設(shè)置計(jì)時(shí)器對(duì)象的Interval屬性值 定期產(chǎn)生隨機(jī)數(shù) 要實(shí)現(xiàn)單擊 開(kāi)始 按鈕 再產(chǎn)生 則Timer對(duì)象的Enable屬性設(shè)置初始為False 單擊 開(kāi)始 按鈕后 該屬性設(shè)置為True 單擊 抽獎(jiǎng) 按鈕 則會(huì)再產(chǎn)生隨機(jī)數(shù) 此時(shí)表明Timer對(duì)象的Enable屬性又改為False了 59 程序代碼如下 PrivateSubCommand1 Click Timer1 Enabled TrueCommand2 Enabled TrueCommand1 Enabled FalseEndSubPrivateSubCommand2 Click Timer1 Enabled FalseText1 Text Label2 Caption Label3 Caption Label4 Caption Label5 Caption Label6 CaptionCommand2 Enabled FalseCommand1 Enabled TrueCommand3 Enabled TrueEndSub 60 程序代碼如下 PrivateSubCommand3 Click EndEndSubPrivateSubTimer1 Timer RandomizeLabel2 Caption Fix Rnd 90 10 調(diào)用隨機(jī)數(shù)函數(shù)Rnd產(chǎn)生隨機(jī)數(shù)Label3 Caption Fix Rnd 90 10Label4 Caption Fix Rnd 90 10Label5 Caption Fix Rnd 90 10Label6 Caption Fix Rnd 90 10EndSub 61 2 5擴(kuò)展與提高 2 5 1窗體的進(jìn)一步討論1 屬性 1 Icon屬性 設(shè)置窗體標(biāo)題欄上的圖標(biāo) 2 WindowsState屬性 表示窗體執(zhí)行時(shí)以什么狀態(tài)顯示 0 Normal 正常窗口狀態(tài) 有窗口邊界 1 Minimized 最小化狀態(tài) 以圖標(biāo)方式運(yùn)行 2 Maximized 最大化狀態(tài) 無(wú)邊框 充滿整個(gè)屏幕 62 2 窗體事件 1 Unload事件在卸載一個(gè)窗體時(shí)觸發(fā)Unload事件 Unload事件可以由用戶觸發(fā) 例如單擊窗體的關(guān)閉按鈕 將觸發(fā)Unload事件 格式如下 PrivateSubForm Unload EndSubUnload事件是與Load事件相對(duì)應(yīng)的事件 Unload事件會(huì)卸載一個(gè)窗體 同時(shí)可以為用戶提供存盤等信息 63 2 Initialize事件 在窗體創(chuàng)建時(shí)發(fā)生Initialize事件 這是程序運(yùn)行時(shí)發(fā)生的第一個(gè)事件 它發(fā)生在Load事件之前 Initialize事件的作用主要是初始化變量 格式如下 PrivateSubForm Initialize EndSub 64 3 Activate 活動(dòng) Deactivate 非活動(dòng) 事件當(dāng)窗體變成活動(dòng)窗口時(shí)觸發(fā)Activate事件 而在另一個(gè)窗體變?yōu)榛顒?dòng)窗口前觸發(fā)Deactivate事件 通過(guò)操作可以把窗體變?yōu)榛顒?dòng)窗體 例如單擊窗體或在程序中執(zhí)行Show方法等 4 Paint 繪畫(huà) 事件當(dāng)窗體被移動(dòng)或放大時(shí) 或者窗口移動(dòng)時(shí)覆蓋了一個(gè)窗體時(shí) 觸發(fā)該事件 65 3 向窗體輸出數(shù)據(jù) 1 向窗體輸出數(shù)據(jù)的格式設(shè)置向窗體輸出數(shù)據(jù)的格式主要通過(guò)Format 函數(shù)確定 向窗體輸出數(shù)據(jù)的字體 大小由Font屬性項(xiàng)設(shè)置 也可在程序運(yùn)行時(shí) 用程序代碼設(shè)置 用程序代碼設(shè)置字體和字號(hào)的格式如下 FontName 字體名 FontSize 字號(hào) 2 輸出位置確定在窗體上的輸出位置主要通過(guò)兩個(gè)系統(tǒng)變量來(lái)定位 即CurrentX和CurrentY 它們分別代表當(dāng)前點(diǎn)的X坐標(biāo)和Y坐標(biāo) 在程序代碼中 分別給出CurrentX和CurrentY賦值 以定位輸出數(shù)據(jù)的起始位置 66 例2 7 建立一個(gè)窗體 單擊窗體時(shí) 在窗體上輸出兩行文字 運(yùn)行結(jié)果如圖2 14所示 67 程序代碼如下 PrivateSubForm Click CurrentX 600CurrentY 600FontName 宋體 FontSize 18Print 面向?qū)ο蟪绦蛟O(shè)計(jì) CurrentX 1000CurrentY 1500FontName 黑體 FontSize 20Print 面向?qū)ο蟪绦蛟O(shè)計(jì) EndSub 68 2 5 2Command控件Default屬性和Cancel屬性的進(jìn)一步討論 把Default設(shè)為True 則在按下回車鍵時(shí) 不論焦點(diǎn)處于何處 都會(huì)觸發(fā)該按鈕的Click事件 而當(dāng)Cancel屬性被設(shè)為True 在按下Esc鍵時(shí) 該按鈕的Click事件發(fā)生 69 例2 8 建立一個(gè)新窗體和兩個(gè)按鈕 Name屬性分別為cmdOK和cmdCancel 把前者的Default設(shè)為True 后者的Cancel設(shè)為True Caption屬性分別為OK和Cancel 運(yùn)行結(jié)果如圖2 15所示 70 程序代碼如下 PrivateSubCommand1 Click MsgBox OK按鈕被按下 vbDefaultButton1 提示 EndSubPrivateSubCommand2 Click MsgBox Cancel按鈕被按下 vbDefaultButton1 提示 EndSub 71 2 5 3TextBox控件的進(jìn)一步討論 1 SelStart屬性 定義當(dāng)前選擇的文本的起始位置 2 Sellength屬性 定義當(dāng)前選中的字符數(shù) 當(dāng)在文本框中選擇文本時(shí) 該屬性值會(huì)隨著選擇字符的多少而改變 也可以在程序代碼中把該屬性設(shè)置為一個(gè)整數(shù)值 由程序來(lái)改變選擇 該屬性及下面的SelStart SelText屬性 只有在運(yùn)行期間才能設(shè)置 3 SelText屬性 選定的正文內(nèi)容 設(shè)置了SelStart和Sellength屬性后 VB會(huì)自動(dòng)將設(shè)定的正文送入SelText存放 72 例2 9 建立一個(gè)簡(jiǎn)易記事本程序 程序運(yùn)行界面如圖2 16所示 分析 利用MouseMove事件決定命令按鈕的有效性 即當(dāng)選中內(nèi)容 剪切 復(fù)制 按鈕有效 否則無(wú)效 73 表2 7例2 9屬性設(shè)置 74 程序代碼如下 DimstAsStringPrivateSubcmdCopy Click st Text1 SelTextEndSubPrivateSubcmdCut Click st Text1 SelTextText1 SelText cmdCopy Enabled FalsecmdCut Enabled FalsecmdPaste Enabled TrueEndSub 75 PrivateSubcmdExit Click EndEndSubPrivateSubcmdPaste Click Text1 SelText st 將st變量中的內(nèi)容插入到光標(biāo)所在的位置 實(shí)現(xiàn)了粘貼EndSubPrivateSubForm Load 設(shè)置剪切 復(fù)制 粘貼按鈕無(wú)效cmdCut Enabled FalsecmdCopy Enabled FalsecmdPaste Enabled FalseEndSub 76 PrivateSubText1 MouseMove ButtonAsInteger ShiftAsInteger XAsSingle YAsSingle IfText1 SelText ThencmdCut Enabled TruecmdCopy Enabled TruecmdPaste Enabled FalseElsecmdCut Enabled FalsecmdCopy Enabled FalsecmdPaste Enabled TrueEndIf 77 PrivateSubCommand4 Click Text1 FontName 黑體 EndSubPrivateSubCommand5 Click Text1 FontSize 20EndSubPrivateSubCommand6 Click EndEndSub 78 THEEND- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- VB 可視化 界面設(shè)計(jì)
鏈接地址:http://ioszen.com/p-6438122.html