Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00322 007706 11223307 na godz. na dobę w sumie
Delphi 7. Ćwiczenia zaawansowane - książka
Delphi 7. Ćwiczenia zaawansowane - książka
Autor: Liczba stron: 160
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-076-6 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> delphi - programowanie
Porównaj ceny (książka, ebook, audiobook).
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:

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Delphi 7. Æwiczenia zaawansowane Autor: Adam Boduch ISBN: 83-7361-076-6 Format: B5, stron: 158 Przyk³ady na ftp: 951 kB 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 IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Spis treści Rozdział 1. Wstęp..............................................z...................................................z...........................................................7 Nowości w Delphi 7...................................................z.............................................................................9 Nowości w zakresie IDE...................................................k................................................ 9 Nowe elementy menu ...................................................k............................................ 10 Code Insight...................................................k...................................................k....... 12 Opcje kodu źródłowego...................................................k.......................................... 13 Pozostałe zmiany IDE...................................................k............................................ 14 Nowe komponenty VCL ...................................................k.............................................. 15 Elementy wizualne w stylu Windows XP...................................................k................. 15 Manifest XP...................................................k...................................................k....... 19 Pakiet Indy ...................................................k...................................................k........ 20 Pozostałe komponenty ...................................................k........................................... 20 Komponenty zmodyfikowane ...................................................k................................. 20 Zmiany w bibliotece uruchomieniowej ...................................................k.......................... 20 Moduł Classes...................................................k...................................................k.... 20 Moduł StrUtils ...................................................k...................................................k... 22 Moduł VarCmplx...................................................k...................................................k 22 Moduł SysUtils ...................................................k...................................................k.. 22 .NET...................................................k...................................................k....................... 22 Modyfikacje dotyczące kompilatora ...................................................k........................ 22 Bazy danych...................................................k...................................................k............ 24 Podsumowanie...................................................k...................................................k......... 24 Rozdział 2. Programowanie sieciowe...................................................z............................................................25 Komponenty dostępne w Delphi ...................................................k................................... 25 Jak to działa? ...................................................k...................................................k...........26 IP...................................................k...................................................k...................... 26 TCP ...................................................k...................................................k.................. 26 Porty ...................................................k...................................................k................. 27 Protokół HTTP ...................................................k...................................................k.. 27 Protokół FTP ...................................................k...................................................k..... 27 Protokół SMTP ...................................................k...................................................k.. 27 Korzystanie z gniazdek ...................................................k................................................ 28 Ustanawianie połączenia ...................................................k........................................ 28 Przesyłanie danych pomiędzy komputerami ...................................................k............. 32 Jak działają konie trojańskie?...................................................k.................................. 33 4 Delphi 7. Ćwiczenia zaawansowane Rozdział 3. Rozdział 4. Wykorzystanie protokołu SMTP ...................................................k.................................. 35 Wysyłanie e-maili...................................................k.................................................. 35 Wykorzystanie protokołu HTTP...................................................k................................... 44 Łączenie się z serwerem HTTP...................................................k............................... 44 Wymiana danych...................................................k...................................................k 45 Praktyczne przykłady wykorzystania protokołu HTTP ...................................................k... 49 Wykrywanie nowej wersji programu ...................................................k....................... 49 Wykorzystanie wyszukiwarki serwisu 4programmers.net ............................................. 52 Podsumowanie...................................................k...................................................k......... 63 ActiveX...................................................z...................................................z................................................65 Co to jest COM?...................................................k...................................................k...... 65 Tworzenie obiektów COM...................................................k........................................... 65 Wpisywanie kodu — ROT13 ...................................................k....................................... 72 Budowa i rejestracja kontrolki ...................................................k...................................... 73 Wykorzystanie obiektu COM ...................................................k....................................... 74 Czym jest ActiveX?...................................................k...................................................k.. 74 Importowanie kontrolek ActiveX...................................................k.................................. 75 Wykorzystanie komponentu TShockwaveFlash...................................................k........ 76 Tworzenie kontrolek ActiveX...................................................k....................................... 77 Przykładowa kontrolka ActiveX ...................................................k................................... 78 Tworzenie interfejsu COM ...................................................k..................................... 78 Tworzenie kontrolki ActiveX...................................................k.................................. 79 Budowa, rejestracja i instalacja kontrolki ...................................................k................. 89 Wykorzystanie kontrolki TVText ...................................................k............................ 90 Publikowanie ActiveX w Internecie ...................................................k.............................. 91 Względy bezpieczeństwa...................................................k........................................ 94 Podsumowanie...................................................k...................................................k......... 94 IntraWeb...................................................z...................................................z...........................................95 Tworzenie projektu ...................................................k...................................................k.. 95 Uruchamianie projektu ...................................................k................................................ 96 Dodajemy kontrolki...................................................k...................................................k.. 97 Obsługa zdarzeń ...................................................k...................................................k. 97 Przechwytywanie informacji...................................................k................................... 98 Komunikaty informacyjne ...................................................k...................................... 99 Flash ...................................................k...................................................k..................... 100 Wykorzystanie JavaScriptu ...................................................k........................................ 101 Tworzenie kilku formularzy ...................................................k....................................... 102 Wysyłanie plików...................................................k...................................................k... 104 Podsumowanie...................................................k...................................................k....... 104 Rozdział 5. Bazy danych dbExpress ...................................................z..............................................................105 Czym są aplikacje typu klient-serwer?...................................................k......................... 105 Narzędzia...................................................k...................................................k......... 105 Komponenty ...................................................k...................................................k.... 106 dbExpress...................................................k...................................................k.............. 106 Łączenie z serwerem..................................................k............................................. 106 Tworzenie tabel...................................................k...................................................k 109 Dodawanie nowych rekordów...................................................k............................... 110 Odczytywanie rekordów...................................................k....................................... 111 Kasowanie rekordów ...................................................k........................................... 113 Spis treści 5 Rozdział 6. Przykład działania — księga gości ...................................................k.............................. 116 Projektowanie tabel ...................................................k............................................. 117 Projektowanie interfejsu...................................................k....................................... 117 Kod aplikacji...................................................k...................................................k.... 119 Informacje o bazie danych ...................................................k......................................... 125 Inne komponenty dbExpress ...................................................k...................................... 126 Podsumowanie...................................................k...................................................k....... 128 Informacje o sprzęcie...................................................z..................................................................129 Informacje o katalogach...................................................k............................................. 129 Informacje o użytkowniku ...................................................k......................................... 131 Informacja o systemie operacyjnym...................................................k............................ 131 Informacja o klawiaturze...................................................k............................................ 133 Informacje o systemie...................................................k................................................ 134 Krótki przegląd pól rekordu...................................................k.................................. 134 Przykładowy program ...................................................k.......................................... 135 Częstotliwość taktowania procesora ...................................................k...................... 136 Informacje o stanie pamięci...................................................k........................................ 137 Lista aktywnych procesów ...................................................k......................................... 139 Ikony procesów...................................................k...................................................k 141 Wątki procesu...................................................k...................................................k........ 143 Formularz realizujący wyświetlenie wątków procesu ................................................. 143 „Zabijanie” aktywnych procesów ...................................................k............................... 147 Informacje o dyskach ...................................................k................................................ 149 Lista wszystkich dysków ...................................................k...................................... 149 Etykiety dysków...................................................k.................................................. 151 Dodatkowe informacje na temat dysków ...................................................k............... 152 Pobieranie rozmiaru dysków...................................................k................................. 153 Rozdzielczość ekranu ...................................................k................................................ 155 Odczyt aktualnej rozdzielczości ...................................................k............................ 155 Zmiana rozdzielczości...................................................k.......................................... 156 Podsumowanie...................................................k...................................................k....... 158 Rozdział 3. 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 NCUU0COG wpisz 4QV. Rozdział 3. (cid:1) ActiveX 67 4. Pole GUETKRVKQP służy do wstawienia krótkiego opisu obiektu. Możesz wpisać np. #NIQT[VO4QV. 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 4GVWTP6[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 WPKV4QV(TO ]9#405;/$1.A2.#6(14/1((_ KPVGTHCEG WUGU 9KPFQYU#EVKXG: NCUUGU QO1DLRA6.$5VF8EN V[RG 64QVENCUU 66[RGF QO1DLGEV+4QV RTQVGEVGF HWPEVKQP4QV2 JCTUVFECNN ] GENCTG+4QVOGVJQFUJGTG_ GPF KORNGOGPVCVKQP WUGU QO5GTX HWPEVKQP64QV4QV2 JCT DGIKP GPF KPKVKCNKCVKQP 66[RGF QO1DLGEV(CEVQT[ TGCVG QO5GTXGT64QV NCUUA4QV EK/WNVK+PUVCPEGVO#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 WPKVRA6.$   9#40+0)  6JGV[RGUFGENCTGFKPVJKUHKNGYGTGIGPGTCVGFHTQOFCVCTGC(FHTQOC 6[RG.KDTCT[+HVJKUV[RGNKDTCT[KUGZRNKEKVN[QTKPFKTGEVN[ XKC( CPQVJGTV[RGNKDTCT[TGHGTTKPIVQVJKUV[RGNKDTCT[ TGKORQT(VGFQTVJG Rozdział 3. (cid:1) ActiveX 69  4GHTGUJ EQOOCPFQHVJG6[RG.KDTCT[ FKVQTCEVKXCVGFYJKNGGFK(VKPIVJG 6[RG.KDTCT[VJGEQPVGPVUQHVJKUHKNGYKNNDGTGIGPGTCVGFC(PFCNN OCPWCNOQFKHKECVKQPUYKNNDGNQUV   2#56.964 (KNGIGPGTCVGFQPHTQO6[RG.KDTCT[FGUETKDGFDG(NQY   6[RG.KD  /QLGFQMWOGPV[ 2NKMKVGZVQYG FGNRJKAEYKEGPKCACCYCPUQYCP(G åNKUVKPIK   RVND  .+$+ ]    $ $#_ . +  *GNRHKNG *GNR5VTKPIR.KDTCT[  GRPF.UV   XUVFQNG  9+0 195 5;56 / UVFQNGVND   ]6;2 # 4 551((_7PKVOWUVDGEQORKNGFYKVJQWVV[RGEJGEMGFRQK(PVGTU ]9#405;/$1.A2.#6(14/1((_ ]94+6 #$. 105610_ ]8#424125 66 410_ KPVGTHCEG WUGU9KPFQYU#EVKXG: NCUUGU)TCRJKEU5VF8 .8CTKCPVU   )7+ 5FGENCTGFKPVJG6[RG.KDTCT[(QNNQYKPIRTGHKZGUCTGWUGF 6[RG.KDTCTKGU.+$+ AZZZZ  Q NCUUGU .#55AZZZZ  +52+PVGTHCEGU ++ AZZZZ 0QP +52KPVGTHCEGU++ AZZZZ   EQPUV 6[RG.KDTCT[/CLQTCPFOKPQTXGTUKQPU R/CLQT8GTUKQP R/KPQT8GTUKQP .+$+ AR6)7+  ]    $ $#_  ++ A+4QV6)7+  ]# ((# (  (_   .#55A4QV6)7+  ] $$#  # _  V[RG   (QTYCTFFGENCTCVKQPQHV[RGUFGHKPGFKP6[RG.KDTCT[   +4QVKPVGTHCEG    GENCTCVKQPQH Q NCUUGUFGHKPGFKP6[RG.KDTCT[  016 *GTGYGOCRGCEJ Q NCUUVQKVU GHCWNV+PVGTHCEG   4QV+4QV   +PVGTHCEG+4QV (NCIU  1NG#WVQOCVKQP )7+ ]# ((# (  (_ 70 Delphi 7. Ćwiczenia zaawansowane   +4QVKPVGTHCEG +7PMPQYP = ]# ((# (  (_ ? HWPEVKQP4QV2 JCTUVFECNN GPF   6JG NCUU Q4QVRTQXKFGUC TGCVGCPF TGCVG4GOQVGOGVJQF(VQ ETGCVGKPUVCPEGUQHVJGFGHCWNVKPVGTHCEG+4QVGZRQUGFD[ VJG Q NCUU4QV6JGHWPEVKQPUCTGKPVGPFGFVQDGWUGFD[ ENKGPVUYKUJKPIVQCWVQOCVGVJG Q NCUUQDLGEVUGZRQUGFD[VJG UGTXGTQHVJKUV[RGNKDTCT[    Q4QVENCUU ENCUUHWPEVKQP TGCVG+4QV ENCUUHWPEVKQP TGCVG4GOQVG EQPUV/CEJKPG0COGUVTKPI +4Q(V GPF KORNGOGPVCVKQP WUGU QO1DL ENCUUHWPEVKQP Q4QV TGCVG+4QV DGIKP 4GUWNV TGCVG QO1DLGEV .#55A4QV CU+4QV GPF ENCUUHWPEVKQP Q4QV TGCVG4GOQVG EQPUV/CEJKPG0COGUVTKPI (+4QV DGIKP 4GUWNV TGCVG4GOQVG QO1DLGEV /CEJKPG0COG .#55A4QV C(U+4QV GPF GPF Ten kod to na pozór wiele niezrozumiałych instrukcji. Przykładowo, zwróć uwagę na fragment: +4QVKPVGTHCEG +7PMPQYP = ]# ((# (  (_ ? HWPEVKQP4QV2 JCTUVFECNN 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. (cid:1) ActiveX Ćwiczenie 3.4. Dodawanie właściwości. 71 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 4GVWTP6[RGwybierz 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: RTQEGFWTG5GVA8CNWG 8CNWG2 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: HWPEVKQP64QV4QV2 JCT XCT K+PVGIGT 5KP5QWV5VTKPI DGIKP ]RT[RKUCPKGFCP[EJFQOKGPPGL5VTKPI_ 5KP(4QV HQT+VQ.GPIVJ 5KP FQRúVNCRQYU[UVMKEJPCMCEJ DGIKP ]LGľGNKNKVGTCLGUVYKúMUC TÎYPC QF#COPKGLUC TÎYPC QF/(_ KH 7R CUG 5KP=K?   # CPF 7R CUG 5KP=K?  / VJGP5QWV5QWV  JT 1TF 5KP=K?   MQFQYCPKG GNUGKH 7R CUG 5KP=K?   0 CPF 7R CUG 5KP=K?  VJGP5QWV5QWV  JT 1TF 5KP=K?  GNUG5QWV5QWV 5KP=K? GPF 4GUWNV2 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 WPKV4QV(TO ]9#405;/$1.A2.#6(14/1((_ KPVGTHCEG WUGU 9KPFQYU#EVKXG: NCUUGU QO1DLRA6.$5VF8EN V[RG 64QVENCUU 66[RGF QO1DLGEV+4QV RTKXCVG (4QV2 JCT RTQVGEVGF HWPEVKQP4QV2 JCTUVFECNN RTQEGFWTG5GVA8CNWG 8CNWG2 JCT UVFECNN ] GENCTG+4QVOGVJQFUJGTG_ GPF Rozdział 3. (cid:1) ActiveX 73 KORNGOGPVCVKQP WUGU QO5GTX HWPEVKQP64QV4QV2 JCT XCT K+PVGIGT 5KP5QWV5VTKPI DGIKP ]RT[RKUCPKGFCP[EJFQOKGPPGL5VTKPI_ 5KP(4QV HQT+VQ.GPIVJ 5KP FQRúVNCRQYU[UVMKEJPCMCEJ DGIKP ]LGľGNKNKVGTCLGUVYKúMUC TÎYPC QF#COPKGLUC TÎYPC QF/(_ KH 7R CUG 5KP=K?   # CPF 7R CUG 5KP=K?  / VJGP5QWV5QWV  JT 1TF 5KP=K?   MQFQYCPKG GNUGKH 7R CUG 5KP=K?   0 CPF 7R CUG 5KP=K?  VJGP5QWV5QWV  JT 1TF 5KP=K?  GNUG5QWV5QWV 5KP=K? GPF 4GUWNV2 JCT 5QWV  GPF RTQEGFWTG64QV5GVA8CNWG 8CNWG2 JCT  DGIKP (4QV8CNWG GPF KPKVKCNKCVKQP 66[RGF QO1DLGEV(CEVQT[ TGCVG QO5GTXGT64QV NCUUA4QV EK/WNVK+PUVCPEGVO#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: WUGURA6.$ QO1DL Pierwszy zawiera oczywiście deklarację interfejsu COM, a drugi zawiera nagłówek funkcji TGCVG QO1DLGEV. RTQEGFWTG6/CKP(QTODVP QPXGT NKEM 5GPFGT61DLGEV  XCT 4QV+4QV DGIKP 4QV TGCVG QO1DLGEV .#55A416 CU+4QVWVYÎTQDKGM(V 1/ KH#UUKIPGF 4QV VJGP DGIKP 4QV5GVA8CNWG 2 JCT GFV8CNWG6GZV RT[RKUYCTVQħèQFE[VCPæMQPVTQNMKGF[E[LPGL GFV8CNWG6GZV4QV4QVFQMQPVTQNMKRT[RKUCMQFQYCP[V(GMUV 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. (cid:1) 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 Rysunek 3.8. Dodawanie obiektu do pakietu Delphi 7. Ćwiczenia zaawansowane 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: RTQEGFWTG6/CKP(QTODVP.QCF NKEM 5GPFGT61DLGEV  DGIKP KH1RGP KCNQI ZGEWVGVJGPRQFECUY[ħYKGVNCPKCQMPC DGIKP (NCUJ/QXKG1RGP KCNQI(KNG0COGRT[RKUħEKGľMúFQRNKMW (NCUJ2NC[TQRQEPKLQFVYCTCPKG 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. (cid:1) 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 +ORNGOGPVCVKQP7PKV wpisz 86GZV(TORCU, a w 2TQLGEV0COG — 86GZV2TQLFRT. 3. Zapisz cały projekt. 4. 5. 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. 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. (cid:1) 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ú 2CPOWUKD[è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: (.KPGU65VTKPI.KUVOKGPPCRTGEJQYWLGPCRKU[ (6KOG(6GZV6#TTC[VCDNKECECUQTCPCRKU ($TQMGP9QTF$QQNQMTGħNCE[RTQEGULGUVWTWEJQOKQP[ RTQEGFWTG2TGRCTG6GZVRT[IQVWL RTGCPCNKWL RNKMVGMUVQY[ 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[QH5VTKPI 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. RTQEGFWTG686GZV2TGRCTG6GZV XCT K+PVGIGT DGIKP ]QMTGħNYKGNMQħèVCDNKE[PCRQFUVCYKGNKED[NKPKK_ 5GV.GPIVJ (6KOG(.KPGU QWPV  5GV.GPIVJ (6GZV(.KPGU QWPV  ]RúVNCRQYU[UVMKEJNKPKCEJ_ HQT+VQ(.KPGU QWPVFQ DGIKP ]FQVGIQGNGOGPVWVCDNKE[RT[RKUECUYMVÎT[ORQYKPKGPY[ħYKGVNK(èUKúPCRKU_ (6KOG=K? QR[ (.KPGU=K?  ]VWVCLRT[RKUUCOæ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. RTQEGFWTG686GZV5VCTV (KNG0COG2 JCT  XCT  QWPVGT+PVGIGTNKEPKMKNGLWľPCRKUÎYQUVCđQY[ħYKGVNQP[EJ (2CWUG+PVGIGTECUY[ħYKGVNCPKCPCRKUW  WTTGPV6KOG66KOGECUQFVYCTCPKCHKNOW Y*QWTY/KPY5GE+PVGIGT DGIKP (.KPGU65VTKPI.KUV TGCVG (.KPGU.QCF(TQO(KNG (KNG0COG CđCFWLRNKMVGMUVQY[ 2TGRCTG6GZVRT[IQVWLFYKGVCDNKEG ($TQMGP(CNUG  QWPVGT (2CWUG Y*QWT Y/KP Y5GE ]RúVNCY[ħYKGVNCPCEQOKNKUGMWPFFQRÎMKOKGPPC($TQMGPPKGOCYCTVQħEK(CNUG_ YJKNG PQV($TQMGP QT PQV#RRNKECVKQP6GTOKPCVGF FQ DGIKP #RRNKECVKQP2TQEGUU/GUUCIGU 5NGGR  QFEGMCLUGM KH($TQMGPVJGP$TGCMLGľGNKOKGPPC647 RTGTYKLFK(CđCPKG +PE Y5GE YKúMUNKEDúUGMWPF KHY5GE VJGPLGľGNKNKEDCYKúMUCQF DGIKP +PE Y/KP YKúMUNKEDúOKP Y5GEY[GTWLOKGPPæ GPF Rozdział 3. (cid:1) ActiveX 81 KHY/KP VJGPLGľGNKNKEDCOKP  DGIKP +PE Y*QWT YKúMUNKEDúIQFKP Y/KPY[GTWLOKPWV[ GPF PCRQFUVCYKGFCP[EJWVYÎTOKGPPæ66KOG  WTTGPV6KOG PEQFG6KOG Y*QWTY/KPY5GE  NDN WTTGPV CRVKQP6KOG6Q5VT WTTGPV6KOG  KH#PUK/CVEJ5VT 6KOG6Q5VT WTTGPV6KOG (6KOG VJGP DGIKP +PE QWPVGT  RPN/GUUCIG CRVKQP(6GZV= QWPVGT? (2CWUG GPFGNUG DGIKP KH.GPIVJ RPN/GUUCIG CRVKQP  VJGP DGIKP +PE (2CWUG  KH(2CWUGVJGP 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: RTQEGFWTG686GZV5VQR DGIKP ($TQMGP6TWG 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$QFWEJCFCO RTQITCOOGTUPGV _ WPKV86GZV(TO ]9#405;/$1.A2.#6(14/1((_ KPVGTHCEG WUGU 9KPFQYU/GUUCIGU5[U7VKNU NCUUGU)TCRJKEU QPVTQNU(QTOU KCNQIU #EVKXG:#Z VTNU86GZV2TQLA6.$5VF8EN5VF VTNU ZV VTNU5VT7VKNU V[RG 6#TTC[CTTC[QH5VTKPI 686GZVENCUU 6#EVKXG(QTO+86GZV RPN/GUUCIG62CPGN NDN WTTGPV6.CDGN RTKXCVG ]2TKXCVGFGENCTCVKQPU_ ( XGPVU+86GZV XGPVU (.KPGU65VTKPI.KUVOKGPPCRTGEJQYWLGPCRKU[ (6KOG(6GZV6#TTC[VCDNKECECUQTCPCRKU ($TQMGP9QTF$QQNQMTGħNCE[RTQEGULGUVWTWEJQOKQP[ RTQEGFWTG2TGRCTG6GZVRT[IQVWL RTGCPCNKWL RNKMVGMUVQY[ RTQEGFWTG#EVKXCVG XGPV 5GPFGT61DLGEV  RTQEGFWTG NKEM XGPV 5GPFGT61DLGEV  RTQEGFWTG TGCVG XGPV 5GPFGT61DLGEV  RTQEGFWTG DN NKEM XGPV 5GPFGT61DLGEV  RTQEGFWTG GCEVKXCVG XGPV 5GPFGT61DLGEV  RTQEGFWTG GUVTQ[ XGPV 5GPFGT61DLGEV  RTQEGFWTG-G[2TGUU XGPV 5GPFGT61DLGEVXCT-G[ JCT  RTQEGFWTG2CKPV XGPV 5GPFGT61DLGEV  RTQVGEVGF ]2TQVGEVGFFGENCTCVKQPU_ RTQEGFWTG GHKPG2TQRGTV[2CIGU GHKPG2TQRGTV[2CIG6 GHKPG2(TQRGTV[2CIG QXGTTKFG RTQEGFWTG XGPV5KPM JCPIGF EQPUV XGPV5KPM+7PMPQYP QXGTTKFG HWPEVKQP)GVA#EVKXG9QTF$QQNUCHGECNN HWPEVKQP)GVA#NKIP KUCDNGF9QTF$QQNUCHGECNN HWPEVKQP)GVA#WVQ5ETQNN9QTF$QQNUCHGECNN HWPEVKQP)GVA#WVQ5KG9QTF$QQNUCHGECNN HWPEVKQP)GVA#Z$QTFGT5V[NG6Z#EVKXG(QTO$QTFGT5V[NGUCHG(ECNN HWPEVKQP)GVA CRVKQP9KFG5VTKPIUCHGECNN HWPEVKQP)GVA QNQT1. A 1.14UCHGECNN HWPEVKQP)GVA QWDNG$WHHGTGF9QTF$QQNUCHGECNN HWPEVKQP)GVA TQR6CTIGV9QTF$QQNUCHGECNN HWPEVKQP)GVA PCDNGF9QTF$QQNUCHGECNN HWPEVKQP)GVA(QPV+(QPV KURUCHGECNN Rozdział 3. (cid:1) ActiveX 83 HWPEVKQP)GVA*GNR(KNG9KFG5VTKPIUCHGECNN HWPEVKQP)GVA-G[2TGXKGY9QTF$QQNUCHGECNN HWPEVKQP)GVA2KZGNU2GT+PEJ+PVGIGTUCHGECNN HWPEVKQP)GVA2TKPV5ECNG6Z2TKPV5ECNGUCHGECNN HWPEVKQP)GVA5ECNGF9QTF$QQNUCHGECNN HWPEVKQP)GVA5ETGGP5PCR9QTF$QQNUCHGECNN HWPEVKQP)GVA5PCR$WHHGT+PVGIGTUCHGECNN HWPEVKQP)GVA8KUKDNG9QTF$QQNUCHGECNN HWPEVKQP)GVA8KUKDNG QEM NKGPV QWPV+PVGIGTUCHGECNN RTQEGFWTGA5GVA(QPV XCT8CNWG+(QPV KUR UCHGECNN RTQEGFWTG5GVA#WVQ5ETQNN 8CNWG9QTF$QQN UCHGECNN RTQEGFWTG5GVA#WVQ5KG 8CNWG9QTF$QQN UCHGECNN RTQEGFWTG5GVA#Z$QTFGT5V[NG 8CNWG6Z#EVKXG(QTO$QTFGT5V[NG (UCHGECNN RTQEGFWTG5GVA CRVKQP EQPUV8CNWG9KFG5VTKPI UCHGECNN RTQEGFWTG5GVA QNQT 8CNWG1. A 1.14 UCHGECNN RTQEGFWTG5GVA QWDNG$WHHGTGF 8CNWG9QTF$QQN UCHGECNN RTQEGFWTG5GVA TQR6CTIGV 8CNWG9QTF$QQN UCHGECNN RTQEGFWTG5GVA PCDNGF 8CNWG9QTF$QQN UCHGECNN RTQEGFWTG5GVA(QPV EQPUV8CNWG+(QPV KUR UCHGECNN RTQEGFWTG5GVA*GNR(KNG EQPUV8CNWG9KFG5VTKPI UCHGECNN RTQEGFWTG5GVA-G[2TGXKGY 8CNWG9QTF$QQN UCHGECNN RTQEGFWTG5GVA2KZGNU2GT+PEJ 8CNWG+PVGIGT UCHGECNN RTQEGFWTG5GVA2TKPV5ECNG 8CNWG6Z2TKPV5ECNG UCHGECNN RTQEGFWTG5GVA5ECNGF 8CNWG9QTF$QQN UCHGECNN RTQEGFWTG5GVA5ETGGP5PCR 8CNWG9QTF$QQN UCHGECNN RTQEGFWTG5GVA5PCR$WHHGT 8CNWG+PVGIGT UCHGECNN RTQEGFWTG5GVA8KUKDNG 8CNWG9QTF$QQN UCHGECNN RTQEGFWTG5VCTV (KNG0COG2 JCT UCHGECNN RTQEGFWTG5VQRUCHGECNN RWDNKE ]2WDNKEFGENCTCVKQPU_ RTQEGFWTG+PKVKCNKGQXGTTKFG GPF KORNGOGPVCVKQP WUGU QO1DL QO5GTX ]4  (/_ ]686GZV_ RTQEGFWTG686GZV GHKPG2TQRGTV[2CIGU GHKPG2TQRGTV[2CIG6 GHKPG(2TQRGTV[2CIG  DGIKP ] GHKPGRTQRGTV[RCIGUJGTG2TQRGTV[RCIGUCTGFGHKPGFD[EC(NNKPI  GHKPG2TQRGTV[2CIGYKVJVJGENCUUKFQHVJGRCIG(QTGZCO(RNG  GHKPG2TQRGTV[2CIG NCUUA86GZV2CIG _ GPF RTQEGFWTG686GZV XGPV5KPM JCPIGF EQPUV XGPV5KPM+7PMPQYP  DGIKP ( XGPVU XGPV5KPMCU+86GZV XGPVU KPJGTKVGF XGPV5KPM JCPIGF XGPV5KPM  GPF RTQEGFWTG686GZV+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 1P2CKPV2CKPV XGPV GPF HWPEVKQP686GZV)GVA#EVKXG9QTF$QQN DGIKP 4GUWNV#EVKXG GPF HWPEVKQP686GZV)GVA#NKIP KUCDNGF9QTF$QQN DGIKP 4GUWNV#NKIP KUCDNGF GPF HWPEVKQP686GZV)GVA#WVQ5ETQNN9QTF$QQN DGIKP 4GUWNV#WVQ5ETQNN GPF HWPEVKQP686GZV)GVA#WVQ5KG9QTF$QQN DGIKP 4GUWNV#WVQ5KG GPF HWPEVKQP686GZV)GVA#Z$QTFGT5V[NG6Z#EVKXG(QTO$QTFGT5V[NG DGIKP 4GUWNV1TF #Z$QTFGT5V[NG  GPF HWPEVKQP686GZV)GVA CRVKQP9KFG5VTKPI DGIKP 4GUWNV9KFG5VTKPI CRVKQP  GPF HWPEVKQP686GZV)GVA QNQT1. A 1.14 DGIKP 4GUWNV1. A 1.14 QNQT  GPF HWPEVKQP686GZV)GVA QWDNG$WHHGTGF9QTF$QQN DGIKP 4GUWNV QWDNG$WHHGTGF GPF HWPEVKQP686GZV)GVA TQR6CTIGV9QTF$QQN DGIKP 4GUWNV TQR6CTIGV GPF HWPEVKQP686GZV)GVA PCDNGF9QTF$QQN DGIKP 4GUWNV PCDNGF GPF Rozdział 3. (cid:1) ActiveX 85 HWPEVKQP686GZV)GVA(QPV+(QPV KUR DGIKP )GV1NG(QPV (QPV4GUWNV  GPF HWPEVKQP686GZV)GVA*GNR(KNG9KFG5VTKPI DGIKP 4GUWNV9KFG5VTKPI *GNR(KNG  GPF HWPEVKQP686GZV)GVA-G[2TGXKGY9QTF$QQN DGIKP 4GUWNV-G[2TGXKGY GPF HWPEVKQP686GZV)GVA2KZGNU2GT+PEJ+PVGIGT DGIKP 4GUWNV2KZGNU2GT+PEJ GPF HWPEVKQP686GZV)GVA2TKPV5ECNG6Z2TKPV5ECNG DGIKP 4GUWNV1TF 2TKPV5ECNG  GPF HWPEVKQP686GZV)GVA5ECNGF9QTF$QQN DGIKP 4GUWNV5ECNGF GPF HWPEVKQP686GZV)GVA5ETGGP5PCR9QTF$QQN DGIKP 4GUWNV5ETGGP5PCR GPF HWPEVKQP686GZV)GVA5PCR$WHHGT+PVGIGT DGIKP 4GUWNV5PCR$WHHGT GPF HWPEVKQP686GZV)GVA8KUKDNG9QTF$QQN DGIKP 4GUWNV8KUKDNG GPF HWPEVKQP686GZV)GVA8KUKDNG QEM NKGPV QWPV+PVGIGT DGIKP 4GUWNV8KUKDNG QEM NKGPV QWPV GPF RTQEGFWTG686GZVA5GVA(QPV XCT8CNWG+(QPV KUR  DGIKP 5GV1NG(QPV (QPV8CNWG  GPF RTQEGFWTG686GZV#EVKXCVG XGPV 5GPFGT61DLGEV  DGIKP KH( XGPVU PKNVJGP( XGPVU1P#EVKXCVG GPF 86 Delphi 7. Ćwiczenia zaawansowane RTQEGFWTG686GZV NKEM XGPV 5GPFGT61DLGEV  DGIKP KH( XGPVU PKNVJGP( XGPVU1P NKEM GPF RTQEGFWTG686GZV TGCVG XGPV 5GPFGT61DLGEV  DGIKP KH( XGPVU PKNVJGP( XGPVU1P TGCVG GPF RTQEGFWTG686GZV DN NKEM XGPV 5GPFGT61DLGEV  DGIKP KH( XGPVU PKNVJGP( XGPVU1P DN NKEM GPF RTQEGFWTG686GZV GCEVKXCVG XGPV 5GPFGT61DLGEV  DGIKP KH( XGPVU PKNVJGP( XGPVU1P GCEVKXCVG GPF RTQEGFWTG686GZV GUVTQ[ XGPV 5GPFGT61DLGEV  DGIKP KH( XGPVU PKNVJGP( XGPVU1P GUVTQ[ GPF RTQEGFWTG686GZV-G[2TGUU XGPV 5GPFGT61DLGEVXCT-G[ JCT  XCT 6GOR-G[5OCNNKPV DGIKP 6GOR-G[5OCNNKPV -G[  KH( XGPVU PKNVJGP( XGPVU1P-G[2TGUU 6GOR-G[  -G[ JCT 6GOR-G[  GPF RTQEGFWTG686GZV2CKPV XGPV 5GPFGT61DLGEV  DGIKP KH( XGPVU PKNVJGP( XGPVU1P2CKPV GPF RTQEGFWTG686GZV5GVA#WVQ5ETQNN 8CNWG9QTF$QQN  DGIKP #WVQ5ETQNN8CNWG GPF RTQEGFWTG686GZV5GVA#WVQ5KG 8CNWG9QTF$QQN  DGIKP #WVQ5KG8CNWG GPF RTQEGFWTG686GZV5GVA#Z$QTFGT5V[NG 8CNWG6Z#EVKXG(QTO$QTFGT5V[NG(  DGIKP #Z$QTFGT5V[NG6#EVKXG(QTO$QTFGT5V[NG 8CNWG  GPF RTQEGFWTG686GZV5GVA CRVKQP EQPUV8CNWG9KFG5VTKPI  DGIKP  CRVKQP6 CRVKQP 8CNWG  GPF Rozdział 3. (cid:1) ActiveX 87 RTQEGFWTG686GZV5GVA QNQT 8CNWG1. A 1.14  DGIKP  QNQT6 QNQT 8CNWG  GPF RTQEGFWTG686GZV5GVA QWDNG$WHHGTGF 8CNWG9QTF$QQN  DGIKP  QWDNG$WHHGTGF8CNWG GPF RTQEGFWTG686GZV5GVA TQR6CTIGV 8CNWG9QTF$QQN  DGIKP  TQR6CTIGV8CNWG GPF RTQEGFWTG686GZV5GVA PCDNGF 8CNWG9QTF$QQN  DGIKP  PCDNGF8CNWG GPF RTQEGFWTG686GZV5GVA(QPV EQPUV8CNWG+(QPV KUR  DGIKP 5GV1NG(QPV (QPV8CNWG  GPF RTQEGFWTG686GZV5GVA*GNR(KNG EQPUV8CNWG9KFG5VTKPI  DGIKP *GNR(KNG5VTKPI 8CNWG  GPF RTQEGFWTG686GZV5GVA-G[2TGXKGY 8CNWG9QTF$QQN  DGIKP -G[2TGXKGY8CNWG GPF RTQEGFWTG686GZV5GVA2KZGNU2GT+PEJ 8CNWG+PVGIGT  DGIKP 2KZGNU2GT+PEJ8CNWG GPF RTQEGFWTG686GZV5GVA2TKPV5ECNG 8CNWG6Z2TKPV5ECNG  DGIKP 2TKPV5ECNG62TKPV5ECNG 8CNWG  GPF RTQEGFWTG686GZV5GVA5ECNGF 8CNWG9QTF$QQN  DGIKP 5ECNGF8CNWG GPF RTQEGFWTG686GZV5GVA5ETGGP5PCR 8CNWG9QTF$QQN  DGIKP 5ETGGP5PCR8CNWG GPF RTQEGFWTG686GZV5GVA5PCR$WHHGT 8CNWG+PVGIGT  DGIKP 5PCR$WHHGT8CNWG GPF 88 Delphi 7. Ćwiczenia zaawansowane RTQEGFWTG686GZV5GVA8KUKDNG 8CNWG9QTF$QQN  DGIKP 8KUKDNG8CNWG GPF RTQEGFWTG686GZV5VCTV (KNG0COG2 JCT  XCT  QWPVGT+PVGIGTNKEPKMKNGLWľPCRKUÎYQUVCđQY[ħYKGVNQP[EJ (2CWUG+PVGIGTECUY[ħYKGVNCPKCPCRKUW  WTTGPV6KOG66KOGECUQFVYCTCPKCHKNOW Y*QWTY/KPY5GE+PVGIGT DGIKP (.KPGU65VTKPI.KUV TGCVG (.KPGU.QCF(TQO(KNG (KNG0COG CđCFWLRNKMVGMUVQY[ 2TGRCTG6GZVRT[IQVWLFYKGVCDNKEG ($TQMGP(CNUG  QWPVGT (2CWUG Y*QWT Y/KP Y5GE ]RúVNCY[ħYKGVNCPCEQOKNKUGMWPFFQRÎMKOKGPPC($TQMGPPK(GOCYCTVQħEK(CNUG _ YJKNG PQV($TQMGP QT PQV#RRNKECVKQP6GTOKPCVGF FQ DGIKP #RRNKECVKQP2TQEGUU/GUUCIGU 5NGGR  QFEGMCLUGM KH($TQMGPVJGP$TGCMLGľGNKOKGPPC647 RTGTYKLFK(CđCPKG +PE Y5GE YKúMUNKEDúUGMWPF KHY5GE VJGPLGľGNKNKEDCYKúMUCQF DGIKP +PE Y/KP YKúMUNKEDúOKP Y5GEY[GTWLOKGPPæ GPF KHY/KP VJGPLGľGNKNKEDCOKP  DGIKP +PE Y*QWT YKúMUNKEDúIQFKP Y/KPY[GTWLOKPWV[ GPF PCRQFUVCYKGFCP[EJWVYÎTOKGPPæ66KOG  WTTGPV6KOG PEQFG6KOG Y*QWTY/KPY5GE  NDN WTTGPV CRVKQP6KOG6Q5VT WTTGPV6KOG  KH#PUK/CVEJ5VT 6KOG6Q5VT WTTGPV6KOG (6KOG VJGP DGIKP +PE QWPVGT  RPN/GUUCIG CRVKQP(6GZV= QWPVGT? (2CWUG GPFGNUG DGIKP KH.GPIVJ RPN/GUUCIG CRVKQP  VJGP DGIKP +PE (2CWUG  Rozdział 3. (cid:1) ActiveX 89 KH(2CWUGVJGP DGIKP (2CWUG RPN/GUUCIG CRVKQP  GPF GPF GPF GPF GPF RTQEGFWTG686GZV5VQR DGIKP ($TQMGP6TWG GPF RTQEGFWTG686GZV2TGRCTG6GZV XCT K+PVGIGT DGIKP ]QMTGħNYKGNMQħèVCDNKE[PCRQFUVCYKGNKED[NKPKK_ 5GV.GPIVJ (6KOG(.KPGU QWPV  5GV.GPIVJ (6GZV(.KPGU QWPV  ]RúVNCRQYU[UVMKEJNKPKCEJ_ HQT+VQ(.KPGU QWPVFQ DGIKP ]FQVGIQGNGOGPVWVCDNKE[RT[RKUECUYMVÎT[ORQYKPKGPY[ħYKGVNK(èUKúPCRKU_ (6KOG=K? QR[ (.KPGU=K?  ]VWVCLRT[RKUUCOæ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#/ QT1. /+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 Ćwiczenie 3.12. Delphi 7. Ćwiczenia zaawansowane 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$QFWEJCFCO RTQITCOOGUPGV _ WPKV/CKP(TO KPVGTHCEG WUGU 9KPFQYU/GUUCIGU5[U7VKNU8CTKCPVU NCUUGU)TCRJKEU QPVTQNU(QTOU  KCNQIU1NG VTNU86GZV2TQLA6.$5VF VTNU V[RG 6/CKP(QTOENCUU 6(QTO 86GZV686GZV DVP.QCF6$WVVQP 1RGP KCNQI61RGP KCNQI DVP5VQR6$WVVQP RTQEGFWTGDVP.QCF NKEM 5GPFGT61DLGEV  RTQEGFWTGDVP5VQR NKEM 5GPFGT61DLGEV  RTQEGFWTG(QTO NQUG 5GPFGT61DLGEVXCT#EVKQP6 NQUG#EVKQ(P  RTKXCVG ]2TKXCVGFGENCTCVKQPU_ RWDNKE ]2WDNKEFGENCTCVKQPU_ GPF Rozdział 3. (cid:1) ActiveX 91 XCT /CKP(QTO6/CKP(QTO KORNGOGPVCVKQP ]4 FHO_ RTQEGFWTG6/CKP(QTODVP.QCF NKEM 5GPFGT61DLGEV  DGIKP KH1RGP KCNQI ZGEWVGVJGP DGIKP 86GZV5VQRCVT[OCPKGLGľGNKVGTCEQħUKúQFVYCTC DVP5VQR PCDNGF6TWG 86GZV5VCTV 2 JCT 1RGP KCNQI(KNG0COG Y[YQđCPKGRTQEGFWT[ GPF GPF RTQEGFWTG6/CKP(QTODVP5VQR NKEM 5GPFGT61DLGEV  DGIKP 86GZV5VQR DVP5VQR PCDNGF(CNUG GPF RTQEGFWTG6/CKP(QTO(QTO NQUG 5GPFGT61DLGEVXCT#EVKQP6 NQ(UG#EVKQP  DGIKP 86GZV5VQRCVT[OCPKGLGľGNKWľ[VMQYPKMEJEGY[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 Ćwiczenie 3.14. Delphi 7. Ćwiczenia zaawansowane 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 RTQEGFWTG6#EVKXG999DVP)Q NKEM 5GPFGT61DLGEV  EQPUV  Z/UI 6QLGUVRT[MđCFQYCMQPVTQNMC  XCT K+PVGIGT DGIKP ($TQMGP(CNUG ]RúVNCYJKNGY[MQP[YCPCRTGECđ[ECUVTYCPKCRTQITCOW_ YJKNG PQV#RRNKECVKQP6GTOKPCVGF QT PQV($TQMGP FQ DGIKP NDN/GUUCIG CRVKQP  ]RúVNCHQTRQYQFWLGY[ħYKGVNGPKGPCGV[MKGEKGMQNGLP[EJNKVGT_( HQTKVQ.GPIVJ Z/UI FQ DGIKP #RRNKECVKQP2TQEGUU/GUUCIGU KH($TQMGPVJGP$TGCM 5NGGR   NDN/GUUCIG CRVKQPNDN/GUUCIG CRVKQP  Z/UI=K? GPF GPF GPF RTQEGFWTG6#EVKXG999DVP5VQR NKEM 5GPFGT61DLGEV  DGIKP ($TQMGP6TWG 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. (cid:1) ActiveX Rysunek 3.13. Okno Web Deployment Options 93 Ć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:6GUV2CIG* R ;QWUJQWNFUGG[QWT GNRJKHQTOUQTEQPVTQNUGODGFFGFKPVJGHQ(TODGNQY *4 EGPVGT 2 1$, 6 ENCUUKFENUKF$ $ #   EQFGDCUGJVVRNQECNJQUV#EVKXG9992TQLQEZXGTUKQP 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.
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Delphi 7. Ćwiczenia zaawansowane
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: