VB控件(共9篇)
VB控件 篇1
0 引言
在开发Visual Basic 6.0的应用程序时, 往往要使用一些类型相同、功能相似的控件。如果对每一个控件都单独处理, 不免多做一些麻烦而重复的工作, 而且也会消耗更多的资源。这时可以将这种同一类型的控件定义成一个控件数组。例如, 可以将一组命令按钮定义成一个控件数组, 也可以将一组文本框定义成一个控件数组。控件数组为处理功能相近的控件提供了极大方便。
1 控件数组基本概念
控件数组是由一组相同类型的控件组成, 这些控件共用一个控件名称 (Name属性) , 具有相似的属性设置, 共享同样的事件过程。控件数组中各个控件相当于普通数组中的各个元素, 同一控件数组中各个控件的Index属性相当于普通数组中的下标。例如, 由一个包含3个单选按钮的控制数组Option1, 它的3个元素就是Option1 (0) 、Option1 (1) 、Option1 (2) 。
一个控件数组至少应有一个元素 (控件) , 元素数目可在系统资源和内存允许的范围内增加, 可用到的最大索引值为32 767。同一控件数组中的不同控件可以有自己的属性值设置。在建立控件数组时, 每个元素 (控件) 被自动赋予一个唯一的索引号 (Index属性, 相当于普通数组的下标) , 索引号从0开始, 通过索引号引用控件数组中的某个控件, 即控件数组名 (索引号) 。
使用控件数组的好处是: (1) 便于控件管理, 它们共用一个名称, 通过Index进行区分; (2) 运行期间可以添加控件, 使用控件数组添加控件所消耗的资源比直接向窗体添加多个相同类型的控件消耗的资源要少; (3) 控件数组中的不同控件共享相同的事件过程, 因为控件数组的事件可以共享, 如果要使多个同类型控件在一个事件中执行相同或类似的代码, 使用控件数组比单独创建多个控件更方便, 代码也更容易维护。
2 控件数组建立方法
控件数组中的每一个元素都是控件, 其定义方式与普通数组不同。可以在设计阶段创建控件数组, 也可以在运行期间动态创建控件数组。
2.1 在设计阶段创建控件数组
设计阶段可以通过以下两种方法创建控件数组:
(1) 复制现有控件, 将其粘贴到所在容器中。绘制或选择要作为控件数组的第1个控件, 执行“编辑|复制”命令, 选中容器, 再执行“编辑|粘贴”命令, 系统会给出一个对话框, 询问是否建立控件数组, 单击“是”按钮即可。绘制或选择的第1个控件的Index属性值为0, 新粘贴控件的Index属性值为1, 每个新数组元素的Index属性值与其添加到控件数组中的次序相同。用这种方法添加控件时, 大多数可视属性, 如高度、宽度和颜色等, 将从数组中的第1个控件复制到新控件中。
(2) 将窗体上已有类型相同的多个控件的Name属性设置为同一值。先选定一个控件作为数组的第1个元素, 并将其Name属性值设置成数组名 (或使用其原有的Name属性值) , 将其它同类型控件的Name属性值改成同一个名称。这时, 系统同样会询问是否建立控件数组, 选择“是”按钮将控件添加到控件数组中, 这样操作后, 控件数组中控件的Index属性值分别变成了0、1、2、…… (即控件数组元素的索引) 。用这种方法建立的控件数组元素仅仅具有相同的Name属性和控件类型, 其它属性与最初绘制控件时的值相同。
2.2 在运行期间创建控件数组
在运行时, 使用Load语句向现有控件数组中添加控件。通常设计时在窗体上创建一个Index属性为0的控件, 然后在运行时使用Load语句添加控件, Load语句格式如下:
Load控件数组名 (索引号)
例如, 假设已经在设计时建立了一个控件Option1 (0) , 在运行时可以用以下语句向控件数组中添加一个新的控件:
Load Option1 (1)
使用Load语句添加的控件数组元素, 其大多数属性值将由数组中具有最小下标的现有元素复制, 而且新添加的控件是不可见的, 必须编写代码将其Visible属性值设置为True, 通常还要调整其位置 (比如Top或Left属性的值) , 才可以在界面上显示出来。例如:
Option1 (1) .Visible=True
Option1 (1) .Top=500
Option1 (1) .Left=1000'Top或Left的值视情况而定
使用Unload语句可以删除在运行期间创建的控件数组元素, Unload语句的格式如下:
Unload控件数组名 (索引号)
例如, 要删除上面创建的Option1 (1) 控件, 可以使用语句:
Unload Option1 (1)
3 控件数组应用示例
通过以下几个示例, 介绍控件数组的应用。
例1:设置文字颜色。
在窗体上建立一个标签Label1和一个框架Frame1, 在框架Frame1中创建一个控件数组Option1 (0) ~Option1 (3) , 单击这4个单选按钮, 分别将标签Label1的文字颜色设置为“黑色”、“红色”、“蓝色”和“黄色”。
设计界面、运行界面分别如图1和如图2所示。
为实现题目功能的要求, 编写控件数组Option1的Click事件过程如下:
控件数组Option1包含4个单选按钮, 无论单击哪个单选按钮, 都将执行相同的事件过程。系统会将被单击的单选按钮的Index属性值传递给事件过程, 由事件过程根据不同的Index值执行不同的操作。
例2:使用控件数组创建电影胶片特效。
向窗体上添加一个Image控件Image1, 通过设置其Picture属性添加一幅图片, 调整好大小, 然后用复制、粘贴的方法创建一个控件数组Image1 (0) ~Image1 (3) 。添加一个Timer控件Timer1, 设置Timer1控件的Interval属性值为20。
设计界面、运行界面分别如图3和图4所示。
在窗体的Load事件过程中编写代码, 调整窗体的宽度和各图像框的初始位置, 使得运行初始时, 窗体宽度正好可以显示3幅水平并排的图片Image1 (0) -Image1 (2) , 使第4幅图片Image1 (3) 在窗体左侧的不可见区域, 其右侧与窗体左边界对齐。Load事件过程的代码如下:
通过定时器控制每隔20ms将各图像框向右移动20缇, 如果图像框的左侧已经大于窗体的内部宽度, 说明图像框已经移出窗体, 则将相应的图像框移回窗体左侧不可见区域, 使其右侧与窗体左边对齐。Timer1控件的Timer事件过程如下:
运行时, 各图片沿窗体左侧逐渐向右侧移动, 产生电影胶片的效果。
例3:控件的添加和删除。
在窗体上绘制一个复选框Check1, 将其Index属性值设置为0, 使其成为控件数组的第一个元素。再在窗体上添加3个命令按钮Command1、Command2和Command3, 分别实现添加控件、删除控件和关闭窗体的功能。
设n表示添加的控件数 (本例假设其最大值为3) , n应作为窗体级变量进行声明:
4 结语
控件数组提供了一种方便的控件组合方法, 这种组合控件的方法, 既可方便地对同类型控件进行管理, 又可使这些控件共享事件过程代码, 不仅代码编写高效, 而且代码也容易维护。
摘要:控件数组是一种方便组合同类型控件的方法, 这些控件具有共同的名称, 共享同一事件过程代码, 根据不同的Index属性值执行不同的处理程序段。在介绍控件数组基本概念及其建立方法的基础上, 着重研究了VB中控件数组的应用。控件数组不仅利于管理同类型控件, 而且可以优化程序代码。
关键词:Visual Basic,控件数组,Index属性值,共享事件代码
参考文献
[1]求是科技.Visual Basic 6.0程序设计与开发技术大全[M].北京:人民邮电出版社, 2004.
[2]王建忠.Visual Basic程序设计[M].北京:科学出版社, 2013.
[3]邱李华, 郭全.Visual Basic程序设计教程[M].北京:人民邮电出版社, 2009.
VB控件 篇2
在第一章,我们已经知道,任何一个 VB 程序都是由操作界面及与之相应的程序代码组成,而操作界面则是由诸如“命令按钮控件”、“标签控件”等控件以及窗体共同组成,从本章开始,我们进入控件的学习过程。
Label(标签控件)是图形控件,主要作用在于显示文字信息,如大家比较熟悉的程序安装界面:在某个软件安装过程中,常常会显示一些帮助信息或与产品相关的介绍信息,而这些,大多是用标签控件制成的。
与以后我们要学到的文本框控件(TextBox)不同的是,标签控件显示的文字不能直接进行修改,要修改的话只能在设计阶段进行;文本框既可以用来显示文本,还能够在文本框中输入文本。
在 Visual Basic 工具箱中,标签控件的图标如图一所示。标签的默认名称(Name)和标题(Caption)为 LabelX(X为1、2、3,等等),规范的命名方式为:LblX(X为自己定义的~,如 LblShow 、LblRed ,等等)
图一
一、标签控件的主要属性:
1、Caption(标题)属性:
此属性用来设置在标签上显示的文本信息,可以在创建界面时设置,也可以在程序中改变文本信息,如第一章的例子中,通过点击按钮改变标签显示的字样。
如果要在程序中修改标题属性,代码规则如下:
标签名称.Caption = “欲显示的文本”
如第一章在程序中改变标签 LblShow 的 Caption 属性:
LblShow.Caption = “跟我来学 VB 神童教程”
但是请大家注意,上面的代码应该写入供触发的控件对应的程序代码区,如第一章中,是在命令按钮的程序代码区输入的代码,而不是标签本身的代码区哟。
这也是初学者常常大惑不解的地方,为什么我要让标签改变字样,却要在其他控件中输入代码?这是因为,我们是通过触发其他控件这个事件来让标签改变 Caption 属性的。
当然,你也可以让标签本身来触发 Caption 属性改变事件,如用鼠标点击标签,这时你就需要在标签对应的程序代码区输入代码了,但在实际编写中,这种情况非常罕见。毕竟,标签控件用于显示信息的本意远远超过了响应鼠标点击的意图。
2、BorderStyle(边框)属性:
本属性用来设置标签的边框类型,有两种值可选:0,代表标签无边框;1,代表标签有边框,并且具有三维效果,如图二显示的两个标签:
图二
BorderStyle. 属性可以在设计界面时指定,如图三:
图三
也可以在程序中改变(但这种应用不多见),程序代码规则:
标签名.BorderStyle. = 0/1(0或1,两者取一)
习题一:创建一个标签(LblShow)、两个按钮(CmdChange1、CmdChange2),点按 CmdChange1 ,标签有边框;点按 CmdChange2 ,标签无边框,
联想:在完成本题后,你可能会想到,有没有办法用一个按钮来完成本题的功能?即鼠标点击一下,标签有边框,再点一下,标签边框消除,再点一下,边框又出现,以此类推。回答是肯定的,不过,这是在以后的学习中要讲的。
答案:见本节最后的答案区。
3、Font(字体)属性:
本属性用来设置标签显示的字体,既可以在创建界面时设定,也可以在程序中改变。
在创建界面时设定,如图四:
图四
在图四的设置界面中,除了可以选择字体,还可以设置显示文字是否为粗体、斜体、下划线等。
在程序中改变 Font 属性,程序代码书写规则如下:
字体改变:标签名.FontName = “字体类型”,其中,“字体类型”可以是中文,如“宋体”、“隶书”;也可以是英文名,如“Arial”、“Times New Roman”,等等,不过,这些字体名称必须是电脑上有的。
字体大小改变:标签名.FontSize = X ,其中,X 是阿拉伯数字,代表字体是几号字。如:LblShow.FontSize = 11 。
粗体(FontBold)、斜体(FontItalic)、下划线(FontUnderline)、删除线(FontStrikethru)属性的设置值是代表真/假的逻辑判断值 True/False ,如下:
LblShow.FontBold = True/False
LblShow.FontItalic = True/False
习题二:一个标签(LblShow)用于显示文本;按钮1(Cmd1)可以让标签显示的字体变成隶书;按钮2(Cmd2)可以让标签显示的字体变成 13 号字;按钮3(Cmd3)可以让字体变成粗体。
答案:见本节最后的答案区。
4、Alignment(对齐)属性:
VB控件项目教学项目设计 篇3
一、项目产生背景
控件编程是V B程序设计的一大特色, 充分体现了V B面向对象编程的所见即所得的特点。V B工具箱提供了20个常见的控件, 在教学实践中让学生们认识这些控件, 并绘制在界面上并不难, 但是对于控件诸多的属性、事件、方法加以应用, 却让他们感到很困难;把控件和函数、数组之类的内容结合起来更是难上加难。
为了提高学生学习兴趣, 培养他们控件编程的能力, 课程组设计了不同的项目, 在课堂开始首先展示综合的项目成果, 然后分解成若干简单的任务, 学生完成这些简单的任务后初步掌握了对应控件的编程技能, 在此基础上再引导学生完成综合的项目。
二、项目选取思路
在项目的选取时, 从学生的生活实践中选材, 强调趣味性, 同时要循序渐进, 先从简单的控件开始, 让学生在学习过程中有成功的喜悦感。合理的划分项目中用到的控件, 让学生感觉这个项目就是一个不可分割的整体, 不是特意为了讲这个控件也刻意罗列上去的。同时还要注意把控件和一些理论性东西相结合, 比如数组、函数, 使项目更饱满, 贴近实际项目。
课程组最后选取了四个项目:简单计算器设计、排序插入程序设计、图片自动显示器设计、文本编辑器设计, 如表1所示。
简单计算器设计项目W indow s X P附件中自带的计算器为蓝本, 设计了一个简单计算器, 可以实现简单的四则运算, 并可实现数据开方、乘方、取对数、求倒数功能, 有很强的实用性。本项目侧重文本框、命令按钮、标签、选择类控件及框架等基本的控件的综合使用, 同时对控件数组进行了应用。
排序插入程序设计侧重对列表框的应用, 将结果显示在列表框中, 列表框控件的属性很多, 应用起来比较复杂, 所以本项目只安排了一个控件的学习。同时需要用Sub过程与Function过程来处理排序和插入, 还涉及到过程间参数传递以及过程的作用域。
图片自动显示器设计可以说是一个实用性的综合程序, 它可以解决学生们在照片选择时的诸多问题, 同时涉及到了很多的控件, 但这些控件用法固定容易掌握, 并且文件系统的三个控件联合使用很容易看到效果。
文本编辑器设计是一个更综合、更有难度的项目, 涉及到多文档编程, 同时也应用到菜单、工具栏、R ich Text B ox控件、通用对话框控件、图像列表框以及剪切板等内容, 完成本项目后学生对多文档编程有了初步的了解, 对后继的数据库编程有很大帮助。
三、项目实施
项目实施包括项目演示、项目分解、分任务实现、综合项目实现、任务拓展, 以图片自动显示器设计为例加以说明。在课堂上首先演示项目内容, 然后和大家讨论完成这个项目需要哪些技能, 把项目分解为三个任务:文件搜索器、手动图片显示器、自动图片显示器。首先利用文件系统的三个控件完成一种文件的搜索, 比如.txt文件的搜索。然后利用文件搜索器搜索图片文件将其显示在图片框控件中, 在这一步实现的是学生点击文件列表框中的文件名将图片显示在图片框。接下来实现通过定时器控件定时实现按照一定的时间间隔自动显示图片功能。最后是任务拓展可以让学生课下完成动态的贺年卡制作、动态的奔跑的小马等项目。
四、实施效果
V B控件项目教学至今已经实施了3年, 我们的项目库也得到了很大的丰富。在实施过程中发现学生学习积极性被充分调动起来, 有项目的引导他们做到了有的放矢, 在项目制作过程中收获了成功感。同时, 因为项目将控件和理论内容合理分组, 理论以够用为度, 学生不再厌倦繁杂的理论知识, 提高了他们的综合应用能力。
参考文献
[1]戴青云.任务驱动在"Visual Basic程序设计"实践教学中的应用[J].河北企业, 2008.
VB控件 篇4
控件数组是由一组相同类型的控件组成的,它们共用一个控件名,具有相同的数组。控件数组适用于若干个控件执行的操作相似的场合,控件组共享同样的事件过程。控件数组通过索引号(属性中的Index)来标识各控件,第一个下标是0 。如:Text1(0)、Text1(1)、Text1(2)、Text1(3)……
2.控件数组的建立
(1)在设计时建立
步骤:1)在窗体上画出某控件,并进行属性设置。
2)选中该控件进行“复制”和“粘贴”操作,系统提示“是否建立控件数组”,选择是即可。多次粘贴就可以创建多个控件元素。
3)进行事件过程的编程。
(2)运行时添加控件数组
方法:1)在窗体上画出某控件,设置该控件的Index值为0,表示该控件为数组。
2)在编程时通过Load方法添加其余若干个元素,也可以通过Unload删除某个添加的元素。
3)每个添加的控件数组通过Left 和Top属性,确定其在窗体上的位置,并将Visible设置为True。
使用示例:建立一个类似国际象棋的棋盘,要求黑白交替,运行时单击某个棋格,会改变颜色并显示其序号。
1.计算机等级考试二级VB考点:排列显示和分层显示控件
2.计算机等级考试二级VB考点:动态数组及声明
3.计算机等级考试二级VB考点:VB的过程设计
4.计算机等级考试二级VB考点:进程条和滑块
5.计算机等级考试二级VB考点:自定义数据类型
6.计算机等级考试二级VB考点:常用文件操作语句和函数
7.计算机二级考试VB考点:多媒体控件
8.计算机等级考试二级VB程序设计题
9.计算机二级考试VB考点:通用对话框控件
VB控件 篇5
1 设计思想
欲实现文挡的“多重撤销”功能,系统必须能够记录文档的每一过程及其变化。系统记录操作过程的方式有两种:(1)定义一个操作命令的列表,记录每次操作的命令。如果需要撤销,则执行此操作的逆命令。(2)建立文档列表,直接记录每次操作的文档记录,如需撤销,只需取出前一个记录即可。[1,2]
两种方法中,前者节省内存空间,但过程复杂,较难实现且通用性差;后者占用内存较多,但原理简单,容易实现,通用性好,能够满足大多数编辑软件的要求。本文通过后一种方法来实现编辑文挡的“多重撤销”功能。
用建立文档列表的方式实现“多重撤销”,其设计思想如图1所示:在前台建立一个正常的RichTextBox显示控件(RTB),对文件内容进行显示并且允许修改;在后台建立一系列RichTextBox储存控件(RTBa(0)~RTBa(5))。当在前台进行编辑操作时,系统将改变后的每一个结果,依次存入后台的RTBa系列控件之中备用。后台的控件相当于“稿纸”,存有内容的是“草稿”。尚未存入内容的是“空白稿纸”。
当需要“返悔”的时候,可以在后台储存的“草稿”里,找出相应的内容并将其调入前台继续编辑,这样就实现了文档编辑的多重撤销功能。后台的“空白稿纸”越多,编辑时允许“返悔”的步骤也越多,但消耗系统的内存也越大。
2 任务要求
如图2所示,一个窗体内有一个文本显示区以及3个编辑按钮(Save、UnDo、ReDo)。当对显示区的内容进行修改时,其下方的编辑按钮应做出相应的变化(有效或无效)。当点击编辑按钮UnDo、ReDo时,显示区的内容应发生相应的变化。例如,点击“UnDo”按钮,则窗口显示上一步编辑的内容。
要想实现上述功能,就是要解决以下问题。
(1)编辑文件的依次储存;
(2)后台记录的自动更新;
(3)后台与前台的关系;
(4)多重UnDo/ReDo操作的逻辑性;
(5)各操作所引起的各按钮的相应变化。
3 程序设计
3.1 窗体
如图3所示,新建一个窗体Form1,上面放置1个文件显示控件RTB(可见),1个后台储存控件RTBa(不可见),3个按钮分别为Save、UnDo和ReDo。各控件的主要属性如表1所示(运行结果见图2)。
3.2 过程
为完成以上功能,需要定义7个模块变量:str1、Mark1、Icurrent、Imax、Iplus、i和N。其中str1用来保存加载文档的绝对路径;Icurrent表示前台窗口所对应的后台“草稿”的索引值(索引值为Icurrent的“草稿”内容总是与前台显示的内容同步);Imax表示当前所允许的最大有效撤销步数(即后台有Imax个有内容的“草稿”可供前台选择);i为循环用变量;N表示本程序所允许的最大撤销步数(程序“空白稿纸”的总量,Imax不能大于N);为了方便,可直接令N为某一常数(本例中Const N=15);Mark1和Iplus是临时变量,用来进行特殊过程控制。以上变量除str1为字符串型之外,其余皆为整数型。
3.2.1 窗体加载过程
窗体加载过程应完成准备工作以及原始数据的载入。在已有后台储存控件RTBa(0)的基础上,通过循环加载N个控件,形成控件数组,不仅简化窗体设计,而且便于程序调用。见图4。
3.2.2 后台储存过程
后台储存可分为两个阶段:
(1)当修改刚刚开始的时候,每一步的修改结果依次填充于空白的储存控件内(空白稿纸),直到达到最大允许数N(见图8上部代码)。
(2)当修改的数量已经达到最大允许值(N)的时候,程序将舍去最早的“草稿”(索引值为0),而将索引值为1的“草稿”内容移至索引为0的“稿纸”上,再将索引值为2的“草稿”移至索引为1的“稿纸”上。如此逐个移动,像一条连续运动的坦克履带一样,索引为N的“稿纸”始终被用来记录最新的修改(见图8中部代码)。
进入稳定编辑状态后,后台的储存保持“流水作业”,将保留最近N+1步的修改结果,以备随时调用。
3.2.3 UnDo/ReDo操作过程
当使用者进行了一次或数次UnDo/ReDo操作、最终停留在某一中间位置并开始进行新的编辑时,将产生“错误确认”现象。所谓“错误确认”,是指通过编辑者的UnDo/ReDo操作,找到了他认为正确的版面,并决定从此处开始新的编辑。对于后台来说,原先储存的该版面之后的内容现在被明确地确认为是错误,走了弯路,并且以后不再需要,因而不允许再作为有价值的“草稿”而存在。此时应将这部分“草稿”清除,并且能够用来进行UnDo/ReDo操作的“草稿”数量I-max也相应地减少。
例如:在某一时刻,后台共有12个“草稿”(Imax=12,Icurrent=11),编辑者发现出错,需要进行后退操作。于是他点了UnDo按钮,总共点了5次,找到了自己认为满意的内容(Icurrent=6),于是停下来,开始新的修改。按照上面的分析,此时可用来进行UnDo/ReDo操作的“草稿”数量应该是Icurrent+1=7,并且ReDo按钮不再可用。
通过分析,发现以上过程(“错误确认”过程)可以用以下的事件链来表示:
UnDo/ReDo事件-->RTB获得焦点事件-->RTB发生变化事件。
如果恰好按照以上顺序发生了全部事件,则一定属于“错误确认”的情况。因此可以通过以上3个过程的特征编写程序代码:
(1)在CMDUnDo_Click过程和CMDReDo_Click过程中设置记号Iplus,每发生一次CMDUnDo_Click或CMDReDo_Click过程,临时变量Iplus的值就由0变为1(见图5、图6的下部:Iplus=1)。
(2)在RTB_GotFocus过程中加入判断,如果Iplus=1,表明上一步操作一定是点击了UnDo按钮或ReDo按钮,此时令Iplus的值为2,见图7。
(3)在RTB_Change过程中加入判断,如果Iplus=2,则令Imax=ICurrent+1(抛弃了后台索引号大于ICurrent的草稿),并使ReDo按钮失效。事后令Iplus恢复初值0,以备下次正常使用。见图8下部。
3.2.4 阶段性成果保存过程
按操作习惯,一旦编辑者确认当前内容正确无疑,便可将成果保存。将成果保存的过程,同时也是一个清除后台“草稿”的过程。此时后台保存的唯一内容就是当前窗口的内容,因此该时刻的Icurrent=0,Imax=1,且UnDo/ReDo按钮皆不可用。代码见图9。
3.2.5 各执行过程中按钮的有效性
后台储存的系列控件(稿纸)数目有限,具有有界性,连续调用时,如果不加以限制,会出现逻辑错误。如UnDo操作,当调用到索引为0的“草稿”时,后面已无“草稿”可用,此时不应再继续点击UnDo按钮,否则出错。进行ReDo操作时,当调用到索引为N-1的“草稿”时,继续点击ReDo按钮也会出错。
为了防止以上情况发生,需要加入判断语句,对各按钮的有效性加以限制,各判断过程汇总见图10。其中CM-DReDoButton过程是点击ReDo按钮的判断,CMDUnDoButton过程是点击UnDo按钮的判断,CMDSaveButton过程是点击Save按钮的判断,CMDChangeButton过程是RTB发生变化时各按钮的有效性判断。
3.2.6 辅助变量控制特殊过程
程序开始时,窗体Form1自动加载初始控与变量值,其中包括向RTB控件内加载指定路径的文件,并将内容显示在控件RTB内。但这一过程将引起RTB_Change事件的发生,并向后台储存控件内写入数值,会导致程序出错,这是我们所不希望的。
解决的办法是:令RTB_Change事件仅在特定条件下才执行实际操作。在本例中规定,仅在临时变量mark1=1的情况下才执行RTB_Change事件的实际动作。当Form1自动加载、单击UnDo或ReDo按钮时,由于强制指定了mark1=0,故虽然引起RTB_Change事件的发生,但不会引起后台储存控件的动作,从而达到了避免意外操作的效果(见图4、图5、图6中的mark1=0以及图7中的mark1=1)。
4 问题与结论
用后台系列控件的办法实现多重撤销功能,原理简单,容易实现,可以非常方便地引入中小型文字编辑软件,从而增加人机交互的实用性。限于篇幅,本文仅列举了基本功能,在实际应用中,还可以加入更多的代码。例如,可根据系统内存以及所编辑文件的大小,对撤销操作的允许步骤进行自动限制。撤销操作进行过程中,光标应停留在文件刚刚变动过的位置等。
根据同样的原理,当编写大型编辑软件时,可以采用在硬盘上生成临时文件的办法,来代替本文中的后台控件,可以减小系统内存的大量占用。在使用著名软件Word来编辑文件时,主文件旁边会生成一系列的临时文件,就是采用了这一原理。
对于中小型文字编辑软件而言,本文给出的多重撤销解决方案,编写过程简单易懂,趣味性强,既可供初学者借鉴,又具有很好的实用性,可以在编程中直接采用。
参考文献
[1]赵梅,高晓雷.MFC文档编辑器中多级Undo与Redo的通用实现.计算机工程,2003,29(17):95~96.
VB控件 篇6
以上这些限制都是可以方便安全地绕过的。实际上,从可能性上说,利用MSFlex Grid控件进行数据库或二维表编辑浏览能使程序员对数据实现比标准数据控件更灵活的控制,只是要付出更大的编程工作量罢了。
1 利用MSFlex Grid控件显示数据
从一开始微软就没有要将MSFlex Grid控件当作标准数据库浏览编辑控件。提供这个控件的目的是为了让程序员有一种方便灵活的手段显示所有能以二维表形式组织起来的数据,因此“数据连接(Data Bound)”功能实际上相当于“免费赠品”,难怪只支持ADO数据对象了。明白这一点就可以知道,理论上只要是VB程序能够读/写的数据库数据,都可利用MSFlex Grid控件来显示、编辑。
MSFlex Grid控件中显示的数据都存放在属性“Text Matrix”中,这个属性是一个二维字符串数组,利用两个参数:行号(Row Index)和列号(Col Index)来访问数组中的数据,数组的大小由属性“Rows”和“Cols”指定,只要正确地设定了数组大小并填上数据,MSFlex Grid控件就能按要求显示数据。
通过编写一个能读取和编辑一个Accesss2000格式数据库的程序作为说明示例。由于VB6.0是在1998年推出的,所以没有提供支持Access 2000数据格式的DAO驱动控件,因此无法用标准的Data Bound Grid控件显示和编辑Access 2000数据库。但VB6.0中提供了通用ADO数据控件,利用它6.0版的VB程序仍然能读取Access 2000数据库。只要可以获得数据,显示数据的工作MSFlex Grid控件是胜任愉快的。
图1是本例程序主窗口Form的布局。在实现中,使用了一个标准ADO数据控件(名称为ADODC1)来负责数据库数据的读取。数据读入之后就将它们填写到MSFlex Grid控件中显示,按照惯例,这些处理在窗口的Load事件中进行。
窗口Load事件的处理代码如下:
说明:
(1)程序要读取的数据库名称为“AUDIT.MDB”,位于路径“E:FMBASICAUDIT_PRJTEST”中。在上面代码中直接用ADO数据控件来读取Access 2000数据库,为此首先要设定ADODC1控件的Connection String属性和Recordset属性,然后在调用它的Refresh方法,数据读入后包含在名为rst SSPHB的ADO Recordset对象中。关于使用ADO数据控件操纵数据库的具体方法,可参考VB 6.0在线帮助系统中的相关部分。
(2)在填写数据之前要预先设置MSFlex Grid控件的Rows(总行数)和Cols(总列数)两个属性,这个动作确定了Text Matrix二维表的大小。上面代码中因为第一列要用来显示字段名所以需要有一个固定行,同时在本程序中MSFlex Grid控件还包含两个固定行。这些设定可以通过为属性Fixed Rows和Fixed Cols社定相应值来完成。
(3)上面的代码只适用于字符型和数值性的数据库数据,并且这些数据都不能为“空”。对于逻辑型的数据需要特殊处理。
(4)变量b Flag是一个标志,它的作用将在后面说明。
2 编辑数据
经过上面的处理,Access 2000数据库中的数据能够显示在MSFlex Grid控件中了,这还不够,程序还要为用户提供编辑这些数据的功能。MSFlex Grid控件不允许编辑修改显示的数据,但可以通过特殊的技术处理来绕过这个限制。想法是当用户用鼠标选择了MSFLex Grid控件中的某个单元格(Cell)时,将一个编辑控件(Text Control或Check Box)移动到这个单元格中,装入相应的数据让用户编辑;用户改变“输入焦点”时再将被修改的数据写回到MSFlex Grid控件中以保证显示的正确性。MSFlex Grid控件提供的事件使这样的控制成为可能。当用户选中某个单元格时会引发一个Enter Cell事件,在这个事件中可以为编辑控件装入初始数据并将它移动到MSFlex Grid控件中;当用户改变选中的单元格时会引发一个Leave Cell事件,这时将被修改的数据写回MSFlex Grid控件中。为了满足编辑文本和数值数据的需要,引入一个文本编辑控件(Text Control)到程序的主界面中,控件的名称为Text1,默认它的Visible属性为FALSE(不可见)。
图2是添加了编辑控件之后的程序主界面。
事件Enter Cell的处理代码:
说明:
(1)移动到MSFlex Grid控件中的编辑控件在不需要编辑时是不可见的,因此它们的Visible属性的初始值应该是FALSE。
(2)移动文本编辑控件是通过改变文本控件左上角的位置坐标来实现的,同时还需要调整文本控件的大小使它能精确地放入MSFlex Grid控件的单元格中。MSFlex Grid控件的“当前选中单元格”的宽度和高度分别由属性Cell Height和Cell Width记录,这个单元格相对于MSFlex Grid控件左上角的坐标分别由属性Cell Left和Cell Top记录。
(3)MSFlex Grid控件的“当前选中单元格”中的数据在MSFlex Grid控件的Text属性中保存。
(4)Leave Cell事件中的代码负责将编辑控件从“当前选中单元格”中移出,同时将被修改的数据写回MSFlex Grid控件中,然后隐藏文本编辑控件。
(5)由于文本编辑控件是程序员移动到MSFlex Grid控件中的,所以在MSFlex Grid控件滚动时这些文本编辑控件的位置不会自动调整,必须要程序员手工调整,因此还要处理Scroll事件。但是通过实验发现没有办法在滚动后获得MS-Flex Grid控件“当前选中单元格”的最新相对位置,所以程序只是简单地将文本编辑控件“移出”MSFlex Grid控件。
(6)请特别注意标志b Flag,这个标志的作用是保证初始化时上面三个事件的处理代码都不执行。为什么要这么做呢?原因是在实践中发现当赋值那些位于显示范围之外的单元格时也会引发Enter Cell和Leave Cell事件,不知这是不是VB 6.0版的一个bug。这时候执行这两个事件中的代码会引起错误,为此要在MSFlex Grid控件初始化时禁止Enter Cell和Leave Cell中的代码运行。
3 逻辑字段的处理
数据库中的文本或数值数据MSFlex Grid控件可以直接显示,但逻辑字段就不行。MSFlex Grid控件只能直接显示数据库中用来记录逻辑值的数值“0”或“1”,另外逻辑字段应该用单选按钮(Check Box控件)而不是文本控件来编辑,如果可能的话最好也用单选按钮的形式来显示。
可以用在MSFlex Grid控件的单元格中显示图片的方法实现以单选按钮形式显示逻辑值的要求。MSFlex Grid控件可以为每个单元格指定在其中显示的图片,当然,在显示图片的时候单元格中应该不显示文字,否则就冲突了。
本例中使用的图片是通过对屏幕硬拷贝结果进行剪切获得的,最少需要两个:“真值”和“假值”,复杂情况下需要包括“被禁止的真值”和“被禁止的假值”。图片可以是任何VB能够识别的格式,采用最通用的“位图(Bit Map)”格式。
这些位图可以用分立文件的形式保存,对此可使用LoadPicture函数来装入图片,但更好的方法是通过一个“资源文件(Resource file)”来集中相关的图片用Load Res Picture函数读入它们。资源文件VB 6本身无法生成,但可以用VC的集成开发界面生成,注意保存时一定要存为“32-bit resource file(32位资源文件)”格式,否则VB 6无法识别。资源文件要通过“Add file(添加文件)”的方式加入到工程中。
以“单选按钮”形式显示逻辑字段的代码段如下:
在主窗口的Load事件中:
移动编辑控件到MSFlex Grid的单元格中,新的Enter Cell事件处理代码:
MSFlex Grid控件的滚动事件(Scroll)有些奇怪,理论上当输入焦点在单元格中时,滚动之前应该先有一个Leave Cell事件,但实际证明没有,因此在滚动事件中要进行一些特殊处理。
说明:
(1)为了实现对逻辑字段的编辑,在主窗口Form中加入了一个单选按钮,它的名称为Check1。这是主窗口的设计图参见图3。
(2)主窗口load事件中的代码用来以单选按钮形式显示逻辑字段的值。首先判断当前显示字段是否是逻辑字段,如果是就根据值装入相应图片。程序中用函数Load Res Picture来装入图片,代码中使用的resource id(资源标示)是在VC中生成资源文件时设定的。在MSFlex Grid控件的某个单元格中显示图片只要对属性Cell Picture正确赋值就行了,要注意这个属性指出的是“当前选中单元格”中显示的图片,当前选中单元格是MSFlex Grid控件的属性Col和Row指出的单元格。
(3)Enter Cell事件中的代码用来移动编辑控件到“当前选中单元格中”,做法大致类似于移动文本控件时的做法。给单选按钮控件的左上角坐标加上常数10是因为单选按钮控件无法同当前选中单元格严格对齐。
(4)Leave Cell事件中的代码用来从MSFLex Grid中移出编辑控件以和进行其他善后工作。注意,对应于逻辑字段的Text Matrix分量中保存的是空字符串""(必须这样做,否则会破坏输出显示),因此逻辑字段的数据直接从数据库中取得并且直接写回数据库。
4“固定列”和“固定行”
图4是实用固定列和固定行显示数据的情况。
MSFlex Grid控件中可以显示“固定行”和“固定列”。固定行总是显示在最上面,固定列总是显示在最左边,固定行适合显示数据库字段名称,固定列可以用来显示记录标记。固定行和固定列不会因为横向滚动和纵向滚动而隐藏,这个特性使它们非常有用,在许多实际应用中要求表格中某些数据不会随列滚动而隐藏,这些数据就很适合显示在固定列上,如图4所示。
MSFlex Grid控件中显示多少固定行和多少固定列是由属性Fixed Rows和Fixed Cols来确定的。
5 列宽度的调整
像上面那样使用MSFlex Grid控件是不能够允许用户调整列宽度的。原因是由于无法捕获列宽度调整事件和相应信息,所以不能正确地调整相应编辑控件的位置和大小。在禁止用户手动调整列宽度时就需要通过程序来调整列宽度,使其达到最佳。这可以通过操纵属性Col Width来做到,注意,这个属性是用一维数组的形式组织的。
6 注意事项
如果用户首先选中一个单元格后将输入焦点切换到除MSFlex Grid控件之外的其他控件时不会引起Leave Cell事件。因此应该考虑在每一个可接受输入控件的Click事件中都加入保存编辑控件(文本编辑控件和单选按钮)中数据到MSFL ex Grid中的代码。
摘要:VB 6.0企业版提供的MSFlexGrid控件能够大大提高VB程序的数据显示能力。本文结合数据库编程的实例详细解释了这个功能强大的控件的使用,对数据库编程具有实际应用意义。
VB控件 篇7
VB是一种面向对象的程序设计语言及可视化应用程序开发工具。它简单易学、易掌握,功能强大,具有应用灵活、可视性好等特点,作为一种比较流行的程序设计语言之一而被不少工程设计人员、软件开发人员所青睐。
利用VB语言开发程序的步骤比较其它的语言设计程序相对较为简单,即,建立工程、窗体,根据程序的需要添加和组织必要的对象、控件和组件,再编写相应的过程代码。这些问题许多书籍都有介绍,在此不再赘述。
利用VB程序设计的过程中,在建立了窗体(Form)后向其上面添加必要的来实现封装和继承功能。笔者在编写某机械设计的程序时,因涉及到的内容、对象比较多而不得已使用了较多数量的控件。设计中遇到这样的问题:当对建立的一个窗体添加到一定数量的对象控件后,再要增加这些对象时系统给出了“达到极限:该窗体不能再创建更多的控件”的提示,如图1所示。
这个提示告诉我们在VB程序设计的系统中使用控件的数量是有限制的。
1问题所在
经过探究发现,作为以单个对象的方式向VB的窗体中加添控件,亦即不是把控件作为“组件”方式添加,最多只能容纳254个控件;如果加上窗体Form控件本身,只能有255个。如果再继续增加控件超过这个数量,系统将拒绝执行添加操作。这表明,一个窗体单元的容量是有限制的。即:一个Form单元对象只给它的内部封装对象配置了28-1个栈空间,超过了这个栈数目,系统将拒绝接收。
窗体是设计人员进行用户界面设计和操作的主要舞台,在可视化应用程序设计中窗体相当一个放置其它对象的容器。
对于一个较大型的、设计对象内容较多的程序编写,在VB环境下设计,需要的控件数量相应也较多,否则将影响到目标产品的品质和用户的要求。但是较多地使用控件,会出现如笔者所遇到的问题。
作为容器的窗体,由于VB本身系统的原因,这个容器应该是有限量的。“254”这个值就是它的容量,它只能容纳254个控件。
如何解决问题,除优化设计对象的结构、流程以及采用多窗体设计外,在充分利用VB的环境中可以采取一些措施来回避上述问题。经过探索,可以采用以下一些措施来处理和解决问题。
2控件的复用技术
控件复用技术是指同一个控件在不同的程序执行阶段,发挥不同的功能作用而重复使用之。
2.1标签Label控件
用来当作如操作步骤和方法提示等的标签,可以集中在同一个标签中显示不同的文本内容达到目的。
例如,需要用户对各按钮根据程序所指示的某种顺序来进行操作或选择,不同的按钮需要提示给用户不同的操作信息或方法。那么,可以对相应的按钮建立“MouseMove”(鼠标移动)过程。当鼠标移动到不同的按钮上面时激发该过程,并在同一个标签上提示出相应的信息。这样,在同一个窗体中只要用一个标签就可以满足。那么,我们可以在窗体的运行界面上集中划定一个提示信息区,用一个或少量的标签来完成该功能。
还可以利用标签控件实现某些结果的输出,从而取代用文本框输出值。如在设计阶段定义的标签Label1的Capion属性为:“高速级齿轮齿数为:”,使用下列语句:
Label1.Caption=Label1.Cation & “Z1=” & str(z1) & “;Z2=” & str(z2)
其中:“Z1”和“Z2”分别为两个啮合齿轮的齿数变量。如果计算的齿数分别为:19和43,运行后的结果输出为:
“高速级齿轮齿数为:Z1=19;Z2=43”。这样可以节约3到4个控件数。
2.2按钮Button控件
利用按钮的“Caption”属性可以在程序中做某些顺序执行的操作。如:将按钮的“Caption”分别设置为“计算”和“确定”,就可以利用同一个按钮实现对计算值的计算和最终的确定等。图2为用该属性实现按钮控制驱动标签位置和内容变化的操作。
意在说明实现按钮和标签的复用之例。
该过程的代码如下:
2.3文本Text控件
文本控件在程序中主要用来表示接收用户的输入值或显示输出文本结果。在程序的运行中文本控件的执行通常是由包含在其它控件的驱动过程中激发的。因而,对于一些在程序运行过程中需要输出诸如中间量或参照值的结果,这些文本框可以充分地重复使用。
例如,我们利用两个按钮和一个文本框。一个按钮实现数据的数据输入,另一个按钮实现结果的输出;输入与输出结果都在同一个文本框中显示。其过程代码如下:
执行效果如图3所示。
上述所列仅是在程序设计中使用最多、最频繁的三个标准控件之例。限于篇幅,还有一些控件都能够进行复用,如图片PicturBox、图像Image控件等等。利用复用技术是解决控件限量的方法之一。只要适当地规划程序运行结构、时段、过程等,妥当地安排它们的位置、功能和作用就可以达到目的。
3组件技术
所谓“组件技术”,笔者在此意指在一个框架Frame内利用已经建立的控件创建控件数组。控件数组一般在如单选按钮、复选按钮中使用较多,其它控件也可以利用“复制-粘贴”的操作创建控件数组。当创建时系统作如图4的提示,回应时应选择“是”。注意不能在提示框中选择“否”,否则创建的不是控件组,而是独立的控件,这种情况将不会有效果。
创建的控件组名将以一个索引序列排列,设计时对应编写相应过程就能够达到与独立控件功能相同。
为了便于控件组的管理、使用,可以将部分功能相近的控件组创建在一个框架Frame控件内。目的有两个:一是使用、管理方便。在程序编写中需要经常调试某个过程,通过框架的使用便于大程序的定位;二是能够大量重复使用该性质的控件而不占用资源,达到节省控件、总量受限的目的。
需要说明,虽然尚不清楚原由,可以清楚的是通过在框架内建立的控件组比直接在窗体上用相同方法创建的控件组的量要多,且不受框架外控件总量的限制。具体数量尚待进一步研究。还要另外指出,如命令按钮等一些控件在形成组件后它们的驱动功能将有所改变,失去一些它们在单独使用中的一些功能。就命令按钮(“Command”控件)而言,如果复制成组后所给予它的驱动过程作用都是相同的。即不论激发该组中的哪个按钮,它的执行是同一个过程。这是因为在一组Command控件中,除了名称“Caption”属性不同外其它大多数属性都相同。这些控件使用成组时需要额外考虑它们的配置。
因此,在同一框架内创建控件数组的方法,是解决VB中控件数量限制的最有效办法之一。因为在同一个框架内,不论控件组中含有多少个控件(当然也不能突破254),在窗体Form中都将它们视作一个控件。
4使用内部函数进行输入输出
VB中有两个内部函数,即:InputBox()函数和MsgBox()函数。这两个函数类似于可视化控件在程序运行中实现数据的输入和输出,它们既具有控件的相似功能作用,而又不会占用控件数量资源。
4.1InputBox()函数
InputBox()函数的功能是在程序运行中根据需要接收键盘的数据输入。用该函数替代由文本框来输入数据。
4.2MsgBox()函数和MsgBox语句
MsgBox()函数和MsgBox语句是消息框,用于显示信息。MsgBox()函数和MsgBox语句使用时功能基本相同,但略有区别。利用它们可以在程序中用来取代其他控件显示某些计算数据的结果。特别是程序运行中的中间结果。
如果需要把输出数据确定或保存下来,我们使用MsgBox()函数;如果仅需某阶段性的数据提示,使用MsgBox语句即可。
5动态创建和删除控件方法
VB中利用它的类继承也可以在程序的运行中创建控件,同时在运行中删除控件。那么,利用这种方法同样可以达到当控件不足或受限时删除某些已经存在的控件,并与此同时建立新的需要的控件。这方面一些资料中有介绍。
不过,这种方法在一般设计中操作起来显得繁琐,需要大量编写语句来实现,但仅限于建立组件等。再一是对于目标比较明确的设计,所要创建的控件的某些属性设置在设计阶段比较容易确定,而运行中它们是隐含的不易确定。因此,用动态创建和删除的方法来克服控件数量限制对本文提到的问题不可取。
6结语
对于一些特定的设计对象,如笔者所设计的程序。既要操作方便、过程不间断,又要保持系统整体性、同一个界面能够统览全过程,势必会遇到需要使用过多的控件对象来满足设计的需求。
设计过程中向VB窗体添加控件总量受到限制,是一个不可忽视的问题。它确定存在,如果处理不妥将会给设计人员在设计中带来不必要的麻烦,可能会对设计导致前功尽弃的后果。特别是对初学者尤其要引起重视。
解决的方法也不只是文中提到的几种,还有许多其他的方法解决。如,在程序前期合理规划、构建设计流程;采用多窗体设计等等。
因此解决好此类问题,需要我们对VB这种设计语言以及可能遇到的问题作进一步深入地思考和探索。
摘要:利用VB进行程序设计时,离不开向窗体中添加必要的对象、控件或部件等。然而,一个VB窗体单元能容纳多少个控件,作为容器的窗体单元其容量是有限制的。就开发VB程序过程中向窗体加入控件时所遇到的数量限制的问题进行探讨,得出结论:一个窗体单元能容纳独立的控件的数量最多为254个。并对设计中遇到的控件数受限的情况,采用较为普通的、常用的技术和方法进行处理,提出了几项措施来解决添加控件受到数量限制的问题。
关键词:控件限量,对策,复用技术,组件技术
参考文献
[1]龚沛曾,陆慰民,杨志强.Visual Basic程序设计简明教程[M].2版.北京:高等教育出版社,2002.
[2]吴企渊,梁燕.计算机操作系统[M].2版.北京:清华大学出版社,2003.
[3]同志工作室.Visual Basic 6.0开发技巧与实例教程[M].北京:人民邮电出版社,2005.
[4]陈文平.弯曲内力图计算模型及程序的实现[J].科技创新导报,2007,33:39-40.
VB控件 篇8
1 运行环境
本文通过Visual Studio 2010的VB.NET访问数据库Sql Server 2008为例,重点说明Data Grid View控件的使用方法。因此,首先要在Windows系统上正确安装好Visual Studio 2010和Sql Server。
1.1 数据准备
打开SQL Server,服务器类型为数据库引擎,服务器名称为本地计算机名称,身份验证为Sql server身份验证,用户名和密码分别为sa和sa123。为了便于理解,现假设数据库文件名称和位置为 : c:Student Inf.mdf
该数据库中有一个名称为Grade的数据库表。表的内容如图1所示。
1.2 运行Visual Studio 2010
打开Visual Studio 2010,新建项目,名称设为“Student Info”(如果有公用模块,将该项目名称用作空间名称)。
1.3 界面设计
如图2所示,界面上有添加、修改、删除三个命令按钮,另包括5个文本框,一个显示表格的Data Grid View控件。
1.4 Class Form1代码
该工程只有一个窗体代码:
2 关键代码
通过修改data Grid View1中的数据来更新数据库中的内容,原理是通过student Inf Data Set将data Grid View1绑定到Grade1表,student Inf Data Set处于中间位置,所以在data Grid View1中修改的数据必须要传递到student Inf Data Set后才能改变数据库中的内容。
2.1“添加”按钮的click事件代码
连接本地SQL Server数据库有二种方式:一种是点击data Grid View1控件右上角的小三角形,创建对象连接,绑定'数据源,如图3所示。
另一种方法用连接字符串
例如,若要添加一行,学号为18,姓名为小李,分数都为90。则按F5运行以后,在文本框里输入,如下图4所示。
在5个文本框里内容分别输入后点“添加”按钮,结果如图5所示。
在Data Grid View1控件中已添加了第5行,表明添加成功。
2.2“更新”按钮的click事件代码
更新数据的功能,由选中行事件与单击“更新”按钮二个事件共同完成,代码如下:
2.2.1 Data Grid View1_Cell Click事件过程代码
2.2.2“更新”按钮的click事件代码
先选中任一行,使行内数据复制到对应的文本框,再在文本框内修改,最后点更新。
2.3“删除”按钮的click事件代码
再更新到数据库,否则只删除Data Set里的数据,而并没有真正删除。但限于篇幅,重新绑定数据库的代码省略。
Data Grid View控件还有很多相关属性设置:如选中整行;选择隐藏所选中的列或列头;禁止列高、行宽改变;或设列宽和行高的最小值;使用Read Only属性,设定单元格是否只读;是否显示最下面的新行;设定单元格的指定背景颜色等。
3 结束语
熟练掌握VB.NET技术,灵活运用Data Grid View控件,能轻松设计高效、稳定的数据库管理系统,并且利用资源共享和模块通用性的特点,使得数据库管理系统的应用日益广泛,与日新月异的计算机和网络技术发展相适应。
摘要:该文主要介绍了一种数据控件DataGridView,它是ADO.NET3.5中新增加的一种网格控件,能以表格的形式显示数据,在数据库的操作中会经常用到。该文阐述如何运用VB.net通过DataGridView控件操纵SQL Server数据库,从而为数据库管理系统的开发与应用提供方便。
VB控件 篇9
1 灯光照射效果的控件关系及界面设计
在vb中用shape控件实现字体的灯光照射效果界面设计时, 使用vb工具箱中提供的控件或根据自己的需要添加控件, 每个控件本身都有其自身的属性和方法。要用vb实现字体的灯光照射效果, 需要以下3个基本控件:标签、计时器和形状控件。
下面详细介绍vb是如何实现字体的灯光照射效果。
界面设计。添加基本控件, 该控件包括两个标签, 一个计时器和一个形状控件。
1.1 添加标签label
它的作用是在窗体的固定位置显示内容, 本例中的标签有两个:一个用于显示文字, 它的背景透明, 字体是黑色, 位于另一个标签上面;另一个用于控制灯光照射效果, 它的背景设置为黑色, 放在字体标签下面。为了使做出的效果好点, 将标签的left属性值设置为0, width属性值设为窗体的宽度。
1.2 添加形状控件shape
在Visual Basic6.0中, Shape控件提供了一种设计矩形、圆和其他形状的简单方法。在设计时, 通过修改shape控件的shape属性值, 可以实现矩形、正方形、椭圆形、圆形、圆角矩形及圆角正方形。在此设计中, 它是实现字体照射效果的关键移动控件。
1.3 添加计时器timer
注意该控件的enabled属性要设置成true, interval属性要赋值。该设计的所有程序通过在计时器的timer方法中, 编程来实现。在界面设计时, 注意几个控件之间的位置关系, 属性设置。最初的设计界面如图1所示。
2 程序设计
在编程时, 要设计出窗体级的开关变量f, 由它来控制shape控件的形状变化, 以便实现灯光照射的不同变化。当开关变量f=0时, 实现圆形照射效果;开关变量f=1时, 实现椭圆照射效果。具体实现的程序如图2所示。
3 结语
灯光照射效果可以通过很多种软件来实现, 并可以在现实中经常看到。本文主要通过vb来实现, 让大家对它有个初步地认识和了解, 在实现过程中, 要注意设计时的细节及控件之间的层次关系。
摘要:本文的灯光照射效果是通过visual basic中控件的配合使用实现。简单阐述了各控件的功能、配合关系及在实现中控件的层次关系。
关键词:vb,控件,灯光照射
参考文献
[1]崔武子界面设计与visual basic清华出版社2014