Informator techniczny Wonderware 059


INFORMATOR TECHNICZNY WONDERWARE
Informator Techniczny nr 59
04-12-2002
Podstawy tworzenia i wykorzystania kontrolek ActiveX w InTouch u
Wstęp
Poniższa dokumentacja oparta na przykładach stworzonych w środowisku Visual C++ przedstawia etapy
postępowania w celu stworzenia i wykorzystania kontrolek ActiveX w InTouch u.
Omówienie
Kontrolki ActiveX charakteryzują się trzema podstawowymi parametrami, z których programista może
dowolnie korzystać. Są to właściwości kontrolki, metody oraz zdarzenia. Właściwości kontrolki pełnią w
pewnym stopniu funkcję zmiennych często modyfikowanych przez aplikację-pojemnik, metody są
funkcjami, które kontrolka udostępnia aplikacji-pojemnik zaś zdarzenia są komunikatami przesyłanymi z
kontrolki do aplikacji-pojemnik. Aplikacją-pojemnik nazywamy środowiska, które umożliwiają osadzanie
kontrolek ActiveX i współpracę z nimi. Są to np. Visual Basic, Visual C++ a także InTouch.
Proces tworzenia kontrolki ActiveX rozpoczynamy od utworzenia nowego projektu określając typ
projektu jako MFC ActiveX ControlWizard. W przypadku prostej kontrolki ustawienia w pozostałych
oknach kreatora pozostawiamy bez zmian.
Wybór projektu kontrolki ActiveX w kreatorze aplikacji.
ASTOR Sp. z o.o. e-mail: wonderware1@astor.com.pl
tel.: 012 428-63-30
Dział Oprogramowania Przemysłowego http://www.astor.com.pl
fax: 012 428-63-09
ul. Smoleńsk 29, 31-112 Kraków
Przedstawiony przykład kontrolki realizuje operacje wyliczenia mocy czynnej turbogeneratora.
W tym celu należy zadeklarować tyle właściwości kontrolki ile jest potrzebnych zmiennych do wyliczenia
mocy turbogeneratora. Dokonujemy tego w kreatorze klas w zakładce Automation wybierając przycisk
Add Property dla każdej właściwości. Dla zmiennych, które mają tylko przyjmować wartości z aplikacji-
pojemnik wybieramy w polu Implementation opcję Member variable zaś dla zmiennych, które mają mieć
możliwość również przekazywania swojej wartości do aplikacji-pojemnik wybieramy opcję Get/Set
methods. Następnie poprzez Data Binding określamy sposób ich powiązania jako Bindable property.
Omówione kroki przedstawiają poniższe rysunki.
2
Dla zmiennych przyjmujących jedynie wartości z aplikacji-pojemnik generowana jest automatycznie
funkcja (::OnzmiennaChanged()) powiadamiająca kontrolkę o każdej zmianie wartości danej zmiennej.
Dla zmiennych mogących przekazywać swoje wartości do aplikacji-pojemnik generowane są funkcje Get
i Set wywoływane przez aplikację-pojemnik w celu pobrania i zmiany wartości danej zmiennej
(właściwości). Dodatkowo należy użyć kilku funkcji w celu poinformowania aplikacji-pojemnik o
dokonanych zmianach danej właściwości. W tym celu stosujemy następujące funkcje
InvalidateControl() , BoundPropertyChanged(dispidWłaściwość).
Poniżej przedstawiono przykład funkcji OnzmiennaChanged() dla zmiennych jedynie przyjmujących
wartości z aplikacji-pojemnik oraz funkcje Get i Set dla zmiennych powiązanych (Data Binding).
void CMocCzynnaTgCtrl::OnK2Changed()
{
// TODO: Add notification handler code
SetMocCzynna(m_mocCzynna);
SetModifiedFlag();
}
float CMocCzynnaTgCtrl::GetMocCzynna()
{
// TODO: Add your property handler here
m_mocCzynna=m_k1*(m_qMPEC+m_qSTOMIL+m_qSTAB)+m_k2*(m_q30+m_q17+m_q08);
return m_mocCzynna;
3
}
void CMocCzynnaTgCtrl::SetMocCzynna(float newValue)
{
// TODO: Add your property handler here
m_mocCzynna=m_k1*(m_qMPEC+m_qSTOMIL+m_qSTAB)+m_k2*(m_q30+m_q17+m_q08);
SetModifiedFlag();
InvalidateControl();
BoundPropertyChanged(dispidMocCzynna);
}
W przypadku chęci deklaracji metody kontrolki należy z Kreatora klas z zakładki Automation wybrać Add
Method zaś w przypadku chęci wykorzystania kontrolki do generacji komunikatów należy z zakładki
ActiveX Events wybrać Add Event. Dla przykładu wykorzystano metodę MetodaAX generującą okienko z
odpowiednią wiadomością. Zdefiniowano zdarzenie generacji podwójnego kliknięcia na obszarze
kontrolki w celu uruchomienia skryptu ZdarzenieDBAX w InTouch u wywołującego metodę kontrolki
DoClick() , którą obsługuje funkcja OnClick dodana w Kreatorze klas na zakładce Message Maps
/Messages. Poniżej zamieszczone zostały kody zródłowe omówionych funkcji:
void CMocCzynnaTgCtrl::MetodaAX()
{
// TODO: Add your dispatch handler code here
MessageBox("Wywołałeś metodę kontrolki ActiveX pokazującą tę wiadomość");
}
void CMocCzynnaTgCtrl::OnClick(USHORT iButton)
{
// TODO: Add your specialized code here and/or call the base class
MessageBox("Wygenerowałeś komunikat do aplikacji-pojemnik o kliknię ciu na
kontrolce ActiveX na co aplikacja odpowiedziała wywołaniem skryptu obsługującego to
zdarzenie");
COleControl::OnClick(iButton);
}
Wykorzystanie kontrolki ActiveX w InTouch u sprowadza się najpierw do jej zainstalowania zgodnie z
opisem zamieszczonym w instrukcji InTouch a a następnie do zdefiniowania powiązań pomiędzy
właściwościami kontrolki a zmiennymi InTouch a, np. tak jak na rysunku poniżej.
4


Wyszukiwarka

Podobne podstrony:
Informator techniczny Wonderware2
Informator techniczny Wonderware5
Informator techniczny Wonderware1
Informator techniczny Wonderware0
Informator techniczny Wonderware1
Informator techniczny Wonderware6
Informator techniczny Wonderware1
Informator techniczny Wonderware0
Informator techniczny Wonderware6
Informator techniczny Wonderware0
Informator techniczny Wonderware4
Informator techniczny Wonderware0
Informator techniczny Wonderware6
Informator techniczny Wonderware9
Informator techniczny Wonderware9
Informator techniczny Wonderware2
Informator techniczny Wonderware9
Informator techniczny Wonderware7
Informator techniczny Wonderware4

więcej podobnych podstron