• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Delphi 7. Ćwiczenia zaawansowane
 

Delphi 7. Ćwiczenia zaawansowane

on

  • 1,024 views

W 2002 roku firma Borland zaprezentowała na polskim rynku nową wersję narzędzia typu RAD, służącego do szybkiego tworzenia aplikacji - Delphi. Jest to już 7. wersja tego popularnego pakietu. ...

W 2002 roku firma Borland zaprezentowała na polskim rynku nową wersję narzędzia typu RAD, służącego do szybkiego tworzenia aplikacji - Delphi. Jest to już 7. wersja tego popularnego pakietu. Wprowadzono sporo nowości: poprawiono środowisko programistyczne IDE, dodano nowe komponenty VCL i wprowadzono kilka zmian w bibliotece uruchomieniowej. Delphi 7 zostało także przystosowane do platformy .NET Microsoftu.

Jeśli chcesz szybko zapoznać się z możliwościami nowego Delphi, książka "Delphi 7. Ćwiczenia zaawansowane" to idealny przewodnik dla Ciebie. Znajdziesz tu wiele ćwiczeń dotyczących różnych obszarów zaawansowanego wykorzystania Delphi; od programowania baz danych po programowanie internetowe.

Dzięki książce poznasz:

* Zmiany i nowości wprowadzone w Delphi 7
* Programowanie sieciowe w Delphi 7: korzystanie z gniazd i protokołów SMTP i HTTP
* Tworzenie kontrolek ActiveX
* Szybkie pisanie aplikacji internetowych z użyciem komponentów IntraWeb
* Sposoby korzystania z baz danych za pomocą dbExpress
* Metody pozyskiwania z poziomu Delphi informacji o sprzęcie i oprogramowaniu, sterowanie procesami

Statistics

Views

Total Views
1,024
Views on SlideShare
1,024
Embed Views
0

Actions

Likes
0
Downloads
4
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Delphi 7. Ćwiczenia zaawansowane Delphi 7. Ćwiczenia zaawansowane Document Transcript

    • IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI Delphi 7. Æwiczenia zaawansowane KATALOG KSI¥¯EK Autor: Adam Boduch KATALOG ONLINE ISBN: 83-7361-076-6 Format: B5, stron: 158 ZAMÓW DRUKOWANY KATALOG Przyk³ady na ftp: 951 kB TWÓJ KOSZYK DODAJ DO KOSZYKA W 2002 roku firma Borland zaprezentowa³a na polskim rynku now¹ wersjê narzêdzia typu RAD, s³u¿¹cego do szybkiego tworzenia aplikacji — Delphi. Jest to ju¿ 7. wersja tego popularnego pakietu. Wprowadzono sporo nowo ci: poprawiono rodowisko CENNIK I INFORMACJE programistyczne IDE, dodano nowe komponenty VCL i wprowadzono kilka zmian w bibliotece uruchomieniowej. Delphi 7 zosta³o tak¿e przystosowane do platformy .NET ZAMÓW INFORMACJE Microsoftu. O NOWO CIACH Je li chcesz szybko zapoznaæ siê z mo¿liwo ciami nowego Delphi, ksi¹¿ka „Delphi 7. Æwiczenia zaawansowane” to idealny przewodnik dla Ciebie. Znajdziesz tu wiele ZAMÓW CENNIK æwiczeñ dotycz¹cych ró¿nych obszarów zaawansowanego wykorzystania Delphi; od programowania baz danych po programowanie internetowe. Dziêki ksi¹¿ce poznasz: CZYTELNIA • Zmiany i nowo ci wprowadzone w Delphi 7 FRAGMENTY KSI¥¯EK ONLINE • Programowanie sieciowe w Delphi 7: korzystanie z gniazd i protoko³ów SMTP i HTTP • Tworzenie kontrolek ActiveX • Szybkie pisanie aplikacji internetowych z u¿yciem komponentów IntraWeb • Sposoby korzystania z baz danych za pomoc¹ dbExpress • Metody pozyskiwania z poziomu Delphi informacji o sprzêcie i oprogramowaniu, sterowanie procesami Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl
    • Spis treści Wstęp............................................................................................................................................................7 Rozdział 1. Nowości w Delphi 7................................................................................................................................9 Nowości w zakresie IDE................................................................................................... 9 Nowe elementy menu ............................................................................................... 10 Code Insight............................................................................................................. 12 Opcje kodu źródłowego............................................................................................. 13 Pozostałe zmiany IDE............................................................................................... 14 Nowe komponenty VCL ................................................................................................. 15 Elementy wizualne w stylu Windows XP.................................................................... 15 Manifest XP............................................................................................................. 19 Pakiet Indy .............................................................................................................. 20 Pozostałe komponenty .............................................................................................. 20 Komponenty zmodyfikowane .................................................................................... 20 Zmiany w bibliotece uruchomieniowej ............................................................................. 20 Moduł Classes.......................................................................................................... 20 Moduł StrUtils ......................................................................................................... 22 Moduł VarCmplx...................................................................................................... 22 Moduł SysUtils ........................................................................................................ 22 .NET............................................................................................................................. 22 Modyfikacje dotyczące kompilatora ........................................................................... 22 Bazy danych.................................................................................................................. 24 Podsumowanie............................................................................................................... 24 Rozdział 2. Programowanie sieciowe...............................................................................................................25 Komponenty dostępne w Delphi ...................................................................................... 25 Jak to działa? ................................................................................................................. 26 IP............................................................................................................................ 26 TCP ........................................................................................................................ 26 Porty ....................................................................................................................... 27 Protokół HTTP ........................................................................................................ 27 Protokół FTP ........................................................................................................... 27 Protokół SMTP ........................................................................................................ 27 Korzystanie z gniazdek ................................................................................................... 28 Ustanawianie połączenia ........................................................................................... 28 Przesyłanie danych pomiędzy komputerami ................................................................ 32 Jak działają konie trojańskie?..................................................................................... 33
    • 4 Delphi 7. Ćwiczenia zaawansowane Wykorzystanie protokołu SMTP ..................................................................................... 35 Wysyłanie e-maili..................................................................................................... 35 Wykorzystanie protokołu HTTP...................................................................................... 44 Łączenie się z serwerem HTTP.................................................................................. 44 Wymiana danych...................................................................................................... 45 Praktyczne przykłady wykorzystania protokołu HTTP ...................................................... 49 Wykrywanie nowej wersji programu .......................................................................... 49 Wykorzystanie wyszukiwarki serwisu 4programmers.net ............................................. 52 Podsumowanie............................................................................................................... 63 Rozdział 3. ActiveX......................................................................................................................................................65 Co to jest COM?............................................................................................................ 65 Tworzenie obiektów COM.............................................................................................. 65 Wpisywanie kodu — ROT13 .......................................................................................... 72 Budowa i rejestracja kontrolki ......................................................................................... 73 Wykorzystanie obiektu COM .......................................................................................... 74 Czym jest ActiveX?........................................................................................................ 74 Importowanie kontrolek ActiveX..................................................................................... 75 Wykorzystanie komponentu TShockwaveFlash........................................................... 76 Tworzenie kontrolek ActiveX.......................................................................................... 77 Przykładowa kontrolka ActiveX ...................................................................................... 78 Tworzenie interfejsu COM ........................................................................................ 78 Tworzenie kontrolki ActiveX..................................................................................... 79 Budowa, rejestracja i instalacja kontrolki .................................................................... 89 Wykorzystanie kontrolki TVText ............................................................................... 90 Publikowanie ActiveX w Internecie ................................................................................. 91 Względy bezpieczeństwa........................................................................................... 94 Podsumowanie............................................................................................................... 94 Rozdział 4. IntraWeb.................................................................................................................................................95 Tworzenie projektu ........................................................................................................ 95 Uruchamianie projektu ................................................................................................... 96 Dodajemy kontrolki........................................................................................................ 97 Obsługa zdarzeń ....................................................................................................... 97 Przechwytywanie informacji...................................................................................... 98 Komunikaty informacyjne ......................................................................................... 99 Flash ........................................................................................................................... 100 Wykorzystanie JavaScriptu ........................................................................................... 101 Tworzenie kilku formularzy .......................................................................................... 102 Wysyłanie plików......................................................................................................... 104 Podsumowanie............................................................................................................. 104 Rozdział 5. Bazy danych dbExpress .................................................................................................................105 Czym są aplikacje typu klient-serwer?............................................................................ 105 Narzędzia............................................................................................................... 105 Komponenty .......................................................................................................... 106 dbExpress.................................................................................................................... 106 Łączenie z serwerem............................................................................................... 106 Tworzenie tabel...................................................................................................... 109 Dodawanie nowych rekordów.................................................................................. 110 Odczytywanie rekordów.......................................................................................... 111 Kasowanie rekordów .............................................................................................. 113
    • Spis treści 5 Przykład działania — księga gości ................................................................................. 116 Projektowanie tabel ................................................................................................ 117 Projektowanie interfejsu.......................................................................................... 117 Kod aplikacji.......................................................................................................... 119 Informacje o bazie danych ............................................................................................ 125 Inne komponenty dbExpress ......................................................................................... 126 Podsumowanie............................................................................................................. 128 Rozdział 6. Informacje o sprzęcie.....................................................................................................................129 Informacje o katalogach................................................................................................ 129 Informacje o u ytkowniku ............................................................................................ 131 Informacja o systemie operacyjnym............................................................................... 131 Informacja o klawiaturze............................................................................................... 133 Informacje o systemie................................................................................................... 134 Krótki przegląd pól rekordu..................................................................................... 134 Przykładowy program ............................................................................................. 135 Częstotliwość taktowania procesora ......................................................................... 136 Informacje o stanie pamięci........................................................................................... 137 Lista aktywnych procesów ............................................................................................ 139 Ikony procesów...................................................................................................... 141 Wątki procesu.............................................................................................................. 143 Formularz realizujący wyświetlenie wątków procesu ................................................. 143 „Zabijanie” aktywnych procesów .................................................................................. 147 Informacje o dyskach ................................................................................................... 149 Lista wszystkich dysków ......................................................................................... 149 Etykiety dysków..................................................................................................... 151 Dodatkowe informacje na temat dysków .................................................................. 152 Pobieranie rozmiaru dysków.................................................................................... 153 Rozdzielczość ekranu ................................................................................................... 155 Odczyt aktualnej rozdzielczości ............................................................................... 155 Zmiana rozdzielczości............................................................................................. 156 Podsumowanie............................................................................................................. 158
    • 3. Rozdział ActiveX Ten rozdział będzie poświęcony w całości kontrolkom ActiveX. Do czego słu ą oraz co to jest ActiveX? W jaki sposób umieszczać kontrolki ActiveX w Internecie oraz jak je tworzyć na bazie komponentów VCL. Tego wszystkiego dowiesz się czytając ten rozdział. Wcześniej jednak musisz zapoznać się z pojęciem COM... Co to jest COM? COM — od ang. Component Object Model. Specyfikacja firmy Microsoft, która w zało eniu dotyczy tworzenia obiektów wielokrotnego u ytku, niezale nie od języka programowania. eby zrozumieć ActiveX, musisz zrozumieć COM — postaram się to zwięźle wytłumaczyć. Otó firma Microsoft wymyśliła model obiektów, które mogą być wykorzystywane w ka - dym środowisku programistycznym Win32. Wynikiem powstania obiektu COM jest kon- trolka z rozszerzeniem .dll. Kontrolka taka mo e być wykorzystana zarówno w Delphi, jak i Visual C++, C++ Builderze, czy Visual Basicu. Tworzenie obiektów COM COM jest podstawą dla ActiveX i dla OLE. eby zrozumieć istotę działania ActiveX, musisz zrozumieć istotę działania COM — stąd następujące ćwiczenie. Ćwiczenie 3.1. Tworzenie nowego projektu.
    • 66 Delphi 7. Ćwiczenia zaawansowane 1. Z menu Delphi wybierz New/New/Other. Pojawi się Repozytorium. Zaznacz zakładkę ActiveX (rysunek 3.1). Rysunek 3.1. Zakładka ActiveX Repozytorium 2. Zaznacz w tym oknie ikonę ActiveX Library i naciśnij OK. W tym momencie zostanie utworzony pusty projekt. 3. Z polecenia File wybierz pozycję Save. Wska miejsce, gdzie Delphi ma zapisać plik. Utworzyliśmy właśnie pusty projekt, ale na razie do niczego nam to nie słu y. Utworzenie właściwego obiektu COM te jest proste — polega na wybraniu ikony Com Object. Ćwiczenie 3.2. Tworzenie obiektu COM. 1. Mając otwarty projekt z ćwiczenia 3.1 ponownie wybierz pozycję File/New/Other. 2. Z zakładki ActiveX tym razem wybierz pozycję Com Object. Delphi wyświetli okno kreatora obiektów COM, widoczne na rysunku 3.2. Rysunek 3.2. Kreator obiektów COM 3. W polu %NCUU 0COG wpisz 4QV.
    • Rozdział 3. ActiveX 67 4. Pole &GUETKRVKQP słu y do wstawienia krótkiego opisu obiektu. Mo esz wpisać np. #NIQT[VO 4QV. 5. Przyciskiem OK zamknij okno. Obiekt COM został utworzony. 6. Z menu File wybierz Save All i wpisz nazwę dla modułu. Na pierwszym planie znajduje się okno edytora biblioteki typu (rysunek 3.3). Za pomocą tego edytora sterujemy obiektem COM. Wszystkie zmiany dokonane w tym edytorze znajdą odzwierciedlenie w module. Rysunek 3.3. Okno edytora biblioteki typu; dodawanie właściwości oraz metod Dodawanie nowych metod oraz właściwości jest dość proste. Wszystko mo na zrobić za pomocą edytora biblioteki. Wystarczy kliknąć prawym przyciskiem myszy pozycję IRot13 i z menu New wybrać Properties lub Methods. Ćwiczenie 3.3. Dodawanie nowej metody. 1. Kliknij prawym przyciskiem myszy pozycję IRot13 i z menu New wybierz Method. Rysunek 3.4. Dodawanie nowej metody
    • 68 Delphi 7. Ćwiczenia zaawansowane 2. Po tym kroku pojawi się w obrębie edytora nowa pozycja — nazwij ją 4QV (zakładka Attributes). 3. Następnie przejdź do zakładki Parameters. Nasza funkcja 4QV z zało enia nie będzie posiadać adnych parametrów. Jedyne, co tu będziesz musiał ustalić, to wartość zwracaną przez funkcję. 4. Z pozycji 4GVWTP 6[RG wybierz .2564. 5. Mo esz zapisać cały projekt (Ctrl+Shift+S). Zmiany, których dokonaliśmy w edytorze zostały oddane w module 4QV(TO. Wydruk 3.1. Kod źródłowy modułu Rot13Frm.pas WPKV 4QV(TO ] 9#40 5;/$1.A2.#6(14/ 1((_ KPVGTHCEG WUGU 9KPFQYU #EVKXG: %NCUUGU %QO1DL RA6.$ 5VF8EN V[RG 64QV  ENCUU 66[RGF%QO1DLGEV +4QV RTQVGEVGF HWPEVKQP 4QV 2%JCT UVFECNN ]&GENCTG +4QV OGVJQFU JGTG_ GPF KORNGOGPVCVKQP WUGU %QO5GTX HWPEVKQP 64QV4QV 2%JCT DGIKP GPF KPKVKCNKCVKQP 66[RGF%QO1DLGEV(CEVQT[%TGCVG %QO5GTXGT 64QV %NCUUA4QV EK/WNVK+PUVCPEG VO#RCTVOGPV  GPF W module tym mo esz wpisać kod funkcji 4QV. Podczas gdy Ty pracujesz z modułem 4QV(TO, Delphi pracuje nad tworzeniem modułu przechowującego kod biblioteki. W edyto- rze kodu cały czas masz otwartą zakładkę p32_TLB.pas (do nazwy projektu jest dodawana końcówka A6.$). Wydruk 3.2. Kod źródłowy biblioteki WPKV RA6.$ 
    •   9#40+0)    6JG V[RGU FGENCTGF KP VJKU HKNG YGTG IGPGTCVGF HTQO FCVC TGCF HTQO C  6[RG .KDTCT[ +H VJKU V[RG NKDTCT[ KU GZRNKEKVN[ QT KPFKTGEVN[ XKC  CPQVJGT V[RG NKDTCT[ TGHGTTKPI VQ VJKU V[RG NKDTCT[ TGKORQTVGF QT VJG
    • Rozdział 3. ActiveX 69  4GHTGUJ EQOOCPF QH VJG 6[RG .KDTCT[ 'FKVQT CEVKXCVGF YJKNG GFKVKPI VJG  6[RG .KDTCT[ VJG EQPVGPVU QH VJKU HKNG YKNN DG TGIGPGTCVGF CPF CNN  OCPWCN OQFKHKECVKQPU YKNN DG NQUV 
    •   2#56.964    (KNG IGPGTCVGF QP   HTQO 6[RG .KDTCT[ FGUETKDGF DGNQY 
    •   6[RG .KD %>/QLG FQMWOGPV[>2NKMK VGZVQYG>FGNRJKAEYKEGPKCACCYCPUQYCPG> åNKUVKPIK>>>RVND   .+$+& ]%%&%'%&%$%$#_  .%+&   *GNRHKNG  *GNR5VTKPI R .KDTCT[  &GRPF.UV   X UVFQNG %>9+0&195>5;56'/>UVFQNGVND 
    •  ] 6;2'&#&&4'55 1((_  7PKV OWUV DG EQORKNGF YKVJQWV V[RGEJGEMGF RQKPVGTU ] 9#40 5;/$1.A2.#6(14/ 1((_ ] 94+6'#$.'%1056 10_ ] 8#424125'66'4 10_ KPVGTHCEG WUGU 9KPFQYU #EVKXG: %NCUUGU )TCRJKEU 5VF8%. 8CTKCPVU 
    •   )7+&5 FGENCTGF KP VJG 6[RG.KDTCT[ (QNNQYKPI RTGHKZGU CTG WUGF  6[RG .KDTCTKGU  .+$+&AZZZZ  %Q%NCUUGU  %.#55AZZZZ  &+52+PVGTHCEGU  &++&AZZZZ  0QP&+52 KPVGTHCEGU ++&AZZZZ 
    •  EQPUV  6[RG.KDTCT[ /CLQT CPF OKPQT XGTUKQPU R/CLQT8GTUKQP   R/KPQT8GTUKQP   .+$+&AR 6)7+&  ]%%&%'%&%$%$#_  ++&A+4QV 6)7+&  ]#%((#&('%'(_  %.#55A4QV 6)7+&  ]'$$#%&'%'#'_  V[RG 
    •   (QTYCTF FGENCTCVKQP QH V[RGU FGHKPGF KP 6[RG.KDTCT[ 
    •  +4QV  KPVGTHCEG 
    •   &GENCTCVKQP QH %Q%NCUUGU FGHKPGF KP 6[RG .KDTCT[  016' *GTG YG OCR GCEJ %Q%NCUU VQ KVU &GHCWNV +PVGTHCEG 
    •  4QV  +4QV 
    •   +PVGTHCEG +4QV  (NCIU  1NG#WVQOCVKQP  )7+& ]#%((#&('%'(_
    • 70 Delphi 7. Ćwiczenia zaawansowane 
    •  +4QV  KPVGTHCEG +7PMPQYP = ]#%((#&('%'(_ ? HWPEVKQP 4QV 2%JCT UVFECNN GPF 
    •   6JG %NCUU %Q4QV RTQXKFGU C %TGCVG CPF %TGCVG4GOQVG OGVJQF VQ  ETGCVG KPUVCPEGU QH VJG FGHCWNV KPVGTHCEG +4QV GZRQUGF D[  VJG %Q%NCUU 4QV 6JG HWPEVKQPU CTG KPVGPFGF VQ DG WUGF D[  ENKGPVU YKUJKPI VQ CWVQOCVG VJG %Q%NCUU QDLGEVU GZRQUGF D[ VJG  UGTXGT QH VJKU V[RGNKDTCT[ 
    •  %Q4QV  ENCUU ENCUU HWPEVKQP %TGCVG +4QV ENCUU HWPEVKQP %TGCVG4GOQVG EQPUV /CEJKPG0COG UVTKPI  +4QV GPF KORNGOGPVCVKQP WUGU %QO1DL ENCUU HWPEVKQP %Q4QV%TGCVG +4QV DGIKP 4GUWNV  %TGCVG%QO1DLGEV %.#55A4QV CU +4QV GPF ENCUU HWPEVKQP %Q4QV%TGCVG4GOQVG EQPUV /CEJKPG0COG UVTKPI  +4QV DGIKP 4GUWNV  %TGCVG4GOQVG%QO1DLGEV /CEJKPG0COG %.#55A4QV CU +4QV GPF GPF Ten kod to na pozór wiele niezrozumiałych instrukcji. Przykładowo, zwróć uwagę na fragment: +4QV  KPVGTHCEG +7PMPQYP = ]#%((#&('%'(_ ? HWPEVKQP 4QV 2%JCT UVFECNN GPF Jest to deklaracja interfejsu +4QV. Interfejs COM jest sposobem łączności u ytkownika z funkcjami COM. Dzięki interfejsowi COM masz dostęp do tego, co oferuje sama kontrolka COM. W edyto- rze biblioteki nale ało utworzyć metodę, która następnie została dopisana do interfejsu, w module p32_TBL.pas. Dzięki temu u ytkownik korzystający z kontrolki ma mo liwość wykorzystania funkcji 4QV. Tak jak nazwy komponentów zaczynają się od litery 6, nazwy interfejsów COM rozpo- czynają się od litery + — jest to zasada uniwersalna i nie nale y jej łamać. Podstawowym interfejsem jest interfejs +7PMPQY, tak samo jak podstawową klasą w VCL jest 61DLGEV.
    • Rozdział 3. ActiveX 71 Ćwiczenie 3.4. Dodawanie właściwości. Gdy chcemy dodać właściwość, edytor biblioteki, tak jak w ćwiczeniu poprzednim, automatycznie wygeneruje dwie gałęzie. Domyślnie zakłada bowiem, e jedna z nich potrzebna jest do zapisywania danych do właściwości, a druga do ich odczytu. My jednak potrzebujemy właściwości „tylko do zapisu”. 1. W tym celu odszukaj na pasku przycisk New Property. 2. Obok tego przycisku znajduje się strzałka — w wyniku jej rozwinięcia poka ą się pozycje, wśród których znajduje się Write Only — wybierz ją. 3. Zostanie utworzona jedna gałąź. 4. Zmień jej nazwę na 8CNWG. 5. Z listy rozwijanej 6[RG wybierz pozycję .2564. 6. Ostatnim krokiem będzie wejście w zakładkę Parameters i ustawienie opcji parametru. 7. Z listy rozwijanej 4GVWTP 6[RG wybierz XQKF (oznacza, e nie będzie wartości zwracanej przez funkcję). Natomiast musisz ustawić parametr owej procedury. Spójrz na rysunek 3.5. Rysunek 3.5. Ustawienie typu parametru 8. Po kliknięciu napisu NQPI pojawi się strzałka słu ąca do rozwijania listy z mo liwymi typami danych. Wybierz .2564. To właściwie wszystko — teraz mo esz zapisać cały projekt. W module 4QV(TO znajduje się taka linia: RTQEGFWTG 5GVA8CNWG 8CNWG 2%JCT  UVFECNN Je eli u ytkownik nada zmiennej 8CNWG nową wartość, zostanie ona przekazana jako pa- rametr procedury 5GVA8CNWG.
    • 72 Delphi 7. Ćwiczenia zaawansowane Wpisywanie kodu — ROT13 Nasz przykładowy obiekt COM będzie korzystał z algorytmu ROT13 w celu zakodowania tekstu. Zasada działania tego algorytmu jest bardzo prosta. Otó przekształca on znak na numer ASCII i następnie dodaje do tego numeru liczbę 13, po czym ponownie przekształca liczbę w znak. Funkcja 4QV wygląda mniej więcej tak: HWPEVKQP 64QV4QV 2%JCT XCT K  +PVGIGT 5KP 5QWV  5VTKPI DGIKP ] RT[RKUCPKG FCP[EJ FQ OKGPPGL 5VTKPI _ 5KP  (4QV HQT +   VQ .GPIVJ 5KP FQ  RúVNC RQ YU[UVMKEJ PCMCEJ DGIKP ] LG GNK NKVGTC LGUV YKúMUC TÎYPC QF # C OPKGLUC TÎYPC QF / _ KH 7R%CUG 5KP=K?  # CPF 7R%CUG 5KP=K?  / VJGP 5QWV  5QWV %JT 1TF 5KP=K?   MQFQYCPKG GNUG KH 7R%CUG 5KP=K?  0 CPF 7R%CUG 5KP=K?  < VJGP 5QWV  5QWV %JT 1TF 5KP=K?   GNUG 5QWV  5QWV 5KP=K? GPF 4GUWNV  2%JCT 5QWV  GPF Na końcu funkcja zwraca zakodowany ciąg znaków. Aby wszystko było bardziej zrozu- miałe, przedstawię Ci cały moduł 4QV(TO (wydruk 3.3). Wydruk 3.3. Moduł Rot13Frm.pas zawierający funkcję Rot13 WPKV 4QV(TO ] 9#40 5;/$1.A2.#6(14/ 1((_ KPVGTHCEG WUGU 9KPFQYU #EVKXG: %NCUUGU %QO1DL RA6.$ 5VF8EN V[RG 64QV  ENCUU 66[RGF%QO1DLGEV +4QV RTKXCVG (4QV  2%JCT RTQVGEVGF HWPEVKQP 4QV 2%JCT UVFECNN RTQEGFWTG 5GVA8CNWG 8CNWG 2%JCT  UVFECNN ]&GENCTG +4QV OGVJQFU JGTG_ GPF
    • Rozdział 3. ActiveX 73 KORNGOGPVCVKQP WUGU %QO5GTX HWPEVKQP 64QV4QV 2%JCT XCT K  +PVGIGT 5KP 5QWV  5VTKPI DGIKP ] RT[RKUCPKG FCP[EJ FQ OKGPPGL 5VTKPI _ 5KP  (4QV HQT +   VQ .GPIVJ 5KP FQ  RúVNC RQ YU[UVMKEJ PCMCEJ DGIKP ] LG GNK NKVGTC LGUV YKúMUC TÎYPC QF # C OPKGLUC TÎYPC QF / _ KH 7R%CUG 5KP=K?  # CPF 7R%CUG 5KP=K?  / VJGP 5QWV  5QWV %JT 1TF 5KP=K?   MQFQYCPKG GNUG KH 7R%CUG 5KP=K?  0 CPF 7R%CUG 5KP=K?  < VJGP 5QWV  5QWV %JT 1TF 5KP=K?   GNUG 5QWV  5QWV 5KP=K? GPF 4GUWNV  2%JCT 5QWV  GPF RTQEGFWTG 64QV5GVA8CNWG 8CNWG 2%JCT  DGIKP (4QV  8CNWG GPF KPKVKCNKCVKQP 66[RGF%QO1DLGEV(CEVQT[%TGCVG %QO5GTXGT 64QV %NCUUA4QV EK/WNVK+PUVCPEG VO#RCTVOGPV  GPF Na początku za pomocą procedury 5GVA8CNWG do zmiennej (4QV (sekcja RTKXCVG) zo- stanie przypisana wartość z parametru owej procedury 5GVA8CNWG. Dzięki temu funkcja 4QV będzie mogła odczytać tę wartość i zakodować algorytmem 4QV, po czym zwrócić ciąg znaków. Budowa i rejestracja kontrolki Mamy ju cały potrzebny kod do skompilowania biblioteki. Z menu Project wybierz pozycję Build. Kontrolka zostanie skompilowana do postaci pliku DLL. Je eli nie ma adnych błędów, to mo esz zarejestrować kontrolkę poprzez wybranie z menu Run pozycji Register ActiveX Server. Je eli wszystko się powiedzie, powinieneś otrzymać komunikat o prawidłowej rejestracji. Kontrolka jest gotowa do u ycia.
    • 74 Delphi 7. Ćwiczenia zaawansowane Wykorzystanie obiektu COM Ćwiczenie 3.5. Wykorzystanie obiektu COM. Nasza przykładowa aplikacja wcale nie musi być skomplikowana. Wystarczy, e będzie zawierać przycisk oraz kontrolkę edycyjną. W katalogu z naszą przykładową aplikacją musi się znaleźć plik p32_TLB.pas, gdy zawiera interfejsy i klasy COM. Aby cały projekt prawidłowo się skompilował, odszukaj sekcję WUGU i dodaj do niej nastę- pujące moduły: WUGU RA6.$ %QO1DL Pierwszy zawiera oczywiście deklarację interfejsu COM, a drugi zawiera nagłówek funkcji %TGCVG%QO1DLGEV. RTQEGFWTG 6/CKP(QTODVP%QPXGT%NKEM 5GPFGT 61DLGEV  XCT 4QV  +4QV DGIKP 4QV  %TGCVG%QO1DLGEV %.#55A416 CU +4QV  WVYÎT QDKGMV %1/ KH #UUKIPGF 4QV VJGP DGIKP 4QV5GVA8CNWG 2%JCT GFV8CNWG6GZV   RT[RKU YCTVQ è QFE[VCPæ MQPVTQNMK GF[E[LPGL GFV8CNWG6GZV  4QV4QV  FQ MQPVTQNMK RT[RKU CMQFQYCP[ VGMUV GPF GPF Oto jak wygląda u ycie kontrolki COM. Najpierw tworzymy obiekt COM, eby później skorzystać z funkcji, jakie oferuje nam jej interfejs. Rysunek 3.6 przedstawia działanie przykładowego programu. Rysunek 3.6. Tekst „Delphi 7 Studio” zakodowany za pomocą algorytmu ROT13 Oczywiście algorytm działa w dwie strony. Po zakodowaniu tekstu i ponownym naci- śnięciu przycisku następuje jego rozkodowanie. Czym jest ActiveX? ActiveX to technologia oparta na COM. Pozwala na tworzenie kontrolek .ocx lub .dll. Tak naprawdę ActiveX to obiekt COM, tyle e posiadający własny interfejs dostępny na poziomie projektowania. Wygląda to w ten sposób, i tworzony jest zwykły formularz VCL będący w rzeczywistości kontrolką ActiveX. Mo na korzystać z wszystkich kom- ponentów i, ogólnie rzecz biorąc, projektowanie jest łatwiejsze ni w przypadku zwy- kłych obiektów COM. Dodatkowo ActiveX umo liwia wygenerowanie kodu pozwala- jącego na umieszczenie jej w Sieci, na stronie WWW.
    • Rozdział 3. ActiveX 75 Importowanie kontrolek ActiveX Korzystając z Delphi, mo esz nawet nie wiedzieć, e w rzeczywistości u ywasz kon- trolki ActiveX. Po zaimportowaniu do Delphi taka kontrolka przedstawia się jak zwykły komponent i znajduje się na palecie komponentów. Przykład? Komponent 69GD$TQYUGT (paleta Internet). Komponent ten słu y do wyświetlania stron WWW, ale w rzeczywistości jest to kontrolka ActiveX przeglądarki Internet Explorer. Tak więc mając zainstalowaną przeglądarkę, masz równie kontrolkę ActiveX, której z kolei mo esz u yć w Delphi. Ćwiczenie 3.6. Importowanie kontrolki ActiveX. 1. Z menu Component wybierz pozycję Import ActiveX Control. Powinno się pokazać okno Import ActiveX (rysunek 3.7). Rysunek 3.7. Okno Import ActiveX Człon okna stanowi lista rozwijana, zawierająca kontrolki znajdujące się w systemie. Za pomocą przycisku Add mo esz dodać do tej listy nową kontrolkę, ale tym zajmiemy się nieco później. W naszym ćwiczeniu do programu zaimportujemy kontrolkę Shockwave Flash. Dzięki tej kontrolce będziemy mogli w naszych aplikacjach wyświetlać filmy w formacie Flash. Je eli nie mo esz na liście odnaleźć tej kontrolki, oznacza to, e nie masz jej w systemie. 2. Przed zaimportowaniem kontrolki wybierz jeszcze paletę, na której zostanie ona zainstalowana. Ja z listy Palette page wybrałem 5VCPFCTF. 3. Teraz mo esz nacisnąć przycisk Install. Spowoduje on wyświetlenie okna Install. Właściwie w tym oknie nie musimy dokonywać adnych zmian — naciśnij OK. Po tej operacji wyświetli się okno, takie jak na rysunku 3.8.
    • 76 Delphi 7. Ćwiczenia zaawansowane Rysunek 3.8. Dodawanie obiektu do pakietu 4. Delphi zapyta Cię, czy skompilować pakiet. Je eli naciśniesz Yes, spowoduje to zainstalowanie kontrolki w palecie komponentów — potwierdzeniem tego będzie komunikat (rysunek 3.9). Rysunek 3.9. Potwierdzenie instalacji obiektu Od tej chwili na palecie komponentów (zakładka Standard) pojawi się 65JQEMYCXG(NCUJ. Wykorzystanie komponentu TShockwaveFlash Pobawmy się trochę kontrolką Flash i wyświetlaniem animacji. Ćwiczenie 3.7. Ładowanie i wyświetlanie animacji w komponencie. 1. Umieść komponent 65JQEMYCXG(NCUJ na formularzu i nazwij go (NCUJ. 2. Umieść tak e komponent 6$WVVQP — będzie on słu ył do ładowania filmu. Po naciśnięciu przycisku wyświetli się okno słu ące do wyboru pliku — potrzebujemy więc jeszcze komponentu 1RGP&KCNQI. Procedura ładująca plik SWF (format Flasha) wygląda następująco: RTQEGFWTG 6/CKP(QTODVP.QCF%NKEM 5GPFGT 61DLGEV  DGIKP KH 1RGP&KCNQI'ZGEWVG VJGP  RQFECU Y[ YKGVNCPKC QMPC DGIKP (NCUJ/QXKG  1RGP&KCNQI(KNG0COG  RT[RKU EKG Mú FQ RNKMW (NCUJ2NC[  TQRQEPKL QFVYCTCPKG GPF GPF Jak widzisz, odtwarzanie animacji Flasha jest dziecinnie proste. Wystarczy do właściwości /QXG przypisać ście kę do pliku. Po wykonaniu metody 2NC[ rozpoczyna się odtwarzanie.
    • Rozdział 3. ActiveX 77 Jedyna pułapka, jaka czyha na programistę to konieczność podawania pełnej ście ki do pliku. Mo na by pomyśleć, e skoro plik swf znajduje się w tym samym katalogu, co program, wystarczy, e ście ka będzie przypisana w następujący sposób: (NCUJ/QXG  RNKMUYH  Nic bardziej mylnego — w takim wypadku plik nie zostanie załadowany. Nale y to zrobić w taki sposób: (NCUJ/QXKG  'ZVTCEV(KNG2CVJ #RRNKECVKQP'ZG0COG UYH  Tworzenie kontrolek ActiveX Tworzenie obiektów ActiveX jest równie proste jak tworzenie obiektów COM. Jak ju wspomniałem, podczas projektowania kontrolek ActiveX mo emy u ywać wizualnej bi- blioteki komponentów (VCL). Ćwiczenie 3.8. Tworzenie nowej kontrolki. Proces ten jest podobny do tworzenia obiektów COM. 1. Z menu File wybierz New, a następnie Other. 2. Kliknij zakładkę ActiveX, wybierz ikonę ActiveX Form. Na rysunku 3.10 przedstawione jest okno, które zostanie wyświetlone w wyniku tej operacji. Rysunek 3.10. Okno Active Form Wizard 3. W polu New ActiveX Name wpisz #EVKXG:6GUV. 4. Pole Implementation Unit niech zawiera wartość #EVKXG:6GUV(TORCU, a Project Name: #EVKXG:6GUV2TQLFRT. 5. Naciśnij OK, a Delphi utworzy kontrolkę ActiveX i wyświetli formularz. 6. Z menu File wybierz Save All. Podczas zapisywania domyślną nazwą pliku, jaką zaproponuje Delphi, będzie ta, którą wpisałeś w oknie tworzenia kontrolki ActiveX.
    • 78 Delphi 7. Ćwiczenia zaawansowane Katalog, który wybrałeś wzbogacił się w parę nowych plików. Oprócz standardowych plików znajduje się tam równie plik ActiveXTestProj_TLB.pas. Plik ten zawiera inter- fejsy COM. Przykładowa kontrolka ActiveX Napiszmy przykładową kontrolkę ActiveX, która pozwoli Ci zrozumieć istotę działania tych obiektów. Nasza przykładowa kontrolka będzie umo liwiać wyświetlanie napisów do filmów. Tworzenie interfejsu COM Na samym początku procesu tworzenia kontrolki musimy, tak jak w przypadku kontrolek COM, stworzyć dwie metody 5VCTV i 5VQR. Ćwiczenie 3.9. Tworzenie metod Start i Stop. 1. Stwórz nową kontrolkę ActiveX. Postępuj tak, jak w poprzednim ćwiczeniu — w polu 0GY #EVKXG: 0COG kreatora wpisz 86GZV. 2. W polu +ORNGOGPVCVKQP 7PKV wpisz 86GZV(TORCU, a w 2TQLGEV 0COG — 86GZV2TQLFRT. 3. Zapisz cały projekt. 4. W katalogu z kontrolką znajduje się plik VTextProj_TLB.pas. Domyślnie ten plik nie jest otwarty w projekcie. Otwórz więc ten plik — w edytorze kodu utworzona zostanie nowa zakładka, a na pierwszy plan wysunie się edytor biblioteki. 5. Naciśnij prawym przyciskiem myszy pozycję +86GZV i z menu wybierz New/Method. 6. Metodę tę nazwij 5VCTV. 7. Kliknij zakładkę Parameters. Będziesz musiał dodać nowy parametr dla funkcji. Doprowadź parametr do takiej postaci, jak na rysunku 3.11. Rysunek 3.11. Parametr FileName metody Start
    • Rozdział 3. ActiveX 79 Stwórz teraz metodę 5VQR, powtórz cały proces, lecz nasza procedura nie będzie zawierała adnych parametrów — nie musisz robić nic więcej. Zapisz cały projekt. Tworzenie kontrolki ActiveX Nasza kontrolka będzie wyświetlać napisy do filmów. Wiele odtwarzaczy multimedialnych oferuje mo liwość załadowania napisów do filmu, który akurat oglądamy w innej wersji językowej. Nasza kontrolka będzie uwzględniała plik z napisami, którego poszczególne linie zapisane są w ten sposób:  2TQUú 2CP OWUK D[è PCRTCYFú YC P[  Czyli format czasowy. Kontrolka w momencie wywołania metody Start zaczyna działać w pętli YJKNG. Zresztą zaraz się przekonasz, jak to wygląda... Ćwiczenie 3.10. Wygląd kontrolki ActiveX. 1. Przede wszystkim otwórz plik 86GZV(TO (je eli jeszcze nie jest otwarty w projekcie). 2. Klawiszem F12 przełącz się do formularza. 3. Zmniejsz ten formularz — dostosuj go do własnych wymagań. 4. Umieść na formularzu komponent 62CPGN, a jego właściwość #NKIP ustaw na CN%NKGPV. 5. Właściwość $GXGN+PPGT zmień na DX.QYGTGF, a sam komponent nazwij RPN/GUUCIG. 6. Na komponencie RPN/GUUCIG umieść obiekt 6.CDGN i zmień właściwość #NKIP na CN$QVVQO. 7. Nazwij komponent NDN%WTTGPV. To by było na tyle, je eli chodzi o projektowanie kontrolki od strony wizualnej. Kolejnym krokiem jest tworzenie samego kodu kontrolki. Ćwiczenie 3.11. Kod źródłowy kontrolki. Przełącz się do kodu pliku 86GZV(TO. Odnajdź sekcję RTKXCVG i dodaj następujące linie: (.KPGU  65VTKPI.KUV  OKGPPC RTGEJQYWLG PCRKU[ (6KOG (6GZV  6#TTC[  VCDNKEC  ECU QTC PCRKU ($TQMGP  9QTF$QQN  QMTG NC E[ RTQEGU LGUV WTWEJQOKQP[ RTQEGFWTG 2TGRCTG6GZV  RT[IQVWL RTGCPCNKWL RNKM VGMUVQY[ Skorzystałem tutaj z nowego typu danych — 6#TTC[. Jest to tablica dynamiczna, dodaj de- klarację tego typu w sekcji V[RG: 6#TTC[  CTTC[ QH 5VTKPI
    • 80 Delphi 7. Ćwiczenia zaawansowane Procedura 2TGRCTG6GZV, którą zadeklarowaliśmy w sekcji RTKXCVG słu y do przygotowania pliku tekstowego. Zaraz po wywołaniu metody 5VCTV do zmiennej (.KPGU zostaje od- czytany plik z napisami. Procedura 2TGRCTG6GZV ma oddzielić z ka dej linii: czas, w którym napis ma być wyświetlony oraz samą treść napisu. RTQEGFWTG 686GZV2TGRCTG6GZV XCT K  +PVGIGT DGIKP ] QMTG N YKGNMQ è VCDNKE[ PC RQFUVCYKG NKED[ NKPKK _ 5GV.GPIVJ (6KOG (.KPGU%QWPV  5GV.GPIVJ (6GZV (.KPGU%QWPV  ] RúVNC RQ YU[UVMKEJ NKPKCEJ _ HQT +   VQ (.KPGU%QWPV  FQ DGIKP ] FQ VGIQ GNGOGPVW VCDNKE[ RT[RKU ECU Y MVÎT[O RQYKPKGP Y[ YKGVNKè UKú PCRKU _ (6KOG=K?  %QR[ (.KPGU=K?    ] VWVCL RT[RKU UCOæ VTG è _ (6GZV=K?  %QR[ (.KPGU=K?  .GPIVJ (.KPGU=K?    GPF GPF Dzięki temu mamy tablice (6KOG oraz (6GZV gotowe do u ycia. Teraz jedyny problem to wyświetlenie odpowiedniego elementu tablicy w odpowiednim czasie. A odpowiedzialną za to procedurą jest procedura 5VCTV. RTQEGFWTG 686GZV5VCTV (KNG0COG 2%JCT  XCT %QWPVGT  +PVGIGT  NKEPKM  KNG LW PCRKUÎY QUVC Q Y[ YKGVNQP[EJ (2CWUG  +PVGIGT  ECU Y[ YKGVNCPKC PCRKUW %WTTGPV6KOG  66KOG  ECU QFVYCTCPKC HKNOW Y*QWT Y/KP Y5GE  +PVGIGT DGIKP (.KPGU  65VTKPI.KUV%TGCVG (.KPGU.QCF(TQO(KNG (KNG0COG   C CFWL RNKM VGMUVQY[ 2TGRCTG6GZV  RT[IQVWL FYKG VCDNKEG ($TQMGP  (CNUG %QWPVGT   (2CWUG   Y*QWT   Y/KP   Y5GE   ] RúVNC Y[ YKGVNCPC EQ  OKNKUGMWPF FQRÎMK OKGPPC ($TQMGP PKG OC YCTVQ EK (CNUG _ YJKNG PQV ($TQMGP QT PQV #RRNKECVKQP6GTOKPCVGF FQ DGIKP #RRNKECVKQP2TQEGUU/GUUCIGU 5NGGR    QFEGMCL  UGM KH ($TQMGP VJGP $TGCM  LG GNK OKGPPC  647' RTGTYKL FKC CPKG +PE Y5GE   YKúMU NKEDú UGMWPF KH Y5GE   VJGP  LG GNK NKEDC YKúMUC QF  DGIKP +PE Y/KP   YKúMU NKEDú OKP Y5GE    Y[GTWL OKGPPæ GPF
    • Rozdział 3. ActiveX 81 KH Y/KP  VJGP  LG GNK NKEDC OKP  DGIKP +PE Y*QWT   YKúMU NKEDú IQFKP Y/KP    Y[GTWL OKPWV[ GPF  PC RQFUVCYKG FCP[EJ WVYÎT OKGPPæ 66KOG %WTTGPV6KOG  'PEQFG6KOG Y*QWT Y/KP Y5GE   NDN%WTTGPV%CRVKQP  6KOG6Q5VT %WTTGPV6KOG  KH #PUK/CVEJ5VT 6KOG6Q5VT %WTTGPV6KOG  (6KOG VJGP DGIKP +PE %QWPVGT  RPN/GUUCIG%CRVKQP  (6GZV=%QWPVGT? (2CWUG   GPF GNUG DGIKP KH .GPIVJ RPN/GUUCIG%CRVKQP  VJGP DGIKP +PE (2CWUG  KH (2CWUG   VJGP DGIKP (2CWUG   RPN/GUUCIG%CRVKQP   GPF GPF GPF GPF GPF Po załadowaniu napisów i wywołaniu procedury 2TGRCTG6GZV mamy gotowe tablice. Pętla, która jest wykonywana w odstępie 1 sekundy, za ka dym razem zwiększa liczbę sekund, następnie minut (je eli liczba sekund osiągnie 60) itd. Następnie za pomocą funkcji 'PEQFG6KOG, dzięki zmiennym Y*QWT, Y/KP, Y5GE mo emy skonstruować typ 66KOG. Funkcja #PUK/CVEJ5VT sprawdza, czy dana wartość %WTTGPV6KOG znajduje się w tablicy (6KOG. Funkcja #PUK/CVEJ5VT znajduje się w module 5VT7VKNURCU. eby wszystko zadziałało, musisz ten moduł dodać do listy uses. Je eli tak, następuje wyświetlenie tekstu z tablicy (6GZV. Jedynym problemem jest roz- ró nienie, który element tablicy powinien być w tym momencie wyświetlony. Aby to zrealizować, nale y wprowadzić zmienną %QWPVGT, która zwiększy się o jeden za ka dym razem, gdy napis zostanie wyświetlony. W dokumentacji Delphi jest błąd i funkcja #PUK/CVEJ5VT wcale nie zwraca liczby w postaci +PVGIGT, jak to jest napisane. W rzeczywistości zwraca 6TWG, je eli element został znaleziony, lub (CNUG, w przeciwnym razie. Pozostało jeszcze napisanie procedury 5VQR. Procedura ta będzie słu yć do wstrzymywania całego procesu. Jej kod jest prosty: RTQEGFWTG 686GZV5VQR DGIKP ($TQMGP  6TWG GPF
    • 82 Delphi 7. Ćwiczenia zaawansowane Zmiana wartości zmiennej ($TQMGP na 6TWG powoduje zatrzymanie działania pętli YJKNG. Cały kod źródłowy modułu jest przedstawiony na wydruku 3.4. Wydruk 3.4. Moduł VTextFrm.pas ] %QR[TKIJV E  D[ #FCO $QFWEJ CFCO"RTQITCOOGTUPGV _ WPKV 86GZV(TO ] 9#40 5;/$1.A2.#6(14/ 1((_ KPVGTHCEG WUGU 9KPFQYU /GUUCIGU 5[U7VKNU %NCUUGU )TCRJKEU %QPVTQNU (QTOU &KCNQIU #EVKXG: #Z%VTNU 86GZV2TQLA6.$ 5VF8EN 5VF%VTNU 'ZV%VTNU 5VT7VKNU V[RG 6#TTC[  CTTC[ QH 5VTKPI 686GZV  ENCUU 6#EVKXG(QTO +86GZV RPN/GUUCIG 62CPGN NDN%WTTGPV 6.CDGN RTKXCVG ] 2TKXCVG FGENCTCVKQPU _ ('XGPVU +86GZV'XGPVU (.KPGU  65VTKPI.KUV  OKGPPC RTGEJQYWLG PCRKU[ (6KOG (6GZV  6#TTC[  VCDNKEC  ECU QTC PCRKU ($TQMGP  9QTF$QQN  QMTG NC E[ RTQEGU LGUV WTWEJQOKQP[ RTQEGFWTG 2TGRCTG6GZV  RT[IQVWL RTGCPCNKWL RNKM VGMUVQY[ RTQEGFWTG #EVKXCVG'XGPV 5GPFGT 61DLGEV  RTQEGFWTG %NKEM'XGPV 5GPFGT 61DLGEV  RTQEGFWTG %TGCVG'XGPV 5GPFGT 61DLGEV  RTQEGFWTG &DN%NKEM'XGPV 5GPFGT 61DLGEV  RTQEGFWTG &GCEVKXCVG'XGPV 5GPFGT 61DLGEV  RTQEGFWTG &GUVTQ['XGPV 5GPFGT 61DLGEV  RTQEGFWTG -G[2TGUU'XGPV 5GPFGT 61DLGEV XCT -G[ %JCT  RTQEGFWTG 2CKPV'XGPV 5GPFGT 61DLGEV  RTQVGEVGF ] 2TQVGEVGF FGENCTCVKQPU _ RTQEGFWTG &GHKPG2TQRGTV[2CIGU &GHKPG2TQRGTV[2CIG 6&GHKPG2TQRGTV[2CIG  QXGTTKFG RTQEGFWTG 'XGPV5KPM%JCPIGF EQPUV 'XGPV5KPM +7PMPQYP  QXGTTKFG HWPEVKQP )GVA#EVKXG 9QTF$QQN UCHGECNN HWPEVKQP )GVA#NKIP&KUCDNGF 9QTF$QQN UCHGECNN HWPEVKQP )GVA#WVQ5ETQNN 9QTF$QQN UCHGECNN HWPEVKQP )GVA#WVQ5KG 9QTF$QQN UCHGECNN HWPEVKQP )GVA#Z$QTFGT5V[NG 6Z#EVKXG(QTO$QTFGT5V[NG UCHGECNN HWPEVKQP )GVA%CRVKQP 9KFG5VTKPI UCHGECNN HWPEVKQP )GVA%QNQT 1.'A%1.14 UCHGECNN HWPEVKQP )GVA&QWDNG$WHHGTGF 9QTF$QQN UCHGECNN HWPEVKQP )GVA&TQR6CTIGV 9QTF$QQN UCHGECNN HWPEVKQP )GVA'PCDNGF 9QTF$QQN UCHGECNN HWPEVKQP )GVA(QPV +(QPV&KUR UCHGECNN
    • Rozdział 3. ActiveX 83 HWPEVKQP )GVA*GNR(KNG 9KFG5VTKPI UCHGECNN HWPEVKQP )GVA-G[2TGXKGY 9QTF$QQN UCHGECNN HWPEVKQP )GVA2KZGNU2GT+PEJ +PVGIGT UCHGECNN HWPEVKQP )GVA2TKPV5ECNG 6Z2TKPV5ECNG UCHGECNN HWPEVKQP )GVA5ECNGF 9QTF$QQN UCHGECNN HWPEVKQP )GVA5ETGGP5PCR 9QTF$QQN UCHGECNN HWPEVKQP )GVA5PCR$WHHGT +PVGIGT UCHGECNN HWPEVKQP )GVA8KUKDNG 9QTF$QQN UCHGECNN HWPEVKQP )GVA8KUKDNG&QEM%NKGPV%QWPV +PVGIGT UCHGECNN RTQEGFWTG A5GVA(QPV XCT 8CNWG +(QPV&KUR  UCHGECNN RTQEGFWTG 5GVA#WVQ5ETQNN 8CNWG 9QTF$QQN  UCHGECNN RTQEGFWTG 5GVA#WVQ5KG 8CNWG 9QTF$QQN  UCHGECNN RTQEGFWTG 5GVA#Z$QTFGT5V[NG 8CNWG 6Z#EVKXG(QTO$QTFGT5V[NG  UCHGECNN RTQEGFWTG 5GVA%CRVKQP EQPUV 8CNWG 9KFG5VTKPI  UCHGECNN RTQEGFWTG 5GVA%QNQT 8CNWG 1.'A%1.14  UCHGECNN RTQEGFWTG 5GVA&QWDNG$WHHGTGF 8CNWG 9QTF$QQN  UCHGECNN RTQEGFWTG 5GVA&TQR6CTIGV 8CNWG 9QTF$QQN  UCHGECNN RTQEGFWTG 5GVA'PCDNGF 8CNWG 9QTF$QQN  UCHGECNN RTQEGFWTG 5GVA(QPV EQPUV 8CNWG +(QPV&KUR  UCHGECNN RTQEGFWTG 5GVA*GNR(KNG EQPUV 8CNWG 9KFG5VTKPI  UCHGECNN RTQEGFWTG 5GVA-G[2TGXKGY 8CNWG 9QTF$QQN  UCHGECNN RTQEGFWTG 5GVA2KZGNU2GT+PEJ 8CNWG +PVGIGT  UCHGECNN RTQEGFWTG 5GVA2TKPV5ECNG 8CNWG 6Z2TKPV5ECNG  UCHGECNN RTQEGFWTG 5GVA5ECNGF 8CNWG 9QTF$QQN  UCHGECNN RTQEGFWTG 5GVA5ETGGP5PCR 8CNWG 9QTF$QQN  UCHGECNN RTQEGFWTG 5GVA5PCR$WHHGT 8CNWG +PVGIGT  UCHGECNN RTQEGFWTG 5GVA8KUKDNG 8CNWG 9QTF$QQN  UCHGECNN RTQEGFWTG 5VCTV (KNG0COG 2%JCT  UCHGECNN RTQEGFWTG 5VQR UCHGECNN RWDNKE ] 2WDNKE FGENCTCVKQPU _ RTQEGFWTG +PKVKCNKG QXGTTKFG GPF KORNGOGPVCVKQP WUGU %QO1DL %QO5GTX ] 4
    • &(/_ ] 686GZV _ RTQEGFWTG 686GZV&GHKPG2TQRGTV[2CIGU &GHKPG2TQRGTV[2CIG 6&GHKPG2TQRGTV[2CIG  DGIKP ] &GHKPG RTQRGTV[ RCIGU JGTG 2TQRGTV[ RCIGU CTG FGHKPGF D[ ECNNKPI &GHKPG2TQRGTV[2CIG YKVJ VJG ENCUU KF QH VJG RCIG (QT GZCORNG &GHKPG2TQRGTV[2CIG %NCUUA86GZV2CIG  _ GPF RTQEGFWTG 686GZV'XGPV5KPM%JCPIGF EQPUV 'XGPV5KPM +7PMPQYP  DGIKP ('XGPVU  'XGPV5KPM CU +86GZV'XGPVU KPJGTKVGF 'XGPV5KPM%JCPIGF 'XGPV5KPM  GPF RTQEGFWTG 686GZV+PKVKCNKG DGIKP KPJGTKVGF +PKVKCNKG 1P#EVKXCVG  #EVKXCVG'XGPV
    • 84 Delphi 7. Ćwiczenia zaawansowane 1P%NKEM  %NKEM'XGPV 1P%TGCVG  %TGCVG'XGPV 1P&DN%NKEM  &DN%NKEM'XGPV 1P&GCEVKXCVG  &GCEVKXCVG'XGPV 1P&GUVTQ[  &GUVTQ['XGPV 1P-G[2TGUU  -G[2TGUU'XGPV 1P2CKPV  2CKPV'XGPV GPF HWPEVKQP 686GZV)GVA#EVKXG 9QTF$QQN DGIKP 4GUWNV  #EVKXG GPF HWPEVKQP 686GZV)GVA#NKIP&KUCDNGF 9QTF$QQN DGIKP 4GUWNV  #NKIP&KUCDNGF GPF HWPEVKQP 686GZV)GVA#WVQ5ETQNN 9QTF$QQN DGIKP 4GUWNV  #WVQ5ETQNN GPF HWPEVKQP 686GZV)GVA#WVQ5KG 9QTF$QQN DGIKP 4GUWNV  #WVQ5KG GPF HWPEVKQP 686GZV)GVA#Z$QTFGT5V[NG 6Z#EVKXG(QTO$QTFGT5V[NG DGIKP 4GUWNV  1TF #Z$QTFGT5V[NG  GPF HWPEVKQP 686GZV)GVA%CRVKQP 9KFG5VTKPI DGIKP 4GUWNV  9KFG5VTKPI %CRVKQP  GPF HWPEVKQP 686GZV)GVA%QNQT 1.'A%1.14 DGIKP 4GUWNV  1.'A%1.14 %QNQT  GPF HWPEVKQP 686GZV)GVA&QWDNG$WHHGTGF 9QTF$QQN DGIKP 4GUWNV  &QWDNG$WHHGTGF GPF HWPEVKQP 686GZV)GVA&TQR6CTIGV 9QTF$QQN DGIKP 4GUWNV  &TQR6CTIGV GPF HWPEVKQP 686GZV)GVA'PCDNGF 9QTF$QQN DGIKP 4GUWNV  'PCDNGF GPF
    • Rozdział 3. ActiveX 85 HWPEVKQP 686GZV)GVA(QPV +(QPV&KUR DGIKP )GV1NG(QPV (QPV 4GUWNV  GPF HWPEVKQP 686GZV)GVA*GNR(KNG 9KFG5VTKPI DGIKP 4GUWNV  9KFG5VTKPI *GNR(KNG  GPF HWPEVKQP 686GZV)GVA-G[2TGXKGY 9QTF$QQN DGIKP 4GUWNV  -G[2TGXKGY GPF HWPEVKQP 686GZV)GVA2KZGNU2GT+PEJ +PVGIGT DGIKP 4GUWNV  2KZGNU2GT+PEJ GPF HWPEVKQP 686GZV)GVA2TKPV5ECNG 6Z2TKPV5ECNG DGIKP 4GUWNV  1TF 2TKPV5ECNG  GPF HWPEVKQP 686GZV)GVA5ECNGF 9QTF$QQN DGIKP 4GUWNV  5ECNGF GPF HWPEVKQP 686GZV)GVA5ETGGP5PCR 9QTF$QQN DGIKP 4GUWNV  5ETGGP5PCR GPF HWPEVKQP 686GZV)GVA5PCR$WHHGT +PVGIGT DGIKP 4GUWNV  5PCR$WHHGT GPF HWPEVKQP 686GZV)GVA8KUKDNG 9QTF$QQN DGIKP 4GUWNV  8KUKDNG GPF HWPEVKQP 686GZV)GVA8KUKDNG&QEM%NKGPV%QWPV +PVGIGT DGIKP 4GUWNV  8KUKDNG&QEM%NKGPV%QWPV GPF RTQEGFWTG 686GZVA5GVA(QPV XCT 8CNWG +(QPV&KUR  DGIKP 5GV1NG(QPV (QPV 8CNWG  GPF RTQEGFWTG 686GZV#EVKXCVG'XGPV 5GPFGT 61DLGEV  DGIKP KH ('XGPVU  PKN VJGP ('XGPVU1P#EVKXCVG GPF
    • 86 Delphi 7. Ćwiczenia zaawansowane RTQEGFWTG 686GZV%NKEM'XGPV 5GPFGT 61DLGEV  DGIKP KH ('XGPVU  PKN VJGP ('XGPVU1P%NKEM GPF RTQEGFWTG 686GZV%TGCVG'XGPV 5GPFGT 61DLGEV  DGIKP KH ('XGPVU  PKN VJGP ('XGPVU1P%TGCVG GPF RTQEGFWTG 686GZV&DN%NKEM'XGPV 5GPFGT 61DLGEV  DGIKP KH ('XGPVU  PKN VJGP ('XGPVU1P&DN%NKEM GPF RTQEGFWTG 686GZV&GCEVKXCVG'XGPV 5GPFGT 61DLGEV  DGIKP KH ('XGPVU  PKN VJGP ('XGPVU1P&GCEVKXCVG GPF RTQEGFWTG 686GZV&GUVTQ['XGPV 5GPFGT 61DLGEV  DGIKP KH ('XGPVU  PKN VJGP ('XGPVU1P&GUVTQ[ GPF RTQEGFWTG 686GZV-G[2TGUU'XGPV 5GPFGT 61DLGEV XCT -G[ %JCT  XCT 6GOR-G[ 5OCNNKPV DGIKP 6GOR-G[  5OCNNKPV -G[  KH ('XGPVU  PKN VJGP ('XGPVU1P-G[2TGUU 6GOR-G[  -G[  %JCT 6GOR-G[  GPF RTQEGFWTG 686GZV2CKPV'XGPV 5GPFGT 61DLGEV  DGIKP KH ('XGPVU  PKN VJGP ('XGPVU1P2CKPV GPF RTQEGFWTG 686GZV5GVA#WVQ5ETQNN 8CNWG 9QTF$QQN  DGIKP #WVQ5ETQNN  8CNWG GPF RTQEGFWTG 686GZV5GVA#WVQ5KG 8CNWG 9QTF$QQN  DGIKP #WVQ5KG  8CNWG GPF RTQEGFWTG 686GZV5GVA#Z$QTFGT5V[NG 8CNWG 6Z#EVKXG(QTO$QTFGT5V[NG  DGIKP #Z$QTFGT5V[NG  6#EVKXG(QTO$QTFGT5V[NG 8CNWG  GPF RTQEGFWTG 686GZV5GVA%CRVKQP EQPUV 8CNWG 9KFG5VTKPI  DGIKP %CRVKQP  6%CRVKQP 8CNWG  GPF
    • Rozdział 3. ActiveX 87 RTQEGFWTG 686GZV5GVA%QNQT 8CNWG 1.'A%1.14  DGIKP %QNQT  6%QNQT 8CNWG  GPF RTQEGFWTG 686GZV5GVA&QWDNG$WHHGTGF 8CNWG 9QTF$QQN  DGIKP &QWDNG$WHHGTGF  8CNWG GPF RTQEGFWTG 686GZV5GVA&TQR6CTIGV 8CNWG 9QTF$QQN  DGIKP &TQR6CTIGV  8CNWG GPF RTQEGFWTG 686GZV5GVA'PCDNGF 8CNWG 9QTF$QQN  DGIKP 'PCDNGF  8CNWG GPF RTQEGFWTG 686GZV5GVA(QPV EQPUV 8CNWG +(QPV&KUR  DGIKP 5GV1NG(QPV (QPV 8CNWG  GPF RTQEGFWTG 686GZV5GVA*GNR(KNG EQPUV 8CNWG 9KFG5VTKPI  DGIKP *GNR(KNG  5VTKPI 8CNWG  GPF RTQEGFWTG 686GZV5GVA-G[2TGXKGY 8CNWG 9QTF$QQN  DGIKP -G[2TGXKGY  8CNWG GPF RTQEGFWTG 686GZV5GVA2KZGNU2GT+PEJ 8CNWG +PVGIGT  DGIKP 2KZGNU2GT+PEJ  8CNWG GPF RTQEGFWTG 686GZV5GVA2TKPV5ECNG 8CNWG 6Z2TKPV5ECNG  DGIKP 2TKPV5ECNG  62TKPV5ECNG 8CNWG  GPF RTQEGFWTG 686GZV5GVA5ECNGF 8CNWG 9QTF$QQN  DGIKP 5ECNGF  8CNWG GPF RTQEGFWTG 686GZV5GVA5ETGGP5PCR 8CNWG 9QTF$QQN  DGIKP 5ETGGP5PCR  8CNWG GPF RTQEGFWTG 686GZV5GVA5PCR$WHHGT 8CNWG +PVGIGT  DGIKP 5PCR$WHHGT  8CNWG GPF
    • 88 Delphi 7. Ćwiczenia zaawansowane RTQEGFWTG 686GZV5GVA8KUKDNG 8CNWG 9QTF$QQN  DGIKP 8KUKDNG  8CNWG GPF RTQEGFWTG 686GZV5VCTV (KNG0COG 2%JCT  XCT %QWPVGT  +PVGIGT  NKEPKM  KNG LW PCRKUÎY QUVC Q Y[ YKGVNQP[EJ (2CWUG  +PVGIGT  ECU Y[ YKGVNCPKC PCRKUW %WTTGPV6KOG  66KOG  ECU QFVYCTCPKC HKNOW Y*QWT Y/KP Y5GE  +PVGIGT DGIKP (.KPGU  65VTKPI.KUV%TGCVG (.KPGU.QCF(TQO(KNG (KNG0COG   C CFWL RNKM VGMUVQY[ 2TGRCTG6GZV  RT[IQVWL FYKG VCDNKEG ($TQMGP  (CNUG %QWPVGT   (2CWUG   Y*QWT   Y/KP   Y5GE   ] RúVNC Y[ YKGVNCPC EQ  OKNKUGMWPF FQRÎMK OKGPPC ($TQMGP PKG OC YCTVQ EK (CNUG _ YJKNG PQV ($TQMGP QT PQV #RRNKECVKQP6GTOKPCVGF FQ DGIKP #RRNKECVKQP2TQEGUU/GUUCIGU 5NGGR    QFEGMCL  UGM KH ($TQMGP VJGP $TGCM  LG GNK OKGPPC  647' RTGTYKL FKC CPKG +PE Y5GE   YKúMU NKEDú UGMWPF KH Y5GE   VJGP  LG GNK NKEDC YKúMUC QF  DGIKP +PE Y/KP   YKúMU NKEDú OKP Y5GE    Y[GTWL OKGPPæ GPF KH Y/KP  VJGP  LG GNK NKEDC OKP  DGIKP +PE Y*QWT   YKúMU NKEDú IQFKP Y/KP    Y[GTWL OKPWV[ GPF  PC RQFUVCYKG FCP[EJ WVYÎT OKGPPæ 66KOG %WTTGPV6KOG  'PEQFG6KOG Y*QWT Y/KP Y5GE   NDN%WTTGPV%CRVKQP  6KOG6Q5VT %WTTGPV6KOG  KH #PUK/CVEJ5VT 6KOG6Q5VT %WTTGPV6KOG  (6KOG VJGP DGIKP +PE %QWPVGT  RPN/GUUCIG%CRVKQP  (6GZV=%QWPVGT? (2CWUG   GPF GNUG DGIKP KH .GPIVJ RPN/GUUCIG%CRVKQP  VJGP DGIKP +PE (2CWUG 
    • Rozdział 3. ActiveX 89 KH (2CWUG   VJGP DGIKP (2CWUG   RPN/GUUCIG%CRVKQP   GPF GPF GPF GPF GPF RTQEGFWTG 686GZV5VQR DGIKP ($TQMGP  6TWG GPF RTQEGFWTG 686GZV2TGRCTG6GZV XCT K  +PVGIGT DGIKP ] QMTG N YKGNMQ è VCDNKE[ PC RQFUVCYKG NKED[ NKPKK _ 5GV.GPIVJ (6KOG (.KPGU%QWPV  5GV.GPIVJ (6GZV (.KPGU%QWPV  ] RúVNC RQ YU[UVMKEJ NKPKCEJ _ HQT +   VQ (.KPGU%QWPV  FQ DGIKP ] FQ VGIQ GNGOGPVW VCDNKE[ RT[RKU ECU Y MVÎT[O RQYKPKGP Y[ YKGVNKè UKú PCRKU _ (6KOG=K?  %QR[ (.KPGU=K?    ] VWVCL RT[RKU UCOæ VTG è _ (6GZV=K?  %QR[ (.KPGU=K?  .GPIVJ (.KPGU=K?    GPF GPF KPKVKCNKCVKQP 6#EVKXG(QTO(CEVQT[%TGCVG %QO5GTXGT 6#EVKXG(QTO%QPVTQN 686GZV %NCUUA86GZV   1.'/+5%A5+/2.'(4#/' QT 1.'/+5%A#%65.+-'.#$'. VO#RCTVOGPV  GPF Budowa, rejestracja i instalacja kontrolki Nasza kontrolka jest ju gotowa. Poprzez wybranie pozycji Build z menu Project kod źródłowy zostanie skompilowany do postaci pliku .ocx. Je eli projekt zawiera jakieś błędy — informacja o tym pojawi się w oknie (ang. Message View). Poprzez wybranie pozycji Register ActiveX Server z menu Run kontrolka zostanie za- rejestrowana w systemie.
    • 90 Delphi 7. Ćwiczenia zaawansowane Ćwiczenie 3.12. Instalacja kontrolki w palecie komponentów. 1. Zamknij projekt — wybierz z menu File pozycję Close All. 2. Teraz z menu Component wybierz Import ActiveX Control. Poka e się okno z rysunku 3.7. 3. Naciśnij przycisk #FF i odszukaj skompilowaną kontrolkę. Po tym zabiegu kontrolka zostanie dodana do listy. 4. Po naciśnięciu przycisku +PUVCNN powtórzy się proces z ćwiczenia 3.7. Wykorzystanie kontrolki TVText Kontrolka została umieszczona na wybranej przez Ciebie palecie. Mo esz utworzyć nowy projekt i umieścić ową kontrolkę na formularzu. Ćwiczenie 3.13. Obsługa kontrolki. Oprócz samej kontrolki na formularzu umieść tak e dwa komponenty 6$WVVQP oraz 61RGP &KCNQI. Jeden przycisk będzie słu ył do rozpoczęcia odtwarzania, a drugi — do jego zatrzymania. Cały listing programu przedstawiono na wydruku 3.5. Wydruk 3.5. Program wykorzystujący kontrolkę TVText ] %QR[TKIJV E  D[ #FCO $QFWEJ CFCO"RTQITCOOGUPGV _ WPKV /CKP(TO KPVGTHCEG WUGU 9KPFQYU /GUUCIGU 5[U7VKNU 8CTKCPVU %NCUUGU )TCRJKEU %QPVTQNU (QTOU &KCNQIU 1NG%VTNU 86GZV2TQLA6.$ 5VF%VTNU V[RG 6/CKP(QTO  ENCUU 6(QTO 86GZV 686GZV DVP.QCF 6$WVVQP 1RGP&KCNQI 61RGP&KCNQI DVP5VQR 6$WVVQP RTQEGFWTG DVP.QCF%NKEM 5GPFGT 61DLGEV  RTQEGFWTG DVP5VQR%NKEM 5GPFGT 61DLGEV  RTQEGFWTG (QTO%NQUG 5GPFGT 61DLGEV XCT #EVKQP 6%NQUG#EVKQP  RTKXCVG ] 2TKXCVG FGENCTCVKQPU _ RWDNKE ] 2WDNKE FGENCTCVKQPU _ GPF
    • Rozdział 3. ActiveX 91 XCT /CKP(QTO 6/CKP(QTO KORNGOGPVCVKQP ] 4
    • FHO_ RTQEGFWTG 6/CKP(QTODVP.QCF%NKEM 5GPFGT 61DLGEV  DGIKP KH 1RGP&KCNQI'ZGEWVG VJGP DGIKP 86GZV5VQR  CVT[OCPKG LG GNK VGTC EQ UKú QFVYCTC DVP5VQR'PCDNGF  6TWG 86GZV5VCTV 2%JCT 1RGP&KCNQI(KNG0COG   Y[YQ CPKG RTQEGFWT[ GPF GPF RTQEGFWTG 6/CKP(QTODVP5VQR%NKEM 5GPFGT 61DLGEV  DGIKP 86GZV5VQR DVP5VQR'PCDNGF  (CNUG GPF RTQEGFWTG 6/CKP(QTO(QTO%NQUG 5GPFGT 61DLGEV XCT #EVKQP 6%NQUG#EVKQP  DGIKP 86GZV5VQR  CVT[OCPKG LG GNK W [VMQYPKM EJEG Y[L è RTQITCOW GPF GPF Zauwa , e w kodzie znajduje się zdarzenie 1P%NQUG formularza. Zdarzenie to występuje w przypadku, gdy u ytkownik zdecyduje się na zamknięcie programu. Nim to nastąpi, nale y wywołać metodę 5VQR, aby zatrzymała odtwarzanie napisów. Rysunek 3.12 przed- stawia program w działaniu. Oczywiście, Ty mo esz „dorobić” do tego programu mo liwość wyświetlania samego filmu (mo na zrealizować to przy u yciu komponentu 6/GFKC2NC[GT). Rysunek 3.12. Program podczas wyświetlania napisów do filmu Publikowanie ActiveX w Internecie Jak ju wspomniałem na początku tego rozdziału, istnieje mo liwość umieszczenia własnej kontrolki ActiveX na swojej stronie WWW.
    • 92 Delphi 7. Ćwiczenia zaawansowane Ćwiczenie 3.14. Tworzenie przykładowej kontrolki. Istotą tego podrozdziału jest zaprezentowanie mo liwości publikowania własnych kontrolek. Z tego te względu obiekt, który teraz stworzymy będzie bardzo prosty. Utwórz nową kontrolkę, nazwij ją #EVKXG999. W polu Implementation Unit wpisz #EVKXG999(TORCU, a w polu Project Name: #EVKXG9992TQLFRT. Nasza kontrolka będzie w pętli wyświetlać napis, dając przy tym efekt maszyny do pisania, czyli litera po literze. Na formularzu umieść komponent 6)TQWR$QZ, a na nim 6.CDGN. Rozciągnij etykietę na całą szerokość komponentu 6)TQWR$QZ i zmień właściwość #WVQ5KG na (CNUG. Je eli chodzi o kod, to umieść dodatkowo dwa przyciski. Jeden będzie słu ył do rozpoczęcia animacji, a drugi do jej zatrzymania. XCT ($TQMGP  $QQNGCP RTQEGFWTG 6#EVKXG999DVP)Q%NKEM 5GPFGT 61DLGEV  EQPUV 'Z/UI  6Q LGUV RT[M CFQYC MQPVTQNMC   XCT K  +PVGIGT DGIKP ($TQMGP  (CNUG ] RúVNC YJKNG Y[MQP[YCPC RTG EC [ ECU VTYCPKC RTQITCOW _ YJKNG PQV #RRNKECVKQP6GTOKPCVGF QT PQV ($TQMGP FQ DGIKP NDN/GUUCIG%CRVKQP   ] RúVNC HQT RQYQFWLG Y[ YKGVNGPKG PC GV[MKGEKG MQNGLP[EJ NKVGT _ HQT K   VQ .GPIVJ 'Z/UI FQ DGIKP #RRNKECVKQP2TQEGUU/GUUCIGU KH ($TQMGP VJGP $TGCM 5NGGR   NDN/GUUCIG%CRVKQP  NDN/GUUCIG%CRVKQP 'Z/UI=K? GPF GPF GPF RTQEGFWTG 6#EVKXG999DVP5VQR%NKEM 5GPFGT 61DLGEV  DGIKP ($TQMGP  6TWG GPF Kod daje efekt maszyny do pisania, wyświetla litera po literze przykładowy napis. To by było na tyle, je eli chodzi o samą kontrolkę. Do opublikowania kontrolki w Sieci posłu ymy się dwiema pozycjami z menu Project: Web Deployment Options oraz Web Deploy. Na samym początku wybierz pierwszą pozycję, aby ustalić opcję publikacji (rysunek 3.13). W oknie tym musimy podać parę informacji, które są potrzebne do zbudowania kon- trolki. Załó my, e będzie ona uruchamiana na lokalnym serwerze Apache.
    • Rozdział 3. ActiveX 93 Rysunek 3.13. Okno Web Deployment Options Ćwiczenie 3.15. Publikowanie kontrolki. Pierwsze pole Target dir okna Web Deployment Options musi zawierać ście kę do ka- talogu, w którym kontrolka zostanie umieszczona po zbudowaniu. W kolejnym polu, Target URL, wpisz adres URL, który będzie prowadził do odpowiedniej strony — ja wpisałem JVVRNQECNJQUV. Ostatnie pole HTML Dir określa ście kę, gdzie wygenerowany zostanie odpowiedni plik HTML. Ja wpisałem tę samą wartość, co w pozycji Target Dir. To właściwie wszystko, zamknij okno przyciskiem OK. Wybierz z menu Project pozycję Web Deploy. Kontrolka powinna zostać skompilowana i zapisana w wybranym przez Ciebie katalogu. W oknie Web Deployment Options mo esz zaznaczyć opcję Use CAB file compression. Dzięki temu kontrolka ActiveX zostanie skompilowana do pliku *.cab. Po tym zabiegu plik ActiveWWWProj.htm zawiera treść przedstawioną na wydruku 3.6. Wydruk 3.6. Kod HTML strony wygenerowanej przez Delphi *6/. * &GNRJK  #EVKXG: 6GUV 2CIG * R ;QW UJQWNF UGG [QWT &GNRJK  HQTOU QT EQPVTQNU GODGFFGF KP VJG HQTO DGNQY *4 EGPVGT 2 1$,'%6 ENCUUKF ENUKF$&$&#'& EQFGDCUG JVVRNQECNJQUV#EVKXG9992TQLQEZ XGTUKQP YKFVJ JGKIJV CNKIPEGPVGT JURCEG XURCEG 1$,'%6 *6/.
    • 94 Delphi 7. Ćwiczenia zaawansowane Aby kontrolka ActiveX była lepiej wyświetlana, zmieniłem szerokość i wysokość obiektu na takie wartości: YKFVJ JGKIJV Rezultat działania programu mo esz zobaczyć na rysunku 3.14. Rysunek 3.14. Kontrolka ActiveX w działaniu! Względy bezpieczeństwa U ywanie kontrolek ActiveX w Internecie nie jest zbyt popularną usługą. Wielu u ytkowni- ków ze względu na niebezpieczeństwo wynikające z korzystania z ActiveX ma wyłączoną opcję ich ładowania (zdaje się, e jest to domyślne ustawienie). Z tego względu, chcąc zała- dować kontrolkę, zobaczą tylko taki komunikat, jak pokazany na rysunku 3.15. Rysunek 3.15. Komunikat informujący o niemo ności obsłu enia ActiveX Ćwiczenia dodatkowe Ćwiczenie 3.16. Napisz program do wyświetlania filmów, który będzie korzystać z kontrolki TVText. Podsumowanie Co prawda ActiveX nie jest popularną technologią na stronach WWW, ale dość wygod- ną, je eli chodzi o tworzenie obiektów środowiskowych. Pamiętaj, e utworzoną kon- trolkę mo na równie uruchomić w innych środowiskach programistycznych systemu Windows.