|
一、這話兒的由頭
說起這用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”菜單項,稍等,完活兒了。
|