AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VB编程

用VB实现象Windows记事本的一些功能

51自学网 http://www.wanshiok.com

五、确认文件是否需要保存

从当前状态退出程序或转移到其它状态如新建文件、打开文件等,如若当前文件已经改变而用户又没有保存,应该提醒用户要不要保存已做的改变。这一点Notepad是有的,在VB中该怎么办呢?
我们可以声明一个布尔变量,用来记录文本框是否有了改变,并利用TextBox控件的Change事件来监视文本框的状态,若有变化,则改变变量值。

1.模块或窗体级声明:

Dim Ask As Boolean

2.在Form_Load中:

Ask = False '初值

3.在Text1_Change中加入:

Ask = True

4.退出程序或转移到新的状态时:

If Ask = True then
Dim Flag As Integer,MsgStr As String
MsgStr = "文件已经改变,是否要存盘?" '提示语
Flag = MsgBox(MsgStr, vbYesNoCancel, "提示") '给予提示
If Flag = vbYes Then SaveIt '选择了确定则保存之:这里假定已有了一个保存文件的子过程SaveIt
If Flag = vbCancel Then Exit Sub
If Flag = vbNo Then Cancel = False
End If
'...... 这里写上其它主要处理事件代码
Ask = False '操作结束令其为假,以免老提示

六、搜索功能

Notepad提供了查找和继续查找字符串的功能。VB中,控件TextBox并不象RichTextBox控件那样提供了Find方法。这样我们只好求助于VB的一些内部函数了。以下是笔者自行编写的一个专用于TextBox控件中查找字符串的函数,函数中用上了VB的InStr等内部函数,这里就不多作解释了。

'查找字符串函数[可置于模块或窗体级中]
Function FindMyStr(MyName As TextBox, SearchStr As String) As Integer
Dim Where '获取需要查找的字符串变量
Dim Start As Integer
MyName.SetFocus '文本框获得焦点,以显示所找到的内容
Start = MyName.SelStart + MyName.SelLength + 1
Where = InStr(Start, MyName.Text, SearchStr) '在文本中查找字符串
If Where Then
'若找到则设置选定的起始位置并使找到的字符串高亮
'FindStr = Where - 1
MyName.SelStart = Where - 1
MyName.SelLength = Len(SearchStr)
'否则给出提示
Else: MsgBox "未找到所要查找的字符串。", vbInformation, "提示"
End If
End Function

有了这个函数,我们可以这样查找和继续查找字符串:

1.在窗体级声明:

Dim Search As String '声明要查找的变量

2.第一次查找:

Dim sFind As String
'若光标不在开头处则令其回到开头
If Text1.SelStart <> 0 Then Text1.SelStart = 0
Search = InputBox("请输入要查找的字词:")
sFind = FindMyStr(Text1, Search)

3.继续查找[就简单了]:

Dim sFind As String
sFind = FindMyStr(Text1, Search)

这样,搜索功能就基本具备了,如再提供向上查找功能,则更令人满意。

 
 

上一篇:DBF文件转为MDB文件的方法  下一篇:利用两种简易方法实现直接打开一个文件