李小薪
VB问题集锦
2016-1-10 10:45
阅读:2481
标签:VB程序设计, VB问题

VB问题集锦

1        问题

1.        语句“Print 17/25/2”的结果为什么是4而不是3

a)       首先,注意到乘法和除法的优先级高于整除,所以此题的运算顺序是:i% = (17/2) (5/2)

b)       其次,遇到整除“”这个二元运算符,它的前后项都应该变换为整数,也就是,对于ab而言,不管ab是否为整数,都应该将ab都先化为整数,先化为整数的原则是“四舍五入”,而VB中,“四舍五入”的函数为Round(),所以“ab”就等于“Round (a) Round (b)”;

c)        最后,VB中“四舍五入”的原则是什么?答案是:五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一。因此有:Round(8.51)为“9”,Round(8.5)为“8”,Round(7.5)也为“8”。

d)       综上,17/25/2=(17/2)(5/2)=(8.5)( 2.5)=82=4;反之,如果是8.512.51=93=3.

 

2.        WidthHeightScaleWidthScaleHeightLeftTopScaleLeftScaleTop,这些概念的区别?

a)       对于窗体而言:

b)       对于控件而言,只有LeftTopWidthHeight的概念,而没有ScaleLeftScaleTopScaleWidthScaleHeight的概念:



3.        “用Public声明的数组是全局量”这个说法为什么是错的?

答:在窗体模块(.frm文件)中,如下声明是非法的:

Public arr(1 To 10) As Integer

Public s2 As String * 10

但在标准模块(p.97,也就是.bas文件)中,是可以这样声明的。所以,上面的说法是不全面的,应该这样说:在标准模块中用public声明的数组是全局量。

 

4.        P.140, “将Label1标签向下移动100个刻度单位……”这一段话如何理解?

这里讲的是在VB中如何使用函数或方法的“缺省参数”(也称为“可选参数”,见p.32),缺省参数是可以不输入的,例如Move方法,它的语法提示如下:

[Object.]Move Left [, Top[, Width[, Height] ]]

这里的方括号“[]”是什么意思?[]表示缺省参数。也就是说,只有Left不是缺省参数,在使用Move方法的时候,该参数必须给出。例如:

Label1.Move300

它表示把Label1水平移动到距离窗体左边300的位置,它的Top WidthHeight都不改变。

如果只想上下移动Label1,而不想水平移动Label1,那么,必须这样写:

Label1.MoveLabel1.Left, Label1.Top + 100

它表示把Label1垂直向下移动100个单位。而不能这样写:

Label1.Move, Label1.Top + 100

因为第一个参数不是缺省参数。

另外,请注意“[Object.]MoveLeft [, Top[, Width[, Height] ] ]”这一语法结构中[]的嵌套格式,Width的缺省是嵌套在Top的缺省之中的,也就是说,如果要通过Move方法重置Label1的宽度,必须这样写:

Label1.MoveLabel1.Left, Label1.Top, Label1.Width + 1000

不能这样写:

Label1.Move, , Label1.Width + 1000

不能这样写:

Label1.MoveLabel1.Left, , Label1.Width + 1000

同样,可知,如果只想通过Move方法改变Label1Height(因为WidthHeight变了,整个Label1看起来也是“移动”了的),而不想改变Label1LeftTop,那么应该这样写:

Label1.MoveLabel1.Left, Label1.Top, Label1.Width, Label1.Height + 1500

四个参数,一个都不能少!

 

转载本文请联系原作者获取授权,同时请注明本文来自李小薪科学网博客。

链接地址:https://wap.sciencenet.cn/blog-1338462-949362.html?mobile=1

收藏

分享到:

当前推荐数:0
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?