国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

VisualBasic控件數(shù)據(jù)

2019-11-18 17:43:25
字體:
供稿:網(wǎng)友

通過限制焦點(diǎn)驗(yàn)證控件數(shù)據(jù)

    Validate事件和CausesValidation屬性是在允許用戶將焦點(diǎn)移開控件之前,串聯(lián)使用以確認(rèn)對(duì)控件的輸入的。例如:假設(shè)有幾個(gè)文本框和一個(gè)Help按鈕的應(yīng)用程序,當(dāng)每個(gè)文本框接收焦點(diǎn)時(shí),您想在文本框的特殊驗(yàn)證準(zhǔn)則被滿足之前阻止用戶移動(dòng)焦點(diǎn);然而,您也想允許用戶在任何時(shí)候都能單擊Help按鈕。要做到這點(diǎn),在Validate事件中設(shè)置驗(yàn)證準(zhǔn)則,并將Help按鈕的CausesValidation屬性設(shè)置為False。假如屬性設(shè)置為True(缺省設(shè)置),Validate事件將在第一個(gè)控件上發(fā)生。假如屬性設(shè)置為False,在第一個(gè)控件上的Validate事件將搶先發(fā)生。
    Validate事件比LostFocus事件更適合驗(yàn)證數(shù)據(jù)輸入項(xiàng),因?yàn)長(zhǎng)ostFocus事件(按照定義)是在焦點(diǎn)已移動(dòng)后發(fā)生。相反,通過使用Validate事件,您能防止焦點(diǎn)移動(dòng)到另一個(gè)控件直到驗(yàn)證規(guī)則被滿足。
    可能的使用
     數(shù)據(jù)輸入項(xiàng)應(yīng)用程序需要執(zhí)行比MaskedEdit控件所提供的或在業(yè)務(wù)規(guī)則中發(fā)生的有效性驗(yàn)證更復(fù)雜的數(shù)據(jù)輸入項(xiàng)有效性驗(yàn)證。
     窗體需要防止用戶使用TAB鍵或加速鍵將控件移走,直到數(shù)據(jù)已被輸入到字段中。
     在InternetExplorer中運(yùn)行的ActiveX文檔需要一種方法,使用戶在腳本程序化地移動(dòng)焦點(diǎn)之前完成在窗體上的操作。

    在Validate事件上控制焦點(diǎn)
    Validate事件包括一個(gè)keepfocus參數(shù)。當(dāng)參數(shù)設(shè)置為True時(shí),控件將保留焦點(diǎn)。這樣做有效地防止了用戶單擊其它控件。

    使用控件數(shù)組
    控件數(shù)組是一組具有共同名稱和類型的控件。它們的事件過程也相同。一個(gè)控件數(shù)組至少應(yīng)有一個(gè)元素,元素?cái)?shù)目可在系統(tǒng)資源和內(nèi)存允許的范圍內(nèi)增加;數(shù)組的大小也取決于每個(gè)控件所需的內(nèi)存和Windows資源。在控件數(shù)組中可用到的最大索引值為32767。同一控件數(shù)組中的元素有自己的屬性設(shè)置值。常見的控件數(shù)組的用處包括實(shí)現(xiàn)菜單控件和選項(xiàng)按鈕分組。
    注意VisualBasic包括了在運(yùn)行時(shí)動(dòng)態(tài)地將未引用的控件添加到Controls集合中的能力。本主題僅指在設(shè)計(jì)時(shí)通過將一個(gè)控件剪切和粘貼到窗體上添加的引用控件。有關(guān)在運(yùn)行時(shí)添加控件的詳細(xì)信息,請(qǐng)參閱參考主題“Add方法(Controls集合)”和“Add方法(Licenses集合)”。

    為何使用控件數(shù)組
在設(shè)計(jì)時(shí),使用控件數(shù)組添加控件所消耗的資源比直接向窗體添加多個(gè)相同類型的控件消耗的資源要少。當(dāng)希望若干控件共享代碼時(shí),控件數(shù)組也很有用。例如,如果創(chuàng)建了一個(gè)包含三個(gè)選項(xiàng)按鈕的控件數(shù)組,則無論單擊哪個(gè)按鈕時(shí)都將執(zhí)行相同的代碼。
    若要在運(yùn)行時(shí)創(chuàng)建一個(gè)控件的新實(shí)例,則新控件必須是控件數(shù)組的成員。使用控件數(shù)組時(shí),每個(gè)新成員繼承數(shù)組的公共事件過程。
    使用控件數(shù)組機(jī)制是不可能在運(yùn)行時(shí)創(chuàng)建新控件的,因?yàn)槊總€(gè)新控件都繼承為數(shù)組編寫好的事件過程。例如,如果窗體上有若干文本框,而且每個(gè)文本框都接受一個(gè)日期數(shù)值,則可創(chuàng)建一個(gè)控件數(shù)組,使所有文本框共享同一個(gè)合法性檢查代碼。

    示例應(yīng)用程序:Calc.vbp
    圖7.2所示的Calculator示例應(yīng)用程序(列在Samples!Alink("vbsamples")目錄中)包含兩個(gè)控件數(shù)組——數(shù)字按鈕和操作按鈕。


    請(qǐng)注意示例是如何使用object(index)語法引用每個(gè)控件的。在創(chuàng)建控件時(shí)指定索引值。實(shí)際上,在設(shè)計(jì)時(shí)為一個(gè)控件指定任意的索引,這將使控件成為數(shù)組的一部分。
Index屬性區(qū)分控件數(shù)組中的元素。當(dāng)數(shù)組中的一個(gè)控件識(shí)別了一個(gè)事件時(shí),VisualBasic將調(diào)用公共事件過程并傳遞一個(gè)參數(shù)(Index屬性的值),分辨是哪個(gè)控件識(shí)別事件。
    例如,Number_Click事件過程的第一行代碼是這樣的:
    
    控件數(shù)組應(yīng)用程序的事件
    接著,必須添加選項(xiàng)按鈕和命令按鈕的事件過程。添加窗體聲明后啟動(dòng)應(yīng)用程序:
    DimMaxIdAsInteger
    所有選項(xiàng)按鈕共享Click事件過程:
    PrivateSuboptButton_Click(IndexAsInteger)
       picDisplay.BackColor=QBColor(Index 1)
    EndSub
    通過“添加”命令按鈕的Click事件過程添加新的選項(xiàng)按鈕。本例中,在執(zhí)行Load語句前,代碼將檢查確認(rèn)加載的選項(xiàng)按鈕數(shù)不超過十個(gè)。加載控件之后,必須將其Visible屬性設(shè)置為True。
    PrivateSubcmdAdd_Click()
       IfMaxId=0ThenMaxId=1   '設(shè)置全部選項(xiàng)按鈕。
       IfMaxId>8ThenExitSub   '只允許十個(gè)按鈕。
       MaxId=MaxId 1        '按鈕計(jì)數(shù)遞增。
       LoadoptButton(MaxId)      '創(chuàng)建新按鈕。
       optButton(0).SetFocus      '重置按鈕選項(xiàng)。
       '將新按鈕放置在上一個(gè)按鈕下方。
       optButton(MaxId).Top=optButton(MaxId-1)._
       Top 400
       optButton(MaxId).Visible=True  '顯示新按鈕。
       optButton(MaxId).Caption="Option"&MaxId 1
    EndSub
    通過“刪除”命令按鈕的Click事件過程刪除選項(xiàng)按鈕:
    PrivateSubcmdDelete_Click()
       IfMaxId<=1ThenExitSub      '保留最初的兩個(gè)按鈕。
       UnloadoptButton(MaxId)        '刪除最后的按鈕。
       MaxId=MaxId-1           '按鈕計(jì)數(shù)遞減。
       optButton(0).SetFocus         '重置按鈕選項(xiàng)。
    EndSub
    通過“關(guān)閉”按鈕的Click事件過程結(jié)束應(yīng)用程序:
    PrivateSubcmdClose_Click()
       UnloadMe
    EndSub

->


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 河源市| 浠水县| 石狮市| 古丈县| 拜城县| 体育| 龙山县| 伊金霍洛旗| 郸城县| 顺义区| 泾阳县| 商南县| 怀来县| 东宁县| 广汉市| 铜鼓县| 云梦县| 三明市| 丹棱县| 白沙| 湟源县| 合山市| 兴城市| 古交市| 静乐县| 临清市| 渝中区| 普安县| 威信县| 同仁县| 红安县| 大连市| 迁西县| 陈巴尔虎旗| 扬州市| 沙湾县| 沙雅县| 隆德县| 成安县| 永平县| 荆州市|