|
<< Нажмите, чтобы показать Содержание >> Работа с буфером обмена в ТРВ-Редакторе (TRichView) |
TCustomRichView и его дочерние классы могут копировать информацию в буфер обмена в виде обычного текста, изображения, RTF и RVF, Markdown.
TRichViewEdit может вставлять информацию из буфера обмена в виде текста, изображения, RTF, HTML, RVF, URL, файла.
Также с помощью событий поддерживается работа с нестандартными форматами.
Главный метод для копирования выделенного фрагмента в буфер обмена – CopyDef.
Он копирует данные в форматах, перечисленных в свойстве TRichView.Options:
Опция |
Если включена, то... |
|---|---|
rvoAutoCopyText |
CopyDef копирует в выделение как текст ANSI (устарело) |
rvoAutoCopyImage |
CopyDef может копировать выделенное изображение в буфер обмена |
rvoAutoCopyUnicodeText |
CopyDef копирует выделение как юникодный текст |
rvoAutoCopyRTF |
CopyDef копирует выделение как RTF (Rich Text Format) |
rvoAutoCopyRVF |
CopyDef копирует выделение как RVF (RichView Format) |
CopyDef вызывается автоматически, когда пользователь нажимает Ctrl + Insert или Ctrl + C (или ⌘ + C в macOS)
Также можно использовать методы:
▪Copy копирует во всех возможных форматах;
▪CopyTextA копирует как текст ANSI (устарело; только для Windows);
▪CopyTextW копирует как юникодный текст;
▪CopyImage копирует выделенное изображение (если такое есть);
▪CopyRVF копирует в формате RVF. Этот формат имеет название 'RichView Format' и состоит из двух частей: <Размер RVF><RVF> где <Размер RVF> это 4-байтовое целое значение (число байт в <RVF>), <RVF> это данные RVF (см.: про RVF, спецификация RVF)
▪CopyRTF копирует в формате RTF (Rich Text Format).
▪CopyMarkdown копирует как юникодный текст в формате Markdown.
Метод SelectionExists возвращает ответ на вопрос, содержит ли выделение непустой фрагмент документа.
Событие OnCopy позволяет копировать в нестандартных форматах.
В FireMonkey для мобильных платформ в буфер обмена можно скопировать только один формат. Copy и CopyDef работают одинаково: они копируют наиболее подходящий формат из списка форматов rvoAutoCopy* в свойстве Options.
Опции rvoAutoCopyText и rvoAutoCopyUnicodeText работают одинаково: копируется текст в формате Юникода.
Вставка из буфера обмена в компонент TRichView невозможна. Все методы ниже относятся к компоненту TRichViewEdit.
Все нижеперечисленные методы вставляют данные, только если данные в указанных форматах присутствуют в буфере обмена.
Методы вставки:
▪PasteBitmap вставляет растровое изображение (обычно bitmap);
▪PasteMetafile вставляет метафайл [VCL];
▪PasteGraphic вставляет изображение (по MIME-типу) [Windows];
▪PasteGraphicFile вставляет графические файлы [Windows];
▪PasteText вставляет текст;
▪PasteRVF вставляет документ в формате RVF;
▪PasteRTF вставляет документ в формате RTF;
▪PasteHTML вставляет документ в формате HTML;
▪PasteURL вставляет URL [Windows];
▪Paste пытается вставить данные в следующей последовательности (если вставка какого-либо формата удаётся, выполнение прекращается; делаются попытки вставить только форматы, перечисленные в свойстве AcceptPasteFormats):
•RVF
•RTF
•HTML
•изображения из файлов
•URL
•текст
•изображение (по MIME-типу)
•изображение bitmap
•метафайл.
▪PasteMarkdown вставляет текст как Markdown.
При нажатии Ctrl + V или Shift + Insert (или ⌘ + V в macOS) автоматически вызывается метод Paste.
Проверка наличия в буфере обмена подходящих форматов:
▪CanPaste – можно ли вставить хоть в одном формате, находящемся в буфере обмена?
▪CanPasteRVF – содержит ли буфер обмена RVF?
▪CanPasteRTF – содержит ли буфер обмена RTF?
▪CanPasteHTML – содержит ли буфер обмена HTML?
Событие OnPaste позволяет переопределить стандартную процедуру вставки. Например, можно вставлять данные в другом формате или разрешать вставку только в определенных форматах (например, только в виде обычного текста).
Метод RichViewEdit.CutDef копирует выделенный фрагмент (аналогично CopyDef), а затем удаляет его (аналогично DeleteSelection). Этот метод вызывается автоматически при нажатии пользователем Ctrl + X или Shift + Delete (или ⌘ + X в macOS).
TRichView обрабатывает сообщение WM_COPY, а TRichViewEdit также обрабатывает сообщения WM_PASTE, WM_CUT и EM_CANPASTE.