国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用VB實現象Windows記事本的一些功能

2019-11-18 17:26:10
字體:
來源:轉載
供稿:網友
內容:討論如何在用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
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下調試成功。如有不妥當之處,敬請各位高手斧正!->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桐梓县| 牙克石市| 来安县| 德化县| 兴化市| 正定县| 丘北县| 彭泽县| 博罗县| 鹰潭市| 永定县| 会理县| 阿克| 怀柔区| 新营市| 九江市| 普陀区| 班玛县| 铜梁县| 福安市| 从江县| 宣城市| 离岛区| 涡阳县| 华安县| 柳江县| 大洼县| 长乐市| 依安县| 凤阳县| 乌兰察布市| 盘山县| 区。| 工布江达县| 和田县| 汝南县| 洛南县| 鄂伦春自治旗| 丹阳市| 辽源市| 五峰|