Работа с буфером
обмена
…Многие приложения, относящиеся к категории редакторов, активно
используют буфер обмена Windows. В данной статье я расскажу о том,
как при помощи Visual Basic(а) можно использовать буфер обмена в
ваших приложениях.
Запись данных
Существует два типа данных, которые можно записать в буфер обмена
Windows - это текстовые и графические.
Для записи текстовых данных используется функция SetText
объекта Clipboard:
Clipboard.SetText "Данные",
| vbCFText | vbCFRTF
| vbCFLink |
, где
vbCFText - неформатированный текст;
vbCFText - форматированный RTF-текст;
vbCFLink - текст в формате DDE;
Например, чтобы записать в буфер обмена текст "VB 6.0 - хороший
журнал", код будет иметь следующий вид:
Clipboard.SetText " VB 6.0 -
хороший журнал", vbCFText
, а для записи форматированного текста "VB
6.0 - хороший журнал":
Clipboard.SetText "VB
6.0 - хороший журнал",
vbCFRTF
Для записи графических данных используется функция SetData:
Clipboard.SetData Графический_объект,
| vbCFBitmap | vbCFMetafile
| vbCFDIB | vbCFPalette
|
, где
vbCFBitmap - картинка в формате BMP;
vbCFMetafile - картинка в формате
Windows-метафайлов;
vbCFDIB - формат DIB;
vbCFPalette - цветовая палитра;
Например, чтобы поместить данные из Picture1
(PictureBox) в буфер обмена, код будет
таким:
Clipboard.SetData Picture1.Picture,
vbCFBitmap
Чтение данных
Для чтения текстовых данных используется функция GetText,
а для графических, соответственно, GetData.
Например, код сообщения показывающего текстовые данных, находящиеся
в буфере обмена, будет иметь следующий вид:
MsgBox Clipboard.GetText
Примерно так же будет выглядеть код загрузки графических данных
из буфера в Picture1 (PictureBox):
Picture1.Picture = Clipboard.GetData
Формат данных
Для того чтобы узнать какой формат данных находится в буфере, используется
метод Clipboard.GetFormat
Например, если буфер содержит данные в тестовом формате, то ниже
написанный код возвратит значение True:
MsgBox Clipboard.GetFormat(vbCFText)
Очистка
Для очистки буфера используется метод Clipboard.Clear
Автор статьи: Немиро Алексей
|