W kodzie modułu Unit1 zdefiniuj dwie metody - składowe komponentu formatki TForm1:



Podobne dokumenty
Ćwiczenie 10 Generowanie plików HTML. Przygotuj program wyświetlający formatkę jak na rysunku (w fazie projektowania):

Skopiuj plik do katalogu macierzystego serwera Apache (C:/xampp/htdocs). Uruchom przeglądarkę i wpisz w polu adresowym następujący ciąg:

Laboratorium 15: Bazy Danych Tworzenie bazy danych i programowanie elementów nawigacyjnych aplikacji stworzonej przy pomocy technologii dbexpress

Kierunek: ETI Przedmiot: Programowanie w środowisku RAD - Delphi Rok III Semestr 5. Ćwiczenie 5 Aplikacja wielo-okienkowa

Kierunek: ETI Przedmiot: Programowanie w środowisku RAD - Delphi Rok III Semestr 5

Przedmiot: Programowanie usług internetowych - Delphi Przygotował: K. Strzałkowski Rok V. Semestr IX. Wydział ZiMK

Wprowadzenie do systemu Delphi

Opracował: Tomasz Neumann Technologia dbexpress w środowisku DELPHI

Ćwiczenie 4 Aktualizacja tabel. 1. Skopiuj aplikację przygotowaną na poprzednich zajęciach w katalogu SKOKI1 do nowego katalogu SKOKI2.

Nazwa implementacji: Kółko i krzyżyk w Lazarusie. Autor: Piotr Fiorek Andrzej Stefaniuk

Program powinien otworzyć się z pierwszym formularzem. Jeśli nie, otwórz pierwszy formularz, wybierając go z listy - Shift+F12.

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Tak przygotowane pliki należy umieścić w głównym folderze naszego programu. Klub IKS

Aplikacje internetowe - laboratorium

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ

Ćwiczenie 7 Komponent IBQuery - uruchamianie zapytań aktualizujących. 1. Przygotować w nowym katalogu aplikację do aktualizacji bazy SKOKI.GDB.

Laboratorium 7 Blog: dodawanie i edycja wpisów

Przesyłanie Pakietów Danych i TCP/IP

Delphi 7 + Indy 10 Przykłady prostych aplikacji sieciowych

Aplikacje WWW - laboratorium

Delphi podstawy programowania. Środowisko Delphi

Ćwiczenie 1 Proste aplikacje - podstawowe komponenty.

KROK 17 i 18. Cel: Tworzymy oddzielne okno - O autorze. 1. Otwórz swój program. 2. Skompiluj i sprawdź, czy działa prawidłowo.

Ćwiczenie 6 Proste aplikacje - podstawowe komponenty.

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

16) Wprowadzenie do raportowania Rave

Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków do plików, bitmapy pozaekranowe.

WHEN_NEW_FORM_INSTANCE

Wydział: ZiMK Przedmiot: Programowanie - Delphi Semestr 5

Bazy danych raporty. 1. Przekopiuj na dysk F:\ bazę M5BIB.mdb z dysku wskazanego przez prowadzącego.

Tworzenie aplikacji Windows Rozszerzenia serwerów WWW

CMS- kontakty (mapa)

Dialogi, Memo i Image. Modified właściwość typu Boolean. Jest automatycznie ustawiana na True kaŝdorazowo po dokonaniu zmian treści wpisanej w Memo.

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

Niniejszy ebook jest własnością prywatną.

Procedury i funkcje - powtórzenie i uzupełnienia. Przykład funkcji potęgowanie przy wykładniku naturalnym

Aplikacje WWW - laboratorium

Zaawansowane aplikacje internetowe - laboratorium

GENERATOR OFERTY PDF DOKUMENTACJA UŻYTKOWA 1/20

BAZY DANYCH Panel sterujący

Zdarzenia Zdarzenia onload i onunload

Access - Aplikacja. Tworzenie bazy danych w postaci aplikacji

Tworzenie szablonów użytkownika

Podstawy technologii WWW

Programowanie wielowarstwowe i komponentowe

Programowanie Obiektowe GUI

Widżety KIWIPortal. tworzenie umieszczanie na stronach internetowych opcje zaawansowane. Autor: Damian Rebuś Data: Wersja: 1.

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Zadanie 9. Projektowanie stron dokumentu

System imed24 Instrukcja Moduł Analizy i raporty

Danuta ROZPŁOCH-NOWAKOWSKA Strona Moduł 4. Przykład 1. Przykład 2. HTML 4.01 Transitional).

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Tworzenie własnych komponentów

Podstawy technologii WWW

Aplikacje WWW - laboratorium

Poszczególne elementy serwisu można umieścić dla porządku w odpowiednio przemyślanym drzewie katalogów, i tak: -

Przedmiot: Informatyka w inżynierii produkcji Forma: Laboratorium Temat: Zadanie 4. Instrukcja warunkowa.

Podstawy HTML. 2. Komendy ujęte są w nawiasy ostre - < > i występują najczęściej parami.

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Kadry Optivum, Płace Optivum

Materiały do laboratorium MS ACCESS BASIC

Zmiany funkcjonalne i lista obsłużonych zgłoszeń Comarch DMS , Comarch DMS i Comarch DMS

Pamiętałeś o kopiowaniu i zapisywaniu swojego programu do kolejnych folderów? Jeżeli tak, to:

Wykład 03 JavaScript. Michał Drabik

I. Program II. Opis głównych funkcji programu... 19

Serwery Statefull i Stateless

Laboratorium 1: Szablon strony w HTML5

Język programowania PASCAL

Podręcznik użytkownika. Moduł Analizy i Raporty. Dotyczy wersji:

Dokumentacja użytkownika systemu

Programowanie modułowe

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

1. INFORMACJE O DOKUMENCIE 2. WPROWADZENIE

LABORATORIUM 2 WSTĘP DO SIECI TELEINFORMATYCZNYCH TABELE I FORMULARZE

Technologie informacyjne lab. 4

Delphi Laboratorium 3

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Oracle Application Express

Instrukcja logowania i realizacji podstawowych transakcji w systemie bankowości internetowej dla klientów biznesowych BusinessPro.

KATEGORIE OBRAZKOWE REALIZACJA

Cel: Przypisujemy przyciskom określone funkcje panel górny (Panel1)

Tworzenie okna dialogowego w edytorze raportu SigmaNEST. część 1

PWI Instrukcja użytkownika

1. Wybierz File New Application. Pojawi się nowa aplikacja w Delphi.

Dodatek. Instrukcja instalacji i konfiguracji. dla Subiekt nexo. Wersja:

1. Przypisy, indeks i spisy.

Dostęp do baz danych w ASP.NET.

ĆWICZENIE Uruchomić Oracle Forms Builder. 2. Utworzyć nowy formularz (File->New->Form) 3. Nawiązać połączenie z bazą danych (file-connect).

STRONY INTERNETOWE mgr inż. Adrian Zapała

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Bazodanowe usługi sieciowe w technologii ASP.NET. dr inż. Tomasz Tatoń

ĆWICZENIA Z JĘZYKA HTML. 1. Znaczniki. 2. Struktura dokumentu HTML. 3. Tworzymy stronę WWW Podróże po stolicach Europy

3. Budowa prostych raportów opartych o bazę danych

Programowanie obiektowe

I. Dlaczego standardy kodowania mailingów są istotne?

Aplikacja Shoper Appstore Powiązane w koszyku REALIZACJA

Laboratorium 6 Tworzenie bloga w Zend Framework

2 Podstawy tworzenia stron internetowych

Opis modułu pl.id w programie Komornik SQL-VAT

Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych

Transkrypt:

Przedmiot: Programowanie usług internetowych - Delphi Przygotował: K. Strzałkowski Rok V. Semestr IX. Wydział ZiMK Ćwiczenie 1 Generowanie plików HTML 1. Przygotowanie aplikacji generującej prostą stronę. Przygotuj program wyświetlający formatkę jak na rysunku (w fazie projektowania): Przycisk pierwszy powinien powodować umieszczenie zapisu strony w komponencie Memo. Przycisk drugi powinien zapisywać tekst strony w pliku *.HTML, a następnie wyświetlać ją w przeglądarce. Realizacja zadania: Umieść na formatce komponenty: Memo, Label, Button i SaveDialog. Zdefiniuj właściwości Caption komponentów Label i Button wg rysunku. W kodzie modułu Unit1 zdefiniuj dwie metody - składowe komponentu formatki TForm1: procedure TForm1.naglowek(Str: TStrings; Tytul: String); Str.Add('<HTML> '); Str.Add( <HEAD> ); Str.Add( <TITLE> + tytul + </TITLE> ); Str.Add( </HEAD> ); Str.Add( <BODY> ); Str.Add( <H1><CENTER> + tytul + </CENTER></H1> ); Procedura powyższa powoduje zapamiętanie w parametrze Str zapisu nagłówka strony. Parametr ten jest typu obiektowego TStrings, który opisuje kolekcję wierszy tekstu. Typ ten jest wyposażony w szereg właściwości i metod obsługujących operacje na wierszach m. in.: 1

Add dopisanie wiersza Clear kasowanie całej zawartości procedure TForm1.stopka(Str: TStrings); Str.Add( <HR> ); Str.Add( Strona wygenerowana przez napisany w Delphi program: + ExtractFileName(Application.ExeName)); Str.Add( </BODY> ); Str.Add( </HTML> ); Procedura powyższa dopisuje do parametru Str zapis końca (stopki) strony. Zdefiniuj metodę obsługi zdarzenia OnClick pierwszego przycisku. Proponowany zapis metody: procedure TForm1.Button1Click(Sender: TObject); var Str: String; Memo1.Clear; Naglowek(Memo1.Lines, Strona przykładowa ); DateTimeToString(Str, yyyy-mm-dd, Now); Memo1.Lines.Add( <HR> Data generacji strony: + Str); { 1 } Stopka(Memo1.Lines); Zdefiniuj metodę obsługi zdarzenia OnClick drugiego przycisku. Proponowany zapis metody: procedure TForm1.Button2Click(Sender: TObject); if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName); ShellExecute(Handle, open, PChar(SaveDialog1.FileName), nil, nil, sw_shownormal); Metoda powoduje nawiązanie dialogu w celu ustalenia nazwy pliku w którym zapisana będzie strona, a następnie wywołanie akcji systemu operacyjnego o nazwie open powodującej wyświetlenie pliku przez domyślny program. W przypadku rozszerzenia pliku, *.HTML lub *.HTM będzie to przeglądarka internetowa. Zastosowanie procedury ShellExecute wymaga dołączenia w klauzuli uses modułu ShellAPI. Zapisz projekt w oddzielnym katalogu P1 i przetestuj jego działanie. Wygenerowaną stronę zapisuj w katalogu projektu pod nazwą STRONA1.HTML. Przed zapisem w pliku i wyświetleniem strony zmieniaj jej postać edytując odpowiednio tekst wyświetlany w komponencie Memo. 2

2. Wyświetlanie na stronie zawartości tabeli bazy danych. Skopiuj opracowany projekt do nowego katalogu P2. Dołącz na formatce dwa nowe komponenty z zakładki dbexpress i ustaw ich właściwości dla uzyskania połączenia z tabelą bazy HURT.GDB: SQLConnection: ConnectionName: Params: Connected: wybierz IBConnection (wybranie tego połączenia spowoduje że Delphi ustawi inne właściwości zgodnie ze standardem InterBase) uruchom edytor właściwości, a następnie w wyświetlonej tabeli zmień pozycję DataBase wpisując nazwę pliku bazy (wraz ze ścieżką dostępu) wybierz True i wypełń odpowiednio okienko logowania do bazy SQLDataSet: SQLConnection: CommandType: CommandText: Active: wybierz SQLConnection1 wybierz cttable wybierz Katalog wybierz True Zmodyfikuj metodę obsługi zdarzenia OnClick dla przycisku pierwszego dodając deklaracje: var i, k: integer; oraz zastępując komentarz { 1 } zapisem: Memo1.Lines.Add( <HR> Tabela + SQLDataSet1.CommandText); Str:= <TABLE BORDER><TR> ; for i:=0 to SQLDataSet1.FieldCount - 1 do Str:=Str + <TD><B> + SQLDataSet1.Fields[i].FieldName + </B></TD> ; Memo1.Lines.Add(Str + </TR> ); SQLDataSet1.First; for k := 1 to SQLDataSet1.RecordCount do Str:= <TR> ; for i := 0 to SQLDataSet1.FieldCount - 1 do Str:=Str+ <TD> + SQLDataSet1.Fields[i].DisplayText + </TD> ; Memo1.Lines.Add(Str+ </TR> ); SQLDataSet1.Next; Memo1.Lines.Add( </TABLE> ); Przetestuj działanie programu. Program powinien wyświetlać w przeglądarce zawartość tabeli Katalog. 3. Zastosowanie komponentu PageProducer Skopiuj opracowany wg punktu 1 projekt P1 do nowego katalogu P3. Usuń z kodu modułu Unit1 definicje metod naglowek i stopka oraz ich zapowiedzi w definicji typu TForm1. Dołącz na formatce dwa komponenty do połączenia z bazą HURT.GDB i ustaw 3

ich właściwości jak w punkcie 2 dla uzyskania połączenia z tabelą bazy. Dla komponentu SQLDataSet ustaw odmiennie właściwości: CommandType: wybierz ctquery CommandText: wpisz zapytanie: SELECT KOD, NAZWA, TERMIN, ILOSC, CENA FROM KATALOG, STANY WHERE KOD=KOD_TOW Dołącz do formatki komponent PageProducer z zakładki Internet. Ustaw właściwość komponentu: HTMLDoc: wpisz szablon strony: <HTML> <HEAD> <TITLE>Tabela STANY</TITLE> </HEAD> <BODY> <H1><CENTER>Pozycja tabeli STANY</CENTER></H1> <HR><#p1><#p2><#p3><#p4><#p5><#p6><#p7 marza=10><#p8><hr> Strona wygenerowana przez Delphi dnia <#teraz><br> </BODY> </HTML> Wykasuj dotychczasowy zapis metody obsługi zdarzenia OnClick dla przycisku pierwszego i wpisz: procedure TForm1.Button1Click(Sender: TObject); Memo1.Clear; Memo1.Text:=PageProducer1.Content; Dołącz algorytm obsługi znaczników rozmieszczonych w szablonie strony: - Wygeneruj szkielet metody obsługi zdarzenia OnHTMLTag dla komponentu PageProducer. - Wpisz kod metody: procedure TForm1.PageProducer1HTMLTag(Sender: TObject; Tag: TTag; const TagString: String; TagParams: TStrings; var ReplaceText: String); var Str: String; marza: integer; if TagString= teraz then DateTimeToString(Str, yyyy-mm-dd, Now); ReplaceText:=Str end else if TagString= p1 then ReplaceText:=SQLDataSet1.Fields[0].FieldName + : + SQLDataSet1.Fields[0].AsString + '<BR>' else if TagString='p2' then ReplaceText:=SQLDataSet1.Fields[1].FieldName + ' : ' + SQLDataSet1.Fields[1].AsString + '<BR>' 4

else if TagString='p3' then ReplaceText:=SQLDataSet1.Fields[2].FieldName + ' : ' + SQLDataSet1.Fields[2].AsString + '<BR>' else if TagString='p4' then ReplaceText:=SQLDataSet1.Fields[3].FieldName + ' : ' + SQLDataSet1.Fields[3].AsString + '<BR>' else if TagString='p5' then ReplaceText:=SQLDataSet1.Fields[4].FieldName + ' : ' + SQLDataSet1.Fields[4].AsString + '<BR>' else if TagString='p6' then ReplaceText:='Wartosc : ' + FloatToStr(SQLDataSet1.Fields[3].Value * SQLDataSet1.Fields[4].Value) + '<BR>' else if TagString='p7' then Str:=TagParams.Values['marza']; marza:=strtointdef(str, 0); ReplaceText:='Cena (marza = ' + Str + '%) : ' + FloatToStr(SQLDataSet1.Fields[4].Value * (100+marza)/100) + '<BR>' end else if TagString='p8' then ReplaceText:='Termin spozycia uplywa za dni :' + IntToStr(DaysBetween(Now,SQLDataSet1.Fields[2].Value)) + '<BR>'; Uwaga: wykorzystanie funkcji DaysBetween wymaga dołączenia do klauzuli uses modułu DateUtils Przetestuj działanie programu. Program powinien po naciśnięciu przycisku pierwszego wyświetlać w komponencie Memo zapis strony wygenerowanej na podstawie szablonu i uzupełnionej odpowiednimi zapisami wstawionymi w miejsce znaczników. Po naciśnięciu przycisku drugiego program powinien wyświetlać w przeglądarce internetowej zawartość jednego rekordu tabeli STANY uzupełnioną dodatkowymi informacjami: wysokość ceny hurtowej (tzn. z doliczeniem marży 10 proc) lub ilość dni do upływu terminu przydatności do spożycia. Wyświetlany będzie pierwszy rekord tabeli w uporządkowaniu wg klucza głównego (czyli informacje o Piwie tyskim w butelkach 0,3 litra). Uzupełnij zapis metody obsługi przycisku pierwszego o instrukcje (wpisane bezpośrednio po ): szukaj:=inputbox('wyszukiwanie rekordu', 'Podaj nazwe towaru', ' '); SQLDataSet1.Locate('Nazwa', szukaj, [lopartialkey]); Uzupełnij deklarację zmiennej szukaj: var szukaj: String; Zmiany powyższe umożliwiają wyświetlanie informacji o wybranym towarze. W wyświetlanym funkcją InputBox okienku należy podawać nazwę towaru (wystarczą pierwsze litery). Przenieś zapis szablonu strony do pliku SZABLON.HTML (utworzonego w katalogu projektu) kasując jednocześnie jego zapis we właściwości HTMLDoc komponentu PageProducer. We właściwości HTMLFile tego komponentu wskaż plik szablonu. Sprawdź, że po tych zmianach aplikacja działa identycznie. Przy takiej konfiguracji dla 5

dokonania zmian w zapisie strony wystarczy odmiennie zredagować szablon zmiany kodu źródłowego aplikacji ani nawet powtórna kompilacja nie są wymagane. Zmień zapis szablonu strony w pliku SZABLON.HTML w taki sposób żeby dodatkowo wyświetlana była wysokość ceny detalicznej (z marżą 20 proc) wstaw w odpowiednim miejscu znacznik: <#p7 marza=20>. Taki zapis znacznika powoduje wykonanie obliczeń ceny detalicznej dla wartości parametru marża równej 20. Sprawdź działanie aplikacji. ZADANIA 1. Zmodyfikuj aplikację z katalogu P2 w taki sposób by po naciśnięciu dodatkowego przycisku generować stronę z zapisem całej tabeli STANY. 2. Zmodyfikuj aplikację z katalogu P3 w taki sposób by w informacjach wyświetlanych znalazła się wartość towaru liczona w cenach detalicznych. 3. Opracuj aplikację która wyświetla zawartość tabeli KATALOG z wykorzystaniem komponentu PageProducer. Do redagowania zawartości wiersza tabeli wykorzystaj komponent DataSetPageProducer. Wskazówka: Rozmieszczone w szablonie HTML tego komponentu znaczniki o postaci <#NazwaPola> - gdzie NazwaPola jest identyfikatorem pola dołączonej do komponentu tabeli - są interpretowane automatycznie bez żadnych dodatkowych zabiegów. Ich wystąpienia zastępowane są wartościami pól pobieranymi z bieżącego rekordu tabeli. 4. Opracuj podobną aplikację z wykorzystaniem komponentu DataSetTableProducer. Wskazówka: Przeznaczenie poszczególnych właściwości komponentu: Caption kod HTML opisujący tytuł wyświetlanej tabeli DataSet komponent reprezentujący wyświetlaną tabelę Header HTMLowy zapis strony przed wyświetlaną tabelą Footer HTMLowy zapis strony za wyświetlaną tabelą MaxRows liczba wyświetlanych wierszy (-1 =wszystkie) Właściwości obiektowe: RowAttributes definiuje wygląd wierszy np. kolor zielony przez ustawienie właściwości: bgcolor=lime TableAttributes definiuje wygląd całej tabeli np. kolor niebieski (tylko dla nagłówka i obramowania bo wiersze będą zielone) szerokość równą 70% oraz wyśrodkowanie tabeli poprzez: bgcolor=blue, Width=70, Align=haCenter, Columns obsługiwana przez specjalizowany edytor właściwość pozwalająca na precyzyjne zdefiniowanie poszczególnych kolumn. W czasie ustawiania parametrów edytor na bieżąco wyświetla podgląd tabeli co pozwala na szybką korektę ewentualnych błędów. 6