冷月葬花魂 发表于 2015-1-16 22:56:09

ASP教程之ActiveX深切浅出(一)

Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。active|activex大纲

  能够如许说,Active平台代表了Microsoft的天下不雅。利用ActiveX控件,来修建包含从与用户交互和顺应COM的事件处置监督器,到Web服务器,全体完成主动化的机构,这就是Microsoft的盘算了。桌面用的、基于COM的组件叫做ActiveX控件。所谓ActiveX控件不外是服从必定的尺度、与客户端交互的COM工具罢了。基于组件的使用开辟,其办法和组装电子安装一样,能够用已制造好的组件部件来修建使用。这的确是一项很使人向往的手艺。固然提及来深邃,但跟着ActiveX的普遍使用,愈来愈多的编程工具都撑持创立ActiveX控件了。这个中就包含了VB。在VB中计划一个ActiveX其实不比一个一般的VB使用程序难上很多。这篇文章,就是一步步教你怎样在VB中创立一个ActiveX控件。


ActiveX深切浅出(一)
作者:扬眉


  甚么是ActiveX控件?

  一个复杂的回覆就是:具有图形界面的类。你大概已经用过类来编程,那是一种完成代码重用的的好办法。固然,它也供应了良多别的的优点,这儿其实不盘算逐一枚举出来。ActiveX控件将这个观点近一步的深化了,可以让你编写一个窗口小部件(widget),然后把它打包起来,在今后的程序里用到它,大概作为特定的成绩的办理办法,给程序员供应更烦琐的编程办法。用ActiveX你能够制作“复合式”控件,由别的的几种控件组合而成。也就是说,在ActiveX控件中你不仅可使用VB中诸如文本框,图片框之类的一般控件,你还能够用别的的ActiveX控件来组成你本人的控件,完成你想要的功效,并把它打包以面前用。

  ActiveX控件的构成

  一个ActiveX控件由它的一些成员构成:属性,办法和事务。它们之间有甚么样的逻辑联系关系呢?仍是用我们的身材来做个例子吧,将身材就当作一个ActiveX控件。这个控件起首应当有一些属性,好比:眼是不是展开属性。明显,这个属性值应当有两种情形:开或则闭。利用的时分可以告知“身材控件”让这个属性换一个新的值,以决意睁眼大概闭眼,大概失掉以后的属性值,以晓得今朝的身材情况。

  办法是控件中历程和函数的统称,同别的任何的VB函数和历程并没有甚么分歧,你一样能够向它们传送参数,并前往想要的值。假定有一个类描叙了身材这个工具,它应当有“Look”这个办法,而且应当能承受“Direction”这个参数,那末,这个办法就应当写成如许:

  PublicSubLook(DirectionAsInteger)
  SelectCaseDirection
  Case0
  向左看
  Case1
  向右看
  Case2
  向前看
  Case3
  向后看
  EndSelect
  EndSub

  若请求前往值,我们就举一个“读”的例子吧。这时候你必需把“Read”这个办法声明成函数而不是历程  :
  PublicFunctionRead()AsString
  读的一些操纵
  Read="HellofromtheWorld"
  EndFunction

  在身材控件中,我们用的仍是“Look”这个办法。当挪用这个办法的时分,就是指定眼睛应当往“看”了。一样,我们还指定了别的一个办法,“Read”。这一个办法将用来前往看到的器材。

  “办法”这个观点是否是很复杂呢?假如你还不克不及够了解,也能够如许来想:你的控件就像是一台呆板,你拨动把持开关(输出参数),动弹把手(挪用办法),然后呆板的灯明灭,运转起来(实行办法),最初从呆板里蹦出一些器材(前往值),就是如许了。但等等……假如你的呆板想告知你甚么事变,它该怎样做呢?这时候就该是“事务”进场了。

  最初,身材控件还会供应一个“眨眼”的事务,用来在举行眨眼这个举措的时分,关照开辟者产生了这个事务,可是不用晓得身材外部的事情体例和为何这个事务会被触发。

  来下手吧,作一个控件。不要觉得作一个控件长短常难的事,固然它和一样平常使用程序的编写是有一点分歧的中央。在下面我们已晓得,一个ActiveX控件是由属性,办法和事务构成的,我们先看看怎样在程序中完成这些器材,然后再把它们接洽起来,组分解一个右机的全体。属性最复杂的情势是用public声明的公用变量。比方,假如把上面这段代码放到你的控件工程的声明部分:

  PublicEyeOpenAsBoolean

  如许,你就能够在后边的代码中利用这个属性了。可是,这类属性所可以做的现实在太少了。它几近是不克不及够一般事情的。由于在程序的计划时代,属性值的任何变更都必需关照VisualBasic,以便把控件实例标志为必要保留。而又由于属性值大概显现在多个中央,因而当属性值产生改动时必需关照开辟情况,以便使它可以同步显现“属性”窗口、“属性页”对话框等地位上的属性值。

  下面说的是否是有点难了解呢?如果不分明说的甚么,不要急,你先翻开一个工程,增加一个控件,试着改改这个控件的一些属性,在来看看下面的话,是否是分明了呢?我们如今的义务,就是要作一个如许的控件啊。由此能够看出,控件编程和一样平常的编程仍是有一些区分的。那末,该怎样完成数行呢?这要利用到属性历程。

  当一个属性值被援用大概设置的时分,属性历程主动的被挪用。上面我们就来增加一个如许的属性:翻开代码窗口,再点击“工具”菜单,选择“增加历程”子菜单,弹出的对话框中,填进历程名“EyeOpen”,然后再把范例设置为“属性”。当你点了断定以后,VB主动的为你创立了一个属性历程的原型,代码会被增加到代码窗口中:

  PublicPropertyGetEyeOpen()AsVariant

  EndProperty

  PublicPropertyLetEyeOpen(ByValvNewValueAsVariant)

  EndProperty

  剩下的你要做的,是写进属性处置代码,把这个骨架填满。

  你能够看到,VB实践上为你写了两个,“Get”和“Let”属性历程,有点困惑吗?实践上很复杂:“Get”是当属性值被援用的时分挪用的历程,而“Let”则是当属性值被写进的时分挪用的。(现实上另有第三品种型的历程,我们将在前面碰到,这里先提个醒)要让一个属性历程可以准确的事情,必需还要有一个变量来保留真实的属性值。把上面这一行增加到声明部分:

  Privatem_EyeOpenAsBoolean

  注重到谁人m_前缀,通常为放在用户控件的外部变量之前。如今该是添补历程框架的时分了。先看看Let历程,这个历程带有一个参数:缺省的是名字是vNewValue,variant范例。但我们想要一个布尔范例的变量而不是variant,由于眼睛在我们的模子中只要开和闭两种形态。以是把这个参数改成“New_EyeOpenAsBoolean”。假如你想要这个属性作为只读属性呈现,那末就不要再修改Let历程,让历程体空在那儿。不然,当想要设置这个属性值的时分,应当实行如许的代码:

  PublicPropertyLetEyeOpen(New_EyeOpenAsBoolean)

  m_EyeOpen=New_EyeOpen

  PropertyChanged"EyeOpen"

  前面还能够写一些相干的代码,对属性的设置做出反响

  EndProperty

  当要在程序中写进属性值的时分,就会挪用这个函数,先把属性值保留在一个公有变量内里,然后实行PropertyChanged这个外部办法,它用来告知VisualBasic属性值有了变更,并触发一个WriteProperties事务。关于这一点的详细的内容,在前面还会提到。

  而Get历程更加复杂!它和尺度函数没有两样:

  PublicPropertyGetEyeOpen()AsBoolean

  EyeOpen=m_EyeOpen

  EndProperty

  做完这些就完了吗?不!忘了后面说的属性值是必要保留的,因而当编程会话产生转换的时分,它们可以坚持上去。那末怎样来保留和掏出属性值呢?这时候就要用到PropertyBag工具了。

  利用PropertyBag

  PropertyBag工具包括两个办法:一个用来读出,一个用来写进。后面提到了,当任何的属性产生变更得时分,会触发控件的WriteProperties事务。这时候就能够把属性值保留在属性包中了。上面的代码完成这个功效:

  PropBag.WriteProperty"EyeOpen",m_EyeOpen,True

  PropBag是PropertyBag工具的一个实例。WriteProperty函数包括三个参数,第一格是属性称号,前面的是要保留的值,最初的参数是在无用户界说属性的情形下,将写进的默许值。把这个和ReadPropertiy办法的默许值设置分离起来,就能够为属性值设置缺省值了。假如属性值和缺省值不异,那末属性值就不会真实的别保留。当要读出的时分,ReadProperty函数发明在属性包中没有内容,就会前往缺省值。如许能够节俭一些体系开支。要注重的是:必需将一个成员属性的称号作为字符串传送。当你将控件作国际化处置时,不要改动这一字符串的称号,它必需与该属性的声名的称号相婚配。

  当控件被重启动后,你必需重载如一切保留的属性值。当每次读取PropertyBag中的数据时,ReadProperties事务被触发。在这个事务的处置过程当中,你要做的义务就是载进保留在属性包中的属性值,挪用ReadProperty函数来完成值一点。要注重的是:在读和写两个函数中的缺省值设置要一样。比方:

  m_EyeOpen=PropB</p>强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业;通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。

谁可相欹 发表于 2015-1-20 06:15:57

从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了

分手快乐 发表于 2015-1-24 12:39:16

虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。

深爱那片海 发表于 2015-1-26 20:02:08

封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。

兰色精灵 发表于 2015-2-4 20:19:36

如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:

再见西城 发表于 2015-2-28 23:26:01

下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。

只想知道 发表于 2015-3-10 10:24:22

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:

金色的骷髅 发表于 2015-3-17 06:11:16

ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。

老尸 发表于 2015-3-23 23:03:58

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
页: [1]
查看完整版本: ASP教程之ActiveX深切浅出(一)