当前位置: 网学 > 编程文档 > VB > 正文

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

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
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

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号