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