基于VB的记事本的设计与实现.docx
- 文档编号:23773703
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:31
- 大小:79.70KB
基于VB的记事本的设计与实现.docx
《基于VB的记事本的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于VB的记事本的设计与实现.docx(31页珍藏版)》请在冰豆网上搜索。
基于VB的记事本的设计与实现
基于VB的记事本
的设计与实现
学院名称:
专业名称:
年级班别:
姓名:
指导教师:
2011年09月
基于VB的记事本的设计与实现
摘要
VisualBasic6.0具有很强的文字处理功能,能够方便地实现各种文字操作,并且设计流程简单,方便好用。
本文模仿Windows自带的记事本即Notepad程序来创建一个文本编辑器。
本设计主要通过使用VisualBasic6.0中的公用对话框CommonDialog控件、ToolBar、TextBox、Label和RichRextBox等文本处理控件以及API函数来实现。
本文详细叙述了各个设计步骤和环节,并且对其中使用的控件和API函数的使用方法和技巧做了介绍。
所设计的文本编辑器的文字处理功能类似于Word,不仅能够编辑文本文档、RichText文档,具有打开文件、保存文件、剪切、拷贝、粘贴、设置文字的字体、大小、颜色等功能,最重要的是它还能实现对英文单词的翻译。
关键词VisualBasic;公用对话框CommanDialog控件;ToolBar控件;RichRextBox控件;API函数
DesignandRealizationofaNotebookBasedonVB
Abstract
VisualBasic6.0hasastrongword-processingfunction,anditcanfacilitatetheoperationofvariouscharacters.Theimportantthingisthatitsdesignprocessissimpleandeasytoprepare.ThispaperimatatesWindows’snotebook-notepadproceduretocreateatexteditor.ThedesigncomestorealizemainlythroughtheuseofVisualBasic6.0’scommondialogtools,suchasCommonDialog,ToolBar,TextBox,Labelandothertext-processingtoolssuchasRichRextBoxandAPIfunction.
Thispaperdescribesindetailthevariousstepsandaspectsofthedesign,andtheuseofthetexttools,APIfunctionandtheuseoftheintroductoryskills.Thisdesignedtexteditorcanedittextfiles,richtextdocuments,anditswordprocessingfunctionsissimilartotheWord.Ithasthefunctionofopenfiles,save,shear,copy,paste,setthefontandtextsize,colorandotherfunctionsset.ThemostimportantfeaturesisthatitcantranslateEnglishwordsintoChinese.
KeyWordsVisualBasic;CommanDialog;ToolBar;RichRextBox;API
目录
摘要I
AbstractII
1引言1
2设计思路2
3模块设计3
3.1模块部分3
3.1.1主菜单模块3
3.1.2工具栏模块3
3.1.3文本处理模块3
3.2界面部分3
4设计步骤5
4.1基本框架5
4.1.1绘制界面5
4.1.2编辑菜单6
4.1.3编写代码7
4.2工具栏10
4.2.1制作工具栏10
4.2.2编写工具栏的按钮代码11
4.3状态栏11
4.3.1制作状态栏11
4.3.2编写代码11
4.4翻译功能的实现12
5核心技术15
5.1RichTextBox控件15
5.1.1RichTextBox控件的主要属性15
5.1.2RichTextBox控件的主要方法15
5.2CommonDialog控件16
5.2.1使用CommonDialog控件16
5.2.2显示“打开”对话框16
5.2.3显示“颜色”对话框17
5.2.4显示“字体”对话框17
5.3Toolbar的常用属性和方法18
5.3.1常用属性18
5.3.2常用方法19
5.4对API函数的介绍19
5.4.1什么是API19
5.4.2对API函数的声明19
5.4.3对设计中使用到的API函数的说明20
6结束语21
参考文献22
致谢23
1引言
众所周知的Windows记事本Notepad是Windows自带的处理文本的重要软件,它功能强大,界面友好,是广大用户处理文本的好工具。
然而对于从事文字处理及文字编辑的专业开发者来说,可能更希望用自己定制的记事本来完成特定工作,以增强作品的功能,使自己的作品更加优秀、更加具有个性化特色。
但是,专业性的处理软件过于复杂,程序文件又很大,对于应用软件开发者来说还有版权问题,更不具有自己的特色,甚至还会产生很多问题,怎么办呢?
VisualBasic是基于Basic的可视化程序设计语言,它是一种面向对象的应用程序集成开发环境。
VB一方面继承了Bacic语言简单易学的特点,另一方面在其编程环境中采用了面向对象的可视化设计工具、事件驱动的编程机制、动态数据驱动等先进的软件开发技术,为用户提供了一种所见即所得的可视化程序设计方法。
其中VisualBasic6.0为软件开发人员提供了现成的窗体和控件,只要稍稍熟悉VB编程,就可以轻松地设计出具有专业化界面的、有自己特色的文字处理软件来,而且,原有的软件开发工具可能不支持的功能也都能方便地引用到设计的应用软件产品中来。
下面就对用VisualBasic6.0设计一个简单的记事本程序的方法加以说明。
2设计思路
在VisualBasic6.0中,可用于显示文字的控件有标签(Label)、文本框(TextBox)、图片框(PictureBox)和RichTextBox控件等[1]。
其中RichTextBox是一种既可以输入文本、又可以编辑文本的文字处理控件,与TextBox控件相比,文字处理功能更加丰富,可以设定文字的颜色、字体,还具有字串检索功能。
该控件可以打开、存储.rtf格式文件及ASCII文本格式的文件,并能对文件进行编辑[2]。
而公用对话框CommonDialog是一种定制控件,通过设置相应的方法,可以提供一套的Windows标准对话框,如打开文件、保存文件、文本设置、颜色设置对话框等[3]。
另外,在VB中可以方便地调用API函数来实现用其它软件无法实现的文字编辑功能。
因此,我们可以综合使用API函数,并借助RichTextBox强大的文字编辑功能和公用对话框CommonDialog以及ToolBar、ImageList等控件的页面设置功能设计出小巧而又别具个性的文本编辑器。
3模块设计
3.1模块部分
该设计共分为三个模块,它们是依次是主菜单模块,工具栏模块和文本处理模块。
各个模块功能不同,各自实现不同的操作。
下面就分别对各个模块的主要内容和功能作一一介绍。
3.1.1主菜单模块
在窗体上设置“文件”,“编辑”,“格式”,“搜索”,“翻译”,“帮助”等六个主菜单。
每个主菜单又有自己的下拉菜单,分别实现用户对文本的各种操作。
3.1.2工具栏模块
主菜单下设置一个工具栏,设有“新建”,“打开”,“保存”,“拷贝”,“剪切”,“粘贴”等按钮。
程序运行后当光标置于某一按钮图标上时,自动显示该按钮的键名。
除此之外,用户可根据个人喜好选择自已的按钮图标,工具栏的设置使该记事本更具个性化特色,并大大方便了用户的操作。
3.1.3文本处理模块
这一部分是整个设计的主体部分,是整个程序与用户的接口,在这里用户可以输入各种文本,比如文本文档、RichText文档,并能够对其进行编辑,具有打开文件、保存文件、剪切、拷贝、粘贴、设置文字的字体、大小、颜色等功能,最重要的是它还能实现对用户所输入的英文单词的翻译。
总之,用户的各种操作都在这里完成。
3.2界面部分
一个友好而又大方的界面是整个设计成功与否的关键,良好的界面更容易使用户接受,该设计完成后,运行,将显示如图3.1所示的界面。
图3.1编辑界面
整个界面简单,明了,给人一种赏心悦目的感受。
虽然结构简单,但功能丰富,用户可以在上面方便地实现诸如打开文件、保存文件、剪切、拷贝、粘贴、设置文字的字体、大小、颜色,对用户所输入的英文单词的进行翻译等各种操作。
4设计步骤
4.1基本框架
我们将按如下三个步骤来实现记事本程序的基本框架。
4.1.1绘制界面
窗体中包含一个菜单栏、一个通用对话框、一个工具栏、一个RichTextBox文本框、一个进度条、一个状态栏和一个ImageList控件,如图4.1所示。
图4.1基本框架
具体步骤如下:
新建一个标准EXE工程,将其Caption属性改为“我的记事本”,点击Icon属性给它找个合适的Icon图标。
单击菜单“工程”-“部件”,在弹出的“部件”对话框里找到MicrosoftRichTextBox6.0和公共对话框MicrosoftCommonDialog6.0并选中它们,单击“确定”按钮[3](加入控件的过程如图4.1所示)。
这时左边的工具栏上出现了我们刚才新添的两个控件了。
在窗体上绘制RichTextBox和CommnDialog,其中RichTextBox的大小和位置可不用理睬,我们将在代码中处理它,当然,有必要把它的ScrollBar属性设为2-rtfVertical,这样在打开和编辑文件时垂直滚动条才可用[4]。
图4.2插入组件
4.1.2编辑菜单
按Ctrl+E调出菜单编辑器,我们来做如下几个菜单[5]:
(1)文件菜单:
文件(第一层)mnuFile
新建(第二层)mnuNew
打开(第二层)mnuOpen
保存(第二层)mnuSave
-(第二层)mnuFileSep(分隔线)
退出(第二层)mnuExit
(2)编辑菜单:
编辑(第一层)mnuEdit
复制(第二层)mnuCopy
剪切(第二层)mnuCut
粘贴(第二层)mnuPaste
-(第二层)mnuEditSep(分隔线)
全选(第二层)mnuSelecAll
(3)格式菜单:
格式(第一层)style
字体(第二层)zt
颜色(第二层)color
(4)搜索菜单:
搜索(第一层)mnuSearch
查找(第二层)mnuFind
查找下一个(第二层)mnuFindOn
(5)翻译菜单
(6)帮助菜单:
帮助(第一层)mnuHelp
使用说明(第二层)mnuUsage
关于(第二层)mnuAbout
至此,完成了整个菜单的编辑(其过程如图4.3所示)。
图4.3编辑菜单
好了,其它的菜单项以后再根据需要添加。
现在进入:
4.1.3编写代码
'声明变量[5]
DimstrrAsString
DimrsAsADODB.Recordset
DimconAsADODB.Connection
DimsdAsString
DimfilenameAsString
DimsFindAsString
DimFileType,FiTypeAsString
'初始化程序
PrivateSubForm_Load()
'设置程序启动时RichTextBox1中的内容
RichTextBox1.Text=""
‘设置当窗口大小改变时编辑区大小的改变
PrivateSubForm_Resize()
OnErrorResumeNext'出错处理
RichTextBox1.Height=Form1.Height
'FORM的工作区高度
RichTextBox1.Width=Form1.Width
'FORM的工作区宽度EndSub
'新建文件中要写入的代码
PrivateSubmnuNew_Click()
RichTextBox1.Text=""'清空文本框
FileName="未命名"
Me.Caption=FileName
EndSub
'打开文件中要写入的代码
DimtxtstrAsString,sAsString*1
OnErrorGoToerrhandle
CommonDialog1.Filter="文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"
CommonDialog1.ShowOpen
RichTextBox1.Text=""'清空文本框
filename=CommonDialog1.filename
Me.Caption="我的记事本:
"&filename
‘用Open语句将文件打开
OpenfilenameForInputAs#1
txtstr=""
‘设置进度条
ProgressBar3.Min=0
ProgressBar3.Max=LOF
(1)
ProgressBar3.Visible=True
ProgressBar3.Value=0
DoWhileNotEOF
(1)
s=Input(1,#1)
txtstr=txtstr&s
ProgressBar3.Value=ProgressBar3.Value+1
Loop
RichTextBox1.Text=txtstr
Close#1
ExitSub
errhandle:
MsgBoxErr.Description
Close
'保存文件
PrivateSubmnuSave_Click()
DimoutputAsString
CommonDialog1.Filter="文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"
CommonDialog1.ShowSave
FileType=CommonDialog1.FileTitle
FiType=LCase(Right(FileType,3))
filename=CommonDialog1.filename
SelectCaseFiType
Case"txt"
RichTextBox1.SaveFilefilename,rtfText
Case"rtf"
RichTextBox1.SaveFilefilename,rtfRTF
Case"*.*"
RichTextBox1.SaveFilefilename
EndSelectEndSub
'退出
PrivateSubmnuExit_Click()
End
EndSub
'复制
PrivateSubmnuCopy_Click()
Clipboard.Clear
Clipboard.SetTextRichTextBox1.SelText
EndSub
'剪切
PrivateSubmnuCut_Click()
Clipboard.Clear
Clipboard.SetTextRichTextBox1.SelText
RichTextBox1.SelText=""
EndSub
'全选
PrivateSubmnuSelectAll_Click()
RichTextBox1.SelStart=0
RichTextBox1.SelLength=Len(RichTextBox1.Text)
EndSub
'粘贴
PrivateSubmnuPaste_Click()
RichTextBox1.SelText=Clipboard.GetText
EndSub
'查找
PrivateSubmnuFind_Click()
sFind=InputBox("请输入要查找的字、词:
","查找内容",sFind)
RichTextBox1.FindsFind
EndSub
'继续查找
PrivateSubmnuFindOn_Click()
RichTextBox1.SelStart=RichTextBox1.SelStart+RichTextBox1.SelLength+1
RichTextBox1.FindsFind,,Len(RichTextBox1)
EndSub
'使用说明
PrivateSubmnuUsage_Click()
MsgBox"该记事本由……制作,如有问题请与作者联系。
",vbOKOnly,"信息"
EndSubEndSub
'关于
PrivateSubmnuAbout_Click()
OnErrorGoTohandler
RichTextBox1.LoadFile"Readme.txt",rtfText
Me.Caption="我的记事本:
"&"使用说明"
ExitSub
handler:
MsgBox"所设计的文本编辑器的文字处理功能类似于Word,不仅能够编辑文本文档、RichText文档,具有打开文件、保存文件、剪切、拷贝、粘贴、设置文字的字体及大小、设置颜色等功能,还能实现对英文单词的翻译。
",vbOKOnly,"信息"
EndSub
至此,我们的记事本可以编译使用了。
点击菜单“文件”-“生成我的记事本.EXE”。
然后双击可执行文件就可以在脱离VB环境下直接运行了。
当然,这样的记事本还比较粗糙,我们还需要做些工作:
美化程序界面。
多数字处理软件都有工具栏和状态栏。
工具栏和状态栏除了能美化我们的程序使其更具有专业性质外,还给用户带来操作上的便利。
现在我们就来做一做这两样东西。
4.2工具栏
4.2.1制作工具栏
单击“工程”-“部件”,选中MicrosoftWindowsCommonControl6.0并确定[6]。
这时,我们要用到的控件就出现在左边的工具栏上了。
要做工具栏,首先需要一个叫ImageList的控件来装载图像。
在程序界面上添加它,然后右键单击此控件,左键单击“属性”,弹出“属性页”对话框的“图像”,再单击“插入图片”就可以一次性装载图片了。
图片可以根据各个喜好任意选择。
另外,在插入图片时给每一张图片注明关键字,以便在引用图片时不至于混乱。
如插入“新建”的图片,我们在“关键字”栏注明“New”[7]。
图片有了,接下来在程序界面添加工具栏(ToolBar)。
添加后工具栏就出现在菜单下面,右键单击它,选择“属性”,在弹出的“属性页”对话框中的“通用”项作些设置,主要如下两项[8]:
(1)“图像列表”:
选择ImageList1
(2)“样式”:
根据喜爱选择1-trbStandard或者2-trbFlat,继续点击“属性页”的“按钮”选项,插入若干按钮。
按钮有多种样式,请根据需要设置。
这里请一定注意:
每一个与用户操作有关的按钮都必须注明关键字、装载图片,如“新建”按钮,在“关键字”项注明“新建”,在“图像”项键入“New”(即ImageList1中的图片关键字),需要的话还可以在“工具提示文本”项填入适当的提示语。
4.2.2编写工具栏的按钮代码
工具栏按钮的代码编辑很简单,可以按照下面的格式去编写[5]:
PrivateSubToolBar1_ButtonClick(ByValButtonAsMSComctlLib.Button)
OnErrorResumeNext'出错处理
SelectCaseButton.Key'按关键字选择
Case"新建"
mnuNew_Click'等于菜单项“新建”被单击
Case"打开"'等于菜单项“打开”被单击
mnuOpen_Click
'......(继续编写其它按钮的代码)
EndSelect
EndSub
完成后试运行一下我们的程序,我们发现,有了工具栏之后,程序变得漂亮多了。
4.3状态栏
4.3.1制作状态栏
状态栏的英文名字叫StatusBar,在窗体上添加它后会默认出现在窗体的最下方。
用鼠标右键点击它,调出“属性页”对话框,单击“窗格”项,插入一些窗格,可以将各个窗格的“样式”设置为[9]:
0-sbrText显示文本,需编写代码
1-sbrCaps显示大小写状态,无需编程
2-sbrNum显示NumLock键开关状态,无需编程
3-sbrIns显示Insert键状态,无需编程
5-sbrTime显示时间,不编程时时间不会随系统时钟变化
6-sbrDate显示日期,无需编程
4.3.2编写代码
状态栏根据其“样式”属性决定用不用编写代码(如上文所述)。
下面举些例子,我们可以根据需要认真揣摩,从而达到举一反三的效果。
例一:
用户选取了“新建”后,让第一个窗格显示:
“目前状态:
正在打开文件《……》”。
请将下面代码写进“打开”菜单里面[5]:
StatusBar1.Panels
(1).Text="目前状态:
正在打开文件"&"《"&CommonDialog1.FileTitle&"》"
例二:
让第三个窗格显示时间并让时间跟随系统时钟变化。
首先,给程序加一个Timer控件,将其Interval属性设为1000。
然后:
在Form_Load过程加入:
StatusBar1.Panels
(1).Text=Time;然后给Timer控件编写代码:
PrivateSubTimer1_Timer()
IfStatusBar1.Panels(3).Text<>CStr(Time)Then
StatusBar1.Panels(3).Text=Time
EndIf
EndSub
例三:
当编辑框的文本发生变化时让第一个窗格显示:
“正在编辑文档:
文件名”。
PrivateSubRichTextBox1_Chang()
StatusBar1.Panels
(1).Text="正在编辑文档:
"&CommonDialog1.FileName
EndSub
4.4翻译功能的实现
下面我们将要实现当把鼠标移动到文本框内的某个单词上,即会显示这个单词的中文翻译的功能。
要实现这样的功能,我们要以RichTextBox控件作为文字载体,并借助API函数中的SendMess
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VB 记事本 设计 实现