ASP编程:ActiveX深切浅出(二)
减少客户内IT专业人才缺乏带来的影响。ASP的客户员工利用浏览器进入相关的应用软件,简单易用,无需专业技术支持。active|activex WhatanEvent事务是用来关照利用控件的程序员,某件事变产生了,好让程序员能够响应的处置。事务在VB编程中屈指可数,比方,当鼠标点击控件事会产生Click事务,文本框内容改动了会产生Change事务,等等。但这儿要讲的分歧于这些器材,也分歧于InitProperties,ReadProperties,WriteProperties后面提到过的事务,那些是体系已界说好了的。我们要做的是界说本人的事务。自界说的事务必需声明在模块的声明部分,然后就可以够在任何中央任什么时候候,只需你以为应当有事务了,就能够触发它。比方,一个代表眨眼的事务应当如许声明:
PublicEventBlink()
在括号中,你能够安排任何你想要传送给事务的参数。关于一个Click事务,这个参数大概鼠标点击时x和y坐标。而这在理,应为只是眨眼,就用不到分外的参数了。
触发事务,得利用RaiseEvent办法。关于我们的眨眼事务,我们把它和一个计时器接洽起来,如许它就可以够时不时的眨眼了:
PrivateSubBlinker_Timer()
RaiseEventBlink
EndSub
就如许,一个事务就完成了,没有任何技能大概奥密可言。如今留给程序原作的,只需编写响应的事务处置历程就好了,就像上面如许:
PrivateSubBodyControl1_Blink()
Debug.Print"嘻嘻,我又眨眼了!"
EndSub
到这儿,年夜部分关于ActiveX控件的基础成绩都讲了。前面的将是一些更初级的内容,包含图片和字体属性,“关于”对话框,运转时之读属性等等。在持续之前,再看看后面的内容,好好的在了解一下。好了吗?OK,如今入手下手更加冲动的过程。
起首,我们先来看看关于属性,另有甚么能够发掘的器材,好比色彩大概图片之类的器材。
初级属性计划
色采值被存贮在长整形变量中,可是假如你只是界说一个长整形变量,明显是不克不及够失掉像vb中所供应的谁人色彩选单:
这看起来很庞大,实践上做起来却一点也不难:一切你要做的只是把属性声明为OLE_COLOR范例,就像上面这段代码所作的那样:
PublicPropertyGetBackColor()AsOLE_COLOR
BackColor=UserControl.BackColor
EndProperty
PublicPropertyLetBackColor(ByValNew_BackColorAsOLE_COLOR)
UserControl.BackColor=New_BackColor
PropertyChanged"BackColor"
EndProperty
记得后面已经提过除Let,Get,另有第三种属性历程吗?如今揭开迷底:它就是Set属性历程,当要给工具变量赋值的时分,是不克不及用Let,而必需用Set来取代。这是由于保留在控件外部的工具变量,保留的并非工具的拷贝,而只是工具的援用,也就是一个内存地点了。为了统一般变量的复制保留区分开来,VB引进了Set属性历程。
也许你大概晓得:字体和图片就是保留在工具中的,并且,它们都具有各自的的对话框来设置相干属性。要用到这些对话框,一切我们要作的就是把图片大概字体申声明为Picture大概Font工具范例,而且为其设置Set属性历程。
PublicPropertyGetFont()AsFont
SetFont=lblText.Font
EndProperty
PublicPropertySetFont(ByValNew_FontAsFont)
SetlblText.Font=New_Font
PropertyChanged"Font"
EndProperty
看看下面的代码,你是否是在想:也没有甚么很难的啊。的确,就是如许复杂啊。上面,我们来看看怎样为控键创建只读属性。这也是在控件的计划顶用的对照多的一个内容。
只读属性
最复杂的办法,就是不要在Let/Set属性过程当中到场任何器材。但一般,这其实不能满意请求,偶然,你大概必要一个运转时只读的属性。所谓运转时――和计划时绝对应,是控告件终极在一个开辟完成的程序中运转,而计划时指的是控件被利用在开辟程序的过程当中。
要完成运转时只读,要用到Usercontrol的AmbientProperties工具。它供应了良多关于控件容器的属性。中有一个UserMode属性,当控件处在运转时形态时,UserMode值为真。经由过程在Let/Get过程当中供应对UserMode的检测,就能够很简单的完成运转是只读属性了:
PublicPropertyGetMultiLine()AsBoolean
MultiLine=m_MultiLine
EndProperty
PublicPropertyLetMultiLine(ByValNew_MultiLineAsBoolean)
IfAmbient.UserModeThen
Err.Raise382
ExitSub
EndIf
m_MultiLine=New_MultiLine
PropertyChanged"MultiLine"
EndProperty
这段代码回护属性只可以在计划时被修正,假如在运转时试图改动它,就会发生“Propertyisread-onlyatrun-time”毛病。
和AmbientProperties工具邻近的另有Extender工具。关于Extender工具,在入手下手编写控件前有需要好好的懂得。Extender工具是一个早期绑定的托言,开辟员能够经由过程它会见由控件容器(而不是控件自己)保护和把持的控件属性。它供应了一些属性,像Name,Enable,Left,Top,Height,Width等等,这些年夜多呈现在一样平常的控件中,在编写控件属性前,应当看看是不是已存在在Extender工具中,一方面能够制止反复事情,另外一方面也更无效率。
可是利用Extender工具还存在一些成绩:并非一切的容器都撑持会见不异的Extender属性。以是选用Extender工具是必需非常当心,否这做出的控件只能为特定的容器所利用。但假如你只是为VB开辟控件,那就不必有这些挂念了,只管的用吧。
另有一点要注重的是,Extender工具不克不及在usercontrol的initialize事务中会见它,可是能够在initProperties和ReadProperties事务中利用。
列举
在控件中设置属性时,利用列举是一种很罕见的的体例。它供应了一个下拉列表和多少选项让你选择。如许便利了用户的操纵,又不必思索过量的兼容性和毛病处置成绩,简化了属性设置,并且加倍平安。
起首,必需创建一个列举布局,放在声明部分。然后给出一系列的常量和对应的字符串。常量值能够零,大概是任何比它后面一个常量值年夜的整数。假如没有给出常量,那末VB主动为其赋值,第一个未指定的赋值为零,别的的值为后面一个数加一:
PublicEnumeDirection
Left
Right=1
Up
Down
EndEnum
要完成列举属性,必需创立一个带有Let和Get属性历程的尺度属性。这里的技能是将属性的范例声明为给出的列举范例:
PublicPropertyGetDirection()AseDirection
Direction=m_Direction
EndProperty
PublicPropertyLetDirection(ByValNew_DirectionAseDirection)
m_Direction=New_Direction
PropertyChanged"Direction"
EndProperty
独一要注重的是,只可以在计划时修正属性列表,而不同意在运转时这么做。别的的,像读,写,保留和检索,都和利用尺度属性是一样的。
这就是一切的技能了。难以相信的复杂,是吗?你的控件是否是看起来更加专业了呢?
Usercontrol工具
用VisualBasic所创立的ActiveX控件老是由UserControl工具加上选中放到UserControl上的任何控件(称为子控件或则构成控件)所构成。就象VisualBasic窗体一样,UserControl工具具有代码模块和可视化的计划器。将构成控件放到UserControl工具的计划器上,就象把控件放到窗体上一</p>asp是基于web的一种编程技术,可以说是cgi的一种。它可以完成以往cgi程序的所有功能,如计数器、留言簿、公告板、聊天室等等。 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: 跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
页:
[1]