Vyšší odborná škola ekonomická a zdravotnická a Střední škola, Boskovice
MODUL 2: Programování v Delphi Studijní opora
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 CZ.1.07/1.1.02/01.0143 Operační program Vzdělávání pro konkurenceschopnost.
cestu
k poznání“
Boskovice 2011
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky
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
Studijní opora: Programování v Delphi
Stránka 3 z 76
5.3.4 5.3.5
Další vlastnosti TSpeedButtnon a TBitBtn .................................................................................... 31 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
Studijní opora: Programování v Delphi
Stránka 4 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
Studijní opora: Programování v Delphi
Stránka 5 z 76
Kapitola 1 - Úvod
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čují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žitější. Tomu je přizpůsobena i celá koncepce, kde tato studijní opora je základním průvodcem a teoretickým podkladem. Každá ucelená oblast je zakončena závěrečnou kapitolou, která odkazuje na přednáš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 prostředí i zdrojovém kódu. Žáci se naučí prakticky používat základní komponenty programu tak, aby byli schopni naprogramovat 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ě
Studijní opora: Programování v Delphi
Stránka 6 z 76
Kapitola 2 – Vstupní diagnostika
2 Vstupní diagnostika 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 programování (analýza, vývojové diagramy, koncepce programu)
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íší instrukce 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 neprobě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
Studijní opora: Programování v Delphi
Stránka 7 z 76
Kapitola 2 – Vstupní diagnostika 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 takové 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í, …) -
Studijní opora: Programování v Delphi
Stránka 8 z 76
Kapitola 3 – Úvod do programování ve Windows
3 Úvod do programování ve Windows - 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 instrukcí, 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í, polymorfismus - pochopit vlastnosti objektů – atributy a chování, metody a události
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í konkrétních posloupností akcí. Programy se zvětšovaly a rostla jejich složitost, bylo obtížné se ve velkém množství instrukcí orientovat – 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 proceduru 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, …
Studijní opora: Programování v Delphi
Stránka 9 z 76
Kapitola 3 – Úvod do programování ve Windows 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 (formulář, 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 (aplikace) rozdělíme na objekty a díky nim vidíme detaily, které nás zajímají. Jakýkoliv objekt si můžeme popsat 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 programového kódu – ten se převezme a již se nepíše znovu. Ilustrace dědičnosti: - Příjmení + jméno -
Člověk
-
Student
VŠ
Studijní opora: Programování v Delphi
Rodné číslo Adresa
SŠ
Doklad o studiu Typ školy
- Název školy - Adresa školy - Obor studia Stránka 10 z 76
Kapitola 3 – Úvod do programování ve Windows 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 obecné 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 jednotlivý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.
Studijní opora: Programování v Delphi
Stránka 11 z 76
Kapitola 4 – Začínáme programovat v Delphi
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 charakterizován jako RAD (Rapid Aplication Development – rychlý vývoj aplikací) umožňující poskládat aplikaci z hotový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 jejich umístěním do formuláře (okna) aplikace. Na základě tohoto vizuálně-grafického řešení Delphi automaticky vygeneruje zdrojový kód programu.
4.1 Vývojové prostředí Delphi - 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
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é programové 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í instalaci 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
Studijní opora: Programování v Delphi
Stránka 12 z 76
Kapitola 4 – Začínáme programovat v Delphi -
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. Obrázek 1 - obsah instalačního CD
Postup instalace dle pořadí jednotlivých instalačních složek:
Obrázek 2 - instalační složka 1-2_dotNETRedist
Studijní opora: Programování v Delphi
Stránka 13 z 76
Kapitola 4 – Začínáme programovat v Delphi
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
Studijní opora: Programování v Delphi
Stránka 14 z 76
Kapitola 4 – Začínáme programovat v Delphi
Obrázek 7 - instalační složka 6_Turbo Delphi 2006
Obrázek 6 - instalační složka 7_Delphi 2006 licence
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
Studijní opora: Programování v Delphi
Stránka 15 z 76
Kapitola 4 – Začínáme programovat v Delphi 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 Development 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 vlastnosti aktuálních komponent a ošetřovat události těchto komponent. • Tool Palette (4) – obsahuje seznam nainstalovaných komponent utříděný do skupin, které 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, objekty, ...) (2)
(5)
(6)
(1) (3) (4)
Obrázek 8 - základní uživatelské prostředí Turbo Delphi
Podrobný obsah jednotlivých oken – viz následující kapitoly
Studijní opora: Programování v Delphi
Stránka 16 z 76
Kapitola 4 – Začínáme programovat v Delphi
4.2 Struktura aplikací v Delphi - 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 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:
Studijní opora: Programování v Delphi
Stránka 17 z 76
Kapitola 4 – Začínáme programovat v Delphi 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živatelské prostředí:
Obrázek 9 - Projekt a formulář v Delphi
-
Takto Delphi vytvořilo vlastně prázdný formulář, který již tvoří prázdné okno se všemi náležitostmi, 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řekladač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í
Studijní opora: Programování v Delphi
Stránka 18 z 76
Kapitola 4 – Začínáme programovat v Delphi 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
Studijní opora: Programování v Delphi
Stránka 19 z 76
Kapitola 4 – Začínáme programovat v Delphi -
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
-
Studijní opora: Programování v Delphi
Stránka 20 z 76
Kapitola 4 – Začínáme programovat v Delphi
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). Souborem 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
. -
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 otevř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).
Studijní opora: Programování v Delphi
Stránka 21 z 76
Kapitola 4 – Začínáme programovat v Delphi -
Project1.exe
-
Unit1.pas
- spustitelný tvar hlavního programu. Poklepáním na tento soubor se otevře program Projekt1 v okně Windows – program je spuštěn. - zdrojový tvar objektu Form1 (formuláře), který je obsažen v hlavním programu (projektu). Může jich být více.
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
4.3 Formulář - 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í 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 otevř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:
Studijní opora: Programování v Delphi
Stránka 22 z 76
Kapitola 4 – Začínáme programovat v Delphi 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 dostupné 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 pravý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 (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 komponent používaných v Delphi, ale i v jiných programovacích jazycích):
-
Studijní opora: Programování v Delphi
Stránka 23 z 76
Kapitola 4 – Začínáme programovat v Delphi 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
Studijní opora: Programování v Delphi
Stránka 24 z 76
Kapitola 4 – Začínáme programovat v Delphi 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
Studijní opora: Programování v Delphi
Stránka 25 z 76
Kapitola 5 – Použití komponent
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 - 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, RadioButton, 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. -
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í (Standard, Additional, Win32, ...). Komponenty těchto skupin se zobrazí rozkliknutím příslušné skupiny – viz. následující obrázek pro skupinu Standard:
Studijní opora: Programování v Delphi
Stránka 26 z 76
Kapitola 5 – Použití komponent
Obrázek 11 - Paleta komponent
-
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 nastavení 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 Inspector – viz. následující obrázek.
Studijní opora: Programování v Delphi
Stránka 27 z 76
Kapitola 5 – Použití komponent
Obrázek 12 – Práce s komponentou TLabel
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
Studijní opora: Programování v Delphi
Stránka 28 z 76
Kapitola 5 – Použití komponent
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ějakou akci na formuláři (vložení, rušení, výpočet, vyvolání nového formuláře, atd.). Tlačítek je několik druhů, 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
Studijní opora: Programování v Delphi
Stránka 29 z 76
Kapitola 5 – Použití komponent 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
Studijní opora: Programování v Delphi
Stránka 30 z 76
Kapitola 5 – Použití komponent 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á - Kind – druh tlačítka - určuje výchozí zobrazení tlačítka
-
pouze TBitBtn:
Dodatečně lze Caption změnit na libovolný text
Studijní opora: Programování v Delphi
Stránka 31 z 76
Kapitola 5 – Použití komponent 5.3.5
Lekce_03 - 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
5.4 Object Pascal Na začátku kapitoly 4 jsme se dozvěděli o Turbo Pascalu a jeho implementace do Delphi jako Object 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 musíme umět programový kód ovlivňovat, psát vlastní posloupnosti instrukcí, rozumět deklaracím a instrukcím, atd. Abychom mohli např. obsluhovat události komponent, musíme se seznámit se základy Turbo Pascalu. 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.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
Studijní opora: Programování v Delphi
Stránka 32 z 76
Kapitola 5 – Použití komponent
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 formuláři mělo nějakou odezvu, musíme tomuto tlačítku 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
Studijní opora: Programování v Delphi
Stránka 33 z 76
Kapitola 5 – Použití komponent
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 funkce, 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: TMsgDlgButtons; 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 titulek s názvem aplikace (exe souboru)
TMsgDlgButtons – tlačítka, která budou zobrazená v hlášení Hodnota sgDlgBtn
TM-
Odpovídající hodnota
mbOk
mrOk
mbOK
mrOk
mbCancel
mrCancel
mbYes
mrYes
Studijní opora: Programování v Delphi
vrácená
Stránka 34 z 76
Kapitola 5 – Použití komponent
5.6.2
mbNo
mrNo
mbAbort
mrAbort
mbRetry
mrRetry
mbIgnore
mrIgnore
mbAll
mrAll
mbNoToAll
mrNoToAll
mbYesToAll
mrYesToAll
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
Studijní opora: Programování v Delphi
Stránka 35 z 76
Kapitola 5 – Použití komponent
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 komponentu 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
Obrázek 16 - práce s komponentou TEdit
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.
Studijní opora: Programování v Delphi
Stránka 36 z 76
Kapitola 5 – Použití komponent 5.7.2
Lekce_07 - 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_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
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 komponentami, 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
Obrázek 17 - práce s komponentou TPanel
-
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ář
Studijní opora: Programování v Delphi
Stránka 37 z 76
Kapitola 5 – Použití komponent 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
Obrázek 18 - práce s komponentou TCheckBox
-
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 (RadioButton2, 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í
-
Obrázek 19 - práce s komponentou TRadioButton
Vlastnost Checked
- viz komponenta CheckBox
Studijní opora: Programování v Delphi
Stránka 38 z 76
Kapitola 5 – Použití komponent 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 (GroupBox2, 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)
Obrázek 20 - práce s komponentou TGroupBox
-
5.8.5
Komponenta obsahuje běžné, nám již známé, vlastnosti. Použití je obdobné jako TPanel, využívejme vlastnost Align
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.
Studijní opora: Programování v Delphi
Stránka 39 z 76
Kapitola 6 – Navrhování dokonalejších formulářů
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 menu - položkám menu přiřadí klávesové zkratky - vlastnost Cancel komponent TButton a TBitBtn
Studijní opora: Programování v Delphi
Stránka 40 z 76
Kapitola 6 – Navrhování dokonalejších formulářů
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é podformulář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).
Obrázek 21 - umístění PageControl1 na plochu formuláře nastavením vlastnost Align = alClient
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. Standardně obsahuje text TabSheet1, který změníme ve vlastnosti Caption, jak ukazuje následující obrázek:
Obrázek 22 - vložení záložky TabSheet1 do PageControl
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 zobrazována jako výchozí, což se nastavuje v komponentě PageControl ve vlastnosti ActivePage – viz. následující obrázky:
Studijní opora: Programování v Delphi
Stránka 41 z 76
Kapitola 6 – Navrhování dokonalejších formulářů
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:
Studijní opora: Programování v Delphi
Stránka 42 z 76
Kapitola 6 – Navrhování dokonalejších formulářů
Obrázek 23 - textový editor pro vlastnost Items komponenty ListBox
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));
Studijní opora: Programování v Delphi
Stránka 43 z 76
Kapitola 6 – Navrhování dokonalejších formulářů 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 cesta 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 cesta do požadované složky) 6.1.4
Lekce_09 - přednáška 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
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
Studijní opora: Programování v Delphi
Stránka 44 z 76
Kapitola 6 – Navrhování dokonalejších formulářů 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ů:
Lze použít & pro klávesovou zkratku – zde Alt+S:
-
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 nabídky zvolíme – Create Submenu Studijní opora: Programování v Delphi
Stránka 45 z 76
Kapitola 6 – Navrhování dokonalejších formulářů 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á kliknutí myší na tlačítko pro zavření aplikace 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álosti tlačítka pro zavření doplnit dotaz, zda chcete aplikaci skutečně ukončit. 6.3.1
Lekce_10 - přednáška 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
Studijní opora: Programování v Delphi
Stránka 46 z 76
Kapitola 7 – Testování a ladění programů
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 spokojíme se s jeho standardním nastavením.
Studijní opora: Programování v Delphi
Stránka 47 z 76
Kapitola 7 – Testování a ladění programů 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 breakpoint 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):
Zde je nastaven breakpoint – při spuštění programu se zde provádění instrukcí zastaví 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í krokovat řá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 breakpointem. 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 promě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):
Studijní opora: Programování v Delphi
Stránka 48 z 76
Kapitola 7 – Testování a ladění programů 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:
Studijní opora: Programování v Delphi
Stránka 49 z 76
Kapitola 8 – Databázové aplikace
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 - 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ázové 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ů) 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 nebudeme, 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:
Studijní opora: Programování v Delphi
Stránka 50 z 76
Kapitola 8 – Databázové aplikace
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 - ...
Studijní opora: Programování v Delphi
Stránka 51 z 76
Kapitola 8 – Databázové aplikace
8.2 Rozhraní BDE a ODBC - 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) 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 spolupracuje 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:
Databázová aplikace v Delphi BDE
OLE
Borland Database Engine
dBase
Paradox
Access
SQL Links
ODBC Access
Oracle
MS SQL Server
...
dBase FoxPro Paradox SQL Server ...
BDE Administrator nalezneme v Ovládacích panelech – jeho nastavením se však zde nebudeme věnovat.
Studijní opora: Programování v Delphi
Stránka 52 z 76
Kapitola 8 – Databázové aplikace 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 naimportovat 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 Windows\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.
Obrázek 29 - Správce zdrojů dat ODBC - karta Ovladače
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 30 - Správce zdrojů dat ODBC - karta Uživatelské DSN
Studijní opora: Programování v Delphi
Stránka 53 z 76
Kapitola 8 – Databázové aplikace 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. C:\Databáze\DB_Access_pokus.mdb – viz následující obrázek:
Studijní opora: Programování v Delphi
Zde
vybereme
databázi
Stránka 54 z 76
Kapitola 8 – Databázové aplikace 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.
Studijní opora: Programování v Delphi
Stránka 55 z 76
Kapitola 8 – Databázové aplikace
8.3 Použití databázových komponent - 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 – navigace a vyhledávání - 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, DBD 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[] Fields - používat cykly při práci s tabulkami - vytvořit formuláře pro aplikace s databázovými mi tabulkami – např. tabulkové zobrazení záznamů (DBGrid) či detailní zobrazení záznazázn mu (DBEdit) s jednoduchými výpočty ve sloupcích a řádcích Delphi obsahují velké množství komponent, které pracují s databázemi. Některé z nich jsou nevizuální, protože řeší databázová napojení, přiřazení tabulek, tabulek, atd. Další komponenty jsou vizuální a můžemůž 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, musíme použít datový zdroj,, který představuje kompokomp nenta TDataSource.. Tato komponenta se na vlastní data odkazuje prostřednictvím komponent TTable 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: Nevizuální komponenty
Vizuální komponenty
Obrázek 36 - komponenty pro připojení databáze
Studijní opora: Programování v Delphi
Stránka 56 z 76
Kapitola 8 – Databázové aplikace 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
-
8.3.3
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.
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:
Studijní opora: Programování v Delphi
Stránka 57 z 76
Kapitola 8 – Databázové aplikace 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 nelze). 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 komponenty 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 rozbalení š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)
Studijní opora: Programování v Delphi
Stránka 58 z 76
Kapitola 8 – Databázové aplikace -
Návrhové zobrazení pak vypadá takto:
Obrázek 40 - návrhové zobrazení formuláře s databázovou tabulkou
-
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 41 - překlad a spuštění programu s databázovou tabulkou
Studijní opora: Programování v Delphi
Stránka 59 z 76
Kapitola 8 – Databázové aplikace 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:
Obrázek 42 - práce s komponentou TDBNavidator
-
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
Studijní opora: Programování v Delphi
Stránka 60 z 76
Kapitola 8 – Databázové aplikace -
8.3.6
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
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
Studijní opora: Programování v Delphi
Stránka 61 z 76
Kapitola 8 – Databázové aplikace
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 programu 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 zapsat 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
Studijní opora: Programování v Delphi
Stránka 62 z 76
Kapitola 8 – Databázové aplikace 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ádaná 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
Studijní opora: Programování v Delphi
Stránka 63 z 76
Kapitola 8 – Databázové aplikace
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 Editor polí komponenty TTable. Vrátíme se k zobrazení tabulky v kapitole 8.3.4 Komponenta TDBGrid a ukážeme si, jak lze pracovat 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 Table1 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 klikneme 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: Studijní opora: Programování v Delphi
Stránka 64 z 76
Kapitola 8 – Databázové aplikace
-
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
-
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í)
- když = true, zobrazí se číslo jako měna
b) Když vybereme New Field... , máme možnost definovat do tabulky nové pole (např. pro zobrazení 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:
Studijní opora: Programování v Delphi
Stránka 65 z 76
Kapitola 8 – Databázové aplikace
-
Typ Lookup: - takto vytvoříme fiktivní pole, které bude zobrazovat odpovídající hodnotu 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 TDBEdit. 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:
Studijní opora: Programování v Delphi
Stránka 66 z 76
Kapitola 8 – Databázové aplikace Obrázek 43 - práce s komponentou TDBEdit
8.5.3
-
Vlastnost DataField - přiřadí DBEditu datové pole z Table1. Pokud máme správně nastaven 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
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
Studijní opora: Programování v Delphi
Stránka 67 z 76
Kapitola 8 – Databázové aplikace
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 primární index, je standardně podle tohoto pole (polí) setříděna. Ostatní indexy (sekundární) musíme specifikovat. V databázové tabulce MS Access to provedeme takto: - Přepneme se do Návrhového zobrazení dané tabulky
Pole Inventární číslo je definováno jako primární klíč
Pole Název majetku má definováno indexování s duplicitou
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);
Studijní opora: Programování v Delphi
Stránka 68 z 76
Kapitola 8 – Databázové aplikace Ří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ů – SetRange(), 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 primá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:
-
8.6.4
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.
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
Studijní opora: Programování v Delphi
Stránka 69 z 76
Kapitola 8 – Databázové aplikace
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ěnouoperaci (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é často 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
Studijní opora: Programování v Delphi
Stránka 70 z 76
Kapitola 8 – Databázové aplikace -
-
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
Studijní opora: Programování v Delphi
Stránka 71 z 76
Kapitola 8 – Databázové aplikace
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í).
Obrázek 46 - relace mezi tabulkami Rodič - 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: Studijní opora: Programování v Delphi
- tlačítko nabídne okno: Stránka 72 z 76
Kapitola 8 – Databázové aplikace
-
-
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:
Studijní opora: Programování v Delphi
Stránka 73 z 76
Použitá literatura a Seznam obrázků
8.8.1
Lekce_16 - přednáška 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
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.
Studijní opora: Programování v Delphi
Stránka 74 z 76
Použitá literatura a Seznam obrázků
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
Studijní opora: Programování v Delphi
Stránka 75 z 76
Použitá literatura a Seznam obrázků
Tato studijní opora byla spolufinancována Evropským sociálním fondem a státním rozpočtem České republiky.
Studijní opora: Programování v Delphi
Stránka 76 z 76