RTF编辑器

发布时间:2010-04-27 21:21:55

河北工业大学计算机软件技术基础(VB

本题难度级别:A 实现基本要求代码: 200 主要涉及: 扩展控件的使用

一、设计题目:RTF编辑器(出题人:曹新国)

二、目的与要求

1.目的

培养学生综合利用VB语言进行程序设计的能力,主要是利用扩展控件进行设计。

2.基本要求

设计一个和WINDOWS的“写字板”功能相当的RTF编辑器。

有功能全面的工具条以方便使用。

设置一个状态条,以显示当前的编辑状态(光标所在行号,插入状态等)

编辑区能够自动适应窗口的大小(设置最小限制),窗口可以最大化和最小化。

支持打开、保存TXT文件和RTF文件的功能,如有修改退出时提示是否保存。

通过系统剪贴板支持对文字和图片的常用编辑操作(删除、剪切、复制、粘贴)

可以设置文字的字体、字号、字形及色彩,能够设置段落的对齐方式(左中右)。

支持文本的查找操作,能够设置查找选项(整字匹配,区分大小写)

光标移动或者选择内容时,工具条上的相应按钮能自动反映当前位置内容的属性。

3.创新要求

在基本要求达到后,进行创新设计,创新方向提示如下:

实现与WORD类似的强力查找(支持字体、字号、字形及色彩等)和替换功能。

实现制表位的设定和清除(参见Windows中的“写字板”程序)

支持在文档中创建上标和下标(利用SelCharOffset 属性)

利用标尺设置左右缩进和悬挂式缩进以调整段落的格式。

支持OLE,即可以将EXCELWORD等的文档直接拖入其中。

其它方面的创新(功能实用,有一定的代码量)

三、设计方法和基本原理

1.问题描述

程序主界面见第一部分的示例图,功能描述参见基本要求和创新的内容。设计时可以通过运行随同本任务书一起提供的样例程序得知程序的一些特性。

如果要进行创新设计,可以运行WINDOWS系统自带的“写字板”程序,获得更多

2. 问题的解决方案

此设计题目要求必须使用VB的几种扩展控件:ToolBar, StatusBar, ImageList(3个控件在Microsoft Windows Common Controls部件中), RichTextBox(在Microsoft Rich TextBox Control 部件中),还有一个公用对话框控件(在Microsoft Common Dialog Control中),这些控件都需要加载到工具箱中才能在设计时使用。扩展控件的加载和使用方法参见教材或相关设计资料。

将相关的控件加入工具箱后,即可在窗体上适当位置放置并设置相应的属性。

设计程序主界面(主界面设计状态示意如下)

主窗体中需要使用5个扩展控件:工具条ToolBar放在顶部,状态条 StatusBar放在底部,图像列表 ImageList用于给工具条中的按钮提供图片,超级文本框RichTextBox用于编辑操作, 公用对话框控件CommonDialog用于取得打开和保存文件的文件名)

除了主窗体,尚需要另外两个窗体,一个是顔色选取对话框,一个是查找对话框,这两个窗体中用的都是VB的标准控件,直接按需要进行放置和设置即可。

②编写代码

需要对每一个窗体编写事件处理过程,选色对话框比较简单,对标签的点击事件进行处理即可,查找对话框稍复杂一些,需要根据用户输入的内容和选项利用RichTextBox提供的Find方法进行查找,需要一些简单的处理。

最主要的工作包含在主窗体中,代码包括事件处理过程和功能函数,还有必要的声明。变量声明部分声明本程序所需要的公用变量,因为涉及到窗体间的数据传递,本部分是必需的。

事件处理主要包括下面的事件(控件的事件名称按默认控件名给出):

Sub Form_Load()

作一些初始化的工作,包括填充工具条中的字体字号等工作。

字体和字号的可用列表部分代码参考如下:

For i = 0 To Screen.FontCount – 1 ’系统可用的显示字体数

Combo1.AddItem Screen.Fonts(i) ’加入工具条上的字体名列表框中

Next i

s1 = (8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72)

For i = 0 To 15

Combo2.AddItem s1(i) ’字号

Next I

Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button)

处理工具条某个按钮按下的事件,是程序的主要部分。

Sub RichText1_SelChange()

被选择的编辑文字发生变化时,调整工具条上的状态显示(包括字体、字号、粗体、斜体、下划线和对齐方式等),是程序的另一主要部分。

Sub Combo?_Click()

字体和字号的处理,将当前的设置应用于所选择的文字。

Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

处理程序退出前的保存提示,如果刚存过则不再提示保存。

Sub Form_Resize()

在窗口大小改变时调整控件的大小。

四、主要技术问题的描述:

本题技术问题不多,主要是学习新控件的使用方法,这些控件的使用比较方便,大部分可以在其属性的“自定义”中设置好,工具钮的的图片要事先制做好(.ICO或者.BMP,本题的所附的素材中已经提供了样例程序中用到的相应图标和图片,可以在设计时直接使用),然后放入ImageList控件,以便被其它控件使用,此控件是一个无运行界面控件,只负责为其它控件提供图像。如下图。

只要ToolBar属性页“通用”选项卡的“图像列表”中选择ImageList1ToolBar中的按钮就可以使用ImageList1中的图片了,点到“按钮”选项卡,给工具条设置按钮,要给每个按钮起个名字,以便能分辨点击时确定哪个按钮,名字可以放在Key或者Tag属性中,当然也可以放在Caption属性中,不过本题要求不得在按钮上显示文本,所以最好放在Key属性中,这也是标准的用法,按钮插入后,可以指定每个按钮的图片在图像列表中的位置,比如图中所示的前三个图片是“新建”、“打开”和“保存”按钮所用的图片,则在指定这些按钮的图片时,其图片序号应该分别指定为123,不同版本控件的自定义对话框有可能不同,设置相应属性的方法见下图。

如果想在工具栏上插入空白,以对不同功能的各个按钮进行分组,可以设定按钮的式样为3-tbrSeparator,如右图所示。为了在工具条左侧放置字体和字号组合框,需要预留一些空间,这可以插入一个按钮,并将其样式设置为4-tbrPlaceholder,然后设置其“宽度(保留区)”为合适的值。

状态条的设置主要也是通过属性窗口的“自定义”来完成,通过自定义属性页的各选项卡,可以设置工具条的多种属性,并可以插入多个不同样式的窗格。可以直接设置窗格样式来实现让一个窗格显示时间、日期、键盘状态,显示文本信息的窗格设置为“sbrText”样式即可。要修改其中显示的内容(比如说更新行号显示),可以通过类似StatusBar1.Panels("LineNumber").Text = 这样的语句来完成,当然在此处,显示行号的窗格应该具有关键字“LineNumber”(如右图所示),否则就不能以名字指定窗格了。

应该指出,要顺利完成此题,必须完全熟悉RichTextBox控件的各个事件、方法和属性。为了实现利用系统剪贴板进行编辑操作,还需要熟悉ClipBoard系统对象的用法。

五、参考资料

Visual Basic 程序设计教程 Visual Basic 实验教程

VB6.0程序员指南

VB6.0控件参考手册

VB参考资料中的“文本编辑器.ZIP

MSDN中文版,课程设计网站上提供的其它资料。

六、设计部分的评分标准(本题难度为A级,综合时乘难度系数1.0

完成基本要求前6(项目符号为“■”部分)

60

基本要求全部完成

80

创新要求完成任意两项(不包括“其它”)

90

创新要求完成4项以上

100

[注:最后得分是根据本部分得分(占最大比例)以及课程设计期间纪律、设计报告书、答辩情况综合得出]

RTF编辑器

相关推荐