手机分类
  导航: 电脑时代在线 · 程序设计 · VB程序设计 · VB编程实例
有问题吗?看 疑难解答 电脑术语

用VB完成象Windows记事本地一些功能

 
硬件盘点
手机推荐
 
『用VB完成象Windows记事本地一些功能』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2005-3-21 
内容:讨论如何在用VB编写的记事中实现 自动将日志添加到文档尾部、判断保存还是另存为、确认文件是否需要保存 等功能。

Windows自带的记事本即Notepad有一些功能还是颇具吸引力的,比如自动在特定的文档尾部加入计算机时钟的时间和日期,截取已经打开或者保存了的纯文档名[见记事本的标题栏]以及搜索等,给用户带来许多方便。本文就TextBox控件讨论如何实现这些功能。

一、将日志添加到文档

在Windows中,如果文档的第一行最左边有".LOG"字样,那么每次用记事本打开此文时,记事本会自动在文档尾部加入时间日期。
".LOG"共占四个字节,又置于文档第一行顶格处,因此可以用VB的Left函数来读取这个字符串,如有,则用CStr函数来自动添加时间和日期。
我们可以在打开文件的程序加入以下代码:

Dim a As String
a = Left(Text1.Text, 4) '取得头4个字节
If a = ".LOG" Then '若有则:
Text1.SelStart = Len(Text1.Text) '光标移到文件尾
Text1.SelText = vbCrLf & CStr(Now) '加入换行和时间
Else '若无,退出过程
Exit Sub
End If

这样,我们用VB编写的记事本就和Windows的Notepad一样具有自动将日志添加到文档的功能了。

二、截取FileName中的纯文档名

如若我们用Notepad打开文件D:\VBFILE\NEW\Textbox控件用法举例.txt,Notepad的标题栏的Caption变为:TextBox控件用法举例 - 记事本。这个,我们用VB来完成还是比较容易的。

为了方便在程序的各处使用,我们不妨编写一个截取字符串的函数:

'截取纯文栏名函数
Function GetFileTitle(OldStr As String) As String

On Error Resume Next
Dim n As Integer, m As Integer '声明字符串变量
Dim i As String, r As String
Dim p As Integer
i = "\" '要查找的指定字符
For n = 1 To Len(OldStr) '用Len函数计算已知字符串的字节数
m = InStrRev(OldStr, i, -1) '"\"所在的位置(其中的-1是默认的)
Next n '找下去!

'截取最后一个"\"后面的字符串
r = Right(OldStr, Len(OldStr) - m) '获取Title
p = InStrRev(r, ".", -1) '"."所在位置
GetFileTitle = Left(r, p - 1) '去掉后缀

End Function

现在我们来调用这个函数以获取纯文档名:

Dim MyStr As String, Result As String
MyStr = "d:\games\6do\oldtucom\heart\Story001.TXT"
Result = GetFileTitle(MyStr)
Me.Caption = Result & " - 记事本"

执行之,则窗体的标题变为:Story001 - 记事本,与NotePad的效果无异!

三、判断保存还是另存为

通常,我们通过使用CommonDialog控件来保存文件,不过,VB的公共对话框提供的ShowSave其实只是Save As,如不作处理则在运行程序中每次保存文件都会跳出另存为对话框,为避免这种不便,我们可以声明一个窗体级或模块级的文件名变量[类型:String],并在每一次相关操作中给此变量赋值且保存于内存之中,然后在保存文件时给予识别,如变量不为空则直接保存文件,否则调出另存为对话框,让用户输入文件名。
试看:

Dim SaveFileName As String '窗体或模块级变量

'在打开文件事件加入:
SaveFileName = CommonDialog1.FileName

'保存文件
If SaveFileName <> "" Then
Open SaveFileName For Input As #1
Print #1, Text1.Text
Close #1
Else
'此处写上用公共对话框保存文件的代码
End If

这样,我们的记事本变得象Notepad一样聪明了:那令人讨厌的另存为对话框不会总是弹出来了!

四、从“我的电脑”拖动文件并打开

当从“我的电脑”拖动文件到Notepad编辑界面,文件格式正确的话则自动打开。在VB中,我们可以这样处理:

1.在Form_Load事件中加入:

Text1.OLEDropMode = 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

[1] [2] 下一页  


如果您有什么疑问,可以至论坛提出或者解答他人的疑问   返回页面顶部

】【关闭窗口
·上一篇教程:
·下一篇教程:
·导航: 电脑时代在线 · 程序设计 · VB程序设计 · VB编程实例
相关文章
 
搞笑自拍|图片故事|美女图库|体坛宝贝|明星爆料|世界奇观|风光摄影|历史回忆|大千世界
Photshop超炫图片
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部  
网站文本地图
  版权所有:电脑时代在线 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2007 www.PCvz.com online services. all rights reserved. 蜀ICP备05015578
Template designed by LaoJiang. Optimized for 1024x768 to Firefox,Opera and MS-IE. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光