vb用户控件制作讲解与实例
1.定义控件的属性、事件和方法,其中属性是最常使用的。
2.保存和读取中间用户设置的属性值。
3.为达到你的预定目的而调用的各种技术手段。
在用户控件中定义的属性、事件、方法,其性质都必须是公用的,也就是说,只有用Public 来定
义,这样你才能在主程序代码中使用这些事件和方法,以及设置或获取这些属性值,也只有公用的属性
才会在窗体页面相关控件的属性窗口显示出来。
一、属性
属性是用户控件最基本的东东,用户控件可以没有事件,可以没有方法,但不能没有属性(当然,
技术上来说是可以没有属性的,但这样的控件使中间用户无法进行任何设置,是没有什么意义的)。那
么,如何定义用户控件的属性呢?为用户控件添加属性有两种办法:
1.公用变量法:
public 变量名称as 类型
这里的变量名称就是属性名称。这样定义的属性一般不会保存属性值,所以常常用作只读属性,在
笔者的用户控件中,用于对主程序返回一个必要的值。例如“四则运算”控件中的“ComputeAnswer”
属性:
Public ComputeAnswer As String
它返回的是计算结果,而计算结果是不需要保存在控件中的,所以把它用公用变量法定义。再例如
消息框控件中的FeedValue 属性:
Public FeedValue As Integer '返回值
它返回最终用户选中的消息框按纽的编号,这个编号也只需要在主程序中处理,而无需保存在控件
中,所以也用公用变量法定义成只读属性。
2.property 过程法:
public property Get 过程名称() as 类型
……
end property
public property Let 过程名称(new值as 类型)
……
end property
这里的过程名称就是属性名称。
而property 过程法又有两种:一种是如上所述的标准过程法,另一种就是枚举法。
㈠标准过程法
这是用得最多的一种属性定义方法。在用户控件的代码页面选中“工具→添加过程”,会跳出一个
对话框,然后在单选按纽中选择“属性”,再在“名称”栏中输入属性名,点击确定,VB 就会自动生成
上述的几行代码,你将“类型”改为你所需要的,再输入相关代码即可。
标准过程法中,Get 过程和Let 过程一般是成对出现的。例如“闪烁标签”控件中定义闪烁时的
前景颜色FlickerForeColor 属性的代码:
Public Property Get FlickerForeColor() As OLE_COLOR '闪烁时的文字色FlickerForeColor = mGlintForeColor
End Property
Public Property Let FlickerForeColor(ByVal newColor As OLE_COLOR) mGlintForeColor = newColor
PropertyChanged "FlickerForeColor"
End Property
这两段代码中的“OLE_COLOR”是颜色数据类型,实质上也是长整形的数据类型,但它会自动调出
颜色对话框。“FlickerForeColor”是属性名称,在窗体界面相关控件的属性窗口中显示的就这个属性
名称。而“mGlintForeColor”是中间变量,中间变量是私用的,用Dim 定义即可。在用过程法定义属
性时通常都需要中间变量。中间变量的身份是“代表”(代表属性名),作用有两个,一是上传下达,
在Get/Let 过程与ReadProperties/WriteProperties 过程中充当“邮递员”;二是参与,在许多别
的过程中都要与中间变量打交道。
Get 过程的作用是获取相关的属性值,并将属性名称和属性值显示在属性窗口(如果你去掉这个过
程,在属性窗口就不会出现相关的属性名称和属性值了)。它在三种情况下被激活:①中间用户在窗体
页面刚刚把焦点移到窗体上的控件时(例如点击该控件),在属性窗口显示出原先设置的属性值;②中
间用户在属性窗口修改了属性值,在属性窗口显示出修改后的属性值;③程序运行中用代码获取属性值
时,假设窗体代码有这么一句:RGB = Cipher.BackColor,那么也会激活该过程。
Let 过程的作用是设置相关的属性值,它在两种情况下被激活:①中间用户在属性窗口修改了控件
的属性值(执行顺序是:Get 过程→Let 过程→Get 过程);②程序运行中用代码设置新的属性值时,
例如:Cipher.BackColor = RGB。变量NewValue 是被赋的新值(这个变量名是可以改变的),你可以
把得到的NewValue 的值按自己的需求作任何用途。
要注意的是,如果这个属性是一个对象,那么就不能用Let 过程而必须用Set 过程了,这是因为
保存在控件内部的对象变量,保存的并不是对象的拷贝,而只是对象的引用(也就是一个内存地址)。
所以在它的Get 和Set 两个属性过程中,均须在等式的前面加上“Set”关键字。来看看“四则运算”
控件中的有关代码:
Public Property Get Font() As Font
Set Font = Text1.Font
End Property
Public Property Set Font(ByVal newFont As Font)
Set Text1.Font = newFont
PropertyChanged "Font"
End Property
这是设置文本框的Font 属性的,而Font 本身也是一个对象,所以必须使用Set 了。
还有Picture 属性也是如此,它也必须使用Set 过程。然而,它这个对象却有一点特殊之处:如
果你想在程序运行当中使用LoadPicture 语句动态加载图片的话,你就必须给它增加一个Let 过程,
否则,你将只能在设计模式时在属性窗口加入图片。而新增的Let 过程中不需要任何代码,只要一个注
释符就行了。以“酷时钟”控件中的Picture 属性为例:
Public Property Get Picture() As Picture
Set Picture = UserControl.Picture
End Property
Public Property Set Picture(ByVal NewPic As Picture)
Set UserControl.Picture = NewPic
PropertyChanged "Picture"
End Property
Public Property Let Picture(ByVal NewPicture As Picture)
'
End Property
㈡枚举法
枚举是一种很常见的的方式,它提供了一个下拉列表和若干选项让用户选择。这样既方便了用户的
操作,又不用考虑过多的兼容性和错误处理问题,简化了属性设置,而且更加安全。
要实现枚举法,首先必须建立一个枚举结构,放在声明部分,然后在结构中给出一系列的常量和对
应的字符串。后面的常量值必须是比前面常量值大的整数。如果没有给出常量,那么VB 会自动为其赋
值,第一个字符串赋值为零,其它的值则为前面一个数加一。例如在“特效标签”控件中,字体打印特
技的枚举结构声明:
Public Enum cTxtEffect
雕刻'自动赋值=0
立体'自动赋值=1
浮雕'自动赋值=2
End Enum
如果你要为项目赋值为从 1 开始,也是可以的(当然有关代码要改一下):
vb程序设计的几个简单例子
Option Explicit Private Sub Command1_Click() Dim i%, j%, r! i = Val(Text1.Text) j = Val(Text2.Text) Picture1.Print i; j; Call gysh(i, j) Picture1.Print "最大公约数是" & i r = Val(InputBox("输入半径")) Call S(r) End Sub Public Function gysh(m As Integer, n As Integer) As Integer Dim t% Do t = m Mod n: m = n: n = t Loop While t <> 0 End Function Public function S(r!) Const pi = 3.1415926 S = pi * r ^ 2 MsgBox "圆面积为:" & S End function Public Function 定积分() End Function
Dim a() As Integer, i%, j%, n%, t% Private Sub Command1_Click() Picture1.Print "排序前的数组为:" n = V al(InputBox("请输入一个3到100的整数")) ReDim a(1 To n) Randomize For i = 1 To n a(i) = Int(Rnd * 100) + 1 Picture1.Print Tab(((i - 1) Mod 5) * 6); a(i); Next i End Sub Private Sub Command2_Click() Picture1.Print Picture1.Print "排序后的数组为:" For i = 1 To n - 1 For j = i + 1 To n If a(i) > a(j) Then t = a(i) a(i) = a(j) a(j) = t End If Next Next For i = 1 To n Picture1.Print Tab(((i - 1) Mod 5) * 6); a(i); Next End Sub
完整word版,VB程序设计例题12例
索引 一、在窗体上画一个文本框,其名称为Text1,Text属性为空白。再画一个命令按钮,其名称为C1,Visible属性为False。编写适当的事件过程。程序运行后,如果在文本框中输入字符,则命令按钮出现。 二、计算圆的周长和面积:在窗体中添加一个文本框(Text1)和一个对应的标签(Label1),再添加两个命令按钮(Command1和Command2)和一个图片框(Picture1)。程序运行时,当单击Command1按钮后,计算圆的周长;当单击Command2按钮后,计算圆的面积;计算结果输出在图片框中。(要求在未输入半径前两个按钮呈灰色不可用。) 三、在窗体上添加三个文本框和对应的三个标签,标签的标题分别是“个位”、“十位”、“百位”。程序运行时,当单击窗体后,随机产生一个【100,999】区间内的整数,将它的个位、十位、百位数字分别显示在对应的文本框中。 四、设计一个计算程序:在窗体上添加四个文本框和四个对应的标签,标签的标题分别是“语文”、“数学”、“外语”、“平均成绩”,三个命令按钮,标题分别为“清除”、“计算”、“退出”。程序运行后,用户按“清除”按钮,则清除文本框中显示的内容,按“计算”按钮,则计算三科平均成绩,将计算结果显示在第四个文本框中(计算结果保留小数点后一位)。单击退出按钮则程序退出。 五、某税务部门征收所得税,规定如下:(1)收入200元以内,免征。(2)收入在200~400元,超过200元的部分纳税3%。(3)收入超过400元的部分,纳税4%。(4)当收入达5000元或超过时,将4%税金改为5%。编程序实现上述操作。 六、给定三角形的三条边的边长,计算三角形的面积。编写程序,首选判断给出的三条边能否构成三角形,如可以构成,则计算并输出该三角形的面积,否则要求重新输入。当输入-1时结束程序。 七、编程求100以内的全部素数。 八、编程打印钻石图案。 九、输出杨辉三角形。 十、有一个数组,包含了10个不同的随机整数(20~90),要求计算出它们的平均值,并输出这个数组中最接近于平均值的数。 十一、在一个窗体上建有包含三个命令按钮的控件数组和一个文体框。编程实现当按下标题不同的命令按钮时,使文体框中文字的字体发生相应的变化。 十二、编程求1000以内的完全数。所谓完全数是指这样的自然数:它的各个约数(不包括该数本身)。如28=1+2+4+7+14就是一个完全数。
vb程序设计实例
vb程序设计实例 2009-5-22 15:37 提问者:淘淘的某在|悬赏分:20 |浏览次数:1688次 编写程序,设银行定期存款的年利率为:1年期2.25%,2年期2.43%,3年期为2.70%,5年期为2.88%(不记复利)。今有X元,5年以后使用,共有如下6中存法: ①存一次5年期; ②存一次3年期,一次2年期; ③存一次3年期,两次1年期; ④存两次2年期,一次1年期; ⑤存一次2年期,三次1年期; ⑥存五次1年期. 分别计算各种存法5年后到期的本息合计,如图所示 2009-5-22 17:06 最佳答案 Private Sub Form_Activate() '1年期2.25%,2年期2.43%,3年期为2.70%,5年期为2.88%(不记复利)。今有X元,5年以后使用,共有如下6中存法: Const x1 As Double = 0.0225, x2 As Double = 0.0243, x3 As Double = 0.027, x5 As Double = 0.0288 Dim x As Double x = Val(InputBox("")) Print "①存一次5年期,5年后到期的本息合计"; ss(x, 5, x5) Print "②存一次3年期,一次2年期,5年后到期的本息合计"; ss(ss(x, 3, x3), 2, x2) Print "③存一次3年期,两次1年期,5年后到期的本息合计"; ss(ss(ss(x, 3, x3), 1, x1), 1, x1) Print "④存两次2年期,一次1年期,5年后到期的本息合计"; ss(ss(ss(x, 2, x2), 2, x2), 1, x1) Print "⑤存一次2年期,三次1年期,5年后到期的本息合计"; ss(ss(ss(ss(x, 2, x2), 1, x1), 1, x1), 1, x1) Print "⑥存五次1年期,5年后到期的本息合计"; ss(ss(ss(ss(ss(x, 1, x1), 1, x1), 1, x1), 1, x1), 1, x1) End Sub Private Function ss(ByVal a As Double, b As Integer, c As Double) As Double ss = a + a * c * b End Function Private Sub Form_Load()
VB程序设计例题程序改错程序填空程序设计
'以下程序段用于输出杨辉三角:结果样式如图1 ' Private Sub Form_Click() Const n = 10 Dim arr(n, n) As Integer For I = 1 To n arr(I, I) = 1 '**********SPACE********** 【arr(I, 1) = 1】 Next I For I = 3 To n For j = 2 To I - 1 '**********SPACE********** arr(i, j) =arr(i-1,j-1)+arr(i-1,j) Next j Next I For I = 1 To n For j = 1 To I '**********SPACE********** 【print arr(I,j)】 Next j Print Next I End Sub Option Explicit '------------------------------------------------ '【程序改错】 '------------------------------------------------ '题目:用自定义函数的方法求sum(x),求当-1≤x≤1时,' sum(x)=x/2!+x^2/3!+x^3/4!+……+x^n/(n+1)!, ' 当x〉1或x〈-1时,函数值为0。当n〈=0时,输入数' 据错误。X、N都是由用户输入。 '------------------------------------------------ '注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click() Dim s As Single Dim n As Integer, x As Single, k As Integer n = Val(InputBox("Please input a integer value:"))
VB可视化程序设计实例——小时钟
VB可视化程序设计实例——小时钟 本例专门针对程序设计初学者而设计,尤其适合第一次接触VB的学生学习。通过用VB来设计如图3.39所示的时钟程序,初步感受一下可视化和面向对象的程序设计过程。 图3.39 时钟程序运行效果 小时钟程序中包含窗体控件、标签控件和计时器控件等3个控件。窗体控件是小时钟程序运行时的窗口,标题栏上的标题是“时钟”,在右上角有最小化、最大化和关闭按钮。标签控件可以用来显示文本,本例中用来显示时间,如“9:48:57”。计时器控件每秒一次把计算机的当前系统时间显示到标签控件中,使得小时钟不停地运行。Array启动VB,首先显示“新建工程”对话框(图3.40),在选择“新建”选项卡中的“标 准EXE”项后,单击“打开”按钮,进入VB编程环境,如图3.41所示。 图3.40 “新建工程”对话框
图3.41 VB 可视化编程环境 除了标题栏、菜单栏和标准工具栏外,编程环境中还有工具箱、窗体和属性等窗口。 双击工具箱(图3.42)中的标签控件,在窗体Form1中放置可以显示文本信息的标签控件Label1,见图3.43。时钟的时、分和秒以后就显示在Label1中。拖曳Label1可以移动它,拖曳它的八个控制点,可以改变它的大小。 图3.42 工具箱 图3.43 label1控件 图3.44 计时器控件 双击工具箱中的计时器控件,在窗体Form1中放置计时器控件Timer1,见图3.44。计时器控件以一定的时间周期,调用一个事件。计时器控件只有在设计阶段出现在窗体上,程序运行时是不可见的,它的位置和大小无关紧要。 到目前为止,已经建立了窗体Form1、标签控件Label1和计时器控件Timer1等3个对象。下面,将设置它们的属性。 窗体窗口
vb程序设计教程第四版课后答案.doc
vb 程序设计教程第四版课后答案【篇一:visual_basic 程序设计教程(第4 版)_课后答案】 >第一章习题参考答案 一、填空题 1、对象事件驱动 2、编译运行模式解释运行模式 二、简答题 1、简述vb 的特点。 答:①可视化的程序设计方法 ②面向对象的程序设计思想 ③事件驱动的编程机制 ④结构化的程序设计语言 ⑤高度的可扩充性 ⑥强大的数据库访问能力 ⑦支持动态数据交换 ⑧支持对象链接与嵌入 2、简述vb 的安装过程。 答:①向光驱中放入vb 安装光盘; ②计算机将运行自动安装程序,若没有,执行vb 目录下的 setup.exe ;③根据提示逐一回答问题,并点击“下一步”; ④点击“完成”; 2、如何启动vb 。 答:三种方法: ①单击“开始”按钮,选择“程序”菜单下的“microsoft visual basic 6.0 中文版”菜单项并单击; ②双击桌面上的vb6.0 快捷图标; ③在“开始”菜单的运行对话框中输入命令来启动vb ; 第二章习题参考答案 一、选择题: 1-10 、dcacdbcbbc 11-20 、badcabbaab 21-29 、aacbbcddc 二、填空题 1.窗体、控件
2.属性值 3.属性窗口设置、代码窗口设置 4.事件过程 5.对象名、下划线、事件名 6.form_click 第三章习题参考答案 一、选择题 1、b 2、c 3 、a4、b5、a6、c 7、c 二、填空题 1、11 字符型、字节型、整型、长整型、单精度型、双精度型、货币型、 逻辑型、日期型、对象型、变体型。string 、byte 、integer 、long 、single 、double 、currency 、boolean 、date 、object 、variant 2、双引号(英文)、# 3、ascii 、1、2 4、public 、通用、dim 、static 、private 、static 5、、+、+ 6、now() 、time 、日期型 三、解答题 1、(3) 2 、(1 ) 3、(1)常量(关键字)(2)字符型常量(3)逻辑型常量(4)变量(5)字符串常量(6)变量 (7)字符串常量(8)变量(9)日期型常量(题目应是 #11/16/1999# ) (10)数值型常量(单精度) 4、31 5、(1)(1+y/x)/(1-y/x) (2)x^3+3*x*y/(2-y) (3)sqr(abs(a*b-c^3)) (4)sqr(s*(s-a)*(s-b)*(s-c)) 6、 7、(1)13 (2)17 (3)#1999-11-12# (4)zxy123abc 8、(1)19(2)8.16666666666667 (3)5.25(4)2 9、(1)-4 (2)2 . 82842712474619 (3)-3(4)49 (5)”hello (”6)he
VB编程实例精讲(150例)
ExcelVBA编程实例(150例) 主要内容和特点 《ExcelVBA编程入门范例》主要是以一些基础而简短的VBA实例来对ExcelV BA中的常用对象及其属性和方法进行讲解,包括应用程序对象、窗口、工作簿、工作表、单元格和单元格区域、图表、数据透视表、形状、控件、菜单和工具栏、帮助助手、格式化操作、文件操作、以及常用方法和函数及技巧等方面的应用。这些例子都比较基础,很容易理解,因而,很容易调试并得以实现,让您通过具体的实例来熟悉ExcelVBA编程。 ■分16章共14个专题,以具体实例来对大多数常用的ExcelVBA对象进行讲解; ■一般而言,每个实例都很简短,用来说明使用VBA实现Excel某一功能的操作; ■各章内容主要是实例,即VBA代码,配以简短的说明,有些例子可能配以必要的图片,以便于理解; ■您可以对这些实例进行扩充或组合,以实现您想要的功能或更复杂的操作。VBE编辑器及VBA代码输入和调试的基本知识 在学习这些实例的过程中,最好自已动手将它们输入到VBE编辑器中调试运行,来查看它们的结果。当然,您可以偷赖,将它们复制/粘贴到代码编辑窗口后,进行调试运行。下面,对VBE编辑器界面进行介绍,并对VBA代码输入和调试的基本知识进行简单的讲解。 激活VBE编辑器 一般可以使用以下三种方式来打开VBE编辑器: ■使用工作表菜单“工具——宏——Visual Basic编辑器”命令,如图00-01所示;■在Visual Basic工具栏上,按“Visual Basic编辑器”按钮,如图00-02所示;■按Alt+F11组合键。
图00-01:选择菜单“工具——宏——Visual Basic编辑器”命令来打开VBE编辑器 图00-02:选择Visual Basic工具栏上的“Visual Basic编辑器”命令按钮来打开VBE编辑器 此外,您也可以使用下面三种方式打开VBE编辑器: ■在任一工作表标签上单击鼠标右键,在弹出的菜单中选择“查看代码”,则可进入VBE编辑器访问该工作表的代码模块,如图00-03所示; ■在工作簿窗口左上角的Excel图标上单击鼠标右键,在弹出的菜单中选择“查看代码”,则可进入VBE编辑器访问活动工作簿的ThisWorkbook代码模块,如图00-04所示; ■选择菜单“工具——宏——宏”命令打开宏对话框,若该工作簿中有宏程序,则单击该对话框中的“编辑”按钮即可进行VBE编辑器代码模块,如图00-05所示。
VB6.0图文实例教程
VB教程:序言-不再游戏我们需要什么 我们需要什么?当我们在一个精彩的游戏世界中游历了一番之后,或是惊叹于某一工具软件的小巧精致之余,多少总会产生些许编程的冲动。编程吗,在以前如果你对电脑还是一个门外汉,那实在是一件可望而不可及的事情。如果运用基于DOS下的编程语言,譬如C、Qbasic、Pascal等等,真不知何年何月才能有所成就。 编程是需要天赋的,你必须在大脑中对整个程序有一个清晰的轮廓,一个高效的流程,这并不是每个人都能做到的,你必须思之慎之,这也使编程变成一件最枯燥无味的事情。但在第四代计算机语言(可视化编程)出现后,可以确切的说它开发了人们的更多天赋,并不局限于那些头脑异常清晰的人,每一个人都可以发现自己也可以编出一些从前不敢问津的程序,想象力的充分发挥才是第四代语言的精粹。 Visual Basic(以下简称VB)可以说是可视化语言的先驱了,而且它也是可视化程度最高的一个,从几年前VB诞生之日起到现在,它已经经历了五个版本,而且现在微软正在紧张的进行着VB6.0的研制、测试,这么高的更新率,不外乎说明两个问题:用户对VB的热衷,微软对VB的重视。不可否认微软对市场的预测能力是极为高明的,而它强大的技术、财力支持也使它在许多以前未进入的领域,在
不长的时间内有成为最有力的竞争对手,如IE之于浏览器领域,《帝国时代》之于游戏都是最好的例证。对于VB现在也有一个很强的竞争对手――Delphi,有人把它称作VB杀手,这显然有偏激之处,VB的确有它的不足之处,但Delphi又何尝不是呢,而且以微软对VB的倾心,VB的功能必然会越来越强大。 VB的诞生 VB的出现可以说是Microsoft Windows的日渐成熟的必然产物。Microsoft Windows为程序员和最终用户提供了一个共同的人机界面。对用户,Windows提供了一个图形鼠标的操作环境,该环境对所有的应用程序都一样;对于程序员,Windows提供了一组预定义工具----称之为Microsoft Windows 的软件开发工具箱(SDK),该工具能使程序员建立一个与Windows界面相同的应用程序,而且,程序员不必关心最终用户的硬件配臵情况。在这一开发环境中,程序员唯一困难的是Microsoft SDK提供了六百多个函数和与其一致的事件驱 动(event-driven)编程技术。两种新方法的交叉使众多的程序员重新陷入困境,程序员不仅要掌握程序驱动编程技术和六百多个函数的功能,而且还得用C语言描述这些问题。因此一般情况下,程序员首先要掌握C程序设计技术,而后再开始学习SDK。这样的条件下就要求在Microsoft多任务环境下出现一种操作方便,使用简单的新工具----Visual Basic由此诞生。 何为可视