分享

如何用VB6做控件

 nxhujiee 2010-06-16

一、这话儿的由头

    说起这用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”菜单项,稍等,完活儿了。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多