2.3  Tworzenie klasy kontrolki

 

Klasy kontrolek obiektów dla Asixa Evo najlepiej umieszczać w bibliotece utworzonej jako projekt typu Class Library. Klasa taka musi być publiczną klasą pochodną klasy Askom.AddonManager.EvoObjectBase, której definicja znajduje się w bibliotece AsixEvoAddonManager.dll. Referencja do biblioteki AsixEvoAddonManager.dll powinna być dodana do projektu. Plik AsixEvoAddonManager.dll znajduje się w katalogu instalacyjnym programu Asix Evo.

Najbardziej zalecaną metodą tworzenia kontrolki jest wykorzystanie w projekcie kreatora Add NewItem->Windows Forms->Inherited User Control , wskazanie w tym kreatorze (Browse…) pliku AsixEvoAddonManager.dll, a następnie wybranie z listy komponentu EvoObjectBase.

W klasie kontrolki (pochodnej klasy Askom.AddonManager.EvoObjectBase) należy obowiązkowo przeciążyć właściwość EvoObjectID , tak aby zwracała unikalny tekstowy identyfikator obiektu. Obiekty nie zwracające tego identyfikatora, zwracające pusty lub już wcześniej używany identyfikator, nie będą widoczne w aplikacji.

Opcjonalnie można dodatkowo przeciążyć właściwość EvoObjectDescription, tak aby zwracała krótką nazwę opisową obiektu, która będzie widoczna w przyborniku oraz jako nazwa typu obiektów na diagramach. Jeżeli nie zdefiniujemy tej nazwy, to będzie używany identyfikator z EvoObjectID.

Obiekt może pracować w trybie kontrolkowym lub wektorowym. W trybie kontrolkowym obiekt stanowi kontrolkę .NET, na której można umieszczać inne standardowe lub własne kontrolki .NET. W trybie wektorowym obiekt nie jest kontrolką, ale jest malowany za pomocą interfejsu GDI+ dla .NET, a odpowiednie zdarzenia obsługuje przeciążając właściwe metody wirtualne. Domyślnie obiekt pracuje w trybie kontrolkowym. Aby obiekt pracował w trybie wektorowym, to należy przeciążyć właściwość OwnerDraw, tak aby zwracała wartość true.

Jeżeli chcemy wykonywać w obiekcie jakieś czynności inicjalizacyjne czy czyszczące w chwilach, gdy obiekt jest podłączany do diagramu (np. podczas otwierania diagramu), to należy przeciążyć metodę Reset().

Czyszczenie i zwalnianie zasobów przy zamknięciu i zwalnianiu kontrolki można wykonać podłączając się do zdarzenia Disposed, dostępnego w klasie bazowej, lub przeciążając metodę Dispose.