VB编辑器课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉理工大学华夏学院课程设计报告书
课程名称:VB课程设计
题目:编制文本编辑器
系名:信息工程系
专业班级:软件2101
姓名:杨妮
学号: 10225610136
指导教师:
2011 年 12 月 30 日
课程设计任务书
学生姓名:杨妮专业班级:软件2101 指导教师:司晓梅工作单位:信息工程系
设计题目:编制文本编辑器
初始条件:要求具备VB语言基础;顺序、选择、循环结构;界面设计、RichTextBox 等相关知识。
要求电脑配置Visual Basic 6.0集成开发环境。
要求完成的主要任务:
主要任务:
1.使用VB的控件(RichTextBox)编写一个文本编辑器。
2.实现打开/保存/新建/查找/替换字符,能改变文字的大小/字体/着色等功能。
3.要求外观类似于Windows系统自带的记事本。
设计报告撰写格式要求:
1. 设计题目与要求;
2. 设计思想、系统总体框架说明;
3. 数据结构、系统各模块功能说明及具体实现的算法;
4. 用户界面的设计步骤;写出涉及的主要控件的名称及作用;
5. 运行结果、系统关键界面的截图;
6. 调试记录(静态检查、动态检查过程中所遇到的问题、解决的办法)、心得体会(即程序设计过程中的经验、体会);
7. 该系统的运行条件(系统支撑环境),运行该系统的方法;
8. 附录:源程序,要求源代码中要有清晰的注释。
时间安排:
12月19日上午布置课程设计任务;分配题目后,查阅资料、准备程序;
12月 20日~12月22 日上机编写、调试程序、书写课程设计报告;
12月23 日上午答辩并提交课程设计报告及相关文档。
指导教师签字:2011年12 月15 日
系主任签字:2011年12 月15 日
一、VB课程设计目的
通过一学期的VisualBasic程序设计学习,以及平时的上机实验,初步掌握了VB程序设计的各种方法,学会了编辑最基本的VB程序;对于完整的VB 程序设计来讲是很不足的,平时掌握的只是单独的窗体(Form)程序编写,以及各种简单控件的使用,没有做到很好连贯性,所以有必要做一次完整的VB 程序设计,结合所学的基本知识,使用多个窗体自成一套系统,加上各种控件的综合运用,初步设计一个合格的VB应用程序。
自从接到我们要上课程设计课开始,我们知道word的文本编辑器,当然众所周知word是当今最流行最常用的文本编辑器,用来日常对工作生活中的文本进行编辑,它的功能强大,也在软件设计业成为了一种流行的标准。
我们这次设计的就是以word的一些基本功能为基础,由于我们的能力有限我们把一些特殊功能删除了,只留下了一些简单的功能例如:剪切、新建、复制、粘贴、查找等。
此次设计课主要是锻炼我们的vb设计能力和思维考虑能力使我们的vb 学习真正的用到实处,无论在将来工作还是学习有着重要作用
二、设计题目与要求
文本编辑器
1.使用VB的控件(RichTextBox)编写一个文本编辑器。
2.实现打开/保存/新建/查找/替换字符,能改变文字的大小/字体/着色等功能。
3.要求外观类似于Windows系统自带的记事本。
三、设计思想、系统总体框架说明
题目为文本编辑器,既是最基本的文本编辑程序,首先必须做好文本编辑器本身的功能,然后对其完善做成一个完整的小程序,基本功能和我们平时用的记事本差不多。
基本功能说明:功能是这个文本编辑器的核心内容,也就是程序的作用,它是用来做什么的;本程序就是用来编写文本的,编写过程中要用到窗体(Form)一个,控件包括:RichTextBox(超文本框)、CommonDialog(通用对话框),以及InputBox(消息框)、菜单编辑器等。
要做的工作就是编写代码把这些控件和窗体等结合为一体,使得程序能够成为一体,顺参运行。
1、典型功能
(1)查找和替换
在一个文本文件中查找一个词或者一个字符串,把一个字符串替换成另
一个字符串。
可采取各种方式进行:全局查找替换、条件查找替换、无
条件查找替换。
(2)剪切、复制、粘贴
大多数文本编辑器都支持文件内的或者文件间的复制或者移动。
字体设
置大多数文本编辑器都有字体设置这一个功能
(3)打开、保存、新建、
这也是文本编辑器的一个最简单的功能
总体框架
2、绘制界面
新建一个标准EXE工程,将其Caption属性改为“易记本”,点击Icon属性给它找个合适的Icon图标。
单击菜单“工程”-“部件”,在弹出的“部件”对话框里找到MicrosoftRichTextBox 6.0和公共对话框Microsoft CommonDialog6.0并选中它们,单击“确定”按钮。
这时左边的工具栏上出现了我们刚才新添的两个控件了。
在窗体上绘制RichTextBox和CommnDialog,其中RichTextBox的大小和位置可不用理睬,我们将在代码中处理它,当然,有必要把它的ScrollBar属性设为2-rtfV ertical,这样在打开和编辑文件时垂直滚动条才可用。
3、编辑菜单
点击右键,打开菜单编辑器,设置标题(文件、编辑、格式、查看、帮助)
(1)文件菜单(File):
新建———New (Ctrl+N)
打开———Open (Ctrl+O)
保存———Save (Ctrl+S)
- ———FileSep (分隔线)
退出———Exit (Ctrl+E)
(2)编辑菜单(Edit):
复制———Copy (Ctrl+C)
剪切———Cut (Ctrl+X)
粘贴———Paste (Ctrl+V)
- ———EditSep (分隔线)
全选———SelecAll (Ctrl+A)(3)格式菜单(Format):
字体———Font
(4)搜索菜单(Search):
查找———Find
查找下一个———Findnext
(5)帮助菜单(Help):
使用说明———Usage
关于———About
4、程序代码:
(1)声明查找变量
Dim sFind As String
(2)声明文件类型
Dim FileType, FiType As String
(3)初始化程序
Private Sub Form_Load()
(4)设置程序启动时的大小
Me.Height = 6000
Me.Width = 9000
End Sub
(5)设置编辑框的位置和大小
Private Sub Form_Resize()
On Error Resume Next '出错处理
RichTextBox1.Top=20
RichTextBox1.Left=20
RichTextBox1.Height = ScaleHeight-40
RichTextBox1.Width = ScaleWidth-40 End Sub
文件菜单
“新建”
Private Sub New_Click()
RichTextBox1.Text = "" '新建文本时清空文本框
FileName = "未命名"
Me.Caption = FileName
End Sub
“打开”
Private Sub Open_Click()
CommonDialog.Filter = "文本文档(*.txt)|*.Txt|RTF 文档(*.rtf)|*.rtf所有
文件(*.*)|*.*"
CommonDiolag.ShowOpen
RichTextBox 1.Text="" '打开新的文件时清空原来的文本框X001(1前的空格去掉) FileName = CommonDialog.FileName
RichTextBox1.LoadFile FileName
Me.Caption="易记本":&FileName
End Sub
“保存”
Private Sub Save_Click()
CommonDialog.Filter = "文本文档(*.txt)|*.Txt|RTF 文档(*.rtf)|*.rtf所
有文件(*.*)|*.*"
CommonDiolag.ShowSave
FileType=CommonDialog1.FileTitle
FileType=LCase(Right(FileType,3))
FileName=CommonDialog1.FileName
Select Case FileType
Case "txt"
RichTextBox|.SaveFile FileName,rtfText
Case"rtf"
RichTextBox|.SaveFile FileName,rtfRTF
Case"*.*"
RichTextBox|.SaveFile FileName,rtfName
End Select
Me.Caption="易记本:" &FileName
End Sub
“退出”
Private Sub Exit_Click()
End
End Sub
编辑菜单
“复制”
Private Sub Copy_Click()
Clipboard.Clear
Clipboard.SetText RichTextBox1.SelText End Sub
“剪切”
Private Sub Cut_Click()
Clipboard.Clear
Clipboard.SetText RichTextBox1.SelText
RichTextBox1.SelText = ""
End Sub
“粘贴”
Private Sub Paste_Click()
RichTextBox1.SelText = Clipboard.GetText
End Sub
“全选”
Private Sub SelectAll_Click()
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text) End Sub
格式菜单
“字体”
Private Sub Font_Click()
With Form1.Edit_Frame
.SelFontName = "宋体"
.SelFontSize = "30"
.SelBold = True
.SelItalic = True
.SelColor = vbRed
End With
End Sub
搜索菜单
“查找”
Private Sub Find_Click()
inputbox()
content = InputBox("输入要查找的字符:", "查找内容", content)
Edit_Frame.Find content
End Sub
“查找下一个”
Private Sub FindNext_Click()
Edit_Frame.SelStart = Edit_Frame.SelStart + Edit_Frame.SelLength + 1X002 Edit_Frame.Find content, , Len(Edit_Frame)
End Sub
帮助菜单
“使用说明”
Private Sub Usage_Click()
On Error GoTo handler
RichTextBox1.LoadFile "Readme.txt", rtfText '请写好Readme.txt文件并存入程序所在文件夹中
Me.Caption = "易记本:" & "使用说明"
Exit Sub
handler:
MsgBox "使用说明文档可能已经被移除,请在编程天堂 官网下载!", vbOKOnly, " 错误信息"
End Sub
“关于”
Private Sub About_Click()
MsgBox "超级记事本 Ver1.0 版权所有(C) 2001 土人",vbOKOnly,"关于记事本" End Sub
设置弹出式菜单(即在编辑框中单击鼠标右键时弹出的动态菜单)Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu mnuEdit, vbPopupMenuLeftAlign
Else
Exit Sub
End If
End Sub
防止在切换输入法时字体自变
Private Sub RichTextBox1_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeySpace Then
RichTextBox1.SelFontName = CommonDialog1.FontName
End If
End Sub
四、用户界面的设计步骤;写出涉及的主要控件的名称及作用;
多数字处理软件都有工具栏和状态栏。
工具栏和状态栏除了能美化我们的程序使其更具有专业性质外,还给用户带来操作上的便利。
现在我们就来做一做这两样东西。
(一)制作工具栏
单击“工程”-“部件”,选中Microsoft Windows Common Control 6.0并确定。
这时,我们要用到的控件就出现在左边的工具栏上了。
要做工具栏,首先需要一个叫ImageList的控件来装载图像。
在程序界面上添加它,然后右键单击此控件,左键单击“属性”,弹出“属性页”对话框的“图像”,再单击“插入图片”就可以一次性装载图片了(如不满意,以后还可以添加)。
图片可在C:\Microsoft Visual Studio\Common\Graphics\Bitmaps\TlBr_W95下选择(这里假设你的VB安装在C盘下)。
注意了:在插入图片时给每一张图片注明关键字,以便在引用图片时不至于混乱。
如插入“新建”的图片,我们在“关键字”栏注明“New”。
图片有了,接下来在程序界面添加工具栏(ToolBar)。
添加后工具栏就出现在菜单下面,右键单击它,选择“属性”,在弹出的“属性页”对话框中的“通用”项作些设置,主要如下两项:
1.“图像列表”:选择ImageList1
2.“样式”:根据喜爱选择1-trbStandard或者2-trbFlat
继续点击“属性页”的“按钮”选项,插入若干按钮。
按钮有多种样式,请根据需要设置。
这里请一定注意:每一个与用户操作有关的按钮都必须注明关键字、装载图片,如“新建”按钮,在“关键字”项注明“新建”,在“图像”项键入“New”(即ImageList1中的图片关键字),需要的话还可以在“工具提示文本”项填入适当的提示语。
(二)编写工具栏的按钮代码
工具栏按钮的代码编辑很简单,可以按照下面的格式去编写:
Private Sub ToolBar1_ButtonClick(ByVal Button As MSComctlLib.Button)
On Error Resume Next '出错处理
Select Case Button.Key '按关键字选择
Case "新建"
mnuNew_Click '等于菜单项“新建”被单击
Case "打开" '等于菜单项“打开”被单击
mnuOpen_Click
'......(继续编写其它按钮的代码)
End Select
End Sub
完成后试运行一下我们的程序,我们发现,有了工具栏之后,程序变得漂亮多了,只是有一个问题:打开一个较长的文档后,编辑框的下拉滚动条向上的箭头不见了。
原因是:工具条占用一定的空间。
解决方法:将“设置编辑框的位置和大小”中的RichTextBox1.Top = 20 和 RichTextBox1.Height = Me.ScaleHeight - 40分别改为RichTextBox1.Top = 380,RichTextBox1.Height = Me.ScaleHeight - 400即可。
主要控件名称作用
今天我们一起用RichTextBox控件来做一个文本编辑器,这个文本编辑器具有比较完备的功能,例如:查找字串、设置字体等。
通过这个程序,我们可以看到RichTextBox控件丰富的使用方法。
图
程序中使用的RichTextBox控件在默认状态下不在控件面板中,我们可以在控件面板上点鼠标右键“添加”,在“添加选择对话框”中找到这个控件并添加。
这时控件面板上会出现图标,这就是这个小程序的主打控件RichTextBox。
一个由RichTextBox实现的文本编辑器 '名称作用Form1 主窗体 ' Open 通用对话框 ' RichTextBox1 RichTextBox ' New “新建”菜单项 ' Open “打开”菜单项 ' Save “保存”菜单项 ' Exit “退出”菜单项 ' Font “字体”菜单项 'Find “查找”菜单项 ' Next “查找下一个”菜单项ShowOpen 显示“打开”对话框 'ShowSave 显示“另存为”对话框ShowFont 显示“字体”对话框'ShowHelp 调用 Windows 帮助引擎 CmdOpen.Flags = cdlCFBoth + cdlCFEffects CmdOpen.ShowFont '将RichTextBox1的属性根据“字体”对话框的变化作相应设置 '要改变 RichTextBox 控件中的字体特性,可以使用'SelFontName、SelFontSize 和 SelFontColor 属性。
控件中的每一个字符都有一个可唯一标识的整数索引。
控件中文本的第一个字符的索引是0。
'end 可选的。
决定在哪儿结束搜索的整数字符索引。
'options 可选的。
用来指定一个或多个可选功能常数的和。
所指定的功能如“设置值”中所述。
'
RichTextBox1.SelPrint CmdOpen.hDC End Sub '当“保存”菜单项被点击时 Private Sub mnuSave_Click() CmdOpen.ShowSave 'RichTextBox的SaveFile方法,保存文本 RichTextBox1.SaveFile (CmdOpen.FileName) End Sub
RichTextBox控件的常用的属性、事件和方法。
RichTextBox 控件可用于输入和编辑文本,它同时提供了比常规的TextBox控件更高级的格式特性。
通过这些属性,可对该控件中任何部分的文本使用不同的格式,可以将文本变为粗体或斜体,改变文本的颜色,创建上标或下标,可以调整段落的左右缩进值,还可以使用悬挂式缩进等。
而且RichTextBox控件支持大于64K的文本,这些都是TextBox控件所不可比拟的。
LoadFile方法和SaveFile方法:它们的作用分别是从文件中导入文本和保存文本到指定的文件,这两个方法支持txt和rtf格式的文本文件,使用的语法是:
object.SaveFile(pathname, filetype) 其中pathname是要打开或保存的文件路径,filetype是要打开或保存的文件类型(0表示txt文件;1表示rtf格式的文件)。
Find方法:其语法是:object.Find(string, start, end, options)
其中string是要查找的字符串;start, end是查找开始和结束的位置,如果不指定的话默认是在全部文本中查找;options是查找时匹配的模式,有三种选择,rtfWholeWord 为整个单词匹配而不是单词片段,rtfMatchCase为是否忽略字体的差别,rtfNoHighlight 为找到的单词是否高亮显示。
SelPrint方法:将RichTextBox控件中格式化文本发送给设备进行打印,使用的语法为:object.SelPrint(hdc),hdc为准备用来打印控件内容的设备的句柄。
以上的方法和属性只是RichTextBox控件丰富用法的
五、运行结果、系统关键界面的截图
程序运行初始窗口
图(1)菜单
图(2)右击弹出式菜单
桌面查找及打开功能
六、心得体会
通过本次的课程设计,总体来说难度适中,通过实践感觉这一学期的VB学习不是很深入,许多真正需要掌握的东西还没学会,或是没学好,原因是平时理论学习不够,没用真正理解,其次就是实践太少,不能熟练的使用VB开发环境。
具体说文本编辑器的设计,首先是控件的使用要注意,例如不能使用平时一般的Text文本框、因为其只适用于一般的文本显示,使用RichTextBox,可拥有文本的完整功能,不再添加滚动条等控件,而是使其自带滚动条,其次是菜单的设计,应注意菜单的名称书写,不能出现重复现象,否则要使用索引,不仅增加麻烦更不利于程序编写,然后编写代码的时候应注意必须与菜单中的名字一一对应,否则出现错误;最后要注意程序的完整性以及实用性、便捷性。
总之,通过本次的VB课程设计,不仅找到了以前学习中的不足,更对我的能力有了很大的提高,更体会到了实践的重要性,所有的语言设计课程都必须通过实践来掌握,同时要建立在掌握理论知识的基础上,只有紧密的有机结合起来,才能真正学好一门语言设计课程。