Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00529 010059 11029935 na godz. na dobę w sumie
Kylix. Tworzenie aplikacji - książka
Kylix. Tworzenie aplikacji - książka
Autor: , Liczba stron: 720
Wydawca: Helion Język publikacji: polski
ISBN: 83-7197-651-8 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> inne - programowanie
Porównaj ceny (książka, ebook, audiobook).
Kylix to jedno z najbardziej oczekiwanych narzędzi programistycznych ostatnich lat. Programistom piszącym programy dla systemu Linux brakowało narzędzia RAD, pozwalającego na szybkie, wizualne projektowanie i tworzenie gotowych aplikacje. Stąd pojawienie się 'Delphi dla Linuksa', jak można nazwać Kylix, przyjęte zostało z dużym zainteresowaniem. Dzięki Kyliksowi można nie tylko tworzyć potężne serwery dla Linuksa, ale też aplikacje posiadające graficzny interfejs użytkownika.

Książka 'Kylix. Tworzenie aplikacji' jest przewodnikiem dla programisty, w którym znany ekspert w dziedzinie Kyliksa, Cary Jensen, prezentuje wszystko, co niezbędne, by w pełni zapanować nad tym najnowszym narzędziem typu RAD -- począwszy od podstawowych czynności programistycznych, a skończywszy na wdrażaniu aplikacji przeznaczonych dla sieci WWW. Nauczysz się więc:

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

Darmowy fragment publikacji:

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 Kylix. Tworzenie aplikacji Autorzy: Cary Jensen, Loy Anderson T³umaczenie: Daniel Kaczmarek (roz. Wprowadzenie, 1- 5, 15 - 17, 19 - 21), Piotr Pilch (roz. 6 - 12), Anna Czerwiñska (roz. 13,14), Piotr Têczyñski (roz. 18) ISBN: 83-7197-651-8 Tytu³ orygina³u: Building Kylix Applications Format: B5, stron: 714 Przyk³ady na ftp: 433 kB Kylix to jedno z najbardziej oczekiwanych narzêdzi programistycznych ostatnich lat. Programistom pisz¹cym programy dla systemu Linux brakowa³o narzêdzia RAD, pozwalaj¹cego na szybkie, wizualne projektowanie i tworzenie gotowych aplikacje. St¹d pojawienie siê „Delphi dla Linuksa”, jak mo¿na nazwaæ Kylix, przyjête zosta³o z du¿ym zainteresowaniem. Dziêki Kyliksowi mo¿na nie tylko tworzyæ potê¿ne serwery dla Linuksa, ale te¿ aplikacje posiadaj¹ce graficzny interfejs u¿ytkownika. Ksi¹¿ka „Kylix. Tworzenie aplikacji” jest przewodnikiem dla programisty, w którym znany ekspert w dziedzinie Kyliksa, Cary Jensen, prezentuje wszystko, co niezbêdne, by w pe³ni zapanowaæ nad tym najnowszym narzêdziem typu RAD — pocz¹wszy od podstawowych czynnoġci programistycznych, a skoñczywszy na wdra¿aniu aplikacji przeznaczonych dla sieci WWW. Nauczysz siê wiêc: • Pos³ugiwaæ siê zintegrowanym ġrodowiskiem programistycznym Kyliksa • Konfigurowaæ i rozszerzaæ mo¿liwoġci edytora kodu ĥród³owego • Usuwaæ b³êdy z programów • Wykorzystywaæ biblioteki CLX • Tworzyæ aplikacje bazodanowe w Kyliksie • Pisaæ aplikacje internetowe dzia³aj¹ce po stronie serwera • Tworzyæ w³asne serwery internetowe Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Spis treści O Autorach...................................................h......................................... 13 Wprowadzenie ...................................................h.................................... 15 Część I Tworzenie aplikacji w Kyliksie 19 Rozdział 1. Wprowadzenie do Kyliksa...................................................h.................... 21 Przegląd Kyliksa ...................................................K...................................................K......... ........21 Tworzenie aplikacji przy użyciu komponentów...................................................K..............22 Kylix generuje kod źródłowy ...................................................K..........................................25 Kylix jako środowisko programowania sterowane zdarzeniami ........................................27 Programowanie zorientowane obiektowo...................................................K........................28 Open Tools API w Kyliksie...................................................K.............................................28 Czym jest Rapid Application Development? ...................................................K..................29 Kylix dla programistów Delphi...................................................K..............................................29 .....31 Kylix i Linux...................................................K...................................................K............ Przegląd CLX ...................................................K...................................................K............. ..32 Pułapki i sztuczki ...................................................K...................................................K....... ...34 Rozdział 2. Tworzenie aplikacji ...................................................h............................. 39 Tworzenie najprostszej aplikacji...................................................K............................................39 Tworzenie nowego projektu ...................................................K............................................40 Umieszczanie i konfigurowanie komponentów...................................................K...............43 Procedury obsługi zdarzeń...................................................K...............................................45 Dodawanie menu ...................................................K...................................................K..........48 Wykorzystanie dodatkowych form i okien dialogowych ...................................................K51 Uruchamianie projektu z wiersza poleceń ...................................................K.......................62 Pliki projektu Kyliksa ...................................................K...................................................K... ......64 Plik źródłowy projektu ...................................................K...................................................K.64 Moduł...................................................K...................................................K.................... Plik formy ...................................................K...................................................K............... Moduł skompilowany ...................................................K...................................................K...66 Plik wykonywalny ...................................................K...................................................K........66 Pliki zmodyfikowane ...................................................K...................................................K....67 Plik ustawień projektu ...................................................K...................................................K..67 Plik ustawień kompilatora projektu ...................................................K.................................67 ........65 ......66 Rozdział 3. Architektura RAD Kyliksa ...................................................h................... 69 Wizualne dziedziczenie form...................................................K.................................................69 Zmiana właściwości obiektów dziedziczonych...................................................K...............73 Pokrywanie procedur obsługi zdarzeń w obiektach potomnych ........................................73 Dziedziczenie form z projektu bieżącego...................................................K........................76 Definiowanie współdzielonego repozytorium obiektów ...................................................K.77 6 Kylix. Tworzenie aplikacji Projektowanie list akcji...................................................K...................................................K. Praca z ramkami...................................................K...................................................K.......... ......77 ........81 Tworzenie ramki ...................................................K...................................................K.......... .81 Wykorzystanie ramek ...................................................K...................................................K...83 Pokrywanie właściwości komponentów osadzonych na kontenerze..................................84 Procedury obsługi zdarzeń obiektów w ramce ...................................................K................86 Pokrywanie procedur obsługi zdarzeń obiektów w ramce .................................................88 Ramki i zasoby ...................................................K...................................................K........... ..89 Uproszczenie pracy z ramkami...................................................K........................................91 Przekształcanie ramek w komponenty...................................................K.............................93 Praca z modułami danych ...................................................K...................................................K.. .94 Współużytkowanie komponentów z modułami danych ...................................................K..95 Ograniczenia modułów danych ...................................................K.......................................96 Rozdział 4. Wykorzystanie i konfiguracja edytora ...................................................h.. 99 Zbiory odwzorowań klawiszy edytora...................................................K.................................100 Uzyskiwanie pomocy na temat odwzorowań klawiszy ...................................................K.101 Wybrane kombinacje klawiszy edytora ...................................................K...............................102 Nagrywanie makr klawiszy ...................................................K...........................................102 Wstawianie i usuwanie wcięć w blokach tekstu...................................................K............103 Wykorzystanie zakładek ...................................................K................................................104 Wykorzystanie pozycji listy To-Do jako zakładek...................................................K........105 Nawigacja w klasie ...................................................K...................................................K.....106 Przeglądanie kodu...................................................K...................................................K.......107 Uzupełnianie klas...................................................K...................................................K........108 Przeszukiwanie przyrostowe ...................................................K.........................................110 Wyszukiwanie odpowiadających znaków ograniczających .............................................111 Operacje na kolumnach tekstu...................................................K.......................................112 Code Insight ...................................................K...................................................K............. .........112 Uzupełnianie kodu ...................................................K...................................................K......113 Parametry kodu ...................................................K...................................................K...........115 Wyznaczanie wartości wyrażenia...................................................K..................................115 Podgląd symbolu ...................................................K...................................................K........116 Szablony kodu ...................................................K...................................................K............116 Wiązania klawiszy edytora ...................................................K..................................................119 Deklaracja klasy wiązania klawiszy ...................................................K..............................120 Implementacja klasy wiązania klawiszy...................................................K........................121 Deklaracja i implementacja procedury Register...................................................K............126 Tworzenie i instalacja nowego pakietu fazy projektowania.............................................127 Rozdział 5. Usuwanie błędów z aplikacji Kyliksa...................................................h.. 131 Zintegrowany debugger ...................................................K...................................................K....131 Wyznaczanie wartości wyrażeń...................................................K.....................................132 Okna debuggera ...................................................K...................................................K..........133 ..139 Menu Run ...................................................K...................................................K................. Wyłączanie debuggera ...................................................K...................................................K..... .140 Ignorowanie wyjątków przez debugger...................................................K.........................142 Ignorowanie określonych typów wyjątków przez debugger ............................................142 ......144 Punkty kontrolne ...................................................K...................................................K......... Punkty kontrolne kodu źródłowego...................................................K...............................144 Pozostałe typy punktów kontrolnych...................................................K.............................151 Zapamiętywanie punktów kontrolnych między sesjami Kyliksa .....................................154 Spis treści 7 Część II Aplikacje bazodanowe 155 Rozdział 6. Aplikacje bazodanowe...................................................h....................... 157 Podstawy baz danych ...................................................K...................................................K...... ..158 Bazy danych i tabele ...................................................K...................................................K...158 Bazy danych i SQL ...................................................K...................................................K.....160 Inne zagadnienia związane z bazami danych ...................................................K................160 O bazie danych używanej w tej książce ...................................................K........................161 Tworzenie bazy danych i tabel ...................................................K......................................162 Przegląd sposobów budowania baz danych w Kyliksie...................................................K.......162 Typy aplikacji bazodanowych obsługiwanych w Kyliksie ..............................................163 Komponenty używane w aplikacjach bazodanowych ...................................................K.........172 Kontrolki bazodanowe...................................................K...................................................K173 Komponenty dostępu do danych ...................................................K...................................174 Komponenty dbExpress...................................................K.................................................176 Przegląd dbExpress ...................................................K...................................................K....... ....178 Konfiguracja dbExpress...................................................K.................................................179 Tworzenie prostej aplikacji bazodanowej...................................................K............................185 Rozdział 7. Kontrolki bazodanowe...................................................h....................... 191 Konfiguracja kontrolek bazodanowych ...................................................K...............................192 „Kolejność tabulacji” (Tab Order) i kontrolki wizualne ..................................................193 Zmiana „kolejności tabulacji” ...................................................K.......................................194 Konfiguracja kontrolek bazodanowych Kyliksa...................................................K..................195 Przygotowanie szablonu komponentów danych...................................................K............196 Zastosowanie komponentu DBGrid ...................................................K..............................197 Zastosowanie komponentu DBNavigator...................................................K......................219 Zastosowanie komponentu DBText ...................................................K..............................221 Zastosowanie komponentu DBEdit ...................................................K...............................222 Zastosowania komponentu DBMemo ...................................................K...........................225 Zastosowanie komponentu DBListBox ...................................................K.........................226 Zastosowanie komponentu DBComboBox ...................................................K...................229 Zastosowanie komponentu DBCheckBox ...................................................K.....................230 Zastosowanie komponentu DBRadioGroup ...................................................K..................231 Zastosowanie komponentów DBLookupListBox i DBLookupComboBox .....................233 Rozdział 8. Klasa TField ...................................................h..................................... 237 Przegląd pól.......................................K...................................................K......................... Dostęp do pól...................................................K...................................................K............ ..........238 ..238 ............243 Pola stałe ...................................................K...................................................K............... Tworzenie pól stałych...................................................K...................................................K.244 Konfiguracja pól stałych...................................................K................................................245 Praca z polami...................................................K...................................................K........... ........253 Odczyt i zapis pól zestawu danych ...................................................K................................254 Obsługa zdarzenia OnValidate ...................................................K......................................257 Dostęp do pola — wydajność i zarządzanie ...................................................K..................258 Tworzenie nowych pól stałych ...................................................K............................................262 Tworzenie pola obliczeniowego ...................................................K....................................263 Tworzenie pól wyszukiwania ...................................................K........................................265 Definiowanie pól agregacji...................................................K............................................267 Rozdział 9. Jednokierunkowe zestawy danych ...................................................h..... 271 Jednokierunkowe zestawy danych ...................................................K.......................................272 Połączenie jednokierunkowych zestawów danych z zestawami danych typu in-memory ..272 8 Kylix. Tworzenie aplikacji Zastosowanie jednokierunkowych zestawów danych...................................................K..........273 Konfigurowanie komponentu SQLConnection ...................................................K.............273 Jednokierunkowe zestawy danych zwracające zestawy rekordów...................................274 Jednokierunkowe zestawy danych niezwracające wynikowych zestawów......................278 Zastosowanie zapytań parametryzowanych...................................................K.........................279 Tworzenie powiązań master-detail ...................................................K................................282 Tworzenie powiązań master-detail z zapytaniami dołączanymi ......................................284 Przygotowanie zapytań jednokierunkowych ...................................................K.................286 Wykonywanie procedur zapamiętanych ...................................................K..............................288 Procedury zapamiętane zwracające pojedyncze wartości ................................................289 Procedury zapamiętane zwracające zestawy danych...................................................K.....291 Rozdział 10. Zestawy danych typu in-memory ...................................................h....... 295 Zestawy danych typu in-memory...................................................K.........................................296 Tworzenie tabel i indeksów typu in-memory ...................................................K......................296 Definiowanie struktury komponentu ClientDataSet po uruchomieniu aplikacji..............303 Zapis danych i anulowanie zmian...................................................K........................................305 Zastosowanie indeksów do sortowania...................................................K................................307 Zastosowanie zakresów..............................K...................................................K......................... .312 Zastosowanie metody ApplyRange ...................................................K...............................314 Filtrowanie ...................................................K...................................................K.............. ..........315 Filtrowanie przy użyciu właściwości...................................................K.............................316 Właściwość FilterOptions...................................................K..............................................317 Obsługa zdarzenia OnFilterRecord...................................................K................................318 Zastosowanie filtra do nawigacji po danych ...................................................K.................319 Wyszukiwanie danych ...................................................K...................................................K......319 Zastosowanie metod FindKey oraz FindNearest ...................................................K...........320 Zastosowanie metod GotoKey oraz GotoNearest...................................................K..........322 Zastosowanie metod Locate oraz Lookup ...................................................K.....................322 Walidacja na poziomie rekordu ...................................................K...........................................328 Wykorzystanie zdarzenia BeforePost ...................................................K............................328 Rozdział 11. Zaawansowane techniki bazodanowe ...................................................h 331 Sztuka aktualizacji danych...................................................K...................................................331 Omówienie edycji w zestawach danych typu in-memory ................................................332 Filtrowanie oparte na statusie rekordu...................................................K...........................338 Określanie statusu rekordu ...................................................K............................................341 Usuwanie zmian z rejestru zmian ...................................................K..................................341 Odświeżanie rekordów ...................................................K..................................................345 Dostosowywanie operacji aktualizacji...................................................K.................................348 Kontrola operacji aktualizacji przy użyciu właściwości komponentu DataSetProvider ..348 Programowa obsługa operacji aktualizacji ...................................................K....................353 Obsługa błędów operacji aktualizacji ...................................................K............................358 Dodatkowe techniki ...................................................K...................................................K....... ...361 Zastosowanie komponentu SQLMonitor...................................................K.......................361 Tworzenie kopii kursora ...................................................K................................................362 Aktualizowanie tylko jednego rekordu...................................................K..........................363 Rozdział 12. Tworzenie sterowników dbExpress ...................................................h.... 367 Biblioteki producentów serwerów bazodanowych ...................................................K..............368 Uruchomienie środowiska ...................................................K.............................................369 Połączenie z serwerem bazodanowym ...................................................K..........................369 Konfiguracja uchwytu polecenia ...................................................K...................................369 Przygotowanie polecenia SQL ...................................................K......................................370 Przekazywanie parametrów startowych ...................................................K........................370 Spis treści 9 Wykonywanie polecenia SQL ...................................................K.......................................371 Wiązanie bufora rekordu ...................................................K...............................................371 Ładowanie rekordów ...................................................K...................................................K..372 Zwalnianie uchwytów oraz rozłączanie...................................................K.........................373 Implementacja podstawowych klas dbExpress...................................................K....................373 Klasa SQLDriver ...................................................K...................................................K........374 Klasa SQLConnection ...................................................K...................................................K376 Klasa SQLCommand ...................................................K...................................................K..382 Klasa SQLCursor...................................................K...................................................K........398 Klasa SQLMetaData ...................................................K...................................................K...403 Pliki źródłowe interfejsu dbExpress ...................................................K....................................403 Część III Zaawansowane możliwości Kyliksa 405 Rozdział 13. Aplikacje wielowątkowe ...................................................h................... 407 Zalety wielowątkowości ...................................................K...................................................K...409 Tworzenie aplikacji wielowątkowych ...................................................K.................................411 Używanie klasy TThread ...................................................K...............................................411 Synchronizacja wątków ...................................................K...................................................K....425 Używanie metody Synchronize ...................................................K.....................................425 Praca z sekcjami krytycznymi ...................................................K.......................................426 Czekanie na wątek ...................................................K...................................................K......429 Używanie klasy TEvent ...................................................K.................................................433 Blokowanie obiektów ...................................................K...................................................K.434 Inne techniki programowania wielowątkowego ...................................................K..................435 Zmienne lokalne wątku...................................................K..................................................435 Testowanie wątków ...................................................K...................................................K....436 Wielowątkowy dostęp do baz danych ...................................................K...........................437 Rozdział 14. Biblioteki współdzielone...................................................h.................... 439 Omówienie bibliotek współdzielonych...................................................K................................440 Budowanie przykładowej biblioteki współdzielonej ...................................................K...........441 Pisanie funkcji eksportowanych ...................................................K....................................443 Kontrola nazwy biblioteki współdzielonej ...................................................K....................444 Ładowanie procedur z bibliotek współdzielonych...................................................K...............449 Umiejscawianie bibliotek współdzielonych ...................................................K..................451 Tworzenie modułów importu dla bibliotek współdzielonych.................................................453 Dynamiczne ładowanie bibliotek współdzielonych...................................................K.............454 Deklarowanie zmiennych ...................................................K..............................................456 Dynamiczne ładowanie bibliotek współdzielonych ...................................................K......457 Uzyskiwanie adresu funkcji lub procedury ...................................................K...................457 Zwalnianie biblioteki współdzielonej...................................................K............................458 Testowanie bibliotek współdzielonych...................................................K................................460 Testowanie przy użyciu aplikacji macierzystej ...................................................K.............460 Testowanie przy użyciu grupy projektu ...................................................K........................462 Sekcje initialization i finalization biblioteki współdzielonej..................................................463 Definiowanie kodu inicjującego ...................................................K....................................463 Definiowanie procedury kończącej działanie ...................................................K................463 Rozdział 15. Tworzenie komponentów...................................................h................... 465 Przegląd obiektów...................................................K...................................................K........ .....466 Od rekordu do klasy...................................................K...................................................K....466 Hermetyzacja i widoczność składowych ...................................................K.......................470 Definiowanie interfejsu fazy wykonania ...................................................K.......................471 Dziedziczenie i polimorfizm...................................................K..........................................474 10 Kylix. Tworzenie aplikacji Wprowadzenie do tworzenia komponentów...................................................K........................477 Wskazówki dotyczące projektowania komponentów...................................................K....478 Przykładowy prosty komponent: definiowanie nowych wartości domyślnych właściwości .....479 Wykorzystanie kreatora Component ...................................................K.............................480 Pokrywanie metody ...................................................K...................................................K....482 Implementacja pokrywanego konstruktora...................................................K....................483 Testowanie nowego komponentu ...................................................K..................................485 Instalowanie komponentu ...................................................K..............................................487 Tworzenie pakietu fazy projektowania ...................................................K................................488 Konfigurowanie pakietu ...................................................K................................................490 Przykład z właściwościami ...................................................K..................................................491 Definiowanie pól obiektu ...................................................K..............................................492 Definiowanie właściwości ...................................................K.............................................493 Definiowanie metod...................................................K...................................................K....493 Pokrywanie istniejących metod ...................................................K.....................................495 Implementacja metod pokrywanych...................................................K..............................496 Tworzenie zdarzeń...................................................K...................................................K......497 Końcowe poprawki komponentu: zwracanie uwagi na szczegóły ...................................499 Zagadnienie dodatkowe: zwiększanie widoczności właściwości ...........................................506 Przykład zwiększania widoczności właściwości ...................................................K...........508 Rozdział 16. Wykorzystanie interfejsów ...................................................h................ 511 Przegląd interfejsów...................................................K...................................................K..... .....512 Argumenty za interfejsami...................................................K...................................................K514 Deklarowanie interfejsu ...................................................K...................................................K.. ..516 Implementowanie interfejsów...................................................K..............................................518 Interfejsy i rozdzielanie nazw metod ...................................................K...................................526 Implementowanie interfejsu przez delegowanie...................................................K..................527 Uwagi na temat implementowania interfejsu przez delegowanie ....................................529 Przykład interfejsu — dostarczyciel danych...................................................K........................530 Część IV Technologie internetowe 537 Rozdział 17. Przegląd technologii internetowych ...................................................h... 539 Protokoły, technologie i pojęcia...................................................K...........................................540 Dokumenty RFC ...................................................K...................................................K............ ...540 ..........540 Adresy IP ...................................................K...................................................K................ Nazwy domen ...................................................K...................................................K.............541 TCP/IP i UDP ...................................................K...................................................K.............542 Gniazda i porty ...................................................K...................................................K.......... .543 ....543 SGML ...................................................K...................................................K..................... ....544 HTML ...................................................K...................................................K..................... .......545 FTP ...................................................K...................................................K...................... .....545 HTTP ...................................................K...................................................K..................... MIME ...................................................K...................................................K..................... ....546 World Wide Web ...................................................K...................................................K........546 Serwery WWW...................................................K...................................................K...........547 Przeglądarki internetowe ...................................................K...............................................547 Apache ...................................................K...................................................K................... CGI i biblioteki DSO ...................................................K...................................................K..548 Server Side Includes (SSI)...................................................K.............................................549 Przegląd rozszerzeń serwerów WWW...................................................K.................................550 Krótkie omówienie interakcji w sieci WWW ...................................................K......................551 .....547 Części adresu URL ...................................................K...................................................K.....552 Typy wywołań ...................................................K...................................................K............554 Spis treści 11 Praca z HTML...................................................K...................................................K............. ......555 Przegląd HTML ...................................................K...................................................K..........556 Wysyłanie danych do rozszerzeń serwera WWW przy użyciu HTML ..................................557 Znacznik obrazu...................................................K...................................................K..........558 Znacznik zakotwiczenia...................................................K.................................................559 Formularze HTML...................................................K...................................................K......560 Kompilacja serwera Apache wykorzystującego biblioteki DSO............................................565 Rozdział 18. Tworzenie rozszerzeń serwera Apache przy użyciu technologii WebBroker ...................................................h.... 569 Tworzenie prostego rozszerzenia CGI...................................................K.................................570 Definiowanie akcji...................................................K...................................................K......571 Instalacja i użytkowanie rozszerzenia CGI...................................................K..........................575 Dodawanie zmiennej środowiskowej LD_LIBRARY_PATH.........................................576 Zapisywanie aplikacji CGI do katalogu ScriptAlias ...................................................K.....578 Uruchamianie aplikacji CGI za pośrednictwem przeglądarki ..........................................579 Tworzenie i konfiguracja prostego rozszerzenia DSO ...................................................K........581 Tworzenie projektu DSO ...................................................K...............................................581 Producenci ...................................................K...................................................K............... ...583 Instalacja i użytkowanie biblioteki DSO ...................................................K.............................587 Zapisywanie biblioteki DSO do katalogu serwera Apache ..............................................587 Dodawanie DSO do pliku httpd.conf...................................................K.............................588 Zatrzymywanie i uruchamianie serwera Apache...................................................K...........589 Uruchamianie biblioteki DSO za pośrednictwem przeglądarki .......................................589 Rozdział 19. Zaawansowane zagadnienia dotyczące Web Broker .............................. 593 Pozyskiwanie danych z formularzy ...................................................K.....................................594 Tworzenie internetowej aplikacji bazodanowej...................................................K...................598 Rozszerzenia serwera WWW i współbieżność...................................................K..............598 Obiekty dostarczające dane ...................................................K...........................................600 Formatowanie komórek komponentów TableProducer...................................................K.605 Cookies i obiekt WebRequest ...................................................K..............................................606 Pobieranie i ustawianie cookies...................................................K.....................................607 Wykorzystanie cookies i przekierowania ...................................................K......................609 Zawartość obiektu WebRequest...................................................K...........................................612 Usuwanie błędów z rozszerzeń serwera WWW ...................................................K..................615 Konwersja projektu CGI do projektu DSO ...................................................K...................615 Usuwanie błędów z projektu DSO ...................................................K................................616 Rozdział 20. Przegląd Internet Direct ...................................................h.................... 621 Internet Direct ...................................................K...................................................K.......... .........621 Komponenty Internet Direct ...................................................K................................................624 Komponenty klientów Indy ...................................................K...........................................625 Komponenty serwerów Indy...................................................K..........................................628 Pozostałe komponenty Indy...................................................K...........................................631 Pobieranie uaktualnionych komponentów Internet Direct ...............................................633 Wykorzystanie komponentów Internet Direct ...................................................K.....................634 Działanie klientów Internet Direct...................................................K.................................634 Wykorzystanie TIdAntiFreeze...................................................K.......................................636 Działanie serwerów Internet Direct ...................................................K...............................636 Wykorzystanie menedżera wątków ...................................................K...............................638 Licencja Internet Direct ...................................................K...................................................K. ...638 Zmodyfikowana licencja BSD dla Indy ...................................................K........................639 Licencja Indy MPL (Mozilla Public License) ...................................................K...............639 Spełnianie wymagań licencji Indy w aplikacjach Kyliksa ...............................................640 ....640 Pomoc techniczna ...................................................K...................................................K......... 12 Kylix. Tworzenie aplikacji Rozdział 21. Wykorzystanie Internet Direct ...................................................h........... 643 Co było pierwsze: klient czy serwer? ...................................................K..................................643 Wykorzystanie Telnetu do testowania serwera tekstowego .............................................644 Przykład prostego serwera ...................................................K...................................................K645 TIdTCPServer i wątki...................................................K...................................................K.648 Wywołania blokujące i współbieżność...................................................K..........................649 OnExecute i wyjątki ...................................................K...................................................K...650 Przykład serwera bazy danych...................................................K.............................................651 Tworzenie serwera bazy danych...................................................K....................................651 Tworzenie klienta bazy danych ...................................................K.....................................654 Obsługa wyjątków w aplikacjach klienckich...................................................K.......................656 Rozpoznawanie zamknięcia połączenia przez klienta ...................................................K...657 Testowanie serwera za pomocą wielowątkowego klienta ................................................657 Wysyłanie poczty elektronicznej za pomocą TIdSMTP...................................................K......661 Tworzenie wiadomości ...................................................K..................................................662 Tworzenie klienta SMTP ...................................................K...............................................663 Tworzenie klienta w wątku...................................................K............................................663 Tworzenie egzemplarza wątku klienta ...................................................K..........................665 Uaktualnianie interfejsu użytkownika przez wątek ...................................................K.......666 Serwer i klient kodów pocztowych...................................................K......................................668 Definiowanie protokołu kodów pocztowych...................................................K.................669 Serwer kodów pocztowych...................................................K............................................670 Klient kodów pocztowych ...................................................K.............................................672 Tworzenie serwera konsoli ...................................................K..................................................675 Tworzenie przykładowego serwera konsoli ...................................................K..................675 Testowanie tekstowego serwera konsoli ...................................................K.......................677 Skorowidz ...................................................h........................................ 679 Rozdział 8. Klasa TField W tym rozdziale:  omówienie pól,  pola stałe,  praca z polami w czasie wykonania,  tworzenie nowych pól stałych. Zestaw danych służy do działania z jednym lub kilkoma rekordami wynikowego zestawu, ale nie pozwala na kontrolowanie zachowań w przypadku pojedynczych pól tych rekor- dów. Do pracy z polami stosuje się obiekty pól, które są instancjami klas pochodnych klasy 6(KGNF. Każda z tych klas nich obsługuje określony typ pola. Zależnie od wyniko- wego zestawu, z którym pracujemy, będziemy wykorzystywać egzemplarze różnych klas, takich jak 65VTKPI(KGNF, 6+PVGIGT(KGNF, 6(NQCV(KGNF, 6/GOQ(KGNF, 6$NQD(KGNF, 6 CVG6KOG(KGNFKKPPG. W rozdziale tym omówimy stosowanie pól. Na początku dokonamy ogólnego przeglądu pól, włączając w to informacje na temat dostępu do pól dynamicznych w czasie wyko- nania. W dalszej części zostaną przybliżone pola stałe stosowane w fazie projektowania do konfiguracji obiektów pól. Zostaną omówione następujące zagadnienia: tworzenie pól obliczeniowych, zastosowanie pól wyszukiwania, definiowanie pól agregacji, użycie walidacji oraz określenie ograniczeń na poziomie polia. W rozdziale znajduje się kilka przykładów, które prezentują różne techniki związane z polami. W celu uproszczenia tych przykładów zostanie użyty szablon GetSales, który został utworzony w poprzednim rozdziale. Jeżeli nie masz tego szablonu to do popraw- nego wykonania przykładów zawartych w tym rozdziale wymagane będzie wykonanie kroków opisanych w akapicie rozdziału 7. — „Przygotowanie szablonu komponentów danych”. 238 Część II ♦ Aplikacje bazodanowe Przegląd pól Pola są jedną z najważniejszych kategorii obiektów w aplikacjach bazodanowych. Umoż- liwiają odczytywanie pojedynczych wartości pól zestawu rekordów udostępnianych przez zestawy danych. Jeśli zestaw danych pozwala na modyfikację danych, które zawiera, wtedy obiekty pól służą do przypisywania nowych wartości poszczególnym polom (zestaw danych posiada metody pozwalające na przypisywanie wartości wielu polom w pojedynczym zapytaniu). Obiekty pól pozwalają także kontrolować sposób, w jaki poszczególne pola są wyświetlane w kontrolkach bazodanowych. Na przykład za pomocą pól można zdefiniować maski edycji, które określają format i zakres danych wprowadzanych do powiązanej kontrolki bazodanowej. Można również utworzyć ograniczenia i procedury obsługi zdarzeń, które dokonują walidacji danych wprowadzanych przez użytkiownika. Domyślnie po uruchomieniu zestaw danych tworzy jeden obiekt pola dla każdego po- wiązanego z nim pola. Pola tworzone w ten sposób są określane mianem pól dyna- micznych. Po uruchomieniu obiekty te udostępniane są przez właściwość Fields ze- stawu danych lub przy użyciu metody (KGNF$[0COG. Ewentualnie można utworzyć obiekt pola w fazie projektowania. Tak utworzony obiekt pola określany jest mianem pola stałego. Pozwala w dość pro- sty sposób w fazie projektowania konfigurować pole. Podobnie jak w przypadku pola dynamicznego, pole stałe jest w fazie wykonania dostępne przez właściwość Fields lub przy użyciu metody (KGNF$[0COG. Dostęp do pól Jak wspomniano wcześniej, do dostępu do obiektów pól służy właściwość Fields lub me- toda (KGNF$[0COG zestawu danych. Typem danych właściwości Fields jest klasa 6(KGNFU, która może przechowywać odwołanie do kilku pól. Poniżej znajduje się deklaracja takiej klasy. 6(KGNFUENCUU 61DLGEV RTKXCVG (.KUV6.KUV ( CVC5GV6 CVC5GV (5RCTUG(KGNFU+PVGIGT (1P JCPIG60QVKH[ XGPV (8CNKF(KGNF-KPFU6(KGNF-KPFU RTQVGEVGF RTQEGFWTG JCPIGF RTQEGFWTG JGEM(KGNF-KPF (KGNF-KPF6(KGNF-KPF(KGNFE6(KGNF  HWPEVKQP)GV QWPV+PVGIGT HWPEVKQP)GV(KGNF +PFGZ+PVGIGT 6(KGNF RTQEGFWTG5GV(KGNF +PFGZ+PVGIGT8CNWG6(KGNF  RTQEGFWTG5GV(KGNF+PFGZ (KGNF6(KGNF8CNWG+PVGIGTE  RTQRGTV[5RCTUG(KGNFU+PVGIGTTGCF(5RCTUG(KGNFUYTEKVG(5RCTUG(KGNFU RTQRGTV[1P JCPIG60QVKH[ XGPVTGCF(1P JCPIGYTKVG(1EP JCPIG RTQRGTV[8CNKF(KGNF-KPFU6(KGNF-KPFUTGCF(8CNKF(KGNFE-KPFU YTKVG(8CNKF(KGNF-KPFU Rozdział 8. ♦ Klasa TField 239 RWDNKE EQPUVTWEVQT TGCVG # CVC5GV6 CVC5GV  FGUVTWEVQT GUVTQ[QXGTTKFG RTQEGFWTG#FF (KGNF6(KGNF  RTQEGFWTG JGEM(KGNF0COG EQPUV(KGNF0COGUVTKPI  RTQEGFWTG JGEM(KGNF0COGU EQPUV(KGNF0COGUUVTKPI  RTQEGFWTG NGCT HWPEVKQP(KPF(KGNF EQPUV(KGNF0COGUVTKPI 6(KGNF HWPEVKQP(KGNF$[0COG EQPUV(KGNF0COGUVTKPI 6(KGNF HWPEVKQP(KGNF$[0WODGT (KGNF0Q+PVGIGT 6(KGNF RTQEGFWTG)GV(KGNF0COGU .KUV65VTKPIU  HWPEVKQP+PFGZ1H (KGNF6(KGNF +PVGIGT RTQEGFWTG4GOQXG (KGNF6(KGNF  RTQRGTV[ QWPV+PVGIGTTGCF)GV QWPV RTQRGTV[ CVC5GV6 CVC5GVTGCF( CVC5GV RTQRGTV[(KGNFU=+PFGZ+PVGIGT?6(KGNFTGCF)GV(KGNF YTKVG5GV(KGNFFGHCWNV GPF Należy zauważyć, że właściwość Fields w deklaracji klasy 6(KGNFU jest zarówno właści- wością domyślną, jak i indeksowaną (klasa może mieć tylko jedną właściwość domyślną). Przy odwołaniu do właściwości Fields egzemplarza klasy 6(KGNFU należy podać liczbę całkowitą, która identyfikuje jeden z obiektów pól zestawu danych. Jeżeli właściwość indeksowana jest domyślna to przy odwołaniu do obiektu danej klasy następuje odwołanie do tej właściwości. Oznacza to, że właściwość Fields zestawu danych jest stosowana do bezpośredniego dostępu do właściwości Fields instancji klasy 6(KGNFU. Może się to wydać trochę niezrozumiałe, ale oznacza tylko, że poniższe dwa odniesienia funk- cjonalnie są identyczne. NKGPV CVC5GV(KGNFU(KGNFU=? NKGPV CVC5GV(KGNFU=? Ponieważ drugie odwołanie jest prostsze, preferuje jie większość programistów. Liczba całkowita stosowana jako odwołanie do określonego pola we właściwości Fields odnosi się do położenia pola w zestawie danych. W przypadku stosowania domyślnych obiektów pól tworzonych przez zestaw danych, położenie to jest jednakowe z położeniem pola w powiązanym zestawie wynikowym. Jeśli stosuje się obiekty pól stałych, wtedy jest to odwołanie do położenia pola w edytorze pól. Metoda (KGNF$[0COG zestawu danych pobiera łańcuch i zwraca odwołanie do pola zestawu danych, którego nazwa jest zgodna z łańcuchem (w nazwie nie jest rozróżniana wielkość liter). Jeśli żadna nazwa pola nie zgadza się z łańcucihem, wtedy wywoływany jest wyjątek. Przyjmując, że stosowane są domyślne obiekty pól i pierwsze pole zestawu danych ClientDataSet1 ma nazwę CUST_NO, poniższe dwa odwołania odnoszą się do dokładnie tego samego obiektu pola. NKGPV CVC5GV(KGNFU=? NKGPV CVC5GV(KGNF$[0COG 756A01  240 Część II ♦ Aplikacje bazodanowe Odwołanie do pola stosowane jest w celu uzyskania dostępu do właściwości i wywołania metod określonej klasy pola. Ponieważ wszystkie obiekty pól są pochodnymi klasy 6(KGNF, dziedziczą one jej interfejs. Poniżej zawarto częściowy wydruk klasy 6(KGNF, przedstawiający tylko jej sekcje RWDNKE oraz RWDNKUJGF (odpowiednio elementy fazy wykonania oraz projektowania). 6(KGNFENCUU 6 QORQPGPV FGMNCTCELGRTKXCVGQTCRTQVGEVGFPKGQUVCđ[RQMCCPG RWDNKE EQPUVTWEVQT TGCVG #1YPGT6 QORQPGPV QXGTTKFG FGUVTWEVQT GUVTQ[QXGTTKFG RTQEGFWTG#UUKIP 5QWTEG62GTUKUVGPV QXGTTKFG RTQEGFWTG#UUKIP8CNWG EQPUV8CNWG68CT4GE  RTQEGFWTG NGCTXKTVWCN RTQEGFWTG(QEWU QPVTQN HWPEVKQP)GV CVC $WHHGT2QKPVGT0CVKXG(QTOCV$QQNGCP6TWEG $QQNGCP HWPEVKQP)GV2CTGPV QORQPGPV6 QORQPGPVQXGTTKFG HWPEVKQP*CU2CTGPV$QQNGCPQXGTTKFG ENCUUHWPEVKQP+U$KQD$QQNGCPXKTVWCN HWPEVKQP+U8CNKF JCT +PRWV JCT JCT $QQNGCPXKTVWCNE RTQEGFWTG4GHTGUJ.QQMWR.KUV RTQEGFWTG5GV CVC $WHHGT2QKPVGT0CVKXG(QTOCV$QQNGCPE6TWG  RTQEGFWTG5GV(KGNF6[RG 8CNWG6(KGNF6[RG XKTVWCN RTQEGFWTG8CNKFCVG $WHHGT2QKPVGT  RTQRGTV[#U$ 6$EFTGCF)GV#U$ YTKVG5GV#U$  RTQRGTV[#U$QQNGCP$QQNGCPTGCF)GV#U$QQNGCPYTKVG5GV#U$QQNGCPE RTQRGTV[#U WTTGPE[ WTTGPE[TGCF)GV#U WTTGPE[YTKVG5GVE#U WTTGPE[ RTQRGTV[#U CVG6KOG6 CVG6KOGTGCF)GV#U CVG6KOGYTKVGE5GV#U CVG6KOG RTQRGTV[#U53.6KOG5VCOR653.6KOG5VCORTGCF)GV#U53.6KOG5VCEOR YTKVG5GV#U53.6KOG5VCOR RTQRGTV[#U(NQCV QWDNGTGCF)GV#U(NQCVYTKVG5GV#U(NQCVE RTQRGTV[#U+PVGIGT.QPIKPVTGCF)GV#U+PVGIGTYTKVG5GV#U+PVGIGT RTQRGTV[#U5VTKPIUVTKPITGCF)GV#U5VTKPSYTKVG5GV#U5EVTKPI RTQRGTV[#U8CTKCPV8CTKCPVTGCF)GV#U8CTKCPVYTKVG5GV#UE8CTKCPV RTQRGTV[#VVTKDWVG5GVUVTKPITGCF(#VVTKDWVG5GVYTKVGE(#VVTKDWVG5GV RTQRGTV[ CNEWNCVGF$QQNGCPTGCF)GV CNEWNCVGF YTKVG5GV CNEWNCVGFFGHCWNV(CNUG RTQRGTV[ CP/QFKH[$QQNGCPTGCF)GV CP/QFKH[ RTQRGTV[ WT8CNWG8CTKCPVTGCF)GV WT8CNWG RTQRGTV[ CVC5GV6 CVC5GVTGCF( CVC5GVYTKVG5GV CEVC5GVUVQTGF(CNUG RTQRGTV[ CVC5KG+PVGIGTTGCF)GV CVC5KG RTQRGTV[ CVC6[RG6(KGNF6[RGTGCF( CVC6[RG RTQRGTV[ KURNC[0COGUVTKPITGCF)GV KURNC[0COG RTQRGTV[ KURNC[6GZVUVTKPITGCF)GV KURNC[6GZV RTQRGTV[ FKV/CUMUVTKPITGCF( FKV/CUMYTKVG5GV FKV/CUME RTQRGTV[ FKV/CUM2VTUVTKPITGCF( FKV/CUM RTQRGTV[(KGNF0Q+PVGIGTTGCF)GV(KGNF0Q RTQRGTV[(WNN0COGUVTKPITGCF)GV(WNN0COG RTQRGTV[+U+PFGZ(KGNF$QQNGCPTGCF)GV+U+PFGZ(KGNF RTQRGTV[+U0WNN$QQNGCPTGCF)GV+U0WNN RTQRGTV[.QQMWR$QQNGCPTGCF)GV.QQMWRYTKVG5GV.QQMWR RTQRGTV[.QQMWR.KUV6.QQMWR.KUVTGCF)GV.QQMWR.KUV RTQRGTV[0GY8CNWG8CTKCPVTGCF)GV0GY8CNWGYTKVG5GV0GY8CNEWG RTQRGTV[1HHUGV+PVGIGTTGCF(1HHUGV RTQRGTV[1NF8CNWG8CTKCPVTGCF)GV1NF8CNWG RTQRGTV[2CTGPV(KGNF61DLGEV(KGNFTGCF(2CTGPV(KGNF YTKVG5GV2CTGPV(KGNF Rozdział 8. ♦ Klasa TField 241 RTQRGTV[5KG+PVGIGTTGCF)GV5KGYTKVG5GV5KG RTQRGTV[6GZVUVTKPITGCF)GV FKV6GZVYTKVG5GV FKV6GZEV RTQRGTV[8CNKF JCTU6(KGNF JCTUTGCF(8CNKF JCTUYTKEVG(8CNKF JCTU RTQRGTV[8CNWG8CTKCPVTGCF)GV#U8CTKCPVYTKVG5GV#U8CTKCPV RWDNKUJGF RTQRGTV[#NKIPOGPV6#NKIPOGPVTGCF(#NKIPOGPV YTKVG5GV#NKIPOGPVFGHCWNVVC.GHV,WUVKH[ RTQRGTV[#WVQ)GPGTCVG8CNWG6#WVQ4GHTGUJ(NCITGCF(#WVQ)GPGTCVEG8CNWG YTKVG5GV#WVQ)GPGTCVG8CNWGFGHCWNVCT0QPG RTQRGTV[ WUVQO QPUVTCKPVUVTKPITGCF( WUVQO QPUVTCKPV YTKVG( WUVQO QPUVTCKPV RTQRGTV[ QPUVTCKPV TTQT/GUUCIGUVTKPITGCF( QPUVTCKPEV TTQT/GUUCIG YTKVG( QPUVTCKPV TTQT/GUUCIG RTQRGTV[ GHCWNV ZRTGUUKQPUVTKPITGCF( GHCWNV ZRTGUUKQPE YTKVG( GHCWNV ZRTGUUKQP RTQRGTV[ KURNC[.CDGNUVTKPITGCF)GV KURNC[.CDGNYTKEVG5GV KURNC[.CDGN UVQTGF+U KURNC[.CDGN5VQTGF RTQRGTV[ KURNC[9KFVJ+PVGIGTTGCF)GV KURNC[9KFVJ YTKVG5GV KURNC[9KFVJ UVQTGF+U KURNC[9KFVJ5VQTGF RTQRGTV[(KGNF-KPF6(KGNF-KPFTGCF((KGNF-KPF YTKVG5GV(KGNF-KPFFGHCWNVHM CVC RTQRGTV[(KGNF0COGUVTKPITGCF((KGNF0COGYTKVG5GV(EKGNF0COG RTQRGTV[*CU QPUVTCKPVU$QQNGCPTGCF)GV*CU QPUVTCKPVUFEGHCWNV(CNUG RTQRGTV[+PFGZ+PVGIGTTGCF)GV+PFGZYTKVG5GV+PFGZUEVQTGF(CNUG RTQRGTV[+ORQTVGF QPUVTCKPVUVTKPITGCF(+ORQTVGF QPUVTECKPV YTKVG(+ORQTVGF QPUVTCKPV RTQRGTV[.QQMWR CVC5GV6 CVC5GVTGCF(.QQMWR CVC5GV YTKVG5GV.QQMWR CVC5GV RTQRGTV[.QQMWR-G[(KGNFUUVTKPITGCF(.QQMWR-G[(KGNFU YTKVG5GV.QQMWR-G[(KGNFU RTQRGTV[.QQMWR4GUWNV(KGNFUVTKPITGCF(.QQMWR4GUWNV(KGNF YTKVG5GV.QQMWR4GUWNV(KGNF RTQRGTV[-G[(KGNFUUVTKPITGCF(-G[(KGNFUYTKVG5GV-G[(EKGNFU RTQRGTV[.QQMWR CEJG$QQNGCPTGCF(.QQMWR CEJG YTKVG5GV.QQMWR CEJGFGHCWNV(CNUG RTQRGTV[QTKIKPUVTKPITGCF(1TKIKPYTKVG(1TKIKP RTQRGTV[2TQXKFGT(NCIU62TQXKFGT(NCIUTGCF(2TQXKFGT(NCEIU YTKVG(2TQXKFGT(NCIUFGHCWNV=RH+P9JGTGRH+P7RFCVG? RTQRGTV[4GCF1PN[$QQNGCPTGCF(4GCF1PN[ YTKVG5GV4GCF1PN[FGHCWNV(CNUG RTQRGTV[4GSWKTGF$QQNGCPTGCF(4GSWKTGFYTKVG(4GSWKTGFFGHCWNV(CNUG RTQRGTV[8KUKDNG$QQNGCPTGCF(8KUKDNGYTKVG5GV8KUKDNGEFGHCWNV6TWG RTQRGTV[1P JCPIG6(KGNF0QVKH[ XGPVTGCF(1P JCPIGYTKEVG(1P JCPIG RTQRGTV[1P)GV6GZV6(KGNF)GV6GZV XGPVTGCF(1P)GV6GZVEYTKVG(1P)GV6GZV RTQRGTV[1P5GV6GZV6(KGNF5GV6GZV XGPVTGCF(1P5GV6GZEVYTKVG(1P5GV6GZV RTQRGTV[1P8CNKFCVG6(KGNF0QVKH[ XGPVTGCF(1P8CNKFCVG YTKVG(1P8CNKFCVG GPF Jak można zauważyć, klasa 6(KGNF zawiera mnóstwo informacji na temat każdego pola. Ponadto poszczególne pochodne tej klasy posiadają dodatkowe metody i właściwości, które mają specyficzne dla nich zastosowanie. Na przykład klasa 6$NQD(KGNF zawiera metody obsługujące ładowanie danych z pliku lub ze istrumienia. 242 Część II ♦ Aplikacje bazodanowe Poniższy przykład pokazuje, jak uzyskać dostęp do obiiektów pól zestawu danych. 1. Utwórz nowy projekt. 2. Do głównego formularza dodaj komponent Memo z zakładki Standard palety komponentów. Należy również dodać komponent szablonui GetSales z zakładki Templates, który został utworzony w rozdziale 7. 3. Dodaj moduł 6[R+PHQ do sekcji WUGU głównego formularza. Moduł ten pozwala na dostęp do informacji na temat działającej aplikacjii (runtime-type information — RTTI). RTTI jest informacją typu tekstowego dotyczącą deklaracjii typów i jest wykorzystany w procedurze obsługi zdarzenia dodanej w następnym kroku przy konwersji typu wyliczeniowego na łańcuchowy. 4. Dodaj do głównego formularza procedurę obsługi zdarzeinia OnCreate. Wprowadź do niej poniższy kod: RTQEGFWTG6(QTO(QTO TGCVG 5GPFGT61DLGEV  XCT K+PVGIGT DGIKP /GOQ.KPGU NGCT HQTKVQ53. NKGPV CVC5GV(KGNFU QWPVFQ DGIKP /GOQ.KPGU#FF (KGNF  53. NKGPV CVC5GV(KGNFU=K?(KGNF0COG (KGNF0WODGT  +PV6Q5VT 53. NKGPV CVC5GV(KGNFU=K?(KGNF0Q   (KGNF6[RG  )GV PWO0COG 6[RG+PHQ 6(KGNF6[RG  1TF 53. NKGPV CVC5GV(KGNFU=K? CVC6[RG    KURNC[6GZV  53. NKGPV CVC5GV(KGNFU=K? KURNEC[6GZV  GPF GPF 5. Uruchom projekt. Wyświetlony formularz powinien wygląidać podobnie jak na rysunku 8.1. Rysunek 8.1. Zastosowanie właściwości Fields zestawu danych do dostępu do poszczególnych obiektów pól Kod źródłowy tego projektu znajduje się w katalogu yfields. Rozdział 8. ♦ Klasa TField 243 Pola stałe Właściwość Fields zestawu danych to właściwość RWDNKEPC, co oznacza, że jest ele- mentem interfejsu czasu wykonania i dostępna jest dopiero po uruchomieniu. Jeśli musimy konfigurować pola w czasie działania aplikacji, należy utworzyć pola stałe. Pola takie są tworzone w edytorze pól. Można wyróżnić dwa typy pól stałych: pola oparte na polach zestawu danych oraz pola, które na nich nie bazują. Pola stałe oparte na polach zestawu danych dostarczają odpo- wiedników pól dynamicznych w fazie projektowania. Pola niebazujące na polach zestawu danych nie posiadają odpowiednika w postaci pól dyniamicznych. Do pól tych zaliczają się: pola obliczeniowe, wyszukiwania oraz agregacji. Niestety dokumentacja Kyliksa nie precyzuje, jak nazywać takie specjalne pola stałe. Pola te są określane mianem nowych pól stałych. Chociaż termin nie jest zbyt jasny, jest zgodny z pozycją menu służącą do tworzenia takich pól. Aby utworzyć jedno takie specjalne pole stałe, należy kliknąć prawym klawiszem myszy edytor pól i wybrać New Field, a następnie zdefiniować pole w oknie dialogowym New Field. Ostatecznie w tej książce specjalne pola stałe będą określane terminem nowych pól stałych, natomiast pozostałe typy pól stałych — polami stałymi. Pola stałe nie mogą występować w zestawie danych razem z polami dynamicznymi. Nawet jeśli tworzy się tylko jedno pole stałe dowolnego typu, zestaw danych nie wygeneruje pól dynamicznych i jedynymi polami, do których będzie istniał dostęp, będą pola stałe. Jeżeli mamy komponent SQLClientDataSet używający zapytania UGNGEV do pobrania dziesięciu pól tabeli i utworzymy tylko jedno pole stałe to tylko pole powiązane z polem stałym może być przeglądane, edytowane lub na inny siposób udostępnione. W rezultacie ma to znaczący wpływ na stosowanie zestawów danych. Ściśle mówiąc, w przypadku tworzenia pól stałych zmiany w strukturze powiązanej tabeli narzucą ko- nieczność dokonania również zmian w tych polach. W niektórych sytuacjach konieczne będzie usunięcie wszystkich pól stałych i ponowne ich dodanie po dokonaniu zmian w strukturze tabeli lub pól zwracanych przez zapytanie. Jeśli zdefiniowano właściwości i procedury obsługi zdarzeń dla usuniętych pól stałych, należy ponownie skonfigurować nowo dodane pola. Nie trzeba dodawać, że należy dążyć do tego, aby przy tworzeniu pól stałych, na ile to jest możliwe, uniknąć dokonywania zmian struktury powiązanych tabel. Jednym ze sposobów realizacji tego zalecenia jest tworzenie aplikacji przy użyciu pól dynamicznych i następnie dodanie pól stałych, ale tylko po upewnieniu się, że struktury danych są prawidłowo zaprojektowane. Niestety nieprzewidziane zmiany w strukturze danych są czasami konieczne i wtedy wiąże się to również z dodatkowym nakładem pracy przy polach stałych. Więcej na ten temat w dailszej części rozdziału. 244 Część II ♦ Aplikacje bazodanowe Tworzenie pól stałych Jak już wspominaliśmy wcześniej, pola stałe tworzone są w edytorze pól. Aby go otwo- rzyć, należy kliknąć dwukrotnie zestaw danych lub kliiknąć prawym klawiszem myszy zestaw i wybrać edytor pól (patrz rysunek 8.2). Rysunek 8.2. Edytor pól Zwykle nie dodaje się pól stałych do jednokierunkowego zestawu danych,
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Kylix. Tworzenie aplikacji
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ą: