AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > C++

C++ Builder 处理控件中的文本

51自学网 http://www.51zixue.net
5.3 处理控件中的文本
下列各节介绍了如何使用richedit控件和memo(备注)控件的各种特性。有些特性在edit控件中也可使用。
· 设置文本对齐方式。
· 在运行时增加滚动条。
· 增加剪贴板对象。
· 选择文本。
· 选定全部文本。
· 剪切、拷贝及粘贴文本。
· 删除选定文本。
· 禁用菜单项。
· 提供弹出式菜单。
· 处理OnPopup事件。

5.3.1 设置文本对齐方式
在richedit组件或memo组件中,文本可以是左对齐、右对齐或居中。要改变文本对齐方式,可设置组件的Alignment属性。调整只当WordWrap属性为true时才生效,若自动换行被关闭,也就不存在可供对齐的边缘。

例如,下列代码是RichEdit根据其中的按钮被选择的状态设置它的文本对齐方式:


5.3.2 在运行时增加滚动条
richedit组件或memo组件可根据需要包含水平或垂直滚动条,或者两者都有。当自动换行启用时,组件只需要垂直滚动条。若用户关闭自动换行,组件可能同时还需要水平滚动条,因为文本在编辑器右边不受限制。

要在运行时增加滚动条:
1) 确定是否文本可以超过右边界。在大多数情况下,这也就意味着检查自动换行是否启用。还可同时检查是否实际上已有文本行超过了控件宽度。
2) 设置richedit组件或memo组件的ScrollBars属性来增加或删除滚动条。

下例为Character|WordWrap菜单项的OnClick事件处理程序。


richedit组件和memo组件处理滚动条的方法有少许差异。richedit组件在文本都在边界内时隐藏其滚动条。而memo组件则在滚动条启用后一直显示它们。

5.3.3 增加剪贴板对象
大多数的文本处理应用程序会给用户提供在文档之间移动选定文本的方法,包括文档在不同的应用程序中。C++Builder的Clipboard对象封装了Windows剪贴板及剪切、拷贝和粘贴文本(及其他格式,包括图形)等方法。Clipboard对象在Clipbrd单元中声明。

要在应用程序中增加剪贴板对象:
1) 选择需使用剪贴板的单元。
2) 在窗体的.H文件,加入,
 #include <vcl/Clipbrd.hpp>

5.3.4 选择文本
在将任何文本发送给剪贴板之前,文本必须先被选定。高亮显示选定文本是编辑组件内嵌的特性。当用户选定文本时,会高亮显示。表5-1是一些处理选定文本的通用属性。


5.3.5 选定全部文本
SelectAll方法选择richedit组件或memo组件中所有的内容。这在组件内容超出组件可见区域时特别有用。在其他的大多数情况下,用户使用键盘或鼠标选择文本。要全部选定richedit组件或memo组件中所有的内容为,可调用组件的SelectAll方法。
例如:


5.3.6 剪切、拷贝及粘贴文本
应用程序使用剪贴板单元能剪切、拷贝及粘贴文本、图形和对象(通过Windows剪贴板)。编辑组件封装了标准Windows文本处理控件,它们中内嵌了与剪贴板交互的所有方法(参见6.可获得更多的关于在剪贴板中使用图形的信息)。要使用剪贴板剪切,拷贝及粘贴文本,可分别调用编辑组件的CutToClipboard、CopyToClipboard及PasteFromClipboard方法。
例如,下列代码分别是Edit|Cut、Edit|Copy和Edit|Paste的OnClick事件处理程序:


5.3.7 删除选定文本
可在编辑组件中删除选定文本,而不是剪切到剪贴板。要删除选定文本,可调用ClearSelection方法。下例为Edit菜单中的Delete菜单项的OnClick事件处理程序:


5.3.8 禁用菜单项
不从菜单删除菜单命令而禁用它们常常是很有用的。例如,在一个文本编辑器里,若当前没有文本被选定,则Cut、Copy和Paste命令都是不适用的。用户选择菜单的同时也是启用或禁用菜单项的合适时机。要禁用菜单项,可将其Enabled属性设为false。
下例是子窗体菜单栏的Edit菜单项的OnClick事件处理程序。它根据RichEdit1中是否存在选定文本而设置了Edit菜单项中Cut、Copy和Delete命令的Enabled属性。Paste命令的启用或禁用则根据剪贴板中是否存在文本。


剪贴板的HasFormat方法根据剪贴板是否包含对象、文本或特定格式的图像返回一布尔值。通过使用参数CF_TEXT调用HasFormat,可确定剪贴板中是否存在文本,并在适当的时机启用或禁用Paste项。

5.3.9 提供弹出式菜单
弹出式,或本地的菜单是通用的使应用程序易于使用的特性。它们可使用户无须移动鼠标,只需在应用程序工作区中单击鼠标右键就可访问到一个常用命令列表。

例如,在文本编辑器应用程序中,可加入一个弹出式菜单用以重复Cut、Copy和Paste编辑命令。这些弹出式菜单项可使用Edit菜单中相应项的事件处理程序。同时,也不需要为弹出式菜单项创建加速键或快捷键,因为其相应的常规菜单项通常已有快捷方式。

窗体的PopupMenu属性指定当用户右击窗体中任意项时显示的弹出式菜单。每个控件都有其本身的PopupMenu属性,并可覆盖窗体的PopupMenu属性,这样就可为特定的控件定制弹出式菜单。要在窗体中加入弹出式菜单:
1) 将一个弹出式菜单组件加入窗体。
2) 使用菜单设计器来定义弹出式菜单的项。
3) 将窗体或显示该菜单的控件的PopupMenu属性设为弹出式菜单组件名。
4) 为弹出式的OnClick事件分配处理程序。

5.3.10 处理OnPopup事件
在显示弹出式菜单之前可能会想要调整其菜单项,就如在常规菜单中启用或禁用菜单项一样。在常规菜单中,可在菜单中处理菜单项的OnClick事件。而在弹出式菜单中,没有最上层的菜单栏,因此为准备弹出式菜单的命令,需处理菜单组件本身的事件。弹出式菜单组件提供了OnPopup事件来完成此类任务。

要在弹出式菜单显示之前调整菜单项:
1) 选择弹出式菜单组件。
2) 为其OnPopup事件分配处理程序。
3) 在事件处理程序中编写代码处理启用、禁用、隐藏或显示菜单项。

在下列代码中,在5.3.8节中介绍过的EditEditClick事件处理程序被分配给弹出式菜单组件的OnPopup事件。只在其中为弹出式菜单的各个项加入了一行代码。

 

 

 
上一篇:C++&nbsp;Builder&nbsp;在控件中加入图形  下一篇:C++&nbsp;Builder&nbsp;实现控件的拖动-停靠操作