正文

VB基础篇2005-11-15 00:39:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/0ga0/6954.html

分享到:

  第二部分 VB基础篇 VB入门 Visual Basic 是 Microsoft Studio 6 的一部分,Visual Basic 有不同的版本,目前的常用版本是6.0。Microsoft 面向中国大陆推出全汉化版的中文 Visual Basic 是我们这个教程使用的基本编程工具,Visual Basic 6.0 本身也有不同的版本,从学习版(Learning edition)、专业版(Professional edition)到企业版(Enterprise edition)含概的功能逐渐增强。除特殊说明外,教程中的示例都将以中文 Visual Basic 6.0 企业版为平台进行分析与讲述。 Visual是“可视化”的意思,Basic是指传统的结构化程序设计语言。Visual Basic就是沿袭了Basic的一些语法,增加了面向对象的特性,增强了很多可视化编程的技术的一种基于对象的编程语言。Visual Basic源于Basic,但功能远远超出了传统Basic,是当今广为流行,容易学习,而且功能强大的软件开发工具。 Visual Basic的功能强大还体现在VBA(Visual Basic for Application)和VB Script上。VB Script是在网站编程上较为流行的一种脚本语言,VBA是微软Office套件的通用宏控制语言,其它的流行软件如AutoCAD也增加了对VBA的支持。Visual Basic6.0在本书中,简称为VB。 一、VB的安装 要使用VB,你首先需要使用安装程序进行安装。VB 对安装的计算机有以下要求: VB对硬件的要求是:486或更高的处理器;如果全部安装至少需要80M硬空间;当然还要一个CDROM;Microsoft windows支持VGA或更高分辨率的显示器、鼠标或其它定点设备;至少16M内存。 对软件环境要求是: Microsoft Windws 95 及更高版本,或者是 Microsoft Windws NT SP3.51 或更高版本,安装VB前必须先行安装好 Internet Explorer4.01(IE4.01),除非你的机器上已经有了IE的更高版本。 如果你的计算机软硬件都符合要求就可启动 Windows ,运行VB 的安装程序setup.exe开始安装了。 对于初学VB编程的朋友来说,安装VB时我们只管一路回车,完全按安装程序的默认值安装,安装程序就会将VB基本组件安装好。 如果你将来需要扩展组件,只需重新运行安装程序,从增加、删除组件对话框中选择添加即可。 好了,VB安装完成了,运行开始菜单中的Microsoft Visual Basic 6.0 中文版之下的“Microsoft Visual Basic 6.0 中文版”,就可以进入VB开发环境了。 二、IDE环境 图1-1 VB IDE环境 2.1 VB可生成的应用程序类型 标准EXE:创建一个标准的可执行文件。 ActiveX EXE:创建一个ActiveX可执行文件。 ActiveX DLL:创建一个ActiveX DLL文件。这种文件与ActiveX EXE功能上是相同的,只是包装不同。 ActiveX控件:创建一个ActiveX控件。 ActiveX文档EXE ActiveX 文档DLL:ActiveX文档实际上是可以在支持超连接的容器中运行的VB应用程序。这个环境可能就是一个Web浏览器,如IE。 VB应用程序向导:这个向导可以帮助用户建立新的应用程序框架。用户在开发自己的工程时可能要使用到。但是修改向导生成的框架代码与从头开始编写应用程序相比,即使不会更加费劲,也决不会轻松到哪儿去。 ADDIN:建立自定义的VB IDE外接程序。 Data工程:创建一个数据工程。 DHTML应用程序:创建一个DHTML应用程序。 IIS应用程序:创建一个IIS应用程序。 2.2 菜单栏、工具栏和工具箱 菜单栏包含使用VB所需要的命令。工具栏在编程环境下提供对于常用命令的快速访问。工具箱提供一组工具,用于设计时在窗体中放置控件生成应用程序的用户接口。 2.3 工程资源管理器、属性窗口和窗体布局窗口 工程是指用于创建一个应用程序的文件集合。工程资源管理器列出了当前工程中的窗体和模块。在工程资源管理器窗口中有3个按钮,分别表示“查看代码”、“查看对象”和“切换文件夹”。选择“查看代码”按钮可以查看与当前选定的对象相关的代码;选择“查看对象”按钮可以在“窗体设计器”中显示选定的对象外观;选择“切换文件夹”按钮则可以切换文件夹的显示方式。 属性是指对象的特征,如大小、标题或颜色。属性窗口列出了对选定窗体和控件的属性设置值。 窗体布局窗口允许使用表示屏幕的小图像来布置应用程序中各窗体的位置。这个窗体在多窗体应用程序中很有用,因为这可以指定每个窗体相对于主窗体的位置。 2.4 窗体设计器和代码编辑器窗口 窗体设计器是屏幕中央的主窗口,它可以作为自定义窗口来设计应用程序的界面。用户可以在窗体中添加控件、图形和图片来创建所希望的外观。 代码编辑器是输入应用程序代码的编辑器。应用程序的每个窗体或代码模块都有一个单独的代码编辑器窗口。   三、VB程序的设计步骤 在VB中创建应用程序的主要任务是设计界面和编写代码,一般包括创建界面、设置属性和编写代码三个主要步骤。 1. 新建或打开工程 第一次创建VB应用程序时,选择“新建”工程,以后就可以使用“打开”工程了。 2. 添加窗体和控件 3. 设置属性 步骤2和3主要完成设计界面的任务。对于一个应用程序来说,大部分的界面设计工作主要靠这种可视化的设计完成,其它的细节通过后面的编码来补充。 4. 编写过程 编写事件过程,用户过程和函数。 5. 编译、运行和调试 这是一个多次、反复的工作。 6. 保存工程 这需要随时进行,否则你的心血可能付之东流。 注意:保存时,一定要建好自己的目录结构,将所有文件保存在自己的目录中。不要随意保存,最后自己也不知到文件到底去了哪里,这是初学者很容易犯的问题。 第一次保存时,会遇到如下的对话框,这是问你是否需要对你的应用程序源代码进行控制,一般我们选择“No”就行了。 7. 生成可执行文件 为了脱离VB编程环境运行你的应用程序,需要将你的工程文件生成可执行文件。然后通过打包程序,作成安装文件,在目标机器上安装。   四、基本概念 与任何现代编程语言一样,Visual Basic 支持许多公共的编程结构和语言元素。Visual Basic 是一种基于对象的编程语言。由于很少接触对象,许多程序员可能都感到对象不易接受。但不必过虑:不管是否意识到这一点,人们一生中的大部分时间其实都在和对象打交道。一旦了解一些基本概念就会知道,对象实际上使编程变得比以往任何时候都容易。如果曾经使用过其它语言编写程序,那么,本章许多内容应已不陌生。尽管 Visual Basic 的大部分构造与其它语言类似,但其事件驱动特性却带来一些微妙差别。试以开放心态研究这些内容;一旦搞明白这些差别,就能更充分地利用它们。 4.1 Windows的工作方式:窗口、事件和消息 Windows的工作机制,简单的说就是三个关键的概念:窗口、事件和消息。 我们不妨简单的将窗口看作带有边界的矩形区域,如:“资源管理器”窗口、文字处理程序中的文档窗口。除了这些最普通的窗口外,实际上还有许多其它类型的窗口,命令按钮是一个窗口。图标、文本框、选项按钮和菜单条也都是窗口。 Microsoft Windows操作系统通过给每一个窗口指定一个唯一的标示号(窗口句柄或hWnd)来管理所有的窗口。操作系统连续的监视每一个窗口的活动或事件的信号。事件可以通过诸如单击鼠标或按下按健的操作而产生,也可以通过程序的控制而产生,甚至可以由另一个窗口的操作而产生。 每发生一次事件,将引发一条消息发送至操作系统。操作系统处理该消息并广播给其它窗口。然后,每一个窗口才能根据自身处理该条消息的指令而采取适当的操作(例如,当窗口解除了其它窗口的覆盖时,重显自身窗口)。 可以想象,处理各种窗口、事件和消息的所有可能的组合将有惊人的工作量。幸运的是,VB使你摆脱了所有的低层消息处理。许多消息由VB自动处理了,其它的行为事件过程由编程者自行处理,就这样可以快速创建强大的应用程序而毋须涉及不必要的细节。 4.2 可视设计,事件驱动编程   要设计应用程序的用户接口,只要知道控件的基本情况和具有基本绘图能力。而应用程序的编程要复杂些,但只要基本概念清晰,也就容易掌握了。VB应用程序不同于其它语言开发的单一性程序。使用VB编程时,必须首先确定应用程序如何与用户交互,如鼠标单击、键盘输入等等,用户必须编写代码控制这些事件的响应方法。这就是所谓的事件驱动式编程,因为应用程序并不决定程序流程,而是由用户确定的事件决定应用程序的流程。应用程序编写者要编制响应各种外部条件的应用程序,而用户的操作决定程序流程。 1. 可视设计   窗体和控件是任何Windows应用程序用户接口的基本元素。在VB中,这些元素称为对象。对象具有属性和方法,并响应外部事件。通常,属性是在建立对象时设置。大多数控件属性是在对象生成时设置的,但以后可以赋予新值更改属性。用户可以在设计时通过属性窗口或运行时通过代码改变属性。   VB对于放置在窗体上的每个新控件赋予缺省属性。例如,缺省的Name属性是控件名加一个序号(如Command1、Command2),大多数控件的背景颜色为灰色或白色。用户可以在属性窗口检查新建控件的属性值。   VB对于放置在窗体上的每个新控件赋予缺省属性,有些属性在设计时提供,而有些属性则只能在运行时提供。例如,设计时不能在列表框控件中Text,因为这时控件是空的,它要在应用程序启动时由VB语句提供。因此,列表框控件的Text属性在设计时没有意义,而在运行时则是列表框控件的最重要的属性。反之,文本框控件的MultiLine属性只能在设计时设置,不能在运行时改变。 2. 事件驱动应用程序的工作方式   我们已经知道事件是窗体或控件识别的行为和动作。在响应事件时,事件驱动应用程序会执行Basic代码。VB的每一个窗体和控件都有一个预定义的事件集。如果其中有一个事件发生,而且,在关联的事件过程中存在代码,则VB将调用该代码。   尽管VB中的对象自动识别预定义的事件集,但要判定它们是否响应具体事件以及如何响应具体事件则是编程的责任了。代码部分(即事件过程)与每个事件对应。想让控件响应事件时,则可以把代码写入这个事件的事件过程之中。   对象所识别的事件类型多种多样,但多数类型事件为大多数控件所共有。例如,大多数对象都能识别Click事件:如果单击窗体,则执行窗体的单击事件过程中的代码;如果单击命令按钮,则执行命令按钮的Click事件过程中的代码。但是,每种情况中的实际代码几乎完全不一样。   这里是事件驱动应用程序中的典型事件序列: a. 启动应用程序,装载和显示窗体。 b. 窗体或窗体上的控件接受事件。事件可由用户引发(例如键盘操作),也可由系统引发(例如定时器事件),还可由代码间接引发(例如,当代码装载窗体时的Load事件)。 c. 如果在相应的事件过程中存在代码,就执行代码。 d. 然后,应用程序等待下一次事件。 注意 许多事件伴随其它事件发生。例如,在 DblClick 事件发生时,MouseDown、MouseUp 和 Click 事件也会发生。 4.3 对象、属性、方法 1. 对象是什么? 对象是代码和数据的组合,可以作为一个单位来处理。对象可以是应用程序的一部分,比如可以是控件或窗体,整个应用程序也是一个对象。 2. 对象从何而来 Visual Basic 中的每个对象都是用类定义的。用饼干模子和饼干之间的关系作比喻,就会明白对象和它的类之间的关系。饼干模子是类。它确定了每块饼干的特征,比如大小和形状。用类创建对象。对象就是饼干。下面再用两个例子进一步说明 Visual Basic 中类与对象之间的关系。 在 Visual Basic 的“工具箱”上,控件代表类。直到在窗体上画出这些被称作控件的对象为止,它们实际上并不存在。在创建控件之时也就是在复制控件类,或建立控件类的实例。这个类实例就是应用程序中引用的对象。 在设计时操作的窗体是类。在运行时,Visual Basic 建立窗体的类实例。“属性”窗口显示Visual Basic应用程序中的对象的类和Name属性, 把对象看作是类的原原本本的复制品,从而建立所有对象。一旦它们以单个对象的形式存在,属性就可改变。例如,如果在窗体上画了三个命令按钮,则每个命令按钮对象都是命令按钮类的实例。 每个对象都具有一组由类定义的公共的特征和功能(属性、方法和事件)。但是,每个对象都有自己的名字,都能分别设置成有效或无效,都能放在窗体的不同位置,等等。 3. 使用对象初步 Visual Basic 对象支持属性、方法和事件。在 Visual Basic 中,称对象的数据(设置和属性)为属性,称各种可在对象上操作的过程为方法。事件是可被对象识别的动作,例如单击鼠标和按下键盘键,还可编写代码来响应事件。改变对象的属性就可改变对象的特性。用收音机打比方,收音机的一个属性是音量。用 Visual Basic 的行话来说,就是收音机有个“Volume”属性,改变其值就可调节音量大小。假定收音机的音量值可设置在 0 到 10 之间。 如果能够通过 Visual Basic 控制收音机,则可在一个过程中写代码,把“Volume”属性值从 3 提高到 5,使声音更响一些: Radio.Volume = 5 除了属性以外,对象还有方法。方法和属性都是对象的一部分。一般说来,方法就是要执行的动作,而属性就是要设置或检索的特性。以拨号打电话为例。可以说电话有一个“拨号”方法,拨一个10位电话号码的语法就是: Phone.Dial 02227406820 对象还有事件。当对象的某方面有变动时就触发了事件。例如,收音机可能有“VolumeChange”事件。电话可能有“Ring”事件,等等。 4. 用属性控制对象 个别属性随着可以设置和取得它们的值的时间不同而不同。有的属性可在设计时设置。可在“属性”窗口设置这些属性的值而无需编写任何代码。而有的属性在设计时是不可用的;因此,这些属性只有通过代码在运行时设置。在运行时可以设置并可获得值的属性叫做读写属性。在运行时只能读取的属性叫做只读属性。设置属性值在想改变对象的外观或特性时设置属性的值。例如,通过改变 TextBox 控件的 Text 属性,就可以改变文本框的内容。用下列语法设置属性值: object.property = expression 4.4 控件和焦点 1. 控件 可放置在窗体上的对象,其中有它自己的属性、方法、事件。可用控件来接收用户的输入、显示输出、触发事件过程。可用方法操作大部分控件。有一些控件为交互作用式的 (响应用户动作 ),而有些则为静态的 ( 仅能用代码访问 )。 2. 焦点 焦点是在任何时间接收鼠标单击或键盘输入的能力。在 Microsoft Windows 环境中,在同一时间只有一个窗口、窗体或控件具有这种能力。“具有焦点”的对象通常会以突出显示标题或标题栏来表示。用户或应用程序可设置焦点。   五、实例 5.1 登录窗体 一般的应用程序都有一个登录窗体,该窗体需要输入用户名和密码,用来对用户的身份及权限进行识别。 图1-2 登录窗体 1. 属性设置 控件 Name属性 Caption属性 Text属性 CommandButton cmdOK 确定(&O)   CommandButton cmdExit 取消(&C)   Label lblName 用户名   Label lblPass 密码   TextBox txtName     TextBox txtPass     2.代码 Private Sub Form_Load() Me.Left = (Screen.Width - Me.Width) / 2 '使窗体居中 Me.Top = (Screen.Height - Me.Height) / 2 Me.Picture = LoadPicture(App.Path + "\imagefile\denglu.jpg") '加载图片 End Sub Private Sub cmdOK_Click() Dim sRespond As String If Trim(txtName.Text) <> "dxp" Or Trim(txtPass.Text) <> "dxp" Then sRespond = MsgBox("您的输入有误", 5, "警告") If sRespond = vbRetry Then txtName.Text = "" txtPass.Text = "" txtName.SetFocus End If Else frmMain.Show End If End Sub Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then 'Enter键替代Tab键 KeyAscii = 0 SendKeys "{TAB}" End If End Sub Private Sub cmdExit_Click() End End Sub 注意 a. 用户在界面操作中习惯于用回车表示结束当前输入,转到下一个输入框或列表框上。但是在Windows中这样的操作默认是由Tab键完成的,所以用户使用起来非常不方便,于是用Enter键替代Tab键就成了一个编程必须考虑的问题。 b. VB中提供一个通过关键字 App 访问的全局对象。它指定如下信息:应用程序的标题、版本信息、可执行文件和帮助文件的路径及名称以及是否运行前一个应用程序的实例。可利用 App.Path 读取应用程序所在目录。 5.2 调整大小、移动、对齐和锁定控件 在绘制控件时,出现在控件四周的小矩形框称作尺寸句柄,下一步可用这些尺寸句柄调节控件尺寸,也可用鼠标、键盘和菜单命令移动控件、锁定和解锁控件位置以及调节控件位置。 执行以下步骤可以调整控件的尺寸: a. 用鼠标单击要调整尺寸的控件,选定的控件上会出现尺寸句柄。 b. 将鼠标指针定位到尺寸句柄上,拖动该尺寸句柄直到控件达到所希望的大小为止。角上的尺寸句柄可以调整控件水平和垂直方向的大小,而边上的尺寸句柄调整控件一个方向的大小。 c. 释放鼠标按钮,或用Shift键加上箭头键调整选定控件的尺寸。 你还可以用鼠标把窗体上的控件拖动到一新位置,或用“属性”窗口改变Top和Left属性。选定控件后,可用Ctrl键加箭头键每次移动一个网格单元。如果该网格关闭,控件每次移动一个像素。 选定多个控件后,可用“格式”菜单中的“对齐”、“同一尺寸”、“水平间距”和“垂直间距”菜单项下的子菜单来对控件的位置进行调节。 “锁定控件”命令(“格式”菜单)在窗体上锁定当前位置的所有控件,这样当它们处于指定位置时就不会由于疏忽而被移动。因为“锁定控件”命令基于窗体而起作用,它仅锁定选定窗体上的控件,而不影响其它窗体上的控件。Visual Basic 跟踪哪个窗体锁定了控件,哪个没有锁定。当窗体的控件被锁定时,锁定控件的命令工具栏按钮变灰。这是一个切换命令,因此也可用来解锁控件位置。 5.3 窗体事件 窗体事件是编程的基础。其顺序可用如下的代码来测试。 Private Sub Form_Initialize() MsgBox "initialize" End Sub Private Sub Form_Load() MsgBox "load" End Sub Private Sub Form_Resize() MsgBox "resize" End Sub Private Sub Form_Paint() MsgBox "paint" End Sub Private Sub Form_Activate() MsgBox "activate" End Sub Private Sub Form_Deactivate() MsgBox "deactivate" End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) MsgBox "queryUnload" End Sub Private Sub Form_Unload(Cancel As Integer) MsgBox "unload" End Sub Private Sub Form_Terminate() MsgBox "terminate" End Sub 5.4 文件管理 图1-3 文件管理 Private Sub dirTest_Change() filTest.Path = dirTest.Path End Sub Private Sub driTest_Change() dirTest.Path = driTest.Drive End Sub 5.5 ProgressBar、Scroll控件 Private Sub Form_Load() prgBTest.Visible = False tmrTest.Interval = 1000 prgBTest.Max = 10 'Timer 将运行 10 秒钟。 End Sub Private Sub cmdBegin_Click() prgBTest.Visible = True tmrTest.Enabled = True End Sub Private Sub tmrTest_Timer() Static iTime As Integer '声明静态变量。 '第一次执行时,该变量应为空值。 '如果它是空变量,将其设置为 1。 If IsEmpty(iTime) Then iTime = 1 prgBTest.Value = iTime '更新 ProgressBar。 If iTime = prgBTest.Max Then 'tmrTest.Interval = 0 '0 (缺省值)使 Timer 控件无效 tmrTest.Enabled = False prgBTest.Visible = False iTime = 1 prgBTest.Value = prgBTest.Min cmdBegin.Caption = "演示完毕" Else iTime = iTime + 1 End If End Sub Private Sub Form_Load() hsclTest.Max = 100 ' 设置最大值. hsclTest.LargeChange = 20 ' 敲击 5 次后穿过. hsclTest.SmallChange = 5 ' 敲击 20 次后穿过. hsclTest.Left = 0 ' 图形从左边开始. picTest.BackColor = QBColor(3) ' 设置图形框的颜色. End Sub Private Sub hsclTest_Change() ' 按照滚动条移动图形. picTest.Left = (hsclTest.Value / 100) * ScaleWidth End Sub 5.6 生成可执行文件 当工程的所有文件都编完后,就可以把它们编译成为可执行文件,使这个工程就像平时使用的一切应用程序一样。用鼠标单击工程图标就可以直接开始程序的运行了。 六、Visual Basic 应用程序的结构 一个应用程序实际上无非是指挥计算机完成任务的指令集。应用程序的结构是组织指令的方法,也就是指令存放的位置和指令的执行顺序。对于只有一行的代码来说,组织结构并不十分重要。但应用程序越复杂,对组织或结构的要求也就越明显。试想一下,如果允许应用程序以随机顺序去执行,那将会带来什么样的混乱。除了对应用程序的执行进行控制外,如何在应用程序中轻松查找特定指令,结构也起着很重要的作用。由于 Visual Basic 应用程序是基于对象的,所以应用程序的代码结构就是该程序在屏幕上物理表示的模型。根据定义,对象包含数据和代码。在屏幕上看到的窗体代表属性,这些属性定义了窗体的外观和内在特性。应用程序中的每个窗体都有一个包含其代码的相关的窗体模块(文件扩展名为 .frm)。每个窗体模块都包含事件过程,即代码部分,其中有为响应特定事件而执行的指令。窗体可包含控件。在窗体模块中,对窗体上的每个控件都有一个对应的事件过程集。除了事件过程,窗体模块还可包含通用过程,它对来自任何事件过程的调用都作出响应。可将那些与特定窗体或控件无关的代码放入另一类型的模块&#0;&#0;标准模块(文件扩展名为 .BAS )中。一个过程可能用来响应几个不同对象中的事件,应该将这个过程放在标准模块中,而不应在每一个对象的事件过程中重复相同的代码。用类模块(文件扩展名为 .CLS )创建对象,这些对象可被应用程序内的过程调用。标准模块只包含代码,而类模块既包含代码又包含数据,可视为没有物理表示的控件。 如上所述,VB代码存储在模块中,模块有三种类型:窗体模块,标准模块,类模块。窗体模块(.frm)是大多数VB应用程序的基础。标准模块(.bas)是应用程序内其它模块访问的过程和声明的容器。在VB中类模块(.cls)是面向对象编程的基础。可在类模块中编写代码建立新对象。这些新对象可以包含自定义的属性和方法。 除了这些模块文件外,Microsoft Visual Basic 在设计和运行时还利用和创建一些文件。工程或应用程序需要哪些文件取决于它的范围和功能, Visual Basic中用到的文件分类如下:设计时文件、杂项开发文件和运行时文件。 设计时文件是工程的建造块:例如基本模块 (.bas) 和窗体模块 (.frm)。 杂项文件是由 Visual Basic 开发环境中的各种不同的进程和函数产生的:例如打包和展开向导从属文件 (.dep)。开发应用程序时会产生各种设计时文件和其它杂项文件,如下表所列: 扩展名 描述 .bas 基本模块 .cls 类模块 .ctl 用户控件文件 .ctx 用户控件的二进制文件 .dca 活动的设计器的高速缓存 .ddf 打包和展开向导 CAB 信息文件 .dep 打包和展开向导从属文件 .dob ActiveX 文档窗体文件 .dox ActiveX 文档二进制窗体文件 .dsr 活动的设计器文件 .dsx 活动的设计器的二进制文件 .dws 部署向导脚本文件 .frm 窗体文件 .frx 二进制窗体文件 .log 加载错误的日志文件 .oca 控件类型库缓存文件 .pag 属性页文件 .pgx 二进制属性页文件 .res 资源文件 .tlb 远程自动化类型库文件 .vbg Visual Basic 组工程文件 .vbl 控件许可文件 .vbp Visual Basic 工程文件 .vbr 远程自动化注册文件 .vbw Visual Basic 工程工作空间文件 .vbz 向导发射文件 .wct WebClass HTML 模板 运行时文件 编译应用程序时,所有必须的设计时文件都被包括在运行时可执行文件中,运行时文件在下表中列出: 扩展名 描述 .dll 运行中的 ActiveX 部件 .exe 可执行文件或 ActiveX 部件 .ocx ActiveX 控件 .vbd ActiveX 文档状态文件 .wct WebClass HTML 模板 七、代码编写机制 在着手编写代码之前,了解VB编写代码的机制是很重要的。和任何编程语言一样,VB有自身的组织、编辑和格式化代码规则。 1. 代码模块 VB的代码存储在模块中。模块有三种类型:窗体、标准和类。简单的应用程序可以只有一个窗体,应用程序的所有代码都驻留在窗体模块中。而当应用程序庞大复杂时,就要另加窗体。最终可能会发现在几个窗体中都有要执行的公共代码。因为不希望在两个窗体中重复代码,所以要创建一个独立模块,它包含实现公共代码的过程。独立模块应为标准模块。此后可以建立一个包含共享过程的模块库。每个标准模块、类模块和窗体模块都可包含: 声明:可将常数、类型、变量和动态链接库 (DLL) 过程的声明放在窗体、类或标准模块的模块级。 过程:Sub、Function 或者 Property 过程包含可以作为单元来执行的代码片段。 2. 窗体模块 窗体模块(文件扩展名为 .FRM )是大多数 VB 应用程序的基础。窗体模块可以包含处理事件的过程、通用过程以及变量、常数、类型和外部过程的窗体级声明。如果要在文本编辑器中观察窗体模块,则还会看到窗体及其控件的描述,包括它们的属性设置值。写入窗体模块的代码是该窗体所属的具体应用程序专用的;它也可以引用该应用程序内的其它窗体或对象。 3. 标准模块 标准模块(文件扩展名为 .BAS)是应用程序内其它模块访问的过程和声明的容器。它们可以包含变量、常数、类型、外部过程和全局过程的全局(在整个应用程序范围内有效的)声明或模块级声明。写入标准模块的代码不必绑在特定的应用程序上;如果能够注意不用名称引用窗体和控件,则在许多不同的应用程序中可以重用标准模块。 4. 类模块 在 VB 中类模块(文件扩展名为 .CLS)是面向对象编程的基础。可在类模块中编写代码建立新对象。这些新对象可以包含自定义的属性和方法。实际上,窗体正是这样一种类模块,在其上可安放控件,可显示窗体窗口。 注意 VB 的专业版和企业版也包含 ActiveX 文档、ActiveX 设计器和用户控件。它们引入了具有不同文件扩展名的新模块类型。从编写代码的角度来看,这些模块应视同为窗体模块。       窗体和命令按钮 一、窗体 1. 窗体简介 窗体是VB应用程序的基本构造模块,是用户运行应用程序的界面。 2. 属性 1)名称 Name:用于设置对象的名字 2)背景颜色 Backcolor:用于设置对象的背景颜色 设置颜色的3种方法: A 利用RGB函数表达颜色,取值范围为0-255: 混合颜色=RGB(红色值,绿色值,蓝色值) B 利用Qbcolor函数表达颜色,取值为0-15: 颜色=Qbcolor(颜色值) C 颜色直接表达法,每种颜色取值范围为00-FF: 颜色=&HBBGGRR 3)外观风格Borderstyle:设置窗体的边框风格 属性设置值 对应的窗体风格 0—none 无边界、无标题条、无控制菜单及最大最小和关闭按钮 1—Fixed single 边界固定,大小不可调,有标题条、控制菜单框及关闭按钮 2—Sizable(默认值) 窗体边界大小可调,有标题条及所有控制按钮和控制菜单框 3—Fixed dialog 窗体边界不可调,有标题条和关闭按钮以及控制菜单框 4—Fixed toolwindow 窗体边界不可调,有标题条和关闭按钮,无控制菜单框 5-Sizable toolwindow 窗体边界大小可调,有标题条和关闭按钮,无控制菜单框 4)标题 Caption:设置或返回标题栏中所显示的文本信息 5)坐标位置 Currentx Currenty:设置或返回下一次打印或绘图的水平和垂直位置 6)是否可用 Enabled:设置或返回一个逻辑值,以决定控件是否可用 true false 7)字体 Font:设置显示文件的字体、样式、大小及效果 8)前景色(窗体文字颜色) Forecolor:设置窗体中显示的文本颜色 9)位置 Left Top Width Height:设置窗体在屏幕中显示位置和大小 10)图标 Icon:设置窗体最小化时的示意图标 Form1.Icon=Loadpicture(图标文件名及路径) 11)移动 Moveable:设置窗体是否可以移动 true false 12)图形 Picture:设置窗体中显示的图形 Form1. Picture =Loadpicture(图标文件名及路径) 13)起始位置 Startposition:设置窗体启动时所出现的位置 属性设置值 相应功能 0 没有指定初始设置值,由窗体的Left、Top决定 1 用户窗体所属的项目中央 2 屏幕中央 3 屏幕的左上角 14)可见 Visible:设置窗体是否可见 false true 15)窗体属性 Windowstate:设置或返回窗体的状态 0:正常 1:最小化 2:最大化 3. 方法 1)打印Print:在窗体或图片框对象上打印输出文本信息或表达式的值,也可应用于打印机对象作为打印输出。如果有多个内容,可用‘;’紧密输出;用‘,’分区输出。 Form1.print “hhhhhhhhhhhhh” ‘在窗体上显示 Picture1.print “jjjjjjjjjjjjjjjjjjjjj” ‘在图片框上显示 Printer.print “kkkkkkkkkkkk” ‘从打印机对象输出 2)清屏 Cls:清除窗体或图片框中用Print方法所显示的内容 3)移动 Move:用于移动窗体或控件,并可在移动时动态改变其大小 格式:[对象名.] Move X[,Y[,Width[,Height]]] 4. 窗体的常用事件过程 事件过程可分为3种:鼠标事件、键盘事件和系统事件。 1)Click 事件 触发条件:将鼠标置于对象上并按下鼠标左键后立即释放 事件过程格式: Private sub 对象名_click([index as integer]) 。。。。。。。 End sub 2)Dblclick 事件 触发条件:将鼠标置于对象上双击时 事件过程格式: Private sub 对象名_Dblclick([index as integer]) 。。。。。。。 End sub 3)Mousedown、Mouseup、Mousemove事件 触发条件:将鼠标置于对象上时,鼠标任一键被按下时,则触发鼠标按下事件Mousedown;;当释放鼠标按键时,则触发产生鼠标的释放事件Mouseup。鼠标指针在对象区域内移动时产生Mousemove事件。 事件过程格式: Private sub 对象名_Mousedown(Button as integer,Shift as integer,X as single,Y as single) Private sub 对象名_Mouseup(Button as integer,Shift as integer,X as single,Y as single) Private sub 对象名_Mousemove(Button as integer,Shift as integer,X as single,Y as single) 4)Keydown、Keyup、Keypress事件 触发条件:当控制焦点位于某对象上时,按下键盘中的任意一键,则会在该对象上触发Keydown事件,当释放该键时,将触发产生Keyup事件,之后将随即产生键盘的Keypress事件。当对拥有控制焦点的对象进行按下键后又释放的键盘操作时,将会在这对象上触发产生Keypress事件。 事件过程格式: Private sub 对象名_Keydown(Keycode as integer,Shift as integer) Private sub 对象名_Keyup(Keycode as integer,Shift as integer) Private sub 对象名_Keypress(Keyascii as integer) 5)Load、Unload与Queryload事件 触发条件:当窗体由磁盘装入内存时引发该事件,它由系统操作触发或通过Load语句触发;当窗体从内存中撤消时引发Unload事件;当使用任何方式关闭窗口时触发Queryload事件。 事件过程格式:Private sub Form_load(cancel as integer) Private sub Form_Unload(cancel as integer) Private sub Form_Queryunload(cancel as integer,Unloadmode as integer) 6)Paint重绘事件 触发条件:只有当窗体(或文本框)的Autoredraw自动重画属性设为False时,才能触发Paint事件。触发Paint事件有以下几种情况: 1)每当窗体(或文本框)被初次显示在屏幕上时; 2)每当窗体(或文本框)被其它窗口覆盖,以后再次恢复原状时; 3)当程序中调用Refresh方法时; 4)当窗体(或文本框)被移动或调整大小时。 事件过程格式:Private sub 对象名_Paint() 7)Resize事件 触发条件:当窗体初次显示在屏幕上或者当对象的尺寸大小被改变时发生。 事件过程格式:Private sub 对象名_Resize () 5. 处理多重窗体 1)装载新窗体:只将窗体或控件装入内存,但并不显示出来。 语句格式:Load 窗体名或控件名 2)显示新窗体:显示已用Load语句装入内存的窗体或控件。 语句格式:窗体名.Show [窗体显示模式] 模式值0:缺省 1:用户只能在本窗体操作直到本窗体被关闭为止。 3)隐藏和卸载窗体 语句格式:窗体名.Hide Unload 窗体或控件名 5. 实例 闪现窗体,需要在标准模块中编写代码。 Private Sub Main() ' Show the splash screen. frmSplash.Show ' Add your startup procedures here. … ' Show the main form and unload the splash screen. frmMain.Show Unload frmSplash End Sub   二、命令按钮 1 命令按钮简介 按钮是我们在Windows操作见到最多的控件,它们有着各种各样的功能:“确认”、“取消”、“下一步”等等,这些都是按钮的表现,另外还有很多图形话的按钮,其实它们并没什么不同,所有的按钮都是通过单击(click)事件实现的,只不过是在外表不同罢了。 2. 属性 1)具备控件所共有的一些基本属性,如:Name、Enabled、Visible、Font等。 2)Caption标题属性:可以定义一个键盘热键,方法为在标题需要定义成热键的字母前加入一个“&”符号,用户就可以在操作时按下“ALT+字母”就可激活并操作该命令钮。 例如:若要给某个命令按钮的标题赋予“取消”,并同时定义一个热键“C”,只需设置标题属性值为“取消(&C)”即可。 3)Default 缺省属性:将该按钮设置为缺省命令按钮,当用户按回车时,自动激活该按钮。 4)Style风格属性:设置或返回命令按钮的外观风格。0:默认  1:图形按钮 5)Picture、Disabledpicture、Downpicture图形属性:只有当Style为1时,用Picture为按钮装入一幅示意图形;当命令按钮失效时,用Disabledpicture设置图形命令按钮显示的图形;当按钮被下时,用Downpicture设置图形命令按钮显示的图形。灵活运用这几个属性,能够做出动态的命令按钮效果。 6)Mousepointer鼠标指针属性:设置鼠标指针在命令按钮范围内所显示的形状。 7)Tooltiptext提示文本:设置当鼠标暂停在控件上时显示的提示性文字。多数控件都有这个属性。 3. 方法 4. 事件 Click 5. 实例 卸载窗体 Private Sub cmdQuit_Click () Unload Me End Sub       标签和文本框 一、标签 1. 标签简介 常用于显示静态、不可修改的文本信息。 2. 属性 1)Alignment 对齐方式:0:Left 1:Right  2:Center 2)Autosize能否调整大小 3)Backstyle是否透明:这个属性非常有用,常用来制作操作热点。如制作CD播放器中的各个按钮,可先设计好面板,再在各个按钮的上面加标签框,利用Click事件实现相应的功能;也可设计动态文字。 3. 方法 Move 4. 事件 Change Click Dblclick Mousemove Mousedown Mouseup 5. 实例 试编程实现文字“欢迎使用”的动态显示。 Private sub cmd_click() Dim newleft ,I as integer Newleft=7500 ‘设定左边坐标变量值 Do Newleft=newleft-50 Label1.move newleft,400 ‘循环修改左边的坐标值 For I=1 to 1000 ‘利用循环实现暂停效果 Doevents ‘交出控制,最好在设计循环时都有这个语句,以避免出现死机现象。 Next i Loop Until newleft<=400 End sub 二、文本框 1. 文本框简介 文本框控件主要用来与用户交互数据。在工具箱中找到“”图标双击,就可在窗体上放置一个文本框控件。默认情况下,第一个文本框自动命名为Text1,以后的文本框会依次命名为Text2、Text3...   2. 属性 1)Text 文字属性:设置或返回文本框中的文字信息。这是文本框最重要的属性,在窗体设计阶段可设置文本框的显示内容,在运行阶段可改写或返回文本框的内容。如 A=Text1.Text,则变量A返回的就是文本框的内容。   2)Maxlength 文字长度:设置文本框允许输入的最大字符数。当文本框内输入的字符数超过这一数值时文本框不再接受写入的字符。注意,每个英文字符字符记数是1,每个中文字符记数也是1。   3)Multiline 多行显示:设置是否允许多行显示。也就是说是否可以在文本框输入时使用有效的回车换行。默认情况下该属性值=False(不接受多行文本), 当属性值设置=True时才接受多行文本。如果要在文本框中加入滚动条(见下面ScrollBars属性)必须将这一属性设置为True。   4)Scrollbars 滚动条:只有在Multiline为True时,为文本框设置滚动条 0:无 1:水平滚动条 2:垂直滚动条 3:水平和垂直滚动条 5) Passwordchar 密码功能:设置一个密码输入文本框的显示字符以代替输入的字符。该属性设置为不同的字符时,用户在文本框中输入的内容将全部用设置的字符代替。这一属性常应用于密码框的输入。   6)Locked 修改编辑:设置文本框的内容是否可以编辑或修改。当文本框的内容只是用来显示给用户看而不允许用户更改时就将这一属性设置为True。即使是将Locked的属性设置为True,文本框的内容还是可以通过程序代码控制改写的。   7)Imemode 输入法:设置输入法的操作方式 0:不作操作 1:打开输入法 2:关闭输入法 3、使输入法失效(用户不能再打开输入法) 另外,可用 Value=Imestatus 这个语句来判断当前输入法的状态。 0:没有安装输入法 1:已打开输入法 2:未打开输入法 8)Hideselection 反相显示:设置当通过语句选择了正文时,是否以反相显示被选文字。 0:不反相显示 1:反相显示 9)Selstart、Sellength、Seltext 选择文字:运行时设置或返回选择文字的起点、长度和文字内容。 10)Width、Height、Left、Top 分别为文本框的宽度、高度、距窗体的左边距和上边距,这四个属性值即可在窗体设计时设置,也可以在程序运行中用代码控制改变。 11)Font 文本框内字符的字体属性,可以设置字体、字号以及字符修饰效果。 12)Forecolor 文本框内字符的前景色属性。 13)Visible 文本框是否可见(=True可见=False不可见) 14)Enabled 文本框是否接受用户的操作(=True许=False不许) 15)MousePointer 定义鼠标指针当指向文本框时的形状及是否可以使用自定义属标指针。属性值=99时可以使用自定义鼠标指针,属性值为其它值时对应不同的指针形状。 16)MouseIcon 当MousePointer属性设置为99时,可以选择MouseIcon属性为指定的自定义指针形状。如果MousePointer属性设置为非99该属性设置不起作用。 17)ToolTipText 当鼠标在文本框控件上停留时显示的提示文字。   3. 方法 Setfocus(设置输入焦点) 4. 事件 1)Chang:当向文框输入了新内容或在程序中重置了文本框的内容,也就是文本框的内容产生了变化时触发。 2)Gotfocus:当文本框获得输入焦点时触发。 3)Lostfocus:当文本框失去输入焦点时触发。 5. 实例

阅读(24) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册