发信人: chenjz(不再哭傲江湖)
整理人: cobe(2001-01-19 09:20:17), 站内信件
|
通过实例学VB(一)
万众期待的“走近编程”终于出台啦!我们请了有软件开发经验的作者为大家写了学习教程,这些教程从基础出发,上手容易,为你拨开编程迷雾;我们的最终目的是让你通过对教程的学习,熟悉这种语言,并自己开发一个小软件,让你即刻就有成就感!
VB是由微软开发的一种基于Basic语法的快速程序开发工具,由于它掌握、使用起来十分快捷。同时又有许多厂家提供扩展控件,使得VB成为现在十分流行的编程爱好者的入门学习语言。作者将通过编写并一步步完善一个比较完整的文本编辑程序(类似UltraEdit)来介绍VB编程。
在文章开始之前,首先来说下文中的一些约定。VB的开发界面如图1所示。
点击开发界面中工程列表窗口上的“打开代码浏览窗口按钮”将打开窗口或者模块的代码编辑窗口,代码编辑窗口的界面如图2所示。
上面两个图片中对于开发界面的各个部分做了标记和说明。在下面的文章中将使用上面的说明。另外,对于点击菜单的操作,本文中将以“菜单|子菜单”的方式说明。例如点击“File”菜单,然后再点击“New Project”项,文章中将是“点击菜单File|NewProject”。
本文章中的程序段由VB6.0英文企业版(SP3)编写,在Win98、Win2000下运行通过。原则上也可以在VB5.0下运行,但是对于一些扩展控件(例如RichTextBox等)版本以及描述会有所不同。
本篇文章基本可以分为两大部分。在第一部分中。我们将建立一个基本的、类似于NotePad的编辑器,但是我们需要让这个编辑器可以实现同时显示、编辑多个文件。在这部分内,我们需要学习和掌握的是:窗体、MDI窗体;菜单;基本的文件操作以及程序设定等方面的问题。在第二部分中,我们将设法美化程序界面以及改进程序,以及介绍扩展控件(例如ToolBar、RichTextBox等)。以求让读者掌握这些控件的特性和使用方法。
好,下面正式开始我们的编程过程。首先建立一个新的标准工程。程序中会自动添加一个Form1窗体。在前面已经提到,我们的程序要实现能够同时编辑多个文件。这就要利用MDI(Muilt Document Interface)窗口功能了,很多的软件(象UtralEdit、PhotoShop等)都使用了MDI窗口,一个应用程序可以包含一个MDI主窗体作为程序背景和窗体容器,其中包含若干MDI子窗体。子窗体的范围在MDI窗体中。在VB中也提供了建立MDI窗体的功能。下面添加一个MDI窗体,点击菜单的“Project|Add MDI Form”项添加一个MDI窗体,然后在工程列表栏中选择Form1,将Form1的MDIChild属性设置为True。这样Form1窗体就成为MDIForm1的子窗体了。可以看到在工程列表窗口中Form1的图标发生了改变,说明Form1已经成为了子窗口,如图3所示,点击菜单“File|Save Project”保存工程,所有的窗体和工程文件都按照它们缺省的名称保存。然后点击菜单中的“Run|Start”项运行程序,看看MDI窗口的运行效果,如图4所示。
接下来要添加的是编辑对象,虽然VB中的标准控件中带了一个TextBox控件,但是由于它的一些限制,我们将不使用它而使用另外一个可以作为文本编辑的控件:RichTextBox(以下简称RTF)控件。该控件支持显示大于64k的文本,能直接装载文件,并能在控件内同时显示不同颜色的文本,如果需要的话,可以实现象UltraEdit那样的分色显示关键字。
点击菜单中的“Project|Components”项打开控件列表窗口。在控件列表框中选中Microsoft RichTextBox Control 6.0项(也可能是5.0,依据你的VB版本而定)。然后按确定键将RichTextox控件添加到工程中。可以看到控件栏中增加了一个RTF控件按钮(如图5所示),在工程列表窗口中双击打开Form1窗体,然后双击控件栏中的RTF控件按钮添加RTF控件到Form1。控件Name属性为RichTextBox1,将控件的ScrollBars属性设置为3。由于在实际使用中,Form1只是一个编辑窗口,所以我们需要将RTF填充整个Form1窗体。首先需要在属性编辑窗口中将RichTextBox1的Left属性和Top属性都设置为0以使RTF控件对齐窗体的左上角。然后双击Form1窗体打开Form1的代码编辑窗口。在 Form1的Resize 事件中添加如下代码:
With RichTextBox1
.Width=Me.ScaleWidth
.Height=Me.ScaleHeight
End With
如果要在代码窗口中选择对象的事件,只要在对象选择下拉框中选择对象,再在事件、子程序选择下拉框中选择事件就可以了,例如上面当选择了“对象选择下拉框”中Form1和事件、子程序选择下拉框中Resize后, 在代码窗口中会出现两行:
Private Sub Form_Resize()
End Sub
这就是Form1_Resize事件的代码框架。只要将上面的代码添加到这两行之间就可以了下面文章中的向XXX的YYY事件中添加代码都是这样操作的。如果下面提到 "添加代码到通用区域" 就是指这样的操作:点击 对象选择下拉框 中的(General),然后再敲入代码。
Resize事件在窗体的尺寸被改变时产生。在上面的代码中,我们设置RichTextBox1的尺寸同窗体的尺寸一致。在Windows控件中有Width、Height属性和ScaleWidth、ScaleHeight两类属性。其中Width、Height属性标识控件的外部宽度和高度,而ScaleWidth、ScaleHeight标识控件内部可用的宽度和高度。所以在上面使用ScaleWidth、ScaleHeight而不是Width、Height。
技巧与提示:如何加入控件到窗体以及改变大小
一般的方法是通过点击控件栏中的控件按钮然后在窗体上拖放鼠标的方式来添加控件。另外你也可以直接双击控件按钮将控件添加到窗体中。
如果要改变窗体中的控件尺寸,你可以点击控件,然后拖动控件周围出现的8个小蓝块来改变尺寸,也可以通过按Ctrl键不放,再按上下左右方向键来精确改变控件尺寸。如果按Shift键不放,按上下左右方向键可以精确的移动控件。
另外,Form对象还有以下的一些主要属性和事件:
BorderStyle属性:通过该属性可以改变Form的边框结构,它可以取的值以及含义见表:
对于一个MDI子窗口,它的BorderStyle属性只能设置为2,否则窗体将不会在MDI窗体中显示出来。
Controls属性
Controls属性定义了一个控件集合,该集合包含了窗体中的所有控件,也就是说,通过访问Controls属性就可以访问到窗体中的全部控件。例如下面的语句:
For i=0 To Me.Controls.Count-1
Debug.Print Me.Controls(i).Name
Next I
将把窗体中存在的所有控件的名称在Debug窗口中输出。在后面的程序中,对Controls属性将有详细的介绍和使用。
Height、Width属性
顾名思义,这两个属性是分别设置对象的高度和宽度的,不仅仅是Form对象,其它对象的高度和宽度也有该属性决定。如果你点击控件属性栏中的Height项或Width项时,会发现它们的值很大,一般都在数千,但是我们的屏幕分辨率只有1024*768 ,这是怎么回事呢?因为在VB中,缺省的控件尺寸和位置计量单位是Twips而不是像素(Pixel)。(上接三十四版)
在一般情况下,屏幕上一个像素相当于15个Twips。不过你也可以将Form对象的ScaleMode属性设置为3-Pixel以像素方式显示高宽值。
Icon属性
Icon属性定义窗体图标,如果你需要改变Form窗体标题栏中的缺省图标,就需要在控件属性栏中选择该项。然后在再点击该栏中右边的小按钮,然后在打开的图标文件对话框中选择磁盘中的一个图标作为form窗体图标。
MouseIcon、MousePoint属性
MousePoint属性定义Form当光标位于Form上时光标指针的形状,缺省的值为0-Default即指向左上访的标准箭头形光标。你还可以在MousePoint属性中选择指向右上方的箭头光标、沙漏形光标等15种光标。如果你想使用自己建立的光标,只需要将MousePoint属性设置为99-Custom ,然后在MouseIcon属性栏中选择磁盘中的图标文件或者光标文件作为Form的光标。选择的方法同选择Icon属性一样。
Visible属性
控制控件是否可见,如果为True控件可见,False则控件不可见。
WindowState属性
该属性决定运行时窗体的可视状态。缺省为0-Normal ,即以正常大小显示窗体。你也可以设置为 1-Minmized 2-Maximized,它们分别指定窗体缩小为图标或者扩充到最大(相当于点击窗体右上方的最大、最小化按钮)。
Load事件
该事件在窗体装载时发生,一般在Load事件中可以添加一些程序界面初始化的工作,比如设置窗体状态、读取设置操作等。下面的代码就使Form1在启动时最大化:
Private Sub Form_Load()
Form1.WindowState=2
End Sub
Form对象中还有一个Initialize事件,该事件在程序创建Form对象(还没有装载)时发生。该事件发生在Load事件前。
Unload事件
事件的语法如下:Private Sub object_Unload(cancel As Integer)
该事件在窗体被卸载时发生,我们可以在该事件中编写代码来做一些保存工作。例如提醒用户保存文件、保存设置、删除临时文件等。如果将将参数cancel设置为任何一个非零的值可防止窗体被删除。
好,本篇文章到这里就结束了,在下一篇内,我们将向窗体上添加菜单,同时向程序中添加打开、保存文件的功能。下星期见!
本章功课:熟悉Form窗体对象,包括练习设定窗体的边框、设定窗体的标题、图标、光标形状等。利用其他软件建立图标并将Form1和MDIForm1的图标改变成为自建图标。(长沙 陈锐)
---- 我能翻译善写作熟电脑会说话可是为什么没工作?
|
|