Informatyka Studia niestacjonarne EZ 2. dr inż. Paweł A. Mazurek
Delphi Pakiet Delphi jest zintegrowanym środowiskiem (ang. IDE Integrated Development Environment) programowania zorientowanego obiektowo (autorem jest firma Borland ). Delphi należy do grupy narzędzi szybkiego tworzenia aplikacji (ang. RAD - Rapid Application Development). W pakiecie Delphi znajduje zastosowanie język Object Pascal obiektowa odmiana języka programowania Pascal. Podstawowe zasady znanego języka Turbo Pascal (struktura programu, deklaracje i definicje, typy danych, instrukcje: przypisania, warunkowe, iteracyjne itd.) mają swoje niezmienione znaczenie w Delphi. 2
Charakterystyka Borland Delphi Kompilator języka Delphi Pascal jest 32-bitowym kompilatorem uwzględniającym kraj użytkownika (ang. native code 32-bit compiler) środowiska Windows. Oznacza to, że kody wynikowe programów uwzględniają specyficzne (zależne od kraju użytkownika) sposoby zapisu daty, czasu, liczb, waluty itp. Z faktu, że kompilator wykorzystuje 32-bitowe adresowanie pamięci wynika, że łączne rozmiary tablic, łańcuchów, rekordów i innych struktur danych mogą zajmować do 2 GB pamięci. (nie dotyczy najnowszych produktów!) 3
4
Elementy środowiska Delphi Podstawowe narzędzia to: formatka - to graficzny obraz widoku okna tworzonej aplikacji, na który można osadzać przy pomocy myszki dowolne komponenty pobrane z palety edytor kodu - to edytor tekstu, w którym pisze się ciało programu stosując identyczne operacje edycyjne jak w popularnych edytorach tekstowych komponenty - to obiekty, które przyśpieszają tworzenie aplikacji, można podzielić ja na wizualne i niewizualne, ich liczba może być rozbudowywana, programista sam może je tworzyć inspektor obiektów - to narzędzie służące do wizualnego ustawiania podstawowych właściwości aktywnego komponentu jak i do oprogramowania zdarzeń związanych z tym komponentem. 5
Elementy IDE - zintegrowanego środowiska programisty Główne okno IDE z rozwijalnym menu systemu. Menedżer projektów (Project Manager). Okno drzewa obiektów (Object TreeView). Inspektor obiektów (Object Inspector). Edytor kodu. Edytor graficzny. Debugger. Biblioteka komponentów (VCL - Visual Component Library). Generator baz danych. Generator raportów i wykresów. Generator help u aplikacji. Generator komponentów VCL oraz ActiveX programisty. Generator programu instalacyjnego aplikacji. 6
Programowanie obiektowe Programowanie obiektowe pozwala przedstawić problem w postaci logicznie powiązanych ze sobą struktur danych, które wymieniają pomiędzy sobą informacje. Struktury te, nazywane obiektami, odpowiadają zwykle pojęciom z dziedziny problemu, którym zajmuje się aplikacja. Obiekty reprezentują elementy rzeczywistości, które najczęściej są opisane rzeczownikami. Przykładowymi obiektami mogą być: samochód, pacjent, figura. W Delphi jest dostępnych wiele gotowych obiektów wizualnych (graficznych) i innych (zwanych komponentami). Istnieje także możliwość tworzenia własnych obiektów. Komponenty Delphi reprezentują: elementy interfejsu użytkownika np. przyciski, przełączniki, ikony i inne, proste pojęcia, takie jak: wektor, data, liczba zespolona, złożone struktury np. listy dynamiczne, tablice o zmiennym rozmiarze, macierze. 7
Programowanie obiektowe Delphi jest środowiskiem zorientowanym obiektowo, co oznacza, iż dostępne są dla programisty następujące mechanizmy: A. Tworzenie obiektów poprzez integrowanie powiązanych ze sobą danych i operującego na nich kodu. Typ obiektowy jest to złożona struktura danych o określonej liczbie elementów, które nazywamy składowymi. Składowe te dzielimy na pola i metody. Pole zmienna, która może być różnego typu. Metoda czynność wykonywana na obiekcie w postaci procedury lub funkcji. Metoda obiektu operuje z reguły na polach (danych) obiektu. Dodatkowymi składowymi typu obiektowego są właściwości i zdarzenia. Właściwość (ang. property l. mn. properties) jest rozwinięciem pola. Umożliwia ona wbudowanie kontroli zmian wartości oraz powiązanie ze sobą metody i pola. Metoda powiązana z właściwością jest automatycznie wykonywana przy odczycie lub zmianie wartości właściwości. Zdarzenie (ang. event l. mn. events) jest właściwością, która zawiera wskaźnik (adres) do metody. Po wystąpieniu w systemie zdarzenia, takiego jak np. kliknięcie przycisku myszy, informacja o nim jest wysyłana do odpowiedniego elementu sterującego. Jeśli w tym elemencie zdarzenie OnClick zawiera wskaźnik do metody, to metoda ta jest realizowana. Dzięki zdarzeniom tworzy się metody reagujące na polecenia użytkownika. 8
Programowanie obiektowe B. Tworzenie nowych typów (klas) obiektów na bazie klas już istniejących (dziedziczenie). Typ bazowy nazywamy przodkiem, a typ tworzony potomkiem. Potomek przejmuje wszystkie składowe przodka, tzn. wszystkie jego pola, właściwości i metody, oraz zawiera nowe, własne składowe. Jeśli jako przykład weźmiemy obiekt pojazd, to wśród tego typu obiektów można wyróżnić m.in. obiekty: spalinowy i mechaniczny. Następnie wśród obiektów spalinowych wyróżniamy obiekty: ciężarowy, osobowy, autobus i inne. Natomiast wśród obiektów mechanicznych wyróżniamy obiekty: rower, hulajnoga i inne. Określenie więzów dziedziczenia między obiektami prowadzi do powstania hierarchii obiektów. W naszym przykładzie na szczycie takiej hierarchii znajduje się obiekt pojazd. Dziedziczenie określa przynależność obiektu (np. osobowy) do innej klasy obiektu (np. spalinowy). pojazd Przykład hierarchii obiektów spalinowy mechaniczny ciężarowy osobowy autobus inne rower hulajnoga inne C. Wykorzystanie wspólnych elementów funkcjonalności klasy macierzystej i po-chodnej (polimorfizm). 9
Analogia - drukarka: Obiekt: Klasa: Metody: HP 959c drukarka druk czarno-biały druk kolorowy wydruk próbny Zdarzenia:... wysłanie wydruku wstrzymanie wydruku... 10
Aplikację tworzoną w Delphi nazywamy projektem. Nowy projekt tworzymy za pomocą polecenia File New Application. Każdy projekt składa się z co najmniej jednego pliku modułu i jednego pliku formatki (Form). Projekt zarządza swoimi składnikami. Tylko w wyniku kompilacji projektu otrzymamy gotową do uruchomienia aplikację. W projekcie aplikacji znajdują się następujące pliki zawierające kod w języku Object Pascal: plik projektu, który zawiera główny blok zaczynający się od słowa kluczowego program, pliki modułów, które zaczynają się od słowa kluczowego unit. 11
Pliki projektu Rozszerzenie pliku *.dpr *.pas *.dfm *.exe Przeznaczenie pliku Główny plik projektu, tworzony automatycznie Plik z modułem, zawiera kod źródłowy formularza Plik zawierający informacje o własnościach formularza i komponentów Plik wynikowy programu 12
Główne bloki projektu W projekcie aplikacji znajdują się plik zawierające kod w języku Object Pascal: pliki modułów (*.pas) zaczynają się od słowa kluczowego unit ; plików tych może być więcej niż jeden plik projektu (*.dpr), zawiera główny blok zaczynający się od słowa kluczowego program ; istnieje tylko jeden taki plik w obrębie danego projektu 13
Zrzut nowego pliku programu 14
Plik modułu 15
Moduł Moduł to plik tekstowy, który może być kompilowany do programu wykonywalnego tzn. kod źródłowy kompilowany jest na język zrozumiały dla maszyny. Nazwa modułu wypisana jest w pierwszej linijce kodu i poprzedzona jest słówkiem Unit (od ang. Moduł). W Delphi każdej formatce projektu odpowiada jeden moduł, który zawiera definicje odpowiednich typów, deklaracje zmiennych, definicje procedur obsługi zdarzeń. Wszystkie elementy są umieszczane w odpowiednich częściach modułu. Modułów używamy również do dzielenia projektu aplikacji na logiczne składowe. Ogólna struktura modułu jest następująca: unit nazwa_modułu; interface {część opisowa } implementation {część implementacyjna } initialization {część inicjująca opcjonalna } finalization {część kończąca opcjonalna } End. 16
Struktura modułu Moduł rozpoczyna się od słowa kluczowego unit, po którym następuje identyfikator będący nazwą modułu. W części opisowej (interface): deklarujemy stałe, typy, zmienne, procedury i funkcje, które będą dostępne w innym module, deklarujemy inne moduły, jeśli we wszystkich częściach danego modułu chcemy używać elementy zdefiniowane w tych modułach. W części implementacyjnej (implementation): definiujemy procedury i funkcje, które zostały zadeklarowane w części opisowej lub w części implementacyjnej, deklarujemy stałe, typy, zmienne, procedury i funkcje, które będą dostępne tylko w tej części modułu (nie będą dostępne w innych modułach zawierających deklaracje danego modułu), możemy deklarować inne moduły, jeśli elementy zadeklarowane w tych modułach chcemy używać tylko w części implementacyjnej danego modułu (deklaracja modułów jest taka, jak w części opisowej) 17
Struktura modułu Część inicjująca (initialization) zawiera instrukcje, które będą wykonane w celu zainicjowania modułu. Moduły są inicjowane w takiej kolejności, w jakiej są zadeklarowane w pliku projektu (*.dpr). Część inicjująca jest opcjonalna i nie musi wystąpić. Część kończąca (finalization) zawiera instrukcje, które będą wykonane przed końcem działania aplikacji w celu zwolnienia zasobów. Części kończące w poszczególnych modułach będą wykonywane w odwrotnej kolejności niż części inicjujące. Część kończąca jest opcjonalna, ale może wystąpić tylko wówczas, jeśli moduł zawiera część inicjującą. 18
Etapy tworzenia aplikacji Wybrać z menu File\New\Application lub wykorzystać już istniejąca, która standardowo tworzona jest przy uruchomieniu środowiska Umieścić komponenty na formatce zgodnie z zapotrzebowaniem Oprogramować zdarzenia i właściwości związane z tymi komponentami Oprogramować własne procedury i funkcje związane z tworzonym projektem UWAGA nie ma reguły kiedy i w którym momencie tworzonego projektu należy go zapisać, ale należy pamiętać o możliwości stracenia całej swojej pracy. (od razu w laboratoriach!!) 19
Kompilacja Projekt jest automatycznie kompilowany przed każdorazowym jego uruchomieniem za pomocą polecenia Run Run. Delphi umożliwia dodatkowo wykonanie samego procesu kompilacji projektu za pomocą polecenia Project Compile (lub CTRL+F9). Polecenie to kompiluje wszystkie moduły wchodzące w skład projektu, plik projektu oraz dostępne moduły źródłowe, zadeklarowane po słowie uses. Każdy skompilowany moduł znajduje się w pliku o rozszerzeniu dcu, a po pomyślnym zakończeniu kompilacji wszystkich modułów zostaje wygenerowany plik wykonywalny exe o nazwie takiej, jak nazwa projektu. Ewentualne błędy kompilacji obejrzeć możemy w oknie komunikatów poniżej okna kodu. Uruchamianie Projekt uruchamiamy za pomocą polecenia Run Run, naciskając klawisz F9 (tak w Borland Pascalu program był kompilowany), lub przycisk na pasku narzędzi Run. Jeśli projekt nie został wcześniej skompilowany lub od ostatniego procesu kompilacji został zmodyfikowany, to przed uruchomieniem następuje jego kompilacja. Dość często tworzy się programy, które wymagają, aby podczas ich uruchamiania podać określone parametry. Uruchamiając aplikację z poziomu kompilatora, wpisujemy wymagane parametry w oknie, które otwieramy za pomocą polecenia Run Parameters. 20
PASCAL DELPHI Praca w konsoli Delphi daje Ci też możliwość pisania w konsoli prawie standardowym Pascalem. Wystarczy wybrać File New Other Console Application. Teraz możesz używać WriteLn, ReadLn, możesz korzystać z wszelkich pętli, warunków jak w Pascalu. Delphi nakłada jednak pewne ograniczenia -nie zezwala na operacje, które były specyficzne dla DOSu np. korzystanie z grafiki, muzyki, bezpośrednie odwołanie do wybranego adresu pamięci. Aplikacje konsolowe to programy uruchamiane w oknie tzw. konsoli. Ten, kto programował w Turbo Pascalu, już wie,że pisane w nim programy były wykonywane w środowisku MS DOS. Można było oczywiście uruchomić taki program pod kontrolą systemu Windows, wówczas otwierało się okno DOS-a, w którym był uruchamiany taki program. Okno to będziemy nazywać konsolą. 21
Po wybraniu Console Aplication pojawia się plik projektu -> 22
PASCAL DELPHI Praca w konsoli W skutek wykonania tych czynności Delphi powinno otworzyć nowy projekt bez formularza, składający się jedynie z edytora kodu. W edytorze kodu powinien znaleźć się kod podobny do tego z listingu poniżej: program Project1; {$APPTYPE CONSOLE} uses SysUtils; begin { TODO -ouser -cconsole Main : Insert code here } end. W rzeczywistości program działa jako konsolowy dzięki dyrektywie kompilatora {$APPTYPE CONSOLE}. Jest to specjalne oznaczenie dla kompilatora, lecz tym na razie nie trzeba sobie zaprzątać głowy. 23
Szybkie wprowadzenie operacje we/wy Właściwy kod programu umieszcza się pomiędzy słowami : begin i end. Wyświetlenie tekstu w okienku następuje za pomocą procedury Writeln lub Write. Jeżeli więc chcesz wyświetlić jakiś tekst np. Politechnika - piszesz: Write( Politechnika'); lub Writeln( Politechnika'); Write(); - powoduje wypisanie wartości wyrażenia zawartego w nawiasie. Writeln(); - powoduje wypisanie wartości wyrażenia zawartego w nawiasie i przejście do nowego wiersza. Jeżeli jednak uruchomisz program z tak wpisanym kodem to otworzy się okienko na sekundę, wyświetli tekst, a następnie zniknie. 24
Szybkie wprowadzenie operacje we/wy Druga bardzo ważna operacja to odczyt danych. Readln(zmienna); - odczytanie danej (zmiennej) z klawiatury i zakończonej naciśnięciem klawisza Enter. Read(); - odczytanie danej z dysku. Instrukcję Readln(); (bez parametru) stosujemy do zatrzymania programu. Naciśnięcie klawisza Enter powoduje dalszy ciąg programu. Żeby więc okno DOSowe było przez cały czas otwarte warto zastosować komendę Readln. Powoduje to, że program czeka na odpowiedź użytkownika i kontynuuje pracę po naciśnięciu przycisku ENTER. 25
Analiza pierwszego programu Program Program1; uses SysUtils; Const a=10; {bok prostokąta} b=5; {drugi bok prostokąta} var ob, pl:integer; begin Ob:=2*(a+b); Pl:=a*b; writeln( obwód prostokąta wynosi :,OB); write( pole prostokąta wynosi :,PL); end. Zdefiniowanie stałych Zdefiniowanie zmiennych Algorytm obliczeniowy (wzory) operacje wyświetlenia wyników 26
var i:integer; begin for i:=1 to 1000 do WriteLn(i); end. program imie; var imie: string; begin Write('Jak się nazywasz?'); Readln(imie); WriteLn('Witaj ', imie, '!'); end. program test_pelnoletnosci; var lat : Integer; begin Write('Ile Masz lat? '); ReadLn(lat); Write('Jesteś '); if lat<18 then Write('nie'); Write('pełnoletni'); end. var a, b: integer; begin WriteLn('Program mnożący a*b'); Write('Podaj liczbę a: '); ReadLn(a); Write('Podaj liczbę b: '); ReadLn(b); WriteLn(a, ' * ', b, ' = ', a * b); ReadLn; end. Przykładowe aplikacje konsolowe 27
Aplikacje okienkowe programowanie przy użyciu komponentów 28
Pojęcie komponentu Element programu realizujący konkretne zadanie (umożliwiający wprowadzenie danych, wyprowadzenie danych, obsługujący połączenie z serwerem WWW, odmierzający czas, wyświetlający zawartość folderu). Komponenty dostępne w narzędziach RAD firmy Borland są szczególnym przypadkiem obiektów. 29
Komponenty Komponent komunikuje się z otoczeniem (programem lub innym komponentem) poprzez metody, czyli procedury wykonujące określone zadania (nawiązanie połączenia, zapisanie pliku) oraz właściwości (np. kolor, rozmiar, nazwa) Właściwości mają charakter statyczny, tj. określają główne parametry obiektu, natura metod jest czynna służą do wykonania określonych akcji. Do realizacji wyznaczonych mu zadań komponent używa również własnych, wewnętrznych procedur, niewidocznych dla otoczenia i niewidocznych dla programisty - czarna skrzynka -realizująca obiektową zasadę hermetyzacji danych. 30
Komponenty W czasie tworzenia aplikacji komponenty są widoczne na formularzu w postaci ikon. Budując program można zmieniać większość właściwości komponentu, w tym także ustalać jego powiązania z innymi komponentami) oraz określać sposób, w jaki będzie reagować na zdarzenia - bądź to zewnętrzne, bądź pochodzące od innych elementów aplikacji. 31
Komponenty systemu Delphi (VCL Visual Component Library) Każdy komponent systemu (przycisk, menu, pole edycji, pole wyboru itd.) jest opisywany zbiorem: właściwości (property) oraz zdarzeń (event). Właściwości, metody i zdarzenia to trzy klucze do komunikowania się z komponentem i wpływanie na jego stan. Właściwości komponentu i zdarzenia związane z komponentem są wizualizowane w oknie Inspektora obiektów (Object Inspector). Można je korygować w tym oknie lub zmieniać programowo. 32
Komponenty niewidzialne W czasie pracy programu komponent może, lecz nie musi być widoczny stąd wyróżniamy komponenty widzialne i niewidzialne. Komunikacja z komponentami niewidzialnymi odbywa się w ten sam sposób jak z widzialnymi - poprzez zmianę ich właściwości, odwołania do metod oraz generowanie zdarzeń. 33
Inspektor obiektów 34
Paleta komponentów wersji Borland Delphi 7 Enterpise TLabel- odpowiada Pascalowej instrukcji WRITE- wyświetla tekst TEdit- odpowiada Pascalowej instrukcji Read, służy do wprowadzania danych TButton- to komponent standardowego klawisza
Grupy komponentów ogólne obsługi baz danych internetowe usług i serwerów dostępnych w systemie Windows Standardowe komponenty systemu są pogrupowane w poszczególne karty 36
Komponenty ogólne Obsługujące interfejs użytkownika mechanizmy aplikacji. Tworzą ją karty: oraz wewnętrzne Standard podstawowe elementy interfejsu użytkownika Additional komponenty zaawansowane, częściowo przeznaczone do realizacji wewnętrznych funkcji programu Win31- elementy interfejsu użytkownika charakterystyczne dla 32-bitowych systemów Windows System komponenty obsługujące funkcje wewnętrzne, jak pomiar czasu czy wymiana danych pomiędzy programami Dialogs komponenty odpowiedzialne za obsługę okien dialogowych 37
Komponenty przeznaczone do obsługi baz danych karty Data Access i Data Controls zawierają podstawowe komponenty udostępniające zawartość bazy danych oraz bazodanowe elementy interfejsu użytkownika dbexpress, DataSnap, BDE, ADO oraz InterBase- udostępniają narzędzia do obsługi wielowarstwowych, rozproszonych baz danych wykorzystujących m.in.. język SQL oraz interfejsy BDE (Borland Database Engina) i ADO (Active Data Objects) Do prezentacji danych wykorzystywane są komponenty zawarte na kartach Decision Cube i Rave 38
Komponenty internetowe Komponenty ogólnointernetowe pogrupowano na kartach Internet i FastNet Karty z grup Indy Servers, Indy Clients, Indy Misc, Indy Intercepts, Indy i/o Handlers zawierają obszerny zbiór komponentów ogólnego zastosowania znany pod nazwą Internet Direct Karty IW Standard, IW Data, IW Client Side oraz IW Control skupiają komponenty przeznaczone do tworzenia serwerów WWW Karta WebServises zawiera kilka komponentów realizujących standardowy protokół internetowy SOAP Karty InternetExpres i Web Snap udostępniają narzędzia do tworzenia internetowych aplikacji obsługujących bazy danych i wykorzystujących język XML 39
Otoczka dla usług i serwerów dostępnych w systemie Windows COM +, Serwers Samples przykładowe komponenty ActiveX- wyspecjalizowane wykorzystujące interfejs ActiveX komponenty Win3.1- elementy sterujące typowe dla 16-bitowych wersji Windows Programista może komponenty. też wygenerować własne 40
Frames (ramka zgrupowania komponentów; MainMenu (główne menu aplikacji - rozwijalne); PopupMenu (menu kontekstowe - nierozwijalne, normalnie niewidoczne - wizualizowane prawym klawiszem myszy); Label (etykieta - napis, nagłówek pola); Edit (pole edycyjne dla edycji jednego wiersza tekstu); Memo (pole memo - pole edycyjne dla edycji wielu wierszy tekstu); Button (przycisk); CheckBox (pole wyboru o 2 stanach: włączone, wyłączone. Kilka takich pól może służyć do wyboru opcji nie wyłączających się wzajemnie); 41
RadioButton (pole opcji służące do wyboru jednej z kilku wzajemnie wyłączających się opcji); ListBox (lista elementów, które użytkownik może zaznaczać lub wybierać); ComboBox (jak komponent ListBox, lecz z możliwością dopisywania elementów przez użytkownika); ScrollBar (pasek przewijania); GroupBox (komponent stanowiący grupę innych komponentów, najczęściej typu RadioButton lub CheckBox); RadioGroup (grupa komponentów typu RadioButton); Panel (komponent stanowiący grupę innych komponentów, najczęściej typu pasek narzędzi lub linia statusu). ActionList (lista odpowiedzi aplikacji na akcje użytkownika). 42
BitBtn (przycisk na którym jest umieszczony napis i/lub rysunek); SpeedButton (przycisk umieszczany w pasku narzędzi, o 4 wyróżnionych stanach oraz z rysunkiem zmieniającym się w poszczególnych stanach); MaskEdit (maskowane pole edycji, umożliwiające filtrację i formatowanie danych wprowadzonych przez użytkownika); StringGrid (arkusz, którego elementami są stringi); DrawGrid (arkusz do wyświetlania danych nie tekstowych); Image (komponent wyświetlający element graficzny - mapę bitową, ikonę lub metaplik); Shape (figura geometryczna: prostokąt, koło, elipsa); Bevel (zagłębiony lub wybrzuszony prostokąt); 43
ScrollBox (przewijalne okienko); CheckListBox (komponent będacy połączeniem listy i pola wyboru); Splitter (komponent słuący do podziału okna); StaticText (komponent jak Label, lecz zaopatrzony w ramkę); ControlBar (pasek narzędzi); ApplicationEvents (lista zdarzeń aplikacji); ValueListEditor (edytor listy danych); LabeledEdit (komponent Edit z etykietami); ColorBox (komponent ComboBox dla wyboru koloru); 44
Wspólne właściwości komponentów Name nazwa komponentu. Każdy komponent ma swoją nazwę przez którą jest identyfikowany w programie. Caption etykieta. Nazwa widoczna na komponencie. Własność tę mają niektóre komponenty widoczne Left, Top położenie lewego górnego rogu komponentu względem lewego górnego rogu ekranu Width, Height szerokość i wysokość komponentu Visible widoczność. Po ustawieniu tej właściwości na False komponent staje się niewidoczny Hint podpowiedź w chmurce. Tekst podpowiedzi pojawiający się po przytrzymaniu myszy na komponencie ShowHint uwidacznia podpowiedź ustawioną w polu właściwości Hint 45
Wspólne zdarzenia komponentów OnClick przy kliknięciu, to zdarzenie istnieje dla komponentów mogących przechwytywać aktywność OnDoubleClick przy podwójnym kliknięciu dla etykiet, formularza, panelu, pola Edit OnResize przy zmianie rozmiaru dla panelu, formularza OnMouseDown przy przytrzymaniu myszy na komponencie 46
Wspólne zdarzenia komponentów OnMouseMove przy przemieszczaniu komponentu myszą OnMouseUp przy zwolnieniu przycisku myszy OnChange przy zmianie w polu, istnieje dla komponentów wprowadzających dane, np. Edit, ComboBox, ListBox OnKeyDown przy wciśnięciu klawisza na klawiaturze OnKeyPress przy trzymaniu klawisza OnKeyUP przy zwolnieniu trzymanego klawisza 47
Podstawowe właściwości formularzy ActiveControl wskazuje na tę kontrolkę formularza która w danej chwili jest kontrolką aktywną. Właściwość tę można zarówno odczytywać jak i modyfikować. 48
Podstawowe właściwości formularzy BorderStyle określa rodzaj obrzeża formularza i związane z nim możliwości manipulowania formularzem w czasie wykonywania programu. bsdialog obrzeże typowe dla okien dialogowych bez możliwości zmiany rozmiaru bssingle zwykłe obrzeże bez możliwości zmiany rozmiaru bsnone brak obrzeża bssizeable zwykłe obrzeże z możliwością zmiany rozmiaru bstoowindow obrzeże typowe dla okienka palety narzędziowej bez możliwości zmiany rozmiaru bssizetoowin - jak bstoowindow z możliwością zmiany rozmiaru 49
Podstawowe właściwości formularzy BorderIcon definiuje zestaw ikon widocznych na obrzeżach formularza bisystemmenu oznacza ikonę z lewej strony paska tytułowego, za pomocą której wyświetla się menu systemowe, biminimize oznacza przycisk minimalizacji bimaximize oznacza przycisk maksymalizacji bihelp oznacza przycisk oznaczony znakiem zapytania 50
Podstawowe właściwości formularzy FormStyle określa styl formularza fsmdichild oznacza wielodokumentowej fsmdiform oznacza wielodokumentowej formularz formularz potomny główny aplikacji aplikacji fsstayontop oznacza formularz pozostający zawsze na wierzchu fsnormal określa wszystkie zdefiniowane wcześniej formularze inne niż 51
Podstawowe właściwości formularzy WindowState określa postać okna powstającego z formularza wsnormal wsminimized wsmaximized 52
Wybrane komponenty karty Dialogs ColorDialog komponent wyświetla okno dialogowe wyboru koloru Komponent jest niewidoczny Do uaktywnienia komponenty służy metoda Execute. Metoda ta zwraca wartość True lub False w zależności czy dokonano wyboru koloru czy nie Właściwość komponentu Color udostępnia wybrany kolor 53
Wybrane komponenty karty Dialogs FontDialog - komponent wyświetla okno dialogowe wyboru parametrów czcionki Komponent jest niewidoczny Do uaktywnienia komponenty służy metoda Execute.. Metoda ta zwraca wartość True lub False w zależności czy dokonano wyboru parametrów czcionki czy nie Właściwość komponentu Font udostępnia wybraną czcionkę 54
Komentarze W Delphi komentarze możemy wstawiać do programu na trzy sposoby: {To jest komentarz} (*To też jest komentarz*) //I to też jest komentarz, ale tylko do konca linii 55