敲完机房后我最大的感触之一就是:
@1.掌握知识时要理解透彻,包括概念
@2.多掌握控件的属性是非常有必要的
下面是在敲机房时,遇到以前不清楚或理解不彻底的一些小知识点:
一.自动换行(以TextBox 为例)
1.前提把text的属性MultiLine设为:True
2.换行代码:vbCrLf、Chr(13) & Chr(10)(必须同时使用)等3.chr(13)、chr(10)讲解
二.图片最大化a>chr(13):回车 回到本行的最前面chr(10):换行 回到下一行chr(13) & chr(10):(相当于vbCrLf)回车和换行 回到下一行的最前面个b>自我理解:chr(13)起到一个执行命令的作用
1.问题:窗体启动后最大化,加载的图片随之变化,图片填充不了整个窗体2.解决办法:把picture的AutoRedraw属性设为True,且AutoSize属性设为true3.AutoRedraw讲解:自动重绘窗口,就是当窗口被某个东西遮蔽了之后,即使遮蔽物不存在了,窗口上那个位置你原来绘制的图像也不存在了,所以如果有AutoRedraw=true的话,系统会自动把遮蔽的那部分重新绘制出来(vb课本p118,是个很好例子)
如果为false,编写代码 :Picture1.Print "文字加载",运行后在图片上会显示“文字加载”,但让窗体最小化后再打开,图片上的“文字加载"不见了
4.AutoSize:使控件能够自动更改其大小(如有必要),在运行时触发,这意味着不会在增大或缩小控件后不产生进一步的影响(即以防出现以上情况,达不到效果)。
三.菜单有关属性
1.问题:如果编辑菜单时,设置了一组菜单控件数组,既有索引,那么在写代码时也要有索引
2.举例:使菜单不可见 OprateMenu(1).Enabled = False3.相关知识:
四:PictureBox 与ImageBox的区别a>名称必须有,标题可以没有b>如果多个名称一样(不区分大小写)(即组成了一个菜单控件数组)必须有索引c>索引可以不连续
1.picture可以作为其它控件的容器,而Image不可以
a>先画image或picture控件,然后再其控件上画label(区分能否为其它容器的空间)
b>先画Label控件,再画image或picture控件
2.picture不可以自动调整图片大小以适应控件的大小(控件大小不变,图片不在控件中全显示出来),但可以手动调整控件的大小以自动适应图片框大小;image:当stretch为true时,可以自动调整图像框的大小以适应控件的大小(控件大小不变),如果加载图片之前没有把Stretch设为true,控件会自动适应图片的大小(控件变大,变小或不变)3.ImageBox使用系统资源少,重新绘图的数度较快4.PictureBox只能使用print方法和绘图语句绘制图形,ImageBox则不能
五.逻辑问题
1.现有command1,label1,DTPicker三个控件,单击command1,使label1.visible=false,label1.caption=DIPicker.value(语法没错,逻辑错误,这样不会显示结果)2.现有command1,label1三个控件, 单击command1,使label1.setfocus(逻辑错误),这样会报错
六.变量声明分析,既然label1都不可见,怎么获得焦点
1.动态与静态
dim :声明的是动态变量,过程调用结束后,变量的值恢复初始值(0 或指定的值)2.作用域static:声明的是静态变量,在整个程序运行时值都存在,知道程序终止,变量的值才会恢复初始值(0 或指定的值)
a>局部变量:(过程变量)在过程内定义的变量,其作用域是它所在的过程。可用Dim\Static语句定义。模块变量:在模块中定义的变量,其作用域是它所在的模块中所有过程,可用dim\private。全局变量:可以在应用程序的任何模块、每个过程中使用,可用public。
b>举例分析:代码为:@1.声明类型不同
连续点击三次,结果为:
@2.声明类型相同,位置不同
连续点击三次,结果为:(在模块中使用dim、public,效果相同与static)