Kiedyś napisałem coś takiego, może się przyda:
Krótki kurs pisania zestawień COM w .NET 2.0
Subiekt GT (również Rachmistrz, Rewizor i Gratyfikant) umożliwiają pisanie zestawień COM. Można je również napisać w .NET i z doświadczenia wynika, że bezproblemowo komunikują się one z resztą systemu, a dzięki łatwemu oprogramowywaniu interface-u, jak i operacji bazodanowych pozwalają dodać funkcjonalność, której nie ma w danym programie.
Przypatrzmy się jak można je pisać w Visual Studio C# Express Edition - które jest całkowicie bezpłatnym środowiskiem developerskim!!!
Aby utworzyć takie zestawienie .NET - GT.COM należy utworzyć projekt typy Class Library. Następnie wybieramy z menu Project opcję Właściwości utworzonego projektu i na zakładce Application wybieramy Assembly information. Na samym dole zaznaczamy opcję make assembly COM visible, dzięki czemu nasz moduł .NET będzie poprawnie współpracował z technologią COM obecną w GT.
Następnie sięgamy do dokumentacji zestawień COM udostępnianej przez firmę Insert i dowiadujemy się jakie interface-y musi implementować nasz moduł i jak może komunikować się z systemem GT.
W uproszczeniu wygląda to następująco:
1. Do references modułu należy dodać:
1. ADODB
2. ZestManLib
2. Zmieniamy nazwę klasy class1 wygenerowanej przez VS i dodajemy implementacje interfaceu IZestawienieWlasne do tej klasy
Po tej operacji będzie ona wyglądała np. tak:
[ClassInterface(ClassInterfaceType.AutoDual)]
public class MojModul : IZestawienieWlasne
{
}
Aby zaimplementować ten interface w naszej klasie, musimy zaimplementować następujące metody:
Nazwa
Opis
Programy
Wykonaj
Np. w taki sposób:
public string Nazwa
{
get { return "Mój pierwszy moduł";}
}
public string Opis
{
get { return "To jest pierwszy testowy moduł";}
}
public string Program
{
get { return 1;}
}
public void Wykonaj(ZestManLib.IZestawienieComDane pZestawienieComDane)
{
}
Teraz pozostaje implementacja metody wykonaj - czyli rzeczywiście tego co nasz moduł ma robić. Najprościej stworzyć formę i wywołać metode ShowDialog(). To co znajduje będzie ona robić pozostawiam już inwencji czytelnika, ale właściwie może robić wszystko...
Jeszcze tylko jedna uwaga na temat bazy danych - GT komunikuje się z bazą poprzez ADO, natomiast dla wszystkich komponentów WinForms .NET 2.0 obowiązuje komunikacja poprzez ADO.NET. ADO i ADO.NET różnią się znacznie i chociaż można tworzyć jakieś obejścia pojawią się pytanie po co? Lepiej na podstawie połączenia z bazą danych, które dostarcza GT utworzyć drugie połączenie już przy pomocy ADO.NET, które będzie służyło do całej komunikacji z bazą danych. ADO pozwala odczytać connection string, a na jego podstawie można utworzyć connection string go ADO.NET. Powodzenia!!!
Alwik