电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> VB编程>>VB新手入门之四:

VB新手入门之四

来源:网络 | 2007-1-26 | (有3325人读过)

删除实时菜卑顾使用UnLoad语句。例如,LoadNameArray(1)。

有关建立实时菜单的详细内容请参阅教程第4.3节。

5.通用对话框的CancelError属性和Err对象

当通用对话框的CancelError属性为Tme时,无论何时选择"取消"按钮,均产生 32755(cdlCancel)号错误,即将Err的Number属性设置为32755。

Err是VB的一个系统对象,它记录了程序运行期间所发生的错误。

Err对象的重要属性有Number(默认属性)和Description。当错误发生后,错误的生成者把错误号和有关错误的说明分别存放在Number和Description属性中。例如,当在 CancelError属性为True的通用对话框中选择"取消"按钮时,产生一个错误,Err对象的Number和Description属性将被设置为32755和"选择'取消'"。

在程序运行期间,经常会发生各种各样的错误。有关错误处理的详细内容请参阅教程第 9.6节。

下面是当程序产生cdlCancel错误时结束程序的运行。

SubForm_ClickO

CommonDialogl.CancelError=True

On Error GoTo ErrorHandler

CommonDialogl.Action=l

' 处理文件的语句

ErrorHandler:

If Err.Number=cdlCancel Then

End

Endlf

End Sub

6.与窗体有关的事件

在首次用Load语句将窗体(假定该窗体在内存中还没有创建)调入内存之时依次发生 Initialize和Load事件。在用UnLoad将窗体从内存中卸载时依次发生QueryUnLoad和Unload事件,再使用Set窗体名=Nothing语句解除初始化时发生Terminate事件。

Initialize是在窗体创建时发生的事件。在窗体的整个生命周期中,Initialize事件只触发一次。用户可以将一个窗体装入内存或从内存中删除很多次,但窗体的建立只有一次。也就是说,在用Load语句将窗体装入内存时会触发Load事件,但并不一定触发Initialize事件。

在用UnLoad语句卸载窗体后,如果没有使用Set窗体名=Nothing解除初始化,则在下次使用Load语句时不会触发Initialize事件,否则会引起Initialize事件。

假定有Forml和Form2两个窗体,并且有下列事件过程:

' Forml窗体事件过程

Sub Form_Click()

Debug.Print"窗体首次装入内存时发生的事件:"

Load Form2

Debug.Print"用Unload卸载窗体时发生的事件:"

UnloadForm2

Debug.Print "窗体第二次装入内存时发生的事件:"

Load Form2

Debug.Print "用Unload卸载窗体时发生的事件:"

Unload Form2

Debug.Print "用Set窗体名=Nothing语句解除初始化时发生的事件:"

Set Form2=Nothing

Debug.Print "窗体第三次(解除初始化后)装入内存时发生的事件:"

Load Form2

End Sub

'Form2窗体事件过程

Sub Form_Initialize()

Debug.Print"Initialize事件"

End Sub

Sub Form_Lond()

Debug.Pnnt"Load事件"

End Sub

Sub Form_QueryUnload(Cancel As hteger, UnloadMode As Integer)

Debug.Print"QueryUnload"

End Sub

Sub Form_Unlond(Cancel As Integer)

Debug.Print"Unload"

End Sub

Sub Form_Terminate()

Debug.Print"Terminate"

End Sub

当用户在Form1上单击时,在Debug窗口显示下列信息:

窗体首次转入内存时发生的事件:

Initialize事件

Load事件

用Unload卸载窗体时发生的事件:

Query Unload

Unload

窗体第二次装入内存时发生的事件:

Load事件

用Unload卸载窗体时发生的事件:

QueryUnload

Unload

用Set窗体名=Nothing语句解除初始化时发生的事件:

Terminate

窗体第三次(解除初始化后)装入内存时发生的事件:

Initialize事件

Load事件

7.MouseDown、MOUSeUp和C1ick事件发生的次序

当用户在窗体或控件上按下鼠标按钮时MouseDown事件被触发,MouseDown事件肯定发生在MouseUp和C1ick事件之前。但是,MOUSeUp和C比k事件发生的次序与单击的对象有关。

当用户在标签、文本框或窗体上作单击时,其顺序为:

(1)MouseDown

(2)MouseUp

(3)Click

当用户在命令按钮上作单击时,其顺序为:

(1)MouseDown

(2)Click

(3)MouseUp

当用户在标签或文本框上作双击时,其顺序为:

(1)MouseDown

(2)MOuseUp

(3)Click

(4)DblCUck

(5)MouseUp

第八章 文 件

8.1 知识要点

1.文件系统控件

VB提供的文件系统控件主要属性和事件见表2.9.1所示。

表2.9.1 文件系统控件主要属性和事件

控件 主要属性 主要事件

DriveListBox(驱动器) Drive Change

DirListBox(目录) Path Change

FileLiseBox(文件) Path FileName Pattern Click DblClick

要使三个控件有机地联系起来,必须用到两个事件过程Drivel Change()和Dirl Change() (假定控件使用默认名称):

要使显示的是某种类型的文件,必须还要增加组合框控件,然后要通过对文件列表框控件的Pattern属性进行设置实现。

2.处理文件与目录(文件夹)语句和函数

VB提供的文件与目录(文件夹)语句和函数见表2.9.2所示。在VB6.0中提供了功能更强的文件系统对象,参阅教程第七章。

表2.9.2 文件与目录语句和函数

VB语句和函数形式 等效的DOS命令 作 用

FileCopy source, destination Copy 文件复制

Kill pathname DEL、ERASE 文件删除,可出现统配符

Name oldpathname As newpathname REN 文件重命名

ChDrive drive 键盘符 改变当前驱动器

MkDir path MD 创建新目录

ChDir path CD 改变当前目录

RmDir path RD 删除目录

CurDir((drive)) 函数返回当前路径

[注意]

用上述语句作用于文件操作时,此时文件必须是关闭的。

3.文件的概念

文件:是指存放在外部介质上的以文件名标识的数据的集合。文件由若干条记录组成,一个记录又可包括若干个数据项。当前操作的文件有一个指针,指向当前读写位置。

文件分类:根据存放的内容可分程序文件和数据文件;根据存储数据的形式可分ASCII码文件和二进制文件;根据存放的介质可分磁盘文件、打印文件等:根据组织、存取形式可分为顺序文件、随机文件和二进制文件(因使用不多,本章不作介绍)。

文件的读写:计算机内存向外存文件中传送数据,为写文件,使用规定的"写语句";将外存文件中的数据向内存传送,为读文件,使用规定的"读语句"。

文件缓冲区:对文件进行读写操作时,VB在内存开辟一个"文件缓冲区",从文件中读取的内容到内存数据区、从内存数据区向文件中写入的内容都必须先送到缓冲区。使用"文件缓冲区"的好处可提高文件对文件读写的速度。一个打开的文件对应一个缓冲区,每个缓冲区有一个缓冲区号,即后面涉及到的文件号。

4.顺序文件及操作

顺序文件:是文件中记录的写入,存放与读出三者的顺序是一致的,即记录的逻辑顺序与物理顺序相同。顺序文件以ASCII码方式存放数据,可用文本编辑软件显示和编辑。

顺序文件结构简单,记录可不等长,读出某一条记录速度慢,不能直接对文件进行修改,适宜于对文件顺序批量处理。

打开语句形式:Open文件名For读写方式As[#]文件号(Len=记录长度]

文件名可以是用双引号引括起的字符串常量,也可是字符变量(此时无"");读写方式有:OUTPUT、INPUT和APPEND;文件号1-511;记录长度表示缓冲区的字符数。

[注意]

当对一个己存在的文件进行OUTPUT方式打开,则原有数据全部删除。

写语句:Print#文件号,[输出列表] 或 Write#文件号,[输出列表]

两种语句区别:后者输出在数据项之间自动插入",",并给字符串加上双引号,以区分数据项和字符串类型;而前者无。对多个数据项,也可用记录变量名表示。

读语句: INPUT#文件号,变量列表

LINEINPUT#文件号,字符串变量 (注意:回车换行符不读入;

INPUT$(读取的字符数,#文件号) 包括回车换行符时读入)

关闭文件: Close[[#]文件号]

常用函数: LOF、EOF、LOC。

5.随机文件及操作

随机文件:文件中所有记录等长、各数据项长度固定,每个记录有唯一的记录号,读写文件按记录号对该记录读写,文件以二进制代码形式存放数据。随机文件适宜对某条记录进行读写操作。

记录:一般用TYPE … ENDTYPE记录类型定义,然后再声明记录变量。

打开语句形式:Open文件名For Random As #文件号[Len=记录长度)

记录长度:通过Len(hE录类型)自动获得。

写语句:Put[#]文件号,[记录号],变量列表或记录变量名

读语句:Get[#]文件号,[记录号],变量列表或记录变量名

省略记录号,则表示在当前记录后插入或读出一条记录。

9.3 常见错误和难点分析

1.文件系统的三个控件不能产生关联

也就是当驱动器改变时,目录列表框不能跟着相应改变;或者当目录列表框改变时,文件列表框不能跟着相应改变。要三个控件产生关联,使用下面两个事件过程:

Private Sub Drivel_Change()

Dirl.Path=Drivel.Drive

End Sub

Private Sub Dirl_Change()

Filel.Path=Dirl.Path

End Sub

2.如何在目录列表框表示当前选定的目录

在程序运行时双击目录列表框的某目录项,则将该目录项改变为当前目录,其Diirl. Path的值作相应的改变。而当单击选定该目录项时,Diirl. Path的值并没有改变。有时为了对选定的目录项进行有关的操作,与ListBox控件中某列表项的选定相对应,表示如下:

Dirl.List(Dirl.Listlndex)

3.当使用文件系统控件对文件进行打开操作时,显示"文件未找到"出错信息

例如,如下语句:

Open Filel.Path+Filel.File Name For Input As#1

当选定的目录是根目录,上述语句执行正确;而当选定的目录为子目录,上述语句执行时显示"文件末找到"出错信息。

其中:Filel.Path表示当前选定的路径,Filel.File Name表示当前选定的文件,合起来表示文件的标识符。

当选定的文件在根目录下(假定驱动器为C),Filel.Path的值为"C:\1",假定选定的文件名为"t1.txt",则Filel.Path+Filel.FileName的值为"C:\t1.txt",为合法的文件标识符。

当选定的文件在子目录下(假定驱动器为C,子目录为my),Filel.Path的值为"C:\my" Filel.Path+Filel.FileName的值为"C:\my tl.txt",子目录与文件名之间少了一个"\"分隔符。

为了保证程序正常运行,OpenFilel.Path+Filel.FileNameForlnput As#1改为:

Dun F$

If Right(Filel.Path,1)"\" Then ' 表示选定的足根目录

F=Filel.Path+Filel.FileName

Else ' 表示选定的是子目录,子目录与文件名之间加"\"

F=Filel.Path+"\"+Filel.FileName

End If

Open F For Input As # 1

4.Open语句中欲打开的名是常量也可以是字符串变量,但使用者概念不清,导致出现"文件未找到"出错信息

如在从盘上读入文件名为"C:\my\t1.txt",

正确的常量书写如下:

Oven "C:\my\t1.txt"For Input As#1 ' 错误的书写常量两边少双引号

或正确的变量书写如下:

Dim F$

F="C:\my\t1.txt"

Open F For Input As #1 ' 错误的书写变量F两边多了双引号

5.文件没有关闭又被打开,显示"文件已打开"的出错信息

如下语句:

Open"C:\my\t1.txt" For Input As #1

Print F

Open "C:\my\t1.txt" For Input As #1

Print"2";F

执行到第二句Open语句时显示"文件已打开"的出错信息。

6.如何读出随机文件中的所有记录,但又不知道记录号

不知道记录号而又要全部读出记录,则只要同顺序文件的读取相似,采用循环结构加无记录号的Get语句即町,程序段如下:

Do While Not EOF(1)

Get #1, , j

Print j;

Loop

EndSub

随机文件读写时可不写记录号,表示读时自动读下一条记录,写时插入到当前记录后。

VB编程热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号