Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание DDE-связи средствами Visual Basic

Поиск

 

Visual Basic позволяет создавать DDE-связи как во время разработки приложения, так и во время его выполнения. Создание связи во время проектирования происходит с помощью команды меню Edit \ Past Link. Но следует помнить, что это возможно только тогда, когда данные в буфер обмена скопированы из приложения, которое поддерживает DDE и может служить источником данных. Программные же DDE – связи создаются без буфера обмена.

Поскольку организацию связи во время проектирования берет на себя VB, мы рассмотрим только создание связи во время выполнения разрабатываемого приложения.

При организации DDE – связей приложения VB могут выступать и как источники и как приемники. Однако, управлять связью разработчик (во время проектирования) может только в том случае, если приложение VB выступает в роли приемника. Необходимо только учесть, что для создания DDE-связи выполнялись (были загружены) как приложение-источник, так и приложение-приемник.

В качестве источников и приемников могут выступать различные приложения: Word, Excel, Access, приложения, созданные в среде VB. Но для всех их верно следующее.

Типы DDE - связи

Существует три типа DDE - связи, различающихся способом обновления данных:

1.«холодные» связи. Канал связи открывается, происходит обмен данными, после чего канал закрывается, но данные изменяются только при вызове метода LinkRequest.

2.«теплые» связи. Канал остается открытым, клиент извещается обо всех изменениях в имеющейся у источника информации. Данные приемника автоматически не изменяются, а посылаются только сообщение об их изменении.

3. «горячие» связи. Канал связи все время остается открытым, а имеющаяся у клиента информация (полученная от источника) автоматически обновляется, т.е. изменение данных приемника происходит сразу же при изменении данных источника (исходного приложения).

Тип используемой связи можно указать через свойство объекта LinkMode. Формат использования свойства:

Object. LinkMode = Значение

где Object – это объект типа Form или MDIForm (многодокументные формы) либо элемент управления класса Label, TextBox или PictureBox.

В зависимости от типа связи имена констант и их значения, которые можно присваивать свойству LinkMode следующие:

 

Тип связи Константа Значение Особенности
Связь отсутствует vbLinkNone   По умолчанию
3 «гор» vbLinkAutomatic   Автоматическое изменение данных приемника при изменении данных источника
1 «хол» vbLinkManual   Данные изменяются только при вызове метода LinkRequest
2 «тепл» vbLinkNotify   При изменении данных генерируется событие LinkNotify, но данные приемника изменяются только после вызова метода LinkRequest

 

 

Создание DDE-связи с другими приложениями осуществляется путем задания значений определенным свойствам, управляющим DDE-связями.

Многие элементы управления Visual BASIC поддерживаю свойства начинающиеся с LINK:

· LinkTopic – указывает источник данных;Его формат: Control. LinkTopic = “ Application | TopicApplication – имя программы-источника данных Topic – объект приложения (например, форма в VB или таблица в Excel) · LinkItem – задает место внутри документа, которое служит источником данных;· LinkMode – определяет вид связи и способ обновления данных в приложении-приемнике.

Следует, однако, заметить, что не все ЭУ могут использоваться для организации DDE-связей.

 

Примеры создания DDE связи, VB-приложение как приемник

 

 

Пример 1. Автоматическое изменение данных приемника при изменении данных источника.

 
 

Источник – MSExcel, приемник – VB-приложение. Создадим форму с текстовым полем (Text1).

Private Sub Form_Load()

‘LinkTopic указывает приложение и компонент связи,

‘связь будет с приложением Excel и Листом1 Text1.LinkTopic = "Excel | Лист1" ‘LinkItem указывает элемент данных Text1.LinkItem = "R1C1"

‘LinkMode определяем тип связи – автоматически.

Text1.LinkMode = vbLinkAutomatic End Sub Обратите внимание, что при создании связи с ячейкой рабочего стола MSExcel значение свойства задается в виде “R1C1”, поскольку обозначение вида “А1” использовать нельзя.

Запускаем Excel, потом приложение VB. Меняйте данные в ячейкe R1C1 (A1) и в поле они будут автоматически изменяться поле окончания редактирования.

Пример 2. Данные изменяются только при вызове метода LinkRequest.

На форму кроме текстового поля помещаем командную кнопку ( Command1) с надписью «Обновить».

Private Sub Form_Load()

Text1.LinkTopic = "Excel|Лист1"Text1.LinkItem = "R1C1"Text1.LinkMode = vbLinkManualEnd Sub Private Sub Command1_Click()Text1.LinkRequestEnd Sub

Теперь нам нужно будет нажимать на ее что бы обновить данные поля.

Пример 3. При изменении данных на сервере получаем сообщений.

Private Sub Form_Load()Text1.LinkTopic = "Excel|Лист1"Text1.LinkItem = "R1C1"Text1.LinkMode = vbLinkNotifyEnd Sub Private Sub Text1_LinkNotify() MsgBox "Данные изменены", 64, “Информация”End Sub

Теперь при изменении данных в Excel, отображаемых в текстовом поле, будет появляться сообщение, а изменение в текстовом поле происходить только по нажатию кнопки «Обновить».

Пример создания DDE связи, создание клиента и сервера на

Visual BASIC

 

 
 

 

I. Создание Сервера.

1. Создадим проект - обычное приложение с формой и зададим название проекту и форме DDEServer и DDEForm соответственно.

2. Установим свойства формы. Что бы приложение могло отвечать на DDE запросы у формы приложения на этапе разработки приложения, нужно настроить свойства:

· LinkMode нужно установить в 1 - Source;

· в LinkTopic ввести имя – DDEForm.

3. На форму поместить текстовое поле.

II. Создание Клиента. Это просто форма с текстовым полем.

Private Sub Form_Load()Text1.LinkTopic = "DDEServer | DDEForm"Text1.LinkItem = "Text1"Text1.LinkMode = vbLinkAutomaticEnd Sub

Обратите внимание, что в LinkTopic п ервое имя - это имя приложения, а потом имя объекта связи.

 
 

IV. З апустить Сервер, а потом Клиент. Данные будут изменяться синхронно. Вы меняете данные на сервере, а они меняются у клиента. Результат работы показан на рисунке.

 



Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 757; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.103.20 (0.008 с.)