VB应用程序的启动与退出设计
在缺省情况下,应用程序中的第一个窗体被指定为启动窗体。如果想在应用程序启动时显示别的窗体,就得改变启动窗体,其方法如下: 1 从“工程”菜单中,选劝工程属性”。 2 选劝通用”。 3 在“启动对象”下拉列表中。
在缺省情况下,应用程序中的第一个窗体被指定为启动窗体。应用程序开始运行时,此窗体就被显示出来(因而最先执行的代码是该窗体Form_Initialize事件中的代码)。如果想在应用程序启动时显示别的窗体,就得改变启动窗体,其方法如下:
1 从“工程”菜单中,选劝工程属性”。
2 选劝通用”。
3 在“启动对象”下拉列表中,选取要作为新启动窗体的窗体。
4 选劝确定”。
没有启动窗体时的启动
1 从“工程”菜单中,选劝工程属性”。
2 选劝通用”。
3 在“启动对象”下拉列表中,选取要作为新启动窗体的窗体。
4 选劝确定”。
没有启动窗体时的启动
有时候需要在应用程序启动时不加载任何窗体。例如想先运行装入数据文件的代码,然后再根据数据文件的内容决定显示几个不同窗体中的哪一个。为此,可在标准模块中创建一个名为Main的子过程,并将其设为启动对象。
SubMain()
DimintStatusAsInteger
′调用一个函数过程来检验用户状态
intStatus=GetUserStatus
′根据状态显示某个启动窗体
IfintStatus=1Then
frmMain Show
Else
frmPassword Show
End If
注意:这个过程必须是一个子过程,且不能在窗体模块内。
SubMain()
DimintStatusAsInteger
′调用一个函数过程来检验用户状态
intStatus=GetUserStatus
′根据状态显示某个启动窗体
IfintStatus=1Then
frmMain Show
Else
frmPassword Show
End If
注意:这个过程必须是一个子过程,且不能在窗体模块内。
结束应用程序
当所有窗体都已关闭并且没有代码正在执行时,事件驱动的应用程序就停止运行。如果最后一个可见窗体关闭时仍有隐藏窗体存在,那么,应用程序表现为已经结束了(因为没有可见的窗体),可实际上却仍在继续运行,直至所有隐藏窗体都关闭为止。之所以出现这种情况,是因为对已卸载窗体的属性或控件的任何访问,都将导致隐含地、不予显示地加载那个窗体。
为了避免出现这类问题,最好的办法是确保所有的窗体都已卸载,可以使用Forms集合和Unload语句。例如在主窗体上可以用一个名为cmdQuit的命令按钮来退出程序,如果应用程序只有一个窗体,则Click事件过程可简单为:PrivateSubcmdQuit_Click()UnloadMeEndSub如果应用程序使用多窗体,通常把代码放入主窗体的Unload事件过程可以卸载这些窗体。可以使用Forms集合确保到并关闭所有窗体。
PrivateSubForm_Unload
DimiasInteger
′在窗体集合中循环并卸载每个窗体
Fori=0toForms Count-1
当所有窗体都已关闭并且没有代码正在执行时,事件驱动的应用程序就停止运行。如果最后一个可见窗体关闭时仍有隐藏窗体存在,那么,应用程序表现为已经结束了(因为没有可见的窗体),可实际上却仍在继续运行,直至所有隐藏窗体都关闭为止。之所以出现这种情况,是因为对已卸载窗体的属性或控件的任何访问,都将导致隐含地、不予显示地加载那个窗体。
为了避免出现这类问题,最好的办法是确保所有的窗体都已卸载,可以使用Forms集合和Unload语句。例如在主窗体上可以用一个名为cmdQuit的命令按钮来退出程序,如果应用程序只有一个窗体,则Click事件过程可简单为:PrivateSubcmdQuit_Click()UnloadMeEndSub如果应用程序使用多窗体,通常把代码放入主窗体的Unload事件过程可以卸载这些窗体。可以使用Forms集合确保到并关闭所有窗体。
PrivateSubForm_Unload
DimiasInteger
′在窗体集合中循环并卸载每个窗体
Fori=0toForms Count-1
UnloadForms(I)
Next
End Sub
Next
End Sub
相关阅读:应用MFC开发高级应用程序
用户学习并使用vb来开发Windows应用的时间是最短的。[摘要]:目前在Windows下开发应用程序的工具虽然很多,但是C/C++作为一种非常成熟和高效的开发语言在大型复杂项目的开发中仍然得到了广泛应用。如果在各个视口中指明具体的窗口名字。
VB程序 退出按钮
我编了一个程序(是可执行文件)。我现在想加一个Command Button,使得点了它之后这个程序可以自动退出。
请问怎么弄?
我VB才上了2节课,所以讲简单一点
请问怎么弄?
我VB才上了2节课,所以讲简单一点
谢谢啦!不过我又想到一个问题,
我想让Command1这个按钮点一下后使得Timer1停止,同时让Command1的Caption变成继续,而点击继续后,Comamnd1可以变成暂停,且同时Timer1.Enabled=True
请问怎么办到?
谢谢啦
请问怎么办到?
谢谢啦
提问者采纳
2010-10-10 19:40
在窗体上添加一个按钮,编辑代码:
Private Sub Command1_Click()
Unload Me
End Sub
这是正常退出,会执行Private Sub Form_Unload(Cancel As Integer)内容,例如退出确认之类(如果你写了的话)
Private Sub Command1_Click()
Unload Me
End Sub
这是正常退出,会执行Private Sub Form_Unload(Cancel As Integer)内容,例如退出确认之类(如果你写了的话)
如果你有多个窗体,那么
Private Sub Command1_Click()
End
End Sub
此乃强制结束,跳过一切步骤,直接结束。类似结束进程。
Private Sub Command1_Click()
End
End Sub
此乃强制结束,跳过一切步骤,直接结束。类似结束进程。
VB查文件(文件夹)
VB查文件(文件夹)2007-02-09 05:10
以查"D:\"下所有文件夹为例:
在窗体上添加一个CommandButton,它的单击代码如下:
Private Sub Command1_Click()
mypath = "D:\" '将要查的目录赋值给mypath
MyName = Dir(mypath, vbDirectory Or vbHidden Or vbNormal Or vbReadOnly Or vbSyste
mypath = "D:\" '将要查的目录赋值给mypath
MyName = Dir(mypath, vbDirectory Or vbHidden Or vbNormal Or vbReadOnly Or vbSyste
m) '到第一个入口,DIR返回到的第一个文件(文件夹)
Do While MyName <> "" '开始循环
If MyName <> "." And MyName <> ".." Then '忽略当前目录和子目录
'确保变量MyName取得的值是文件夹名
If (GetAttr(mypath & MyName) And vbDirectory) = vbDirectory Then
Print MyName '在窗体上打印出到的文件夹
End If
End If
MyName = Dir '得到下一个文件名
Loop
End Sub
Do While MyName <> "" '开始循环
If MyName <> "." And MyName <> ".." Then '忽略当前目录和子目录
'确保变量MyName取得的值是文件夹名
If (GetAttr(mypath & MyName) And vbDirectory) = vbDirectory Then
Print MyName '在窗体上打印出到的文件夹
End If
End If
MyName = Dir '得到下一个文件名
Loop
End Sub
运行后单击命令按钮就可在窗体上显示出D:\所有的文件夹
Dir函数
返回一个 String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件
属性、或磁盘卷标相匹配。
语法
Dir[(pathname[, attributes])]
Dir 函数的语法具有以下几个部分:
部分 描述 pathname 可选参数。用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有到 pathname,则会返回零长度字符串 ("")。 attributes 可选参数。常数或数值表达式,其总和用来指定文件属性。如果省略,则会返回匹配 pathname 但不包含属性的文件。
设置值
attributes 参数的设置可为:
常数 值 描述 vbNormal 0 (缺省) 指定没有属性的文件。 vbReadOnly 1 指定无属性的只读文件 vbHidden 2 指定无属性的隐藏文件 VbSystem 4 指定无属性的系统文件 vbVolume 8
指定卷标文件;如果指定了其它属性,则忽略vbVolume vbDirectory 16 指定无属性文件及其路径和文件夹。
注意 这些常数是由 VBA 所指定的,在程序代码中的任何位置,可以使用这些常数来替换真正的数值。
说明
Dir 支持多字符 (*) 和单字符 (?) 的通配符来指定多重文件。
由于 Macintosh 不支持通配符,使用文件类型指定文件组。可以使用 MacID 函数指定文件类型而不用文件名。比如,下列语句返回当前文件夹中第一个TEXT文件的名称:
Dir("SomePath", MacID("TEXT"))
为选中文件夹中所有文件,指定一空串:
为选中文件夹中所有文件,指定一空串:
Dir("")
在 Microsoft Windows 中,如果在Dir函数中使用MacID函数,将产生错误。
在 Microsoft Windows 中,如果在Dir函数中使用MacID函数,将产生错误。
任何大于256的attribute值都被认为是MacID 函数的值。
在第一次调用 Dir 函数时,必须指定 pathname,否则会产生错误。如果也指定了文件属性,那么就必须包括 pathname。
Dir 会返回匹配 pathname 的第一个文件名。若想得到其它匹配 pathname 的文件名,再一次调用 Dir,且不要使用参数。如果已没有合乎条件的文件,则 Dir 会返回一个零长度字符串 ("")。一旦返回值为零长度字符串,并要再次调用 Dir 时,就必须指定 pathname,否则会产生错误。不必访问到所有匹配当前 pathname 的文件名,就可以改变到一个新的 pathname 上。但是,不能以递归方式来调用 Dir 函数。以 vbDirectory 属性来调用 Dir 不能连续地返回子目录。
提示: 由于文件名并不会以特别的次序来返回,所以可以将文件名存储在一个数组中,然后再对这个数组排序。
GetAttr函数
返回一个 Integer,此为一个文件、目录、或文件夹的属性。
语法
GetAttr(pathname)
必要的 pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。
返回值
由 GetAttr 返回的值,是下面这些属性值的总和:
常数 值 描述 vbNormal 0 常规 vbReadOnly 1 只读 vbHidden 2 隐藏 vbSystem 4 系统文件 vbDirectory 16 目录或文件夹 vbArchive 32 上次备份以后,文件已经改变 vbalias 64 指定的文件名是别名。
注意 这些常数是由 VBA 指定的,在程序代码中的任何位置,可以使用这些常数来替换真正的值。
说明
若要判断是否设置了某个属性,在 GetAttr 函数与想要得知的属性值之间使用 And 运算符与逐位比较。如果所得的结果不为零,则表示设置了这个属性值。例如,在下面的 And 表达式中,如果档案 (Archive) 属性没有设置,则返回值为零:
Result = GetAttr(FName) And vbArchive
如果文件的档案属性已设置,则返回非零的数值
vb查文件
2011-04-16 09:09gsplhtlxg | 分类:VB | 该问题已经合并到>>
我想设计一个程序,里面有一个command1,点击这个按钮后查一个目录的文件,如果没有,继续执行代码,如果有,就打开一个窗体。
谁会?
谢谢
谁会?
谢谢
问者采纳
2011-04-16 12:40
if dir("d:\1.txt")="" then
执行代码
else
form2.show
end if
执行代码
else
form2.show
end if
用VB实现文件查功能
在VB中要实现查文件功能,我们可以利用VB的DIR函数进行递归来实现。每次使用DIR函数后,比较是否有要查的文件,再检查是否有子目录,若有,利用递归继续查,这样可对整个盘进行查。
下面是一个例子,查DOS目录下的所有EXE文件,统计EXE文件的数目并列出文件名。本程序会查当前路径下的所有文件和子目录,与WIN95的“包含子文件夹”的查功能类似。
程序与注释如下:
下面是一个例子,查DOS目录下的所有EXE文件,统计EXE文件的数目并列出文件名。本程序会查当前路径下的所有文件和子目录,与WIN95的“包含子文件夹”的查功能类似。
程序与注释如下:
1.在窗体中加一命令按钮Command1,Caption=查示例,双击此按钮,写如下代码:
Private Sub Command1-Click()
Dim ff() As String′定义一个字符串数组用来保存到的文件名称
Dim fn As Long′保存到的文件数目
字符串长度统计工具 fn=TreeSearch(″C:%%dos″,″*.exe″,ff())
Print″到文件数目为″;fn
For I=1 To fn
Print ff(I)
Next
End Sub
2.插入一模块Modulel.bas,写如下代码:
Option Explicit
Public Function TreeSearch(ByVal sPath As String,ByVal sFileSpec As String,sFiles() As String)
As Long
Private Sub Command1-Click()
Dim ff() As String′定义一个字符串数组用来保存到的文件名称
Dim fn As Long′保存到的文件数目
字符串长度统计工具 fn=TreeSearch(″C:%%dos″,″*.exe″,ff())
Print″到文件数目为″;fn
For I=1 To fn
Print ff(I)
Next
End Sub
2.插入一模块Modulel.bas,写如下代码:
Option Explicit
Public Function TreeSearch(ByVal sPath As String,ByVal sFileSpec As String,sFiles() As String)
As Long
Static 1Files As Long′文件数目
Dim sDir As String
Dim sSubDirs() As String′存放子目录名称
Dim 1Index As Long
If Right(sPath,1)$#@60;$#@62;″%%″Then sPath=sPath&″%%″
sDir=Dir(sPath & sFileSpec)
′获得当前目录下文件名和数目
Do While Len(sDir)
1Files=1Files+1
ReDim Preserve sFiles(1 To 1Files)
sFiles(1Files)=sPath&sDir
sDir=Dir
Loop
′获得当前目录下的子目录名称
1Index=0
Dim sDir As String
Dim sSubDirs() As String′存放子目录名称
Dim 1Index As Long
If Right(sPath,1)$#@60;$#@62;″%%″Then sPath=sPath&″%%″
sDir=Dir(sPath & sFileSpec)
′获得当前目录下文件名和数目
Do While Len(sDir)
1Files=1Files+1
ReDim Preserve sFiles(1 To 1Files)
sFiles(1Files)=sPath&sDir
sDir=Dir
Loop
′获得当前目录下的子目录名称
1Index=0
sDir=Dir(sPath&″*.*″,16)
Do While Len(sDir)
If Left(sDir,1)$#@60;$#@62;″.″Then ′skip.and..
′出子目录名
If GetAttr(sPath & sDir)And vbDirectory Then
1Index=lIndex +1
′保存子目录名
Redim Preserve sSubDirs(1 To 1Index)
sSubDirs(1Index)=sPath & sDir &″%%″
End If
End If
sDir=dir
Loop
For 1Index=1 To 1Index
′查每一个子目录下文件,这里利用了递归
Do While Len(sDir)
If Left(sDir,1)$#@60;$#@62;″.″Then ′skip.and..
′出子目录名
If GetAttr(sPath & sDir)And vbDirectory Then
1Index=lIndex +1
′保存子目录名
Redim Preserve sSubDirs(1 To 1Index)
sSubDirs(1Index)=sPath & sDir &″%%″
End If
End If
sDir=dir
Loop
For 1Index=1 To 1Index
′查每一个子目录下文件,这里利用了递归
Call TreeSearch(sSubDirs(1Index),sFileSp sFiles())
Next 1Index
TreeSearch=1Files
End Function
3.保存文件,按F5运行,单击命令按钮即可。
程序运行环境:VB 4.0 (32位),中文WIN95。
Next 1Index
TreeSearch=1Files
End Function
3.保存文件,按F5运行,单击命令按钮即可。
程序运行环境:VB 4.0 (32位),中文WIN95。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论