76
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky Vyšší odborná škola ekonomická a zdravotnická a Střední škola, Boskovice MODUL 2: Programování v Delphi Studijní opora

Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Embed Size (px)

Citation preview

Page 1: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky

Vyšší odborná škola ekonomická a zdravotnická a Střední škola, Boskovice

MODUL 2: Programování v Delphi

Studijní opora

Page 2: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky

Název projektu: Zkvalitňujeme cestu k poznání Číslo projektu: CZ.1.07/1.1.02/01.0143

Programování v Delphi

Autor:

Ing. Jan Tihon

Tato studijní opora byla vytvořena pro projekt „Zkvalitňujeme cestu k poznání“

CZ.1.07/1.1.02/01.0143 Operační program Vzdělávání pro konkurenceschopnost.

Boskovice 2011

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem

České republiky.

Page 3: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Studijní opora: Programování v Delphi Stránka 3 z 76

OBSAH:

1 ÚVOD ...................................................................................................................................... 6

1.1 Cíle předmětu – kurzu ...................................................................................................................... 6

1.2 Budete znát ...................................................................................................................................... 6

1.3 Použité symboly ............................................................................................................................... 6

2 VSTUPNÍ DIAGNOSTIKA ................................................................................................... 7

2.1 Opakování ........................................................................................................................................ 7

2.1.1 Struktura programu – základní pojmy ............................................................................................ 7

2.2 Programátorský způsob myšlení ....................................................................................................... 7

3 ÚVOD DO PROGRAMOVÁNÍ VE WINDOWS ................................................................ 9

3.1 Programovací jazyky – vývoj programování...................................................................................... 9

3.1.1 Řady instrukcí ................................................................................................................................. 9

3.1.2 Procedurální programování ............................................................................................................ 9

3.1.3 Objektově orientované programování - OOP ............................................................................... 10

3.2 Objektové programování ................................................................................................................10

3.2.1 Objekty ......................................................................................................................................... 10

3.2.2 Dědičnost ...................................................................................................................................... 10

3.2.3 Třídy .............................................................................................................................................. 11

4 ZAČÍNÁME PROGRAMOVAT V DELPHI ..................................................................... 12

4.1 Vývojové prostředí Delphi ...............................................................................................................12

4.1.1 Instalace Turbo Delphi 2006 ......................................................................................................... 12

4.1.2 Spuštění Delphi 2006 .................................................................................................................... 16

4.1.3 Grafické uživatelské rozhraní ....................................................................................................... 16

4.2 Struktura aplikací v Delphi ..............................................................................................................17

4.2.1 První projekt v Turbo Delphi ......................................................................................................... 17

4.2.2 Projekt a Unit v Delphi .................................................................................................................. 18

4.2.3 Soubory vytvářené v Delphi.......................................................................................................... 19

4.3 Formulář .........................................................................................................................................22

4.3.1 Vytvoření a význam formuláře ..................................................................................................... 22

4.3.2 Základní vlastnosti formuláře ....................................................................................................... 23

4.4 Lekce_01 - přednáška ......................................................................................................................25

5 POUŽITÍ KOMPONENT .................................................................................................. 26

5.1 Přehled použití základních komponent ...........................................................................................26

5.1.1 Paleta komponent – Tool Palette ................................................................................................. 26

5.2 Komponenta TLabel ........................................................................................................................27

5.2.1 Lekce_02 - přednáška ................................................................................................................... 28

5.3 Komponenty tlačítek .......................................................................................................................29

5.3.1 Tlačítko – komponenta TButton ................................................................................................... 29

5.3.2 Tlačítko – komponenta TSpeedButton ......................................................................................... 30

5.3.3 Tlačítko – komponenta TBitBtn .................................................................................................... 30

Page 4: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Studijní opora: Programování v Delphi Stránka 4 z 76

5.3.4 Další vlastnosti TSpeedButtnon a TBitBtn .................................................................................... 31

5.3.5 Lekce_03 - přednáška ................................................................................................................... 32

5.4 Object Pascal ...................................................................................................................................32

5.4.1 Lekce_04 - přednáška ................................................................................................................... 32

5.5 Tlačítka – událost OnClick ................................................................................................................33

5.5.1 Události komponent ..................................................................................................................... 33

5.5.2 Událost OnClick ............................................................................................................................ 33

5.5.3 Lekce_05 - přednáška ................................................................................................................... 33

5.6 Dialogový box s hlášením ................................................................................................................34

5.6.1 Příkaz MessageDlg ........................................................................................................................ 34

5.6.2 Lekce_06 - přednáška ................................................................................................................... 35

5.7 Vkládání vstupních hodnot ..............................................................................................................36

5.7.1 Komponenta TEdit ........................................................................................................................ 36

5.7.2 Lekce_07 - přednáška ................................................................................................................... 37

5.8 Další komponenty ...........................................................................................................................37

5.8.1 Komponenta TPanel ..................................................................................................................... 37

5.8.2 Komponenta TCheckBox .............................................................................................................. 38

5.8.3 Komponenta TRadioButton .......................................................................................................... 38

5.8.4 Komponenta TGroupBox .............................................................................................................. 39

5.8.5 Lekce_08 - přednáška ................................................................................................................... 39

6 NAVRHOVÁNÍ DOKONALEJŠÍCH FORMULÁŘŮ ...................................................... 40

6.1 Komponenty TPageControl (TTabSheet), TListBox ...........................................................................41

6.1.1 TPageControl ................................................................................................................................ 41

6.1.2 TTabSheet ..................................................................................................................................... 41

6.1.3 TListBox ........................................................................................................................................ 42

6.1.4 Lekce_09 - přednáška ................................................................................................................... 44

6.2 Komponenta TMainMenu ...............................................................................................................44

6.2.1 Menu Designer ............................................................................................................................. 44

6.3 Ukončení aplikace klávesou Esc .......................................................................................................46

6.3.1 Lekce_10 - přednáška ................................................................................................................... 46

7 TESTOVÁNÍ A LADĚNÍ PROGRAMŮ ........................................................................... 47

7.1 Kompilátor ......................................................................................................................................47

7.2 Integrovaný debugger .....................................................................................................................47

7.2.1 Použití breakpointů ...................................................................................................................... 48

7.2.2 Provádění kódu řádek po řádku ................................................................................................... 48

7.2.3 Sledování hodnot proměnných .................................................................................................... 48

8 DATABÁZOVÉ APLIKACE .............................................................................................. 50

8.1 Databázové soubory ........................................................................................................................50

8.1.1 Databázová tabulka ...................................................................................................................... 50

8.1.2 Operace v databázových tabulkách .............................................................................................. 51

8.2 Rozhraní BDE a ODBC ......................................................................................................................52

8.2.1 BDE ............................................................................................................................................... 52

8.2.2 ODBC ............................................................................................................................................ 53

Page 5: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Studijní opora: Programování v Delphi Stránka 5 z 76

8.3 Použití databázových komponent ...................................................................................................56

8.3.1 Základy připojení databází ............................................................................................................ 56

8.3.2 Komponenta TDataSource ........................................................................................................... 57

8.3.3 Komponenta TTable ..................................................................................................................... 57

8.3.4 Komponenta TDBGrid ................................................................................................................... 58

8.3.5 Komponenta TDBNavigator .......................................................................................................... 60

8.3.6 Lekce_11 - přednáška ................................................................................................................... 61

8.4 Práce se záznamy databáze .............................................................................................................62

8.4.1 Otevření a zavření databáze ......................................................................................................... 62

8.4.2 Pohyb v záznamech ...................................................................................................................... 62

8.4.3 Navigace v cyklu ........................................................................................................................... 62

8.4.4 Modifikace a přidávání dat ........................................................................................................... 62

8.4.5 Lekce_12 - přednáška ................................................................................................................... 63

8.5 Další možnosti zobrazení záznamů tabulky .....................................................................................64

8.5.1 Zobrazení sloupců tabulky ............................................................................................................ 64

8.5.2 Přístup k polím tabulky - TDBEdit ................................................................................................. 66

8.5.3 Lekce_13 - přednáška ................................................................................................................... 67

8.6 Používání TTable .............................................................................................................................68

8.6.1 Třídění záznamů ........................................................................................................................... 68

8.6.2 Vyhledávání záznamů ................................................................................................................... 68

8.6.3 Filtrování záznamů ....................................................................................................................... 69

8.6.4 Lekce_14 - přednáška ................................................................................................................... 69

8.7 Události TTable ...............................................................................................................................70

8.7.1 Lekce_15 - přednáška ................................................................................................................... 71

8.8 Propojení tabulek Master – Detail ...................................................................................................72

8.8.1 Lekce_16 - přednáška ................................................................................................................... 74

9 POUŽITÁ LITERATURA ................................................................................................. 74

10 SEZNAM OBRÁZKŮ ......................................................................................................... 75

Page 6: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 1 - Úvod

Studijní opora: Programování v Delphi Stránka 6 z 76

1 Úvod Předkládaná studijní opora obsahuje materiály z oblasti Objektového programování v Delphi a

má sloužit jako součást pro výuku a studium v oborech informačních a komunikačních technologií

v předmětu Programování. Zahrnuje základní rozsah vstupních teoretických znalostí programování a

především praktických dovedností při používání objektů (komponent) programu Delphi a programování

v Object Pascal.

1.1 Cíle předmětu – kurzu Poskytnout studijní a testovací materiály pro výuku v předmětech Programování v oborech vyuču-

jících informační a komunikační techniky.

Při výuce jde především o praktické programování konkrétních příkladů od jednodušších po složi-

tější. Tomu je přizpůsobena i celá koncepce, kde tato studijní opora je základním průvodcem a teoretic-

kým podkladem. Každá ucelená oblast je zakončena závěrečnou kapitolou, která odkazuje na před-

náškovou lekci k probírané látce. Přednášky pak obsahují podrobné procvičování probraných kapitol a

poskytují odkazy na kompletní řešené příklady a úkoly pro samostatná řešení.

1.2 Budete znát - Studenti pochopí princip objektově orientovaného programování (OOP) a naučí se vizuálně

programovat aplikace pro MS Windows.

- Naučí se používat standardní nástroje a možnosti programu v grafickém uživatelském pro-

středí i zdrojovém kódu.

- Žáci se naučí prakticky používat základní komponenty programu tak, aby byli schopni napro-

gramovat i složitější aplikace z různých oblastí použití (především databázové aplikace).

1.3 Použité symboly

Důležité

Poznámka

Příklad

Shrnutí

Kontrolní otázka

Úkol

Klíč k řešení

Odkaz do sítě

Page 7: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 2 – Vstupní diagnostika

Studijní opora: Programování v Delphi Stránka 7 z 76

2 Vstupní diagnostika

2.1 Opakování

2.1.1 Struktura programu – základní pojmy

Co je to program

- posloupnost instrukcí (příkazů programovacího jazyka), které přikazují (říkají, předepisují) počí-tači provádět požadované akce.

- lze také říci, že je to předpis jak má počítač (OS) vyřešit požadovaný problém

Programovací jazyk

- souhrn pravidel, která přesně definují jednotlivé instrukce programu (syntaxe instrukcí) - je vázán na daný OS (W i jednotlivé verze W, Linux, …)

Jak se tvoří program

- Zdrojový tvar – programovací jazyk obsahuje většinou vlastní editor, ve kterém se napíší in-strukce programu

- překladač – přeloží zdrojový program do strojového kódu počítače a tím vytvoří spustitelný tvar programu. Při překladu se zjišťují syntaktické chyby zdrojového programu (jinak překlad nepro-běhne a spustitelný tvar není vytvořen)

- Spustitelný tvar – překladačem přeložený program, který lze spustit na počítači. Nejznámější příponou spustitelného tvaru je EXE – tedy NázevProgramu.EXE

- Syntaxe programu – věcná správnost zápisu instrukcí v daném prg. jazyku (ještě nezaručuje správnou fci programu)

- Sémantika programu – správná fce programu (z logického pohledu – program provádí to co má) - Interpretační jazyky – překlad se provádí až při provádění instrukcí programu (je to pomalé a

náročné na počítač – HTML, dříve Paradox)

2.2 Programátorský způsob myšlení Při řešení daného programu (programování) každý programátor napíše program jinak, i když se

jedná o stejnou problematiku – vždy existuje více řešení jedné úlohy. Může to být odvislé od :

- analýzy úlohy (může dělat programátor ale i nemusí – analytik) - vývojového diagramu – podrobnost a účelnost zpracování diagramu

Cílem probíraných témat je:

- nastínění postupu výuky a seznámení žáků s budoucími požadavky pro úspěš-

né zvládnutí látky,

- zjistit úroveň teoretických znalostí a dovedností žáků

- pochopit (zopakovat) základní pojmy, jako:

� co je program a programovací jazyk

� jak se tvoří program (zdrojový tvar, překladač, spustitelný

tvar, syntaxe a sémantika programu, interpretační jazyky)

- programátorský způsob myšlení (opakování) – základní podklady pro progra-

mování (analýza, vývojové diagramy, koncepce programu)

Page 8: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 2 – Vstupní diagnostika

Studijní opora: Programování v Delphi Stránka 8 z 76

- zkušenost a znalosti programátora (i analytika) Shrňme to pod název Programátorský způsob myšlení. Programátor musí mít nebo si vytvořit ta-

kové podklady, které mu umožní:

- správné řešení daného problému (dobrá analýza) - rozdetailovat si řešenou úlohu tak, aby vytvořený vývojový diagram byl dobrým podkladem pro

programování (podrobný vývojový diagram má blízko k instrukcím programovacího jazyka) - definovat přehlednou koncepci programu (vývojový diagram) – vhodná posloupnost instrukcí,

volba cyklů, volba procedur a funkcí. Pro rozsáhlé programy (projekty) zvolit jednotný systém Názvosloví jednotlivých podprogramů, komponent programů, jednotlivé úlohy programu (okna - formuláře) by měly používat stejné univerzální funkce (vyhledávání, nápověda, nabídkové menu, třídění, …)

Page 9: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 3 – Úvod do programování ve Windows

Studijní opora: Programování v Delphi Stránka 9 z 76

3 Úvod do programování ve Windows

3.1 Programovací jazyky – vývoj programování

3.1.1 Řady instrukcí

Za „starých časů“ se program skládal z dlouhé řady instrukcí, které říkaly počítači provedení kon-

krétních posloupností akcí.

Programy se zvětšovaly a rostla jejich složitost, bylo obtížné se ve velkém množství instrukcí orien-

tovat – hledání a odstraňování chyb – časově náročné – zvýšení nákladů na tvorbu a údržbu.

Jazyky – Basic, Assembler.

3.1.2 Procedurální programování

Instrukce / příkazy jsou uspořádány do skupin, které provádějí jeden úkon zvaný procedura. (ještě

přistupuje funkce, která je pouze jiným způsobem volání procedury – viz. dále Delphi).

Proceduru si můžeme představit jako skupinu instrukcí plnící daný úkol (např. spočítat vzorec –

DPH, vystavit dokument – fa, objednávku, vytisknout dokument - fa, objednávku, …), který se vícekrát

opakuje !!! Tzn., procedura / funkce se naprogramuje jednou – odladí se (vychytají se chyby) – a pak ji

lze použít opakovaně v jednom programu nebo i v jiném programu.

Např. vytvoříme proceduru, která k názvu města automaticky přiřadí PSČ – na faktury. Tuto pro-

ceduru můžeme použít i pro zpracování objednávky (město – PSČ) v jiném programu (a nemusíme psát

instrukce znovu).

Procedurální programování zjednodušilo programovací postupy:

- při tvorbě programů (menší počet instrukcí – velikost programu) - při ladění programů (lepší orientace při procházení / vyhledávání v programu) - při odstraňování chyb - rychlost provádění programu

Zásadou se stalo (a platí dodnes) – která programová sekvence se opakuje, zapsat ji do procedury

/ funkce

Jazyky – Pascal (Turbo), Clipper, FoxPro, …

- Probírané tematické oblasti:

- historický vývoj způsobů programování,

- programovací jazyk Pascal.

- Co je OOP,

- Objekty – Třídy – Vlastnosti - Metody,

- Cílem probíraných témat je, aby žák zvládl:

- orientovat se v historickém vývoji způsobů programování (řady in-

strukcí, procedurální programování, OOP)

- zásady objektově orientovaného přístupu k programování

- orientovat se v pojmech dědičnost, třídy, zapouzdření, polymorfis-

mus

- pochopit vlastnosti objektů – atributy a chování, metody a události

Page 10: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 3 – Úvod do programování ve Windows

Studijní opora: Programování v Delphi Stránka 10 z 76

3.1.3 Objektově orientované programování - OOP

Procedurální programování bylo revolucí v psaní programů, ale stále tu byl problém – skutečný

svět je uspořádán do objektů a ne do procedur !

Obecně si můžeme říct, že všechno v okolním světě se skládá z věcí (dům, předměty kolem nás,

zboží, formulář, …).

Odborně se věc označuje jako objekt.

OOP je programovací přístup používající oddělené objekty a tvořící stavební bloky aplikace (for-

mulář, text, tlačítko, tabulka, menu, …)

Objektově orientované jazyky :

- C++ - Java - Delphi

3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech:

- dědičnost - třídy - polymorfismus

3.2.1 Objekty Řekli jsme si, že si svět můžeme představovat jako soubor jednotlivých objektů. Složité věci (apli-

kace) rozdělíme na objekty a díky nim vidíme detaily, které nás zajímají. Jakýkoliv objekt si můžeme po-

psat dvěma skupinami vlastností:

- Atribut je charakteristikou objektu

Objekt Člověk má např. jméno, příjmení, výšku, váhu, atd.. – jsou to atributy všech lidí.

Objekt Formulář má např. velikost (výška – šířka), barva pozadí, barva textu, kolonky, …

- Chování je činnost, kterou je objekt schopen provádět

Objekt Člověk může sedět, chodit, ležet, běhat, …

Objekt Formulář se může editovat, vkládat nový záznam, tisknout, prohlížet, …

3.2.2 Dědičnost Dědičnost je důležitou vlastností OOP. Představuje způsob, který jeden objekt získá atributy a

chování jiného objektu – zdědí jeho vlastnosti.

Je možnost vytvářet nové objekty zachovávající si vlastnosti a chování svých předků. Vytvoříme

nějaký obecnější objekt a z něj pak nějakého (nějaké) následovníka, který zdědí základní vlastnosti svého

předka a navíc mu přidáme další specifičtější (podrobnější) vlastnosti. Ušetří se množství psaného pro-

gramového kódu – ten se převezme a již se nepíše znovu.

Ilustrace dědičnosti:

Člověk

- Příjmení + jméno - Rodné číslo - Adresa

Student

VŠ SŠ

- Doklad o studiu - Typ školy

- Název školy - Adresa školy - Obor studia

Page 11: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 3 – Úvod do programování ve Windows

Studijní opora: Programování v Delphi Stránka 11 z 76

3.2.3 Třídy Třída je šablona, která deklaruje atributy a definuje metody (chování) skutečných objektů.

Třída obvykle charakterizuje vlastnosti a chování několika velmi podobných objektů.

Např. objekty typu Tlačítka jsou sdruženy do nějaké základní třídy TButtons, která deklaruje obec-

né vlastnosti (velikost a barva tlačítka) a definuje metody (zda může být tlačítko za určitých podmínek

funkční / nefunkční nebo viditelné / neviditelné,…). TButtons je hierarchicky nadřízena podtřídám jed-

notlivých konkrétních tlačítek – např. podtřída pro tlačítko s obrázkem (TBtn1) nebo bez obrázku

(TBtn2).

Mezi třídami pak funguje dědičnost.

Page 12: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 12 z 76

4 Začínáme programovat v Delphi Delphi je programovací nástroj pro vývoj aplikací od firmy Borland, který byl uveden v roce 1995.

Navazuje na původně velmi rozšířený Turbo Pascal, zde nazývaný Object Pascal. Delphi je charakterizo-

ván jako RAD (Rapid Aplication Development – rychlý vývoj aplikací) umožňující poskládat aplikaci z ho-

tových naprogramovaných částí - komponent (objektů).

Delphi je tedy objektově orientované, komponentově založené vizuální vývojové prostředí.

Pojem vizuální říká, že aplikace se vytváří výběrem vizuálních komponent z Palety komponent a je-

jich umístěním do formuláře (okna) aplikace. Na základě tohoto vizuálně-grafického řešení Delphi auto-

maticky vygeneruje zdrojový kód programu.

4.1 Vývojové prostředí Delphi

Při naší práci budeme používat verzi Delphi 2006.

4.1.1 Instalace Turbo Delphi 2006 Pro instalaci je žákům zapůjčen CD disk a je vhodné dodržet doporučený postup:

- před vlastní instalací samotného programu Turbo Delphi 2006 je třeba nainstalovat některé pro-gramové komponenty, jež Delphi využívá při své práci

- pokud byste tyto požadované programy nenainstalovali předem, budete na to při vlastní instala-ci Turbo Delphi 2006 upozorněni a instalace neproběhne

- proto je na zapůjčeném CD postup rozdělen do 7mi kroků, jimž odpovídá 7 očíslovaných složek – v tomto pořadí je třeba instalaci provádět – viz. obrázek.

- každá složka může obsahovat více instalačních souborů, které je třeba postupně spustit

- Probírané tematické oblasti:

- popis grafického uživatelského rozhraní a základní význam a použití

nástrojů a objektů:

� řídící panel

� seznam komponent

� formulář aplikace – okno

� Object Inspektor

� zdrojový kód

� vizuální programování – zdrojový kód

- kompilace a spuštění programu

- Cílem probíraných témat je, aby žák zvládl:

- seznámit se s vývojovým prostředím Delphi a možnostmi jeho zá-

kladního nastavení

- umět používat hlavní části vývojového prostředí a znát jejich vý-

znam při vytváření aplikací – řídící panel, formulář aplikace, seznam

komponent, Object Inspektor, vizuální grafický mód a zdrojový kód

- překlad (kompilaci) zdrojového kódu a spuštění aplikace

Page 13: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 13 z 76

- poslední krok – složka 7 …… obsahuje licenční soubor REG736.TXT, který umožní nainstalovaný program Turbo Delphi 2006 na Vašem PC spouštět – tento soubor musí být zkopírován podle používané platformy operačního systému takto:

- Windows 95/98 (single-user): C:\Windows, - Windows 95/98 (multi-user): C:\Windows\Profiles\<username>, - Windows NT: C:\WINNT\Profiles\<username>, - Windows 2000/XP: C:\Documents and Settings\<username>, - Windows Vista: C:\Users\<username>, - kde <username> je uživatelské jméno (účet) pod kterým se přihlašujete do Windows.

Postup instalace dle pořadí jednotlivých instalačních složek:

Obrázek 1 - obsah instalačního CD

Obrázek 2 - instalační složka 1-2_dotNETRedist

Page 14: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 14 z 76

Obrázek 3 - instalační složka 3_dotNETSDK

Obrázek 4 - instalační složka 4_dotNETJSharp

Obrázek 5 - instalační složka 5_MSXML

Page 15: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 15 z 76

Lekce_00 - přednáška

Problematika Kapitoly 4.1.1 je probrána na e-learningové podpoře v kurzu Programování

v Delphi v tématu Lekce_00:

1) soubor Lekce_00 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Obrázek 7 - instalační složka 6_Turbo Delphi 2006

Obrázek 6 - instalační složka 7_Delphi 2006 licence

Page 16: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 16 z 76

4.1.2 Spuštění Delphi 2006

Po instalaci Turbo Delphi 2006 nalezneme program na tlačítku Start - všechny programy:

Pro snadnější spuštění je vhodné vytvořit zástupce na ploše:

nebo na panelu Rychlé spuštění:

4.1.3 Grafické uživatelské rozhraní Po spuštění Delphi 2006 se zobrazí okno Integrovaného vývojového prostředí (Integrated Develo-

pment Environment –IDE) s Úvodní stránkou (1)

Obsah zobrazených částí okna pomáhá nastavit rozbalovací okno

Desktop speedsetting (2). Budeme používat nastavení Default Layout, které

zobrazuje pro nás důležitá podokna:

• Object Inspektor (3) – zde je možno nastavovat a měnit vlast-

nosti aktuálních komponent a ošetřovat události těchto kom-

ponent.

• Tool Palette (4) – obsahuje seznam nainstalovaných komponent utříděný do skupin, kte-

ré lze používat při tvorbě formuláře aplikace.

• Structure (5) – zobrazuje hierarchii zdrojového kódu

• Project Manager (6) - zobrazuje přehled a organizaci projektu (formuláře, soubory, ob-

jekty, ...)

Podrobný obsah jednotlivých oken – viz následující kapitoly

(1)

(2)

(3)

(4)

(5) (6)

Obrázek 8 - základní uživatelské prostředí Turbo Delphi

Page 17: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 17 z 76

4.2 Struktura aplikací v Delphi

4.2.1 První projekt v Turbo Delphi - Spustíme program Turbo Delphi - zobrazí se Grafické vývojové prostředí - uvítací stránka – popisy / nápověda

a) k vytvoření projektu je možno použít tlačítek New Project nebo New

- Pak ze zobrazené nabídky zvolit ikonu VCL Forms Application

b) nebo zvolit nabídku File / New / VCL Forms Application:

- Probírané tematické oblasti:

- popis a význam souborů, které jsou vytvářeny při tvorbě aplikací

v Delphi:

� projekt

� unit

� soubory typu –, dpr, pas, dfm, aj.

- Cílem probíraných témat je, aby žák zvládl:

- vytvořit, uložit a editovat Projekt a Unit

- poznat základní soubory vytvářené při tvorbě aplikace (bdsproj, dpr,

pas, dfm, exe, …) a znát jejich význam

- kompilace a spuštění programu

Page 18: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 18 z 76

4.2.2 Projekt a Unit v Delphi - Po vytvoření nového formuláře dle bodů a) nebo b) v předchozí kapitole se zobrazí grafické uži-

vatelské prostředí:

- Takto Delphi vytvořilo vlastně prázdný formulář, který již tvoří prázdné okno se všemi náleži-

tostmi, jak je známe z Windows (aniž bychom napsali jediný řádek programového kódu) - Aplikace (program) je v základním nastavení pojmenována Projekt1 a spustíme ji vyvoláním pře-

kladače (kompilátoru Object Pascalu) jedním z následujících způsobů (na řídícím panelu):

- Program Projekt1 je spuštěn v klasickém okně Windows:

- Všechna tlačítka záhlaví okna jsou funkční

Obrázek 9 - Projekt a formulář v Delphi

Page 19: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 19 z 76

4.2.3 Soubory vytvářené v Delphi - Standardně (pokud nezadáme vlastní cestu pro ukládání souborů) se soubory ukládají sem:

C:\Users\Uživatelské jméno\ Documents\ Borland

Studio Projects\

- Po překladu prázdného formuláře tato složka obsahuje následující soubory:

- Pokud bychom chtěli nyní uložit celou naši práci (přesto, že jsme skoro nic neudělali), můžeme

to udělat přes nabídku File / Save All nebo na tlačítko Save All

na řídícím panelu

Page 20: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 20 z 76

- Ukládání proběhne ve dvou krocích:

1) Nejprve se ukládá Unit do standardní složky – nic neměňte a potvrďte Uložit

2) Pak se ukládá Project do standardní složky – nic neměňte a potvrďte Uložit

- P

o

-

Page 21: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 21 z 76

- díváme se, co se změnilo ve standardní složce pro ukládání souborů Delphi – názvy souborů jsou

zde zobrazeny s příponami:

Obrázek 10 - standardní složka s vytvořenými soubory

Z vytvořených souborů nás nejvíce zajímají:

- Project1.dpr - zdrojový soubor hlavního programu. Poklepáním na tento soubor se ote-vře Delphi s programem Projekt1 a v záložce Project1 je zobrazen zdrojový tvar projektu.

- Project1.bdsproj - obsahuje informace potřebné k vytvoření (kompilaci) projektu. Poklepá-ním na tento soubor se otevře Delphi s programem Projekt1 a v záložce Project1 je zobrazen zdrojový tvar projektu (stejně jako u DPR).

Dříve než budeme pokračovat, definujme si dva základní pojmy, ze kterých se

skládá aplikace v Delphi:

1) Projekt – je vlastně název programu (aplikace vytvořené v Delphi). Soubo-

rem tohoto jména se program spouští a toto jméno se zobrazuje u ikony

spuštěného programu. Projekt se skládá z Unit (formulářů).

2) Unita – jednotka reprezentující formulář programu. Může se zobrazovat

vizuálně jako formulář, na který se vkládají komponenty a nebo formuláři

odpovídající zdrojový kód v Pascalu. Mezi těmito dvěma zobrazeními se

nejrychleji přepneme klávesou <F12>.

Page 22: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 22 z 76

- Project1.exe - spustitelný tvar hlavního programu. Poklepáním na tento soubor se otevře program Projekt1 v okně Windows – program je spuštěn.

- Unit1.pas - zdrojový tvar objektu Form1 (formuláře), který je obsažen v hlavním pro-gramu (projektu). Může jich být více.

4.3 Formulář

4.3.1 Vytvoření a význam formuláře Z předchozí kapitoly víme, že formulář je vlastně okno a že jej Delphi vytvoří automaticky po ote-

vření nového projektu. Formulář je první objekt, se kterým se při práci s Delphi setkáme. A protože kaž-

dý objekt v OOP je charakterizován svými vlastnostmi a událostmi, týká se to i objektu Form.

Po překladu projektu a jeho spuštění se zobrazí okno aplikace – hlavní formulář programu. Pokud

bychom náš formulář ponechali ve výchozím stavu (jak jej vytvoří Delphi), má funkční tlačítka v pravém

horním rohu a tomu odpovídající systémovou nabídku v levém horním rohu - vypadá takto:

Ukázkové příklady - naleznete na e-learningové podpoře v kurzu Programování v Delphi v tématu

Lekce_01:

1) Všechny soubory vytvořeného programu Project1 obsahuje soubor L01_Projekt.zip, který

rozbalte a zkopírujte si do libovolné složky a otestujte v Delphi.

2) Výpisy zdrojových tvarů výše uvedených souborů programu Project1 naleznete v souboru

L01_Projekt1_zdroje.pdf

- Probírané tematické oblasti:

- Formulář:

� Jeho vytvoření a význam

� Základní vlastnosti

- Cílem probíraných témat je, aby žák zvládl:

- Pracovat s formulářem

- Nastavit základní vlastnosti objektu Form (jako – název a nadpis,

barvu, zobrazení a umístění na obrazovce, ...)

- Práci s formulářem ve vizuálním zobrazení

Page 23: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 23 z 76

Pokud chceme vložit místo textu Form1 v záhlaví smysluplný text (třeba název programu), nebo

ovlivnit barvu či velikost a umístění okna, můžeme to provést nastavením Vlastností formuláře.

4.3.2 Základní vlastnosti formuláře - Pro vybraný objekt Form1 se v okně Object Inspektor na záložce Properties zobrazí jeho do-

stupné vlastnosti, které lze editovat:

- Obsah záložky Properties může být setříděn dvěma způsoby, které se dají zvolit kliknutím pra-

vým tlačítkem myši na záložce Properties / Arrange :

- Chceme-li získat nápovědu k dané vlastnosti, vybereme ji v Object Inspektoru a stisneme <F1>

(nápověda je v angličtině)

- Ukažme si dále několik základních vlastností objektu Form (v zásadě platí i většinu dalších kom-

ponent používaných v Delphi, ale i v jiných programovacích jazycích):

Page 24: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 24 z 76

a) Vlastnost Name

- Každý objekt má automaticky přiděleno jednoznačné jméno ve vlastnosti Name (např. pro

formulář to může být Form1, 2, ..., které dosadí Delphi). Toto jméno můžeme změnit

b) Vlastnost Caption

- Zadání titulku formuláře

- Tuto vlastnost má velké množství komponent (objektů)

c) Vlastnost Color

- Lze nastavit barvu formuláře dle nabídky – každá barva je definována konstantou cl...

d) Vlastnost BorderIcons

- Nastaví zobrazení tlačítek (ikon) v záhlaví okna formuláře dle přiřazení True / False

e) Vlastnost BorderStyle

- Nastaví formát záhlaví formuláře

- Ovlivní možnost změny velikosti okna

Page 25: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 4 – Začínáme programovat v Delphi

Studijní opora: Programování v Delphi Stránka 25 z 76

f) Vlastnosti Height a Width

- Udávají výšku a šířku okna formuláře (v bodech)

g) Vlastnosti Left a Top

- poloha levého horního rohu okna formuláře při zobrazení na monitoru

- určuje počet bodů umístění od levého horního rohu obrazovky monitoru

h) Vlastnost Align

- umístění a velikost okna formuláře na monitoru

- výběr z nastavení umístění formuláře:

- alNone - umístění dle Left a Top a

okno lze přesouvat

- alBottom – dolní okraj obrazovky

- alClient – celá obrazovka

- alCustom – zobrazené okno nelze přesouvat (ještě viz. Left a Top)

- alLeft – levý okraj obrazovky

- alRight – pravý okraj obrazovky

- alTop – horní okraj obrazovky

4.4 Lekce_01 - přednáška

Problematika Kapitoly 4 je probrána na e-learningové podpoře v kurzu Programování v Delphi

v tématu Lekce_01:

1) soubor Lekce_01 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Page 26: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 26 z 76

5 Použití komponent Komponenty jsou v Delphi stavební prvky (objekty), ze kterých se „skládá“ (vytváří) aplikace.

Komponenty v Delphi jsou založeny na objektovém modelu a jsou uspořádány do knihovny vizuálních

komponent (VCL – Visual Component Library).

V Delphi existují dva typy programátorů: vývojáři aplikací a tvůrci vizuálních komponent. My se

zařadíme k prvním z nich.

Součástí instalace Delphi je dodání velkého množství základních komponent, které lze používat

v grafickém uživatelském prostředí. Vývojář aplikací tedy dokáže používat existující komponenty a měl

by tedy vědět, jaké Vlastnosti, Události a Metody jsou dostupné pro příslušný objekt – komponentu.

5.1 Přehled použití základních komponent

5.1.1 Paleta komponent – Tool Palette Vizuální i nevizuální komponenty, které jsou nainstalovány v Deplhi jsou pro použití zobrazeny na

paletě komponent – Tool Palette. Je to samostatné okno, které je klasicky zobrazeno v pravém dolním

rohu vizuálního prostředí Delphi. Komponenty jsou zde seskupeny do charakteristických oblastí (Stan-

dard, Additional, Win32, ...). Komponenty těchto skupin se zobrazí rozkliknutím příslušné skupiny – viz.

následující obrázek pro skupinu Standard:

- Probírané tematické oblasti:

- umístění základních komponent do formuláře a nastavení jejich

vlastností

- práce s tlačítky a jejich událostmi

- používání hlášení

- přijímání vstupních údajů od uživatele

- komponenty pro grafické ztvárnění formuláře

- Cílem probíraných témat je, aby žák zvládl:

- umístit standardní komponenty (Label, Memo, CheckBox, RadioBut-

ton, ListBox, ComboBox, Panel) do formuláře, nastavit a změnit jejich

vlastnosti

- používat různá tlačítka (Button, BitBtn, SpeedButton) a pracovat

s jejich událostmi (OnClick)

- dokázat měnit vlastnosti komponent za běhu aplikace

- vytvořit formulář s možností výběru volby (CheckBox, RadioButton)

a sdružení přepínacích tlačítek do skupin (GroupBox, RadioGroup) –

např. jednoduchý textový editor

- vytvořit formulář pro zadávání, ověřování a zpracování vstupních

dat (komponenta Edit, příkaz ShowMessage, MessageDlg)

- vytvořit formulář pro zpracování jednouchých výpočtů – např. vý-

počet obsahu a objemu obdélníka, jednoduchý kalkulátor, apod.

-

Page 27: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 27 z 76

Požadovanou komponentu můžeme umístit na formulář několika způsoby:

- Vybereme komponentu v Tool Palette a pak klikneme do oblasti formuláře

- Poklepeme na komponentu v Tool Palette a ta se automatiky umístí na formulář

- Vybereme komponentu v Tool Palette a přetáhneme ji myší na formulář

5.2 Komponenta TLabel - Slouží pro vložení uživatelem definovaného textu na formulář

- Z Tool Palette vybereme komponentu (objekt) TLabel a pomocí myši ji umístíme na formulář

Form1.

- Umístěný objekt je na formuláři zvýrazněn rámečkem s textem Label1, který ve výchozím nasta-

vení odpovídá jménu komponenty (vlastnost Name).

- Jméno komponenty (vlastnost Name) automaticky nastavuje Delphi a my je měnit nebudeme

- Na formuláři vybraná (ohraničená) komponenta Label1 je zobrazena v Structure a Object Inspec-

tor – viz. následující obrázek.

Obrázek 11 - Paleta komponent

Page 28: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 28 z 76

Nastavení základních vlastností komponenty TLabel:

a) Vlastnost Name

- Každý objekt má automaticky přiděleno jednoznačné jméno ve vlastnosti Name (např. pro

TLabel to může být Label1, 2, ..., které dosadí Delphi). Toto jméno můžeme změnit

b) Vlastnost Caption

- Sem se zadá požadovaný text

5.2.1 Lekce_02 - přednáška

Problematika Kapitoly 5.2 je probrána na e-learningové podpoře v kurzu Programování v Delphi

v tématu Lekce_02:

1) soubor Lekce_02 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Obrázek 12 – Práce s komponentou TLabel

Page 29: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 29 z 76

5.3 Komponenty tlačítek Velmi důležitou a často používanou součástí formulářů jsou tlačítka. Přehledně nám nabízejí něja-

kou akci na formuláři (vložení, rušení, výpočet, vyvolání nového formuláře, atd.). Tlačítek je několik dru-

hů, mnohdy se lišících jen nepatrně (barevné řešení, umístění ikony, aj.) – komponenty tlačítek tedy

mohou mít stejné nebo i odlišné vlastnosti a události.

Uvedeme si tři základní typy tlačítek, které standardní vybavení Deplhi nabízí a s těmito při naší

práci vystačíme:

- TButton

- TSpeedButton

- TBitBtn

5.3.1 Tlačítko – komponenta TButton - Na ToolPalette ji nalezneme ve skupině Standard

- Při umístění na formulář má vlastnost Caption standardně Button1 (Button2, Button3, ...) a

podle toho, jaký text chceme na tlačítku mít, ji můžeme změnit

Obrázek 13 - práce s komponentou TButton

- Základní Vlastnosti TButton jsou obdobné vlastnostem ostatních komponent (např. TLabel)

- Pro nastavení TButton jsou rozhodující vlastnosti:

- Font

- Height, Width

- Left

- Align

- Enabled, Visible

- TabStop, TabOrder

- Hint, ShowHint

- Všechny tyto vlastnosti obsahují také komponenty TSpeedButton a TBitBtn

Page 30: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 30 z 76

5.3.2 Tlačítko – komponenta TSpeedButton - Na ToolPalette ji nalezneme ve skupině Additional

- Při umístění na formulář má vlastnost Caption standardně prázdnou a podle toho, jaký text

chceme na tlačítku mít, ji můžeme doplnit

Obrázek 14 - práce s komponentou TSpeedButton

5.3.3 Tlačítko – komponenta TBitBtn - Na ToolPalette ji nalezneme ve skupině Additional

- Při umístění na formulář má vlastnost Caption standardně BitBtn1 (BitBtn2, BitBtn3, ...) a podle

toho, jaký text chceme na tlačítku mít, ji můžeme změnit

Obrázek 15 - práce s komponentou TBitBtn

Page 31: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 31 z 76

5.3.4 Další vlastnosti TSpeedButtnon a TBitBtn - Jak již bylo řečeno, TSpeedButtnon a TBitBtn mají základní vlastnosti sejné jako TButton

- Z dalších vlastností, které TSpeedButtnon a TBitBtn mají navíc uvedeme:

- Glyph – vložení obrázku ikony na tlačítko. K tomu musíme mít k dispozici obrázek ikony

- Layout – nastavení vzájemného uspořádání textu (Caption) a ikony (Glyph)

- Uveďme ještě jednu vlastnost, kterou má pouze TBitBtn:

- Kind – druh tlačítka - určuje výchozí zobrazení tlačítka

- Dodatečně lze Caption změnit na libovolný text

Page 32: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 32 z 76

5.3.5 Lekce_03 - přednáška

5.4 Object Pascal Na začátku kapitoly 4 jsme se dozvěděli o Turbo Pascalu a jeho implementace do Delphi jako Ob-

ject Pascal. Je zde také zmínka o tom, že Delphi na základě grafického návrhu automaticky vygeneruje

zdrojový kód v Object Pascalu.

Při programování v Delphi však nelze spoléhat pouze na takto vygenerovaný kód. Můžeme a mu-

síme umět programový kód ovlivňovat, psát vlastní posloupnosti instrukcí, rozumět deklaracím a in-

strukcím, atd.

Abychom mohli např. obsluhovat události komponent, musíme se seznámit se základy Turbo Pas-

calu. Pro naše programování půjde skutečně o základy. V první části poznáme:

- Komentáře

- Proměnné

- Typy proměnných

- Testování podmínek

Principy uvedených základů byste měli již znát z předmětu Algoritmizace a programování, takže to

bude pro Vás opakování.

5.4.1 Lekce_04 - přednáška

Problematika Kapitoly 5.3 je probrána na e-learningové podpoře v kurzu Programování v Delphi

v tématu Lekce_03:

1) soubor Lekce_03 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Problematika Kapitoly 5.4 je probrána na e-learningové podpoře v kurzu Programování v Delphi

v tématu Lekce_04:

1) soubor Lekce_04 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Page 33: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 33 z 76

5.5 Tlačítka – událost OnClick

5.5.1 Události komponent Když uživatel provede nějakou činnost s komponentou (např. na ni klikne, nebo do ní přesune

psací kurzor, atd.), generuje tato komponenta nějakou událost.

Tak jako existují společné obecné vlastnosti všech nebo většiny komponent (např. Caption, Color,

Font, aj. – viz. předchozí kapitoly), existují i základní události, které jsou přiřazeny všem nebo většině

komponent.

Seznam událostí, které může obsloužit daná komponenta nalezneme v okně Object Inspectoru na

záložce Events (události). Pro komponentu Button1 máme k dispozici tyto události:

5.5.2 Událost OnClick - Chceme-li, aby kliknutí myší na tlačítko na formu-

láři mělo nějakou odezvu, musíme tomuto tlačít-

ku definovat událost OnClick. Provedeme to tak,

že poklepeme myší v pravém sloupci u události

OnClick – událost se automaticky pojmenuje (zde

Button1Click). Současně je ve zdrojovém kódu

projektu vygenerována procedura, kam doplníme

kód pro „obsloužení“ události kliknutí na tlačítko.

5.5.3 Lekce_05 - přednáška

Problematika Kapitoly 5.5 je probrána na e-learningové podpoře v kurzu Programování v Delphi

v tématu Lekce_05:

1) soubor Lekce_05 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Page 34: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 34 z 76

5.6 Dialogový box s hlášením Velmi často potřebujeme zobrazit nějaké hlášení, případně hlášení s nabídkou nějakého dialogu

jako odpověď na toto hlášení.

5.6.1 Příkaz MessageDlg Dále si ukážeme hlášení s dialogovým boxem, které vyvolá příkaz MessageDlg. Protože je to funk-

ce, může vracet nějakou definovanou hodnotu, na základě které lze řídit další chod programu.

Zjednodušená syntaxe:

function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgBut-

tons; 0): vrácená hodnota;

- kde:

- string - je textový řetězec, který bude zobrazen v hlášení

- TMsgDlgType – typ zobrazovaného hlášení:

Hodnota Zobrazené dialogové okno

mtWarning

mtError

mtInformation

mtConfirmation

mtCustom Okno zprávy neobsahuje bitmapu. V záhlaví okna bude ti-

tulek s názvem aplikace (exe souboru)

- TMsgDlgButtons – tlačítka, která budou zobrazená v hlášení

Hodnota TM-sgDlgBtn

Odpovídající vrácená hodnota

mbOk mrOk

mbOK mrOk

mbCancel mrCancel

mbYes mrYes

Page 35: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 35 z 76

mbNo mrNo

mbAbort mrAbort

mbRetry mrRetry

mbIgnore mrIgnore

mbAll mrAll

mbNoToAll mrNoToAll

mbYesToAll mrYesToAll

5.6.2 Lekce_06 - přednáška

Problematika Kapitoly 5.6 je probrána, spolu s příklady použití, na e-learningové podpoře

v kurzu Programování v Delphi v tématu Lekce_06:

1) soubor Lekce_06 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Page 36: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 36 z 76

5.7 Vkládání vstupních hodnot Často potřebujeme zadat do programu nějaké vstupní údaje, které program zpracuje. Aby tedy

program dokázal od uživatele získat nějaké vstupní hodnoty, potřebujeme komponentu, která umožní

vkládat text (např. prostřednictvím klávesnice). Na vkládání jednořádkového textu použijeme kompo-

nentu TEdit.

5.7.1 Komponenta TEdit - Na ToolPalette ji nalezneme ve skupině Standard

- Při umístění na formulář se komponenty standardně jmenují a zobrazují text Edit1 (Edit2, Edit3,

...), což zde není dáno vlastností Caption, ale vlastností Text

Standardní vlastnosti, jak je známe z TLabel, např.:

- Color,

- Font,

- Height, Width,

- Left, Top,

- Align,

- Enabled, Visible,

- TabOrder, TabStop

Přehled některých dalších zajímavých vlastnosti komponenty TEdit:

- Text - slouží k zadávání textu do komponenty (nahrazuje Caption, která zde není)

- MaxLength - maximální počet zadaných znaků do Text

- ReadOnly - pouze pro čtení = true / pro přepisování = false

Poznámka:

Je třeba si uvědomit, že takto získané vstupní hodnoty (text) jsou ve formátu textového řetězce

a takto s ním musíme pracovat. Pro výpočty s čísly musíme používat numerické převody, jak

bude ukázáno v následující kapitole 5.8.

Obrázek 16 - práce s komponentou TEdit

Page 37: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 37 z 76

5.7.2 Lekce_07 - přednáška

5.8 Další komponenty V této lekci budou probrány další užitečné komponenty (např. TPanel, TCheckBox, TRadioButton,

TGroupBox, TMemo). Na příkladech procvičíme jejich použití ve spojení s již probíranými komponenta-

mi, především pak ukázky technik číselných výpočtů a zobrazování jejich výsledků.

5.8.1 Komponenta TPanel - Na ToolPalette ji nalezneme ve skupině Standard

- Při umístění na formulář se komponenty standardně jmenují a zobrazují Panel1 (Panel2, Panel3,

...), což lze změnit ve vlastností Caption

- Na Panel můžeme umísťovat další komponenty (např. tlačítka) a získáme tím oddělenou oblast

na formuláři

- Z vlastností stojí za zmínku Align, která vhodně umístí objekt Panel na formulář

Problematika Kapitoly 5.7 je probrána, spolu s příklady použití, na e-learningové podpoře

v kurzu Programování v Delphi v tématu Lekce_07:

1) soubor Lekce_07 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Obrázek 17 - práce s komponentou TPanel

Page 38: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 38 z 76

5.8.2 Komponenta TCheckBox - Na ToolPalette ji nalezneme ve skupině Standard

- Při umístění na formulář se komponenty standardně jmenují a zobrazují CheckBox1 (CheckBox2,

CheckBox3, ...), což lze změnit ve vlastnosti Caption

- Komponenta se používá jako zaškrtávací políčko např. pro výběr z nabízených možností

- Vlastnost Checked - rozhoduje o tom, zda je pole zaškrtnuté (true) / nezaškrtnuté (false). Ve

spuštěné aplikaci se zaškrtnutí / nezaškrtnutí automaticky mění myší.

5.8.3 Komponenta TRadioButton - Na ToolPalette ji nalezneme ve skupině Standard

- Při umístění na formulář se komponenty standardně jmenují a zobrazují RadioButton1 (Radio-

Button2, RadioButton3, ...), což lze změnit ve vlastností Caption

- Komponenta se používá jako označovací políčko např. pro výběr jedné možnosti z několika nabí-

zených možností

Vlastnost Checked - viz komponenta CheckBox

Obrázek 18 - práce s komponentou TCheckBox

Obrázek 19 - práce s komponentou TRadioButton

Page 39: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 5 – Použití komponent

Studijní opora: Programování v Delphi Stránka 39 z 76

5.8.4 Komponenta TGroupBox - Na ToolPalette ji nalezneme ve skupině Standard

- Při umístění na formulář se komponenty standardně jmenují a zobrazují GroupBox1 (Group-

Box2, GroupBox3, ...), což lze změnit ve vlastností Caption

- Komponenta se používá jako vyhrazená oblast (obdobně jako Panel) pro oddělení určité skupiny

komponent (často CheckBoxy nebo RadioButtony)

- Komponenta obsahuje běžné, nám již známé, vlastnosti. Použití je obdobné jako TPanel, využí-

vejme vlastnost Align

5.8.5 Lekce_08 - přednáška

Problematika Kapitoly 5.7 je probrána, spolu s příklady použití, na e-learningové podpoře

v kurzu Programování v Delphi v tématu Lekce_08:

1) soubor Lekce_08 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

2) Lekce_08 – přednáška.pdf obsahuje ukázky výpočtů, kde je procvičeno použití všech

dosud probíraných komponent na praktických příkladech. Pro práci s čísly je zde ukázá-

no použití příkazů Val, IntToStr a FloatToStr.

3) Soubor L08_cvičení.zip obsahuje řešení zadaných úkolů na procvičování. Mj. je zde

ukázka na použití formátování výstupních číselných hodnot příkazem FloatToStrF.

Obrázek 20 - práce s komponentou TGroupBox

Page 40: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 6 – Navrhování dokonalejších formulářů

Studijní opora: Programování v Delphi Stránka 40 z 76

6 Navrhování dokonalejších formulářů V této kapitole si ukážeme, jak navrhovat aplikace (formulář) tak, aby jejich grafické rozhraní bylo

uživatelsky přívětivější. O využívání barev objektů jsme se již zmínili dříve, zde navážeme některými dal-

šími komponentami a jejich vlastnostmi a událostmi.

- Probírané tematické oblasti:

- vícestránkové dialogové boxy na formuláři

- vlastní plovoucí nápověda

- doplnění projektu o nabídky

- tvorba a zacházení s menu

- ukončení aplikace klávesou Esc

- Cílem probíraných témat je, aby žák zvládl:

- použití vícestránkových boxů (PageControl) se záložkami (TabSheet)

na formuláři

- vlastnosti komponent Hint a ShowHint

- doplnit formulář o nabídky menu (MainMenu, MenuItem)

- použije Menu Designer a nastaví události pro reakce na příkazy me-

nu

- položkám menu přiřadí klávesové zkratky

- vlastnost Cancel komponent TButton a TBitBtn

Page 41: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 6 – Navrhování dokonalejších formulářů

Studijní opora: Programování v Delphi Stránka 41 z 76

6.1 Komponenty TPageControl (TTabSheet), TListBox V této kapitole si ukážeme, jak postupovat, když chceme umístit na formulář několik záložek.

Formulář je variabilní s přehlednými oblastmi, které tvoří relativně samostatné či provázané podformu-

láře.

Dále umístíme do záložek novou komponentu pro zápis textových seznamů. Tento textový seznam

uložíme do souboru TXT, který dokážeme znovu načíst do formuláře.

6.1.1 TPageControl Komponentu nalezneme v Tool Palette v sekci Win32. Je to vlastně oblast (plocha), na kterou se

mohou umístit jednotlivé stránky záložek (viz. dále).

6.1.2 TTabSheet Kliknutím pravým tlačítkem myši na objekt PageControl se zobrazí

nabídka, ze které vybereme New Page. Tím vložíme stránku záložky. Stan-

dardně obsahuje text TabSheet1, který změníme ve vlastnosti Caption, jak

ukazuje následující obrázek:

Na plochu TabSheet1 lze vkládat libovolné další komponenty

Pro vložení dalších záložek předchozí postup opakujeme. Ve formuláři je pak jedna záložka zobra-

zována jako výchozí, což se nastavuje v komponentě PageControl ve vlastnosti ActivePage – viz. následu-

jící obrázky:

Obrázek 21 - umístění PageControl1 na plochu formuláře nastavením vlastnost Align = alClient

Obrázek 22 - vložení záložky TabSheet1 do PageControl

Page 42: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 6 – Navrhování dokonalejších formulářů

Studijní opora: Programování v Delphi Stránka 42 z 76

6.1.3 TListBox Komponentu nalezneme v Tool Palette v sekci Standard. Slouží pro vytváření textových řádků do

seznamů.

1) Pro statické vypsání seznamu použijeme vlastnost Items, která zobrazí okno textového editoru.

Sem zapíšeme požadovaný seznam – viz. následující obrázek:

Page 43: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 6 – Navrhování dokonalejších formulářů

Studijní opora: Programování v Delphi Stránka 43 z 76

Vytvořený seznam se pak přepíše do komponenty ListBox1:

2) Dynamický zápis do seznamu

Chceme-li do ListBoxu zapisovat záznamy za běhu programu (např. převzít vstupní zadané údaje),

musíme použít metodu Add pro vlastnost Items. Např. pro vložení textu na konec seznamu v ListBoxu

z komponenty Edit bude syntaxe příkazu:

ListBox1.Items.Add(Edit1.Text);

3) Dynamické vymazání seznamu

Chceme-li vymazat celý seznam v ListBoxu, použijeme metodu Clear pro vlastnost Items se syntaxí

příkazu:

ListBox1.Items.Clear;

4) Dynamické vymazání požadovaného řádku seznamu

Je třeba zadat číslo řádku, který chceme v ListBoxu zrušit, pak rušení provedeme příkazem:

ListBox1.Items.Delete(CisloRadku+1);

5) Dynamické vymazání aktuálního řádku seznamu

Chceme-li ze seznamu ListBoxu zrušit řádek, na kterém je umístěn kurzor, musíme nejprve zjistit

index tohoto řádku příkazem: Rdk := ListBox1.Items[ListBox1.ItemIndex];

a následně tento řádek zrušit příkazem: ListBox1.Items.Delete(ListBox1.Items.IndexOf(Rdk));

Obrázek 23 - textový editor pro vlastnost Items komponenty ListBox

Page 44: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 6 – Navrhování dokonalejších formulářů

Studijní opora: Programování v Delphi Stránka 44 z 76

6) Uložení seznamu do textového souboru

Chceme-li seznamu z ListBoxu uložit (vyexportovat) do textového souboru, použijeme příkaz:

ListBox1.Items.SaveToFile('jméno_souboru.txt');

- Soubor se uloží do složky, odkud se spouští program (pro jiné uložení se musí definovat ces-

ta do požadované složky)

7) Načtení existujícího textového souboru

Chceme-li existující textový soubor vložit (importovat) do ListBoxu , použijeme příkaz:

ListBox1.Items.LoadFromFile('jméno_souboru.txt');

- Soubor se hledá ve složce, odkud se spouští program (pro jiné uložení se musí definovat ces-

ta do požadované složky)

6.1.4 Lekce_09 - přednáška

6.2 Komponenta TMainMenu Velmi rozšířeným prvkem uživatelského rozhraní je v aplikacích pro Windows pruh s menu. Dále si

ukážeme jednu z možností, jak v Delphi takovéto nabídkové menu vytvořit a naprogramovat.

Komponenta TMainMenu není sama o sobě vizuální (není ve spuštěném okně vidět), ale jejím

prostřednictvím a Menu Designeru můžeme jednoduše vytvořit klasické horizontální menu s vertikálním

rozvinutím.

- Na ToolPalette ji nalezneme ve skupině Standard

Obrázek 24 - práce s komponentou TMainMenu

6.2.1 Menu Designer Je nástroj pro vytváření a úpravu menu. Otevře se při poklepání na TMainMenu nebo když na tuto

komponentu klikneme pravým tlačítkem myši a vybereme z nabídky

Problematika Kapitoly 0 je probrána na e-learningové podpoře v kurzu Programování v Delphi

v tématu Lekce_09:

1) soubor Lekce_09 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Page 45: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 6 – Navrhování dokonalejších formulářů

Studijní opora: Programování v Delphi Stránka 45 z 76

Obrázek 25 - postup zápisu položek do MainMenu1

- Do Caption můžeme zapisovat text pro menu do sloupců a v rámci nich do řídků:

- Doplníme řádky do prvního sloupce menu:

- Chceme-li některému řádku přiřadit klávesovou zkratku, nastavíme jeho vlastnost ShortCut:

- Chceme-li některému řádku přiřadit podmenu, klikneme na něj pravým tlačítkem myši a z na-

bídky zvolíme – Create Submenu

Lze použít & pro klávesovou zkratku –

zde Alt+S:

Page 46: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 6 – Navrhování dokonalejších formulářů

Studijní opora: Programování v Delphi Stránka 46 z 76

Obrázek 26 - vytvoření podmenu v MainMenu

6.3 Ukončení aplikace klávesou Esc Okno aplikace můžeme standardně zavírat dle konvence Windows kliknutím na křížek v pravém

horním rohu nebo stisknutím kombinace kláves Alt+F4. Tyto dvě možnosti můžeme jednoduše doplnit i

o stisknutí klávesy Esc.

- Na formulář je vhodné umístit tlačítko BitBtn s vlastnostmi:

- Kind = bkClose

- Caption – chceme-li změnit text na tlačítku

- Do události OnClick na tomto tlačítku dáme příkaz pro zavření formuláře:

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Close; //zavře Form1

end;

- Jestliže tlačítku BitBtn nastavíme vlastnost Cancel = true, pak stisknutí klávesy Esc odpovídá klik-

nutí myší na tlačítko pro zavření aplikace

6.3.1 Lekce_10 - přednáška

Poznámky:

1) Místo komponenty TBitBtn lze použít i TButton, která má vlastnost Cancel, namá však

Kind a Glyph (což lze obejít). Nelze zde však použít TSpeedBtn.

2) Pro zamezení nechtěného zavření aplikace stisknutím Esc omylem, je vhodné do událos-

ti tlačítka pro zavření doplnit dotaz, zda chcete aplikaci skutečně ukončit.

Problematika Kapitoly 6.2 a 6.3 je probrána na e-learningové podpoře v kurzu Programování

v Delphi v tématu Lekce_10:

2) soubor Lekce_10 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Page 47: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 7 – Testování a ladění programů

Studijní opora: Programování v Delphi Stránka 47 z 76

7 Testování a ladění programů Ukážeme si základní možnosti, jak při těchto činnostech postupovat.

7.1 Kompilátor Při vytváření programu používáme kompilátor, který z našeho zdrojového kódu vytváří spustitelný

program (přípona EXE). V průběhu kompilace je kontrolována věcná správnost zapsaných instrukcí. O

případné syntaktické chybě jste někdy informováni již v okamžiku špatného zápisu nějaké instrukce –

podtržením červenou vlnovkou a zobrazením informace o chybě v panelu Structure. Dále je ukázána

část kódu, kdy byl omylem zapsán středník navíc:

Pokud přesto spustíte překlad programu, kompilátor zjištěnou syntaktickou chybu s číslem řádku

v celém řádku označí červeně:

a v dolní části zobrazí hlášení o zjištěné chybě (s číslem řádku a popisem chyby):

7.2 Integrovaný debugger Kompilátor odhalí pouze syntaktické chyby (věcnou správnost zapsaných instrukcí), logickou

správnost fungování programu (sémantika - program dělá to co má) však neodhalí.

Čím je zdrojový kód programu složitější, tím je orientace v něm a hledání sémantických chyb těžší.

Delphi nám jako pomůcku nabízí debugger integrovaný přímo do vývojového uživatelského prostředí.

Nastavení debuggeru lze provést v menu Tools / Options... My se tím však zde zabývat nebudeme a spo-

kojíme se s jeho standardním nastavením.

Page 48: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 7 – Testování a ladění programů

Studijní opora: Programování v Delphi Stránka 48 z 76

7.2.1 Použití breakpointů Breakpointy (body přerušení) umožní pozastavit běh programu, kdykoliv dosáhne určitého řádku

kódu. Jestliže potřebujete vidět, jak se program chová v určité proceduře nebo funkci, nastavte break-

point na první řádek této rutiny. Pak můžeme procházet programový kód řádek po řádku.

Nejjednodušeji nastavíme breakpoint tak, že klikneme vlevo od požadovaného řádku v editoru

kódu (zde na řádku 91):

Opakovaným kliknutím na červený bod se breakpoint zruší.

7.2.2 Provádění kódu řádek po řádku Jakmile se program zastaví na definovaném breakpointu, můžeme si další provádění instrukcí kro-

kovat řádek po řádku.

- Použijeme-li klávesu F8 (Step Over), probíhá krokování tak, že se do případně volané procedury

či funkce provedou, ale „nevnořujeme“ se do nich (neprocházíme jejich instrukce).

- Použijeme-li klávesu F7 (Trace Into), probíhá krokování tak, že se „vnoříme“ do případně volané

procedury či funkce (procházíme i jejich instrukce).

- Při krokování můžeme také umístit kurzor v kódu na některou instrukci následující za breakpoin-

tem. Po stisku klávesy F4 se přesuneme na řádek s kurzorem a můžeme třeba krokovat dál.

- Klávesou F9 se přesuneme na další breakpoint (pokud je nastaven) nebo krokování ukončíme

(další breakpoint není nastaven).

7.2.3 Sledování hodnot proměnných Na breakpointu nebo v průběhu krokování programu můžeme v debuggeru zjišťovat (ale i měnit)

hodnoty proměnných definovaných v našem programu. Ukážeme si to na jednoduchém příkladu:

- V programu máme proceduru, která sejme dvě zadaná čísla, tyto od sebe odečte a uloží do pro-

měnné Výsledek a ten zobrazí

- Nejprve nastavíme breakpoint na začátek této procedury, pak F9 přeložíme a spustíme program

a stiskneme tlačítko na odčítání (procedura, kde máme nastaven breakpoint):

Zde je nastaven breakpoint – při spuštění programu se zde provádění instrukcí zastaví

Page 49: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 7 – Testování a ladění programů

Studijní opora: Programování v Delphi Stránka 49 z 76

1) Plovoucí nápověda hodnot

- Chceme-li zjistit hodnoty proměnných, umístíme na ně kurzor myši – v plovoucí nápovědě se

hodnota této proměnné zobrazí:

- Pro zadanou hodnotu v Edit1.Text:

- Pro zadanou hodnotu v Edit2.Text:

- Zkontrolovali jsme tak, že na vstupu jsou zadána čísla 100 a 20 (jako textové řetězce)

- Ostatní proměnné (Cislo1, Cislo2, Vysledek, Kod) neobsahují žádnou hodnotu, protože se pří-

slušné instrukce dosud neprovedly

- Stiskem F8 se přesuneme na další řádek, tím se instrukce provede a příslušná proměnná má při-

řazenou hodnotu (zde 100 je číslo ne text)

- Takto můžeme zjistit hodnoty dalších konstant

2) Okno Watch Window

Chceme-li sledovat hodnoty všech požadovaných proměnných naráz v jednom okně, musíme je

přidat do tzv. Watch listu. Provedeme to tak, že proměnnou označíme myší, zvolíme menu Run / Add

Watch... – zobrazí se např.:

- Potvrzením OK se proměnná Výsledek zapíše do Watch Listu (vložíme další proměnné)

- Po zastavení na breakpointu a odkrokování instrukcí může okno editoru vypadat takto:

Page 50: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 50 z 76

8 Databázové aplikace Podpora práce s databázemi je jednou z klíčových funkcí programování v Delphi. V této kapitole si

ukážeme základy jak přistupovat v programech k databázovým souborům, jaké můžeme použít databá-

zové komponenty a jak s těmito daty pracovat.

8.1 Databázové soubory

Pod pojmem databáze rozumíme uspořádaný soubor dat, v našem případě uložených

v elektronické podobě na disku počítače. Pro realizaci takového uložení je několik způsobů, z nichž dva

nejpoužívanější jsou:

1) Každá tabulka (a s ní související soubory – např. indexy) je jako samostatný databázový soubor

(tedy co tabulka to databáze). Patří sem např. databáze typu dBase (.DBF), Paradox (.DB), aj.

2) Uložení celé databáze do jednoho souboru, který v sobě obsahuje všechny tabulky a některé

další soubory. Patří sem např. databáze MS Access (.MDB), kterou se zde budeme zabývat.

Relačními databázemi typu Oracle, MS SQL Server, MySQL, Interbase, ap. ze zde zabývat nebude-

me, i když je možno s nimi v Delphi také pracovat.

8.1.1 Databázová tabulka Data v tabulce jsou uspořádána do řádků a sloupců.

Řádek – tvoří jeden záznam tabulky.

Sloupce – jsou datová pole definující jednotlivá data v záznamu (jméno, adresa, datum, částka,..)

Obrázek 27 - ukázka tabulky Pokladna databáze MS Access:

- Probírané tematické oblasti:

- rozdělení databází

- základní pojmy z teorie navrhování databází

- Cílem probíraných témat je, aby žák zvládl:

- rozdělení databází – typu dBase, relační databáze, relační databázo-

vé systémy

- pojmy databáze a tabulky – jejich struktura a vytváření

- operace na databázových datech (vkládání, editace, rušení záznamů)

Page 51: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 51 z 76

Obrázek 28 - struktura datových polí tabulky Pokladna:

8.1.2 Operace v databázových tabulkách Jakmile máme vytvořenou databázovou tabulku (definovanou strukturu datových polí – sloupce a

uloženy záznamy – řádky), můžeme s ní provádět různé akce, jako:

- Přesouvat se mezi záznamy (první, poslední, následující, předchozí)

- Editovat jednotlivá pole záznamů

- Vkládání nových záznamů

- Rušení existujících záznamů

- Třídit záznamy dle různých kritérií

- Nastavovat relace (vazby) mezi několika tabulkami

- ...

Page 52: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 52 z 76

8.2 Rozhraní BDE a ODBC

8.2.1 BDE Databázové aplikace v Delphi nemají přímý přístup k datovým zdrojům (tabulkám), na které se

odkazují. Delphi k jednotlivým databázím přistupuje prostřednictvím BDE (Borland Database Engine).

Ten musí být v počítači nainstalován (při instalaci Delphi nebo samostatně). BDE má přímý přístup

k mnoha datovým zdrojům – např. dBase, Paradox, Access - pomocí příslušných ovladačů. BDE může

pracovat i se serverovými SQL databázemi jako Oracle, MS SQL Server, InterBase, atd.

BDE se většinou hodí na jednoduché lokální databázové aplikace. Pro nás je důležité, že BDE spo-

lupracuje i s ODBC, prostřednictvím kterého se můžeme připojit třeba k databázi MS Access (i když přes

BDE to jde taky), kterou budeme používat v našich příkladech.

Pro náročné (třeba síťové) aplikace možno používat OLE připojení přes ADO komponenty.

Přehled datového přístupu v Delphi:

BDE Administrator nalezneme v Ovládacích panelech – jeho nastavením se však zde nebudeme

věnovat.

Databázová aplikace v Delphi

BDE

Borland Database Engine

dBase Paradox SQL Links

Oracle MS SQL Server ...

Access ODBC

Access

dBase

FoxPro

Paradox

SQL Server

...

OLE

- Probírané tematické oblasti:

- přístup Delphi k databázím

- Borland Database Engine

- nastavení ODBC

- Cílem probíraných témat je, aby žák zvládl:

- nastavit rozhraní pro přístup programu k základním typům databází

(např. Access)

Page 53: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 53 z 76

8.2.2 ODBC Open Database Connectivity (ODBC) je technologie, kterou programy ve Windows využívají pro

přístup k celé řadě databází (obecně zdrojům dat). Pomocí technologie ODBC můžete například naim-

portovat data z databáze MySQL do tabulky aplikace Microsoft Excel, nebo v našem případě databázi

Access do aplikace Delphi. Abyste to mohli provést, musí být v počítači nainstalován správný ovladač

ODBC a musí v něm být také k dispozici zdroj dat.

Správce ODBC vyvoláme přes Ovládací panely nebo přes Nápovědu nebo ze složky Win-

dows\System32\odbcad32.exe.

Karta Ovladače zobrazuje informace o ovladačích technologie ODBC, které jsou nainstalovány v

počítači. Karta neumožňuje provedení žádné akce. Ovladače technologie ODBC je možné přidat nebo

odebrat pouze pomocí instalačního programu příslušného ovladače pro požadovanou databázi.

Karty Uživatelské DSN, Systémové DSN a Souborové DSN slouží k přidání, odstranění a nastavení

zdrojů dat s názvy DSN (Data Source Name).

Obrázek 29 - Správce zdrojů dat ODBC - karta Ovladače

Obrázek 30 - Správce zdrojů dat ODBC - karta Uživatelské DSN

Page 54: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 54 z 76

Nyní si ukážeme, jak přidat databázi Access do uživatelských zdrojů dat:

- Ve složce C:\Databáze máme databázový soubor DB_Access_pokus.mdb

- Dle předchozího obrázku Obrázek 30 klikneme na tlačítko Přidat...

Obrázek 31 - vytvoření nového zdroje dat pro databázi MS Access

- Ze seznamu nainstalovaných ovladačů vybereme Microsoft Access Driver (.mdb) a klikneme

na Dokončit

- Dle následujícího obrázku vyplníme Název zdroje dat a Popis (ten není povinný)

Obrázek 32 – Krok 1 - nastavení nového zdroje ODBC pro MS Access

- Pro přiřazení databáze klikneme na tlačítko Vybrat. Zde vybereme databázi

C:\Databáze\DB_Access_pokus.mdb – viz následující obrázek:

Page 55: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 55 z 76

Obrázek 33 - Krok 2 - výběr databáze pro konfigurované ODBC

- Klikneme na tlačítko OK

- Cesta ke zvolené databázi se zapíše do oblasti okna Databáze:

Obrázek 34 - Krok 3 - vytvořená konfigurace ODBC

- Po kliknutí na OK se naše databáze zapíše do uživatelských zdrojů dat

Obrázek 35 – Krok 4 - zobrazení nového ODBC v Uživatelských DSN

- Takto jsme si připravili zdroj dat s názvem DB_A_pokus pro naši práci v Delphi – viz dále.

Page 56: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v

8.3 Použití databázových komponent

Delphi obsahují velké množství komponent, které pracují s

zuální, protože řeší databázová napojení, přiřazení tabulek

te za jejich pomoci zobrazit, navigovat a editovat databázové záznamy.

8.3.1 Základy připojení databázíAbychom mohli v Delphi připojit databázi,

nenta TDataSource. Tato komponenta se na vlastní data odkazuje prostřednictvím komponent

nebo TQuery. Prostřednictvím DataSource se připojují i vizuální komponenty (např. z Data Controls).

Schematicky lze vazby mezi nimi vyjádřit takto:

- Probírané tematické oblasti:

- základní databázové komponenty Delphi

- otvírání a zavírání databázových tabulek

- pohyb v záznamech

- přístup k polím tabulky

- Cílem probíraných témat je, aby žák zvládl:

- používat základní databázové komponenty (DataSource, Table, D

Grid, DBNavigátor)

- pro práci s Dataset volat metody Open() a Close() nebo nastavit

vlastnost Aktive; metody First(), Last(), Next(), Prior() a využívat

vlastnosti BOF a EOF

- přistupovat k

vlastnosti Fields

- používat cykly při práci s

- vytvořit formuláře pro aplikace s

tabulkové zobrazení záznamů (DBGrid) či detailní zobrazení zázn

mu (DBEdit) s jednoduchými výpočty ve sloupcích a řádcích

Nevizuální komponenty

Obrázek 36 - komponen-ty pro připojení databáze

Databázové aplikace

Programování v Delphi

Použití databázových komponent

Delphi obsahují velké množství komponent, které pracují s databázemi. Některé z

zuální, protože řeší databázová napojení, přiřazení tabulek, atd. Další komponenty jsou vizuální a můž

te za jejich pomoci zobrazit, navigovat a editovat databázové záznamy.

Základy připojení databází Delphi připojit databázi, musíme použít datový zdroj, který představuje komp

. Tato komponenta se na vlastní data odkazuje prostřednictvím komponent

Prostřednictvím DataSource se připojují i vizuální komponenty (např. z Data Controls).

Schematicky lze vazby mezi nimi vyjádřit takto:

Probírané tematické oblasti:

základní databázové komponenty Delphi

otvírání a zavírání databázových tabulek

záznamech – navigace a vyhledávání

polím tabulky

probíraných témat je, aby žák zvládl:

používat základní databázové komponenty (DataSource, Table, D

Grid, DBNavigátor)

pro práci s Dataset volat metody Open() a Close() nebo nastavit

vlastnost Aktive; metody First(), Last(), Next(), Prior() a využívat

vlastnosti BOF a EOF

přistupovat k jednotlivým polím záznamů dle jejich jména nebo

vlastnosti Fields[]

používat cykly při práci s tabulkami

vytvořit formuláře pro aplikace s databázovými tabulkami

tabulkové zobrazení záznamů (DBGrid) či detailní zobrazení zázn

mu (DBEdit) s jednoduchými výpočty ve sloupcích a řádcích

Vizuální komponenty

Stránka 56 z 76

databázemi. Některé z nich jsou nevi-

, atd. Další komponenty jsou vizuální a může-

, který představuje kompo-

. Tato komponenta se na vlastní data odkazuje prostřednictvím komponent TTable

Prostřednictvím DataSource se připojují i vizuální komponenty (např. z Data Controls).

používat základní databázové komponenty (DataSource, Table, DB-

pro práci s Dataset volat metody Open() a Close() nebo nastavit

vlastnost Aktive; metody First(), Last(), Next(), Prior() a využívat

jednotlivým polím záznamů dle jejich jména nebo

mi tabulkami – např.

tabulkové zobrazení záznamů (DBGrid) či detailní zobrazení zázna-

mu (DBEdit) s jednoduchými výpočty ve sloupcích a řádcích

Page 57: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 57 z 76

8.3.2 Komponenta TDataSource Jak již bylo řečeno, TDataSource představuje provázání na datový zdroj.

- Na Tool Palette ji nalezneme v sekci Data Access

Obrázek 37 - práce s komponentou TDataSource

- Propojení nastavíme vlastností DataSet – šipka nabízí výběr ze všech TTable nebo TQuery,

které jsou umístěny na formuláři – na obrázku máme pouze Table1.

- Každá TTable nebo TQuery musí mít vlastní TDataSource (DataSource1, 2, 3, ...), ke kterému

je připojena.

8.3.3 Komponenta TTable Nejjednodušší způsob jak připojit databázi je použití TTable.

- Na Tool Palette ji nalezneme v sekci BDE

Obrázek 38 - práce s komponentou TTable

- Vlastnost DatabaseName – indikuje jméno databáze, kterou chceme použít. Lze zadat dvě-

ma různými způsoby:

Page 58: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 58 z 76

1) Zadat přímo cestu složky, kde je uložena databáze nebo databázové tabulky. Pro náš

případ by se použila cesta . Tento způsob je sice

možný, ale z důvodu univerzálnosti nepraktický. Jestliže byste změnily uložení databáze

do jiné složky, museli byste cestu změnit i ve vlastnosti DatabaseName a program znovu

přeložit (což můžete udělat Vy jako autor, ale třeba u uživatele vašeho programu to ne-

lze).

2) Pokud jsme si vytvořily název pro svou databázi v OBDC (viz 8.2.2), použijeme tento ná-

zev ve vlastnosti DatabaseName. Je-li vše správně nainstalováno, nalezneme toto jméno

po rozbalení šipky u této vlastnosti:

- Vlastnost TableName – Object Inspector po rozbalení šipky vypíše dostupné tabulky aktuální

databáze (dle DatabaseName) – naše DB_A_pokus obsahuje:

- Vlastnost ReadOnly – tabulka bude pro editaci (=false) nebo pouze pro čtení (=true)

- Ostatní vlastnosti si ukážeme dále na příkladech.

8.3.4 Komponenta TDBGrid Na formuláři máme tedy nastaveny komponenty DataSource1 a Table1. Jak jsme řekli, tyto kom-

ponenty nejsou vizuální, takže po překladu nebudou v běžícím programu vidět). Komponenta TBDGrid je

vizuální a umožní nám klasické zobrazení tabulky (řádky, sloupce).

- Na Tool Palette ji nalezneme v sekci Data Controls

- Zatím jedinou vlastnost, kterou na DBGrid potřebujeme nastavit je DataSource – po rozba-

lení šipky vybereme DataSource1. Tím jsme se navázali na Table1 (tj. tabulka Seznam_ceny)

Obrázek 39 - práce s komponentou TDBGrid

- Aby se zobrazil obsah tabulky, musíme u komponenty Table1 nastavit vlastnost Active =

true (tzv. otevře tabulku)

Page 59: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 59 z 76

- Návrhové zobrazení pak vypadá takto:

- Po překladu a spuštění programu vypadá formulář takto:

Pro přihlášení k databázi

klikněte pouze na OK

Obrázek 40 - návrhové zobrazení formuláře s databázovou tabulkou

Obrázek 41 - překlad a spuštění programu s databázovou tabulkou

Page 60: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 60 z 76

8.3.5 Komponenta TDBNavigator Slouží pro jednoduchou navigaci databázové tabulky.

- Na Tool Palette ji nalezneme v sekci Data Controls

- Zatím jedinou vlastnost, kterou na DBNavigator potřebujeme nastavit je DataSource – po

rozbalení šipky vybereme DataSource1. Tím jsme se navázali na Table1:

- Vlastnost VisibleButtons – rozhoduje o tom, která tlačítka budou na navigátoru zobrazena:

Jdi na první záznam

Jdi na předchozí záznam

Jdi na následující záznam

Jdi na poslední záznam

Vlož nový prázdný záznam na aktuální pozici

Smaž aktuální záznam

Umožni editaci aktuálního záznamu

Ulož změny, které se vykonaly při editaci

Zruš změny, které se nastavily při editaci

Občerstvení záznamu z databáze

Obrázek 42 - práce s komponentou TDBNavidator

Page 61: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 61 z 76

- Jestliže nastavíte vlastnost ShowHint = True, zobrazí se popis funkce tlačítka, když na ně

umístíte myš. Standardně jsou to anglická hlášení, ale můžete je počeštit ve vlastnosti Hints

ve String Editoru

8.3.6 Lekce_11 - přednáška

Problematika Kapitoly 8.3 je probrána na e-learningové podpoře v kurzu Programování v Delphi

v tématu Lekce_11:

1) soubor Lekce_11 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Page 62: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 62 z 76

8.4 Práce se záznamy databáze Databázové komponenty mají v sobě některé akce naprogramovány, takže je můžeme okamžitě

používat, aniž bychom je programovali – např. TTable (vlastnost Active otevírá databázi), TDBNavigátor

(všechna potřebná tlačítka pro základní operace).

Přesto s tím někdy nevystačíme a potřebné události si musíme obsloužit sami. Proto si dále uká-

žeme a popíšeme příkazy pro manipulaci s databázemi.

8.4.1 Otevření a zavření databáze Pro otevření databáze jsme si již ukázali vlastnost Active komponenty TTable, která by se do pro-

gramu zapsala takto: Table1.Active := true;

Pokud to chceme zapsat do programového kódu jinak, zavoláme metodu Open() takto:

Table1.Open();

Po skončení práce s databází ji můžeme zavřít adekvátně dvěma způsoby:

- Nastavením vlastnosti: Table1.Active := false;

- nebo metodou: Table1.Close();

8.4.2 Pohyb v záznamech Pro pohyb v záznamech máme několik základních metod:

- První záznam: First();

- Poslední záznam: Last();

- Následující záznam: Next();

- Předchozí záznam: Prior();

- O daný počet vpřed/vzad: MoveBy(x) kde x je celé číslo

Vlastnosti BOF a EOF pro zjištění, zda jsme na začátku nebo konci databáze:

- Je-li Table1.BOF=true, pak se nacházíme na 1. záznamu databáze (po otevření)

- Je-li Table1.EOF=true, pak se nacházíme na posledním záznamu databáze

- Tyto vlastnosti využíváme při procházení databází v cyklech (viz dále)

8.4.3 Navigace v cyklu Jestliže potřebujeme postupně procházet každý záznam databáze (např. do každého záznamu za-

psat pořadové číslo), pak nejpoužívanější metodou je cyklus while – not – EOF.

Obecný zápis příkazu cyklu:

While not Table1.EOF do begin //dokud nejsme na konci databáze, proveď

Příkaz; //příkazy pro práci se záznamy

Příkaz;

... atd.

Table1.Next; //skok na další záznam

End;

//po ukončení procházení (konec databáze) pokračujeme dalšími příkazy

8.4.4 Modifikace a přidávání dat Abychom mohli editovat položky aktuálního záznamu, musíme provést 3 kroky:

1) Vyvolat metodu Edit(), čímž se daná databáze přepne do editačního režimu

Page 63: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 63 z 76

2) Provést vlastní editaci položek aktuálního záznamu

3) Uložit změny do databáze voláním metody Post() nebo se přesunout na jiný záznam, což

automaticky provede Post na editovaném záznamu

Příklad: Table1.Edit;

//... příkazy pro editaci záznamu

Table1.Post;

Abychom mohli vkládat nebo přidávat záznamy do databáze, musíme provést 3 kroky:

1) Vyvolat metodu Insert() pro vkládání nebo Append() pro přidání na konec

2) Provést zápis položek nového záznamu

3) Uložit změny do databáze voláním metody Post() nebo se přesunout na jiný záznam, což

automaticky provede Post vloženého záznamu

Jestliže chceme potlačit provedené změny v editovaném záznamu nebo nechceme uložit vkláda-

ná nový záznam, nepoužijeme metodu Post(), ale použijeme Cancel().

Jestliže chceme zrušit (odstranit) aktuální záznam z databáze, použijeme metodu Delete().

8.4.5 Lekce_12 - přednáška

Problematika Kapitoly 8.3 je probrána na e-learningové podpoře v kurzu Programování v Delphi

v tématu Lekce_12:

1) soubor Lekce_12 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Page 64: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 64 z 76

8.5 Další možnosti zobrazení záznamů tabulky

8.5.1 Zobrazení sloupců tabulky V komponentě TDBGrid dokážeme zobrazit datová pole (sloupce) záznamů tabulky. Pokud však

potřebujeme změnit pořadí sloupců (třeba i šířku sloupců) či text v záhlaví sloupců, můžeme využít Edi-

tor polí komponenty TTable.

Vrátíme se k zobrazení tabulky v kapitole 8.3.4 Komponenta TDBGrid a ukážeme si, jak lze praco-

vat se datovými poli (sloupci) tabulky Table1:

- Klikneme pravým tlačítkem myši na Table1 a vybereme nabídku Fields Editor:

- Fields Editor jinak vyvoláme i poklepáním na Table1

- Zobrazí se (zatím prázdný) editor polí Table1 – klikneme-li do okna pravým tlačítkem myši,

zobrazí se nabídka pro práci s poli:

a) Když vybereme Add fields... , zobrazí se okno se seznamem všech polí, která má tabulka Ta-

ble1 definována:

- a

- a vybereme pouze pole, která

chceme v DBGridu zobrazit. Výběr můžeme

provádět např. i současným označením více

polí myší při stisknuté klávese Ctrl. Pak klik-

neme na tlačítko OK.

- pokud chceme do editoru vložit všechny pole tabulky, zvolíme Add all fields...

- vybraná pole se zobrazí v Editoru, kde pro každé pole lze nastavit v Object Inspectoru jeho

vlastnosti:

Page 65: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 65 z 76

- např. pořadí zobrazovaných sloupců (polí) lze změnit přetažením myší nebo nastavením

hodnoty ve vlastnosti Index (počítáno od 0)

- další důležité vlastnosti polí:

- Aligment - zarovnání údaje v poli

- Currency - když = true, zobrazí se číslo jako měna

- DisplayFormat - textová řetězec, který formátuje zobrazení čísel

- DisplayLabel - text do záhlaví sloupce (standardně je jméno pole z tabulky)

- DisplayWidth - určuje šířku zobrazovaného pole (velikost pole v tabulce se nemění)

b) Když vybereme New Field... , máme možnost definovat do tabulky nové pole (např. pro zob-

razení dodatečného výpočtu z existujících polí tabulky). Máme výběr z několika typů nových

polí:

- Typ Calculated: - takto vytvoříme fiktivní počítané pole Poznamka s délkou 20 znaků

- Pak:

Page 66: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 66 z 76

- Typ Lookup: - takto vytvoříme fiktivní pole, které bude zobrazovat odpovídající hod-

notu z tabulky, na kterou nastavíme relaci (na formuláři komponenta Table2):

Pak:

8.5.2 Přístup k polím tabulky - TDBEdit Doposud jsme zobrazovali tabulku jako celek v DBGridu (řádky, sloupce). Jestliže chceme zobrazit

pouze pole (nemusí být všechna) některého záznamu tabulky, můžeme k tomu použít komponentu TD-

BEdit. Ta bude prostřednictví TDataSource provázána s TTable (obdobně jako TDBGrid).

- Na Tool Palette ji nalezneme v sekci Data Controls

- Zatím jedinou vlastnost, kterou na DBNavigator potřebujeme nastavit je DataSource – po

rozbalení šipky vybereme DataSource1. Tím jsme se navázali na Table1:

Page 67: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 67 z 76

Obrázek 43 - práce s komponentou TDBEdit

- Vlastnost DataField - přiřadí DBEditu datové pole z Table1. Pokud máme správně na-

staven DataSource, zobrazí se u DataField nabídka všech polí Table1:

- DBEdit je vhodné doplnit TLabel, kde se zapíše název (význam) zobrazeného pole

- Pro DBEdit funguje i DBNavigator

8.5.3 Lekce_13 - přednáška

Problematika Kapitoly 8.3 je probrána na e-learningové podpoře v kurzu Programování v Delphi

v tématu Lekce_13:

1) soubor Lekce_13 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Page 68: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 68 z 76

8.6 Používání TTable V této kapitole si ukážeme, jak dále pracovat s tabulkou – tedy používat další vlastnosti a metody

komponenty TTable.

8.6.1 Třídění záznamů Ke třídění záznamů tabulek dle požadovaných polí (sloupců) zde využijeme nastavení vlastnosti

IndexName nebo IndexFieldNames komponenty TTable. K tomu, abychom mohli tuto vlastnost využít,

musí mít tabulka předem vytvořeny indexy (indexové soubory) – tedy pro každé pole (několik polí),

podle kterého chceme seřadit záznamy, musí být definováno indexování. Má-li tabulka definován pri-

mární index, je standardně podle tohoto pole (polí) setříděna. Ostatní indexy (sekundární) musíme spe-

cifikovat.

V databázové tabulce MS Access to provedeme takto:

- Přepneme se do Návrhového zobrazení dané tabulky

Obrázek 44 - indexování polí tabulky pro třídění záznamů

Tento vytvořený index pak vybereme ve vlastnosti IndexFieldName komponenty TTable:

Dle tohoto sloupce Název majetku je pak tabulka v DBGridu setříděna.

8.6.2 Vyhledávání záznamů Na vyhledávání záznamů v tabulce TTable nabízí Delphi několik metod. My si uvedeme pouze dvě

z nich – FindKey() a FindNearest(). Obě metody předpokládají, že položka, přes kterou chceme vyhledá-

vat, je indexována.

1) FindKey() – jako parametr funkce je v hranatých závorkách zadáno kritérium pro hledání

(hodnoty hledaného pole – sloupce). V případě, že je hledaný záznam nalezen, vrací

funkce FindKey() hodnotu true, není-li nalezen, vrací false.

Příklad: if not Table1.FindKey([123]) then MessageBeep(0);

Pole Inventární číslo je definová-

no jako primární klíč

Pole Název majetku má defino-

váno indexování s duplicitou

Page 69: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 69 z 76

- Říká: vyhledej záznam, který má v indexovém poli hodnotu 123. Není-li takový záznam

nalezen, funkce vrátí false a počítač pípne.

- Při vyhledávání se hledá přesná odpovídající hodnota včetně malých a velkých písmen

2) FindNearest() – použijeme tehdy, když nemusí být vyhledání přesné podle zadání, ale

chceme vyhledat záznam s nejbližší podobnou hodnotou v indexovém poli.

Příklad: Table1.FindNearest([123])

- Není funkcí a nevrací hodnoty true ani false – vždy nejde nějaký záznam nebo zůstane

na prvním.

8.6.3 Filtrování záznamů Pod pojmem filtrování zde rozumějme zobrazení pouze záznamů tabulky, které obsahují pole

s definovanou hodnotou. Pro filtrování záznamů nabízí Deplhi opět několik metod tzv. rozsahů – Se-

tRange(), SetRangeStart(), SetRangeEnd() a ApplyRange(). Rozsahy pracují podobně jako vyhledávání

klíčů (FindKey) – včetně použití indexování. Podrobněji se rozsahy nebudeme zabývat, pouze si ukážeme

příklad: Table1.SetRange([100],[200]); - vybere pouze záznamy indexovanou hodnotou 100 až 200.

Dále si ukažme jak nastavit filtrování přímo ve vlastnostech Filter a Filtered komponenty TTable.

- Vlastnost Filter - udává kritérium, podle kterého jsou vybrány záznamy k zobrazení. Úzce

souvisí i s vlastností IndexdName (nebo IndexFieldNames), kde je definován index přísluš-

ného pole pro filtrování. Pokud není IndexFieldNames specifikováno, předpokládá se pri-

mární index tabulky.

- Vlastnost Filtered - udává, zda se má kritérium z Filter uplatnit (= true) nebo ne (= false)

- Následující příklad nastaví pro Table1 filtr pro pole Středisko a filtr aktivuje:

- Pak jsou zobrazeny pouze záznamy tabulky, kde pole Středisko je rovno s1 (standardně se

nerozlišují velká a malá písmena – lze nastavit ve vlastnosti FilterOptions)

- Uvedený příklad je ukázkou statického nastavení filtrování v Object Inspectoru Delphi. Tato

nastavení filtrování je však možno i za běhu programu (dynamicky) – zde musí být nejprve

Filtered = false, pak nastavit Filter a případně IndexFieldNames či IndexName, teprve potom

Filtered = true.

8.6.4 Lekce_14 - přednáška

Problematika Kapitoly 8.6 je probrána na e-learningové podpoře v kurzu Programování v Delphi

v tématu Lekce_14:

1) soubor Lekce_14 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Page 70: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 70 z 76

8.7 Události TTable Komponenta TTable umožňuje, prostřednictvím svých událostí, pracovat se záznamy v tabulce při

operacích jako je mazání, editace, vkládání, přesun na další záznam, při otvírání a zavírání tabulky, atd.

Názvy těchto událostí začínají slovy BeforeXXX (před) a AfterXXX (po) – kde XXX zastupuje prováděnouo-

peraci (Delete, Edit, Insert, atd.).

Obsloužením těchto událostí získáte kontrolu nad probíhajícími operacemi se záznamy a také čas-

to požadované zabezpečení proti nechtěným zásahům uživatele aplikace (např. nechtěná editace, zru-

šení záznamu omylem, aj.).

Dále si probereme a procvičíme nejčastěji používané události TTable, které nalezneme v Object

Inspectoru. Je jich celkem hodně, ale jsou poměrně jednoduché na pochopení.

Obrázek 45 - události komponenty TTable

- BeforeCancel - událost je vyvolána před provedení operace Cancel (tj. v okamžiku, kdy

chceme potlačit editaci či vkládání nového záznamu – tlačítko Cancel na DBNavigatoru

- AfterCancel - událost je vyvolána po provedení operace Cancel

- BeforeDelete - událost je vyvolána před provedení operace Delete (tj. v okamžiku, kdy

chceme smazat záznam – tlačítko Delete na DBNavigatoru

- AfterDelete - událost je vyvolána po provedení operace Delete

- BeforeEdit - událost je vyvolána před provedení operace Edit (tj. v okamžiku, kdy

chceme měnit záznam – tlačítko Edit na DBNavigatoru

- AfterEdit - událost je vyvolána po provedení operace Edit

- BeforeInsert - událost je vyvolána před provedení operace Insert (tj. v okamžiku, kdy

chceme vkládat nový záznam – tlačítko Delete na DBNavigatoru

- AfterInsert - událost je vyvolána po provedení operace Insert

Page 71: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 71 z 76

- BeforePost - událost je vyvolána před provedení operace Post (tj. v okamžiku, kdy

chceme uložit editovaný nebo nový – tlačítko Post na DBNavigatoru

- AfterPost - událost je vyvolána po provedení operace Post

- BeforeScroll - událost je vyvolána před provedení operace přechodu na jiný záznam

(tj. při použití kláves šipek ↑↓, PgUp, PgDn nebo tlačítek na DBNavigatoru

- AfterScroll - událost je vyvolána po provedení přechodu na jiný

záznam

- OnCalcFields - tato událost pracuje s poli, která byla do TTable definována jako nová

pole ve Fields Editoru jako typ počítaného pole:

Na události OnCalcFields pak můžeme provést konkrétní výpočty s těmito datovými poli.

8.7.1 Lekce_15 - přednáška

Problematika Kapitoly 8.7 je probrána na e-learningové podpoře v kurzu Programování v Delphi

v tématu Lekce_15:

1) soubor Lekce_15 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Page 72: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 72 z 76

8.8 Propojení tabulek Master – Detail Velmi často potřebujeme pracovat s tabulkami, které jsou spolu propojené relací na principu nad-

řízená a podřízená tabulka. Toto propojení tabulek se také vyjadřuje pojmy Rodič – Dítě nebo Master –

Detail.

Představme si, že máme tabulky Registr_obyvatel a Registr_dětí. V naší aplikaci pak chceme

k vybranému záznamu z Registr_obyvatel (Master) zobrazit z Registr_dětí (Detail) pouze děti příslušného

rodiče. Relační vazba mezi tabulkami je RC ->> RC_rodič (jeden rodič může mít více dětí).

V naší aplikaci musíme každé tabulce definovat komponenty TTable, TDataSource, TDBNavigator a

TDBGrid: -Table1, DataSource1, DBNavigator1 a DBGrid1 pro tabulku Registr_obyvatel

-Table2, DataSource2, DBNavigator2 a DBGrid2 pro tabulku Registr_dětí

- Pro propojení tabulek použijeme vlastnosti Table2:

- - - tlačítko nabídne okno:

Obrázek 46 - relace mezi tabulkami Rodič - Dítě

Page 73: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Kapitola 8 – Databázové aplikace

Studijní opora: Programování v Delphi Stránka 73 z 76

- Kde označíme pole (primární klíče) pro propojení a stiskneme Add

- Propojená pole se zapíší do Joined Fields:

- Po kliknutí na OK se toto propojení zapíše do vlastností Table1:

- Nyní při posouvání v záznamech tabulky Rodič zobrazují pouze Jeho děti:

Page 74: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Použitá literatura a Seznam obrázků

Studijní opora: Programování v Delphi Stránka 74 z 76

8.8.1 Lekce_16 - přednáška

9 Použitá literatura Pacheco, Teikseira Delphi. UNIS 1996

Cantú, M. Mistrovství v Delphi. Computer Press a.s. 1995

Klimeš, Skalka, Lováczová, Švec. Informatika. Nitra: Enigma 2008

Literatura byla při tvorbě studijní opory použita jako pomůcka z pohledu metodického a odborné-

ho. Na základě ní byly stanoveny postupy výuky, náplň jednotlivých kapitol a obtížnost příkladů. Z textů

použité literatury nebylo citováno, proto nejsou ve studijní opoře citace.

Informace o autorských právech a ochranných známkách:

Všechny obchodní názvy a ochranné známky jsou majetkem svých vlastníků. Ochranné známky

nebo registrované ochranné známky zmiňované v tomto dokumentu jsou uváděny pouze pro informační

a výukové účely.

Problematika Kapitoly 8.8 je probrána na e-learningové podpoře v kurzu Programování v Delphi

v tématu Lekce_16:

1) soubor Lekce_16 – přednáška.pdf, který si můžete stáhnout jako podklad k probírané

látce v konkrétních hodinách výuky

Page 75: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Použitá literatura a Seznam obrázků

Studijní opora: Programování v Delphi Stránka 75 z 76

10 Seznam obrázků Obrázek 1 - obsah instalačního CD .......................................................................................................................13

Obrázek 2 - instalační složka 1-2_dotNETRedist ...................................................................................................13

Obrázek 3 - instalační složka 3_dotNETSDK ..........................................................................................................14

Obrázek 4 - instalační složka 4_dotNETJSharp ......................................................................................................14

Obrázek 5 - instalační složka 5_MSXML ................................................................................................................14

Obrázek 6 - instalační složka 7_Delphi 2006 licence .............................................................................................15

Obrázek 7 - instalační složka 6_Turbo Delphi 2006 ...............................................................................................15

Obrázek 8 - základní uživatelské prostředí Turbo Delphi ......................................................................................16

Obrázek 9 - Projekt a formulář v Delphi ...............................................................................................................18

Obrázek 10 - standardní složka s vytvořenými soubory ........................................................................................21

Obrázek 11 - Paleta komponent ...........................................................................................................................27

Obrázek 12 – Práce s komponentou TLabel ..........................................................................................................28

Obrázek 13 - práce s komponentou TButton ........................................................................................................29

Obrázek 14 - práce s komponentou TSpeedButton ..............................................................................................30

Obrázek 15 - práce s komponentou TBitBtn .........................................................................................................30

Obrázek 16 - práce s komponentou TEdit .............................................................................................................36

Obrázek 17 - práce s komponentou TPanel ..........................................................................................................37

Obrázek 18 - práce s komponentou TCheckBox ....................................................................................................38

Obrázek 19 - práce s komponentou TRadioButton ...............................................................................................38

Obrázek 20 - práce s komponentou TGroupBox ...................................................................................................39

Obrázek 21 - umístění PageControl1 na plochu formuláře nastavením vlastnost Align = alClient .........................41

Obrázek 22 - vložení záložky TabSheet1 do PageControl ......................................................................................41

Obrázek 23 - textový editor pro vlastnost Items komponenty ListBox ..................................................................43

Obrázek 24 - práce s komponentou TMainMenu..................................................................................................44

Obrázek 25 - postup zápisu položek do MainMenu1 ............................................................................................45

Obrázek 26 - vytvoření podmenu v MainMenu ....................................................................................................46

Obrázek 27 - ukázka tabulky Pokladna databáze MS Access:................................................................................50

Obrázek 28 - struktura datových polí tabulky Pokladna: ......................................................................................51

Obrázek 29 - Správce zdrojů dat ODBC - karta Ovladače ......................................................................................53

Obrázek 30 - Správce zdrojů dat ODBC - karta Uživatelské DSN ...........................................................................53

Obrázek 31 - vytvoření nového zdroje dat pro databázi MS Access ......................................................................54

Obrázek 32 – Krok 1 - nastavení nového zdroje ODBC pro MS Access ..................................................................54

Obrázek 33 - Krok 2 - výběr databáze pro konfigurované ODBC ...........................................................................55

Obrázek 34 - Krok 3 - vytvořená konfigurace ODBC ..............................................................................................55

Obrázek 35 – Krok 4 - zobrazení nového ODBC v Uživatelských DSN ....................................................................55

Obrázek 36 - komponenty pro připojení databáze ...............................................................................................56

Obrázek 37 - práce s komponentou TDataSource .................................................................................................57

Obrázek 38 - práce s komponentou TTable ..........................................................................................................57

Obrázek 39 - práce s komponentou TDBGrid ........................................................................................................58

Obrázek 40 - návrhové zobrazení formuláře s databázovou tabulkou ..................................................................59

Obrázek 41 - překlad a spuštění programu s databázovou tabulkou ....................................................................59

Obrázek 42 - práce s komponentou TDBNavidator ...............................................................................................60

Obrázek 43 - práce s komponentou TDBEdit ........................................................................................................67

Obrázek 44 - indexování polí tabulky pro třídění záznamů ...................................................................................68

Obrázek 45 - události komponenty TTable ...........................................................................................................70

Obrázek 46 - relace mezi tabulkami Rodič - Dítě...................................................................................................72

Page 76: Delphi - modul 10 - Studijn opora - kone n verze T1 - … 10... · - Delphi 3.2 Objektové programování OOP jazyky jsou založeny na třech základních pojmech: - dědičnost -

Použitá literatura a Seznam obrázků

Studijní opora: Programování v Delphi Stránka 76 z 76

Tato studijní opora byla spolufinancována Evropským sociálním fondem a státním rozpočtem

České republiky.