vb用戶控件詳解_第1頁
vb用戶控件詳解_第2頁
vb用戶控件詳解_第3頁
vb用戶控件詳解_第4頁
vb用戶控件詳解_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 定義按紐數(shù)目時,最少為 2 個按紐,最多為 8 個按紐,且數(shù)目須為偶數(shù) 4.消息框控件: 這東東是很傷腦筋的玩藝,碰到了一個難以解決的問題:如何得到返回值? 系統(tǒng)的消息框?qū)儆谀J酱绑w,用戶沒有按下消息框上的按紐以前,程序就掛 在那兒,直到按下某個 按紐才會繼續(xù)住下執(zhí)行??墒怯脩艨丶恍校脩艨丶孟笫钱惒綀?zhí)行方式,還 沒等用戶按鍵,程序已 經(jīng)執(zhí)行到調(diào)用用戶控件的代碼后面去了, 這種情況下沒法取到返回值。 無奈之下, 想到一個不是辦法的 辦法:在窗體中增加一個計時器,調(diào)用用戶控件消息框以后,開啟計時器,利用 計時器的自動執(zhí)行功能 來取得返回值。 窗體代碼示例如下: Private Sub Cm

2、d1_Click( MegBox1.Visible = True MegBox1.Msg "內(nèi)容已經(jīng)改變,要保存嗎?", 51, "提醒" Timer1.Enabled = True End Sub Private Sub Timer1_Timer( Dim msg As String, k As Integer k = MegBox1.FeedValue If k Then Select Case k Case 1: '執(zhí)行代碼 Case 2: '執(zhí)行代碼 Case 6: '執(zhí)行代碼 Case 7: '執(zhí)行代碼 End

3、Select Timer1.Enabled = False MegBox1.Visible = False End If End Sub 這顯然比直接調(diào)用系統(tǒng)的消息框麻煩多了, 所以用戶控件制作的消息框應(yīng)用 場合受到很大限制。不 過,筆者的目的只是提供給各位做實驗,探討制作用戶控件的技巧,它能否廣泛 使用倒在其次。如果哪 位有創(chuàng)建象模式窗體那樣的用戶控件的辦法,請不吝賜教,在此先行謝過。 另外,為了簡單,筆者沒有使用終止、重試、忽略三個按紐(如有必要,請 自行添加) ,組合值中 不要包括相關(guān)的常數(shù),也不要包括系統(tǒng)模式常數(shù) 40960。 5.菜單控件: MyMenu 控件和 muchMenu 控

4、件是筆者根據(jù)自己的原創(chuàng)又漂亮又實用的 記事本界面中的 Form6 窗體代碼改編的(原文請見筆者的舊貼) 。本控件的缺憾是:由于用戶控件的活 動范圍無法超出窗體, 所以如果最終用戶將窗體拉小了而菜單又很長的話, 那么菜單體將會有一部分顯 示不出來,這是用戶控 件的遺憾,沒法解決的,所以,菜單控件只適用于窗體大小固定的場合。 MyMenu 控件只適用于一個主菜單的情況,而不適用多個主菜單的情況。 例如,窗體上有文件、編輯 、查看、選項、幫助等個主菜單,難道要用上個 MyMenu 控件不成?所以, 我又編寫了 muchMenu 控 件。 muchMenu 控件可以適用 10 個主菜單、 每個主菜單有

5、 20 個菜單項的情況 (當(dāng) 然還可以擴(kuò)展) ,這樣, 菜單項文本變量 mCaption 就必須使用二維數(shù)組,第一維是“層”數(shù)(筆者將一個 主菜單稱為一層) , 第二維是“項”數(shù)。在窗體的屬性窗口,你必須先設(shè)置 RepeatCount 屬性(當(dāng)前總 層數(shù)) ,再設(shè)置當(dāng)前 層數(shù)(RepeatCurrent 屬性) ,再點(diǎn)擊“(自定義”進(jìn)入屬性頁對當(dāng)前層的菜單項進(jìn) 行設(shè)置。 三個菜單控件都是利用單擊事件返回用戶選中的菜單項編號 SelectedItem。 6.立體字制作控件: 利用這個控件,你可以制作純背景色的立體字,也可以制作有背景圖片的立 體字。 九、將窗體代碼的功能改編為用戶控件時的注意事項

6、 1.最好只將某個單一的功能改編成用戶控件,多功能的用戶控件過于復(fù)雜也沒有 必要。 2. 原 程 序 Form_Load 事 件 中 的 代 碼 一 般 必 須 移 植 到 用 戶 控 件 的 UserControl_Initialize 事件中,原 因嘛,筆者前面已經(jīng)講過,用戶控件運(yùn)行時,首先執(zhí)行的就是這個 UserControl_Initialize 事件。 3. 原 程 序 Form_Resize 事 件 中 的 代 碼 一 般 可 以 移 植 到 用 戶 控 件 的 UserControl_Resize 事件中。 4.原程序中的單選按紐或用組合下拉框選擇的功能,一般必須在用戶控件中定義 成枚舉形式的屬性。 5.原程序中用復(fù)選框選擇的功能,一般必須在用戶控件中定義成標(biāo)準(zhǔn)形式的屬 性。 十、最后的建議 如果你制作的用戶控件不想發(fā)布,而只是供自己的程序使用,那么建議: 1.不要編譯成 OCX 文件。發(fā)布程序時都要帶上一個 OCX,顯得麻煩。不如將 用戶控件封裝進(jìn)程序。由于 是源代碼級控件,編譯時會與模塊、窗體、類等等一起被編譯進(jìn)程序,既方便又 提高了效率。 2.根據(jù)具體情況,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論