一、这话儿的由头
说起这用VB6做控件────哎,是偶从事“挨踢”行业以来最糗的三件事儿之一。
这做控件的事儿,早就想学,也学过N多回。──── 自从九六还是九七年,就一直想学,也学过N多回。────
偶介个二十多年的老程序员,够糗滴吧!!!!!! 这些年来,为这事儿没少烦心────
眼瞅着,人家一初中、高中一爱好者,都玩得溜溜儿滴,俺这老帮子怎么就不灵呢?
说来话长。
这些年来,为这事儿,偶买书,就为只要粘上有这事儿的书,就买。
买了五、六本儿,好几百的银子呢!!!!!!哭啊!!!!!!泪都哭干了。哼。。。。。。
这些书,要不然就是说个不明不白的例子,几乎都是互相抄────可俺需要滴东西,就是楞没有啊?
偶要什么?简单啊?就几个问题: 问题一:制作一个控件的基本过程────简单说吧,就是怎么着,怎么弄,怎么整,能搞出来一个叫OCX的
标准控件,而且能放之四海皆好用。
这个东西,要比照着书做,做一个嘛用也没有的控件,早就会了。可以要做个真正有用的,就在下面这个问题上卡住了。 问题二:这控件的属性────偶自已定义来用的,特别属于偶滴属性────怎么搞?怎么设定有几个属性,怎么设定属性值,怎么取出属性值这三个问题,就楞没找到一本书
啊!!!!!! 这个问题,可是偶滴心结。
记得是VB3开始,就可以搞控件,可必须通过什么“向导”来做。搞得好麻烦。一直没搞懂。
这VB自制控件的属性三问题,就一直“遗传”了偶小十年,成了个不大不小的心结。 今天,终于整成了。
这破微软,就告诉咱怎么直接自已敲代码多简单,非得搞出许多“向导”,让身为行家滴偶捆手绑脚────缺德透顶了。。。。。。────您微软想想,都玩自
制控件了,有外行吗?你有得着把这么简单的代码操作,非用“向导”给“藏”起来,就楞不让咱自已会用啊? 问题三:怎么生成控件和怎么发布使用控件
这不是问题,自打一会用控件,第一件事就是试试加载不是微软这强盗加流氓的东西做出来的控件。恨滴就是微软,讨厌滴就是微软。────可是,偶是真离不开
微软啊。这些年所有东西,全是在微软平台上做和用滴────哇哇────良心与道德的失衡啊。。。。。。
再说偶滴另两件糗事儿:
(一)ASP编程
早年间,偶就算是精通HTML了吧,从Ver3.2起步的。
后来,一学ASP,不难啊?────一周搞定,基本成了个“小行家”了吧。
可是,糗事儿来了────偶就是没法在网站上使用────什么服务器端了,什么客户端了────反正,偶的ASP代码,让所有人看了────都说:挺好,
没问题!
可事儿绝在,我这ASP编的东西,在全世界任是谁(当然也是干ASP编程滴哥们儿)那儿,都能运行得倍儿好────可在我的机器上────就是不执行
────就是报错。。。。。。 这事一整偶就是两年半,偶楞是用不了ASP啊。
全世界的哥们儿都在纳闷────这小子脑子让驴踢扁了────这代码没事儿啊?他丫儿的怎么就说不能运行啊?────我家的机器────是真不能运行啊。
。。。。。。 这事儿,整滴偶,每过一两个月,就强迫自已再重学全套
ASP────坚持了。。。。。。 两年半以后,突然。。。。。。
在书中一个不起眼儿的地方,看见了“HTTP://”的说法。。。。。。
我滴妈啊────调试ASP代码需要在前面加上这东西,电脑才会调用IIS服务。
敢情,全世界都知道这事儿,偶和哥们又全是打字飞快滴人。
他们全习惯成自然,这么两年半,偶就楞没注意到我与他们的区别────偶就是没打HTTP://。。。。。。
为了这破事儿,偶曾经怀疑过────偶是不是老了,干不了编程了?
(二)CSS技术
说起来这不是什么复杂的东西。 想当初,偶做的网站,要说数据库灵活使用,那是没问题的。
但是,偶做的网页那叫一个难看────整个一个“垮”字了解。 但是,偶知道CSS这东西啊?就想学,想用。
结果,当时买了一本DREAMWAVR的教材里,就有这个东西。 。。。。。。 这下,可坑苦我了。
这书里,东一锒头,西一棒子,这CSS让他丫整得七零八落滴。 。。。。。。
要偶是新潮一代做网页滴就好了────不问为什么,会用一点儿是一点儿,怎么快怎么来。。。。。。
可是偶这老帮子,要是没整明白,学得没条理没体系,鸡零狗碎滴学────可就是身心两方面对偶滴摧残了。。。。。。 这东西────坑了我四、五年没搞会────整得我一哥们儿就说────不对啊,挺简单的事儿,你怎么
了?────你是故意的吧────你不可能学不会这么简单的东西啊────我还真搞不懂。
后来,还是这哥们,过了好几年,给偶一本大专教材。 这一看,没把我气死。用了不到
半小时就看懂了。
这什么玩意儿啊?太简单了────以后要提CSS,全世界都问我吧。保证几句话给说清楚。────这书里有一章专说CSS,条理清楚、简明。几眼就看明白
了。
以上是三件偶这些年在“挨踢”技术上的三件大糗事儿。
二、书归正传,如何用VB6做控件
主要搞清如下几个问题:
(一)制作一个控件的过程(这是核心问题,别一堆儿细节,结果整个事儿怎么办都不知道。许多人有这个毛病。)
(二)如何生成一个控件(把您的心血变成产品,而不是源代码) (三)制作控件的几个关键细节
如果利用已有控件? 如何为控件“增加”自已的属性?有三个小问题────
如何在控件里保存属性值 如何由用户在外部设定属性值
如何向用户提供属性值 如何使控件对“事件”有反应 如何使控件具有初始化的能耐
那就齐活儿了。
下面,且顺序问题的方式简明描述。
问题一:制作一个控件的过程
步骤一:“新建一个工程”时,选择“ActiveX控件”,而不是常用的“Exe文件”就行。搞定。
步骤二:就跟普通VB编程一样,往上放控件,编相关代码。还再整点后面所说的几个关键细节。搞定。
步骤三:用“文件”菜单下的“生成XXXXXX.OCX”菜单项,生成结果的OCX文件。搞定。 问题二:如何生成一个控件(把您的心血变成产品,而不是源代码)?
问题了已经说明了。用“文件”菜单下的“生成XXXXXX.OCX”菜单项,生成结果的OCX文件。搞定。 问题三:如何利用已有的控件?
就在自制控件的界面(跟普通EXE工程的FORM界面没区别),就把能用的控件玩了命的使劲往上搁就行。当然,放完东西别忘了配代码。搞定。
问题四:如何在控件里保存属性
这个最简单。只要在控件的说明部分里加上DIM语句来定义几个变量就行。搞定。 问题五:如
何由用户在外部设定属性值? 只要在代码里,按下面这个形式写一下────
Property Let 属性名(ByVal New_Value As 类型) 内部某个变量名 =
New_Value End Property 就成。搞定。 问题六:如何向用户提供属性值 只要在代码里,按下面这个形式写一下────
Property Get 属性名() As 类型 属性名 = 内部某个变量名
End Property 就成。搞定。 问题七:如何使控件对
“事件”有反应 就在自定义控件里,像平常编EXE工程一样,对上在的各个东西,直接编写源代码。 问题八:如何使控件有初始化的能耐 只要在代码里,按下面的形式写一下────
Private Sub 用户自定义的控件名_Initialize()
随便写上您想干的事儿的代码。。。。。。 End Sub 就成。搞定。
三、一个实例
光说不练嘴
把式,光练不说傻把式────又说又练真把式!!!!!!
下面是偶为了示范自定义控件做的一个完整样例────
该控件,上面有两个标签────会显示出一个X值,一个Y值────正好一对坐标。
用户可以对这个控件的X和Y属性进行操作────结果马上会在控件上显示出来。
制作步骤: (一)新建OCX工程
(二)在界面上放上两个标签。一个叫Lx,一个叫Ly,用来显示属性值。
(三)然后在代码里,写下如下代码(里面都有注解)就成。
Dim Xm As Integer '内部自定义变量,将来就用来为属性X提供住房了 Dim Ym As Integer
'内部自定义变量,将来就用来为属性Y提供住房了
Private Sub UserControl_Initialize() '控件初始化操作 LX.Caption =
"X=" & Xm '在控件上显示属性X的值 Ly.Caption = "Y=" & Ym
'在控件上显示属性Y的值 End Sub
Property Get X() As Integer '取出控件内的值给“属性” X = Xm End
Property Property Let X(ByVal New_X As Integer)
'把用户写入的“属性”值设置到OCX控件内部值 Xm = New_X LX.Caption = "X=" &
Xm '改变完X属性住户,顺手在控件界面上显示一下 End Property '后面关于属性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() '控件对单击事件的反应 MsgBox ("您单击了我") End
Sub
Private Sub UserControl_DblClick() '控件对双击事件的反应。 MsgBox
("您单击了我") End Sub (四)选“文件”里的“生成
XXXXXXXX.OCX”菜单项,稍等,完活儿了。
|