Jeśli pominąłeś część pierwszą, a chcesz zacząć od początku to zapraszam tutaj.
6. Rozpoczniemy od założenia w Dynamics AX nowego projektu i dodania do niego formularza Odbiorców (CustTable):
7. Do formularza odbiorców na zakładce "Adres" ( Tab=> TabAddress) dodajemy nową grupę - nazwijmy ją GoogleGroup. Następnie w grupie tej dodajemy komponent ActiveX i na liście dostępnych komponentów wybieramy Shockwave Flash Object (jeśli nie ma go na tej liście, musimy zadbać o to, żeby się tam znalazł :) )
8. Po potwierdzeniu informacji o bezpieczeństwie komponentu ActiveX, system dodaje go do drzewka. Teraz musimy wczytać w niego plik SWF, który jest wynikiem kompilacji aplikacji z poprzedniej części tutoriala. W tym celu w metodzie init na formularzu wstawiamy kod nie zapominając o zastąpieniu ścieżki do pliku *.swf:
ActiveX.LoadMovie(0, @"C:\dokumenty\flex\projects\GoogleMapsFlex4\bin\GoogleMapsFlex4.swf"); ActiveX.GotoFrame(1);
Jeśli wszystko przebiegło pomyślnie wynikiem działania powinno być okienko mapy na formularzu Odbiorców w zakładce Adres:
9. Jak widać domyślnie wyświetlanym adresem jest Warszawa, al. Jerozolimskie - z aplikacji Flexowej należy usunąć kod wstawiony w poprzedniej części do celów testowych. Zmniejsza to niepotrzebnie limit ilości geokodowań. Z tego też tytułu zamiast automatycznie wczytywać mapę dla każdego klienta wraz z każdym rekordem (ActiveRecord), użyjemy przycisku do odszukiwania adresu. Przycisk najlepiej dodać w tej samej grupie. W metodzie clicked wstawiamy następujący kod:
void clicked() { super(); ActiveX.CallFunction(strfmt("<invoke name=\"doGeocode\" returntype=\"xml\"><arguments><string>%1</string></arguments></invoke>",custTable.Address)); }
Wywoływana jest tutaj funkcja doGeocode i przekazywany jest do niej adres. Argumentem funkcji CallFunction jest łańcuch znaków w postaci XML.
Próba generalna kończy się jednak błędem:
a wszystko przez to, ze w projekcie Flexowym brakuje "uzewnętrznienia" metody doGeocode. W celu publikacji tej metody należy w metodzie init dodać linijkę kodu:
ExternalInterface.addCallback("doGeocode", doGeocode);
Działa! :)
Podsumowanie
Jak widać wstawienie interesującego komponentu Flash do AX jest banalnie proste. Tak zbudowaną aplikację opartą o integrację z Flashem można oczywiście rozbudowywać, np. o zwracanie współrzędnych geograficznych do tabeli CustTable i wyświetlanie adresu z pominięciem geokodowania, na który jest limit. Można też wykorzystać Flasha do urozmaicenia Dynamicsa o efektowne komponenty np. wykresy Gantta, kalendarze itp. Może macie jakieś pomysły? Czekam na komentarze.
Zainteresowanych przeglądem możliwości komponentów w technologii Flex zapraszam na http://www.adobe.com/devnet-apps/flex/tourdeflex/web/
Brak komentarzy:
Prześlij komentarz