ropMode = 1 ''令Text1成为可接受文件拖放的OLE容器
2.采用OLE技术实现拖放并打开功能:
''当文件拖到文本框
Private Sub Text1_OLEDragOver(data As DataObject, effect As Long, _
Button As Integer, Shift As Integer, X As Single, Y As Single, _
State As Integer)
If data.GetFormat(vbCFFiles) Then ''如是文件则显示可放下图标
effect = vbDropEffectCopy And effect
Else ''否则显示不可放下图标
effect = vbDropEffectNone
End If
End Sub
''当文件被放下
Private Sub Text1_OLEDragDrop(data As DataObject, effect As Long, _
Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim sFileName$ As String ''放下的文件名变量
''检查放下的东西是不是文件名
If data.GetFormat(vbCFFiles) = True Then ''如是则 sFileName = data.Files(1) ''只读取第一个文件信息
On Error Resume Next ''出错处理:不予理睬
''在TextBox中打开文件
Open sFileName For Input As #1
If mnuComb(0).Checked Then Text1.Text = Text1.Text & StrConv(InputB$ _
(LOF(1), 1), vbUnicode): MyLen = Len(Text1.Text)
If mnuComb(1).Checked Then Text1.Text = StrConv(InputB$(LOF(1), 1), _
vbUnicode): MyLen = Len(Text1.Text)
Close #1
End If
End Sub
注意:可要记得写出错处理代码,否则……你知道的。
五、确认文件是否需要保存
从当前状态退出
程序或转移到其它状态如新建文件、打开文件等,如若当前文件已经改变而用户又没有保存,应该提醒用户要不要保存已做的改变。这一点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.SelSta