Delphi Objektov orientovan programovn Programovn zen udlostmi Vlastnosti

Delphi Objektově orientované programování Programování řízené událostmi

Vlastnosti Delphi • Delphi je objektově orientovaný jazyk • Delphi umožňuje – spojovat data a kód do tříd (zapouzdření, encapsulation) – vytvářet odvozené třídy (dědičnost, inheritance) – pracovat s odvozenou třídou jako s jejím předkem (polymorfismus, mnohotvárnost) • problém chyb běhu řeší pomocí výjimek – konstrukce try – except - end

Prostředí Delphi • Delphi je také kompilátor jazyka Object Pascal s integrovaným vizuálním prostředím • obsahuje – menu s nápovědou – knihovnu komponent členěnou do sekcí (Standard, Additional, System, Dialogs…) – Object Tree View, stromová struktura objektů – Object Inspector, vlastnosti a události – Code editor, editor kódu, kde píšeme

Projekt • aplikace v Delphi se nazývá projekt • části projektu – projektový soubor – popis formuláře – unita – nastavení překladače – ikona projektu – spustitelný soubor – přeložená unita *. dpr *. dfm *. pas *. dof *. res *. exe *. dcu

Rozdělení komponent • vizuální, viditelné – většina prvků (label, edit, button…) – základní komponenta je formulář, typ TForm • nevizuální, neviditelné – slouží pro speciální akce (timer, dialogy, menu) – po spuštění na formuláři nejsou viditelné Umístěním komponenty na formulář se vytvoří její instance, v unitě se objeví nová proměnná

Přehled vizuálních komponent • form • edit • label • button • memo základ projektu vstup i výstup jednořádkového textu Edit 1. Text popisek, Label 1. Caption tlačítko, provedení akce (události) víceřádkový text , položka Lines Load. From. File, Save. To. File - soubor Clear, Add, Memo 1. Clear; Memo 1. Lines. Add(‘a‘) • image, shape obrázek, automatický tvar Picture

Přehled vizuálních komponent • spinedit číselník, lze použít i updown Spin. Edit. value: integer • posuvník, zadání číselných hodnot Scrollbar. Position: integer • checkbox, radiobutton zatržítko, přepínač checked: boolean • panel, groupbox tvorba skupin • combobox, listbox rozbalovací seznam Items k naplnění dat, Item. Index pořadí • radiogroup skupina přepínačů, Items, Item. Index

Přehled nevizuálních komponent • timer časovač, měření časového intervalu událost On. Timer (uplynutí intervalu) • mainmenu hlavní vysunovatelné menu - čára, Short. Cut je nastavení klávesové zkratky (Ctrl+S) • popupmenu kontextové menu (PT myši) • opendialog, savedialog výběr jména souborů • fontdialog výběr fontu (barva, řez, velikost) • colordialog výběr barvy při použití dialogu se používá metoda. execute if Open. Dialog 1. execute then Memo 1. Load. From. File(Open. Dialog 1. Filename)

Práce se schránkou Schránka Windows = Clip. Board • Ctlr + C – Copy. To. Clip. Board • Ctlr + X – Cut. To. Clip. Board • Ctlr + V – Paste. From. Clip. Board Nejčastěji se používá v memu. memo 1. Copy. To. Clipboard; memo 2. Paste. From. Clipboard;

Object inspector Zajišťuje spojení mezi vzhledem aplikace a jejím zdrojovým kódem • nastavení vlastností komponent v době návrhu na listu properties • manažer událostí na listu events • seznam instancí v object selektoru • vzhled Object inspectoru lze také nastavit

Object Tree View • stromový diagram objektů • hierarchicky seřadí všechny použité komponenty (vizuální i nevizuální) • některé komponenty lze umístit do jiných (dědičnost) – např. label na panel • základní komponenta je formulář typu TForm

Code editor • editor kódu je textový editor • zajišťuje přístup ke zdrojovému kódu • nabízí – našeptávače, code completion, nápovědu, (automaticky nebo po stisku Ctrl+mezera) – šablony kódu, code templates Ctrl+J – další prostředky pro pokročilé: • gutter (ladění, hledání chyb), project manager

Vlastnosti komponent Vlastnosti přístupné (v době návrhu aplikace) v nejběžnějších komponentách: – Align: zarovnání komponenty – Caption: titulek komponenty – Color: barva povrchu nebo pozadí – Cursor: určuje kurzor myši nad komponentou – Enabled: udává, zda je komponenta aktivní nebo nikoliv (je ale vždy viditelná) – Font: určuje typ písma

Vlastnosti komponent – Height: výška komponenty – Hint: řetězec pro plovoucí nápovědu – Left: vzdálenost levého horního rohu zleva – Name: jedinečné jméno komponenty (jeho změna se musí projevit při všech použitích komponenty) – Show. Hint: je povolena plovoucí nápověda? – Top: vzdálenost levého horního rohu zhora – Visible: udává, zda je komponenta viditelná – Width: šířka komponenty

Události komponent • Nejpoužívanější události – On. Change: dojde k ní při změně komponenty – On. Click: při klepnutím levým tlačítkem – On. Dbl. Click: double-click – On. Enter: aktivování komponenty (přijme focus) – On. Exit: komponenta ztrácí focus – On. Key. Press: při stisku klávesy – On. Mouse. Down: při stisku něj. tlačítka myši – On. Mouse. Move: při pohnutí myší nad komp. – On. Mouse. Up: uvolnění tlačítka myši nad komp. 2021 -10 -23 15

Programování událostí • píšeme v editoru kódu – po poklikání na komponentu nebo – po výběru události na kartě events • šablona unity se vytvoří automaticky – název procedury, parametry – begin … end; • případné lokální proměnné doplníme (do varu uvnitř těla konkrétní procedury)

Konverzní funkce Pro převod mezi formáty • Int. To. Str, Str. To. Int – mezi integer a string • Float. To. Str, Str. To. Float – mezi real a string • Date. To. Str, Str. To. Date – mezi date a string • Val(s, a, c) – převede string na cislo Val (string, cislo, pozice chyby) c = 0 – převod bez chyby, c > 0 – na pozici c je chyba Příklady: x: =Str. To. Int(Edit 1. text); Label 1. Caption: =Date. To. Str(now);

Kreslení • Kreslit lze pomocí vlastnosti Canvas s využitím Pen a Brush • Canvas. Move. To(X, Y) – počáteční bod • Canvas. Line. To(X, Y) – koncový bod • Canvas. Rectangle(xz, yz, xk, yk) • Canvas. Ellipse(xz, yz, xk, yk) • Canvas. Pen, Canvas. Brush canvas. Pen. Color: =Cl. Red; canvas. Pen. Width: =7; canvas. Rectangle(10, 100, 100);

Komponenty a jejich vlastnosti

Form – formulář • Border. Style – vzhled okraje okna • + Border. Icons – ikony v titulkovém pruhu • Caption – titulek, v titulkovém pruhu • Height, Width – výška a šířka vč. okrajů • Client. Height, Client. Width – využitelná • + Font – výběr fontu (velikost, styl, barva…) • Left, Top – souřadnice levého horního rohu • Cursor – tvar kurzoru nad formulářem

Button - tlačítko • • Caption – popisek Enabled – tlačítko je-není stisknutelné Word. Wrap – zalomení textu (true, false) Left, Top – umístění levého horního rohu Hint – nápověda (text nápovědy) Show. Hint – zobrazit nápovědu (true, false) Width, Height – šířka a výška tlačítka Visible – viditelné (true, false) Nelze změnit barvu tlačítka!

Label – textový popisek • Alignment – zarovnání horizontální (vlevo, vpravo, na střed) • Layout – zarovnání vertikální (nahoru, dolů, na střed) • Autosize – automatické přizpůsobení velikosti danému textu (true, false) • Transparent – průhledná barva

Edit – editační řádek VŽDY STRING !!! • Text – obsah editu, zadaný text – vstupní i výstupní, pro čísla je nezbytná KONVERZE • Read. Only – jen ke čtení • Password. Char – znak pro zobrazení namísto zadávaného textu (hesla…) • Copy. To. Clipboard – metoda, která zkopíruje obsah editu do schránky

Up. Down (Win 32) • • Associate – propojení s prvkem Position – aktuální hodnota Min, Max – rozsah hodnot Increment – přírůstek • Arrow. Keys – šipkové klávesy (ano/ne) • Orientation – vertikálně, horizontálně • Thousands – oddělení tisíců

Spin. Edit (Samples) • Value – hodnota (celé číslo) • Increment – přírůstek • Max. Value, Min. Value – minimální a maximální hodnota

Timer (Systém) - časovač • Interval – milisekundy • Enabled – zapíná a vypíná časovač

Image (Additional) • Picture – jméno obr. nebo cesta k němu • Autosize – rámeček se přizpůsobí (ano/ne) • Stretch – obrázek se přizpůsobí (ano/ne) Load. From. File, Save. To. File Image 1. Picture. Load. From. File(´H: vlk. jpg´) Image 1. Picture. Load. From. File(Edit 1. Text)

Animace obrázku (1) • Button, image (obr 1. bmp), globální proměnná p (do globální deklarace) – číslo načteného obrázku • Procedure TForm 1. Button 1 Click(Sender: Tobject); begin if p=1 then begin p: =2; Image 1. Picture. Load. From. File(´obr 2. bmp´) end else begin p: =1; Image 1. Picture. Load. From. File(´obr 1. bmp´) end; • Procedure TForm 1. Form. Create…. p: =1;

Animace obrázku (2) • 2 image, každý se svým obrázkem, umístit přes sebe, u jednoho nastavit výchozí Visible False, button • Procedure TForm 1. Button 1 Click(Sender: Tobject) begin Image 1. Visible: =not(image 1. Visible); Image 2. Visible: =not(image 2. Visible); end;

Shape automatický tvar (Additional) • Shape – tvar (round – kulaté rohy) • Brush – štětec – výplň – barva, styl (bs. Solid) • Pen – pero – čára tvaru Bevel rámeček (Additional) • Shape – tvar – celý nebo 1 strana • Style

Bit. Button – tlačítko s obrázkem (Additional) • • • Kind – druh tlačítka Glyph – název obrázku Layout – umístění Spacing – vzdálenost obr. od textu v bodech Style - styl tlačítka

Input. Box (funkce) – jednořádkový vstup Funkce, kterou voláme z programu, přiřadíme proměnné typu string. Funcion Input. Box(const Acaption, Aprompt, Adefault: string): string; • Acaption – titulek dialogového okna • Aprompt – titulek editačního pole • Adefault – přednastavená hodnota v editačním poli prijmeni: =Input. Box(´identifikace´, ´zadejte svoje příjmení´, ´Nováková´);

Mask. Edit (Additional) • omezení vstupního textu • Edit. Mask – předdefinovaná nebo vlastní maska (povinné: L písmeno, A písmeno nebo číslice, 0 číslice, C znak; nepovinné: l písmeno, a písmeno nebo číslice, 9 číslice, c znak), # číslice nebo + -, _ mezera • Text – obsah komponenty • Edit. Text – text formátovaný aplikací masky • Is. Masked – maska nastavena (ano/ne)

Memo (Standard) • • • víceřádkové textové okno výstupní obrazovka – více řádků typu string (pole textových řádků) Word. Wrap – zalamování řádků dle šířky okna Memo (true/false) Scroll. Bars – nastavení posuvníků Text – obsah Mema (vlastní text) Lines – řádky – obsah Mema (Add – přidá řádek na konec, Delete – vymaže řádek, Insert – vloží řádek na aktuální pozici) • Read. Only – lze/nelze měnit obsah Mema • Clear – vymaže obsah Mema (Clear. Selection – vymaže výběr) • Copy. To. Clipboard – zkopíruje výběr do schránky (Cut – vyjme, Paste. From… - vloží obsah schránky) • Select. All – označí celý obsah Mema (Sel. Text – obsahuje vybraný text, Sel. Start – pozice počátku výběru, Sel. Length – délka výběru) • Modified – změněn obsah Mema (true/false) • Load. From. File – načte obsah textového souboru, Save. To. File – uloží obsah Mema do zadaného souboru • Count – počet řádků Mema Př. Memo 1. Lines. Add(´Ahoj´)

Panel, groupbox, Radio. Group (Standard) • seskupování komponent do celku (panel je pro komponenty do něj vložené „rodičem“) Checkbox (zatržítko) – Caption, Checked (true/false) Radio. Button (přepínač) – vkládá se do speciální skupiny pomocí Radio. Group (Items – obsah skupiny přepínačů, každý na somostatném řádku, Item. Index – pořadí zvoleného přepínače – první=0, Columns – počet sloupců) • využívají se často pro příkaz CASE

Scroll. Bar (Standard) - rolovací lišta • • Kind – orientace horizontální, vertikální Min, Max – nejmenší a největší hodnota Position – pozice jezdce Small. Change – o kolik se posune jezdec při stisku koncových šipek • Large. Change - o kolik se posune jezdec při kliknutí na pruh Scroll. Baru

Seznamy – List. Box, Combo. Box (Standard) • posloupnost hodnot podobného typu, umožňuje výběr jedné nebo více položek List. Box – Items – jednotlivé položky (Strings – přístup k jednotlivým řádkům) - Item. Index – index položky, první=0, nevybráno nic = -1 - Columns – počet sloupců seznamu - Multiselect – lze/nelze vybrat najednou více položek - Sel. Count – počet najednou vybraných položek Selected – byla/nebyla vybrána položka Sorted – položky budou/nebudou setříděny (seřazeny)

Combo. Box – výběr jediné položky ze seznamu - vlastnosti podobné jako u List. Boxu, navíc vlastnost Style – ovlivňuje vzhled a chování prvku

Menu – hlavní a kontextové • komponenta Main. Menu (Standard) – nevizuální – poklikání = Menu Designer – Caption– název položky – Create Submenu – podmenu u položky (z kontextové nabídky) • komponenta Pop. Up Menu = kontextové menu – vytvořit tolikrát, kolika objektům je chceme přiřadit – přiřazení k objektu – vlastnost Popup. Menu

Dialogy • nevizuální, umožňují volání připravených dialogových oken • okno končí volbou OK nebo Cancel • dialog spouští funkce Execute, má hodnotu true, pokud uživatel potvrdil OK, false, pokud uživatel stiskl Cancel • Open. Dialog – výběr souboru do File. Name • Save. Dialog – uložení souboru z File. Name • Open. Picture. Dialog, Save. Picture. Dialog – výběr a uložení – pro soubory typu bmp, ico • Font. Dialog – zvolený Font • Color. Dialog – zvolená barva

Procedury, funkce a parametry Show. Message – vlastní zpráva - procedura Show. Message('text') - vložíme ji do tlačítka s popiskem Klikni. . . Sender – parametr – lze přetypovat - změníme jeho obecnou hodnotu z TObject na konkrétní, např. TButton Label 1. Caption: =(Sender as TButton). Caption

Procedury, funkce a parametry Val, Str. To. Int, Int. To. Str, Str. To. Float, Float. To. Str, . . . - procedury Input. Box – funkce

Výjimky • k ošetření chybových stavů • try. . . except. . . end; . . . s: string begin s: =Input. Box(´načtení souboru´, ´Jméno souboru: ´, ´´); try Memo 1. Lines. Load. From. File(s); except Showmessage(´Soubor ´+s+´ neexistuje!´); end; a podobně pro Memo 1. Lines. Save. To. File(s);

Postup tvorby programu • rozepsat si zadání: – algoritmus – potřebné komponenty • na formulář nachystat komponenty a pojmenovat je • přiřadit komponentám vlastnosti • přiřadit komponentám tělo procedur („naprogramovat je“) • uložit program • spustit program a odladit ho (uložit funkční verzi)
- Slides: 44