ActiveX

Adam Boduch

1 Tworzenie kontrolki ActiveX
2 Wykorzystanie kontrolki na stronach WWW

Kontrolki ActiveX możesz wykorzystać zarówno na stronach WWW jak i jako gotowy formularz - komponent, który możesz wykorzystać jak zwykły komponent.

Kontrolki ActiveX można oczywiście tworzyć za pomocą Delphi. Wystarczy, że z menu File wybierzesz New, a następnie klikniesz na zakładkę ActiveX, a następnie na ikonę ActiveX Form.
Wyświetli się okienko z prośbą o wpisanie w pierwszym polu nazwy kontrolki oraz w drugim polu nazwę modułu. Ja w pierwszym polu wybrałem Sample, a w drugim: SampleImpl.pas. Teraz możesz nacisnąć OK i Delphi stworzy nową kontrolkę. Na pierwszy rzut oka wygląda jak zwykły formularz i tak jak na zwykłym formularzu możesz kłaść na niej komponenty.

Tak jak powiedziałem - kontrolka ActiveX może być formularzem zamkniętym w jedym pliku OCX, który można transportować pomiędzy różne platformy. W tym artykule opisze proces tworzenia kontrolki i dodawania do palety komponentów oraz dodawanie kontrolki na strone WWW.

Tworzenie kontrolki ActiveX

Jeżeli stworzyłeś już swoją kontrolkę możesz tak jak na zwykłym formularzu kłaść komponenty i robić wszystko tak jak z formularzami. OK. Położyłeś już kilka komponentów? Dobra, możesz teraz swoją kontrolkę zapisać gdzieś na dysku i skompilować. Zauważ, że Delphi nie generuje w tym wypadku pliku EXE, a OCX. Dobrze. Teraz chcesz zaimportować swoją kontrolkę dodając ją do palety komponentów. W tym celu z menu Component wybierasz Import ActiveX Control.

W oknie które się pojawi musisz wybrać plik kontrolki naciskając przycisk Add. Teraz wybierasz na jakiej zakładce kontrolka zostanie umieszczona. Po naciśnięciu na przycisk Install kontrolka zostanie umieszczona na wybranej zakładce i będziesz ją mógł na formie położyć jak zwykły komponent.

Wykorzystanie kontrolki na stronach WWW

Umieszczenie takiej kontrolki nie jest niczym nadzwyczajnym.

Jeżeli dalej masz otwatrą kontrolkę to z menu Project wybierz Web Depolyment Options. Pokaże się okno, w którym musisz określić opcje. W polu Traget Dir musisz wpisać ścieżkę gdzie zbudowany będzie plik wynikowy OCX. W polu HTML Dir musisz wpisać nazwę gdzie Delphi zbuduje plik HTML z konrtolką ActiveX. W polu Traget URL adres strony, na której kontrolka będzie umieszczona.

Ponad to zakładka Project posiada jeszcze inne pola:

  • Use CAP file compression zaznaczając to pole Delphi spakuje kontrolkę do postaci pliku CAB.
  • Include file version number - opcja ta decyduje, czy do kontrokli dołączyć informację o wersji projektu.
  • Auto Increment Relase Number - zaznaczając te opcje spowodujesz, że każde użycie Web Deploy będzie powodowało zwiększenie o jeden numeru wersji projektu.
  • Delpoy required packages - jeżeli projekt tworzony jest w wersji pakietowej to spowoduje jego dodanie.
  • Delpoy additional files - spowoduje to dołączenie do kontrolki plików dodatkowych określonych w zakładce Additional Files.
    Dobra jeżeli określiłeś już przydatne opcje to możesz nacisnąć na przycisk OK zamykając okno. Teraz zbudowanie kontrolki nastąpi wybierając z menu Project -> Web Deploy. Kontrolka wraz z plikiem HTML zostanie umieszczona w wybranym przez Ciebie katalogu.

Oto funkcje mogące się przydać, a które zostały użyte w przykładowej kontrolce.
Należy dodać słowo URLMon do listy uses modułów.

  HLinkGoBack(IUnknown(VCLComObject)); // ładuje poprzednią stronę w przeglądarce
  HLinkGoForward(IUnknown(VCLComObject)); // ładuje następną stronę
  HLinkNavigateString(IUnknown(VCLComObject), PWideChar(edtWWW.Text));
{ przechodzi do wybranej strony określonej w komponencie typu TEdit }
  URLDownloadToFile(IUnknown(VCLComObject), 'http://www.4programmers.net/off_line.zip', 
'C:\\off_line.zip', 0, nil); // ściąga wybrany plik z internetu

Gotowa kontrolkę możesz ściągnąć w dziale Kody źródłowe.

5 komentarzy

Pamiętam jak kiedyś chciałem pogadać z inżynierem MS, to mi na wstępie powiedzieli że za konsultacje chcą 123$ haha!

InFoL, wystarczyło że wpisałem "ActiveX Signing" i pierwszy wynik:
http://msdn.microsoft.com/en-us/library/ms974305.aspx
Więc nie gadaj że MS się zajmuje wszystkimi kontrolkami, bo podpisywanie activexów działa na podobnej zasadzie co certów SSL, jeśli nie identycznej. Wystarczy sobie znaleźć jakiś autorytet such as VeriSign.

Microsoft Corporation to podpisuje, musiałbyś wysłać ta kontrolke do microsofta...

Nie wie ktoś kto lub co podpisuje kontrolki ActiveX - chciałbym zrobić aktywację programu przez internet (tzn. przez Internet Explorer). U mnie na kompie gdzie mam zarejestrowaną kontrolkę wszystko działa, natomiast nie dział w internecie, bo SP2 jest tak zabezpieczony, że wogóle nawet nie wyświetla tego ?

Nonono... Własnie tego potrzebowałem ;-)