VB语法小结学习经验.doc_第1页
VB语法小结学习经验.doc_第2页
VB语法小结学习经验.doc_第3页
VB语法小结学习经验.doc_第4页
VB语法小结学习经验.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

学习时主要参考书籍:Visual Basic高级图形应用程序设计 李兰友 刘炜 江中 编著 清华大学出版社如果某个常量字段是字符串,则用 括起来,他表示字符串的开始和结束如果某个字段有很多有其他意义的字符,但是不想让他们发挥作用,只是把它看做字符,则应用“ ”括起来之后再用 括起来某字段为日期用# #括起来某字段为数字则不用符号括起来&表示连接字符串实例:Adodc1.RecordSource=select*from tb_user where 操作员=&StatusBar1.Panels(4).text&解释:Adodc1.RecordSource是某个字符串型成员变量,select*from tb_user where 操作员=表示数据库里的选择操作,但是由于两侧有,所以此处只是字符串,他要被赋给汉能接受字符串的函数来发挥作用。StatusBar1.Panels(4).text表示一个字符串类型的成员变量,由于两侧有,所以也是字符串。两个&将三个字符串连接起来,前后两个在三个字符串连接起来并赋给函数后发挥作用,使得能够执行select*from tb_user where 操作员=StatusBar1.Panels(4).text总结:在字符串相加阶段不需要管 ,合并完之后 就能够发挥作用了。字符串数组和其他数组必须要确定其数组尺寸后才能赋值,否则会显示下标越界。常用函数:Trim(Str) 删除字符串两边的空格 Trim( 两边有空格 ) 运行之后成为两边有空格Str(数字) 把数字转换成字符串,如:Str(123)运行后成为 123StrReplace(Str)是将Str中的 替换成 ,这样就不会引起编译时的错误 参考P187关于字符串的语句可以记下以下的格式:+Trim(Str)+ , 如果是将数字转换成的Str,则不用加 “”“/”的问题是在VB中出现的。一个表示取整数商,另一个是普通除法。rnd()随机数函数发生器,可以没有参数,这样每次调用时使用的是上次调用这个函数产生的结果作为“种子”来诱发新一次的随机数产生。汉字可以做变量类似于汇编里的 n DUP(?),有string(n,#),则返回N个由#组成的字符串数值格式化:format(数值,“格式”),格式可以是000.0 #.# 等等的组合字符串格式化:format(“ ”,“格式”),格式可以是 = & (xx) & and 位置.索书号 = & (yy)cmd.Executeef=5 是数字cmd.CommandText = update 位置 set 位置信息= + gh + where 位置.索书号 = & (ef)cmd.Execute被查字段是字符:temp=abcee = select 动词表.序号 from 动词表 where 动词= + temp + : rs.Open ee: C1 = C1 + 1: Dong(C1) = rs.Fields(0): rs.Close: Text1.Text = Text1.Text + Str(Dong(C1)上面两种一个使用加号+连接,一个使用&连接,而且带括号。for循环for 循环变量=初值 to 终值 step 步长程序体nextwhile 循环:while(条件)执行程序wend定义参量时使用了byval,这说明是值传递方式,byref是地址传递方式,容易出错,所以通常使用值传递方式Function fx(byval a As Integer,byval b As Integer) As Singlefx = a + bEnd Functionfunction必须有返回值,返回变量就是函数名,其类型只能定义为Single,返回值当做数来使用Public Sub fy(ByVal a As Integer, ByVal b As Integer)MsgBox 已经调用SUB, vbOKOnlyEnd Subsub过程没有返回值,能够独立完成一些任务,用CALL fy()调用,这样两个函数功能就容易区分了有时候sub函数会出错,可能是因为在这个过程函数中调用的对象的位置没有写清楚,要从窗口开始写,因为所调用的控件所在窗口可能已经不是当前窗口了。数组作为参数的SUB函数使用方法。Private Sub SS(ByRef a() As Integer)b = a 可以在SUb函数中使用数组名对数组进行赋值等操作For i = 1 To 4Text1.Text = Text1.Text + Str(b(i)Next iEnd SubPrivate Sub Command3_Click()Dim b(4) As Integer 这里需要定义b()数组,且只能单独定义,不同其他变量一起定义。下面的调用也必须使用b,不能将b给c,使用c作为参数For i = 1 To 4b(i) = iNext iCall SS(b) 这里的调用使用的参数必须是经过定义的,而且是同一个过程中定义过的。否则出错。End Sub在窗体、标准模块、过程内部可以用private dim或直接用dim来定义局部变量,只能在相应范围内使用在窗体和标准模块的通用段可以用public定义全局变量,在整个程序范围内可以使用。注意在不同标准模块中定义的变量不能够重名,但是在不同窗口定义的全局变量可以重名,因为可以使用 窗体名.变量名 来进行区分定义数组时public 和dim不要重复使用,用public或private时不用dim,否则会出错private num(3)as string 四位数组public定义数组时,只能用在标准模块中,不能在窗口中使用在窗口的通用部分只能定义变量,不能够给变量赋值,否则会出现错误erase 数组名 用于清除数组,对于静态数组则清除内容,对于动态数组则删除数组,释放内存自定义数据类型,相当于C中的数组,放在标准模块的声明部分,格式为:Type studentname As Stringsex As Stringweight As IntegerEnd Type如何在子菜单栏中建立分隔条? 分隔符也作为单独的一个项目输入,只在标题中键入-就可以了,在名称中填入 分隔符在标题中用(&E)添加E字母快捷键,也可以添加其他字母,这是自定义的。标题是显示的文字,名称是程序中调用时的标记在创建菜单控件数组时需要设置索引?、名称如果是一样的,那么就自动建立了数组,数组就必须为每个元素分配索引号,并且数组元素要放在同一个菜单中,中间是连续的,不能分隔开。创建弹出式菜单式同样适用菜单编辑器,与固定菜单方法相同,只是可见性选择false使用MouseUp事件作为菜单的显示,button=2表示右键按下,shift=2表示ctrl键按下,是两者的组合才能调用弹出式菜单功能:Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 2 And Shift = 2 ThenForm1.PopupMenu 弹出式菜单End If在工程工程属性中定义最先启动的项目,可以是main函数,可以在标准模块中建立main函数列表框中的某个选项是否被选中可以使用selected(i)=true来判断,selected是一个逻辑数组使用对象.additem 项目 位置号 的格式添加到某个位置一个项目关于变量的定义:局部变量,包括局部静态变量static a as integer 和dim s as integer ,只在过程中有效当在不同过程中定义了同名变量时并没有相互影响,在调用每个过程时仍按照那个过程中的上次的变量值进行运算,不会受到另一个过程中同名变量变化的影响。全局变量,在窗体模块标准模块的通用段使用public a as integer 定义的变量,在整个程序中有效,所以它是一只存在的,只有程序退出时才消失,因此不存在静态全局变量的说法,static只能定义局部变量。模块变量,在窗体模块和标准模块的通用段使用private或dim定义的变量,只在模块内的所有过程中在有效,其作用范围大于局部变量,小于全局变量。因此在程序的通用段(包括窗体模块和标准模块的通用段)是不可能定义局部变量或静态变量的总之:在通用段可以定义模块变量和全局变量,只有在过程中才能定义局部变量。在不同窗体中的全局变量可以相互重名,因为在任何除定义窗体外的过程中使用时都必须使用窗体名.变量名的形式,即在窗体1form1定义了public a as integer,在窗体2form2使用时必须使用form.a 才可以,否则因为在窗体2中没有定义,直接使用a会被当做是dim定义的局部变量。在标准窗体中定义的全局变量在其他任何窗体中使用时都不需要用对象名来限制,直接写变量名就可以了,如在module1中定义了public a as integer则在窗体1,窗体2等中可以直接用atimer1可以在enable之后一直运行,只要没有被false,则每到定时时间都会调用Tmier_timer()事件。在图片框或图像框中载入图片的方法是使用loadpicture()函数,括号中是图片路径,如果不加路径,则表示清除图片Picture2.Picture = LoadPicture(CommonDialog1.FileName)RichTextBox1.LoadFile CommonDialog1.FileName 滚动条vscroll1的largechange表示单击空白时改变的值,smallchange表示单击两端的小箭头时改变的值通用对话框先进性各种属性设置,打开某个窗口是最后进行的工作,即CD1.showopenCommonDialog1.Filter = 所有文件(*.*)|*.*|文本文件(*.txt)|*.txt CommonDialog1.FilterIndex = 2 表示文件过滤器的首选项CommonDialog1.ShowOpenRichTextBox1.LoadFile CommonDialog1.FileName CommonDialog1.FileName表示选择的文件的路径名,使用loadfile在richtextbox中打开 保存文件跟打开文件几乎完全一样。CommonDialog1.Filter = 所有文件(*.*)|*.*|文本文件(*.txt)|*.txtCommonDialog1.FilterIndex = 2CommonDialog1.ShowSaveRichTextBox1.SaveFile CommonDialog1.FileName如果是保存Picture1的文件,则应该把 RichTextBox1.SaveFile CommonDialog1.FileName换成Savepicture picture1.image,commondialog1.filename打开某个文件的方式有两种,一种是利用通用对话框的打开功能,使用filter进行过滤选择,另一种是使用drive1,dir1,file1三个路径选择控件,可以使用file1.pattern=“*.mp3”格式进行过滤。如果同时过滤很多格式,还不知道怎么做?我们在使用VB的时候,有时很想限定输入某种特定格式的数据,现在好了,我们在添加部件,找到:Microsoft Masked edit control 6.0控件,有了它,我们就可以在数据输入过程中,有些数据要求一定的格式,比如限制输入的只能为数字或英文字符,就可用VB的格式输入文本框来实现。它与文本框(TEXT BOX)功能基本相似,但多了一个MASK属性,MASK属性常用的设定如下: 限定仅能输入数字09; A 限定输入为英文字符及数字; ?限定仅能输入英文字符; 限定小数点位置; :限定时间分隔号; 限定日期分隔号 不需编写代码,只要在设计时将格式化文本框对象(MASKED EDIT)的MASK属性设计好所需格式即可。比如 # - # - # 可输入121196。如何利用clipboard实现对任意文本选择的复制。不是只针对哪一个对象而言?、Private Sub 复制_Click()Clipboard.ClearIf Text1.SelText ThenClipboard.SetText Text1.SelTextElseIf Text2.SelText ThenClipboard.SetText Text2.SelTextEnd IfEnd Sub用以上的方法进行复制时需要对每个文本框进行判断,极其复杂,下面程序好多了:Private Sub 复制_Click()Clipboard.ClearSendKeys CEnd Sub可以知道剪切就是sendkeysXPrivate Sub 粘贴_Click()SendKeys VEnd Sub从一个列表中选择多个剪切到另一个列表中:Private Sub Command1_Click()Dim i As IntegerFor i = 0 To (List1.ListCount - 1) If List1.Selected(i) Then List2.AddItem List1.List(i) End IfNext iFor i = List1.ListCount - 1 To 0 Step -1 If List1.Selected(i) = True Then List1.RemoveItem i End IfNext iEnd Sub注意剪切的部分是倒序移除的某项目向上向下移动的方法:上移时,先在它上面增加一个项目,再删掉他本身Private Sub Command3_Click(Index As Integer)On Error GoTo handleWith List2For i = 0 To List2.ListCount - 1If .Selected(i) ThenIf Index = 0 Then.AddItem List2.List(i), i - 1.RemoveItem i + 1.Selected(i - 1) = TrueElse.AddItem List2.List(i), i + 2.RemoveItem i.Selected(i + 1) = TrueEnd IfExit ForEnd IfNextEnd Withhandle: Exit SubEnd Sub上面的程序为什么要用出错处理呢?应该可以避免出错的呀!在列表框里显示所有可以使用的字型、以及自定义的字号Private Sub Combo1_Click()Label2.FontName = Combo1.TextEnd SubPrivate Sub Combo2_Click()Label2.FontSize = Combo2.TextEnd SubPrivate Sub Form_Load()Dim i As Long For i = 0 To Screen.FontCount - 1 Combo1.AddItem Screen.Fonts(i) Next For i = 10 To 18 Combo2.AddItem Str(i) Next End Sub在工程添加MDI窗体中添加MDI窗体,一个工程只能有一个MDI窗体.vbp 跟踪工程所有文件 .frm 所有窗体模块属性信息.frx 每个窗体内各个控件属性信息.vbw 工作空间文件.bas 标准模块文件.clc 类模块文件保存绘制的图形直接用SavePicture Picture1.Image, CommonDialog1.FileNameSavePicture是直接用的选项卡问题 tab属性?选项卡是Microsoft Windows Common Controls 6.0控件组中TabStrip控件。可以通过设置选项可内不同选项对应的各个项目的可见性来改变选项卡对应的内容,实现选项卡功能。在创建各个选项卡内容时由于不能直接隐藏,导致视觉上的混乱,可以使用把选项卡移至顶层的方法暂时掩盖其他内容。最后将选项卡移至底层即可。Private Sub TabStrip1_Click()Select Case TabStrip1.SelectedItem.Index 这表示选中的选项卡的索引号,而 Case 1 不是选项卡控件的索引号。 Frame1.Visible = True Frame2.Visible = False Frame3.Visible = FalseEnd SelectEnd Subpicture和image的区别Picture1.Image Picture2.Picture似乎是把图片看做二进制数据时使用image,看做图片整体时使用picture窗体和图片框可以绘图,图像框只能显示图片,不能进行绘图vb中用pset画点,并且可以指定点的颜色直接用scalemode=3、1选择坐标单位。再用.scale(,)-(,)或者scalewidth scaleheight scaleleft scaletop来确定对象的左上 右下两点的坐标。先用scalemode=0选择用户坐标系似乎是为了保险,不使用时也是可以的。窗口尺寸的参考系是桌面,不可以定义桌面的坐标系。它是准确的横纵比1:1,单位是缇。在定义了其它坐标系后,如果需要将坐标系统恢复为缺省的twips坐标系,可以使用不含参数的scale方法,如语句:picture1.scale。可以使左上角为(0,0),右下角是以缇为单位的实际尺寸。也可以选择其他坐标单位,使用scalemode=3选择像素。Form1.Scale 选择默认坐标系,使得长宽比变成实际的1:1尺寸单位。Form1.ScaleMode = 3 选择像素为单位。Text1.Text = Form1.ScaleWidth 可以用Scalewidth来查看右下角的横坐标实际尺寸。Text2.Text = Form1.ScaleHeight 可以用Scalewidth来查看右下角的纵坐标实际尺寸。关于坐标系的理解:对每一个可以设置坐标系的控件都有同样的情况,以窗口模块为例,如果使用默认或标准坐标系,那么只需要更改坐标单位就可以了,坐标原点就在左上角,方法是.scalemode=1则以缇为单位衡量内部控件的位置,scalemode=3以像素为单位衡量内部控件的位置。如果用语句先设置scalemode=0,再设置scalemode=?则可以选择以某个单位为衡量标准的用户坐标系,这个时候的图像的显示尺寸就已经不是 真是的单位所应有的尺寸了。这要取决于左上角,右下角坐标的大小。所以坐标刻度不是真实刻度。但也正是因为如此才有可能显示真实图像比屏幕大的的东西,否则一个显示器最大就只能显示14英寸的东西了。只要显示控件的长宽刻度是一样的,图像就会像被线性放缩了一样。刻度的均匀性可以通过用语句设置控件width和height 以及选取合适的左上角,右下角坐标来保证。只要是使用了scale (,)-(,)或者scalewidth scaleheight scaleleft和scaletop就一定是设置用户坐标系,这个时候要小心设置控件的真实尺寸和两个角的坐标值,因为这会影响图形是被线性放缩还是哪个方向被拉伸了。要明白是对哪个控件进行设置,如果想对图片框的位置和长宽尺寸进行设置,则应该对窗口的单位和坐标系进行设置,以此类推用于画直线,空心矩形,有填充的矩形Picture1.Line (50, 50)-(200, 200), RGB(255, 0, 0), BFcircle可以用于画圆形,椭圆,圆弧,扇形。即可以选择有填充和无填充两种方式起始角和终止角都用弧度表示,如果是负值则表示要画扇形如果要画整个 椭圆 则必须将起始角终值角的位置用逗号空出来,如Picture1.Circle (300, 300), 100, QBColor(1), , , 1.5#如果后面的参数不需要则不必写出,如果有参数需要设置,则中间不需要设置的参数其位置也要空出来可以在图片框和窗口来显示print的内容,虽然在这些控件中并没有给出print方法,但是仍然可以正常使用这个方法。关于图片内容的操作:保存图片 Savepicture picture1.image,commondialog1.filename(注意这个使用)打开图片 Picture1.picture=loadpicture(路径)obj.picture是属性对于图片框只能选择图片框是否适应图像的大小,即用autosize,对于图像框则只能选择图像是否自动适应图像框的大小,即stretch装载图片数据的变量应该设置为stdpicture类型使用obj.forecolor设置前景色Picture1.DrawWidth = 5设置线条宽度,单位是像素,取值为0到32678八Picture1.DrawStyle = 5设置线条类型,取值从0到6九Picture1.FillStyle = 5设置填充类型十Picture1.FillColor=RGB()填充色关于图片水平,垂直翻转要好好研究,基本已经理解图形绘制时选择坐标点,其中如果使用step则是相对于最后一步结束后系统当前坐标来作为参照,step可以方便的用在任何使用坐标的地方,比如说画一条100缇的直线,(x,y)-step(0,100)即可使用格式对齐可以进行控件尺寸的调整1同一尺寸 2水平距离 3底部对齐,选择时使用ctrl将所有控件选中,最后可以松开ctrl键任意选择某个控件作为最后的激活控件作为尺寸调整的标杆对于API函数,如果是声明成public则必须将声明写在标准模块中,如果是private,则可以写在窗口或标准模块中,只不过使用范围遵从私有规则使用API函数必须在相应模块中声明,否则不能使用API编辑器的调用,如果实在找不到,可以直接在开始列表中找到Microsoft Visual Stadio Basic 6.0找到文件夹,就可以找到API编辑器。一般声明中会有一个By Val hdc As Long,hdc是设备表示,如在参量表中写picture1.hdc表示是对picture1进行操作常用API函数:直线 b = MoveToEx(Picture1.hdc, 100, 200, xy)b = LineTo(Picture1.hdc, 200, 400)椭圆 b = Ellipse(Picture1.hdc, 20, 20, 300, 200)椭圆是用外切矩形框来画的,所以要指定矩形框的左上角和右下角每一次都要定义的一个结构体对象可以使用redim来定义,Static pointnum As IntegerReDim Preserve BPoints(pointnum) As POINTAPI给按钮控件加图标时,先把按钮的style选择Graphical,这样可以允许插入图片,在picture属性中设置图标即可。在vb安装目录中有很多小图标可以使用经常有一些函数使用时可以直接试用其名称,后面加各种参数,不需要括号(),也有是需要有参数返回,所以可以使用val=函数名(参数)的形式,于是就有了括号关于指令的书写格式:冒号一般表示把两条语句写到同一行。如If A=1 Then:A=1:End If独立的下划线(前面要有空格)表示把一条语句断开,连到下一行。断开处应该原为空格。If A=5 _Then A=1在form_resize()函数中写各个控件在窗口尺寸改变时的变化情况,使得控件同步变化在picturebox内创建另一个picturebox相当于把前者当做新坐标系,后者是新坐标系中的一个控件。就像是在form中创建控件一样当文本框选择Multiline=ture时,在文本框显示不了当前长度时会自动换行,不能设置换行的长度限制selstart:文本框插入点位置sellength:选中的文本长度seltext:选中的文本内容left(str,length)right(str,length)mid(str,num,length)返回str中从第num开始的length个字符在form的ICON选项中可以设置窗口图标drive1.drivedir1.pathfile1.filename以上三个都表示当前路径值,可以用于寻找该目录。如Dir1.Path = Drive1.Drive表示把drive1驱动器的内容打开,显示在dir1中。Label1.Caption = Dir1.Path + + File1.FileName可以把某个文件的路径完全显示出来 各种控件:Microsoft Windows Common Controls 6.0用于创建进度条,按钮组,树形目录,选项卡等,一般的应用程序中会使用toolbar创建快捷工具栏等,这比普通单个按键要好用Microsoft Common Dialog Control 6.0通用对话框,进行文件的打开,保存,字体,颜色选择等。Microsoft Comm Control 6.0,串口通信工具Microsoft Internet Control 用于开发网页浏览器toolbar 选中属性中的style,选择2号,则可以建立一个每次只允许一个被选中的按钮组,使用index来标示每一个为每个toolbar按钮添加图片,方式为先用ImageList1添加一系列的图片,构成图片组,再在toolbar属性栏中的图像列表中选定ImageList1,再在按钮选项卡的图像选项中,指定某个按键需要的图像的索引号即可。当某个toolbar连接到某个Imagelist1,则Imagelist1是不能够进行修改的,需要先断开这个连接才行。组合框Combo1增加项目用additem,但不会在文本框中显示出来,使用Combo1.text=可以显示出来所选择的字符。API OLE ActiveX利用Microsoft Windows Common Controls 6.0控件组的stetusbar控件建立状态栏。Panels(i)是第几个状态框。可以赋予它状态内容Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)StatusBar1.Panels(1).Text = Form3.TagStatusBar1.Panels(2).Text = x= + Str(X)StatusBar1.Panels(3).Text = y= + Str(Y)End Sub关于随机函数rnd()RandomizeText1.Text = Rnd()这两句可以产生0到1之间永远不重复的随机数序列,每次运行都不一样。因为Randomize是利用系统时间作为种子。如果利用Randomize 2,这种格式调用,则每次会生成同样的随机序列,使用的参数不是2 ,则生成不同的随机序列,但相同的参数的序列总是重复的。对于把某些关键字作为判断条件的情况下,可以用双引号括起来,作为一个字符串来处理如“Sin”,这样就不用个Sin函数加参数了,否则会一直报错。动态数组的使用方法:先用dim定义一个空数组,a(),不写下标。在过程中使用时使用redim重新定义数组的下标和维数。注意只能在过程中使用。格式为:dim a() as intergerredim a(5) 在重新定义后,原来的数据被覆盖掉,如果想保留原有数据可以使用redim preserve a(6),这样在原来数组的基础上增加了一个空间。但是不能定义成redim preserve a(4),因为这样相当于把原数据改掉了。在这个语法中是不允许的。1、使用循环进行赋值2、使用ARRAY()函数进行赋值,格式为 数组名=array(1,2,3,4,5),这时要求这个数组声明时只能定义成variant类型,否则会出现数据类型不匹配的错误。其实在数组声明成variant以后,在ARRAY()数组中的元素就不必要求是同一种数据类型了,可以是整型,浮点数,字符等的混合类型。但是每一个元素的类型都应该是明确的。(可能元素是variant类型也可以)进制符号加在数据前面,类型符号加在数据后面,&h表示16进制,&o表示8进制,& 长整型% 整型!单精度浮点数# 双精度浮点数 货币型$ 字符串型如:&h25c&表示长整型十六进制数0X025cdim a as string*3 表示a为长度比为3的字符串,少了用空格补,多了截断。窗口句柄提供了操作windows系统中任一窗口的方法。这个句柄可以作为这些窗口的唯一标示来索引他。使用Microsoft Speech Object Library 进行语音识别时需要建立一个对象,利用这个对象来调用各种函数。这个对象是 spvoice类的对象。将上面的库引用之后,使用Dim Voice As SpVoice则建立了一个Voice对象关于延时:这样可以得到很好的延时,也不会耽误其他事情。主要是由于DoEvents函数的作用Private Sub Command4_Click()Static a As LongFlagAnswerCase = 3LOP: If FlagAnswerCase = 3 Thena = a + 1Text3.Text = aDoEventsSleep 100 这个延时函数可有可无GoTo LOPEnd IfText3.Text = 循环结束End Sub总结:想要延时固定的时间,使用SLEEP N想要在某个事情发生之后在执行后面的程序,用FlagAnswerCase = 3 先设置判断标志,在其他程序中可以改变该标志位LOP: If FlagAnswerCase = 3 Thena = a + 1Text3.Text = aDoEventsGoTo LOPEnd If想要在延时的时候可以做其他的事,就必须加上DoEvents关于窗口的最大最小按钮,如果都是FALSE则不显示两个图标,只显示叉号。如果controlbox属性选择false,则不显示最大最小和叉号。这几个属性都是必须在属性窗口中设置,不能在程序中设置。caption和ICON如果也为空,则窗口变成光秃秃的了。caption可以在程序中设置。使用windowstate=0 1 2可以在程序中设置窗口的状态是最大最小或者 正常的。AutoRedraw=true ,则可以在窗口进行最小化并还原之后,原来的图像操作结果(使用line或者circle或者print)再一次出现。否则上一次的操作结果在窗口还原后就消失了窗口的resize事件可以使得窗口在尺寸改变时产生。用鼠标拖拽窗口可愿意引起多次resize事件,使用最大最小则只触发一次。在各种控件的caption属性中使用&abc或者&123可以设置快捷键a和1设置某个窗口的某个控件的的Defaule属性为TRUE,则载入窗口后直接按下回车就可以选中这个默认操作。一个窗口只能有一个Defaule为True.当设置完最后一个default之后前面设置过的就自动变成false了。按钮的sytle如果默认为0则是caption只能显示文字的普通按钮,如果是1,则可以显示文字和图案,用picture属性来选择图片,可以是bmp和.ico格式。对于文本输入区,如TEXT,Richtext等,Alignment属性可以选择对齐方式。0左,1右,2中borderstyle=0是普通的模式,=1则是由边框的三维模式。text1.scrollbars=0,没有滚动条,=1有水平滚动条,=2有垂直滚动条,=3有水平和垂直滚动条。在multipline=true时,不能使用滚动条。在multipline=false时,才使用滚动条。MsgBox Screen.Width / Screen.TwipsPerPixelX & x & Screen.Height / Screen.TwipsPerPixelY & yTwipsPerPixelX,TwipsPerPixelY表示横向尺寸每个像素的缇数,纵向的缇数。Screen的Width和Height使用缇来表示的。软件存在多窗体和多文档两种情况,多窗体用于窗体之间的切换,多文档使用父窗体MDI,用于同时打开多个文档,就像WORD EXCEL 一样。如果各个窗口的MDIchild属性选择true则打开的所有窗口都在父窗体内,尺寸也会改变。如果选择false则会按照窗口设计时的正常尺寸打开,单独一个窗口。菜单的名称不能与任何一个控件名称重复。画图操作后,可以通过一定方法来保存工作区的图像,就是使用Common dialog控件,不过似乎只能保存成.BMP文件。画图操作笔记:取颜色值 Point( ,)Dim col As Longcol = Picture1.Point(100, 200)下面的程序可以将颜色分离出来,用于再次绘制该种颜色Dim col As LongDim r, g, b As IntegerPicture1.PSet (0, 0), vbBluecol = Picture1.Point(0, 0)Text1.Text = colr = col Mod 256g = col 256 Mod 256b = col 256 256 Mod 256Text2.Text = rText3.Text = gText4.Text = bPicture2.PSet (500, 500), RGB(r, g, b)画点 Pset step(10,10),color,可以将从图像中取到的点的颜色重新画出,以还原原图。但是非常慢。要注意边沿的像素问题,否则会使得程序出错。(软件运行海量的运算是会出错的,不知道如何避免。本例中如果复制海量的点就会出错。)下面程序可以参考:Dim col As LongDim r, g, b As IntegerFor y = 0 To 1000 - 1 Step 10 去掉边沿就不会出错了。 For x = 0 To 1000 - 1 Step 10 col = Picture1.Point(x, y) r = col Mod 256 g = col 256 Mod 256 b = col 256 256 Mod 256 Picture2.PSet (x, y), RGB(r, g, b) Next xNext y 对于图像的区域应该选择ScaleWidth和ScaleHeight的尺寸,不是图像框的尺寸。因为画图时是按照坐标点一个个画的,所以用Point取像素点应该指的是取坐标点的颜色值不是实际的像素。而图形在保存之后,文件的分辨率并不是选取的坐标值决定的,而是图形框实际的大小决定的。在图形框中载入图片时,也并不是一个坐标点对应一个图片的像素,而是重新划分了图片的像素画直线 line step( ,)-( ,),color,BF画圆弧 Picture1.Circle (250, 250), 100, vbRed, 0, 3.14,1 圆心,半径,颜色,起始角,终值角,纵横比,如果起始角和终值角都设为负值,则画扇形输出文字 print清除内容 cls翻转图片 不会了?对于图片框只能选择图片框是否适应图像的大小,即用autosize,对于图像框则只能选择图像是否自动适应图像框的大小,即stretch装载图片数据的变量应该设置为stdpicture类型Set pic=picture1.picturepicture1.forecolor=vbblackpicture1.backcolor=vbwhitePicture1.DrawWidth = 5设置线条宽度,单位是像素,取值为0到32678Picture1.DrawStyle = 5设置线条类型,取值从0到6Picture1.FillColor=RGB()填充色Picture1.FillStyle = 5设置填充类型如果在绘图命令中没有选择颜色,则默认使用前景色作为颜色。shape控件是工具栏默认的控件,可以画各种矩形和圆形。画图时可以使用点PESET将所有的数据表示出来,也可以使用线LINE将所有数据点连接起来。使用线时先用点的命令画出第一个点,以后的使用LINE命令,如:For i = 0 To 6.28 Step 6.28 / 1000 l = a * Cos(k * i) x = l * Cos(i) y = l * Sin(i) If i = 0 Then Picture1.PSet (x, y), vbRed Else Picture1.Line -(x, y), vbR

温馨提示

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

评论

0/150

提交评论