网站高级编程VbScript与--第4章 VBScript的函数.doc_第1页
网站高级编程VbScript与--第4章 VBScript的函数.doc_第2页
网站高级编程VbScript与--第4章 VBScript的函数.doc_第3页
网站高级编程VbScript与--第4章 VBScript的函数.doc_第4页
网站高级编程VbScript与--第4章 VBScript的函数.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第4章 VBScript的函数我们已经对VBScript的基本知识有所了解,本章我们将进一步学习VBScript的各类函数。由于学习抽象的函数知识近似于学习理论知识,会让人感到十分的枯燥和乏味,所以在这一章中,我们先从总体上对VBScript的函数作一综合介绍,然后再通过一些典型的例子,来详细讲解较常用到的VBScript函数。4.1 VBScript函数综述在VBScript中,函数包含在Function和End Function之间,函数和过程有许多相同之处,同样可以获取一定的参数,执行一系列的语句,并完成一定的操作,但和过程不同之处在于,函数会有一个返回值,其语法如下所示:Public|Private Function name (argulist) statements name = expressionEnd Function和过程一样,使用Private和Public可以表示函数是是公有的还是私有的,缺省情况下,函数默认是公有的。name是函数的名称,其命名需要遵循VBScript关于变量命名的规定。argulist是函数的参数列表,多个参数之间通过逗号进行分隔,参数传递有两种传递方式:ByVal进行值传递、ByRef进行地址传递。statements是函数内执行的脚本。name=expression语句则将expression的结果返回给调用该函数的语句,其中返回的结果数据类型是Variant类型。如果需要在函数执行的过程中,满足某种条件后直接退出函数的处理逻辑,返回主程序,应该使用Exit Function语句。例如,我们可以编写函数完成将温度的华氏度换算为摄氏度,如下所示:然后我们可以调用这个函数进行获取华氏温度相应的摄氏温度,在下面的语句,我们将华氏100度进行转换:VBScript提供的函数通常称为内部函数,以与用户定义的函数即外部函数相区分。这些内部函数可以完成数学运算、数据子类型的转换、数据格式化等操作。我们可以在脚本中直接调用这些函数完成数据处理而不需要任何预先的声明。下面,我们就对这些函数综合起来进行简要的介绍。4.1.1 数据类型判断VBScript中只有一种数据类型Variant,数据类型判断函数可以判断变量的子类型,运用这些函数,我们能够根据变量的子类型,对变量进行合适的处理:1. IsArray:IsArray函数判断变量是否是一个数组,如果是数组,则返回True,否则返回False。2. IsDate:IsDate函数判断表达式是否能够转换为日期,如果能够转换,则返回True,否则返回False。例如,如果变量Today = “12-30-2000”,那么使用IsDate(Today)的返回值为True。3. IsEmpty:IsEmpty函数用于指明变量是否已经被初始化,在声明变量之后,变量将自动被赋值为Empty,这时候使用IsEmpty判断,返回值为True;当变量经过赋值操作之后,调用IsEmpty函数,则返回False。4. IsNull:IsNull函数可以判断变量中存储的是否为Null,如果为Null,返回值为True,否则返回值为False。需要说明的是,Null并不是0,也不是空字符串,而是代表无效数据。5. IsNumeric:IsNumeric函数指明表达式是否能够被转换为数字表达式,如果转换能成功,则返回True,否则返回False。例如,如果字符串Num = “31.24”,那么IsNumeric(Num)的返回值为True。6. IsObject:IsObject函数可以判断变量是否是ActiveX对象,如是ActiveX对象则返回True,否则返回False。7. TypeName和VarType:TypeName和VarType函数都能够返回变量的子类型,不同的是,TypeName返回的是一个指示变量子类型的字符串,而VarType返回的是指示变量子类型的数字。4.1.2 格式化函数VBScript中引入了格式化函数,这些函数可以对货币类型数据、时间类型数据、数字和百分比数值等进行格式转换和处理,这些处理是基于控制面板中的区域设置属性完成的。1. FormatCurrency:FormatCurrency函数返回格式化后的货币类型数值,货币符号的设置基于控制面板的区域属性设置中。其语法如下所示:formatCurrency(expression,NumDigitsAfterDecimal,IncludeLeadingDigit,UseParensForNegativeNumbers,GroupDigits)其中,expression代表将被格式化的表达式,NumDigitsAfterDecimal代表的是小数点后数字位数,IncludeLeadingDigit指示是否将显示数字前面的零,UseParensForNegativeNumbers指示是否使用括号代替负号,GroupDigits指示是否使用区域设置中指定的数字分组符号将数字分组。其信息来源是控制面板中区域设置属性的货币部分,其中,后面三个参数可以有以下取值:(1) TristateTrue,代表选项值为True;(2) TristateFalse,代表选项值为False;(3) TristateUseDefault,代表根据控制面板中的区域设置来进行处理。例如,我们可以将以下货币-12345.78进行格式化显示:FormatCurrency(-12345.78, 1, TristateTrue, TristateTrue, TristateTrue)函数的可能返回值是¥12345.8。2. FormatDateTime:运用FormatDateTime函数,可以用5种日期/时间格式来显示一个日期表达式,其语法如下所示:FormatDateTime(Date ,NamedFormat)其中,Date是将要格式化的日期表达式,NamedFormat是指示日期/时间格式的值,它可以有以下5种取值:(1) vbGeneralDate,如果表达式中只有日期部分,则显示为短日期格式,如果表达式中只有时间部分,则显示为长时间格式,如果两部分都存在,则全部显示;(2) vbLongDate,根据区域设置属性以长日期格式显示日期;(3) vbShortDate,根据区域设置属性以短日期格式显示日期;(4) vbLongTime,根据区域设置属性以长时间格式显示时间;(5) vbShortTime,根据区域设置属性以短时间格式显示时间。例如,我们可以在以下脚本中将2000年12月20日以长日期格式显示:FormatDateTime(“2000/12/20”, vbLongDate)不过,上述语句在不同的计算机上可能运行会得出不同的结果,因为在控制面板中的区域设置属性可能会各不相同。如果长日期样式设置为yyyy年M月d日,那么,上述语句返回的结果将是2000年12月20日。3. FormatNumber:FormatNumber函数可以用于一个数字表达式的自定义显示,其语法如下所示:FormatNumber(expression,NumDigitsAfterDecimal,IncludeLeadingDigit,UseParensForNegativeNumbers,GroupDigits)其中的参数和FormatCurrency完全相同,不同的是它所有的信息均来自控制面板中区域设置属性的数字部分。例如,FormatNumber(-12.3456, 2, TristateFalse, TristateFalse, TristateFalse)的可能反馈结果是12.35。4. FormatPercent:FormatPercent函数用于返回一个表达式的百分比数值,其语法如下所示:FormatPercent(expression,NumDigitsAfterDecimal,IncludeLeadingDigit,UseParensForNegativeNumbers,GroupDigits)其中参数和FormatCurrency完全相同,不同之处在于它的信息均来自控制面板中区域设置属性的数字部分。例如,FormatPercent(-12.3456, 2, TristateFalse, TristateFalse, TristateFalse)的可能反馈结果是-1234.56%。4.1.3 数据类型转换函数运用VBScript的数据类型转换函数,我们可以方便地把数据进行子类型的转换,可以将字符串转换为日期,也可以将数字转换为字符串等等。1. CBool:CBool函数将表达式转换为布尔子类型的数据。2. CByte:CByte函数将表达式转换为字节子类型的数据,例如,CByte(“12”)=12。3. CCur:CCur函数将表达式转换为货币子类型的数据。4. CDate:CDate函数将表达式转换为日期子类型的数据。5. CDbl:CDbl函数将表达式转换为双精度浮点子类型的数据。6. CInt:CInt函数将表达式转换为整数类型的数据。7. CSng:CSng函数将表达式转换为单精度浮点子类型的数据。8. CStr:CStr函数将表达式转换为字符串子类型的数据。例如,CStr(12.34)=“12.34”。9. Hex:Hex函数将数值转换为表示十六进制值的字符串,例如,Hex(31)=“1F”。10. Oct:Oct函数将数值转换为表示八进制值的字符串,例如,Oct(31)=“37”。当然,在上述类型转换中并不能无限制地进行类型转换,比如说,CDate类型转换的表达式必须是能够被识别为日期子类型的表达式,比如说,如果执行CDate(“nothing”)函数,那么将会返回类型不匹配的错误。4.1.4 数学运算函数VBScript还提供了一定的数学运算函数,可以完成简单的数学运算功能,当然,由于VBScript的主要应用并不在数学运算中,所以其数学运算功能并不是十分强大,不过灵活运用这些函数也能够极大地方便我们脚本开发:1. Atn:Atn函数用于计算数值的反正切值。2. Cos:Cos函数用于计算角度的余弦值。3. Sin:Sin函数用于计算角度的正弦值。4. Tan:Tan函数用于计算角度的正切值,在这些计算角度的函数中,角度的表达形式应该是弧度,例如,计算30的正切值,我们需要使用如下方式:Tan(30*3.1415927/180)。5. Exp:Exp函数用于计算自然指数的幂次。6. Log:Log函数用于计算数值的自然对数。7. Sqr:Sqr函数用于计算数值的平方根。8. Randomize:Randomize函数用于初始化随机数生成器。在VBScript中,生成的随机数并不是真正意义上的随机数,而是伪随机序列,在生成第一个随机数的时候,它需要一个数值作为种子值来生成伪随机序列。Randomize函数有一个参数number,Randomize函数执行后可以初始化Rnd函数的随机数生成器,并以number作为其种子值,如果函数省略number,则缺省使用系统计时器返回的值作为种子值。注意,如果不使用Randomize函数,则第一次调用Rnd函数的时候,它将使用相同的数字作为种子值,这样就不能起到生成随机数的作用了。9. Rnd:Rnd函数用于生成一个随机数,这个随机数是一个小于1但大于等于0的小数。Rnd函数也有一个参数number,如果number大于0,则返回伪随机序列中的下一个数值,如果number小于0,则每次都会返回以number为种子值的随机数,如果number等于0,则返回最近生成的数。例如,如果我们需要生成一个5到10之间的随机数,我们可以采用如下公式:Int(10 5 + 1) * Rnd + 5)10. Abs:Abs返回数值表达式的绝对值。11. Int:Int函数返回数值表达式的整数部分。12. Fix:Fix函数同样返回数值表达式的整数部分,如果数值表达式结果大于等于0,则Int函数和Fix函数并没有什么区别,同样返回其整数部分,如果数值表达式结果小于0,则Int函数返回的是小于或等于这个数值的第一个负整数,而Fix函数返回的是大于或等于这个数值的第一个负整数,例如,Int(-2.4)=-3,而Fix(-2.4)=-2。13. Round:Round函数对数值表达式进行四舍五入取整。14. Sgn:Sgn函数返回代表数值表达式的整数,如果数值表达式的值大于0,则返回1,如果等于0,则返回0,如果小于0,则返回-1。4.1.4 日期时间处理函数VBScript的日期时间处理函数能够获取当前系统的日期和时间,也能够对日期和时间中的各个部分单独取出进行处理:1. Date:Date函数返回当前系统日期。2. Time:Time函数返回当前系统时间。3. DateAdd:DateAdd函数能够将给定日期添加时间间隔然后返回,其语法如下所示:DateAdd(interval, number, date)其中,interval是表示时间间隔部分的字符串,其取值可以是:“yyyy”,代表年份;“q”,代表季度;“m”,代表月份;“y”,代表一年的日数;“d”,代表日;“w”,代表一周的日数;“ww”,代表周;“h”,代表小时;“n”,代表分钟;“s”,代表秒。number是需要添加的时间间隔,date则是给定的日期。例如,我们可以获取当前日期的100天后的日期:DateAdd(“y”, 100, Date)4. DateDiff:DateDiff函数能够返回两个给定日期之间的差异,其语法如下所示:DateDiff(interval, date1, date2, firstdayofweek, firstweekofyear)其中,interval是表示时间间隔部分的字符串,取值和DateAdd函数一样,date1和date2分别代表开始日期和结束日期,firstdayofweek可以指定哪一天是一个星期的开始,其取值如表4.1所示:表4.1 firstdayofweek参数取值常数取值说明vbUseSystem0根据区域属性设置而定vbSunday1星期天(默认设置)vbMonday2星期一vbTuesday3星期二vbWednesday4星期三vbThursday5星期四vbFriday6星期五vbSaturday7星期六firstweekofyear可以指定一年中第一周的情况,其取值如表4.2所示:表4.2 firstweekofyear参数取值常数取值说明vbUseSystem0根据区域设置属性而定vbFirstJan11从1月1日所在的星期开始(默认)vbFirstFourDays2新年中至少有四天的第一个星期开始vbFirstFullWeek3新年中完整的第一个星期开始firstdayofweek和firstweekofyear这两个参数都是可选的。例如,我们可以计算1999年12月31日和2000年12月31日间相差的天数:DateDiff(“d”, “1999/12/31”, “2000/12/31”)=366,也可以计算相差年份:DateDiff(“yyyy”, “1999/12/31”, “2000/12/31”)=1。5. DatePart:DatePart函数可以返回日期的指定部分,其语法如下所示:DatePart(interval, date1, date2, firstdayofweek, firstweekofyear)其中参数和DateDiff函数的参数完全相同。例如,我们可以获知2000年5月26日是星期几:DatePart(“w”, “2000/5/26”)=6,6代表的正是vbFriday常数,表明这一天是星期五。6. DateSerial:给定年、月和日各部分,DateSerial函数可以将其合成为日期子类型的数据。例如对于2000年12月31日,我们可以使用DateSerial函数如下合成:DateSerial(2000, 12, 31)。7. DateValue:运用DateValue函数,能够将用以描述日期的字符串转化成为日期子类型的数据,其中包含的就是字符串所描述的日期。8. Day:Day函数返回指定日期的日部分。例如,可以获取当前日期的日部分:Day(Date)。9. Month:Month函数返回指定日期的月份部分。10. Year:Year函数返回指定日期的年份部分。11. MonthName:MonthName返回代表指定月份的字符串,例如,MonthName(1)=“一月”,这个返回值是和系统相关的。12. WeekDay:WeekDay函数可以返回指定日期是星期几,例如,WeekDay(Now)函数可以获取系统当前日期是星期几。13. WeekDayName:WeekDayName函数可以返回一个字符传,指定星期中的某一天。14. Hour:Hour函数返回指定时间的小时部分。例如,可以获取当前时间的小时部分:Hour(Time)。15. Minute:Minute函数返回指定时间的分钟部分。16. Second:Second函数返回指定时间的秒钟部分。17. Now:Now函数获取当前系统日期和时间值。18. TimeSerial:给定小时、分钟和秒钟,TimeSerial函数可以将其合成为日期子类型的数据。例如对于11点59分59秒,我们可以使用TimeSerial函数如下合成:TimeSerial(11, 59, 59)。19. TimeValue:运用TimeValue函数,能够将用以描述时间的字符串转化成为日期子类型的数据,其中包含的就是字符串所描述的时间。4.1.5 字符串处理函数VBScript中字符串处理函数可以完成截取字符串、字符串大小写转换等功能,虽然我们完全可以自己编写脚本来实现同样的功能,但是直接调用VBScript的函数可以在脚本编写的过程中提供给我们不少方便。1. Asc:Asc函数可以获取字符串中第一个字母的ASCII码,例如,Asc(“AB”)=65。2. Chr:Chr函数可以返回指定数字对应的ASCII码字符,例如,Chr(65)=“A”。3. Instr:运用Instr函数,我们可以判断在一个字符串中是否包含另外一个字符串,它返回的是被搜索字符串第一次出现的位置,例如,Instr(“acabc”, “ab”)=3。4. InstrRev;InstrRev函数的功能和Instr的功能类似,不同之处在于InstrRev函数是从字符串尾开始搜索,而Instr函数是从字符串首开始搜索,例如,Instr(“acabc”, “c”)=2,而InstrRev(“acabc”, “c”)=5。5. Len:Len函数返回字符串的长度,例如,Len(“abc”)=3。6. LCase:LCase函数将字符串中的字母转换为小写字符,例如,LCase(“Case”)=“case”。7. UCase:UCase函数和LCase函数的功能正好相反,UCase函数将字符串中的字母转换为大写字符,例如,UCase(“Case”)=“CASE”。8. Left:Left函数可以从字符串左边开始截取指定长度的字符,例如,Left(“Case”, 2)=“Ca”。9. Right:Right函数可以从字符串右边开始截取指定长度的字符,例如,Right(“Case”, 2)=“se”。10. Mid:Mid函数的功能比Left函数和Right函数的功能要强大得多,它能够从字符串的指定位置截取指定长度的字符,例如,我们可以截取“Case”字符串从第二个位置开始的两个字符:Mid(“Case”, 2, 2)=“as”。11. LTrim、RTrim和Trim:LTrim函数删除字符串中的前导空格,RTrim函数删除字符串中的后续空格,Trim函数则删除字符串中的前导和后续空格,例如,LTrim(“ Case ”)=“Case ”,RTrim(“ Case ”)=“ Case”,Trim(“ Case ”)=“Case”。12. StrReverse:StrReverse函数将指定的字符串一逆序的形式排列,例如,StrReverse(“Case”)=”esaC”。13. String:String函数返回指定长度并以相同字符组成的字符串,例如,我们可以生成一个长度为5,并且全部由字符a组成的字符串:String(5, “a”)=“aaaaa”。14. StrComp:StrComp函数对两个字符串执行字符串比较,并返回比较结果,如果前者小于后者返回-1,如果前者大于后者返回1,如果两个字符串相等返回0,如果两个字符串中有一个字符串为Null,则返回Null。例如,StrComp(“good”, “ok”)=-1,这是因为“g”的ASCII码小于“o”的ASCII码,所以“good”“ok”。15. Space:Space函数返回由指定空格组成的字符串,例如,Space(2)=“ ”。16. Replace:Replace函数可以将字符串中指定的子串替换为另外的子串,例如,我们可以将字符串“window”中的w替换为k,Replace(“window”, “w”, “k”)=“kindok”。4.2 程序范例:Hello几乎所有介绍编程语言的书上的第一个范例都是Hello, world。所以,我在这里也使用Hello作为VBScript函数学习的第一个范例。这是一个简单的程序,通过这个程序的学习,可以对于MsgBox函数有所了解。4.2.1 范例介绍使用浏览器(这里使用IE)将该网页打开后如图4.1所示。图4.1 VBScript程序范例:Hello用户可以单击“问好”按钮,将弹出一个对话框。仅此而已,相当简单。这个程序的源代码也相当简单,仅几句话而已:从上述代码中可以看出,在按钮单击事件中只有一行代码,在这行代码中使用了MsgBox函数。该函数的作用是将弹出一个对话框,对话框中可以写一些用户想要表示的信息。这个方法虽然简单,但相当有用。4.2.2 函数介绍MsgBox函数MsgBox函数用于弹出一个对话框,并在对话框中显示一些用户信息,并等待用户单击按钮。该函数的返回值用于表示用户单击的按钮。关于该函数的语法如下:MsgBox (prompt, buttons, title, helpfile, context)关于该函数中的一些参数的说明如下:(1) Prompt。作为消息显示在对话框中的字符串表达式。prompt 的最大长度大约是1024个字符,这取决于所使用的字符的宽度。如果 prompt 中包含多个行,则可在各行之间用回车符 (Chr(13)、换行符 (Chr(10) 或回车换行符的组合 (Chr(13) & Chr(10) 分隔各行。(2) Buttons。数值表达式,是表示指定显示按钮的数目和类型、使用的图标样式,默认按钮的标识以及消息框样式的数值的总和。有关数值,请参阅下文。如果省略,则 buttons 的默认值为 0。(3) Title。显示在对话框标题栏中的字符串表达式。如果省略 title,则将应用程序的名称显示在标题栏中。(4) Helpfile。字符串表达式,用于标识为对话框提供上下文相关帮助的帮助文件。如果已提供 helpfile,则必须提供 context。在 16 位系统平台上不可用。(5) Context。数值表达式,用于标识由帮助文件的作者指定给某个帮助主题的上下文编号。如果已提供 context,则必须提供 helpfile。在 16 位系统平台上不可用。Helpfile和Context两个参数必须同时出现,这样用户就可以按下F1键来查看与上下文相对应的帮助主题。如果对话框显示“取消”按钮,则按ESC键与单击“取消”按钮的效果相同。如果对话框包含“帮助”按钮,则有为对话框提供的上下文相关帮助。此外对于参数Button,这里还需要说明一下。在VBScript语言中,提供了一些常量来代替Button中枯燥而且没有任何意义的数值表达式,下面我们就介绍一下这些组常量。第一组常量用于描述对话框中显示的按钮类型与数目(表4.3):表4.3 常量表示常量表示代表数值含义vbOKOnly0只显示确定按钮。vbOKCancel1显示确定和取消按钮。vbAbortRetryIgnore2显示放弃、重试和忽略按钮。vbYesNoCancel3显示是、否和取消按钮。vbYesNo4显示是和否按钮。vbRetryCancel5显示重试和取消按钮。第二组常量用于描述图标的样式(表4.4):表4.4 常量表示常量表示代表数值含义vbCritical16显示临界信息图标。vbQuestion32显示警告查询图标。vbExclamation48显示警告消息图标。vbInformation64显示信息消息图标。第三组常量用于确定默认按钮,如表4.5所示。表4.5 常量表示常量表示代表数值含义vbDefaultButton10第一个按钮为默认按钮。vbDefaultButton2256第二个按钮为默认按钮。vbDefaultButton3512第三个按钮为默认按钮。vbDefaultButton4768第四个按钮为默认按钮。第四组常量用于决定消息框的样式,如表4.6所示。表4.6 常量表示常量表示代表数值含义vbApplicationModal0应用程序模式:用户必须响应消息框才能继续在当前应用程序中工作。vbSystemModal4096系统模式:在用户响应消息框前,所有应用程序都被挂起。在使用buttons 参数值时,只需要从每组值中取用一个数字或常量来表示按钮即可。MsgBox函数的返回值也是一些数值信息,而且是通用的。同时,这些返回值也可以用一定的常量来表示其具体的含义,具体如表4.7所示。表4.7 常量表示常量表示代表数值含义vbOK1确定vbCancel2取消vbAbort3放弃vbRetry4重试vbIgnore5忽略vbYes6是vbNo7否4.2.3 程序清单 例4.1 VBScript程序范例:Hello4.3 程序范例:色彩在网页中,颜色的应用和数值之间的转换将会经常使用。因为网页制作不同于一般的应用程序,一般的应用程序往往注重功能的实现,而对于界面的美观一般不会有过于苛刻的要求。但是网页不同,网页的制作在完成基本功能实现后,更注重于美观来吸引更多的用户来浏览该页面。所以,颜色的应用显得相当的重要。幸好VBScript提供了相应的函数来解决这一问题。4.3.1 范例介绍我们可以使用一个网页编辑器来布局整个页面,比如使用Microsoft FrontPage,来编排图4.2所示的网页。图4.2 VBScript程序范例:色彩(布局)其中所使用的控件,以及名称如表4.8所示。使用浏览器打开该页面后,用户可使用鼠标来移动分别代表红、绿、蓝三色的滚动条的按钮,可以调节从0到255的不同整数数值,从而调节不同的颜色。三种基本颜色的数值的十进制和十六进制的表示将在后面的文本框内显示出来。同时颜色框内将显示这三种基本颜色的调和色。此外,用户可以单击“设置背景”按钮,来改变背景的颜色,也可以单击“设置字符颜色”按钮,来改变输入框内的字符颜色,使其与颜色框内的颜色一致。页面的具体运行效果如图4.3所示。表4.8 使用到的控件控件类型名称初始值滚动条RedScroll滚动条GreenScroll滚动条BlueScroll按钮BtnBackgroud初始值:设置背景按钮BtnFont初始值:设置字符颜色输入框RedDec初始值:0输入框GreenDec初始值:0输入框BlueDec初始值:0输入框RedHex初始值:0输入框GreenHex初始值:0输入框BlueHex初始值:0输入框RGBDec初始值:0输入框RGBHex初始值:0输入框HTMLHex初始值:0输入框TxtFont初始值:字体颜色图4.3 VBScript程序范例:色彩(运行)4.3.2 代码讲解在所给范例中,需要处理的事件有五处,即三个滚动条的按钮移动事件和两个按钮的单击事件。在滚动条滚动(Scroll)的时候,需要改变颜色框内的颜色,以及其他输入框中三种基本颜色的值。单击“设置背景”的按钮,可以改变背景颜色。单击“设置字符颜色”的按钮,可以改变输入框内的字符颜色。在该页面中使用到的6个变量说明如表4.8所示。表4.8 变量定义变量定义变量说明Dim TempHexR用于临时记录红颜色的十六进制数值。Dim TempHexG用于临时记录绿颜色的十六进制数值。Dim TempHexB用于临时记录蓝颜色的十六进制数值。Dim TempDecR用于临时记录红颜色的十进制数值。Dim TempDecG用于临时记录绿颜色的十进制数值。Dim TempDecB用于临时记录蓝颜色的十进制数值。范例中三个滚动条的滚动事件的代码下面分别介绍一下。(1) 代表红颜色的滚动条的滚动事件。其代码如下:Sub RedScroll_Change() RedDec.Text=RedScroll.Value RedHex.Text=Hex(RedScroll.Value) TempDecR = RedScroll.Value UpdateValsEnd Sub代码中各语句解释如下:RedDec.Text=RedScroll.Value是将滚动条所代表的数值(十进制)填入输入框内。RedHex.Text=Hex(RedScroll.Value)是将滚动条所代表的数值(十六进制)填入输入框内。TempDecR = RedScroll.Value将该数值记录在变量中,以便于后面的调用。UpdateVals调用UpdateVals函数,来改变颜色框内的颜色。其中调用的UpdateVals函数的代码如下:1: Sub UpdateVals2: ColorTextBox.Backcolor = RGB(RedScroll.Value, GreenScroll.Value, BlueScroll.Value)3: RGBDec.Text=RedDec.Text + (GreenDec.Text * 256) + (BlueDec.Text * 65536)4: TempHexR=0 & Hex(RedScroll.Value)5: TempHexG=0 & Hex(GreenScroll.Value)6: TempHexB=0 & Hex(BlueScroll.Value)7: TempHexR=Right(TempHexR, 2)8: TempHexG=Right(TempHexG, 2)9: TempHexB=Right(TempHexB, 2)10: RGBHex.Text=&H & TempHexB & TempHexG & TempHexR11: HTMLHex.Text= TempHexR & TempHexG & TempHexB12: End Sub该函数中的有关语句解释如下:第2行:将三种基本色合成颜色,并将该颜色作为颜色框的背景颜色。其中,将三种基本颜色合成颜色,使用函数RGB,该函数由VBScript提供。第3行:将三种基本色的十进制数值合并成颜色的十进制数值。第4至9行:计算三种基本色的十六进制数值,其中,每个数值都用两位来表示。以便于后面用于合成颜色的十六进制数值。第10行:将颜色的十六进制数值填入输入框内。第11行:将颜色的十六进制数值填入输入框内。(2) “设置背景”按钮的单击事件。其代码如下:Sub BtnBackgroud_OnClick( )Document.bgColor = RGB(TempDecB, TempDecG, TempDecR)End Sub(3) “设置字符颜色”按钮的单击事件。其代码如下:Sub BtnFont_OnClick()TxtFont.ForeColor = RGB(TempDecR, TempDecG, TempDecB)End Sub4.3.3 函数介绍本范例中涉及的函数不少,下面我们就分别介绍一下。RGB 函数该函数的作用是将三种基本色合成颜色,并返回代表该RGB颜色的整数值。其语法如下:RGB(red, green, blue) 在RGB 函数的语法中,可以使用的参数及其说明如表4.9所示。表4.9 参数说明参数参数说明red该参数必选。取值0到255间的整数,代表颜色中的红基本色成分。green该参数必选。取值0到255间的整数,代表颜色中的绿基本色成分。blue该参数必选。取值0到255间的整数,代表颜色中的蓝基本色成分。一般而言,在许多应用中,在使用到颜色属性时候,都要求用整数来代表RGB颜色值。RGB颜色是将红色、绿色、蓝色,这三种基本颜色组合成某一特定的颜色值。这一组合过程在VBScript语言中,就是通过RGB函数来实现的。其中红色、绿色、蓝色相对强度的数值一般是使用十进制来表示。如果RGB颜色用十六进制来表示的时候,低字节值表示红色,中字节值表示绿色,高字节值表示蓝色。在RGB函数中,三个参数的数值都是从0到255的范围。如果其中任一数值超过255,都作为255来计算。在该范例中,除了使用颜色函数外,还使用到了从十进制向十六进制进行转换函数,这里就具体来谈谈转换函数。首先要介绍的是将十进制数向十六进制和八进制转换的函数。Hex 函数该函数是对于任何输入的十进制数值进行转换,返回表示十六进制数字值的字符串。其语法如下:Hex(number) 其中,number参数是任意有效的表达式。有一些情况需要说明,详细见表4.10所示。表4.10 情况说明参数情况返回值情况如果number参数不是整数则在进行运算前,将其四舍五入为最接近的整数。如果number参数是NullHex返回Null如果number参数是EmptyHex返回零 (0)。如果number参数是其他数Hex返回的数值最大到八位的十六进制字符。在十六进制计数法中,可以通过在数字前面添加前缀&H来表示十六进制数。例如:&H10表示十进制数16。下面的示例利用Hex函数返回数字的十六进制数:Dim MyHexMyHex = Hex(5) 返回 5。MyHex = Hex(10) 返回A。MyHex = Hex(459) 返回 1CB。Oct 函数该函数是对于任何输入的十进制数值进行转换,返回表示八进制数字值的字符串。其语法如下:Oct(number) number 参数是任意有效的表达式。与参数对应的返回值的情况见表4.11。表4.11 情况说明参数情况返回值情况如果 number 参数不是整数,则在进行运算前,将其四舍五入为最接近的整数。如果 number 参数是NullOct 返回Null如果 number 参数是EmptyOct 返回零 (0)。如果 number 参数是其他数Oct 返回的数值最大到十一位的八进制字符。在八进制计数法中,可以通过在数字前面添加前缀&O来表示十六进制数。例如:&O10 表示十进制数8。下面的示例利用Oct函数返回数字的八进制数: Dim MyOctMyOct = Oct(4) 返回 4。MyOct = Oct(8) 返回 10。MyOct = Oct(459) 返回 713。其他转换函数在VBScript语言中,转换函数并不局限在十进制和八进制,十六进制之间的转换,还包括将变量转换成数值、字符、布尔、货币等类型。具体如表4.12所示。表4.12 其他转换函数函数名称语法说明Chr函数Chr(charco

温馨提示

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

评论

0/150

提交评论