vb基础06:对象编程_第1页
vb基础06:对象编程_第2页
vb基础06:对象编程_第3页
vb基础06:对象编程_第4页
vb基础06:对象编程_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、vb基础06:对象编程在visual basic中创建应用程序z际,也就是和对象打交道之时了。可以使用visual basic提供的对彖 一比如控件、窗体和数据访问对象。也可以在一个visual basic应用程序内部控制另一个应用程序对彖。 甚至还可建立自己的对彖,定义它们的属性和方法。以下主题将详细讨论对象:对象是什么介绍对象的基本概念。用对象能做什么讨论应用程序屮使用对象的几种方法。使用对象初步介绍对彖的属性和方法。对豫z间的关系讨论对彖的层次、集合和容器。创建对象讨论在运行时如何创建和使用对象。对象是什么对象是代码和数据的组合,可以作为一个单位來处理。对象可以是应用程序的一部分,比如可

2、以是控件 或窗体。整个应用程序也是一个对彖。下表列出了在visual basic中可能用到的几种类型的对彖: 示例描述 命令按钮 窗体上的控件,象命令按钮和框架,它们都是对象。窗体 visual basic工程中的每一个窗体都是独立的对象。数据库 数据库是对象,并且还包含其他对象,如字段、索引等。图表 microsoft excel屮的图表是对彖。对象从何而来visual basic中的每个对象都是川类定义的。川饼干模子和饼干之间的关系作比,就会明口对象和它 的类z间的关系。饼干模子是类。它确定了每块饼干的特征,比如大小和形状。用类创建对象。对象就是 饼干。下面再用两个例子进-步说明visua

3、l basic中类与对彖之.间的关系。在visual basic的“工具箱”上,控件代表类。直到在窗体上画出这些被称作控件的对象为止,它们实 际上并不存在。在创建控件之时也就是在复制控件类,或建立控件类的实例。这个类实例就是应用程序中 引用的对彖。在设讣时操作的窗体是类。在运行时,visual basic建立'窗体的类实例。“屈性”窗口显示visual basic应用程序中的对象的类和name屈性。把对象看作是类的原原本本的复制品,从而建立所有对象。一旦它们以单个对象的形式存在,属性就可 改变。例如,如果在窗体上画了三个命令按钮,则每个命令按钮对象都是命令按钮类的实例。每个对象都 具冇

4、一组由类定义的公共的特征和功能(属性、方法和事件)。但是,每个对彖都冇自己的名字,都能分 别设置成有效或无效,都能放在窗体的不同位置,等等。为简单起见,本章z外的大部分内容将不过多引用对象的类。例如,只耍记住术语u list box控件”意味着“列 表框类的-个实例”。用对象能做什么对象可提供现成代码,省却书写麻烦。例如,可以自己创建打开文件和保存文件的对话框,但实际上大 可不必。取而代z的是利用visual basic提供的commondialog控件(一-个对彖)。虽然用户也能撰 写日程管理和资源管理的程序,但也人可不必。在此亦可使用microsoft project提供的calendar

5、. resources 和 task 对象。visual basic可以组合來自其它來源的对彖visual basic提供了把來自不同资源的对彖组合起來的工具。现在町把visual basic的各种强有力的 特性以及支持动化(先前以ole 动化闻名)的应川程序结合起来,建立定制的解决方法。口动化是 部件对象模式(com)的一个特性,它是应用程序使用的工业标准,用来陈列对象以开发工具和其它应用 程序。可把visual basic内部的控件结合在一起,也町使用其它应用程序提供的对象。考虑把下列对象放入 visual basic 窗体:microsoft excel chart 对象microsof

6、t excel worksheet 对象microsoft word document 对象使用对象初步visual basic对象支持属性、方法和事件。在visual basic中,称对象的数据(设置和属性)为属性, 称各种可在对彖上操作的过程为方法。事件是可被对彖识别的动作,例如单击鼠标和按卜键盘键,还可编 写代码來响应事件。改变对象的属性就可改变对象的特性。用收音机打比方,收音机的-个属性是音量。川visual basic的 行话來说,就是收音机有个“volume”属性,改变其值就可调节音量大小。假定收音机的音量值可设置 在0到10之间。如果能够通过visual basic控制收音机,则

7、可在一个过程中写代码,把“volume”属 性值从3提高到5,使声音更响一些:radio.volume = 5除了属性以外,对象还有方法。方法和属性都是对象的一部分。一般说來,方法就是要执行的动作,而 属性就是要设登或检索的特性。以拨号打电话为例。可以说电话有一个“拨号”方法,拨一个7位电话号码 的语法就是:phone.dial 555111 1对象还有事件。当对彖的某方面有变动时就触发了爭件。例如,收音机町能有“volumechange”爭件。 电话可能有“ring”事件,等等。用属性控制对象个别属性随着可以设置和取得它们的值的时间不同而不同。有的属性可在设计时设置。可在“屈性”窗口 设置这

8、些属性的值而无需编写任何代码。而有的属性在设计时是不可用的;因此,这些属性只有通过代码 在运行时设置。在运行时可以设置并可获得值的属性叫做读写属性。在运行时只能读取的属性叫做只读属性。设登属性值在想改变对象的外观或特性时设置屈性的值。例如,通过改变textbox控件的text属性,就可以改 变文本框的内容。用下列语法设置属性值:perty = expressi on下而是设置屈性的语句:textl .top = 200textl .visible = truetextl .text = "hello"'设置top属性为200纟是。'显示文

9、木框。'在文本框中显示"hello"。读取属性值想要在代码执行附加动作(例如给另一个对象赋值)之前得知对象的状态,这时就要读耿属性值。例如, 在运行代码之前能够返冋textbox控件的text属性值,以确定文本框的内容,这里,代码口j能改变值。在人多数情况下可以用以下语法获得屈性值:variable = perty属性值可以作为较复杂的表达式的一部分,而不必将属性赋予变量。下面的代码计算控件数组中的一个 新成员的top属性,它等于前一个成员的top属性加上400oprivate sub cmdadd_click ()'语句optbutto

10、n (n).top = optbutton (n-1 ).top 4- 400'语句end sub提示如果不只-次使用一个屈性值,而且将这个值存储到一个变量中,则代码执行起来会更快。川方法来执行动作方法能够影响属性值。例如在用收音机打比方的例了中,setvolume方法改变了 volume属性。与 此类似,在visual basic中列表框具有list属性,而clear和additem方法可以改变这一属性。 在代码中使用方法在代码中使用方法时如何书写语句,这取决于该方法要求多少参数,以及是否返回一个值。如果方法不要 求参数,则川以下语法编写代码:object, method下例中,用r

11、efresh方法重画图片框:picturel .refresh'强迫重画控件。有些方法,如上面的refresh ,既无参数又不返回值。如果方法要用多个参数,就用逗号将它们分开。例如,circle方法就要用代表窗体上圆的位置、半径 和颜色的参数:'画一个半径为1200缓的蓝色园。forml .circle (1600, 1 800), 1 200, vbblue如果要保存方法的返冋值,就必须把参数用括号括起來。例如,getdata方法从剪贴板返回一张图片:picture = clipboard.getdata (vbcfbitmap)如果没有返回值,则参数不会出现在括号中。例如,

12、additem方法没有返回值。listl.additem "yourname",在列表框中添加"yourname"。对象之间的关系在同一窗体上放置两个命令按钮时,它们是两个具有不同name属性设置值(commandl和command2)的分开的对象,但都分享同一个类一命令按钮。它们也共亨这样一个特征,即它们在同一窗体上。在木章前面己看到,窗体上的控件也包含在窗体中。 这就把控件放在一个层次上。要引用控件就必须先引用窗体,就如同打电话拨号一样,首先要拨国家号码 或区域号码,然后再拨具体的电话号码。这两个命令按钮也共宇这样-个特征,即它们都是控件。所有控件都

13、具有公共特性,使它们不同于窗体 以及visual basic环境中的其它对象。以下章节中将说明visual basic如何用集合使相关的对象分组。 对象的层次对象层次提供了一种纽织结构,它决定了对象间的相互关系以及访问它们的方法。在大多数惜况下不必 考虑visual basic对象的层次。但是:在操作其它应川程序的对象时,应当熟悉那个应用程序的对象层次。关丁-定位对象层次的信息,请参阅 “用部件编程”。在使用数据访问对彖时,应当熟悉数据访问对彖层次。在visual basic屮,一个对象包含其它对象的-般悄况时冇发生。下而我们要详细讨论。使用对象集合集合对象有口己的属性和方法。对象集合中的对象

14、作为集合的成员被引川。集合中的每个成员从0开 始顺次编号;这就是成员的索引号。例如,控件集合包含已给定窗体上的所有控件,如图5.10所示。如 果对集合屮的所有对彖都必须执行相同操作,则可用集合简化代码。例如,下列代码遍历控件集合,并在列表框屮列出每个成员的名字。for each control in form 1 .controls'把毎个控件的名字送到列表框。listl .additem control.namenext control应用集合成员的属性与方法有两种通用方法可用来对集合对象成员寻址:指定成员的名称。以下两个表达式等价:controls ("listl ”)c

15、ontrols!list1利用成员的索引号:controls (3)一旦能够从整体上对全体成员寻址,而且还能够个別地对单个成员寻址,就可用下而随便一种方式应用 属性和方法:45 list box控件的top属性设置为200。controls!list1 .top = 200一或者_for each control in form 1 .controls ()'将每一个成员的top属性设置为200ocontrol.top = 200next control包含其它对象的对象在visual basic 'p, 一些对象包含其它对象。例如,窗体通常包含一个或数个控件。把一个对象当作

16、其它对象的容器,这样做的好处在于,在代码中引用容器即可明了要使用哪个对象。例如,图5.11说明 在一个应用程序中可有两个不同的窗体,一个用来输入应付帐交易,另一个用来输入应收帐交易。两个'窗口可以冇名为istacctno的列表框。通过引用包含列表框的窗体就可准确指定要使用的列表框:frm receivablest acct no. add item 1201或者_frm payablest acct no. add item 1201visual basic中的公共集合在visual basic中一个对象包含其它对象的-般情况时有发生。下农简要叙述visual basic中最常川的 集

17、合。集合描述forms包含载入的窗体。controls 包含窗体上的控件。 printers 包含可用的打印机对象。在visual basic中也可实现对象控制。容器属性在窗体内,町用container属性改变对彖的容器。以下控件可包含其它控件:frame控件picturebox 控件toolbar控件(仅对专业版和企业版而言)如何在窗体上将命令按钮从一个容器移动到另一个容器,该例对此作了演示。打开新t程,并在'窗体上 画出 frame 控件、picturebox 控件和 commandbutton 控件。下列代码在窗体单击事件中,这些代码使计数器变量增加,并通过select case

18、循环使命令按钮在容 器z间移动。private sub form_click ()static intx as integerselect case intxcase 0set commandl .container = picture 1comma nd1 .top= 0commandl 丄eft= 0case 1set commandl .container = framelcommandl .top= 0comma nd1 丄 eft= 0case 2set command1 .container = form 1commandl .top= 0commandl 丄eft= 0end s

19、electintx = intx + 1end sub对彖z间的通讯除了在visual basic中使川和创建对象外,还可与其它应用程序通讯并在口己的应川程序中操作其它 应用程序的对彖。在应用程序之间共亨数据的能力是microsoft windows操作系统的关键性能之一。有 了 visual basic,与其它应用程序进行通讯变得极为灵活。创建对象创建对象的最简单方法是在“工具箱”中双击控件。但是,对visual basic中的所有可用对象以及来自 其它应用程序的所有可用对象,要想充分体现它们的优势,可在运行时用visual basic的可编程性能创立 对象。用对象变量创建对象引川。用类模块

20、“从零开始”创建自己的对象。用集合对象创建口己的集合。使用对彖变量除了存储值以外,变暈可引用对彖。如同给变暈赋值一样,基于下列相同理由,可把对彖赋给变量: 变量名往往比变量所含的值(或者,在此借况下,所含值就是它们引用的对象)短而好记。在运行代码时,为了引用其它对象,应改变变量。引用包含对彖的变最比反复引用对象木身有更高的效率。使用对彖变量与使用常规变量一样,只不过多了把对彖赋予变量这一步:首先声明变量:dim variable as class然后把对彖赋了变量:set variable = object声明对象变量声明对象变量的方法和声明其它变量一样,要用dim、redim、static、

21、private和public。仅有的 不同在于可选的new关键字和class参数,木章后面将会对new关键字和class参数都作介绍。语法 是: dim | redim | static | private | public variable as new class例如,可以声明一个对彖变量,它引用应用程序屮的被称做frmmain的窗体:dim formvar as new frmmain '声明一个类型为 frmmain'的对彖变量。也可以声明一个对象变量,它引用应用程序中的任何窗体:dim anyform as form'一般窗体变量。类似地,可以声明一个对彖变量

22、,它能够引用应用程序中的任何文木框:dim anytext as textbox'可以引用任何文本框'(但只能是一个文本框)。还可以声明一个对象变量,它能够引用任何类型的控件:dim anycontrol as control'一般控件变暈。注意,可以声明一个引用应用程序中的指定窗体的窗体变量,但不能声明引用特定控件的控件变量。可以 声明能够引用控件的特定类型(如textbox或列表框)的控件变最,但不是引用那种类世的一个特定控 件(如txtentry或listl )。但是,可把特定的控件赋予那种类型的变量。例如,对于具有列表 框istsample的窗体可以这样编码:d

23、im objdemo as list boxset objdemo = istsample赋值对象变量用set语句将对象赋予对象变量:set variable = object无论何时,只要希望对象变量引用对彖,就可使用set语何。冇时可用对象变暈,尤其可用控件变暈玄接缩短婆键入的代码。例如,原来的代码是这样的:if frm account display! txt acco un t balance.textend sub可用下面这个语句从其它模块调用latejobscount过程:form 1 .latejobscount创建窗体的新属性就象在窗体模块中芦明一个公用变量那样简单:publi

24、c idnumber as integer可用下而两个语句从其它模块设置和返回forml的idnumber值:form 1.1 dnumber = 3textl .text = form 1.1 dnumber也可用property过程向窗体添加h定义属性。详细信息“用对象编程”提供了 property过程的详细材料。注意不必加载窗体就町调用窗体的变最或自定义方法,还可设豐窗体的自定义属性。于是,不必将窗体加 载到内存就可运行有关窗体的代码。同样,引用控件而不引用其属性或方法时也不会加载窗体。使用new关键字用new关键字创建新对象,这个对象被视为它的类所定义的对象。可用new创建集合、窗体的

25、实例 以及类模块中定义的类。在窗体上使用new关键字在设计时创建的窗体是类。可用new关键字创建这个类的新实例。为了看到这一工作过程,请在窗体 上画出一个命令按钮和其它儿个控件。在“属性”窗口中将窗体的name属性设置成sample。在命令按钮 的click 事件过程中添加下列代码:dim x as new samplex.show运行应用程序,并单击命令按钮数次。把最前而的窗体移到边。因为窗体是具有可视界而的类,所以 可看到附加副本。每个窗体在相同位置上都有相同控件,而且这些位置也e是窗体在设计时的位置。 注意要使窗体变量和已加载窗体的实例一宜存在,请用static或public变量,而不要

26、用局部变量。也可将new关键字与set语句并用。请试用命令按钮的click事件过程中的代码:dim f as form 1set f = new form 1f.capti on = "hello"f.show将new关键字和set语句并用会加快运行速度,因此,这种方法值得推荐。对其它对象使用new关键字可用new关键字从类模块屮定义的类创建集合和对彖。试用下例说明这一工作过程。此例说明了 new关键字是如何创建类的实例的。打开新工程,在form 1上画出一个commandbutton控件。从“工程”菜单中选择“添加类模块”命令,从而在工程中添加一个类模块。设 置类模块的n

27、ame属性为showme。forml中的下列代码创建了类showme的新实例,还调川了包含在类模块中的过程。public cisnew as showmeprivate sub command 1 click ()set cisnew = new showmecisnew.showfrmend sub类模块屮的showfrm过程创建类forml的新实例,显示窗体,然后使其最小化。sub showfrm ()dim frmnew as form 1set frmnew = new form 1frmnew.showfrmnew. windowstate = 1end sub为了应川这个例子,请运

28、行应川程序并单击命令按钮数次。在创建showme类的每一个新实例时将看 到最小化的窗体图标出现在桌面上。详细信息关于利用new创建对彖的信息,请参阅“用部件编程”。new关键字的限制下表说明不能用new关键字做什么。不能用new创建 不允许的代码的例子基木数据类型的变量。dim x as new integer任何-般对象类型的变量。dim x as new control任何特定控件类型的变量。dim x as new list box任何特定控件的变量。dim x as new istnames释放对对彖的引用每个对象都使用内存和系统资源。当不再使用对象时及时释放这些资源,这是良好的编程习

29、惯。用unload从内存中卸载窗体或控件。hj nothing释放对象变疑占川的资源。川set语句将nothing赋予对象变量。给过程传递对象可在visual basic中将对象传递给过程。在下面的代码例子中假定窗体中有一 commandbutton控 件:private sub command1_click ()'调用demo子过程,并将窗体传递给它。demo form 1end subprivate sub demo (x as forml)'在屏幕中使窗体居中。x丄eft = (screen.width - x.width) / 2 end sub可以通过引川把对象传递给

30、参数,然后在过程内将参数设置成新对象。为了看到这一工作过程,打开工 程并插入第二个窗体。在每个窗体中安放一个图片框。需要改变的属性设置值如下表所示:form1_click事件过程调用form 2屮的get picture过程,并把一个空的图片框传递给它。 private sub form click ()form2.getpicture picturelend subform2中的get picture过程把form2上的图片框的picture属性赋予form 1上的空图片框。private objx as pictureboxpublic sub getpicture (x as pictu

31、rebox)'将传递进来的图片框赋予对象变量。set objx = x,将picture属性值赋了 forml的图片框。objx.picture = picture2.pictureend sub为了应川这个例子,请运行程序并单击form仁 在forml的图片框中将看到出现了 form2中的图标。vb基础05:过程与函数将程序分割成较小的逻辑部件就可以简化程序设计任务。称这些部件为过程,它们可以变成增强和扩 展visual basic的构件。在visual basic中有三种过程:子程序,函数和属性过程。过程可用于压缩重复任务或共享任务,例如,压缩频繁的计算、文本与控件操作和数据库操作

32、。用过程编程有两大好处:过程川使程序划分成离散的逻辑单元,毎个单元都比无过程的整个程序容易调试。一个程序中的过程,往往不必修改或只需稍作改动,便可以成为另一个程序的构件。在visual basic中使用下列几种过程: sub过程不返回值。 function过程返回值。vb基础03:基本词法vb是在basica、gw_basic、quick basic等语言基础上发展起來的,它保留了 basic版 本中数据类型和语法,对其中的菜此语旬和函数的功能作了修改或扩展,并根据语言的可视化要求增加 了一些新的操作。数据类型一、基木数据类型(1 )字符串字符串是一个字符序列,由ascii字符纽.成。在vb中

33、其长度为0到65535个字符。其中长度为0 的字符称为空字符串。字符串通常放在引号中,如:"hello(2) 数值vb的数值型数据分为整型数和浮点数两类。其小整型数又分为整数和长整数,浮点数分为单精度浮 点数和双粘度浮点数。(3) 货币货币数据类型是为农示钱款而设置的,其取值范围为:-922337203685477.5808 到 922337203685477.5807(4) 变体变体数据类型是一种可娈的数据类型,可以表示任何值,包括数值、字符串、口期/时间等。下表列出了棊本数据类型的名称、取值范围和存储要求:类型名称表示数据取值范围存储integer整数-32768 到 32767

34、2字节long长整数-2147483648 到21474836474字节string字符串0到65535个字符1字节/字符single单梢度浮点数-3.402823e38 到1。401298e-451 o 401298e-45 至u3。402823e384字节double双梢度浮点数-1.79769313486232d308 至lj-4.94065645841247d-3244.94065645841 247d-324 至ij 1.79769313486232d3088字节curre ncy货币-922337203685477.5808 到 922337203685477.58078字节var

35、ia nt变体上述z二、用户定义数据类型用户可利用type语句定义白己的数据类型,格式如下:type数据类型名数据类型元索名as类型名数据类型元索名as类型名end type常量和变量在程序中,不同类型的数据既可以帘量的形式出现,乂可以变量的形式出现。常量在程序执行期间其 值不发生变化,而变量的值是可变的,它代表内存中指定的存储单元。变量的声明dim var as typepublic var as typeprivate var as type其中:public定义公有变量dim, private定义私有变量option explicit 关键字visual basic中用户可以不声明而直接

36、使用变量,但容易产生错误。可以使用option explicit强制 声明变量,必须先声明后引用。option explicit关键字放在窗体或模块的通用芦明(genneral declaractions)处。也uj以通过设置将option explicit 口动加入到毎个模块中,方法是:1、从'工具'菜单中选'选项2、选择,编辑'选项卡3、选择“要求变量声明”选项4、选择“确定”变量的作用域vb的变量有三个作用域:局部(local)在过程级定义的变量,仅在声明它的过程小可见。模块/窗体(moudule/form)在模块或窗体级声明的变暈,在声明它的模块或窗体中

37、的所冇过程 中可见。公有(public)在模块或窗体级声明的变量,在所有项h的任何过程中都可。static关键字普通的局部变量在过程结束后释放,在下次执行过程时重新初始化为0。用static声明的局部变量 在过程结束后不被释放,仍保留变量的值。例:sub p()static a as integera = a + 1msgbox "a= " & aend sub常量常量是程序中不发生变化的值。它和变量一样有三种作用域。它的语法定义如下:public const con as type = expressionprivate const con as type = e

38、xpression数据类型转换vb自动完成某些数据转换,为提高运行速度,我们通常使用ctype()函数显式的转换。vb的转换函数包括:cbool转换为boolean类型cbyte 传换为byte类型ccur 转换为currency类型cdate 转换为date类型cdbl 转换为double类型cl nt 转换为i nteger类型clng 转换为long类型csng 转换为single类型cstr 转换为string类型cvar 转换为variant类型cverr 转换为error类型仿射变换private function 仿射变换(a1 (), a2()= ubound(a1 () /

39、5 n2 = ubound(a2() / 3dim nni1 (), u1 (1 to 3), u2(1 to 3)u1(1)=u1(2)=u1(3)=u1(1)u1(2)u1(3)a1(5 *a1(5 *a1(5 *u2=u2(2)=u2(3)=u2u2(2)u2(3)a1(5 *a1(5 *a1(5 *>-1)i - 3) * a1(5 * i - 1)i - 2) * a1(5 * i - 1)'第二个法方程系数i)i - 3) *i - 2) *a1(5 * i)a1(5 * i)nextdim x1(), x2()redim x1 (1 to 3), x2(1 to 3

40、) nni1 () = ni(nni1 (), 3)x1 () = bx(nni1 (), u1 ()x2() = bx(nni1 (), u2()dim a3()redim a3(1 to 2 * n2)for i = 1 to n2a3(2 *-1) = -x1(1) x1(2) *a2(3 t 1) x1(3)a2(3 * i)a3(2 * i - 1) = format(a3(2 * i - 1), ”0.0000)a3(2 * i) = -x2(1) - x2(2) * a2(3 * i - 1) - x2(3) * a2(3 * i)a3(2 * i) = format(a3(2

41、* i), "0.0000")next仿射变换=a3()end functionredim nni1 (1 to 6)nni1 (1)=n1for i = 1to n1nni1(2)=nni1 (2) +a1(5 * i - 3)'第一个法方程系数nni1 (3)=nni1 (3) +a1(5 * i - 2)nni1 (4)=rm i1 (4) +a1(5 * i - 3) *a1(5 *-3)nn i1(5)=nni1 (5) +a1(5 * i 3)*a1(5 *2)nni1 (6)=nn i1(6) +a1(5 * i - 2) *a1(5 *-2)vb中如

42、何使用hlp格式帮助文件'命令打开帮助主题:'増加一通用对话框控件,命名为:cmndialog cmndialog.helpfile = "c:/volume.hlp" cmndialog h elpcontext = 11 0 cmndialog h elpcomma nd = 1 cmn dialog .show help帮助文件名帮助主题命令始终为1、3、9显示帮助焜示帮助丨尽和索引对话框cmndialog h elpfile = "c:/volume.hlp cmn dialog h elpc on text = 110 cmn dialo

43、g.helpcommand = 11 cmn dialog. show help帮助文件名帮助主题命令始终为11显示帮助private sub form_load()commondialog 1.h elpfile = "d:/winword/dxchlp.hlp"end subprivate sub mnucontents_click()with comm on dialogl.helpcommand = cdihelpcontents tdihelpcontents 是显示目录的命令.showhelpend withend subprivate sub mnusearc

44、h_click()with comm on dialogl.helpcommand = cdihelpkey fcdlhelpkey 是显示关健字搜索的命令.showhelpend withend subprivate sub mnuabout_click()abot/horm.show 1 '以模态显示"关于"窗口end subprivate sub mnuexit_click()endend sub注:在具体使用时请将路径中的“ / ”改为“ ”vb读写文件要用到以下语句:1、open语句打开文件。2、读文件使用line input、input # ,(以上为文

45、本方式)和get (以上为二进制方式)。3、写文件使用print # > write (以上为文本方式)和put (以上为二进制方式)。4、close语句关闭文件5、二进制方式下移动文件位置使用seek语句。所有这些语句在vb的帮助中都有详细说明和例子。文本文件的示例:open testfile" for output as # 1 * 打开输出文件。print # 1, "this is a test将文本数据写入文件。print #1,'将空白行写入文件。print #1, "zone 1 "; tab ; "zone 2&q

46、uot;'数据写入两个区(print zones)。print #1, "hello”; "”; "world"'以空格隔开两个字符串。print #1, spc(5) : "5 leading spaces ",在字符串之前写入五个空格。print #1, tab(10) ; "hello"'将数据写在第十列。'赋值 boolean> date、null 及 error 等。dim mybool, mydate, mynull, my errormybool = false

47、: mydate = # february 12, 1969# : mynull = nullmy error = cverr(32767)"true、false> null及error会根据系统的地区设置口动转换格式。t【期将以标准的短式11期的格式显示。print # 1, mybool ; h is a boolean value''print # 1, mydate ; n is a date"print # 1, mynull : " is a null value"print # 1, myerror ;" i

48、s an error value"close # 1 '关闭文件。读文件示例使用line input #语句从顺序文件小读入一行数据,并将该行数据赋予一个变量。木示例假 设testfile文件内含数行文本数据。dim textlineopen testfile" for input as # 1 '打开文件。do while not eof循坏至文件尾。line input #1, textline '读入一行数据并将其赋予某变量。debug.print textline '在调试窗口中显示数据。loopclose #1 '关闭文件。

49、你也可以在我们的“磁盘、文件和目录”栏目屮找到许多这方而的问题和例子。制作帮助文件速成(上)带有帮助文件的应用程序无论对程序员还是用户都是不同凡响的,它能节省印刷大量用户手册的开 支,对程序员编辑修改和用户手册的复制保存都极为方便。帮助文件的另一个很有前景的应用是单独作 为带有图文信息的电子图书发布。在此对帮助文件的编制及如何在程序中编程调用作-详尽介绍。首先介绍第一部分,帮助文件的编 写。一帮助文件的编写步骤:先编写存冇所冇帮助信息的帮助源文件rtf文件。编写帮助项目文件hpj文件。对hpj文件编译,最后生成hlp文件。帮助源文件rtf文件的编写帮助源文件是存有所有帮助信息的,这是一种rtf

50、(richtextformat)文件,帮助文件象一本书,由 目录及一个个章节组成,各章节之间的跳转是山定义的热点來完成。现在举一具体例子(山目录等五条 信息组成)详细说明。原始信息由五个章节组成:目录、概述、说明、程序、安装。彖前面每一节的标题(“目录”,“概述”, “说明”,“程序”,“安装”)在rtf文件中必须以特有的脚注(即$)明确指定。对每一节还须指定其跳转 名(脚注是#,跳转名不能是汉字),以便标识,在这我们给每-节分别取名为:contents,descr/pfion,explanation,programming,setup,对每一节还可指定其搜索关键字(脚注是 k),关键字可以是

51、一个或多个,汉字和英文均可。具体操作如下:进入microsoftword中文版,选择:文件/新建,先输入第-节的内容:输入第一节 的标题:“目录”,将光标移到“目录”的前面,选择系统菜单的“插入”,选“脚注和尾注”,选“脚注”和“自 定义标记”,输入:$符号,这时文档下方出现脚注编辑窗口,光标也自动落在文档下方的脚注编辑窗口 中,在光标处接着输入这一节的标题:“日录”,有时看不到文档下方的脚注窗口,这只要将系统菜单小“视 图”的“脚注”选上。-下面定义这-节的跳转名,将光标移到“i i录”的前面,选择系统菜单的“插入”,选“脚注和尾注”,选“脚 注”和“自定义标记”,输入:#符号,这时文档下方

52、出现脚注编辑窗口,光标也自动落在文档下方的脚注 编辑窗口中,在光标处接着输入这一节的跳转名:“contents"有时看不到文档下方的脚注窗口,这只要 将系统菜单中“视图”的“脚注”选上)定义这一节的搜索关健字。将光标移到“目录”的询面,选择系统菜单 的“插入”,选“脚注和尾注”,选“脚注”和“自定义标记”,输入:k符号,这时文档下方出现脚注编辑窗口, 光标也自动落在文档下方的脚注编辑窗口中,在光标处接着输入这一节的搜索关健字,搜索关健字可以 是中文或英文,一个或多个,中间用分号(即;)隔开,这儿我们输入:h录;h次;contents-最后定义这一节的顺序号。顺序号相当于一木书中各章节

53、的页码。将光标移到“目录”的前面,选择 系统菜单的“插入”,选“脚注和尾注”,选“脚注”和“自定义标记”,输入:+符号,这时文档下方出现脚注 编辑窗口,光标也自动落在文档下方的脚注编辑窗口中,在光标处接着输入这一节顺序号,如:0001, 0002, 0003等。这儿我们输入:0001.八这样,第一节的脚注标记全部作完。第二节的脚注标记作法一样。(第一节和第二节要有分页符,选择系统菜单的“插入”,选“分隔符”, “分页符”)。在帮助文件中,当用户在按了绿色的跳转文本,就应该跳转到对应的章节,如何定义一个热点跳转 呢?因为我们已经定义了第一节的跳转名,只要将跳转文本与要跳转到的那一节的跳转名联系起

54、來,跳 转文本在rtf文件中是带双下划线的文本,以上例操作如下:选择系统菜单上的“格式”/“字体”,选择“字体”/“下划线”,选“双线”,然后开始输入热点文木,这儿 我们输入“概述”,输入完热点文本,清除双下划线格式,操作:选择系统菜单上的“格式”/“字体”,选择“字 体”/“下划线”,选“无”,清除双下划线格式后,紧接着选择隐藏文本格式,输入跳转h的地的跳转名, 操作:选择系统菜单上的“格式”/“字体”,选择“字体”/“效果”,选“隐藏”,输入跳转目的地的跳转名,这 儿输入description,输入完淸除隐藏文木格式。淸除隐藏文木格式的操作:选择系统菜单上的“格 式”/ “字体”,选择“字

55、体”/ “效果”,将“隐藏”复选框除去。- /ill何定义热点弹出说明。它与以上热点跳转文本-样,只不过它是带单下划线的文本。操作如下: 选择字符的单下划线格式,输入弹出式热点文本,如上例输入的是“单下划线的指定说明热点”,操作如 下:选择系统菜单上的“格式”/“字体”,选择“字体”/“下划线”,选“单线”,然后开始输入热点文木,这儿 我们输入“单下划线的指定说明热点”,输入完热点文木,清除单下划线格式,紧接着选择隐藏文木格式, 输入跳转目的地的跳转名,这儿是弹出窗口的跳转名:这儿输入“my_pop_up",输入完清除隐藏文本 格式。弹出窗口一节要与其它章节用分页符分开。只要指定跳转

56、名即可。我们经常看到的“参阅”、“seealso”弹出窗口就是这样作出來的。.如何对图形指定热点跳转。在rtf文件屮使用图形,可以用语句:bmc图形文件名, bmc表示 图形放在中间,bml表示图形放在左边,bmr表示图形放在右边,图形文件可以是一般的bmp位图和 shg热点跳转图形文件。八如用户在图形某处按动时,会弹出一个说明窗口。而热点图形.shg文件ih.bmp位图文件通过工具 软件 hotspot editor 编辑而来。hotspot editor 是随 visualbasic(在 vb 的 hc 目录卜*)和 visualfoxpro(在vfp的helpcomp目录下)发布的。执行文件名是shed.exeo操作:运行shed.exe,选file/open,装入耍用到的位图文件。这儿用一人头形位图man.bmp,在图形上拖动,产生一个个热点, 双击任一热点区域,出现一对话框,只要在contextstring处输入要跳转或弹出目的地的跳转名。热点 类型type处选取jump跳转式或popup弹出式。热点区域边框属性attribute选取可见visible或不 可见 invisible。在这个例子中 contextstring 输入 eye_popup,type 选取 popup,attribute 选取 i nvisible(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论