电竞比分网-中国电竞赛事及体育赛事平台

分享

如何用VB6做控件

 nxhujiee 2010-06-16

一、這話兒的由頭

    說起這用VB6做控件────哎,是偶從事“挨踢”行業(yè)以來最糗的三件事兒之一。

    這做控件的事兒,早就想學(xué),也學(xué)過N多回。────
    自從九六還是九七年,就一直想學(xué),也學(xué)過N多回。────
    偶介個二十多年的老程序員,夠糗滴吧?。。。。。?br>    這些年來,為這事兒沒少煩心────
    眼瞅著,人家一初中、高中一愛好者,都玩得溜溜兒滴,俺這老幫子怎么就不靈呢?

    說來話長。

    這些年來,為這事兒,偶買書,就為只要粘上有這事兒的書,就買。
    買了五、六本兒,好幾百的銀子呢!?。。。?!哭?。。。。。。I都哭干了。哼。。。。。。

    這些書,要不然就是說個不明不白的例子,幾乎都是互相抄────可俺需要滴東西,就是楞沒有?。?/p>

    偶要什么?簡單???就幾個問題:
        問題一:制作一個控件的基本過程────簡單說吧,就是怎么著,怎么弄,怎么整,能搞出來一個叫OCX的 標(biāo)準(zhǔn)控件,而且能放之四海皆好用。
            這個東西,要比照著書做,做一個嘛用也沒有的控件,早就會了??梢砸鰝€真正有用的,就在下面這個問題上卡住了。
        問題二:這控件的屬性────偶自已定義來用的,特別屬于偶滴屬性────怎么搞?怎么設(shè)定有幾個屬性,怎么設(shè)定屬性值,怎么取出屬性值這三個問題,就楞沒找到一本書 啊?。。。。。?br>            這個問題,可是偶滴心結(jié)。
            記得是VB3開始,就可以搞控件,可必須通過什么“向?qū)?#8221;來做。搞得好麻煩。一直沒搞懂。
            這VB自制控件的屬性三問題,就一直“遺傳”了偶小十年,成了個不大不小的心結(jié)。
            今天,終于整成了。
            這破微軟,就告訴咱怎么直接自已敲代碼多簡單,非得搞出許多“向?qū)?#8221;,讓身為行家滴偶捆手綁腳────缺德透頂了。。。。。。────您微軟想想,都玩自 制控件了,有外行嗎?你有得著把這么簡單的代碼操作,非用“向?qū)?#8221;給“藏”起來,就楞不讓咱自已會用???
        問題三:怎么生成控件和怎么發(fā)布使用控件
            這不是問題,自打一會用控件,第一件事就是試試加載不是微軟這強盜加流氓的東西做出來的控件。恨滴就是微軟,討厭滴就是微軟。────可是,偶是真離不開 微軟啊。這些年所有東西,全是在微軟平臺上做和用滴────哇哇────良心與道德的失衡啊。。。。。。

    再說偶滴另兩件糗事兒:

    (一)ASP編程
        早年間,偶就算是精通HTML了吧,從Ver3.2起步的。
        后來,一學(xué)ASP,不難?。咯ぉぉぉひ恢芨愣?,基本成了個“小行家”了吧。
        可是,糗事兒來了────偶就是沒法在網(wǎng)站上使用────什么服務(wù)器端了,什么客戶端了────反正,偶的ASP代碼,讓所有人看了────都說:挺好, 沒問題!
        可事兒絕在,我這ASP編的東西,在全世界任是誰(當(dāng)然也是干ASP編程滴哥們兒)那兒,都能運行得倍兒好────可在我的機器上────就是不執(zhí)行 ────就是報錯。。。。。。
        這事一整偶就是兩年半,偶楞是用不了ASP啊。
        全世界的哥們兒都在納悶────這小子腦子讓驢踢扁了────這代碼沒事兒啊?他丫兒的怎么就說不能運行?。咯ぉぉぉの壹业臋C器────是真不能運行啊。
        。。。。。。
        這事兒,整滴偶,每過一兩個月,就強迫自已再重學(xué)全套 ASP────堅持了。。。。。。
        兩年半以后,突然。。。。。。
        在書中一個不起眼兒的地方,看見了“HTTP://”的說法。。。。。。
        我滴媽啊────調(diào)試ASP代碼需要在前面加上這東西,電腦才會調(diào)用IIS服務(wù)。
        敢情,全世界都知道這事兒,偶和哥們又全是打字飛快滴人。
        他們?nèi)?xí)慣成自然,這么兩年半,偶就楞沒注意到我與他們的區(qū)別────偶就是沒打HTTP://。。。。。。
        為了這破事兒,偶曾經(jīng)懷疑過────偶是不是老了,干不了編程了?

    (二)CSS技術(shù)
        說起來這不是什么復(fù)雜的東西。
        想當(dāng)初,偶做的網(wǎng)站,要說數(shù)據(jù)庫靈活使用,那是沒問題的。
        但是,偶做的網(wǎng)頁那叫一個難看────整個一個“垮”字了解。
        但是,偶知道CSS這東西啊?就想學(xué),想用。
        結(jié)果,當(dāng)時買了一本DREAMWAVR的教材里,就有這個東西。
        。。。。。。
        這下,可坑苦我了。
        這書里,東一鋃頭,西一棒子,這CSS讓他丫整得七零八落滴。
        。。。。。。
        要偶是新潮一代做網(wǎng)頁滴就好了────不問為什么,會用一點兒是一點兒,怎么快怎么來。。。。。。
        可是偶這老幫子,要是沒整明白,學(xué)得沒條理沒體系,雞零狗碎滴學(xué)────可就是身心兩方面對偶滴摧殘了。。。。。。
        這東西────坑了我四、五年沒搞會────整得我一哥們兒就說────不對啊,挺簡單的事兒,你怎么 了?────你是故意的吧────你不可能學(xué)不會這么簡單的東西啊────我還真搞不懂。
        后來,還是這哥們,過了好幾年,給偶一本大專教材。
        這一看,沒把我氣死。用了不到 半小時就看懂了。
        這什么玩意兒?。刻唵瘟拴ぉぉぉひ院笠酑SS,全世界都問我吧。保證幾句話給說清楚。────這書里有一章專說CSS,條理清楚、簡明。幾眼就看明白 了。

    以上是三件偶這些年在“挨踢”技術(shù)上的三件大糗事兒。

二、書歸正傳,如何用VB6做控件

    主要搞清如下幾個問題:
        (一)制作一個控件的過程(這是核心問題,別一堆兒細(xì)節(jié),結(jié)果整個事兒怎么辦都不知道。許多人有這個毛病。)
        (二)如何生成一個控件(把您的心血變成產(chǎn)品,而不是源代碼)
        (三)制作控件的幾個關(guān)鍵細(xì)節(jié)
            如果利用已有控件?
            如何為控件“增加”自已的屬性?有三個小問題────
                如何在控件里保存屬性值
                如何由用戶在外部設(shè)定屬性值
                如何向用戶提供屬性值
            如何使控件對“事件”有反應(yīng)
            如何使控件具有初始化的能耐

    那就齊活兒了。

    下面,且順序問題的方式簡明描述。

    問題一:制作一個控件的過程
        步驟一:“新建一個工程”時,選擇“ActiveX控件”,而不是常用的“Exe文件”就行。搞定。
        步驟二:就跟普通VB編程一樣,往上放控件,編相關(guān)代碼。還再整點后面所說的幾個關(guān)鍵細(xì)節(jié)。搞定。
        步驟三:用“文件”菜單下的“生成XXXXXX.OCX”菜單項,生成結(jié)果的OCX文件。搞定。
    問題二:如何生成一個控件(把您的心血變成產(chǎn)品,而不是源代碼)?
        問題了已經(jīng)說明了。用“文件”菜單下的“生成XXXXXX.OCX”菜單項,生成結(jié)果的OCX文件。搞定。
    問題三:如何利用已有的控件?
        就在自制控件的界面(跟普通EXE工程的FORM界面沒區(qū)別),就把能用的控件玩了命的使勁往上擱就行。當(dāng)然,放完東西別忘了配代碼。搞定。
    問題四:如何在控件里保存屬性
        這個最簡單。只要在控件的說明部分里加上DIM語句來定義幾個變量就行。搞定。
    問題五:如 何由用戶在外部設(shè)定屬性值?
        只要在代碼里,按下面這個形式寫一下────
            Property Let 屬性名(ByVal New_Value As 類型)
                內(nèi)部某個變量名 = New_Value
            End Property
        就成。搞定。
    問題六:如何向用戶提供屬性值
        只要在代碼里,按下面這個形式寫一下────
            Property Get 屬性名() As 類型
                屬性名 = 內(nèi)部某個變量名
            End Property
        就成。搞定。
    問題七:如何使控件對 “事件”有反應(yīng)
        就在自定義控件里,像平常編EXE工程一樣,對上在的各個東西,直接編寫源代碼。
    問題八:如何使控件有初始化的能耐
        只要在代碼里,按下面的形式寫一下────
            Private Sub 用戶自定義的控件名_Initialize()
                隨便寫上您想干的事兒的代碼。。。。。。
            End Sub
        就成。搞定。

三、一個實例

    光說不練嘴 把式,光練不說傻把式────又說又練真把式?。。。。?!

    下面是偶為了示范自定義控件做的一個完整樣例────
        該控件,上面有兩個標(biāo)簽────會顯示出一個X值,一個Y值────正好一對坐標(biāo)。
        用戶可以對這個控件的X和Y屬性進行操作────結(jié)果馬上會在控件上顯示出來。

    制作步驟:
        (一)新建OCX工程
        (二)在界面上放上兩個標(biāo)簽。一個叫Lx,一個叫Ly,用來顯示屬性值。
        (三)然后在代碼里,寫下如下代碼(里面都有注解)就成。

Dim Xm As Integer  '內(nèi)部自定義變量,將來就用來為屬性X提供住房了
Dim Ym As Integer  '內(nèi)部自定義變量,將來就用來為屬性Y提供住房了

Private Sub UserControl_Initialize()  '控件初始化操作
    LX.Caption = "X=" & Xm  '在控件上顯示屬性X的值
    Ly.Caption = "Y=" & Ym  '在控件上顯示屬性Y的值
End Sub

Property Get X() As Integer  '取出控件內(nèi)的值給“屬性”
    X = Xm
End Property
Property Let X(ByVal New_X As Integer) '把用戶寫入的“屬性”值設(shè)置到OCX控件內(nèi)部值
   Xm = New_X
   LX.Caption = "X=" & Xm  '改變完X屬性住戶,順手在控件界面上顯示一下
End Property
'后面關(guān)于屬性Y注解就不用加了
Property Get Y() As Integer
    Y = Ym
End Property
Property Let Y(ByVal New_Y As Integer)
    Ym = New_Y
    Ly.Caption = "Y=" & Ym
End Property

Private Sub UserControl_Click()  '控件對單擊事件的反應(yīng)
  MsgBox ("您單擊了我")
End Sub

Private Sub UserControl_DblClick()  '控件對雙擊事件的反應(yīng)。
  MsgBox ("您單擊了我")
End Sub
        (四)選“文件”里的“生成 XXXXXXXX.OCX”菜單項,稍等,完活兒了。


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多