首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> Visual Basic教程
用vb实现象windows记事本的一些功能_visualbasic教程
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
内容:讨论如何在用VB编写的记事中实现自动将日志添加到文档尾部、判断保存还是另存为、确认文件是否需要保存等功能。

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

一、将日志添加到文档

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

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

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

二、截取FileName中的纯文档名

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

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

截取纯文栏名函数
FunctionGetFileTitle(OldStrAsString)AsString

OnErrorResumeNext
DimnAsInteger,mAsInteger声明字符串变量
DimiAsString,rAsString
DimpAsInteger
i="\"要查找的指定字符
Forn=1ToLen(OldStr)用Len函数计算已知字符串的字节数
m=InStrRev(OldStr,i,-1)"\"所在的位置(其中的-1是默认的)
Nextn找下去!

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

EndFunction

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

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

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

三、判断保存还是另存为

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

DimSaveFileNameAsString窗体或模块级变量

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

保存文件
IfSaveFileName<>""Then
OpenSaveFileNameForInputAs#1
Print#1,Text1.Text
Close#1
Else
此处写上用公共对话框保存文件的代码
EndIf

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

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

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

1.在Form_Load事件中加入:

Text1.OLEDropMode=1令Text1成为可接受文件拖放的OLE容器

2.采用OLE技术实现拖放并打开功能:

当文件拖到文本框
PrivateSubText1_OLEDragOver(dataAsDataObject,effectAsLong,_
ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle,_
StateAsInteger)
Ifdata.GetFormat(vbCFFiles)Then如是文件则显示可放下图标
effect=vbDropEffectCopyAndeffect
Else否则显示不可放下图标
effect=vbDropEffectNone
EndIf
EndSub

当文件被放下
PrivateSubText1_OLEDragDrop(dataAsDataObject,effectAsLong,_
ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

DimsFileName$AsString放下的文件名变量
检查放下的东西是不是文件名
Ifdata.GetFormat(vbCFFiles)=TrueThen如是则sFileName=data.Files(1)只读取第一个文件信息
OnErrorResumeNext出错处理:不予理睬
在TextBox中打开文件
OpensFileNameForInputAs#1
IfmnuComb(0).CheckedThenText1.Text=Text1.Text&StrConv(InputB$_
(LOF(1),1),vbUnicode):MyLen=Len(Text1.Text)
IfmnuComb(1).CheckedThenText1.Text=StrConv(InputB$(LOF(1),1),_
vbUnicode):MyLen=Len(Text1.Text)
Close#1
EndIf
EndSub

注意:可要记得写出错处理代码,否则……你知道的。

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

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

1.模块或窗体级声明:

DimAskAsBoolean

2.在Form_Load中:

Ask=False初值

3.在Text1_Change中加入:

Ask=True

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

IfAsk=Truethen
DimFlagAsInteger,MsgStrAsString
MsgStr="文件已经改变,是否要存盘?"提示语
Flag=MsgBox(MsgStr,vbYesNoCancel,"提示")给予提示
IfFlag=vbYesThenSaveIt选择了确定则保存之:这里假定已有了一个保存文件的子过程SaveIt
IfFlag=vbCancelThenExitSub
IfFlag=vbNoThenCancel=False
EndIf
......这里写上其它主要处理事件代码
Ask=False操作结束令其为假,以免老提示

六、搜索功能

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

查找字符串函数[可置于模块或窗体级中]
FunctionFindMyStr(MyNameAsTextBox,SearchStrAsString)AsInteger
DimWhere获取需要查找的字符串变量
DimStartAsInteger
MyName.SetFocus文本框获得焦点,以显示所找到的内容
Start=MyName.SelStart MyName.SelLength 1
Where=InStr(Start,MyName.Text,SearchStr)在文本中查找字符串
IfWhereThen
若找到则设置选定的起始位置并使找到的字符串高亮
FindStr=Where-1
MyName.SelStart=Where-1
MyName.SelLength=Len(SearchStr)
否则给出提示
Else:MsgBox"未找到所要查找的字符串。",vbInformation,"提示"
EndIf
EndFunction

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

1.在窗体级声明:

DimSearchAsString声明要查找的变量

2.第一次查找:

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

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

DimsFindAsString
sFind=FindMyStr(Text1,Search)

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

以上是笔者在学习、探索中的一些体会,在PWin98、VB中文企业版6.0下调试成功。如有不妥当之处,敬请各位高手斧正!->


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·ASP.net中动态加载控件时一些问题的总结-ASP教程,ASP应用
·C#读写注册表-.NET教程,C#语言
·Visual Basic .NET中的异常处理简介(下)-.NET教程,VB.Net语言
·C#:文件的按行读/写及文件目录对话框的使用-.NET教程,C#语言
·ADO.Net:使用DataReader向数据库中插入数据-ASP教程,数据库相关
·列一张网恋赔偿清单(爆笑)
·如何用Photoshop画服装款式图-网页设计,Photoshop
·.NET下使用DataAdapter保存数据时,如何生成command语句及使用事务-.NET教程,数据库应用
·新型dc/dc电源控制芯片dpa426的应用
·ASP.NET 2.0 - Enter Key - Default Submit Button-.NET教程,Asp.Net开发
最新文章
·个人站长的网络赚钱两条新出路_网赚技巧
·adsense帐户最佳化纵深谈-adsense资深专员_网赚技巧
·google adsense容易被k的可能性列表_网赚技巧
·如何让程序被站长接受和产生利润_站长访谈
·马云,即成的中国互联网第4代霸主_站长访谈
·google关键词广告创建的十二招_google推广
·如何使google更快速收录你的新站_google推广
·几个颇有创意的网站推广方法_站长心得
·网络编辑:标题,如何让网民一见钟情(2)_网络编辑
·网站建设基础seo搜索引擎优化_seo网站优化
相关主题
  • 用vb实现浮动按钮_visualbasic教程
  • 用vb实现“icq”式的启动欢迎画面_visualbasic教程
  • 用vb实现文件查找功能_visualbasic教程
  • 用vb实现应用程序在局域网络上自动更新_visualbasic教程
  • 用vb实现聊天讨论室和点对点会话_visualbasic教程
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭