西安卓普信息科技公司:vfp使用richtextbox控件做文本编辑器

来源:百度文库 编辑:偶看新闻 时间:2024/04/20 18:14:41
今天我们一起用RichTextBox控件来做一个文本编辑器,这个文本编辑器具有比较完备的功能,例如:查找字串、设置字体等。通过这个程序,我们可以看到RichTextBox控件丰富的使用方法。

  程序中使用的RichTextBox控件在默认状态下不在控件面板中,我们可以在控件面板上点鼠标右键“添加”,在“添加选择对话框”中找到这个控件并添加。这时控件面板上会出现图标,这就是这个小程序的主打控件RichTextBox。

  为了学习的方便,提供的源代码都提供了详细的中文注释,如下所示:

'-------------------------------------- ' 一个由RichTextBox实现的文本编辑器 '-------------------------------------- ' 洪恩在线 求知无限 '-------------------------------------- '------名称-------------作用------------ ' Form1 主窗体 ' CmdOpen 通用对话框 ' RichTextBox1 RichTextBox ' mnuNew “新建”菜单项 ' mnuOpen “打开”菜单项 ' mnuSave “保存”菜单项 ' mnuExit “退出”菜单项 ' mnuFont “字体”菜单项 ' mnuPrint “打印”菜单项 ' mnuFind “查找”菜单项 ' mnuNext “查找下一个”菜单项 '------变量-------------作用------------- ' sFind 待查找的字符串 '--------------------------------------- Option Explicit Public sFind As String Private Sub Form_Resize() '如果窗体不处于最小化RichTextBox1状态,改变RichTextBox1大小以适应窗体大小变化 If Form1.WindowState <> 1 Then RichTextBox1.Width = Form1.Width - 135 If Form1.Height < 1200 Then Form1.Height = 1200 End If RichTextBox1.Height = Form1.Height - 675 End If End Sub '当“退出”菜单项被点击时 Private Sub mnuExit_Click() Unload Me End End Sub '当“查找”菜单项被点击时 Private Sub mnuFind_Click() 'InputBox("弹出的输入框的标题",[默认值], [返回的值]) '语法:InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) sFind = InputBox("Find what?", , sFind) 'RichTextBox1.Find 是一个方法,根据给定的字符串,在 RichTextBox 控件中搜索文本 RichTextBox1.Find sFind End Sub '当“字体”菜单项被点击时 Private Sub mnuFont_Click() '显示“字体”对话框 '使用指定的方法,CommonDialog 控件能够显示下列对话。 '---------------------------------------- '方法 所显示的对话框 '---------------------------------------- 'ShowOpen 显示“打开”对话框 'ShowSave 显示“另存为”对话框 'ShowColor 显示“颜色”对话框 'ShowFont 显示“字体”对话框 'ShowPrinter 显示“打印”或“打印选项”对话框 'ShowHelp 调用 Windows 帮助引擎 '---------------------------------------- CmdOpen.Flags = cdlCFBoth + cdlCFEffects CmdOpen.ShowFont '将RichTextBox1的属性根据“字体”对话框的变化作相应设置 '---------------------------------------- '要改变 RichTextBox 控件中的字体特性,可以使用 'SelFontName、SelFontSize 和 SelFontColor 属性。 '---------------------------------------- With RichTextBox1 .SelFontName = CmdOpen.FontName .SelFontSize = CmdOpen.FontSize .SelBold = CmdOpen.FontBold .SelItalic = CmdOpen.FontItalic .SelStrikeThru = CmdOpen.FontStrikethru .SelUnderline = CmdOpen.FontUnderline End With End Sub '当“新建”菜单项被点击时,设置为空 Private Sub mnuNew_Click() RichTextBox1.Text = "" End Sub '当“查找下一个”菜单项被点击时 Private Sub mnuNext_Click() 'SelStart属性-返回或设置所选择的文本的起始点;如果没有文本被选中,则指出插入点的位置。 RichTextBox1.SelStart = RichTextBox1.SelStart + RichTextBox1.SelLength + 1 'object.Find(string, start, end, options) '------------------------------------------ 'Find 方法的语法包含下面部分: '部分 描述 '----------------------------------------- 'object 必需的。对象表达式,其值是“应用于”列表中的一个对象。 'string 必需的。要在控件中查找的字符串表达式。 'start 可选的。决定从哪儿开始搜索的整数字符索引。控件中的每一个字符都有一个可唯一标识的整数索引。控件中文本的第一个字符的索引是 0。 'end 可选的。决定在哪儿结束搜索的整数字符索引。 'options 可选的。用来指定一个或多个可选功能常数的和。所指定的功能如“设置值”中所述。 '----------------------------------------- RichTextBox1.Find sFind, , Len(RichTextBox1) End Sub '当“打开”菜单项被点击时 Private Sub mnuOpen_Click() '参看上面CommonDialog方法 CmdOpen.ShowOpen 'RichTextBox的LoadFile方法 RichTextBox1.LoadFile (CmdOpen.FileName) End Sub '当“打印”菜单项被点击时 Private Sub mnuPrint_Click() CmdOpen.Flags = cdlPDReturnDC + cdlPDNoPageNums If RichTextBox1.SelLength = 0 Then CmdOpen.Flags = CmdOpen.Flags + cdlPDAllPages Else CmdOpen.Flags = CmdOpen.Flags + cdlPDSelection End If '参看上面CommonDialog方法 CmdOpen.ShowPrinter '将 RichTextBox 控件中格式化文本发送给设备进行打印。 '语法 'object.SelPrint (hDC) 'SelPrint 方法的语法包含下面部分: '部分 描述 '----------------------------------------------- 'object 对象表达式,其值是“应用于”列表中的一个对象。 'hdc 设备描述体,是准备用来打印控件内容的设备。 '----------------------------------------------- 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控件所不可比拟的。

  RichTextBox 控件的主要属性有:
  ●SelFontName、SelFontSize 和 SelFontColor,它们用来设置文字的字体、大小和颜色。使用的语法是:
  object.SelColor [= color] 需要注意的是,这个属性改变的是选中文字的属性,而不是所有的文字,这样我们可以在编辑框内出现不同的字体、颜色等。

  ●另外程序中还用到了SelLength属性-返回或设置所选择的字符数。SelStart属性-返回或设置所选择的文本的起始点;如果没有文本被选中,则指出插入点的位置。

  RichTextBox控件的主要方法有:
  ●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控件丰富用法的一小部分,如果我们很好的利用它,就能做出比较完善的文本编辑器来。