Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ИП 2010-04-04 doc.doc
Скачиваний:
108
Добавлен:
13.05.2015
Размер:
5.96 Mб
Скачать

14.5. Технология ole

Texнология OLE (Object Linking and Embedding) связывания и внедрения объектов позволяет обмениваться данными (текстом, графикой, таблицей) с любой другой программой, поддерживающей эту технологию.

Примерпрограммы “Художник”. Создадим новый проект типа Standard EXE; перенесем с панели объектов объект OLE; появится окно Insert Object; выберем тип объекта Bitmap Image ‑ точечный рисунок BMP (рис. 14.5.1) и сохраним проект.

Рис.14.5.1. Окна проектирования и выполнения проекта

Выполните приложение, дважды щелкните по OLE-объекту. Появится меню графического редактора Paint со всеми его возможностями, которыми может пользоваться пользователь этого приложения. Нарисуйте слово Paint (рис. 14.5.1). Таким образом можно встраивать другие объекты и пользоваться возможностями этих объектов.

14.6. Обмен данными через буфер Clipboard

Буфер является объектом под именем Clipboard со следующими методами:

Clipboard.Clear‑ очистка буфера;

Clipboard.SelText <имя текстового поля>.SelText‑ копирование выде­лен­ного текста текстового поля в буфер;

<имя текстового поля>.SelText = Clipboard.GetText()‑ вставка содер­жи­мого буфера в текстовое поле.

Для определения вида значения в буфере можно использовать функ­цию GetFormat({vbCFText |vbCFBitmap}).

Если GetFormat(vbCFText)=True, то значение - текстовое; если Get­Format(vbCFBitmap)=True, то значение ‑ графическое.

Для примера расcмотрим процедуры:

Private Sub CopyClipboard ‘процедура копирования в буфер

Clipboard.Clear‘очистка буфера

If TypeOf Screen.ActiveControl Is TextBox Then ‘тип элемента TextBox (п. 5.5)

Clipboard.SetText Screen.ActiveControl.SelText ‘копировать текст в буфер

ElseIf TypeOf Screen.ActiveControl Is ComboBox Then ‘тип ComboBox

Clipboard.SetText Screen.ActiveControl.SelText ‘копировать текст в буфер

ElseIf TypeOf Screen.ActiveControl Is PictureBox Then ‘тип PictureBox

Clipboard.SetText Screen.ActiveControl.Picture ‘копировать рисунок в буфер

ElseIf TypeOf Screen.ActiveControl Is ListBox Then ‘тип ListBox

Clipboard.SetText Screen.ActiveControl.Text ‘копировать текст в буфер

End If

End Sub

Private Sub CutClipboard ‘процедура удаления в буфер (вырезать)

CopyClipboard() ‘выполнение процедуры копирования в буфер

If TypeOf Screen.ActiveControl Is TextBox Then ‘тип элемента TextBox

Screen.ActiveControl.SelText=”” ‘удалить выделенный текст

ElseIf TypeOf Screen.ActiveControl Is ComboBox Then ‘тип ComboBox

Screen.ActiveControl.SelText=”” ‘удалить выделенный текст

ElseIf TypeOf Screen.ActiveControl Is PictureBox Then ‘тип PictureBox

Screen.ActiveControl.Picture=LoadPicture() ‘удалить рисунок

ElseIf TypeOf Screen.ActiveControl Is ListBox Then ‘тип ListBox

If Screen.ActiveControl.ListIndex>=0 Then ‘удаление элемента

Screen.ActiveControl.RemoveItem Screen.ActiveControl.ListIndex

End If

End If

End Sub

Private Sub PasteClipboard ‘процедура вставки из буфера

If TypeOf Screen.ActiveControl Is TextBox Then ‘тип элемента TextBox

Screen.ActiveControl.SelText=Clipboard.GetText() ‘вставка текста

ElseIf TypeOf Screen.ActiveControl Is ComboBox Then ‘тип ComboBox

Screen.ActiveControl.Text=Clipboard.GetText() ‘вставка текста

ElseIf TypeOf Screen.ActiveControl Is PictureBox Then ‘тип PictureBox

Screen.ActiveControl.Picture=Clipboard.GetData() ‘вставка рисунка

ElseIf TypeOf Screen.ActiveControl Is ListBox Then ‘тип ListBox

Screen.ActiveControl.AddItem Clipboard.GetText() ‘вставка текста

End If

End Sub

Упражнение. Составьте меню “Правка” из трех пунктов: копировать (^C), вырезать (^X), вставить (^V), используя указанные процедуры.