OZOGAN KLONDAIK

Vývojové prostředí pro snadné programování ve Windows

Kurz obsluhy a programování

Popis synatxe jazyka KLONDAIK

Knihovna vizuálních komponent

Runtime modul pro distribuci aplikací

Novinky a změny v programu

Licenční podmínky

Program dodává a další informace poskytne:

OZOGAN, 1. Máje 97, 460 01 Liberec

telefon: (048) 52 28 338, e-mail: info@ozogan.cz.

Nové verze programu je možné získat na internetu:

http:\\www.ozogan.cz

Cena programu, způsob dodání:

Cena programu při instalaci na jeden počítač je 1 990,- Kč.

Program je možné objednat telefonicky, poštou, mailem.

Program se dodává poštou na dobírku, daňový doklad

je vždy součástí zásliky.


KURZ OBSLUHY A PROGRAMOVÁNÍ

1. část - Základy programování

Základy programování, použití knihoven procedur a funkcí

2. část - Základy tvorby aplikací na formuláři

Popis základů programování aplikací skládáním komponent na formuláři včetně použití základních komponent

3. část - Knihovna vizuálních komponent

Obsahuje popis použití vizuální knihovny komponent

4. část - Databáze na formuláři

Použití databází na formuláři.


LICENČNÍ PODMÍNKY

PRÁVA REGISTROVANÉHO UŽIVATELE:

- možnost využívání programového vybavení po neomezenou dobu

- aktualizace programu na novější verzi za zvýhodněnou cenu

- záruka a servis pro registrovaného uživatele

JE ZAKÁZÁNO:

- jakékoliv i bezúplatné šíření programu nebo jeho části, nedodržení bude posuzováno jako porušování autorských práv a uživatel bude povinen nahradit výrobci vzniklou škodu

- převádět získané oprávnění na jinou osobu, půjčovat, pronajímat, dekódovat či jiným nepovoleným způsobem nakládat s programovým produktem

REGISTRACE PROGRAMU:

- Plná verze programu je vázána na registraci pro konkrétní počítač (sériové číslo harddisku). Počet počítačů s registrovaným programem je vázán na počtu dodaných licencí.

- Další počítač je možné zaregistrovat bezplatně vždy pouze po roce používání. Dřívější požadavek na změnu počítače podléhá manipulačnímu poplatku 250,- Kč, maximálně však čtyřikrát za rok. Častější změna za dvojnásobný poplatek.

- Požadavek na registraci a změnu počítače musí být dodán autoru programu vždy písemně s uvedením kódu počítače, který se zobrazuje při každém spuštění neregistrované verze programu.

- Při zakoupení licence na jeden počítač je možné zaregistrovat program zdarma pro dva počítače. Například jeden v zaměstnání, druhý doma. Program nesmí v tomto případě běžet na obou počítačích současně.

ZÁRUKA, REKLAMAČNÍ PODMÍNKY:

- výrobce poskytuje šestiměsíční záruku na provoz programového produktu dle dokumentace.  Odpovědnosti za vady se výrobce může zbavit bezplatným zasláním opravené verze programu uživateli

- výrobce neručí za ztráty a škody způsobené chybným využíváním či neoprávněnými zásahy do programového vybavení

- reklamace musí být podána písemně a musí obsahovat  přesný popis závady

DALŠÍ UJEDNÁNÍ:

- výrobce prohlašuje, že je držitelem autorských práv k dodanému programovému vybavení a že ponese sám důsledky všech sporů souvisejícími s těmito právy

- autor programu bude veškeré informace zasílat na adresu uvedenou v registrační kartě. Její případná změna musí být oznámena písemně.


Novinky a změny v programu

Verze 1.03 (24/06/1999)

- z důvodu malého využívání byly zrušeny grafy a tabulky Excelu. Výhodou je snadnější instalace programu a menší obsazený prostor na disku. Registrovaní uživatelé, kteří uvedené moduly využívali však mají možnost získat verzi 1.03 včetně grafů a tabulek.

- možnost animace programu (umožnuje kontrolovat průběh programu přes jednotlivé příkazy, volání procedur a funkcí)

- doplněna metoda DataTable.SetExclusive pro nastavení a kontrolu exclusivního přístupu

- doplněny metody pro kreslení na plochu objektu Image

- doplněn popis komponent Application, DataImage, MediaPlayer a Screen

- existuje několik variant programu lišící se pouze datem. Šířeny byly pouze po internetu pro testování vybraným registrovaným uživatelům.

Verze 1.02 (10/04/1999)

- kompletní instalace na disketách, včetně kolekce obrázků pro tlačítka a ikony

Verze 1.02 (31/03/1999)

- distribuce programu pouze na internetu

- zpřístupnění RunTime modulu pro možnost distrubuce aplikací

- v editoru programu možno nastavit velikost fontu

- možnost práce s obecnými binárními soubory

- možnost načtení souboru do proměnné (FileToVar), uložení proměnné do souboru (VarToFile)

- pro databáze doplněny procedury DbfSetExact a DbfSetSoftSeek, které definují reakci po neúspěšném hledání funkcí DataTable.Seek nebo DbfSeek

- doplněna komponenta Timer pro spouštění akcí v zadaném časovém intrervalu

- doplněny nové komponenty pro práci s databázemi:

DataComboBox 	- Seznam s možností zadání nové hodnoty

DataListBox 	- Výběr ze seznamu předdefinovaných hodnot

DataLookUpCombo	- Výběr ze seznamu z jiné databáze

DataLookUpList 	- Podřízený seznam z jiné databáze

DataRadioGroup	- Databázový přepínací box

Verze 1.01 (10/03/1999)

Neveřejná verze zpřístupněná pouze pro vybrané registrované uživatele, obsahuje první variantu RunTime modulu pro možnost distribuce aplikací.

Verze 1.00 (12/02/1999)

- kompletní popis vizuální knihovny

- doplnění možnosti nastavení vlastnosti z programu u všech komponent

- zrušení komponent, které by nebylo možné ovládat z programu, případně byly funkčně duplicitní

- spousta dalších drobných změn

Verze 0.07 (28/12/1998)

- v deklaraci proměnných a procedur a funkcí již není nutné uvádět typ deklarované proměnné

- doplněny funkce pro konverzi kódování háčků a čárek mezi kódováním Kamenický, Latin2 a Windows

- z programu je možné volat mimo tisku reportu i editaci předlohy sestavy

Verze 0.06 (12/12/1998)

- doplněna nápověda k programu a kurz použítí programu

- při vyvolání nápovědy z editoru programu stiskem klávesy Ctrl+F1 se zobrazí nápověda pro slovo, na kterém stují kurzor

Verze 0.05 (07/12/1998)

- doplněny nové procedury a fuknkce pro deklaraci systémových proměnných

- možnost předávání parametrů do sestav

Verze 0.04 (25/11/1998)

- při výskytu chyby v programu je nastavena pozice kurzoru na místo nalezení chyby

- doplněn help obsahující kurz programu a popis syntaxe

- možnost vytvoření indexu z databázového okna

Verze 0.03 (17/11/1998)

- doplněny procedury a funkce pro kontrolu databází v síťovém zpracování:

- doplněny procedury a funkce pro práci s memopoložkami databází

Verze 0.02 (29/10/1998)

První veřejná demoverze.  Částečný manuál v textovém souboru.

Verze 0.01 (04/10/1998)

První, ne zcela veřejná verze systému. Uvolněna byla pouze pro registrované uživatele systému OZOGAN KLONDAIK 2. Bez manuálů a helpu.


RunTime
RunTime modul pro distribuci aplikací

RunTime je EXE program, který je možné použít pro spouštění programů vytvořených a zkompilovaných ve vývojovém prostředí systému OZOGAN KLONDAIK. Programy spuštěné pod RunTime nejsou omezovány vlastnostmi demoverze. V programech není možné provádět žádné změny. RunTime modul je zahrnut v dodávce systému KLONDAIK a je možné jej šířit s vytvořenými aplikacemi zcela zdarma bez dalších poplatků.

RunTime je možné umístit včetně všech požadovaných souborů v archívním souboru na jednu disketu. Není nutné provádět žádnou instalaci, stačí archívní soubor rozbalit v libovolném adresáři. Neprovádí se žádný zásah do systémových registrů Windows. RunTime je možné provozovat také přímo z CD-ROM. RunTime při své činnosti nezapisuje žádné údaje na disk.

Pro správnou a bezchybnou činnost RunTime jsou vyžadovány následující soubory (uvedena velikost souboru a datum vytvoření souboru):

KL3RUN.EXE     datum a velikost dle verze

SDE32.DLL          131 072    04/05/1998

SDECDX32.DLL       264 192    27/09/1997

VCL30.DPL        1 287 088    23/10/1997

VCLX30.DPL         219 584    05/08/1997

VCLDB30.DPL        656 384    27/09/1997

VCLDBX30.DPL        79 816    05/08/1997

Programy provozované pod RunTime je možné spouštět dvěma způsoby. Buď se program pro spuštění zadá jako parametr při startu RunTime, případně se spustí samotný RunTime a zadá se požadovaný program. V obou případech se zadávají soubory s příponou *.KLX.

Pro spuštění programu parametrem je vhodné zadat do operačního systému Windows asociaci pro soubory typu *.KLX. Díky tomu stačí pro spuštění programu kliknout na uvedený soubor v manažeru souborů, čímž dojde ke spuštění asociovaného RunTime s parametrem zadaného souboru. Pokud je zadán soubor v parametru, začne se ihned vykonávat zadaný program. Po jeho ukončení je ukončena současně i činnost RunTime. Počátečním pracovním adresářem je adresář, ve kterém se nachází zadaný program pro spuštění.

Je-li spuštěn samotný modul RunTime bez parametru, zobrazí se systémové okno RunTime s řadou tlačítek s následujícím významem:

- výběr a spuštění programu

- zobrazení/ukrytí textového výstupního okna

- zobrazení/ukrytí grafického výstupního okna

- zobrazení/ukrytí databázového okna

- zobrazení informací o RunTime

- ukončení činnosti RunTime

Program se zadává po kliknutí na první tlačítko zleva. Pokud je na počítači instalováno vývojové prostředí systému KLONDAIK, nabídne se adresář, ve se naposledy pracovalo. V opačném případě se nabízí adresář, ve kterém je RunTime nainstalován. Po spuštění programu je systémové okno RunTime skryto a zobrazí se až po ukončení programu. Jméno souboru, ze kterého byl program spuštěn se následně zobrazí v seznamu spuštěných programů. Seznam je řazen abecedně a jsou do něj zaznamenávány pouze nové programu. Pokud se požaduje spustit program opakovaně, vybere se v seznamu a po kliknutí na tlačítko vpravo od seznamu bude program znovu spuštěn.

VYTVOŘENÍ *.KLX SOUBORŮ PRO RUNTIME

Soubory typu *.KLX se vytvářejí automaticky ve vývojovém prostředí registrovaného systému OZOGAN KLONDAIK. Soubor je vytvářen až po ukončení programu, pouze pokud neobsahuje žádné syntaktické chyby. V souborech typu *.KLX je uložen formulář i program. (*.KFM plus *.KL3). Je možné kompilovat i program, který nemá formulář. Pokud je v adresáři s programem nalezen soubor typu *.TXT stejného jména jako program, je také přilinkován do souboru typu *.KLX. Uvedený soubor bude v budoucnu sloužit například pro uložení dokumentace, kterou bude možné zobrazit. Soubor je uložen v nečitelném tvaru bez možnosti změny obsahu a může proto sloužit například jako digitální podpis autora programu. V budoucnu se uvažuje o možnosti načítat z uvedeného textového souboru uloženého v *.KLX uložený text, případně pouze zadané řádky k možnému použití přímo v programu.

Překládá se pouze první program spuštěný z vývojového prostředí. Pokud se v programu používá skok do dalších formulářů nebo se spouští další samostatné programy, je nutné takové programy a formuláře zkompilovat samostatným spuštěním.

Program a formulář je v souboru typu *.KLX uložen v nečitelném tvaru bez možnosti změny zásahu neoprávněným uživatelem. Struktura souboru nebude nikde zveřejněna a nebudou také podávány jakékoliv informace týkající se způsobu uložení programu. Program přilinkovaný do souboru typu *.KLX není možné obnovit do původní podoby.

Ve vývojovém prostředí je pod spouštěcím tlačítkem tlačítko dovolující spustit již zkompilovaný program.


KURZ - ZÁKLADY PROGRAMOVÁNÍ

Lekce 1.01 - Instalace, spuštění a ukončení programu

Lekce 1.02 - Základy ovládání programu

Lekce 1.03 - Práce s příkazovým a textovým výstupním oknem

Lekce 1.04 - Příkaz Writeln, matematické výpočty

Lekce 1.05 - Používání proměnných

Lekce 1.06 - Grafické výstupní okno, grafický editor

Lekce 1.07 - Ovládání grafického okna z příkazového okna

Lekce 1.08 - Výstup do grafického okna

Lekce 1.09 - První program

Lekce 1.10 - Editace programu

Lekce 1.11 - Používání proměnných v programu

Lekce 1.12 - Podmínky v programu, logické výrazy

Lekce 1.13 - Programové cykly (FOR, REPEAT, UNTIL)

Lekce 1.14 - Zadání vstupních hodnot, zobrazení výsledků

Lekce 1.15 - Struktura programu

Lekce 1.16 - Deklarace a používání procedur

Lekce 1.17 - Deklarace a používání funkcí

Lekce 1.18 - Návrh a zápis programu

Lekce 1.19 - Typ ARRAY - proměnná typu pole

Lekce 1.20 - Knihovna pro zpracování řetězců

Lekce 1.21 - Knihovna pro práci se soubory a adresáři

Lekce 1.22 - Spouštění dalších programů (EXE, KL3)

Lekce 1.23 - Co je to databáze, z čeho se skládá

Lekce 1.24 - Ovládání databázového okna

Lekce 1.25 - Navigace v databázi

Lekce 1.26 - Zadávání výrazů v jazycích xBase

Lekce 1.27 - Čtení a zápis dat databáze

Lekce 1.28 - Nastavení filtru, podmínky xBase

Lekce 1.29 - Sekvenční prohledávání databáze

Lekce 1.30 - Třídění databáze - indexy

Lekce 1.31 - Hledání v databázi dle indexů

Lekce 1.32 - Rušení záznamů v databázi

Lekce 1.33 - Databázové oblasti

Lekce 1.34 - Vytvoření nové databáze

Lekce 1.35 - Změna struktury databáze

Lekce 1.36 - Editace memo položek databáze

Lekce 1.37 - Zpracování memopoložek z programu

Lekce 1.38 - Síťové zpracování databází

Lekce 1.39 - Tisk sestav z databází (reporty)

Lekce 1.40 - Ovládání oken z programu

Lekce 1.41 - Spuštění dalšího programu

Lekce 1.42 - Animace programu

Úvod:

Pro ty, kteří dosud nikdy neprogramovali na počítači se může zdát pojem  programování  záhadný  a  tajemný.  Jedná  se však o zcela běžnou  věc, kterou  vlastně všichni  známe již  od dětských let. Určitě jste si již mnohokrát řekli: "ráno půjdu do školy (práce), odpoledne na koupaliště  a večer se budu dívat  na televizi". Tím jste si sestavili program  dne. Definovali jste posloupnost akcí, které provedete. Můžete si  však také stanovit podmínky programu. Například  pokud  bude  odpoledne  hezky,  půjdete na koupaliště, jinak  (bude pršet)  si budete   číst nebo  se učit.  V některých případech si můžete stanovit  opakování některých akcí. Například že se budete  učit tak dlouho, dokud to  nepochopíte. Jak vidíte, programovat  už   umíte.  Sestavujete  si   program  dne,  výuky, dovolené.  Nyní  už  zbývá  pouze  naučit  se  převést program do podoby, kterou zvládne i počítač.

Programování  v  systému  KLONDAIK  je  velmi jednoduché. Systému zadáváte své požadavky na vzhled vyvíjené aplikace a úkoly, které má  systém provést  při výskytu  očekávaných událostí.  K tomu je možné  použít  moderní  vizuální  postupy,  které  Vám umožní bez jakýchkoliv předchozích znalostí objektové programování.

Počítačový   program  představuje   definici  posloupnosti  akcí, podmínky jejich  provedení a opakování.  Aby byl počítač  schopen požadované činnosti provádět, musíte mu  je zadat v podobě, které on rozumí. Pokud budete chtít  angličanovi říct svůj program dne, budete  mu jej  muset přeložit  do angličtiny.  Stejně tak musíte přeložit program ze slovní podoby do počítačového jazyka. Počítač potom bude číst jednu řádku programu za druhou a vykonávat to, co jste mu zadali.


Lekce 1.01 - Instalace a spuštění programu

Program se dodává na dvou disketách formátu 3,5" HD. Instalace se spustí  z diskety  příkazem SETUP.EXE.  Po spuštění  musíte zadat nejprve  adresář  pro  instalaci   programu.  Standardně  je  pro instalaci nastaven adresář C:\OZOKLON3\. Cílový disk i adresář je možné  změnit, přesto  však doporučujeme  zachovat předdefinované jméno adresáře. Při instalaci se nekopírují žádné soubory mimo zadaný adresář. Současně se nainstaluje i odinstalační program.

Pro  rozlišení  přesné  definice   programu  OZOGAN  KLONDAIK  od editovaného a laděného programu bude v následujícím textu u všech lekcí  uváděn program  OZOGAN KLONDAIK  jako systém  a pod pojmem program se bude rozumět laděný a editovaný uživatelův program.

Systém  se  startuje  po  dokončené  instalaci kliknitím na systémové tlačítko Windows Start s náledným výběrem programu. Systém KLONDAIK je také možné spustit z adresáře zadaného při instlaci spuštěním souboru KLONDAIK.EXE.   Při  prvním   spuštění  systému   je  integrované uživatelské prostředí nastaveno do standardního výchozího stavu.

Program  je  možné  ukončit  buď  volbou  z  menu  Soubor/Konec programu, případně  ikonou z toolbaru.  Pokud je editován  program a změny nebyly dosud uloženy, budete dotázáni systémem na uložení změn.  Při ukončení  programu se  provede uložení  rozložení oken integrovaného prostředí  do registrů systému  Windows. Při dalším spuštění programu bude potom  obnoven stav rozložení jednotlivých oken na pracovní ploše systému.

Pokud je možné systém KLONDAIK výše uvedeným způsobem nainstalovat a spustit, pokračujte studiem následující lekce. Jinak  si prostudujte následující text, ve kterém jsou nastíněny možné problémy spolu s možností řešení pro odstranění problémů.

Systém KLONDAIK nevyžaduje žádné speciálně instalované podpůrné knihovny. Pro svou činnost vyžaduje pouze následující soubory, které jsou součástí instalace:

----------------------------------------

soubor               délka    datum

----------------------------------------

SDE32.DLL          131 072    04/05/1998

SDECDX32.DLL       264 192    27/09/1997

VCL30.DPL        1 287 088    23/10/1997

VCLX30.DPL         219 584    05/08/1997

VCLDB30.DPL        656 384    27/09/1997

VCLDBX30.DPL        79 816    05/08/1997

----------------------------------------

DLL knihovny se používají pro databázový přístup, soubory *.DPL jsou tzv. runtime knihovny Delphi. Uvedené soubory je možné ponechat v adresáři dle instalace. V případě jakýchkoliv problémů zkontrolujte, zda neexistují uvedené soubory v adresáři \WINDOWS\SYSTEM\. Pokud ano, může docházet ke vzájemným kolizím s jinými programy. V takovém případě se pokuste soubory přesunout do adresáře aplikace, která je využívá.  Těžko lze však nalézt obecně použitelné řešení. Bylo opakovaně prověřeno, že pokud se systém KLONDAIK instaluje na počítač se správně instalovaným operačním systémem Windows, nenastanou žádné problémy.

Následující lekce


Lekce 1.02 - Základy ovládání programu

Systém OZOGAN  KLONDAIK je aplikace  Windows a proto  je ovládání programu podřízeno  tomuto standardu. Systém  je ovládán z  menu, často používané  volby jsou přitom přístupné  i z toolbaru pomocí ikon,  případně pomocí  funkčních kláves.  Veškeré akce probíhají v několika  oknech s  přesně definovaným  určením. Celá  práce se systémem probíhá  v několika režimech dle  kterých jsou využívána příslušná  okna.  Okna  lze  na  ploše  obrazovky uspořádat podle aktuální potřeby.

Nejčastěji  používané okno  je okno  s programem,  které obsahuje vyvíjený  a laděný  program. V  dalším, příkazovém  okně je možné zadávat  přímo  příkazy  jazyka  bez  nutnosti spuštění programu. Výsledky programu je možné zobrazit buď v textovém nebo grafickém výstupním okně.  V dalším okně je  možné pracovat s databázemi ve formátu FoxPro. Některá okna mají svou vlastní sadu  ikon umístěných v toolbaru, který se zobrazí po aktivaci okna v jeho horní liště.

Okna  můžete  po  pracovní  ploše  libovolně  přepínat, posouvat, zvětšovat je  či zmenšovat. Přepínání oken  je možné kliknutím na libovolnou viditelnou  část okna. Po kliknutí  se stane příslušné okno aktivní. Pokud není okno  viditelné, použijte menu Okna, kde zvolíte  požadované okno.  V dalších  lekcích se  naučíte, že  je možné  zviditelnit   požadované  okno  i   příkazem  z  programu. Kliknutím na příslušnou ikonu v  pravém horním rohu okna je možné okno  maximalizovat,  případně  minimalizovat.  Okno  se přesouvá nejlépe  myší, kdy  je uchopíte   za horní  lištu a  přesunete na požadované  místo.  Změny  velikosti  okna  dosáhnete po uchopení pravého dolního rohu okna a nastavení na požadovanou velikost.

Systém   obsahuje   kontextovou   nápovědu,   která  je  dostupná v několika stupních.  Při výběru volby z  menu je krátká nápověda k vybrané  volbě  zobrazována  ve  stavovém  řádku  v dolní části systému. Tzv. bublinová nápověda je zobrazována po najetí myší na ikony  v toolbaru.  Nejobsáhlejší nápověda  se zobrazí  po stisku klávesy F1. Jedná se o hypertextový dokument s provázanými odkazy na zvolená  hesla. Zde uváděné příklady  programů máte možnost si do systému  z nápovědy přetáhnout  pomocí blokového přesunu  přes schránku Windows.  To provedete tak, že  najedete v nápovědě myší na začátek ukázky programu,  stisknete levé tlačítko myši, držíte jej  stisknuté  a  přetáhnete  myš  na  konec textu příkladu. Tam tlačítko myši  uvolníte. Stiskem kláves  Ctrl+C se převede  takto označený blok textu do schránky Windows. Nyní se přepnete do okna s programem a stiskem kláves Ctrl+V převedeme obsah schránky.

K ovládání programu je vhodné používat myš. Většina voleb je sice dostupná  současně z  menu i  myší, přesto  je však ovládání myší mnohem  příjemnější  a  operativnější.  Pokud  se  v dalším textu používá myš, předpokládá se levé tlačítko.

Následující lekce


Lekce 1.03 - Práce s příkazovým oknem

Nejprve si  ukážeme, jak se dají  velmi jednoduše zadávat systému příkazy  bez  zápisu  programu.  Najděte  na  pracovní ploše okno nazvané  příkazy a  učiňte je  aktivním -  klikněte na  něj myší. Pokud není  okno viditelné ,  případně je minimalizované,  můžete zvolit  z menu  volbu Okna/Příkazy  nebo stiskem  kláves Ctrl+F2. Upravte  myší  velikost  okna  tak,  aby  zabíralo levou polovinu obrazovky. Obdobným  způsobem nastavte okno  Výstup-text do pravé poloviny obrazovky. Přepněte ze zpět do příkazového okna.

Okno příkazy se podobá textovému editoru. Má však velmi důležitou vlastnost.  Pokud  napíšete  v  okně  libovolný  text a stisknete klávesu ENTER, pokusí se systém  ihned napsaný řádek vykonat jako známý  příkaz. To  znamená, že  systém si  přečte text  řádku, na kterém stál  kurzor a zjišťuje, zda  se jedná o jemu  známý povel nebo příkaz. Pokud ano, povel  nebo příkaz provede. Proto se toto okno nazývá příkazové.

Příkazy  a  povely  jsou  pro  systém  KLONDAIK  instrukce, co má vykonat. Příkazem je většinou označen přímý hlavní povel systému. Jako  povely  jsou  označovány   doplňkové  příkazy,  které  jsou zabudovány jako  podpůrné akce. Příkazy  a povely je  vhodné psát malými  písmeny s  velkými písmeny  na počátku  slova. Pokud jsou přitom  názvy povelů  uvedeny z  více slov,  nesmí být  mezi nimi uvedeny mezery.

Napište  nyní v  příkazovém okně  slovo BEEP a stiskněte klávesu ENTER.  Systém  zjistí,  že  příkaz  BEEP  je pokyn, pro pípnutí. Zajistí proto, že reproduktor počítače krátce pípne. Takto systém vykonal vámi zadaný příkaz do podoby srozumitelné pro počítač.

V  příkazovém  okně  máte  možnost  vyzkoušet  si  mnoho  příkazů a povelů systému KLONDAIK, aniž  napíšete jedinou řádku programu. Pokud uděláte chybu, systém vás na  to upozorní a vy máte možnost ihned  chybu opravit  bez nutnosti  opakované kompilace programu. Zapomenete-li  například  napsat  ve  výše  uvedeném příkazu BEEP jedno 'E',  oznámí vám systém, že  uvedený příkaz nezná. Najedete proto  kurzorem na  chybné místo,  provedete opravu  a po  stisku klávesy ENTER se již příkaz vykoná.

Jistě  jste si  již všimli,  že klávesa  ENTER neukončí  na místě kurzoru  řádek, jak  to bývá  u textových  editorů. Řádek zůstane celý  zachován  a  kurzor   se  automaticky  přesune  na  začátek prázdného řádku za předchozí příkazy. Pokud zkusíte zapsat příkaz

Writeln("KLONDAIK");

vypíše se  do textového výstupního okna  text KLONDAIK. Možnostmi příkazu Writeln je věnována  následující lekce. Nyní bude stačit, pokud si zapamatujete, že příkaz  Writeln v uvedeném tvaru vypíše obsah  textu uvedeného  mezi uvozovkami  do textového  výstupního okna.  Mezi uvozovky  můžete zkusit  přitom zadat  libovolný jiný text. Zkuste text mezi uvozovkami  několikrát změnit a změny vždy odešlete klávesou ENTER. Jistě si  všimnete, že původní text před opravou  zůstane  v  příkazovém  okně  zachován  a příkaz s novým textem  bude doplněn  na konec  příkazového okna.  Díky tomu máte vždy  přehled  o   historii  zadávaných  příkazů.  Neprovedete-li v textu žádnou  změnu a příkaz opakovaně  odešlete, nebude stejný příkaz zadávaný  beze změny za sebou  v historii příkazového okna za sebou znovu opakován.

Historii zadávaných příkazů můžete  libovolně používat bez ohledu na pořadí  původního zadávání. Pokud  provedete v některém  řádku příkazového  okna libovolnou  změnu a  následně stisknete klávesu ESC, příkaz se  neprovede a text upraveného řádku  bude uveden do původního  stavu.  Příkazy  vyzkoušené  v  příkazovém  okně  máte možnost přes schránku Windows následně převést do programu.

Různými pokusy s  příkazovým oknem jste dosáhli toho,  že máte ve výstupním textovém  okně uvedeny různé  texty. S každým  použitím příkazu Writeln  přibude na konec okna  jeden řádek. To připomíná použití  psacího  stroje,  kdy  také  není  možné se vracet zpět. V dávných dobách prahistorie výpočetní techniky sálových počítačů se  podobné psací  stroje používaly  pro komunikaci  s počítačem. Tehdy se jim říkalo konzole  - anglicky console. Uvedené anglické označení je  proto také používáno  pro příkazy přímo  související s obsluhou  textového  výstupního  okna.  Pokud například zkusíte zadat v  příkazovém okně příkaz ConsoleClear,  zjistíte, že zruší obsah  textového  výstupního  okna.  Obdobného  efektu dosáhnete, pokud  se  přepnete  do  textového  výstupního  okna  a stisknete v podřízeném toolbaru uvedeného  okna ikonu znázorňující prázdnou stránku.  Po kontrolním  dotazu bude  obsah textového  výstupního okna zrušen.

V následující  kapitole se  seznámíte, jak  vypisovat v  textovém výstupním  okně  za  použití  příkazu  WRITELN  i  jiné informace a hodnoty.

Následující lekce


Lekce 1.04 - Příkaz Writeln, matematické výpočty

V předchozí kapitole  jste se naučili zadávat  z příkazového okna příkazy  umožňující vypsat  do textového  výstupního okna  znaky. Nyní si ukážeme, jak vypisovat čísla a aritmetické výpočty.

S příkazem  Writeln jste  již  měli  možnost se  krátce seznámit. Používá se na výpis hodnot.  Požadovaná hodnota se přitom uváděla v závorce.  Pokud  se  u  příkazu  Writeln  uvedou  pouze prázdné závorky,  nebude   nic  vypsáno  a  další   výstup  do  textového výstupního okna  bude prováděn na  novou řádku. Writeln  je pouze příkaz který  uvádí systému, že  má něco vypsat.  Uvedené něco se přitom uvádí v závorce jako parametr příkazu. Pokud uvedete znaky v uvozovkách  nebo  apostrofech,  převedou  se  uvedené  znaky do textového  výstupního  okna.  Pokud  byste  chtěli  vypsat číslo, musíte zadat příkaz v následujícím tvaru:

Writeln(10);

Stačí  tedy  napsat  jako   parametr  příkazu  do  závorek  přímo požadované číslo.  Číslo se vypíše se  zarovnáním od levého kraje okna.  Obdobným způsobem  můžete zadat  i jednoduchý  matematický výraz, který se vypočítá a  zobrazí se výsledek. Ve výrazu můžete samozřejmě použít i závorky pro definici postupu výpočtu:

Writeln((17-5)*3);

S možností  výpisu nenumerických  údajů, tedy  znaků jste  se již seznámili v  předchozí lekci. Seskupení několika  znaků se přitom nazývá řetězec a také tak  již bude v následujícím textu uváděno. Pokud  byste  chtěli  jedním  příkazem  Writeln  vypsat  najednou řetězec i  znaky, můžete tak  učinit uvedením několika  parametrů oddělených čárkou:

Writeln('Výsledek výpočtu je:', 10/3);

Stejně tak můžete vypsat samozřejmě  i několik čísel nebo řetězců oddělených v příkazu čárkami. To vám dovolí ve spojení s možností uvádění délky čísel vhodnou grafickou úpravu textu:

Writeln('Seznam výsledků:', 12/3, " ", 45-26, " ", 3*3);

Příkaz  Writeln provede  po svém  ukončení vždy  přechod na novou řádku. Pokud  však budete potřebovat, aby  další výpis pokračoval na  stejné  řádce,  můžete  použít  příkazu  Write. Ten neprovádí ukončení řádku,  následující výpis je zahájen  od pozice ukončení příkazu  Write. Možnosti  a parametry  příkazu Write  jsou přitom totožné jako pro uváděný popis příkazu Writeln.

Výše uvedený  popis použití příkazu  Writeln se vám  může zdát na první pohled složitý. Je však nutné jej přesně dodržet. Systém si hlídá důsledně  jeho dodržování a v  případě chyby odmítne příkaz vykonat. Přesná definice jakéhokoliv používaného jazyka se nazývá syntaktická  pravidla. Pokud  zadá uživatel  chybný zápis,  dojde k porušení  syntaxe  a  odmítnutí  systému  k  vykonání  chybného zadání. Byla proto sestavena  pravidla pro použití všech příkazů. Uvádíme  zde  pro  představu  zkrácenou  definici  syntaxe zápisu příkazu WRITELN tak, jak byla výše popsána:

Writeln( [ výraz ] [, výraz] [...] );

V  zápise znamená výraz libovolný výraz, Například řetězec, číslo nebo výpočet. Údaje v hranatých závorkách se nemusí uvádět. Proto je  možné dle  výše uvedeného  popisu uvést  jeden, nebo  několik výrazů. Druhý  a další výraz  ale musí být  od předchozího výrazu oddělen  čárkou. Pokud  si dobře  prohlédnete uvedený syntaktický zápis zjistíte, že mezi závorkami nemusíte nic uvádět. To je dáno levou hranatou závorkou uvedenou ihned za levou kulatou závorkou. Ukončení  této  volitelné  části  je  provedeno  pravou  hranatou závorkou  před  pravou  kulatou  závorkou.  Pokud  proto  uvedete příkaz:

Writeln();

nevypíše se  žádný text, dojde  ale k vynechání  prázdného řádku. Všimněte  si,  že  je  na  konci  každého  řádku uveden středník. Středníkem  se  oddělují  jednotlivé  příkazy.  Pokud  vypisujete příkaz do příkazového okna, není  jej sice nutné uvádět, ale bude vhodné, pokud si na to zvyknete. Uvedený způsob popisu syntaxe je použit  u  popisu  všech  příkazů  a  knihoven  procedur a funkcí uvedených v manuálu i helpu k programu.

Pokud  jste se  dokonale  seznámili  s použitím  příkazu Writeln, můžete  ve spolupráci  s  manuálem  k programu  vyzkoušet některé funkce  matematické knihovny.  Dále uvedené  příklady uvádějí  na konci řádku  mezi složenými závorkami komentáře,  které nemají na výsledek  žádný vliv.  Ve  skutečnosti  je proto  nemusíte včetně složených závorek uvádět.

Writeln(Abs(-55));       {absolutní hodnota čísla}

Writeln(Cos(PI));        {kosinus Ludolfova čísla PI}

Writeln(Max(3,10));      {maximální hodnota zadaných čísel}

Writeln(Min(3,10));      {minimální hodnota zadaných čísel}

Writeln(Random(500));    {náhodné číslo do 500}

Writeln(Round(12.82));   {zaokrouhluje číslo}

Writeln(Sqr(5));         {vrací druhou mocninu čísla}

Writeln(Sqrt(16));       {vrací druhou odmocninu čísla}

Writeln(Trunc(12.82));   {odřízne desetinou část čísla}

V některých případech může vadit, že výsledek matematického výpočtu je uveden včetně plného počtu desetinných míst podle typu matematického výpočtu. Pokud by to někdu vadilo, je možné použít funkci RealRound, která zaokrouhluje číslo s uvedením počtu desetinných míst, která mají být zachována. Dále uvedený příklad zaokrouhlí výpočet druhé odmocniny na dvě desetiná místa:

Writeln(RealRound(Sqrt(5),2));

Pokud by vám při výpisu výsledků matematických výpočtů vadilo, že jsou  čísla vypisována  bez mezer   vlevo a  vždy na  plnou délku desetinných míst, můžete použít funkci RealToStr pro převod čísla na znaky  (řetězec). Jako parametr  funkce se přitom  uvádí číslo pro  převod,  celkový  počet  znaků (včetně  počátečních  mezer a desetinné části)  a počet desetinných míst.  Vyzkoušejte si proto například následující výpočty a porovnejte zobrazené výsledky:

Writeln(RealToStr(10/3,6,0));

Writeln(RealToStr(10/3,6,1));

Writeln(RealToStr(10/3,6,2));

Writeln(RealToStr(10/3,6,3));

Jak  vidíte, můžete  použít  příkaz  Writeln jako  docela chytrou kalkulačku. Zatím ale neznáte, jak  by bylo možné uložit vypočtené hodnoty do 'paměti'  naší kalkulačky k dalšímu použití.  S tím se seznámíme až v  některé z následujících lekcí. V  příští lekci se seznámíte s  dalším výstupním oknem, které  se používá pro výstup a kreslení grafiky.

Následující lekce


Lekce 1.05 - Používání proměnných

Když  jsme si  ukazovali v minulé lekci, jak  vypsat příkazem  Writeln číslo  do výstupního   textového  okna,   bylo  uvedeno,   že  není   možné jednoduchým  způsobem uložit  výsledek výpočtu  z příkazového řádku do paměti.  Je to proto, že  je k tomu nutné použít  nový příkaz SysVarSet. Ten umožňuje deklarovat v paměti místo pro uložení hodnoty. Něco jako paměť na kalkulačce. V našem případě ale musíte na rozdíl od kalkulačky paměťové místo pojmenovat. Protože je možné takto ukládat hodnoty, které je možné v dalších výpočtech změnit, nazývají se uvedené paměti “proměnné”.  Proto se musí při zadávání nové proměnné uvádět mimo jejího názvu i počáteční hodnota. Zkuste si nadefinovat proměnnou pro uložení ceny a počtu kusů:

SysVarSet('cena', 123.45);

SysVarSet('pocet', 10);

Pro zjištění hodnoty definované systémové proměnné z příkazového okna můžete následně použít buď přímo její název, nebo je možné použít příkaz SysVarGet.

Writeln(SysVarGet('cena'));

Writeln(cena*pocet);

Je již také možné přiřadit proměnné novou hodnotu:

cena := 999;

Proměnné deklarované příkazem SysVarSet zůstávají v paměti až do ukončení systému KLONDAIK. Je možné je proto používat pro všechny následující výpočty.  Pro zobrazení hodnot systémových proměnných je možné použít příkazu SysVarShow. Kompletní výmaz všech systémových proměnných se provede příkazem SysVarClear.

Na používání proměnných je založena i možnost programování. V některé z dalších lekcí se seznámíte s tím, že proměnné mohou být určitého typu pro uložení různých hodnot.  Proměnné bude také možné používat pro předávání hodnot mezi programy. Systémové proměnné budete také moci používat pro uložení výsledků výpočtů i po ukončení programu. Se všemi uvedenými možnostmi se podrobněji seznámíte v dalších lekcích používání programu.

Následující lekce


Lekce 1.06 - Grafické výstupní okno

V  předchozích kapitolách jsme se naučili používat příkazové okno a textové  výstupní  okno.  Systém  ale  obsahuje  i další, velmi zajímavé výstupní  okno. Je to grafické  výstupní okno, které vám umožní do své plochy libovolně kreslit.

Uzavřete dříve používané textové výstupní okno. Můžete tak učinit kliknutím na uzavírací ikonu,  případně můžete zadat v příkazovém okně povel ConsoleHide. Dále aktivujte grafické výstupní okno. To lze provést z menu volbou Okna/výstup grafika. Okno je možné také zobrazit povelem ImageShow. Zobrazené  okno upravte opět tak, aby pokrývalo pravou polovinu obrazovky.

Jak  vidíte,  každé  okno  je   pro  účely  ovládání  z  programu pojmenováno významově dle  anglického názvosloví. Existují přitom povely  pro zobrazení  (anglicky show)  a ukrytí  (anglicky hide) okna. Možná  se pozastavujete nad  tím, že u  českého programu se používá  cizojazyčných termínů.  Je  to  proto, že  systém OZOGAN KLONDAIK může  posloužit i jako  nástroj pro výuku  programování. Proto  je  podle  nás  vhodné  si  již  od  počátku  zvyknout  na terminologii,  která se  při běžném  programování používá.  Názvy procedur,   funkcí  a   konstant  přitom   vychází  z   používané terminologie  jazyků   Pascal  a  získané   znalosti  jistě  dále zužitkujete.  Použitá  počítačová   angličtina  je  přitom  velmi jednoduchá a neměla by nikomu činit problémy.

Po  aktivování grafického  výstupního okna  se vám  v jeho  horní liště  zobrazí  řada  ikon  pro  ovládání zabudovaného grafického editoru  a ikony  pro možnost  kreslení na  grafické ploše. Ikony jsou umístěny do tří skupin. Levá skupina se používá pro načítání a ukládání  obrázků v  grafickém formátu  *.BMP. Střední  skupina slouží pro definici kresleného tvaru  a v pravé skupině naleznete nastavení typu čáry a výplně ploch.

Nejprve se seznámíme s možností kreslení základních geometrických tvarů. Ve střední skupině ikon  jsou seskupena tlačítka pro čáru, obdélník, kružnici  a obdélník se  zakulacenými hranami. Klikněte nejprve  na tlačítko  s čárou.  Tím jste  zadali, že budete chtít kreslit  čáry. Uvidíte,  že tlačítko  zůstalo stisknuto. Přesuňte ukazatel myši  na grafickou plochu. Pokud  nyní na grafické ploše stisknete  tlačítko  myši,  podržíte  jej  a  přesunete  na novou pozici, bude se  kreslit čára z bodu stisku  tlačítka do aktuální pozice  ukazatele   myši.  Po  uvolnění   tlačítka  zůstane  čára zachována.  Zkuste  si  nakreslit  i  vodorovné  a  svislé  čáry. Obdobným  způsobem  lze  na  grafickou  plochu kreslit obdélníky, kružnice  a obdélníky  se zakulacenými  rohy. Pro  zvolení nového tvaru musíte stisknout příslušné tlačítko na liště s ikonami.

Čáry se kreslí  černou barvou a tenkou čárou.  Pokud budete chtít změnit barvu  čáry, nebo její  tloušťku, stiskněte ikonu  v pravé horní části okna  s vyobrazením tužky. Zobrazí se  vám další řada ikon  pro  zadávání  barvy,  typu  a  tloušťky čáry. Po opětovném stisku  ikony s  tužkou se  nastavení skryje.  Ikona tedy pracuje jako přepínací  tlačítko. Klikněte si proto  na tlačítko tak, aby jste měli  zobrazeny ikony pro  nastavení čar. Vlevo  je umístěna tabulka barev,  uprostřed tlačítka pro  výběr typu čáry  a vpravo můžete  zadat  tloušťku  čáry.  Barvy  se  vybírají  kliknutím na požadovanou  barvu.  Vybraná   barva  je  označena  dvoupísmennou anglickou  zkratkou barvy.  Typ  čáry  můžete vybrat  plnou čáru, tečkovanou,   čárkovanou,  čerchovanou   nebo  můžete   posledním tlačítkem  úplně zrušit.  Tloušťka čáry  se udává  v bodech.  Pro zněnu  tloušťky  můžete  zapsat  do  editačního  boxu přímo novou hodnotu,  nebo  můžete  použít  pro  nastavení  šipek. Pokud bude nastavena tloušťka čáry větší než  jedna, neuplatní se zadaný typ čáry  a čára  se bude  vykreslovat vždy  plná, případně se nebude kreslit vůbec.  Zkuste si nastavit  parametry čáry a  prověřte si účinky změny při kreslení základních geometrických tvarů.

Dosud jsme kreslili pouze  okraje geometrických tvarů. Standardně je totiž  nastaveno, že se plocha  kreslených geometrických tvarů nevykresluje.  Podobným  způsobem,  jako  se  nastavují parametry kreslení čar máte možnost  nastavit parametry vykreslování ploch. Ikony pro  nastavení se zobrazí po  stisku tlačítka s vyobrazením štětce. Opět máte možnost zadat barvu, tentokrát plochy (výplně). Současně  můžete zadat  typ výplně.  Máte možnost  vybrat si  buď kreslení plné plochy zadanou  barvou, nevykreslování plochy, nebo z několika  druhů  vykreslení  plochy  čárami.  Lze  vybrat  čáry vodorovné, svislé,  vodorovné i svislé současně  (mřížka) a různé druhy diagonálních čar. Tloušťka čáry výplně je přitom vždy jeden bod.

Nyní  jste  již  schopni  nakreslit  na  grafické  ploše pouze za použití  myši jednoduché  obrázky. Vyzkoušejte  si různé možnosti nastavení  čáry a  plochy. Parametry  nastavení čar  a plochy  je možné  změnit samozřejmě  také přímo  z programu,  případně zadat z příkazového  okna.  To  si  však  ukážeme  až  v  následujících lekcích.  Nyní  bude  pro  vás  jistě  zajímavá  možnost  uložení nakreslených  obrázků na  disk  do  souboru pro  pozdější použití a zpětná možnost  načtení obrázku z disku  do grafického okna pro provedení  úprav.   Ukážeme  si  také,   jak  je  možné   obrázek vytisknout.

Pokud máte grafickou plochu  zaplněnou předchozími pokusy, můžete provést její výmaz pomocí ikony s obrázkem prázdné stránky. Ikona se  nachází v  levé skupině  ikon umístěné  v grafickém výstupním okně.  Po  kontrolním  dotazu   bude  grafická  plocha  vymazána. Stejného   efektu  lze   dosáhnout  povelem   ImageClear  zadaným v příkazovém okně. Povel se zadává bez parametrů, v tomto případě se provede výmaz grafické plochy již bez kontrolního dotazu.

Nakreslené  obrázky máte  samozřejmě možnost  uložit do  souboru. Používá se známý a běžný bitmapový soubor typu *.BMP. Pro uložení stiskněte  ikonu s  obrázkem diskety.  V dialogovém  okně zadejte adresář  a  jméno  souboru.   Obrázek  můžete  uložit  samozřejmě i povelem ImageSave z příkazového okna. Například:

ImageSave("obrazek.bmp");

Obrázky  můžete i  zpět načíst.  Použijte ikonu  s obrázkem šipky směřující do  stránky. V dialogovém okně  vyberte adresář a jméno souboru typu  *.BMP. Načíst můžete  i obrázky vytvořené  v jiných grafických  systémech. Po  načtení obrázku  je velikost  grafické plochy  nastavena dle  načítaného obrázku.  Obrázek můžete načíst i povelem z příkazového okna ImageLoad. Například:

ImageLoad("obrazek.bmp");

Pokud  byste  chtěli  vytvořený  obrázek  vytisknout,  můžete tak učinit  pomocí  ikony  zobrazující  tiskárnu.  Pro  tisk  obrázku z příkazového okna můžete použít povel ImagePrint.

V   následující   lekci   se   seznámíte   s  možnostmi  ovládání grafického výstupního okna pomocí povelů z příkazového okna.

Následující lekce


Lekce 1.07 - Ovládání grafického okna

Předchozí  lekce  vás  seznámila  krátce  se základními možnostmi použití grafického  výstupního okna. Naučili  jste se kreslit  do grafické  plochy  pomocí  myši,  ukládat,  načítat  a  vytisknout vytvořený  obrázek.   Nyní  se  seznámíte   s  dalšími  možnostmi grafického okna  a s parametry okna,  které budete potřebovat pro programování grafických  povelů. Poznáte, že  vše, co bylo  možné nastavit v grafickém okně budete  mít možnost zadat pomocí povelu z příkazového okna.

Činnost  grafického okna  je  možné  si představit  jako malířské plátno definovaných  rozměrů, na které se  kreslí perem (anglicky pen). Větší  plochy je možné  vybarvit štětcem (anglicky  brush). Kreslí se  přitom vždy nastavenou barvou.  Systém obsahuje povely pro nastavení  parametrů pera i štětce.  S možnostmi se seznámíte v následujícím textu.

Při kreslení obrazců do grafického  okna se kreslí obrazce čárou, jejíž typ  je definován povelem ImagePenStyle a tloušťka čáry je definována    povelem    ImagePenWidth.    Plocha    nakreslených geometrických   obrazců  je   vyplněna  stylem   zadaným  povelem ImageBrushStyle.

Nejjednodušší  je změna  tloušťky  čáry,  kdy uvádíte  přímo jako parametr povelu  tloušťku čáry v bodech.  Pro změnu tloušťky čáry na pět bodů použijete z příkazového okna následující povel:

ImagePenWidth(5);

Všimněte si,  že pokud nastavíte sílu  čáry povelem z příkazového okna,  použije se  nastavená síla  čáry i  pro následné  kreslení pomocí myši  přímo v grafickém okně.  Obdobná vlastnost je platná i pro  nastavení  všech  parametrů  grafického  okna.  Máte proto možnost libovolně  kombinovat zadávaní povelů  z příkazového okna nebo  jejich  nastavení  pomocí   ikon.  V  budoucnu  budete  mít samozřejmě možnost uvedené parametry nastavit i přímo z programu.

Styl   čáry   máte   možnost   zadávat   povelem   ImagePenStyle. Předdefinováno je šest stylů.  Jako parametr povelu musíte přitom zadat definovaný  styl čáry. Parametr  můžete uvést buď  číselnou hodnotou, nebo jménem konstanty dle následující tabulky:

---------------------------------------------------------

hodnota   konstanta      název stylu

---------------------------------------------------------

   1      psSolid        souvislá čára

   2      psDash         přerušovaná čára

   3      psDot          tečkovaná čára

   4      psDashDot      čerchovaná čára

   5      psDashDotDot   čerchovaná čára se dvěma tečkami

   6      psClear        neviditelná čára

---------------------------------------------------------

Příklady  použití  definice  stylu   čáry  (text  mezi  složenými závorkami nemusíte psát, jedná se o poznámku):

ImagePenStyle(1);         { souvislá plná čára }

ImagePenStyle(3);         { tečkovaná čára }

ImagePenStyle(6);         { neviditelná čára }

ImagePenStyle(psSolid);   { souvislá plná čára }

ImagePenStyle(psDot);     { tečkovaná čára }

ImagePenStyle(psClear);   { neviditelná čára }

Existuje  samozřejmě i  způsob nastavení  barvy čáry.  Nejprve se však budeme muset seznámit s  možnostmi použití barev v počítači. Zobrazování  barev  závisí  na  vlastnostech  videokarty ve vašem počítači. Používáte-li barevnou VGA  kartu, máte možnost zobrazit minimálně  16  barev.  Po  příslušném  nastavení videoadaptéru je možné běžně zobrazovat 256 barev, výjimečně i více. Vy budete mít možnost nastavit v systému libovolnou  barvu z rozsahu 16 miliónů barev.  Skutečně  zobrazená  barva  ale  závisí  na  vlastnostech technického zařízení, protože se zobrazí vždy barva nejbližší.

Hodnotu  barev   je  možné  zadávat  dvěma   způsoby,  které  lze v programu  libovolně  kombinovat.  Pokud  budete  používat pouze základní, šestnáctibarevnou  paletu, můžete tak  učinit zadáváním předdefinované konstanty udávající  anglické jméno barvy. Stejnou barvu máte možnost zadat i pomocí tzv. RGB hodnoty.

Hodnota barev  zadávaná definicí RGB  znamená, že každá  barva je definována jako  poměr kombinace barev  modré, zelené a  červené. Pro  každou barvu  je možné  volit hodnoty  v rozsahu  0 až  256. Násobek těchto hodnot (modrá x  zelená x červená) udává výslednou barvu. Výhodné je používat  tzv. hexadecimálního zápisu, kdy jsou pro  každou barvu  vyhrazeny dvě  pozice čísla  s hodnotami od 00 (číslo 0) až do FF (číslo 256). Při použití hexadecimálního čísla je  nutné  uvést  před  číslem  rozlišovací  znak  $ a číslo musí začínat vždy číslicí (ne písmenem). Viz tabulka hodnot barev:

-------------------------------------------

hodnota    konstanta    název barvy

-------------------------------------------

$000000    clBlack      černá

$000080    clMaroon     kaštanově červená

$0000FF    clRed        světle červená

$008000    clGreen      tmavě zelená

$008080    clOlive      tmavě žlutá

$00FF00    clLime       světle zelená

$00FFFF    clYellow     žlutá

$800000    clNavy       tmavě modrá

$800080    clPurple     tmavě fialová

$808000    clTeal       tmavě modrozelená

$808080    clDkGray     tmavošedá

$0C0C0C0   clLtGray     světle šedá

$0FF0000   clBlue       modrá

$0FF00FF   clFushsia    fialová

$0FFFF00   clAgua       modrozelená

$0FFFFFF   clWhite      bílá

------------------------------------------

Příklady  použití  definice  barvy   čáry  (text  mezi  složenými závorkami nemusíte psát, jedná se o poznámku):

ImagePenColor(clWhite);    { bílá barva čáry }

ImagePenColor(clRed);      { světle červená barva čáry }

ImagePenColor(clBlue);     { modrá barva čáry }

ImagePenColor($0FFFFFF);    { bílá barva čáry }

ImagePenColor($00000FF);    { světle červená barva čáry }

ImagePenColor($0FF0000);    { modrá barva čáry }

Podobně, jako je možné nastavit  parametry kreslené čáry je možné nastavit  parametry vykreslovaných  ploch geometrických  obrazců. Barva plochy se přitom zadává povelem ImageBrushColor. Používá se přitom  výše zadaných  hodnot a  konstant pro  definici parametru barvy.  Příklady   použití  definice  barvy   plochy  (text  mezi složenými závorkami nemusíte psát, jedná se o poznámku):

ImageBrushColor(clWhite);     { bílá barva plochy }

ImageBrushColor(clRed);       { světle červená barva plochy}

ImageBrushColor(clBlue);      { modrá barva plochy }

ImageBrushColor($0FFFFFF);    { bílá barva plochy }

ImageBrushColor($00000FF);    { světle červená barva plochy}

ImageBrushColor($0FF0000);    { modrá barva plochy }

Pro   nastavení   stylu   vyplňování   ploch   se  používá  povel ImageBrushStyle,  kde se  jako parametr  povelu udává  buď číslem definovaný styl, nebo jméno konstanty dle následující tabulky:

-----------------------------------------------------------

hodnota   konstanta      název stylu

-----------------------------------------------------------

   1      bsSolid        vyplní oblast jednou barvou

   2      bsClear        vyplní oblast barvou pozadí

   3      bsHorizontal   vyplní oblast vodorovnými čárami

   4      bsVertical     vyplní oblast svislými čárami

   5      bsFDiagonal    diagonální čáry \\\\\\\

   6      bsBDiagonal    diagonální čáry ///////

   7      bsCros         vodorovné a svislé čáry

   8      bsDiagCross    vodorovné a svislé čáry diagonálně

------------------------------------------------------------

Příklady  použití  definice  stylu  plochy  (text  mezi složenými závorkami nemusíte psát, jedná se o poznámku):

ImageBrushStyle(1);           {plné vybarvení plochy}

ImageBrushStyle(3);           {výplň vodorovnými čárami}

ImageBrushStyle(8);           {výplň diagonálními čárami}

ImageBrushStyle(bsSolid);     {plné vybarvení plochy}

ImageBrushStyle(bsHorizontal);{výplň vodorovnými čárami}

ImageBrushStyle(bsDiagCros);  {výplň diagonálními čárami}

Aby bylo možné kreslit v grafickém okně do přesně určených pozic, musí být zadány souřadnice pro kreslení. Souřadnice určují polohu jednotlivých  bodů kresby.  Souřadnice znamená,  že musíte  uvést vzdálenost v bodech od levého okraje grafického okna a vzdálenost v bodech od  horního okraje grafického  okna. Souřadnicový systém je tedy vztažen  k levému hornímu rohu, který  má souřadnici 0,0. Hodnoty ve směru osy X narůstají směrem doprava, hodnoty ve směru osy  Y  narůstají  směrem  dolů.  Při  zápisu souřadnice se uvádí nejprve osa x,  potom osa y. Je přitom  možné zadávat příkazy pro kreslení mimo  plochu grafického okna,  zobrazí se však  pouze ta část, která je obsažena maximálními souřadnicemi grafického okna.

Aktuální souřadnice se zobrazují  ve stavovém řádku systému vždy, když  máte  nastavenou  myš  nad  grafickým  oknem. Souřadnice je vhodné  si  vyzkoušet  také  na  povelu  Point,  který slouží pro zobrazení bodu  na zadané souřadnici. Povel  nakreslí na zadaných souřadnicích  bod o  zadané velikosti.  Bod se  nakreslí aktuální barvou  pera,  kterou   lze  nastavit  procedurou  ImagePenColor. Vyzkoušejte  si několik  příkladů  pro  seznámení se  se způsobem označování souřadnic grafické polohy:

Point(  0,   0,  2);    { levý  horní roh }

Point(  0, 100,  2);    { levý  dolní roh }

Point(100,   0,  2);    { pravý horní roh }

Point(100, 100,  2);    { pravý dolní roh }

Point( 50,  50, 10);    { uprostřed, větší bod }

Souřadnice   grafického   okna   se   použijí   i   pro  kreslení geometrických tvarů pomocí povelů.  Možné je kreslit čáru povelem Line,  obdélník povelem  Rectangle, kružnici  nebo elipsu povelem Ellipse a obdélník se  zaoblenými rohy povelem RoundRect. Povelem Triangle je možné  nakreslit trojúhelník,  což není  pomocí myši možné.  Pomocí  povelů  je  možné  také  kreslit povelem Arc část křivky  a povelem  Pie kruhovou  výseč. Vyzkoušejte  si kreslení základních geometrických tvarů:

Line(20, 20, 50, 100);          { nakreslí čáru }

Rectangle(10, 10, 100, 100);    { nakreslí čtverec }

Ellipse(30, 30, 120, 120);      { nakreslí kružnici }

Ellipse(30, 30, 120, 60);       { nakreslí elipsu }

Triangle(10,100,55,10,100,100}; { nakreslí trojúhelník }

Arc(0,0,100,100, 50,0,0,50);    {levý  horní čtvrtkruh}

Pie(0,0,100,100, 50,100,100,50) {pravý dolní čtvrtkruh}

Následující lekce


Lekce 1.08  - Výstup do grafického okna

V  předchozí  lekci   jsme  se  naučili   kreslit  do  grafického výstupního  okna z  příkazového okna  a nastavovat  parametry čar a ploch. Nyní  se zaměříme na nastavení  grafické plochy a převod části grafického  okna ze zásobníku Windows  a zpět. Seznámíme se také s možností zápisu textu do grafického okna.

Až dosud jsme měli velikost grafické plochy nastavenou vždy podle toho, jak veliké bylo grafické  okno v okamžiku aktivace grafické plochy. Další změnou velikosti  grafického výstupního okna se již velikost  grafické  plochy   neměnila.  Pokud  proto  potřebujete nastavit velikost  grafické plochy na  požadované rozměry, můžete tak  učinit povelem  ImageInit. Povel  inicializuje grafické okno a nastaví  jeho  velikost  na  rozměry  zadané parametry. Nastaví současně  bílou  barvu  plochy,  styl  štětce  pro plně vybarvené plochy, černou  barvu pera, sílu čáry  na jeden bod. Inicializací se provede výmaz původního obsahu grafického okna. Vyzkoušejte si například následující hodnoty:

ImageInit( 50, 200);

ImageInit(120,  60);

Pokud  potřebujete  znát  parametry  již  inicializované grafické plochy,  můžete  použít  dotazu  GetMaxX a  GetMaxY, který vrací velikost  grafické plochy  zadané strany.  Pokud budete například potřebovat vykreslit bod uprostřed  grafické plochy bez ohledu na velikost  aktuálně  inicializované   plochy,  můžete  tak  učinit povelem:

Point(GetMaxX/2, GetMaxY/2, 5);

V některých  případech by  bylo vhodné  kreslit čáry  do grafické plochy  zadáváním  v  absolutních  přírůstkových  hodnotách místo přesné definice  souřadnic. Proto je  v grafickém okně  definován tzv.  grafický  ukazatel,  který  zaznamenává  pozici  vykreslení posledního  bodu.  Poloha  grafického  ukazatele  se  při použití některých   povelů  automaticky   mění.  Je   možné  ji  nastavit i z programu  povelem MoveTo. Čáry  je možné potom  zadat povelem LineTo definicí  konečného  bodu.  Využitím  uvedených povelů je možné  například nakreslit  libovolný mnohostranný  mnohoúhelník. Vyzkoušejte si následující povely, které by měly v grafické ploše nakreslit čtyřúhelník:

MoveTo( 10,  10);   { přesun na počáteční bod }

LineTo(100,  10);   { horní  hrana }

LineTo(100, 100);   { pravá  hrana }

LineTo(100,  10);   { spodní hrana }

LineTo( 10,  10);   { levá   strana }

Až dosud jsme důsledně dodržovali,  že je možné textové informace vypisovat  zásadně  do  textového   výstupního  okna  a  grafické informace do  grafického výstupního okna. Je  však možné provádět výstup  textových informací  i do  grafického okna.  Nelze přitom použít  povelu Writeln,  se kterým  jsme se  již dříve seznámili. Zobrazovat  lze pouze  textové informace.  Čísla je  nutné předem převést  na řetězce.  K  výstupu  textových informací  se používá povelu TextOut.  Jako parametry povelu se  udávají souřadnice pro zobrazení textu v grafickém okně a řetězec, který se má zobrazit. Povel si můžete vyzkoušet například následujícími příklady:

TextOut(10, 10, "OZOGAN");

TextOut(10, 30, "KLONDAIK");

Text  se  při  použití  povelu  TextOut  vypisuje předdefinovaným fontem. Jeho  změna se provede  buď nastavením přímo z grafického výstupního okna, nebo povely ImageFontColor (barva fontu),  ImageFontName (jméno  fontu),  ImageFontSize (velikost fontu) a ImageFontStyle (styl fontu).

Při nastavení barvy fontu se  zadává u povelu ImageFontColor jako parametr buď  číslo barvy, nebo jméno  konstanty udávající barvu. Tabulka  hodnot  barev  je  stejná  jako  pro nastavení barvy čar a ploch. U  povelu ImageFontName, který nastavuje  jméno fontu se uvádí  přímo  jméno  fontu.  Pokud  není  zadané  jméno v systému Windows  dostupné, použije  se font  s podobným  jménem. Velikost fontu se uvádí v povelu ImageFontSize přímo požadovanou hodnotou. Příklad možných nastavení si  prozkoušejte včetně výpisu textu po každé změně parametrů fontu:

ImageFontColor(clRed);    { nastaví červenou barvu fontu }

ImageFontColor($00FFFF);  { nastaví žlutou barvu fontu }

ImageFontName("Arial CE");{ nastaví font Arial CE }

ImageFontSize(12);        { nastaví velikost fontu 12 bodů}

Pro  nastavení stylu  fontu se  v povelu  ImageFontStyle požívají jako parametr předdefinované hodnoty jednotlivých stylů. Uvádí se součet hodnot požadovaného výsledného stylu:

------------------------------------------

hodnota   konstanta     popis stylu

------------------------------------------

   0      fsNormal      normální písmo

   1      fsBold        tučné písmo

   2      fsItalic      nakloněné písmo

   4      fsUnderline   podtržené písmo

   8      fsStrikeOut   přeškrtnuté písmo

------------------------------------------

Pro  nastavení nakloněného  podtrženého písma  můžete zadat jednu z následujících možností:

ImageFontStyle(2 + 4);                  {součet hodnot}

ImageFontStyle(6);                      {součet 2 + 4}

ImageFontStyle(fsItalic + fsUnderline); {uvedení konstanty}

Pokud budete potřebovat převést  nakreslený obrázek přes schránku Windows (clipboard)  do jiné aplikace, můžete  tak provést pomocí povelu  ImageToClip,   kdy  uvedete  jako   parametry  souřadnice ohraničené  plochy  pro  převod.  Pokud  budete  chtít  například přesunout  do  schránky  obsah  celého  grafického  okna, zadejte příkaz:

ImageToClip(0,0,GetMaxX,GetMaxY);

Načtení obsahu schránky se  provádí povelem ImageFromClip, kdy se jako  parametry uvedou  souřadnice ohraničené  plochy, kam  se má obsah schránky převést. Pokud budete chtít převést obsah schránky Windows na celou plochu grafického okna, zadejte příkaz:

ImageFromClip(0,0,GetMaxX,GetMaxY);

Někoho z vás  již určitě napadlo, že výše  uvedené povely, pomocí kterých  můžete převádět  obrázky do  schránky a  načítat zpět ze schránky  by bylo  možné použít  na přesun  části obrázkuItems nanové místo.  Na  to  je  ale  výhodnější  použít  samostatného  povelu ImageMove, který provede obě  akce najednou. Zadáváte přitom jako parametry   souřadnice  místa,   odkud  se   má  načtení  provést a souřadnice,  kam  se  má  plocha  přenést. Neodpovídá-li přitom poměr stran  zdrojové a cílové  plochy, nebude zkopírovaný  obraz uříznut, ale bude upraven  (deformován) do zadaných souřadnic. To je možné využít k mnoha  zajímavým efektům. Například ke zvětšení části plochy apod.

Někteří  jste již  možná  netrpěliví,  kdy se  začne programovat. Místo  programování  jsme  zadávali  pouze  povely do příkazového okna.  Tím jsme  se vás  snažili naučit  nejprve používat několik základních  povelů programovacího  jazyka. Pokud  by jsme  začali ihned se  základy programování včetně popisu  použití povelů bylo by  toho najednou  moc. Proto  jsme si  nejprve probrali  základy používání povelů a příkazů jazyka a v příští kapitole již začneme opravdu programovat.

Následující lekce


Lekce 1.09 - První program

V  předchozích  lekcích  jsme   si  probrali  základní  informace o používání  příkazového okna  pro zadávání  povelů jazyka  přímo z klávesnice.  Výstup  výsledků  byl  prováděn  do textového nebo grafického  okna.  V   následujících  lekcích  využijeme  získané poznatky již přímo při vývoji vlastních programů.

Programy  se  zadávají  (zapisují)  do  samostatného  okna, které slouží jako  textový editor programu. Pokud  je oknoItems naobrazovce viditelné, můžete  jej aktivovat kliknutím  myši na jeho  plochu. V opačném případě využijte z menu volbu Okna/Program. Pro možnost automatického   vytvoření  základní   kostry  programu  stiskněte klávesy Shift+Ctrl+N.  Pozor, stiskem kláves  Ctrl+N byste zadali vytvoření nového prázdného formuláře, jehož použití si ukážeme až někdy jindy.  Nový prázdný  program můžete také  vytvořit z menu volbu  Soubor/Nový program. Do okna  program se vygeneruje kostra prázdného programu:

Program prg1;

begin

   {zde zapište program}

end;

end.

Program s uvedenou strukturou by bylo možné ihned spustit stiskem klávesy F9. Nevykonával by ale žádnou činnost, protože neobsahuje žádné  příkazy, ale  pouze prázdnou  deklaraci jednotlivých částí programu. Seznámíme se proto nejprve s tím, co musí každý program obsahovat a popíšeme si strukturu programu.

Každý  program  obsahuje  na  svém  počátku  za  klíčovým  slovem 'Program' název  programu, za kterým  musí být uveden  oddělovací středník (';').  Program musí být ukončen  klíčovým slovem 'end', za kterým  musí být uvedena tečka.  Jako na konci věty.  Takto je definován  začátek  a  konec  programu.  Mezi  začátkem  a koncem programu je uvedeno vlastní tělo  programu. Tělo programu má také svůj definovaný  začátek slovem 'begin'  a konec 'end'.  Anglicky začátek a konec. Z toho je  patrné, že se každý program skládá ze segmentů s  pevně stanoveným počátkem  a koncem. Uvnitř  segmentů jsou  potom uvedeny  vlastní výkonné  části programu.

Nový, prázdný vygenerovaný program  je možné ihned spustit volbou z menu Program/Spustit, případně stiskem  funkční klávesy F9 nebo kliknutím myši  na ikoně s obrázkem  běžícího panáčka. Při každém spuštění  programu   je  tento  vždy  nejprve   uložen  na  disk, zkompilován a vykonán. Proto budete vždy při prvním spuštění nově vygenerovaného  programu dotázáni  na jméno  souboru, do  kterého bude program  uložen. Jméno souboru nemusí  být přitom totožné se jménem  uvedeným na  počátku programu.  Doporučuje se  však uvést stejné jméno.

Vygenerovaný prázdný program obsahuje ve svém těle řádku:

{zde zapište program};

Protože je  text řádky uveden mezi  složenými závorkami, bude jej kompilátor  ignorovat. Vše,  co uvedete  mezi složené  řádky bude proto považováno za komentář bez vlivu na činnost programu. Další možností  označení části  programu  za  komentář je  uvedení dvou lomítek za sebou. Další text programu až do konce řádku bude také považován za komentář. Všimněte si přitom, že je text komentáře v programu  uveden  šedou  barvou.   Takto  jsou  v  textu  programu zvýrazněny různé části programu.

Část programu uvedená mezi klíčovými  slovy begin a end se nazývá tzv.  blok programu.  Blok programu  může mít  libovolnou délku a může obsahovat libovolné množství příkazů, případně vložené další bloky  programu. Význam  členění  programu  na bloky,  které jsou ohraničeny  svým počátkem  (begin) a  koncem (end)  si ukážeme  v dalších lekcích věnovaných podmínkám a cyklům v programu.

Výše uvedený  prázdný program obsahuje pouze  základní kostru bez žádného  povelu, který  by vykonával  viditelnou činnost  a proto program skončí, aniž by cokoliv učinil. Využijeme proto získaných zkušeností  a  doplníme  text  programu  o  nám  již známé povely a příkazy. Dávejte si pozor na  to, aby jste ponechali beze změny začátek a konec programu. Pokud by  se tak nestalo, program by se nemusel  vůbec spustit.  Proveďte proto  pouze doplnění  programu o příkaz Writeln dle následující ukázky:

Program prg1;

begin

   {zde zapište program}

   Writeln("Ahoj, zdraví Vás systém KLONDAIK");

end;

end.

Program spustíme funkční klávesou F9 a pokud máte viditelný obsah textového výstupního  okna, zobrazí se v  něm pozdrav od systému. Vyzkoušejte  si  další,  dříve  probrané  povely, které zapisujte pouze  do  části  programu  mezi  slovy  begin  a  end.  Takto by například  mohla  být  upravena  procedura  main včetně zobrazení textového výstupního okna a výmazu předchozího obsahu:

Program prg1;

begin

   ConsoleShow;      { zobrazí a aktivuje textový výstup }

   ConsoleClear;     { vymaže plochu textového výstupu }

   Writeln("Ahoj, zdraví Vás systém KLONDAIK");

end;

end.

Obdobným způsobem  můžete zadat i  povely pro použití  grafického výstupního  okna.  Opět  použijeme  pouze  dříve probrané povely, které zapíšete do části programu mezi  slovy begin a end. Jak již jistě víte, text ve  složených závorkách nemusíte zapisovat, jsou to poznámky, které nemají na činnost programu vliv.

Program prg1;

begin

   ImageShow;                    {aktivuje textový výstup}

   ImageInit(150, 200);          {inicializuje plochu}

   Rectangle(10, 10, 140, 190);  {nakreslí obdélník }

   ImageFontColor(clBlue);       {nastaví modrou barvu fontu}

   ImageFontSize(16);            {nastaví velikost fontu}

   TextOut(50, 30, "KLONDAIK");  { vypíše text }

end;

end.

Jak jsme již  hned v úvodu probíraných lekcí  uvedli, je základem programování  zadání   posloupností  akcí.  To   si  můžete  nyní vyzkoušet.  Projděte  si  předchozí  lekce  a  pokuste  se  z již získaných znalostí sestavit program, který například nakreslí dům a vedle něj  zelený strom. Abyste to  neměli tak složité, uvádíme zde  část programu  pro  nakreslení  domu. Povely  pro nakreslení strumu  již doplňte  sami. Samozřejmě  můžete v  programu provést i další úpravy dle vlastního uvážení.

Program domek;

begin

   ImageShow;                     {aktivace grafické plochy}

   ImageInit(200, 150);           {inicializace graf.plochy}

   ImageBrushColor(clLime);       {nastavení zelené barvy}

   Rectangle(0, 130, 200, 150);   {nakreslení zahrádky}

   ImageBrushColor(clOlive);      {nastavení tmavě zelené}

   Rectangle(20,60, 105, 130);    {nakreslení stěny domu}

   ImageBrushColor(clYelow);      {nastavení žluté barvy}

   Rectangle(28, 70, 48, 90);     {horní levé okno}

   Rectangle(72, 70, 52, 90);     {horní střední okno}

   Rectangle(96, 70, 76, 90);     {horní pravé okno}

   Rectangle(28, 100, 48, 120);   {levé dolní okno}

   Rectangle(72, 100, 52, 130);   {dveře}

   Rectangle(96, 100, 76, 120);   {pravé dolní okno}

   Ellipse(140,20, 170, 50);      {sluníčko}

   ImageBrushColor(clRed);        {nastavení červené barvy}

   Triangle(20,60, 60,25, 105,60);{střecha}

end;

end.

Programy se ukládají  na disk počítače s vámi  zadaným názvem, ke kterému je  připojeno rozlišení '.kl3'.  Programy jsou uloženy  v běžném  čitelném  tvaru  a  bylo  by  je  možné editovat externím editorem.

Takže  jak  vypadá  program  již  víte.  Měli  byste být již také schopni sestavit  jednoduchý program z  posloupnosti vykonávaných povelů. Každý  program můžete přitom samozřejmě  uložit pod jiným názvem.

Následující lekce


Lekce 1.10 - Editace programu

Při zápisu programu se  zapisuje text programu textovým editorem. Jedná   se  o   tzv.  programátorský   editor,  který  neumožňuje nastavovat proměnný  druh ani velikost písma.  Není to ani nutné, protože   zapsaný   text   programu   slouží   pouze  jako  zápis posloupnosti instrukcí pro systém interpretu.

Zápis nového  programu zahájíte stiskem  kláves Shift+Ctrl+N nebo volbou  z menu  Soubor/Nový program.  Do okna  program se vytvoří nová  prázdná struktura  programu, kterou  můžete běžným způsobem doplňovat o  nové řádky programu.  Již existující program  můžete otevřít   stiskem    kláves   Ctrl+O,   nebo    volbou   z   menu Soubor/Otevřít.  Program  máte   možnost  uložit  Stiskem  kláves Ctrl+S nebo  volbou z menu  Soubor/Uložit. Pokud se  jedná o nový program,  musíte  v  dialogovém  okně  zadat  jméno souboru a tím i programu pro  uložení. Pokud již zadaný  soubor existoval, bude přepsán  novou verzí.  Pokud existovala  dřívější verze programu, bude přejmenována  se stejným jménem programu,  ale přípona jména bude nahrazena na *.~kl.

Základy  editace programu  jsou obdobné,  jako u  všech textových editorů. Jakým způsobem zapsat nebo  přepsat text snad není nutné uvádět.  Stejně tak  jak se  dostat na  konec programu, procházet text pořádcích a podobně. Seznámíme se ale s blokovými operacemi, které   jsou  při   programování  velmi   výhodné.  Pokud  budete potřebovat přesunout  část textu na  jiné místo, budete  si muset požadovaný  blok textu  nejprve  označit.  To můžete  provést buď myší, kdy se přesunete na začátek bloku, stisknete tlačítko myši, držíte  je   stisknuté  a  přesunete   ukazatel  myši  na   konec požadovaného  bloku  textu.  Text   zapsaný  v  bloku  se  přitom zvýrazní. Z klávesnice můžete blok textu označit tak, že najedete kurzorem  na požadovaný  počátek bloku  textu, stisknete  klávesu Alt, podržíte  ji stisknutou a  přejedete kurzorem na  požadovaný konec  bloku textu.  Po uvolnění  klávesy Alt  máte označen  blok textu pro  další operace. Pokud  j budete chtít  blok textu pouze vymazat, stiskněte nyní klávesy  Ctrl+Delete. Označený blok textu bude zrušen. Pozor proto při  práci s označeným blokem na uvedené klávesy.

Pro  přesun  označeného  bloku   textu  programu  na  jiné  místo v programu budete muset použít  schránku Windows. Pokud stisknete klávesy Ctrl+C  zkopíruje se text z  označeného bloku do schránky a blok zůstane  v textu stále  zachován. Naopak, pokud  stisknete klávesy  Ctrl+X, bude  blok  textu  převeden do  schránky Windows (z textu programu bude zrušen).  Pokud se přesunete na požadované místo  v  programu,  můžete  do  něj  text  ze  schránky  Windows zkopírovat. To se provede stiskem kláves Ctrl+V. Text ve schránce zůstává  přitom stále  zachován  do  doby dalšího  načtení bloku. Pozor však na  to, že obsah schránky Windows  se může v ostatních aplikací Windows zrušit. Pro přesun textu mezi editorem a Windows jsou v menu systému zařazeny příslušné volby v menu Editace.

Stejně jako  máte možnost přesouvat  text mezi schránkou  Windows a programem,  můžete  podobným   způsobem  převádět  text  povelů zadaných v příkazovém okně systému. Po dobu editace programu máte stále možnost  používat příkazové okno a  tím i například zkoušet parametry   povelu.  Až   získáte  správný   výsledek,  převedete odzkoušený  povel přes  schránku Windows  do programu. Teoreticky můžete  pomocí  bloku  převádět  do  programu  v  případě potřeby i obsah výstupního textového okna.

Až  budete  psát  rozsáhlejší  programy,  budete občas potřebovat nalézt  v textu  programu určitý  text. Po  stisku kláves Ctrl+F, nebo položkou z menu Editace/Hledat  se vám zobrazí dialogový box pro zadání parametrů hledání. Zadáte požadovaný text pro hledání, požadavek zda  hledat pouze celá  slova, jestli rozlišovat  velká a malá  písmena  a  směr  hledání.  Ve  vyhledávání dalšího textu můžete použít klávesu Ctrl+L.

Podobným způsobem máte možnost  zadat náhradu textu jiným textem. Dialogový box  se zobrazí volbou z  menu Hledat/Nahradit. Zobrazí se obdobný dialogový  box jako pro hledání textu,  navíc ale máte možnost uvést text, za který se má provést náhrada.

Možné je editovat najednou několik programů. Pro každý program je přitom nahoře  v okně editoru vytvořena  samostatná záložka. Mezi jednotlivými  programy je  možné se  přepínat jednoduše kliknutím myši na  záložku se jménem programu.  Mezi jednotlivými záložkami je možné pomocí blokových  přesunů převádět části programu. Pokud budete  editovat najednou  více programů,  bude spuštěn  vždy ten program, který bude v okně editoru aktivní.

Následující lekce


Lekce 1.11 - Používání proměnných v programu

Jak jsme si již uvedli v dřívějších lekcích, nazývají se hodnoty  uložené  v  paměti proměnné. Je to proto, že jejich hodnoty mohou v programu  změnit. V programu musíte každou proměnnou před  jejím prvním  použitím nejprve  pojmenovat, případně definovat typ uložené  hodnoty. Velmi  zjednodušeně by  se dalo  napsat, že typ proměnné  je buď  číslo,  znakový  řetězec nebo  logická hodnota. Pokud systém ví,  s jakým typem proměnné má  pracovat, je schopen provádět  průběžné kontroly  hodnot a  hlavně zná,  jaké místo má určité proměnné v paměti rezervovat.

Co  je  číslo,  ví  určitě  každý.  Číslo však může být pouze celé, případně může obsahovat také desetinno část. Znakový řetězec představuje seskupení  libovolných znaků  - písmen.  Logická hodnota uchovává výsledky dotazu a může nabývat pouze hodnot pravda nebo nepravda. Základní přehled možných typů proměnných uvádí následující přehled:

INTEGER	- celočíselný typ pro celá čísla

REAL	- číslo obsahující desetinnou část

STRING	- řetězec znaků relativně neomezené délky

CHAR	- jeden alfanumerický znak

BOOLEAN	- logická proměnná typu  BOOLEAN (True/False)

VARIANT	- proměnná s variabilním obsahem (např. číslo, řetězec)

ARRAY	- proměnná strukturovaného typu s indexovým přístupem

Datový  typ INTEGER  je určen  pro celá kladná i záporná čísla. Neobsahuje proto desetinnou část.

Datový  typ REAL  se používá  pro vyjádření  hodnot s  pohyblivou řádovou  čárkou. To  znamená že  obsahuje desetinnou  část čísla. Vzniká matematickým  dělením čísla typu  integer, jehož výsledkem není celé číslo.

Datový  typ  CHAR  je  určen  pro  uložení jednoho znaku. Znakové konstanty  se  vyjadřují  tak,  že  se  znak uzavře do apostrofů, například 'A', '1',  '&'. Zápis '1' v tomto  případě znamená znak pro vyjádření číslice jedna nikoli číselnou hodnotu.

Datový  typ  STRING  představuje   posloupnost  znaků  typu  CHAR bezprostředně za  sebou. Vytváří tím  tzv. řetězec. Řetězec  musí být  ohraničen apostrofy  nebo dvojitou  uvozovkou. Řetězec  typu string může  mít teoreticky neomezenou délkou.  Prakticky je však omezen kapacitou volné paměti. Prověřováno bylo například použití řetězců o délce téměř 3 Mb.

Datový typ BOOLEAN má pouze dvě možné hodnoty a to True (pro stav pravda)  a False  (pro stav  nepravda). Lze  mu proto  v programu přiřadit buď konkrétní hodnotu True nebo False, případně výsledek vyhodnocení  logického  výrazu.  Logické  výrazy najdou uplatnění zejména   v   podmíněných   příkazech,   příkazech   cyklu  apod. a probereme si je v některé z dalších lekcích.

Nejzajímavější  je typ  VARIANT, který  může obsahovat libovolnou proměnou výše  uvedeného typu. Kromě již  uvedených typů může ale obsahovat  i  pole  proměnných,  se  kterými  je  možné  provádět jednoduše rozsáhlé výpočty za pomoci indexového přístupu. Všechny proměnné jsou ve skutečnosti  vnitřně typu VARIANT, doporučuje se ale  zachovat  pravidlo  rozlišování  typu  proměnných  z  důvodu přehlednosti   programu   a   možného   pozdějšího  důslednějšího vyžadování dodržení používaného typu proměnných.

Proměnná typy ARRAY představuje  datovou strukturu položek, které se  vzájemně  odlišují  pomocí  indexu.  Jako  index  pole slouží hodnoty určitého  typu, který nazýváme typem  indexu pole a který je spolu  s typem složek  pole stanoven popisem  typu pole. Počet složek pole je dán až dále v programu při inicializaci pole.

Výše uvedený seznam typů proměnných slouží pouze jako přehled možných hodnot. Ve skutečnosti jsou všechny proměnné v systému KLONDAIK zpracovávány jako typ VARIANT. To znamená, že použitý typ proměnné závisí ve skutečnosti na obsahu proměnné. Současně s tím je pro každou proměnnou podle jejího obsahu určena množina možných operací s obsahem proměnné. Není například možné sčítat číselnou proměnnou s řetězcovou proměnnou.

Ještě dříve,  než bude proměnná  v programu poprvé  použita, musí být deklarována. Při deklaraci proměnné se uvádí jméno proměnné a případně i typ proměnné. Proměnná  musí být deklarována ještě před svým prvním použitím  ve výpočtech. V programu se před  deklarací proměnných uvádí klíčové slovo VAR. V tomto bloku deklarace proměnných není možné používat žádné povely a příkazy jazyka KLONDAIK. V  deklaraci proměnné se  definuje název proměnné (případně jejich seznam oddělený čárkami)  a typ proměnné. Název proměnné  musí začínat písmenem  a nesmí obsahovat  mezeru.

Vyzkoušejte si  následující příklad zobrazující  způsob deklarace proměnných, dosazení hodnot, výpočty  s proměnnými a výpis hodnot proměnných:

Program variable;

{deklarace proměnných}

var a, b : Integer;

    r    : Real;

    s    : String;

begin; {program}

   a := 100;

   b :=   3;

   r := a/b;                {výpočet   hodnoty}

   s := 'OZOGAN KLONDAIK';  {přiřazení hodnoty}

   Writeln(r);              {vypíše obsah proměnné}

   Writeln(s);              {vypíše obsah proměnné}

end;

end.

Proměnné a, b  jsou deklarovány jako typ Integer,  to znamená, že jsou určeny pro pouze celá čísla.  Proměnná r je typu real a může proto  obsahovat reálné  číslo včetně  desetinných míst. Proměnná s je řetězec. V programu jsme proměnné nejprve v bloku s klíčovým slovem  VAR deklarovali.  Konec deklarace  proměnných není  nijak označen, je ukončen vždy deklarací  jiného bloku. V našem případě bloku s programem.

Ve všech dále uváděných příkladech programů bude uváděna vždy plná deklarace proměnných, ačkoliv není nutné uvádět při deklarci proměnné její typ. Proto je možné deklaraci proměnných ve výše uvedeném příkladu zjednodušit následujícím způsobem:

{deklarace proměnných}

var a, b, r, s;

Jak  již bylo uvedeno, je systém  KLONDAIK ke svým uživatelům  velmi tolerantní a dovolí při deklaraci proměnné uvést  i  neznámý  typ  proměnné,  aniž  by  byla  při překladu programu  nahlášena chyba.  Je dokonce  možné uložit  do proměnné zadaného typu  hodnotu jakéhokoliv  jiného typu. Je  to proto, že jsou všechny proměnné ve skutečnosti definovány  variabilně tak,  že mohou obsahovat jakýkoliv obsah.  Používané typy proměnných  tedy vyjadřují pouze doporučený obsah. Bude však vhodné  zvyknout si na používání uvedených  typů.  Dosáhnete  tak  případného snadnějšího přechodu k jiným počítačovým jazykům, které definice typů přesně vyžadují. Je  také  možné,  že  v  dalších  verzích  systému  KLONDAIK bude používání správných typů proměnných přesně vyžadováno.

Hodnotu proměnné stanovíme jejím přiřazením. To se provede pomocí dvojice znaků :=  mezi nimiž nesmí být mezera.  Na levé straně je přitom uvedena proměnná, jejíž hodnota má být změněna a na straně pravé je  uvedena přiřazovaná hodnota.  Hodnotu můžeme uvést  buď přímo  (číslo,  řetězec)  nebo  jako  výraz.  Co  je  to výraz si přesněji probereme v dalších lekcích.  Nyní bude stačit, pokud si budete  pamatovat,  že  výraz   může  být  například  matematický výpočet.

Deklarovaná proměnná  má ihned po deklaraci  vždy nulový, číselný obsah. Až po přiřazení konkrétní hodnoty se vnitřně její typ mění podle  zadaného  obsahu.   Přiřadíte-li  proměnné  řetězec,  bude obsahovat alfanumerické  znaky. Po dosazení  číselné hodnoty bude proměnná  buď  typu  Integer  (celé  číslo)  nebo  Real  (číslo s desetinami).  Systém  KLONDAIK  si  takto  sám  zajišťuje vnitřní reprezentaci proměnných. Vy sami  budete muset pouze zajistit to, aby  jste  neprováděli  například  matematický  výpočet  dělení s řetězcovou proměnnou.

Dosud  jsme sestavovali  naše programy  tak, že  vykonávaly pouze zadanou posloupnost  akcí bez možnosti  vynechání některých akcí. V následující  lekci  se  proto  seznámíme  s  možností rozdělení činnosti programu na základě vyhodnocení zadané podmínky.

Následující lekce


Lekce 1.12 - Podmínky v programu

Jak jsme  již uvedli v  úvodu probíraných lekcí,  je programování vlastně sestavování  posloupnosti vykonávaných akcí.  V některých případech musíme  mít ale možnost  některou z akcí  buď vynechat, nebo  provést  akce  jiné.  Obojí  na  základě  zadané  podmínky. Například pokud mám v kapse více než dvacet korun, půjdu do kina, jinak půjdu domů na televizi. Zadaná podmínka by se dala v lidské mluvě popsat následujícím vztahem:

POKUD hotovost > 20 POTOM

   půjdu do kina

JINAK

   budu se dívat na televizi

KONEC

Uvedenému zápisu se říká algoritmus a popisuje schematicky postup prováděných akcí.  Vztahu hotovost>20 se  říká podmínka. Podmínka nám tedy určuje,  jaká akce se bude provádět.  Zápis algoritmu je nutné  pro počítač  převést do  programu. Například  následujícím způsobem:

Program hotovost;

var

   hotovost : Integer;

begin

   hotovost := 15;          {zadejte vaši hotovost}

   if hotovost > 20 then

      Writeln("Kino")       {pokud je podmínka splněna}

   else

      Writeln("Televize");  {pokud není podmínka splněna}

end;

end.

Nejprve jsme deklarovali proměnnou  se jménem hotovost. Dále jsme jí v  programu přiřadili určitou  hodnotu. V podmínce  jsme potom zjišťovali,  zda  odpovídá  našim  požadavkům  a  podle toho jsme provedli určitou  akci. Zkuste si zadat  sami různé hodnoty stavu vaší hotovosti.

Podmínka se v programu zadává  klíčovým slovem If, za kterým musí následovat  vyhodnocovaná podmínka.  Za klíčovým  slovem Then  se uvede  akce, která  se provede  při splnění  podmínky. Po uvedení klíčového  slova else  je možné  uvést akci,  která se má provést v případě nesplnění podmínky. Všimněte si, že mezi then a else je možné uvést  pouze jeden příkaz,  který nesmí být  navíc ukončen středníkem. Pokud  byste požadovali uvést  v rámci podmínky  více příkazů,  museli byste  je  uvést  v bloku  ohraničeném klíčovými slovy begin a end. Viz následující příklad:

Program podminka;

var

   plat : Integer;

begin

   plat := 12000;          {zadejte vaši hotovost}

   IF plat > 15000 then

   begin

      Writeln("Do práce jezdím autem");

      Writeln("Bydlím v rodinném domku");

      Writeln("Dovolená u moře");

   end

   else

   begin

      Writeln("Do práce jezdím vlakem");

      Writeln("Bydlím v paneláku");

      Writeln("Dovolená na koupališti");

   end;

end;

end.

Všimněte  si, že  jsme v  programech u  zápisu podmínky  odsadili vykonávané příkazy  na řádku o  tři znaky. Tím  vynikla struktura podmínky a na první pohled  je viditelné její rozčlenění. Není to sice nutnost, přesto však  doporučujeme uvedenou grafickou podobu zápisu programu ve vlastním zájmu dodržovat.

Podmínku představuje logický výraz,  který udává, zda je podmínka splněna nebo  ne. Logické výrazy  mohou mít proto  výsledek pouze pravda  nebo nepravda.  V počítačové  terminologii True  (pravda) nebo  False  (nepravda).  Pokud  byste  chtěli  výsledek podmínky deklarovat  jako  proměnnou,  museli  byste  použít  typ BOOLEAN. Logická podmínka zpracovává nejčastěji matematický výraz. Může to však být i výraz zpracovávající řetězce, to však bude psáno až se naučíme s řetězci důkladněji pracovat.

Matematické  výrazy  porovnávají  nejčastěji  několik  hodnot. Ve výrazu  se  přitom  může  také  použít  libovolného matematického výpočtu, který je v jazyce definován.

Matematické  výrazy zpracovávají  aritmetické operace.  Výrazy se skládají z  operátorů a operandů. Operátor  je přitom porovnávaná hodnota  a  operand  je  způsob  porovnání  hodnot. Operátor může představovat  libovolný matematický  výpočet, který  je v  jazyce definován. Operand  slouží k vyhodnocení  operátorů. Používají se následující dostatečně známé operandy:

    >        větší než

    >=       větší nebo rovno než

    <        menší než

    <=       menší nebo rovno než

    =        rovno

    <>       nerovno

Ve výrazu  je samozřejmě možné  používat závorky. Příklad  výrazů zpracovávajících matematický výpočet:

hotovost >   20

  a/2    <   10

2*(a+b)  = 2*a+2*b

Výrazy můžeme  dále v jedné  podmínce spojit logickým  operátorem s dalším výrazem a vyhodnocovat  tak složenou podmínku. Používají se přitom následující logické operátory:

AND        a zároveň platí

OR         platí jeden nebo druhý výraz

NOT        není pravda, negace výrazu

V   případě   použití   logických    operátorů   mají   tyto   ve vyhodnocování výrazů  přednost před ostatními  operátory. Dále se vyhodnocují  závorky a  až  na  konci matematické  výpočty. Pokud budete chtít zapsat v  programu několik výrazů spojených logickým operátorem,  musíte  umístit  výrazy  do  závorek.  Například pro zjištění  rozsahu   hotovosti  od  10  Kč   do  30  Kč  použijete následující zápis:

if (hotovost >= 10) and (hotovost <= 30) then

   Writeln("Kino")       {pokud je podmínka splněna}

else

   Writeln("Televize");   {pokud není podmínka splněna}

V této lekci  jsme si probrali mimo  možnosti rozvětvení činnosti programu  také způsob  zápisu  podmínek  v programu.  Podmínky se v programu používají i v  dalších příkazech. Například pro zadání počtu   opakování  zvolené   části  programu,   jak  si   ukážeme v následující lekci.

Následující lekce


Lekce 1.13 - Cykly (FOR, REPEAT, UNTIL)

Až doposud  prováděly naše programy pouze  zadaný sled povelů bez možnosti opakování  požadovaných akcí. Pokud  by jsme potřebovali například vykonat  nějakou část programu stokrát,  museli by jsme uvedenou část programu zapsat stokrát.  To by však bylo, jak sami jistě uznáte značně nevhodné a  nepohodlné. V této lekci si proto probereme, jak je možné  na základě vyhodnocení podmínek opakovat zadanou část programu.

Pokud budete potřebovat v programu  provést nějakou akci s předem známým  počtem opakování,  bude nejvhodnější  použít cyklus  typu For. Jedná se o cyklus, ve  kterém je definován tzv. čítač, který udává kolikrát  se má cyklus ještě  provést. Čítač je automaticky systémem  zvyšován  o  jedničku.  Směr  načítání  může být přitom nahoru, nebo dolů:

Program CykFor;

var

   x : Integer;

begin

   ConsoleClear;

   For x := 1 to 10 do {cyklus nahoru}

       Writeln(x);

   For x := 5 downto 1 do {cyklus směrem dolů}

   begin

      Writeln(x*x);

      Writeln(x+x);

   end;

end;

end.

V uvedeném příkladě jsou  v programu dva cykly For.  První z nich zvyšuje stav čítače x směrem  nahoru, druhý směrem dolů. Všimněte si,  že  čítač  musí  být  sice  deklarován  jako  proměnná,  ale přiřazení  počáteční  hodnoty  se  provádí  až  v definici cyklu. Konečná  hodnota čítače  se pro  směr načítání  nahoru zadává  za klíčovým slovem  'to'. Pro směr  načítání dolů je  určeno klíčové slovo 'downto'.  Hodnota řídící proměnné se  nesmí v cyklu měnit. Hodnoty cyklu  jsou vyhodnocovány pouze jednou  a to při spuštění příkazu FOR.

První  cyklus uvedený  v příkladě  obsahuje pouze  jeden cyklicky opakovaný  příkaz (Writeln)  a není  proto nutné  uvádět vymezení bloku. Pokud  ale požadujete, aby  se v cyklu  typu For opakovalo více příkazů, musíte je uvést v bloku mezi begin a end. Viz druhý cyklus  uvedený  v  příkladě.  Pozor  na  to,  že  se na to často zapomíná a taková chyba se těžko hledá.

Pokud budete chtít ve svém programu použít cyklus, jehož ukončení bude  záviset na  splnění  zadané  podmínky, máte  možnost použít cyklus  typu Repeat.  Vnitřní část  tohoto cyklu  se provede vždy minimálně jednou,  protože podmínka ukončení cyklu  je uvedena až na jeho konci:

Program CykRepea;

var

   x : Integer;

begin

   ConsoleClear;

   x := 1;

   Repeat          {začátek cyklu}

      Writeln(RealToStr(x/(x+1),6,3));

      x := x+1;    {zvýšení hodnoty čítače}

   Until x = 10;   {dokud není výraz pravdivý}

end;

end.

Jistě jste si všimli, že u  cyklu typu Repeat nemusíte dávat více příkazů do bloku mezi klíčová slova  begin a end. Je to proto, že cyklus typu Repeat je ohraničen blokem mezi repeat a until.

Příkazy uvedené  mezi klíčovými slovy  Repeat a Until  se provádí tak  dlouho,  dokud  není  výraz  definovaný  na  konci  podmínky pravdivý.  Nesmíte přitom  zapomenout na  zvýšení hodnoty čítače, případně provést jinou akci, která  může mít za následek ukončení cyklu.

Jako další  cyklus můžete použít cyklus  While, který vyhodnocuje podmínku opakování  cyklu vždy na  jeho počátku. To  umožňuje, že pokud  není  podmínka  splněna,  neprovedou  se  příkazy  uvedené v bloku následujícím  za definicí cyklu  ani jednou. To  může být v některých případech  výhodné a je  proto nutné se  při vlastním programování rozhodnout, který druh cyklu má být použit.

Program CykWhile;

var

   x : real;

begin

   ConsoleClear;

   x := 1;

   While x < 5 do     {dokud je výraz pravdivý}

   begin

      Writeln(x*3);

      x := x+1;       {zvýšení hodnoty čítače}

   end;               {konec cyklu}

end;

end.

Pro zápis podmínek při používání  cyklů platí vše co bylo uvedeno u popisu  větvení  programu  příkazem  If.  Stejně  tak  je velmi výhodné  a  hlavně  přehledné  v  textu  programu  odsadit  řádky programu  uvnitř  cyklů  o  tři  prázdné  znaky doprava. Viz výše uvedené příklady. Programy tím  získají na přehlednosti. Současně doporučujeme uvádět  v programu poznámky ve  formě komentáře. Jak jste  si již  mohli všimnout,  poznámky se  uvádějí ve  složených závorkách. Pokud  byste na začátku řádku  uvedli dvě lomítka, byl by text až do konce řádku v programu ignorován.

Při programování cyklů si musíte dát pozor na to, aby byly v těle cyklu  příkazy   umožňující  jeho  ukončení.   Pokud  byste  měli například  cyklus  s  definovanou  podmínkou,  která nebude nikdy splněna, běžel by program stále v  tomto cyklu a museli byste jej ukončit restartem.

V  této  lekci  jsme  se  zabývali  několika  příkazy, které však prováděly podobnou činnost. Příkazy cyklu jsou v programech velmi často používané. Je však nutné  si podle požadovaných akcí vybrat nevhodnější příkaz pro cyklus.

Následující lekce


Lekce 1.14 - Zadání vstupních hodnot

U programů  v předchozích  lekcích jsme  vždy počítali  s tím, že jsou všechna data  pro výpočty zadána přímo v  programu. Aby jsme ale měli možnost ovlivnit průběh  výpočtu, bylo by vhodné zadávat požadované hodnoty přímo dotazem od  uživatele. To je možné dvěma způsoby.  Nejjednodušší  je  použít  příkaz  InputBox.  Ve  druhé polovině kurzu  se dále seznámíme  s možností definice  vstupních formulářů.

Pro zadání vstupní hodnoty proměnné  z klávesnice od uživatele je možné použít  příkaz InputBox. Hodnotu  potom můžeme použít  dále v programu k  dalším výpočtům. Proměnná  musí být přitom  nejprve definována. Možné  je použít pouze číselné  a řetězcové proměnné. Příkaz  InputBox vyvolá  jednoduchý formulář  pro možnost  zadání hodnoty  proměnné. Jméno  formuláře se  zadává prvním parametrem, popis  údaje obsahuje  druhý parametr  a ve  třetím parametru  se zadává počáteční předvolená vstupní hodnota. Vstupní hodnota může být přitom číselná i numerická.

Pro výpis libovolného hlášení uživatele s požadavkem potvrzení je možné  použít  příkaz  ShowMessage,  který  obsahuje pouze jediný parametr, ve kterém se zadává vypisovaná zpráva. Zprávu pro výpis je možné zadat jako číslo, nebo řetězec. Výsledkem je, že program zobrazí  uživateli dialogové  okno se  zadanou zprávou  a čeká na potvrzení od uživatele.

Program InputBox;

var vstup : Variant;

begin

   vstup:= InputBox('Nadpis okna','Popis vstupu:', 'hodnota');

   ShowMessage('Zadal jste: '+vstup);

   vstup:= InputBox('Další vstup','Zadejte hodnotu:', vstup);

   ShowMessage('Zadal jste:'+Chr(13)+vstup);

   vstup:= Random(100)/Random(100);

   vstup:= InputBox('Zadání čísla','Zadejte číslo:', vstup);

   vstup:=StrToReal(vstup);

   ShowMessage('Zadal jste číslo:'

               +Chr(13)+RealToStr(vstup,10,3));

end;

end.

Je  nutné si  uvědomit, že  zadaná hodnota  od uživatele  je typu Variant.  To znamená,  že může  být dále  použita jako číslo nebo řetězec.  Pokud  proto  požadujete  zadání  čísla,  musíte si pro případné další výpočty zajistit, že byla zadána opravdu numerická hodnota. To se provede převedením zadané hodnoty na typ Real nebo Integer. Viz uvedený příklad.

Pokud  byste  potřebovali  rozdělit  vypisovanou zprávu uživateli příkazem   ShowMessage  na   více  řádků,   máte  možnost  použít jednoduchého triku.  Na místě požadovaného  odřádkování vložte do vypisovaného řetězce znak pro nový  řádek. Čili znak s dekadickou hodnotou  13. To  zajistíte  zadáním  funkce Chr(13)  do řetězce. Použití by mělo být jasné z uvedeného příkladu.

Takže  jak zadávat  obsah proměnné  od uživatele  již známe. Víme také,  jak  vypsat  jejich  obsah  s  případnou  další úpravou do textového  výstupního okna.  Zatím  jsme  se ale  nic nedozvěděli o tom, jak  je možné provést výstup  informací na tiskárnu. Pokud nebudeme  počítat   s  tiskovým  výstupem   databází  a  tabulek, neobsahuje  systém  žádné  příkazy  pro  přímý  tisk na tiskárnu. Dovoluje vám ale vytisknout  kompletní obsah textového výstupního okna. Musíte proto nejprve  provést výstup požadovaných informací a textů  do   výstupního  okna  a   potom  příkazem  ConsolePrint vytisknout jeho  obsah. Můžete také po  ukončení programu, kdy se zobrazí požadované  výsledky ve výstupním okně  provést jeho tisk pomocí  ikony  s  obrázkem   tiskárny,  umístěné  v  horní  liště textového výstupního okna.

Se  složitějším,  ale  efektnějším  způsobem  zadávání  vstupních hodnot  se seznámíme  při probírání  tvorby formulářů.

Následující lekce


Lekce 1.15 - Struktura programu

Až  dosud  se  naše  programy  skládaly  maximálně ze dvou částí. V první  části  začínající  slovem   Var  jsme  deklarovali  dále používané proměnné. Ve druhé části  se mezi klíčovými slovy Begin a End  se  uváděly  jednotlivé  příkazy  programu. Takovým částem programu se říká  bloky. Začátek i konec bloku  je vždy definován příslušným klíčovým  slovem. V programu mohou  být mimo deklarací a hlavního příkazového  bloku uvedeny i  další části, se  kterými jsme se dosud neseznámili.  Viz následující schématická struktura programu:

Program xxx;

var

   {deklarace proměnných}

procedure ...

begin

   {deklarace uživatelské procedury}

end;

function ...

begin

   {deklarace uživatelské funkce}

end;

begin

   {tělo hlavního programu}

end;

end.

Deklarace proměnných

Již  znáte.  Jsou  uvedeny   za  klíčovým  slovem  Var.  Obsahují deklarace  proměnných, určení  jejich typu  a případné  stanovení počáteční hodnoty.

Deklarace uživatelských procedur

Procedury jsou uživatelsky definované  příkazy, které umožní lépe rozčlenit program do logických  celků a vícenásobné použití části kódu.  Podrobněji  se  budeme  procedurami  zabývat v následující lekci.

Deklarace uživatelských funkcí

Funkce se  používají pro uživatelskou  definici zpracování výrazů s možností vícenásobného použití v programu. Podrobněji se budeme funkcemi zabývat v následující kapitole.

Tělo hlavního programu

Musí  být uvedeno  v každém  programu. Jeho  prováděním se začíná vždy   činnost  programu.   Všechny  ostatní   definované  funkce a procedury jsou  volány z tohoto hlavního  programu, případně se vyvolávají  jako  podřízené  procedury  a  funkce.  Je vhodné jej uvádět vždy na konci programu.

Bloková  struktura  programu  se  dodržuje  i  u  dalších,  dříve probraných příkazů.  Jedná se o  rozhodovací příkaz If  a všechny příkazy  cyklů For,  Repeat a  While. Všechny  struktury programu musí být  přitom ukončeny svým příslušným  ukončením. Bloky mohou být  do sebe  vnořovány, nesmí  však docházet  k přesahům  jejich konců. Proto  je vhodné dodržovat grafickou  úpravu programu, kdy jsou podřízené části bloků odsazeny od svého počátku a konce. Tím se dosáhne současně přehlednosti programu.

Jak již bylo  uvedeno, skládá se program z  procedur a funkcí. Co jsou to procedury a jak je můžeme využít si ukážeme v následující lekci.

Následující lekce


Lekce 1.16 - Deklarace a používání procedur

Doposud  jsme   v  našich  programech   používali  pouze  příkazy zabudované  v  systému.  Nyní  si  ale  předvedeme, jak si můžeme naprogramovat vlastní příkazy. Určitě jste  se již setkali s tím, že  pokud  byste  seskupili  několik  řádků  programu,  které  se v uvedené sestavě  v programu několikrát opakují  do jednoho, byl by program přehlednější a kratší.  Na to můžete použít procedury, kterým se také někdy říká podprogramy.

Procedury  jsou  volány  z  hlavního  programu,  vykonají příkazy zadané  ve  svém  těle  procedury  a  po  jejím  ukončení předají vykonávání  programu zpět  do hlavního  programu. Procedury  jsou v programu   označeny  klíčovým   slovem  Procedure,   za  kterým následuje  možná deklarace  používaných proměnných  a hlavně blok příkazů  procedury vymezený  klíčovými slovy  begin a  end. Každá procedura  musí  být  pojmenována.  V  programu  se  přitom nesmí vyskytovat  více procedur  se stejným  jménem. Následuje  příklad jednoduché procedury:

Program Proc;

var a, b : Integer;

Procedure nadpis;

begin

   Writeln('**************************');

   Writeln('* počítá systém KLONDAIK *');

   Writeln('**************************');

end;

begin

   ConsoleShow;

   ConsoleClear;

   a:= 20; b:=10;

   nadpis;

   Writeln('součet :', a+b);

   nadpis;

   Writeln('rozdíl :', a-b);

   nadpis;

   Writeln('násobek:', a*b);

end;

end.

V příkladě jsme definovali proceduru se jménem nadpis, která vždy mezi výpočty  vypíše tři řádky  nadpisu. V hlavní  proceduře main již  potom  stačí  zadat  volání  procedury  nadpis. Systém v tom okamžiku vypíše  vždy tři řádky nadpisu.  Tím jsme ušetřili místo a program je přehlednější.

Jistě budete  souhlasit s tím,  že možnost používání  procedur je zajímavá  vlastnost systému,  že by  ale byla  ještě zajímavější, pokud  by   procedura  dokázala  pracovat   s  různými  vstupními hodnotami.  To je  také možné,  musíme však  ve volání  procedury i v  její  deklaraci  uvést  seznam  parametrů  a upravit příkazy uvnitř  procedury  tak,  aby   dokázaly  s  proměnnými  parametry pracovat.   Pokud  byste   například  potřebovali   nakreslit  do grafického  výstupního okna  na zadanou  pozici čtverec  s délkou hrany 20 bodů, mohli byste použít následující příklad:

Program Ctverce;

var k : Integer;

Procedure ctverec(x : Integer; y : Integer);

begin

   Rectangle(x, y, x+20, y+20);

end;

Begin

   ImageShow;

   ImageInit(100,100);

   ImageBrushColor(clYellow);

   Rectangle(5, 5, 95, 95);

   ImageBrushColor(clRed);

   For k:= 10 to 70 do

   begin

      if (k=10)or(k=40)or(k=70) then

      begin

         ctverec(10, k);

         ctverec(40, k);

         ctverec(70, k);

      end;

   end;

end;

end.

Procedura  ctverec   je  volána  se   dvěmi  parametry  uvedenými v závorce,  oddělenými  čárkou.  Procedura  má  ve  své  definici deklarovány proměnné x a y,  které se dále v proceduře používají. Do  uvedených proměnných  se  převedou  hodnoty zadané  ve volání procedury. Procedura potom se  zadanými hodnotami pracuje. Tak je umožněno předávat proceduře ke zpracování vstupní hodnoty.

Pokud  má procedura  pracovat s  předávanými parametry,  je nutné v deklaraci  procedury uvést  za  jejím  jménem v  závorce seznam použitých proměnných. Počet  deklarovaných proměnných v proceduře musí přitom vždy odpovídat  počtu předávaných parametrů ve volání procedury. V seznamu se uvádí jméno proměnné a za dvojtečkou její typ. Pokud  používá procedura více  parametrů, jsou parametry  od sebe odděleny středníkem. Jestliže  jsou parametry stejného typu, je  možné  uvést  v  deklaraci  procedury  jejich  výčet oddělený čárkami, za  posledním parametrem výčtu  potom uvést jejich  typ. Jsou proto možné následují dva způsoby zápisu:

Procedure tisk(x : Integer; y : Integer, s: String);

Procedure tisk(x,y : Integer; s: String);

Jak již bylo uvedeno dříve, je uvádění typu proměnné v deklaracích pouze doporučeno, není však bezpodmínečně vyžadováno. Proto je možné uvést v deklaraci procedury pouze seznam předávaných parametrů bez uvedení typu proměnné:

Procedure tisk(x, y, s);

Zkuste nyní  upravit proceduru ctverec i  její volání tak, abyste mohli zadávat ve volání procedury  i délku strany čtverce. Musíte proto  přidat  do  volání  procedury  další  parametr. Stejně tak budete  muset přidat  parametr do  deklarace procedury.  Parametr potom použijete pro zadání délky hrany čtverce.

Při  programování  procedur  si  musíte  dát  pozor na to, abyste v rámci   procedury  nepožadovali   provedení  stejné  procedury. Takovým  procedurám  se  říká  rekurzivní  volání.  Rekurze nejsou v systému KLONDAIK umožněny.

Pomocí deklarace procedur dosáhnete  toho, že si můžete definovat své  vlastní příkazy.  Je přitom  možné volané  proceduře zadávat předávané parametry.  Není ale možné, aby  procedura vracela zpět výsledek  provedení procedury.  To  vám  umožní až  funkce, které budou probrány v následující lekci.

Následující lekce


Lekce 1.17 - Deklarace a používání funkcí

V předchozí  lekci jsme  si ukázali,  jak si  nadefinovat vlastní příkaz ve formě  procedury. Mnohdy by ale bylo  výhodné, pokud by jsme  mohli  volat  proceduru  jako  součást  výrazu tak, aby nám vrátila  procedura výsledek,  se kterým  bysme  ve výrazu  dále pracovali. Něco takového  je sice možné, používají se  k tomu ale funkce.

Funkce  je definovaná  část programu,  která je  volaná z  výrazu a provádí určité výpočty, případně  akce. Při ukončení funkce nám vrací  požadovaný výsledek,  se kterým  se ve  výrazu, odkud byla funkce  volána dále  pracuje. Uveďme  si proto  příklad deklarace a použití funkce  v programu, který  nám provádí výpočet  mocniny zadaným exponentem (53 = 5 x 5 x 5, výsledek je 125).

Program Funkce;

Function umocni(x, y : Integer): Integer;

var  k, v : Integer;

begin

   v := x;          {převezneme základ}

   For k := 1 to y do

       v := v*x;    {násobíme opakovaně základem}

   result := v;     {předáme výsledku funkce}

end;

begin

   ConsoleShow;

   ConsoleClear;

   Writeln(umocni(2,9));  {vypíše hodnotu 1024}

   Writeln(umocni(3,3));  {vypíše hodnotu   81}

   Writeln(umocni(5,2));  {vypíše hodnotu  125}

end;

end.

Funkce se  od procedury liší  svým zahájením a  ukončením, kdy je výpočet  funkce  uveden  klíčovým  slovem  Function.  V deklaraci funkce  lze navíc  na rozdíl  od procedury   uvést za seznamem přebíraných parametrů  i typ výsledku, který  funkce vrací. Počet deklarovaných  proměnných v  proceduře musí  vždy odpovídat počtu předávaných  parametrů ve  volání procedury.  V seznamu  se uvádí jméno proměnné a za dvojtečkou  je možné uvést její typ. Pokud používá procedura více parametrů,  parametry od sebe  odděleny středníkem. Jestliže jsou  parametry  stejného  typu,   je  možné  uvést  v  deklaraci procedury jejich výčet oddělený  čárkami, za posledním parametrem výčtu potom uvést jejich typ.

Všimněte  si, že  pokud uvedeme  v deklaraci  funkce proměnné pro převzetí parametrů, jsou tyto  proměnné automaticky deklarovány s uvedeným typem. Navíc je možné  ve funkci deklarovat vlastní nové proměnné, které mohou být použity  pouze ve funkci, ve které byly deklarovány.

Další proměnná, která je  automaticky deklarována je proměnná pro předání výsledku. Nazývá  se vždy Result a je  typu dle deklarace funkce.  Do  proměnné  uložíme  výslednou  hodnotu funkce, kterou chceme předat volanému programu. Například:

Result := výraz;

Jak již bylo uvedeno dříve, je uvádění typu proměnné v deklaracích pouze doporučeno, není však bezpodmínečně vyžadováno. Proto je možné uvést v deklaraci procedury pouze seznam předávaných parametrů bez uvedení typu proměnné. Výše uvedenou funkci je proto možné také zadat následujícím způsobem:

Function umocni(x, y);

var  k, v;

begin

   v := x;          {převezneme základ}

   For k := 1 to y do

       v := v*x;    {násobíme opakovaně základem}

   result := v;     {předáme výsledku funkce}

end;

Při programování funkcí si musíte dát pozor na to, abyste v rámci funkce nepožadovali  provedení stejné funkce.  Takovým funkcím se říká  rekurzivní  volání.  Využívají  se  například  při  výpočtu faktoriálu nebo známých hanojských věží. Rekurze nejsou v systému KLONDAIK umožněny.

Následující lekce


Lekce 1.18 - Návrh a zápis programu

V předchozích  lekcích jsme  se seznámili  se základními  příkazy systému  a strukturou  programu. Poznali  jsme, že  program tvoří posloupnost operací, větvení programu  podle podmínek a opakování částí  programu. Poznali  jsme, že  program tvoří  i data,  která program zpracovává. Nyní by bylo vhodné seznámit se s tím, jak by měl nový program vznikat.

Ještě  dříve,  než  začneme  psát  nový  program  by jsme si měli ujasnit  požadovanou   činnost  programu.  Nejlépe   tak,  že  se seznámíme nejprve s tím, jaké výsledky nám má program poskytnout. Podle toho si musíme zadat  počáteční podmínky a vstupní hodnoty. Dalším krokem  by již měl být  rozklad problému tak, aby  jsme si v blocích  definovali činnost  programu od  počátečních hodnot až k požadovaným  výstupním hodnotám.  Pokud například  zjistíme, že musíme nejprve provést výpočet  vstupních hodnot a potom výsledné hodnoty zobrazit, můžeme již začít psát kostru programu:

begin

   vypocet;

   zobrazeni;

end

Tím   máme   současně   zadány   jména   procedur,  které  musíme naprogramovat. Dále již budeme  provádět postupně rozklad dílčích problémů na další podproblémy. V případě složitých zadání se může dokonce  stát,  že  nejsme  schopni  sestavit  ihned  program pro vyřešení  dílčích problémů,  ale musíme  znovu definovat  rozklad problému na  menší související posloupné  akce. Uvedeným způsobem se  snažíme  rozložit  počáteční  zadání  problému  do postupných kroků, které dále zjemňujeme. Na konci  by jsme se měli dostat do fáze,  že  řešení  již  zapisujeme  přímo  v  programovém jazyce. Souběžně  s  tím  upřesňujeme  požadovaná  data  a jejich uložení v proměnných definovaného typu.

Výše  uvedenému způsobu  řešení  programů  se říká  metoda návrhu programu shora dolů. To proto,  že od celkového zadání přecházíme postupně  k  jednotlivým  dílčím  úkolům,  které nakonec zadáváme v programovém jazyce.

Velmi  důležité  je  také  zaznamenání  postupu  řešení  ve formě poznámek. Nyní se vám zdá  všechno jasné. Pokud se však dostanete k programu po delší  době, nemusí vám být ihned  jasné, proč jste postupovali  uvedeným způsobem.  Zaznamenávejte si  proto maximum poznámek k řešení problému. Poznámky mohou být v programu dvojího druhu. Pokud uvedeme na začátku  řádky dvě lomítka za sebou, bude systém  celý řádek  ignorovat a  bude jej  považovat za poznámku. Takto je  možné například psát delší  komentáře, nebo při různých pokusech můžeme zneplatnit celý řádek  programu, aniž by jsme jej museli vymazávat.

Druhou možností zápisu vlastního komentáře do programu je použití složených  závorek.  Vše,  co  je  v  programu uvedeno mezi levou a pravou  složenou  závorkou  je  považováno  za  komentář  a  je systémem ignorováno.  Tento druh poznámek je  výhodné používat na konci řádku  pro zápis popisu provedené  činnosti řádku. Takto je možné označit jako poznámku i  text uprostřed řádku, nebo několik řádků najednou.

Při  zápisu   programu  se  snažte   dodržovat  grafickou  úpravu programu, kdy jsou těla bloků odsazena od svého záhlaví o několik znaků.  Takový program  je potom  i na  první pohled lépe čitelný a snáze se hledají případné chyby.

Systém nerozlišuje  v programu malá a  velká písmena. Přesto bude vhodné,  pokud budete  dodržovat jednotnou  dále popsanou úpravu. Jména procedur  a funkcí přebíraná  z knihoven systému  je vhodné zapisovat tak, aby vždy první  písmeno slova bylo velké. Složeným slovem se rozumí jméno složené  z několika slov, mezi nimiž nesmí být  mezera.  Například  ImageInit,  ConsoleClear  apod.  Stejným způsobem   je   vhodné   pojmenovat   vlastní  víceznaková  jména deklarovaných proměnných.

Následující lekce


Lekce 1.19 - Typ ARRAY - proměnné typu pole

Pokud budete potřebovat v programu více proměnných, například pro uložení  výsledků   výpočtů,  můžete  výhodně   použít  deklaraci proměnné typu  array (pole). Pole je  seskupení proměnných, které jsou dostupné indexem pole udávající pozici prvku v poli. Výhodou je,  že se  jedná o   jednu proměnnou,  jejíž deklarace  je velmi jednoduchá. Není  také nutné znát  rozsah pole již  při deklaraci proměnné,  ale  je  možné  použít  rozsah  pole  zadaný  až  dále v programu v závislosti na předchozích výpočtech.

Pole  si  můžete  jednoduše  představit  jako  řadu hodnot. Každá hodnota  je   uváděna  jako  jeden   prvek  pole.  Pro   přístup k jednotlivým  hodnotám musíte  přitom použít  tzv. index, kterým zadáváte pořadí prvku (hodnoty)  v poli. Celková dimenze (rozsah) pole  se  zadává  při  inicializaci  pole.

Pole může být jednorozměrné nebo dvourozměrné. Jednorozměrné pole je  vlastně řada  hodnot a  index se  zadává jako pořadí hodnoty. Dvourozměrné  pole   je  možné  si   jednoduše  představit  jako šachovnici.  Index pro  přístup  do  dvourozměrného pole  v tomto případě  udává  řádek  a  sloupec  šachovnice.  Při definici pole nemusí  začínat  rozsah  pole  vždy  od  jedničky.  Je  možné  si definovat  hodnotu  počátečního  a  koncového  indexu.

S proměnnou  typu Array  (pole) se  pracuje jinak,  než s  běžnou proměnnou. Proměnnou  musíte nejprve běžným  způsobem deklarovat. Abyste ale  mohli k proměnné  přistupovat jako k  poli, musíte ji ještě  dále v  programu inicializovat.  Inicializací se  současně zadává rozsah indexových  polí. Inicializace jednorozměrného pole se  provádí  funkcí  Array1Create.  Parametry  udávají  počáteční a koncový  prvek pole.  Při inicializaci  obsahuje pole  proměnné typu  variant s  nedefinovaným stavem  a je  proto vhodné  ještě nulovat položky pole na počáteční hodnoty:

pole:=Array1Create(0, 9);

For x:= 0 to 9 do Array1Set(pole, x, 0);

Uvedený  příklad   inicializoval  pole  s  indexy   od  0  do  9. Inicializované pole obsahuje tedy deset  prvků - s indexy od nuly do  9.  Obdobným  způsobem  se  inicializuje  i dvourozměrné pole funkcí  Array2Create. První  dva parametry  uvádějí rozsah  prvků v jednom  rozměru (dimenzi),  další dva  parametry udávají rozsah pole v druhém rozměru (dimenzi). Následující část programu

v:=Array2Create(1, 3, 0, 9);

For x:= 1 to 3 do

begin

   For y:= 0 to 9 do Array2Set(pole, x, y, 0);

end;

inicializuje dvourozměrné pole, které je možné si představit jako mřížku  obsahující tři  řádky  (první  dva parametry)  krát deset sloupců (poslední dva parametry). Index  řádků je v tomto případě počítán od jedničky, index sloupců je ale počítán od nuly.

Po  inicializaci  obsahuje  každý  prvek  pole  prázdnou  hodnotu nedefinovaného stavu.  Je proto vhodné  po ihned po  inicializaci pole před jeho dalším použitím naplnit pole počátečními hodnotami požadovaného typu.  Možnost počátečního naplnění  pole je uvedena ve výše uvedených inicializacích pole.

Pro kontrolu počtu rozměrů  a správnosti inicializace pole můžeme použít  funkci  ArrayDimCount,  která  nám  vrací  počet  rozměrů (dimenzí)  pole, případně  nulovou hodnotu,  pokud není  proměnná typu pole (Array).

V mnoha případech, například při  programování cyklů, bude vhodné mít z programu  přístup k rozsahu indexování polí.  K tomu slouží funkce Array1Low a Array1High pro jednorozměrné pole a Array2Low a Array2High pro dvourozměrné pole.  Díky tomu je například možné nulovat položky pole následujícím způsobem:

{jednorozměrné pole}

mesice := Array1Create(1, 12);

For x:= Array1Low(mesice) to Array1High(mesice) do

    Array1Set(mesice, x, Month(x));

{dvourozměrné pole}

rok := Array2Create(1, 12, 1, 30);

For x:= Array2Low(rok,1) to Array2High(rok,1) do

    For y:= Array2Low(rok,2) to Array2High(rok,2) do

        Array2Set(rok, x, y, 0);

Jak  jste  již  možná  poznali,   je  pro  zadání  nového  obsahu jednorozměrného pole nutné použít  proceduru Array1Set s uvedením parametru jména  proměnné, indexu prvku  a zadání nového  obsahu. Například:

Array1Set(v, poradi, 'obsah');

Obdobně  se pro  dvourozměrné pole  zadává obsah  pole procedurou Array2Set.  První  parametr  udává  opět  jméno  pole,  další dva parametry  udávají  index  prvku  a  poslední  parametr udává novou hodnotu:

Array2Set(v, radek, sloupec, 'obsah');

Pro  načtení  hodnoty  jednorozměrného  pole  se  používá  funkce Array1Get, kde  udává první parametr jméno  pole a druhý parametr zadává index pole:

Writeln(Array1Get(v, poradi));

Obdobně  se  přistupuje  k   obsahu  dvourozměrného  pole  funkcí Array2Get,  kde  udává  první  parametr  jméno  pole  a další dva parametry udávají index pro přístup  na konkrétní řádek a sloupec pole:

Writeln(Array2Get(v, radek, sloupec));

Využití  proměnných typu  pole je  velmi rozsáhlé.  Jak již  bylo uvedeno, je  vhodné je především  používat pro seskupení  většího počtu hodnot, ke kterým je  možné přistupovat pomocí indexu pole. Indexovaný  přístup  přitom  umožní   zpracování  obsahu  pole  v cyklech. K  zadání počátečního indexu  pole můžete použít  funkce Array1Low (jednorozměrné  pole) a Array2Low (dvourozměrné pole). Konečný index  pole lze zjistit  funkcí Array1High (jednorozměrné pole) a Array2High (dvourozměrné pole).

Získané znalosti  o programování polí  můžete vyzkoušet například na  výpočtu  průměrné  hodnoty  náhodné  veličiny  funkcí Random. Nejedná se o zcela efektivní  příklad, protože není nutné náhodné veličiny  ukládat  do  pole.  Nyní  nám  jde  spíše  o vysvětlení principu používání polí.

Program Prumer;

Var

   x      : Integer;

   soucet : Real;

   cislo  : Array;

begin

   ConsoleClear;

   ConsoleShow;

   {inicializace jednorozměrného pole}

   cislo := Array1Create(1, 100);

   {cyklus pro celé pole}

   For x := Array1Low(cislo) to Array1High(cislo) do

   begin

       Array1Set(cislo,x,Random(100)); {náhodné číslo}

       Writeln(Array1Get(cislo,x));    {výpis hodnoty}

   end;

   {výpočet součtu a průměru uložených hodnot}

   soucet := 0;

   For x := Array1Low(cislo) to Array1High(cislo) do

       soucet := soucet + Array1Get(cislo, x);

   Writeln('-------------');

   Writeln('Součet:',soucet);

   Writeln('Průměr:',soucet/Array1High(cislo));

end;

end.

V programu je deklarováno pole  se jménem cislo, obsahující deset prvků. K jednotlivým prvkům pole můžete přistupovat pomocí indexu pole.  Pole  nejprve  naplníme  náhodnými  hodnotami. Následně je sečteme a vypočítáme a zobrazíme jejich průměr.

V dalším  příkladě  již  budeme  pracovat  s dvourozměrným polem. Všimněte  si, že  prvky pole   mohou být  různého typu.

Program Pole;

var v: Array;

    i: Integer;

    x: Integer;

begin

   ConsoleClear;

   ConsoleShow;

{  založíme dvourozměrné pole}

   v:=Array2Create(1, 3, 0, 9);

   Writeln('Dimenze pole:', ArrayDimCount(v));

{  pro kontrolu zobrazíme rozsah polí}

   Writeln('1.dimenze rozsah Low  =', Array2Low (v, 1));

   Writeln('1.dimenze rozsah High =', Array2High(v, 1));

   Writeln('2.dimenze rozsah Low  =', Array2Low (v, 2));

   Writeln('2.dimenze rozsah High =', Array2High(v, 2));

{  naplníme pole počátečními hodnotami}

   for i:= 0 to 9 do Array2set(v,1,i,i);

   for i:= 0 to 9 do Array2set(v,2,i,100/(i+1));

   for i:= 0 to 9 do Array2set(v,3,i,'Hodnota='+IntTostr(i));

{  vypíšeme obsah polí}

   Writeln(); Writeln('Obsah pole1:');

   for i:= 0 to 9 do Writeln(Array2get(v,1,i));

   Writeln(); Writeln('Obsah pole2:');

   for i:= 0 to 9 do Writeln(Array2get(v,2,i));

   Writeln(); Writeln('Obsah pole3:');

   for i:= 0 to 9 do Writeln(Array2get(v,3,i));

end;

end.

S proměnnou  typu  Array  (pole)  je  možné  provádět  mimo  výše uvedených operací navíc i běžné  přiřazení obsahu jiné proměnné.

Program prg;

Var pole, pok: array;

begin

   {inicializace pole}

   pole:=Array1Create(1, 3);

   {naplnění hodnotou}

   Array1Set(pole,1, 'KLONDAIK');

   {přesun kompletního pole do jiné položky}

   pok := pole;

   {kontrolní výpis obsahu položky pole}

   Writeln(Array1Get(pok,1));

end;

end.

Jak jste si jistě všimli, proměnná pok byla sice deklarována jako pole,  nebyla  však   inicializována.  Inicializace  se  provedla automaticky  přiřazením  nového  obsahu  proměnné položkou, která byla jako pole inicializována. Současně  s tím se do proměnné pok dosadily i hodnoty z původní proměnné.

Jistě uznáte, že možnost tvorby  a používání proměnných typu pole je velmi zajímavá. Mějte však  na paměti, že zvláště dvourozměrná pole  zabírají  v  paměti  dost  prostoru.  Buďte proto opatrní a nepoužívejte rozsáhlá  mnohapoložková pole. Po  inicializaci pole je vhodné  se voláním funkce  ArrayDimCount přesvědčit, zda  byla zadaná inicializace pole opravdu bezchybně provedena.

Další  jednoduchý  příklad  práce  s  polem  je uveden v programu DIMENZE.KL3.  Jednoduchý příklad  použití  polí  můžete  nalézt  v  programu SPORTKA.KL3.

Následující lekce


Lekce 1.20 - Knihovna pro zpracování řetězců

V předchozích  lekcích  jsme  pracovali  převážně  s  numerickými hodnotami. Dalším typem dat mohou  být znaky, čili řetězce. Jedná se  o  seskupení  znaků  a  písmen.  Jeden  alfanumerický znak je definován typem Char. Řetězec se  potom skládá z několika znaků a je definován typem String. Proměnná typu String může obsahovat teoreticky neomezený počet znaků. Prakticky je velikost řetězce omezena velikostí volné paměti. Začátek a konec  řetězce je při zápisu v programu vymezen uvozovkami, nebo apostrofy.

Program prg;

Var s : string;

    c : Char;

begin

   s := 'OZOGAN KLONDAIK';

   c := 'K';

end;

end.

S řetězci  je  možné  provádět   spoustu  operací.  Je  možné  je slučovat, kopírovat část podřetězce, doplňovat znaky na libovolné místo,  převádět na  číslo,  zjišťovat  délku řetězce  a podobně. Veškeré  uvedené   funkce  obsahuje  knihovna   pro  zpracování řetězců, se kterou se nyní seznámíme.

Jestliže  potřebujete  zjistit  délku  řetězce,  použijte  funkci Length:

Writeln(Length(s));

Pokud  potřebujete z  řetězce vybrat  pro další  zpracování pouze jeho  část, můžete  použít funkci  Copy, kde  zadáte mimo řetězce i počáteční pozici a délku podřetězce:

Writeln(Copy("KLONDAIK",2,3)); {vypíše 'LON'}

Velmi  častým požadavkem  je možnost  vyjmout z  řetězce určitou část,  případně  do  řetězce   vložit  jiný  řetězec.  K  vyjmutí podřetězce se používá procedura Delete, která ze zadaného řetězce zruší  od zadané  pozice  zadaný  počet znaků.  Naopak, procedura Insert vloží na zadanou  pozici do řetězce požadovaný podřetězec. Obě funkce mění současně délku řetězce.

Program znaky1;

Var s : String;

begin

   s := 'Program OZOGANKLONDAIK';

   Writeln('Dékla řetězce: ', Length(s));

   Insert('*', s, 15);  {vloží znaky do řetězce}

   Writeln(s);

   Delete(s, 1, 8);     {vyjme znaky z řetězce}

   Writeln(s);          {vypíše: 'OZOGAN*KLONDAIK'}

   Writeln('Dékla řetězce: ', Length(s));

end;

end.

Pokud  potřebujete  zjistit,  zda  se  v  řetězci  nalézá hledaný podřetězec, lze  použít funkci Pos.  Funkce vrací pozici  prvního znaku hledaného podřetězce.

s := 'OZOGAN KLONDAIK';

Writeln(Pos('KLON',s)); {vrací číslo 8}

Každý znak  v řetězci má svou  číselnou hodnotu, udávající pozici znaku  v ASCII  tabulce, ve  které je  umístěno všech 256 možných znaků. ASCII  tabulka je pevně  definována a platí  i mimo systém KLONDAIK. Spodní část  tabulky do pozice 125 je  vždy pevně dána. Horní  část tabulky  již záleží  na definici  národního prostředí počítače (např.  písmena s diakritikou). Na  začátku tabulky jsou umístěny  netisknutelné  znaky,  které  se  používají pro obsluhu tiskárny. Dále  jsou již definovány jednotlivé  znaky. Každý znak řetězce  můžete  proto  rozložit  na  jednotlivé  znaky  a jejich hodnoty. V programu je definována funkce Ord která provádí převod hodnoty znaky na číselnou pozici v tabulce. Opačná funkce je Chr, která vrací dle zadaného čísla odpovídající znak z ASCII tabulky:

Program Znaky2;

Var x : Integer;

begin

   Writeln(Ord('A'));  {vypíše ASCII hodnotu znak znaku 'a'}

   Writeln(Ord('a'));  {vypíše ASCII hodnotu znak znaku 'A'}

   Writeln(Chr(65));   {vypíše znak tabulky zadané hodnoty}

   For x:= 65 to 90 do

       Write(Chr(x));  {vypíše abecedu - velká písmena}

   Writeln();

   For x:= 97 to 122 do

       Write(Chr(x));  {vypíše abecedu - malá písmena}

   Writeln();

end;

end.

Všimněte  si, že  velká písmena  v tabulce  začínají na pozici 65 a malá písmena  na pozici 97,  jejich rozdíl je  proto 32. To  by bylo možné  využít například pro převod  řetězce na malá písmena, jak  ukazuje  následující  příklad.

Program Znaky3;

Var s : String;

    x : Integer;

begin

   s := 'ozOgaN kLonDaiK';

   For x := 1 TO Length(s) do

   begin

      If (Ord(Copy(s,x,1))>=65) and (Ord(Copy(s,x,1))<=90) then

         s := Copy(s,1,x -1)

           + Chr(Ord(Copy(s,x,1))+32)

           + Copy(s, x+1,Length(s)-x)

   end;

   Writeln(s);     {vypíše 'ozogan klondaik'}

end;

end.

Pro převod řetězce na velká  písmena se používá funkce UpperCase, na malá  písmena potom funkce LowerCase.  Převádí se znaky včetně diakritických znamének:

s := 'ozOgaN kLonDaiK';

Writeln(LowerCase(s)); {převede na malá  písmena}

Writeln(UpperCase(s)); {převede na velká písmena}

Pravděpodobně  velmi často  budete potřebovat  převádět čísla  na řetězce a obráceně. Jednodušší je přitom převod čísel na řetězec. Pro převod  čísla typy Integer  se používá funkce  IntToStr. Tato funkce nedokáže převést desetinnou část  čísla. K tomu se používá funkce RealToStr,  která vám umožní zadat  nejen délku čísla, ale i počet  desetinných  míst.  Řetězec  na  číslo  je  nejvhodnější převádět  funkcí   StrToReal.  Nenumerické  znaky   budou  přitom ignorovány. Pro  případné zjištění nenumerického  znaku v řetězci můžete použít funkci Val.

Program znaky4;

Var i : Integer;

    r : Real;

    s : String;

begin

   i := 123;

   r := 123.45;

   Writeln('číslo:'+IntToStr(i));      {vypíše 'číslo: 123'}

   Writeln('číslo:'+RealToStr(i,6,2)); {vypíše 'číslo: 123.00'}

   Writeln('číslo:'+RealToStr(r,6,2)); {vypíše 'číslo: 123.45'}

   r := StrToReal('123.45')/3;         {převede řetězec na číslo}

end;

end.

Knihovna pro práci s řetězci  obsahuje i další použitelné funkce.

Následující lekce


Lekce 1.21 - Knihovna pro práci se soubory

Pokud jste již zkušený uživatel systému OZOGAN KLONDAIK, mohou se vám hodit  funkce pro kopírování  souborů a práci  s adresářem na disku. Musíte si však dávat pozor, abyste nezrušili důležitá data a soubory.

Jména souborů a adresářů se v následujících funkcích předávají ve tvaru řetězce.  Pokud se soubor nachází  ve stejném adresáři jako program, není nutné uvádět k  němu cestu (jméno adresáře). Stejně tak  nemusíte uvádět  označení disku,  pokud se  jedná o aktuální disk.

Asi nejčastěji používanou funkcí  bude kopírování souborů. K tomu nám poslouží funkce FileCopy, ve které musíte uvést jako parametr jméno zdrojového souboru a  jméno cílového souboru. Funkce přitom vrací logickou hodnotu o úspěšnosti kopírování:

If FileCopy('PROGRAM.KL3','PROGRAM.BAK') then

   Writeln('Záložní kopie programu byla vytvořena');

Soubor se nemusí zkopírovat  v mnoha různých případech. Například soubor pro  kopírování nemusí existovat,  na disku je  málo místa a podobně.  Seznámíme  se  proto  s  funkcemi,  které nám zajistí zjištění informací  o disku, volném  prostoru a podobně.  Nejprve bude  vhodné zjistit,  zda soubor  skutečně existuje.  K tomu nám poslouží funkce FileExists:

If FileExists('C:\CONFIG.SYS') then

   Writeln('Soubor opravdu existuje');

Dalším krokem  by mohlo být zjištění  velikosti souboru, aby jsme mohli následně zjistit,  zda se nám kopie souboru  na disk vejde. K tomu se  použije funkce FileSize, která  vrací velikost souboru v bajtech.  Záporný  výsledek  signalizuje  neexistenci  zadaného souboru:

Writeln('Velikost:',FileSize('C:\AUTOEXEC.BAT')/1024, ' Kb');

Soubor můžeme kromě kopírování také přejmenovat, případně zrušit. Zde ale opatrně. Přejmenování  souboru provádí funkce FileRename, ve  které se  musí jako  parametry uvést  jméno původního souboru a jméno nového souboru. Funkce  vrací logickou hodnotu indikující úspěšnost operace:

If FileRename('XXX.XXX','YYY.YYY') then

   Writeln('Přejmenování souboru proběhlo v pořádku');

Soubor lze samozřejmě také vymazat funkcí FileDelete, ve které se uvede  jméno  souboru  pro  zrušení.  Funkce  vrací opět logickou hodnotu udávající úspěšnost výmazu souboru:

If FileDelete('YYY.YYY') then

   Writeln('Soubor YYY.YYY byl zrušen');

Další  skupina   procedur  a  funkcí   se  zabývá  přímo   diskem a disketami, kdy  je možné zjistit jejich  velikost, volné místo, ale  například  také  vytvářet  a  rušit  adresáře.  Pro zjištění velikosti  (kapacity)  disku  nebo   diskety  se  použije  funkce DiskSize. Jako  parametr se přitom  uvádí číslo disku  od A (A=1, B=2, C=3, ..). Funkce vrací  velikost v bajtech. Pokud je vrácena záporná  hodnota,  je  tím  indikována  buď neexistence zařízení, případně   nepřipravenost  disketové   mechaniky  (není  založena disketa):

x := DiskSize(1);

If x < 0 then

   Writeln('Velikost disku A: ', x/1024/1024, ' Mb')

else

   Writeln('mechanika A: není připravena');

Obdobným způsobem  je možné zjistit volnou  kapacitu disku funkcí DiskFree. Funkce  se dá opět použít  pro indikaci nepřipravenosti zařízení. V následujícím příkladě se však zjišťuje volná kapacita disku C a tak se předpokládá, že opravdu existuje.

Writeln('Velikost disku C:', DiskSize(3)/1024/1024, ' Mb');

Writeln('Volná kapacita C:', DiskFree(3)/1024/1024, ' Mb');

Další  funkce  se  již  zabývají  přímo  adresáři.  Funkce GetDir zjišťuje  jméno aktuálního  adresáře. Parametr  zadává opět číslo disku od A. Nulový  parametr přitom předpokládá aktuální diskovou jednotku.  Změnu pracovního  adresáře provedete  funkcí ChDir, ve které uvedete jméno adresáře, do kterého se chcete přepnout.

d := GetDir(0);

If ChDir('\pokus') then

begin

   Writeln('Změna adresáře proběhla v pořádku');

   Chdir(d);       {přepneme se zpět do původního adresáře}

end else

begin

   Writeln('Zadaný adresář zřejmě neexistuje !');

end;

Pokud  potřebujete  založit  nový  adresář,  můžete použít funkci MkDir, kde  uvedete jako parametr jméno  adresáře. Zadaný adresář nesmí  přitom  existovat,  nebo   to  nesmí  být  jméno  souboru. V případě  chyby vrací  funkce nenulovou  hodnotu. Adresář můžete naopak zrušit funkcí RmDir, kde  uvedete opět jako parametr jméno adresáře pro zrušení. Adresář musí být přitom prázdný ! V případě úspěšnosti vrací funkce nulovou hodnotu.

If MkDir('pokus') = 0 then {pokud je adresář úspěšně založen}

   RmDir('pokus');         {tak ho opět zrušíme, ať nezavazí}

Jak již bylo uvedeno, musíte být při práci s funkcemi pro obsluhu souborů a  adresářů zvlášť opatrní,  protože případná chyba  může mít nedozírné následky !

Následující lekce


Lekce 1.22 - Spouštění dalších programů

V předchozích lekcích jsme si  ukázali a probrali mnoho možností, které systém KLONDAIK umožňuje. Ještě  dříve, než se seznámíme se způsobem zpracování databází, tabulek a  grafů si ukážeme, jak je možné z jednoho programu spouštět další programy.

Jak  jsme  již  uvedli,  je  vhodné  psát  programy tak, aby byly přehledné. Proto je vhodné  rozsáhlé programy rozdělit na několik samostatných částí. Takové programy se lépe sestavují a zkoušejí. Po  ověření  jejich  správné  činnosti  je  možné  je použít jako procedury  nebo  funkce  rozsáhlejšího  projektu.  To je umožněno funkcí  RunPrg, která  spustí v  parametru zadaný  program. Pokud bude  volaný program  ukončen s  naplněním proměnné  Result, bude hodnota  převedena  do  nadřazeného  programu  k  možnému dalšímu použití.

Program Run;

begin

   RunPrg("ZNAKY1"); {spustí program ZNAKY1.KL3}

   RunPrg("ZNAKY2"); {spustí program ZNAKY2.KL3}

   RunPrg("ZNAKY3"); {spustí program ZNAKY31.KL3}

end;

end.

Voláním  funkce  RunExe máte  možnost  spustit  přímo ze systému externí EXE program, který provede  požadovanou akci. Může to být přitom například textový editor, nebo také program pro zpracování požadovaných  výpočtů a  podobně. Je  nutné však  přitom dbát  na specifika  systému Windows.  Ne všechny  programy je  možné takto spustit bez  problémů. Například programy pro  systém MS-DOS nebo rezidentní  programy  mohou  způsobit  někdy  těžko předvídatelné situace.

Protože systém  Windows pracuje v režimu  multitaskingu, může být spuštěno  najednou  několik  programů,  které  běží souběžně. Při jejich  spouštění  funkcí  RunExe  je  možné pro programy určené pro operační systém MS-DOS zadat, zda má systém KLONDAIK  čekat na dokončení zadaného  programu a až potom pokračovat ve vykonávání následující řádky programu. Programy určené pro operační systém Windows na své ukončení nečekají. Čekání na ukončení spuštěného programu je nutné například dodržet pokud budete volat ze   systému   KLONDAIK   postupně   několik  externích  programů zpracovávající uzavřenou celkovou úlohu:

RunExe('PROGRAM1.EXE', '', '', True ); {čeká na ukončení}

RunExe('PROGRAM2.EXE', '', '', False); {nečeká na ukončení!}

Později se seznámíme i s možností spouštění podřízených formulářů systému  KLONDAIK. Získáte  tak  možnost  ke tvorbě  i rozsáhlých projektů.

Následující lekce


Lekce 1.23 - Co je to databáze, z čeho se skládá

Databáze  je  uspořádaná  skupina  informací,  které  mají k sobě definovaný vztah.  Všechna data, mající k  sobě vztah tvoří jeden záznam.  Záznam  se  skládá  z  polí.  Každé  pole  je  jedním ze zásadních údajů záznamu a u  všech záznamů se opakuje. Na příklad v adresáři  tvoří  jedna  adresa  jeden  záznam.  Tento záznam se skládá  z různých  dat uložených  v polích  (např. ulice,  město, telefon),  která  mají  vzájemný  vztah  -  patří  jedné  adrese. V adrese  je například  jedním z  polí poštovní  směrovací číslo, které  se u  všech záznamů  jako údaj  opakuje. U každého záznamu však  může  mít  různou  hodnotu.  Databáze  mohou  být například adresáře,  telefonní  seznamy,  seznamy  zaměstnanců, ceník zboží a podobně.  Tedy  jakékoliv  souhrny  údajů,  které  se  ve stálé skladbě opakují.

Všechna data  pro jeden objekt databáze  se nazývají záznam, nebo také věta databáze. Například v databázi zákazníků obsahuje každý záznam   všechna   data   jednoho   zákazníka.   Záznam  databáze představuje v databázovém okně jeden řádek.

Každá  z  informací  uvnitř  záznamu  se  nazývá  položka záznamu a obsahuje  pro  každý  záznam  jeden  konkrétní  údaj. Například v databázi adres je to jméno, ulice, PSČ apod. V databázovém okně představuje  položka  databáze  vždy  jeden  sloupec.  V  prvním, barevně odlišeném  řádku sloupce je přitom  uvedeno jméno položky databáze.

Položky  databáze  jsou  pojmenovány  a  jejich  jména jsou spolu s dalšími  vlastnostmi  databáze  uloženy  ve struktuře databáze. Struktura databáze  tedy definuje, jaké  pole bude databáze  mít, jak  budou velká  a jaký  typ  dat  do nich  bude možné  zadávat. Struktura databáze  je přitom fyzicky její  součástí a je uložena vždy na jejím začátku.

Struktura databáze obsahuje následující údaje:

Jméno  pole -  může obsahovat  maximálně 10  znaků, to  je písmen a číslic včetně podtrhávací pomlčky. Jméno položky databáze nesmí obsahovat mezeru a musí začínat písmenem.

Typ pole - určuje typ uložených dat a možnost prováděných operací s daty. Typ pole  může být řetězcový (typ C),  numerický (typ N), datumový (typ D), logický (typ L)  a memo pole (typ M) - poznámka libovolné délky).

Délka pole -  určuje maximální počet znaků v  poli. U numerických položek se  udává délka včetně znaménka  (mínus), desetinné tečky a desetinných míst.

Počet  desetinných  míst  -  určuje  u  numerických položek počet desetinných míst za desetinnou tečkou.

Následující lekce


Lekce 1.24 - Ovládání databázového okna

Na  začátku programu  je  databázové  okno vždy  prázdné. Nejprve musíte  požadovanou   databázi  otevřít.  To   provedete  nejlépe kliknutím na  příslušnou ikonu v  horní liště databázového  okna, případně procedurou DbfUse.

Pokud  je otevřena  databáze, jsou  její data  zobrazena na  celé ploše  databázového okna.  Data  jsou  zobrazována v  mřížce, kdy přestavují  řádky  mřížky  záznamy   databáze  a  sloupce  mřížky prezentují  položky databáze.  V horním,  barevně odlišném prvním řádku  mřížky jsou  zobrazeny názvy  položek databáze.  Zobrazená mřížka se v databázových jazycích nazývá BROWS.

Aktuální  databázový záznam  je  v  mřížce barevně  zvýrazněn. Ve stejné  řádce zcela  vlevo je  současně na  stejném řádku v úzkém sloupci   zobrazen   formou   trojúhelníku   ukazatel   databáze. Kurzorovými  klávesami máte  možnost se  přesouvat v  databázi na libovolnou  položku  kteréhokoliv  záznamu.  Navíc  máte  možnost použít pro rychlý přesun v databázi následující klávesy:

Home	- přesun na první položku záznamu (první zleva)

End	- přesun na poslední položku záznamu (první zprava)

PageUp	- přesun o obrazovku nahoru

PageDown	- přesun o obrazovku dolů

Ctrl+Home	- přesun na první záznam databáze

Ctrl+End	- přesun na poslední záznam databáze

V horní části databázového okna  je umístěn tzv. navigátor, který slouží také  k přesunu mezi záznamy  databáze. Navigátor obsahuje čtyři ikony  sloužící k přesunu  na první záznam,  záznam o jeden vpřed,  záznam o  jeden vzad   a na  poslední záznam.  Pátá ikona v navigátoru  se zobrazuje  pouze v  případě, že  máte nastavenou možnost editace a slouží k  označení záznamu ke zrušení, případně k obnovení platnosti záznamu.

V dolní části  databázového okna se  ve stavovém řádku  zobrazuje číslo  aktuálního   záznamu  spolu  s   celkovým  počtem  záznamů v databázi. Uvedené počty jsou odděleny lomítkem.

Nevyhovuje-li  vám zobrazení  datové mřížky,  můžete změnit  myší její vzhled. Velikost položek  máte možnost změnit jednoduše tak, že  uchopíte myší  čáru mezi  názvy položek  v horní části datové mřížky a  posunete ji požadovaným směrem.  Tím dojde k rozšíření, případně k zúžení sloupce položky databáze. Obdobným způsobem lze změnit pořadí zobrazování položek v  datové mřížce. K tomu musíte uchopit  myší  jméno  položky   umístěné  v  horní  řádce  mřížky a přesunout  jej  na  požadované  místo.  Uvedenými  úpravami  se databáze  žádným  způsobem  nemění  a  pokud  ji  znovu otevřete, zobrazí se v původním tvaru.

Po  otevření  databáze  je  standardně  nastaveno,  že není možné záznamy z  databázového okna měnit (editovat).  Možnost změny dat nastavíte  z PopUp  menu, které  se zobrazí  po kliknutí  pravého tlačítka myši na ploše datové mřížky. Kliknutím na volbu 'Možnost editace' se přepíná možnost editace záznamů databáze.

Přidávat  nové  záznamy  do  databáze  lze  také pouze pokud máte nastavenou možnost  editace databáze. Pro  přidání nového záznamu stiskněte  klávesu  Insert.  Zobrazí  se  nový,  prázdný  záznam, u něhož můžete  zapsat obsah položek.  Záznam se ihned  zařadí na konec  databáze. Pokud  je  databáze  indexována, zařadí  se nový záznam podle nastaveného indexu.

Současně  s možností  editace  je  zpřístupněna i  možnost rušení záznamů z databáze. Zrušení záznamu databáze se provede kliknutím na  příslušnou ikonu  navigátoru. Aktuální  záznam databáze  není zrušen  ihned.  Je  pouze  označen  ke  zrušení.  Záznam je možné obnovit  opětovným  kliknutím  na  ikonu  v navigátoru. Informace o tom,  zda je  aktuální databázový  záznam určen  ke zrušení  je zobrazována  v  dolní  části  databázového  okna  v jeho stavovém řádku. V takovém případě je za číslem aktuálního záznamu zobrazen text  [Deleted]. Záznamy  určené ke  zrušení je  možné z databáze definitivně zrušit pouze voláním procedury DbfPack.

Pokud chcete,  aby se záznamy označené  ke zrušení nezobrazovaly, máte možnost  nastavit uvedený požadavek  v popup menu,  které se zobrazí  po stisku  pravého tlačítka  myši na  ploše databázového okna.  Volba "Zobrazovat  zrušené záznamy"  působí jako  přepínač a pokud je  volba označena, budou se  záznamy označené ke zrušení v databázovém   okně   zobrazovat.   Současně   budou   přístupné i z  programu. Pozor  na to,  že pokud  změníte nastavení,  budou aktuálně zobrazené  záznamy na ploše  databázového okna obsahovat původní zobrazení.  Až po jejich  novém načtení do  okna se budou zobrazovat  správné   záznamy.  Proto  se   doporučuje  po  změně nastavení  zobrazování  zrušených  záznamů  provést v databázovém okně  klávesou  PageUp  nebo  PageDown  přechod  na jiné záznamy. Nastavení  přístupnosti záznamů  označených ke  zrušení je  možné provést i procedurou  DbfSetDeleted. Nastavená volba přístupnosti zrušených záznamů je po novém  spuštění systému obnovena tak, jak byla nastavena při posledním ukončení systému.

Vpravo  od  navigátoru  je  umístěna  ikona  pro  tisk  databáze. Databázi  je  možné  tisknout   pomocí  tzv.  reportů,  což  jsou předdefinované popisy tiskových sestav.  Ty je možné přitom velmi jednoduše měnit  vizuálně myší na ploše  návrhu sestavy. Dále lze zadávat skupinování sestavy, součtování  a podobně. Podrobněji se návrhem sestav zabývá samostatná lekce kurzu.

V pravé horní části databázového okna je umístěn výběrový box pro zadání  způsobu  řazení  záznamů.  Pokud  je databáze indexována, obsahuje box názvy indexů a vy máte možnost jejich výběrem změnit způsob řazení záznamů dle požadovaného indexu s možností rychlého vyhledávání    požadovaného   záznamu.    Podrobnější   informace o indexování databáze budou uvedeny v následujících lekcích.

Následující lekce


Lekce 1.25 - Navigace v databázi

V předchozí  lekci  jsme  si  ukázali,  jak  listovat  v databázi v databázovém okně. Nyní se seznámíme s obdobnými možnostmi přímo z programu.

Každý  záznam  v  databázi  je  očíslován  dle  pořadí  zápisu do databáze. První  záznam má proto  pořadové číslo jedna,  poslední zapsaný záznam má pořadové číslo shodné s celkovým počtem záznamů v databázi.  Číslo  aktuálního  záznamu  včetně  celkového  počtu záznamů v  databázi je uveden  ve spodní části  databázového okna v jeho  stavovém  řádku.  Celkový  počet  záznamů  databáze vrací funkce  DbfReccount,   číslo  aktuálního  záznamu   vrací  funkce DbfRecNo.  Pokud byste  chtěli vypsat  uvedený zápis  z programu, můžete použít následujícího zápisu:

Writeln(IntToStr(DbfRecNo)+"/"+IntToStr(DbfReccount));

Pokud potřebujete přejít na  požadované číslo záznamu, můžete tak učinit voláním  procedury DbfGo, ve  které uvedete jako  parametr číslo požadovaného záznamu. Pro  přechod na první záznam databáze použijte  volání  procedury  DbfGoTop.  Skok  na  konec  databáze provedete procedurou DbfGoBottom.  Jestliže budete chtít listovat v databázi  pouze   po  jednom  záznamu,   můžete  použít  volání procedury DbfSkip,  ve které uvedete jako  parametr počet záznamů o které se  má přesunout ukazatel v  databázi. Kladné číslo uvádí počet  záznamů směrem  na konec  databáze, záporné  číslo znamená skok směrem na začátek databáze.

Pokud byste  se pokoušeli přejít  voláním procedury DbfSkip  před první  záznam bude  nastaven  ukazatel  databáze na  první záznam databáze. Současně  však bude nastaven  příznak začátku databáze, který je přístupný voláním funkce DbfBof. Obdobně, pokud byste se pokoušeli provést  skok v databázi  za jeho konec,  bude nastaven příznak konce databáze, který je přístupný voláním funkce DbfEof. Využitím  výše  uvedených  funkcí  můžete  realizovat  procházení databáze od jejího počátku na konec (nebo obráceně):

Program Dbf_1;

begin

   ConsoleClear;

   ConsoleShow;

   If DbfUse("CENIK") then       {pokud se otevřela databáze}

   begin

      DbfGoTop;                  {skok na začátek databáze}

      Writeln("Začátek databáze");

      While not DbfEof do        {dokud není konec databáze}

      begin

         Write(IntToStr(DbfRecNo)+"/"+IntToStr(DbfReccount)," ");

         Writeln(DbfReadStr("NAZEV"));

         {... další akce se záznamem}

         DbfSkip(1);             {skok na další záznam}

      end;

      Writeln("Konec databáze");

      DbfUse("");                {databázi uzavřeme}

   end else

      ShowMessage('Databázi nebylo možné otevřít !');

   end;

end;

end.

Použitím  výše uvedené  kostry programu  máte možnost zpracovávat jednotlivé  záznamy databáze.  V následující  lekci se  proto již seznámíme  s  možnostmi  přímého  zpracování databázových záznamů (čtení a záznam položek databáze).

Následující lekce


Lekce 1.26 - Zadávání výrazů v jazycích xBase

Pokud  budeme  potřebovat  zpracovat  obsah databázových položek, budeme  muset používat  ve výrazech  přímo syntaxi  jazyků xBase. Jsou to jazyky a systémy,  které jsou přímo určeny pro zpracování databází stejného  typu, který se  používá i v  systému KLONDAIK. Jedná se  o Dbase, FoxPro  a Clipper, které  prodělaly dlouholetý vývoj. Stejné výrazy v syntaxi jazyků xBase budeme muset používat i my při nastavování podmínek, filtrů a indexování.

Výrazy  v   jazycích  xBase  mohou   vracet  výsledky  logického, řetězcového nebo numerického typu. Pro přímé vyhodnocování obsahu databází  lze   použít  volání  funkcí   DbfEvalLog  pro  získání logického výsledku,  DbfEvalNum pro získání  numerického výsledku a DbfEvalStr pro  získání   řetězcového  výsledku.   Parametrem uvedených  funkcí   je  vždy  řetězec   obsahující  výraz  zadaný v syntaxi jazyků xBase.

Výrazy  jazyků xBase  se  zadávají  jako řetězce,  které obsahují přímo požadovaný  výraz. Ve výrazech se  používají funkce a jména položek  databáze spojená  operátory. Ve  výrazech se  při zápisu jmen funkcí a názvů databázových položek nerozlišují velká a malá písmena. Pro spojování výrazů se používá následujících operátorů:

    .AND.    a zároveň

    .OR.     nebo

    .NOT.    negace

Nejjednodušší jsou logické výrazy, ve kterých většinou zjišťujeme obsah položek  databáze. Pokud zadáte chybný  výraz, bude vrácena hodnota False.

Procedure Test;

var log : boolean;

begin

   {cena je větší, než 100}

   log := DbfEvalLog("CENA>100");

   {cena je větší než 100 a zároveň menší nebo rovna 200}

   log := DbfEvalLog("CENA>100.AND.CENA<=200");

   {cena je menší než 100 nebo obsah položky TYP je 'DISK'}

   log := DbfEvalLog("CENA<100.OR.TYP='DISK'");

   {první tři písmena obsahu položky NAZEV jsou 'FAX'}

   log := DbfEvalLog("SUBSTR(NAZEV,1,3)='FAX'");

end;

Jak  jste si  jistě všimli,  lze jedním  vyhodnocením kontrolovat obsah  několika položek,  navíc odlišného  typu. Pozor  si budete muset  dávat,  pokud  budete  chtít  zadat  obsah řetězce. Použít budete  muset  kombinaci  znaků  apostrof  a  uvozovka.  Viz výše uvedený příklad.

Podobným způsobem  lze vyhodnocovat i  výrazy vracející numerické výsledky. Pokud zadáte chybný výraz, bude vrácena nulová hodnota.

{hodnota položky CENA}

Writeln(DbfEvalNum("CENA"));

{výpočet ceny včetně DPH}

Writeln(DbfEvalNum("CENA/100*(100+DPH)"):10:2);

{délka databázové položky NAZEV}

Writeln(DbfEvalNum("LEN(NAZEV)"));

{pozice výskytu znaku 'A' v položce NAZEV}

Writeln(DbfEvalNum("AT('A',NAZEV)"));

Lze také samozřejmě vyhodnocovat  výrazy obsahující výsledek typu řetězec. Pokud zadáte chybný výraz bude vrácen prázdný řetězec.

{hodnota položky NAZEV}

Writeln(DbfEvalStr("NAZEV"));

{prvních deset znaků položky NAZEV}

Writeln(DbfEvalStr("SUBSTR(NAZEV,1,10)"));

{obsah položky NAZEV převedený na velká písmena}

Writeln(DbfEvalStr("UPPER(NAZEV)"));

{cena včetně DPH převedená na řetězec}

Writeln(DbfEvalStr("STR(CENA/100*(100+DPH),12,2)"));

Jak již bylo uvedeno, vrací  chybně uvedený výraz svou implicitní hodnotu. Stane  se tak v  případě, že je  uveden například chybný výraz  xBase,  neexistující  jméno  položky  databáze  a podobně. Implicitní  hodnota  je  vrácena   pokud  použijete  volání  výše uvedených  funkcí  a  nebudete  mít  v  aktuální  datové  oblasti otevřenou žádnou databázi. Pokud  budete chtít prověřit správnost zadaného  výrazu, můžete  použít funkci  DbfEvalTest, která výraz nejen prověří, ale současně také vrací typ použitého výrazu.

Následující lekce


Lekce 1.27 - Čtení a zápis dat databáze

V předchozích  lekcí kurzu  jsme se   seznámili s  tím, co  je to databáze a jak se pohybovat  v záznamech databáze. Umíme již také editovat  položky databáze,  avšak pouze  za použití databázového okna. Nyní si proto ukážeme, jak lze přímo z programu nejen měnit obsah položek databáze, ale jak je také číst a dále zpracovávat.

Jak  jsme se  již dříve  seznámili, mohou  být položky v databázi řetězcové, numerické, logické a  datumové. S každým typem položky se přitom musí v  programu pracovat odlišným způsobem. Speciálním typem položky  je typ Memo,  což je poznámka  libovolné délky, se kterou  systém KLONDAIK  dokáže pracovat  pouze při  zobrazení na formuláři.  Nejjednodušší  způsob  jak  zjistit  typ  položky  je zobrazit  si  z  databázového  okna  dialog  pro nastavení filtru databáze, ve kterém je přesný popis databáze zobrazen.

S jednou  možností  čtení  obsahu  položek  databáze  jsme se již seznámili v  předchozí lekci kurzu.  Je to použití  vyhodnocování výrazů, kdy  zadáme jako výraz  například pouze jméno  požadované proměnné. Další  možností je použití funkce  DbfReadDat pro čtení datových  položek,   DbfReadLog pro  čtení   logických  položek, DbfReadNum pro  čtení numerických položek a  DbfReadStr pro čtení řetězcových položek. Jako parametr volání funkce se použije jméno čtené položky databáze. Pro čtení memopolžky se používá funkce buď DbfReadBin, nebo DbfReadMem v závislosti na obsahu a délky memopoložky. Platí přitom, že pokud zadáte chybné jméno položky, případně použijete pro čtení položky funkci jiného typu, bude vrácena implicitní prázdná hodnota.

Příklad čtení položek databáze:

Writeln(DbfReadDat("DATUM"));

Writeln(DbfReadNum("CENA"));

Writeln(DbfReadStr("NAZEV"));

Ještě dříve, než se seznámíme s možností zápisu hodnot do položek databáze,  ukážeme  si,  jak  vytvořit  v  databázi nový, prázdný záznam. Používá se k  tomu procedura DbfAppendBlank, která doplní do databáze jeden nový, prázdný  záznam a nastaví na něj ukazatel databáze. Následně potom máme  možnost naplnit jednotlivé položky databáze požadovanými hodnotami.

Pro zápis do databáze se používají opět procedury rozdělené podle typu položek  databáze. Pro zápis do  datových položek se použije procedura DbfWriteDat, pro zápis  do logických položek se použije procedura  DbfWriteLog,  pro  zápis  do  numerických  položek  se použije procedura DbfWriteNum a  pro zápis do řetězcových položek se  použije  procedura  DbfWriteStr. Do memopoložek můžete zapisovat podle obsahu procedurou buď DbfWriteMem, nebo DbfWriteBin.

Příklad zápisu do položek databáze:

DbfWriteDat("DATUM", "24/12/1997");

DbfWriteDat("DATUM", DbfEvalStr("DTOC(DAY())"));

DbfWriteNum("CENA",  100);

DbfWriteNum("CENA",  DbfReadNum("CENA")*1.1);

DbfWriteStr("NAZEV", "KLONDAIK");

DbfWriteStr("NAZEV", DbfEvalStr("SUBSTR(NAZEV,1,10)"));

Jak již bylo několikrát uvedeno, dosti specifickou položkou databáze je memopoložka dovolující zápis téměř neomezeného obsahu. Konkrétněji se jedná o maximálně 64 Kb textu, pokud má být zobrazen v okně, případně do 16 Mb, pokud s memopoložkou budeme pouze pracovat přímo z programu. Pro převod souboru do memopoložky použijte proceduru DbfFileToBin, pro převod memopoložky dou souboru slouží procedura DbfBinToFile.

Při  zápisu do  databáze musíte  dávat pozor  na to,  že ztratíte nenávratně   předchozí   obsah    položek   a   pokud   použijete k experimentům přímo databáze používané například vámi používaným ekonomickým programem, můžete ztratit i mnohem více. Nepoužívejte proto  ve vlastním  zájmu v  systému KLONDAIK  databáze využívané jinými systémy.

Následující lekce


Lekce 1.28 - Nastavení filtru, podmínky xBase

Pokud   budete  potřebovat   omezit  počet   záznamů  zobrazených v databázi,  máte možnost  nastavit  filtr  na zobrazení  dat. To znamená, že určíte podmínky, za kterých mají být záznamy databáze přístupné.  Můžete  například  nastavit,  že  mají  být  z ceníku přístupné pouze záznamy, u nichž je  cena menší než 100. Lze také nastavit sloučení několika podmínek.  Například cena je větší než 100 a zároveň menší než  200. S takto filtrovanou databází můžete provádět další  akce, například tisknout  sestavu, do které  však budou zahrnuty pouze záznamy vyhovující zadanému filtru. Databáze zůstává přitom beze stále beze  změny a nevyhovující záznamy jsou stále  v databázi  obsaženy. Po  zrušení filtru  budou dále běžně přístupné.

Filtr na databázi můžete nastavit voláním procedury DbfSetFilter, kdy  se  zadává  přímo  podmínka  filtru  v syntaxi jazyků xBase. Příklad zadání výše uvedené podmínky:

DbfSetFilter("CENA>100.AND.CENA<200");

Pokud  byste chtěli  nastavit filtr  pro cenu  menší než 100 nebo větší než 200, museli byste zadat:

DbfSetFilter("CENA<100.OR.CENA>200");

V podmínce  filtru se  používají  přímo  funkce v  syntaxi jazyků xBase (databázové jazyky Dbase, FoxPro, Clipper), se kterými jsme se již seznámili v předchozích lekcích kurzu.

Další  možností  nastavení  filtru  je  použití dialogového okna, který vyvoláte  volbou 'Nastavit filtr' z  PopUp menu zobrazeného po  kliknutí pravým  tlačítkem myši  na ploše  databázového okna. Zobrazí se  dialogové okno, ve  kterém je v  levé části zobrazena struktura databáze  s uvedením typu položek  a jejich délek. Okno slouží ke snadnému zadání podmínky filtru bez nutnosti vypisování všech  údajů.  To  je   nahrazeno  kliknutím  myší  na  nabízenou variantu.

Ve  střední části  okna je  uveden seznam  funkcí v syntaxi xBase použitelných k  zadání podmínky filtru.  V pravé části  okna jsou nahoře zobrazeny  tlačítka s možnými operacemi  s daty (rovná se, menší,  větší, menší  nebo rovno,  větší nebo  rovno, nerovná  se apod.). V  pravé střední části obrazovky  jsou zobrazena tlačítka pro spojování podmínek (.AND.,  .OR.,.NOT.). Ve spodní části okna je   zobrazována  podmínka   filtru  s   možností  její   editace z klávesnice.  V  pravé  dolní   části  obrazovky  jsou  umístěna tlačítka   pro  uzavření   okna  se   zadáním  požadované   akce. Kliknete-li na tlačítko zrušit,  nebude filtr nastaven. Kliknitím na tlačítko 'Nastavit filtr'  aktivujete v případě jeho správného sestavení zadaný filtr, data budou omezena dle zadané podmínky.

Požadovaný výraz  pro nastavení filtru  máte možnost zadat  přímo z klávesnice ve spodní části  dialogového okna. Máte také možnost použít  tlačítek  pro  pohodlné  zadávání  jednotlivých  elementů výrazu  pro nastavení  filtru.  V  případě požadavku  zadání výše uvedeného filtru by jsme postupovali následujícím způsobem:

1) Po kliknutí myší na položku  CENA v levé části okna se zobrazí položka ve spodní části okna, kde je podmínka sestavována.

2) Klikneme myší na symbol > který je umístěn v pravé horní části okna. Symbol se zobrazí i v sestavované podmínce.

3) Z klávesnice dopíšete hodnotu 100.

4)  Kliknete v  pravé střední  části obrazovky  na tlačítko .AND. symbolizující spojení podmínky.

5) Obdobným způsobem doplníte druhou část filtru, to je CENA<200

6) Filtr aktivujete kliknutím na tlačítko Nastavit.

Po  aktivaci  filtru  se  zadaná  podmínka  zobrazí v horní části databázového  okna. V  takovém  případě  se zobrazují  pouze data vyhovující  zadané podmínce.  Pokud chcete  podmínku deaktivovat, vyvolejte opět  okno pro zadání  filtru a uzavřete  jej tlačítkem Zrušit. Filtr  bude deaktivován a budou  opět zobrazována všechna data.

Filtr máte samozřejmě možnost nastavit  i přímo z programu. Pokud například potřebujete zvýšit v ceníku ceny, které jsou včetně DPH větší než 1000,- Kč můžete použít následující program využívající následující program. Pro  ty z vás, kteří neví co  je to DPH bude stačit,  vysvětlení, že  se jedná  o zvýšení  ceny v  procentech, jehož hodnota je uvedena v položce  DPH. Jedná se o daň z přidané hodnoty.  V  programu  nejprve  nastavíme  filtr  a  následně již zpracujeme   každý   záznam.   Nevyhovující   záznamy  jsou  díky nastavenému filtru nepřístupné.

Program Dbf_2;

begin

   ConsoleClear;

   ConsoleShow;

   IF DbfUse("CENIK") then     {pokud se otevřela databáze}

   begin

      DbfSetFilter("(CENA/100*(100+DPH))<1000");

      {nastavit filtr pokud cena s daní menší než 1000 Kč}

      DbfGoTop;                {skok na začátek databáze}

      While not DbfEof do      {dokud není konec databáze}

      begin

         DbfWriteNum("CENA",DbfReadNum("CENA")*1.1);

         {zvýšení ceny o 10 %}

         Writeln(DbfReadNum("CENA"));

         DbfSkip(1);           {skok na další záznam}

      end;

      DbfSetFilter("");        {zrušit nastavený filtr}

      DbfUse("");              {databázi uzavřeme}

   end else

      ShowMessage('Databázi nebylo možné otevřít !');

   end;

end;

end.

V následující  lekci se  seznámíme i  s dalšími  možnostmi řešení výše uvedeného úkolu.

Následující lekce


Lekce 1.29 - Sekvenční prohledávání databáze

Pokud potřebujeme zobrazit z  databáze pouze určité záznamy podle zadané  podmínky, můžeme  nastavit na  databázi filtr,  se kterým jsme se seznámili v předchozí lekci kurzu. Filtrování databáze je však výhodné pouze  při prohlížení databáze v okně.  Pokud je ale u rozsáhlé databáze  použit filtr, který vybere  pouze malou část databáze, může být zobrazování vyhovujících záznamů pomalé. Pokud proto  nepožadujete použít  filtr pro  výběr vyhovujících záznamů v databázovém okně,  ale přímo v  programu, je výhodnější  použít dále popsaného způsobu.

Použijeme  zadání  úkolu  z  předchozí  lekce,  kdy  máme  zvýšit v ceníku ceny, které jsou včetně DPH  menší než 1000,- Kč. Pro ty z vás, kteří  neví co je  to DPH bude  stačit, vysvětlení, že  se jedná  o  zvýšení  ceny  v  procentech,  jehož hodnota je uvedena v položce  DPH. Jedná  se o   daň z  přidané hodnoty.  V programu procházíme   databází  záznam   po  záznamu   od  jejího  počátku a kontrolujeme  námi  zadanou  podmínku.  Pokud  záznam vyhovuje, provedeme požadované akce. V našem případě zvýšení ceny.

Program Dbf_3;

begin

   ConsoleClear;

   ConsoleShow;

   If DbfUse("CENIK") then       {pokud se otevřela databáze}

   begin

      DbfGoTop;                  {skok na začátek databáze}

      While not DbfEof do        {dokud není konec databáze}

      begin

         If DbfEvalNum("CENA/100*(100+DPH)")<1000 then

         begin

            Writeln(DbfReadStr("NAZEV"));

            {pokud cena s daní menší než 1000 Kč}

            DbfWriteNum("CENA",DbfReadNum("CENA")*1.1);

            {zvýšení ceny o 10 %}

         end;

         DbfSkip(1);             {skok na další záznam}

      end;

      DbfUse("");                {databázi uzavřeme}

   end else

      ShowMessage('Databázi nebylo možné otevřít !');

   end;

end;

end.

Jak  jistě sami  postřehnete, je  výše uvedený  program je značně neefektivní.  Prochází všechny  záznamy v  databázi a  kontroluje splnění zadané podmínky. Pouze  pokud je splněna, provede zvýšení ceny.   Neefektivita  vzniká   tím,  že   se  prochází  sekvenčně (postupně) všechny záznamy přímo v programu. Mnohem výhodnější je přece  ponechat výběr  požadovaných záznamů  přímo systému. Berte proto  výše   uvedené  řešení  pouze   jako  ukázku  složitějšího zpracování databáze záznam po záznamu.

K vyhledání  záznamu  podle  zadané  podmínky  lze výhodně použít volání funkce DbfLocate. Ta sama prochází databázi a hledá záznam podle  zadané podmínky.  Hledání je  proto mnohem  rychlejší, než výše uvedené sekvenční prohledávání databáze. Pro hledání dalšího vyhovujícího záznamu se potom  používá volání funkce DbfContinue, která hledá  další vyhovující záznam. Ačkoliv  obě uvedené funkce vrací  přímo  číslo  nalezeného  záznamu  v  databázi, používá se častěji indikace nalezení konce databázového souboru.

Program Dbf_4;

begin

   ConsoleClear;

   ConsoleShow;

   If DbfUse("CENIK") then    {pokud se otevřela databáze}

   begin

      DbfLocate("(CENA/100*(100+DPH))<1000");

      While not DbfEof do     {dokud není konec databáze}

      begin

         DbfWriteNum("CENA",DbfReadNum("CENA")*1.1);

         {zvýšení ceny o 10 %}

         Writeln(DbfReadStr("NAZEV"));

         DbfContinue;         {hledání dalšího záznamu}

      end;

      DbfUse("");             {databázi uzavřeme}

   end else

      ShowMessage('Databázi nebylo možné otevřít !');

   end;

end;

end.

Až  dosud jsme  pracovali s  databází, která  byla seřazena podle pořadí  zápisu  záznamů  do  databáze.  V  následující  lekci  se seznámíme  s možnostmi,  jak databázi  seřadit a  prohlížet podle zadané položky. To nám následně i umožní rychlé vyhledávání.

Následující lekce


Lekce 1.30 - Třídění databáze - indexy

Databáze  je při  svém vytváření  řazena podle  pořadí pořizování záznamů. Pořadí záznamů je tedy chronologické, dle času pořízení. Pro práci s databázi však  budete potřebovat častěji řazení podle zadaných údajů. Proto je možné  databázi indexovat. To nám umožní databázi  seřadit vzestupně  podle zadaného  údaje. Znaková  pole podle  abecedy, numerická  pole podle  velikosti čísel,  datumová pole chronologicky dle data.

Při  indexování  databáze  se  vytváří  tzv.  indexový soubor, ve kterém  jsou umístěny  informace o  indexování databáze. Indexový soubor  je  v  systému  KLONDAIK  vždy  stejného  jména,  jako má databáze, má  však pro rozlišení příponu  souboru *.CDX. Indexový soubor,  pokud  existuje,  se   otevírá  vždy  automaticky  spolu s databází. V  jednom indexovém souboru mohou  být přitom uloženy informace  o  několika  navzájem  nezávislých  indexech. Jedná se o tzv. vícenásobné indexové soubory typu CDX.

Zda je otevřená databáze  indexována poznáte snadno v databázovém okně, kde  je v případě  nalezení indexů možno  ve výběrovém boxu vybrat  existující  index.  Po  výběru  indexu  je databáze ihned řazena  podle  požadovaného  indexu.  V  takovém  případě  nemusí souhlasit pořadí  vět zobrazované ve  stavovém řádku databázového okna.  Bude-li  některý  index  databáze  aktivní,  bude databáze řazena  ne  podle  čísla  záznamu,  ale  vzestupně podle zadaného indexu.  Pokud zadáte  přechod  na  začátek nebo  konec databáze, nebude  proveden  přechod  podle  čísla  záznamu,  ale vždy podle zvoleného indexu!

Z programu máte možnost nastavit  požadovaný index voláním funkce DbfSetOrder, kde uvedete jako  parametr jméno indexu, případně za použití funkce DbfTagName pořadové číslo indexu:

DbfSetOrder("NAZEV");

DbfSetOrder(DbfTagArea(2));

Pokud  zadáte chybný  název indexu,  případně neexistující  číslo indexu, bude databáze řazena podle pořadových čísel.

Nový index  můžete vytvořit voláním funkce  DbfIndexTag, ve které zadáte jméno  indexu a výraz,  ze kterého se  index skládá. Jméno indexu může mít  maximálně osm znaků a je  možné si jej libovolně zvolit. Nejlépe  je uvádět jej podle  obsahu indexu. Výraz, podle kterého  je databáze  indexována  může  obsahovat výraz  v jazyce xBase udávající položky databáze pro indexování. V nejjednodušším případě  stačí  uvést  pouze  název  položky,  podle které má být databáze indexována.

Nejjednodušší  je tvorba  indexů pro  řetězcové položky,  protože systém indexuje  vnitřně vše jako řetězce.  Není také problém při požadavku na spojení několika položek do indexu:

DbfIndexTag("NAZ", "NAZEV");

DbfIndexTag("XXX", "TYP+NAZEV");

Pokud  by  položka  NAZEV  obsahovala  texty  s  velkými i malými písmeny,  bylo by  jejich řazení  podle výše  uvedeného indexu na první  pohled   trochu  nelogické.  Získali   by  jsme  například následující  pořadí:  'aa',  'aZ',  'AA'.  Je  to proto, že velká a malá  písmena  mají  při  třídění  rozdílný  význam. Pokud však vytvoříme index, ve kterém převedeme všechna písmena v řetězci na stejnou velikost, bude již vše  v pořádku ('aa', 'AA', 'aZ'). Při tvorbě indexů  můžeme proto používat  s výhodou libovolné  výrazy v syntaxe jazyků xBase, které nám umožní mnohá kouzla s indexy:

DbfIndexTag("NAZ", "UPPER(NAZEV)");

Jednoduchá  je také  tvorba indexů  pro numerické  položky. Pokud vytváříme index  pouze pro jednu položku,  stačí zadat pouze její jméno.  V  případě  že  budeme  chtít  indexovat  databázi  podle několika  položek, musíme  pro index  vytvořit za  použití výrazů v syntaxi xBase pro indexování řetězec:

DbfIndexTag("CENA", "CENA");

DbfIndexTag("XXX", "TYP+STR(CENA,10,2)");

Je dokonce  možné indexovat tzv vypočtené  položky. To je takové, které v  databázi ve skutečnosti  neexistují a jejich  hodnota je vypočtena  z existujících  položek. V  následujícím příkladě bude ceník indexován podle konečné ceny včetně DPH:

DbfIndexTag("CENA","CENA/100*(100+DPH)");

Trochu složitější je indexování  datumových položek. Je to proto, že  ačkoliv se  tváří jako  řetězec, vzniknul  by jejich  prostým indexováním  podobný  problém  jako  u  velkých  a  malých písmen v řetězcích. Tentokrát  by se datové položky  indexovaly v pořadí podle dnů, měsíců a roků.  Protože je ale nutné indexovat nejprve v rámci  roku, potom  měsíce a  nakonec dne,  budeme muset použít opět funkci v syntaxi xBase,  která zajistí převod data do vhodné formy pro indexování:

DbfIndexTag("DAT", "DTOS(DATUM)");

Indexy  je možné  tvořit buď  funkcí DbfIndexTag,  jak bylo  výše uvedeno, nebo  je možné využít  dialogového okna, které  vyvoláte z PopUp  menu zobrazeného  po kliknutí  pravým tlačítkem  myši na ploše databázového  okna. Platí přitom stejné  zásady uvedené pro tvorbu indexů funkcí DbfIndexTag.

V následující lekci  se seznámíme s tím,  že kromě řazení záznamů v databázi  lze  indexy  použít  i  pro  velmi rychlé vyhledávání záznamů v databázi.

Následující lekce


Lekce 1.31 - Hledání v databázi dle indexů

Výhodou  indexování   databáze  je  kromě   řazení  podle  indexů i možnost rychlého  vyhledávání podle zadaného  klíče. Vyhledávat podle  indexů je  přitom možné  pouze podle  indexovaných položek databáze.

Pokud budete chtít vyhledat například v adresáři konkrétní jméno, musíte  si nejprve  nastavit index  podle jména.  Následně můžete vyhledat  požadované jméno  buď voláním  funkce DbfSeek, případně PopUp volbou z databázového okna. Bude-li zadané jméno v databázi existovat,  přesune se  ukazatel  databáze  na záznam  s uvedeným jménem.  Pokud zadané  jméno  v  databázi neexistuje,  přesune se ukazatel  databáze automaticky  na nejbližší  následující záznam. Tedy  na  následující  v   řazení  dle  abecedy,  případně  podle velikosti čísla.

Při vyhledávání  podle indexů nemusíte  zadávat celý klíč,  stačí pouze jeho začátek. V takovém případě systém hledá podle zadaného řetězce a nastaví databázový ukazatel na první vyhovující záznam. Pokud  tedy zadáte  pro vyhledávání  například písmeno  "H", bude nalezen a zobrazen první záznam začínající uvedeným písmenem.

Funkce DbfSeek vrací logickou informaci  o tom zda  bylo hledání dle  klíče úspěšné.  Navíc je  při každém  hledání v  databázi do příznaku  DbfFound nastavena  informace  o  úspěšnosti  hledání. Příznak  lze  testovat  voláním  funkce  DbfFound  pro  provedení libovolných následných akcí.

Vyhledávání  v databázi  se provádí  přesně podle  zadaného klíče včetně   respektování  velkých   a  malých   písmen  v   databázi i vyhledávacím klíči. Proto je možné zadat při tvorbě indexu jeho převod na velká písmena jak bylo uvedeno v předchozí lekci. Pokud potom při  zadávání klíče provedete  také jeho konverzi  na velká písmena,  bude odpovídající  záznam  nalezen  vždy bez  ohledu na zadání malých a velkých písmen.

Program Dbf_5;

begin

   ConsoleClear;

   ConsoleShow;

   If DbfUse("CENIK") then      {pokud se otevřela databáze}

   begin

      If DbfSetOrder("NAZ") = 0 then

         {pokud neexistuje index NAZEV, tak jej vytvoříme}

         DbfIndexTag("NAZ", "UPPER(NAZEV)");

      DbfSetOrder("NAZ");       {nastavíme index podle názvu}

      DbfSeek("FAX");           {hledáme text FAX}

      IF DbfFound then      {pokud není nalezen}

      begin

         Writeln(DbfReadStr("NAZEV"));

      end else

         Writeln("Záznam nebyl nalezen");

      DbfUse("");           {databázi uzavřeme}

   end else

      ShowMessage('Databázi nebylo možné otevřít !');

   end;

end;

end.

Používání  indexování  databází  má   mnoho  výhod  a  předností. Bohužel, existují  i některé záporné vlasti,  se kterými vás nyní seznámíme. Pokud  byste vytvořili v databázi  mnoho indexů, mohlo by  být  jejich  zpracování   pomalejší.  Nevýhodou  je  současně i prostor, který zabírají indexy v souborech na disku počítače.

Pokud  není  nutné  používat  databázi  seřazenou  podle  indexů, vypněte  jejich  nastavení  funkcí  DbfSetOrder.  Zpracování bude probíhat  rychleji.  Někdy  se  mohou  indexy  (soubor  na disku) porušit  a  v  takovém   případě  je  vhodné  provést  procedurou DbfReindex jejich obnovu.

Není možné zrušit pouze jeden  index z databáze. Lze zrušit pouze všechny indexy  najednou. To je  možné provést zrušením  souboru, který má jméno shodné s databází, příponu má *.CDX.

Následující lekce


Lekce 1.32 - Rušení záznamů v databázi

Jak  jsme se  již dříve  seznámili, lze  záznamy z databáze velmi jednoduše  zrušit.   Protože  je  však   zrušení  záznamů  řešeno dvoustupňově, seznámíme  se s ním nyní  podrobněji. Nejdříve však jedno   velmi   důležité   upozornění   a  varování.  Nezasahujte jakýmkoliv  způsobem  do  databází,  které  jsou  využívány jiným systémem.  To znamená  nejen nyní  zmiňované rušení  záznamů, ale také jakákoliv změny dat.

Z databázového okna lze záznam zrušit pouze pokud máte nastavenou možnost editace záznamů. Tato možnost  se nastavuje v PopUp menu, které se  zobrazí pokud kliknete  pravým tlačítkem myši  na ploše databázového okna. Možnost editace se přepíná v horní řádce menu. Pokud je editace  možná, je tato volba v menu  zatržena a v horní liště databázového  okna se zobrazí  vedle šipek navigátoru  nová ikona sloužící k výmazu a obnovení záznamů.

Pokud  jsme nastaveni  v databázovém  okně na  záznam, který není označen  na zrušení  a klikneme  na ikonu  výmazu, bude  aktuální záznam  označen ke  zrušení. Poznáme  to tak,  že se  ve stavovém řádku  databázového  okna  zobrazí  vedle  čísla záznamu indikace "[Deleted]". Pokud by jsme klikli  na ikonu výmazu znovu, byla by opět obnovena plná platnost  databázového záznamu. Výmazová ikona tedy  slouží  jako  přepínač.  Platný  záznam  označí ke zrušení, u označeného záznamu obnoví jeho původní platnost.

Z programu je  možné zrušit záznam  procedurou DbfDelete, obnovit platnost  záznamu lze  procedurou  DbfRecall.  To, zda  je záznam určen  ke zrušení  zjistíme voláním  funkce DbfDeleted.  Pokud by jsme potřebovali  zkontrolovat záznamy a  obnovit jejich platnost v celé databázi, můžete tak učinit následujícím programem:

Program Dbf_6;

begin

   ConsoleClear;

   ConsoleShow;

   If DbfUse("CENIK") then    {pokud se otevřela databáze}

   begin

      DbfGoTop;               {skok na začátek databáze}

      While not DbfEof do     {dokud není konec databáze}

      begin

         If DbfDeleted then   {pokud záznam označen ke zrušení}

         begin

            DbfRecall;        {obnovíme platnost záznamu}

            Writeln(DbfReadStr("NAZEV"));

         end;

         DbfSkip(1);          {skok na další záznam}

      end;

      DbfUse("");             {databázi uzavřeme}

   end else

      ShowMessage('Databázi nebylo možné otevřít !');

   end;

end;

end.

Záznamy  určené ke  zrušení  se  z databáze  definitivně odstraní voláním procedury DbfPack, která  zruší najednou všechny označené záznamy  v  databázi.  POZOR  !!!   Jde  již  o  zrušení  nevrané a označené záznamy budou definitivně z databáze odstraněny.

Někdy  by  mohlo  být  vhodnější,  kdyby  jsme  nemuseli  záznamy z databáze rušit,  přesto by byly  nepřístupné. To je  samozřejmě také  možné.  Jednou  z  možností  by  bylo  nastavit filtr podle požadované platnosti záznamů voláním procedury:

DbfSetFilter(".NOT.DELETED()");  {pouze platné záznamy}

DbfSetFilter("DELETED()");       {pouze neplatné záznamy}

Další  a  mnohem  výhodnější  a  rychlejší  je  varianta,  kdy se platnost záznamů nastaví přímo  svým nastavením voláním procedury DbfSetDeleted, která určuje, zda  budou dostupné záznamy označené ke zrušení:

DbfSetDeleted(False);   {dostupné pouze platné záznamy}

DbfSetDeleted(True);    {dostupné všechny záznamy}

Někdy   byste   potřebovali   zrušit   najednou  všechny  záznamy z databáze.  To  by  bylo  možné  provést  tak, že byste postupně označili  každý   záznam  databáze  ke  zrušení   a  následně  je procedurou DbfPack zrušili. Možná je ale i výhodnější a rychlejší varianta,  při  které  jsou   voláním  procedury  DbfZap zrušeny najednou  všechny záznamy  databáze bez  ohledu na  to, zda  jsou označeny ke zrušení. VAROVÁNÍ !!! Záznamy již nebude možné žádným způsobem obnovit !

Následující lekce


Lekce 1.33 - Databázové oblasti

Systém  KLONDAIK umí  pracovat v rámci databázového okna  najednou  až se  třemi otevřenými databázemi. Každá  databáze je přitom otevřena  ve své samostatné datové oblasti. Pokud budete pracovat s databázemi na formuláři, nebudete počtem databázi nijak omezování.

Mezi datovými  oblastmi databázového okna je možné  se přepínat v  programu voláním procedury  DbfSelect. Při  práci přímo  s databázovým  oknem máte možnost použít  výhodněji PopUp menu, které  se zobrazí po stisku pravého tlačítka  myši na ploše datové  mřížky. Menu obsahuje buď čísla   prázdných   oblastí,   případně   uvedení  jmen  databází otevřených v jednotlivých  datových oblastech. Požadovanou oblast zvolíte kliknutím myší.

Možnost práce  s několika najednou  otevřenými databázemi oceníte zejména  při  náročnějších  požadavcích  na  zpracování dat. Data z jedné  oblasti  můžete  například  různě  upravit  a ukládat do databáze otevřené v jiné oblasti. Třetí datová oblast může přitom sloužit  například   jako  číselník  údajů,   ceník  pro  výpočty a podobně.

Příklad:

DbfSelect(1);                    {nastaví první datovou oblast}

DbfGoTop;                        {skok na začátek databáze}

While not DbfEof  do             {dokud není konec databáze}

begin

   if DbfEvalLog("CEN>100") then {pokud je cena větší než 100}

   begin

      pNaz := DbfReadStr("NAZ");

      pCen := DbfReadNum("CEN");

      DbfSelect(2);              {nastaví druhou datovou oblast}

      DbfAppendBlank;            {přidá nový, prázdný záznam}

      DbfWriteStr("NAZ",pNaz);   {zapíše hodnotu do položky}

      DbfWriteNum("CEN",pCen);   {zapíše hodnotu do položky}

      DbfSelect(1);              {nastaví první datovou oblast}

   End;

   DbfSkip(1);                   {přejde na další záznam}

End;

Následující lekce


Lekce 1.34 - Vytvoření nové databáze

V předchozích  lekcích  jsme  si  ukázali,  jak  se  dá v systému KLONDAIK  pracovat  jednoduše  s   databázemi.  Dosud  jsme  však používali  pouze zkušební  databáze, které  se dodávají  spolu se systémem.  Proto  se  nyní  seznámíme  s  možností vytvoření nové vlastní  databáze a  s  možností  změny struktury  již existující databáze.

Ještě předtím, než začneme na počítači tvořit databázi by jsme si měli ujasnit, jaké údaje má naše databáze obsahovat a jakého jsou typu. Důsledný  návrh nám následně  umožní plné využití  zadaných dat.  Pokud  si  budete  chtít  například  zadat vlastní databázi adres,  máte  mnoho  možností  jak  definovat  jednotlivé položky databáze.  Například  jméno  může  být  obsaženo  v jedné znakové položce.  Pokud  však  vytvoříte  samostatné  položky  pro  jméno a příjmení, umožní  vám to snadněji hledat  nejen podle příjmení, ale  i  podle  jména.  Tím  můžete  například zjistit, kteří vaši zákazníci  oslaví v  zadaný den   svůj svátek  a budete  jim moci zaslat blahopřání. Samostatnou  položku můžete vyhradit například i pro titul. Pokud potom  například "odfiltrujete" záznamy, které nemají  uveden titul,  získáte seznam  kvalifikovaných odborníků. Obdobným způsobem by bylo možné probrat všechny požadované údaje. Pečlivý  návrh  databáze  se  vám  rozhodně  vyplatí,  proto  jej nepodceňujte.

Dalším  krokem je  stanovit si,  jakého typu  mají být jednotlivé položky. To  se může stát někomu  podivné, ale například poštovní směrovací  číslo  obsahuje  pouze  čísla,  přesto  je  vhodné  je definovat jako řetězec. Stejně tak jako ostatní údaje numerického vyjádření,  se  kterými  se  však  neprovádí  matematické výpočty (číslo účtu,  střediska apod.). To mám  následně umožní snadnější tvorbu indexů pro hledání v databází a jejich třídění.

Posledním krokem návrhu databáze  je stanovení délek jednotlivých položek.   U   numerických   položek   současně  stanovíme  počet desetinných míst v uloženém čísle. Mějte při návrhu na paměti, že každý  zbytečný  znak  se  na  disku  v obsazeném prostoru násobí počtem záznamů.

Po  provedení výše  uvedeného návrhu  databáze můžete  zadat její strukturu  do systému.  Musíte k  tomu aktivovat  databázové okno a uzavřít případně databázi v první  oblasti. Pouze tak se vám po stisku pravého  tlačítka myši na ploše  databázového okna zobrazí podmenu s možností výběru volby pro zadávání nové databáze. Pokud ji aktivujete,  zobrazí se vám  nové okno pro  zadávání struktury databáze.

Do prázdné tabulky budete zadávat popis položek databáze. Nejprve stiskněte  na tlačítko  "Přidat", které  umístí do  tabulky popis nové  položky. Uvedeno  je  náhodně  zvolené jméno.  Editací máte možnost změnit.  Jméno položky databáze  musí začínat na  písmeno a smí mít  délku maximálně deset znaků  a nesmí obsahovat mezery. Jméno položky databáze musí být jednoznačné a nesmí se v databázi opakovat.

Dále musíte zadat typ položky. Jak již bylo uvedeno v předchozích lekcí, označuje se řetězcový  typ položky písmenem "C", numerický typ  položky  písmenem  "N",  logický  typ  položky  se  označuje písmenem "L", datum se označuje písmenem "D" a poznámka libovolné délky  písmenem  "M".

Podle toho, jaký typ položky  jste zadali, máte možnost definovat délku položky.  Pouze u logické položky  je pevně nastavena délka na  jeden znak,  datum zabírá   vždy osm  znaků a  poznámka (memo položka)  deset.  Memo  položka   přitom  obsahuje  pouze  adresu umístění poznámky v samostatném souboru, který má jméno shodné se jménem databáze  a příponu FPT. Pouze  u numerické položky, které může mít délku maximálně dvacet  znaků můžete zadat navíc i počet desetinných  míst,  které  se  však  spolu  s  desetinnou  tečkou započítávají do celkové délky položky.

Výše  uvedeným způsobem  zadáte  do  tabulky popis  všech položek databáze.  Novou  položku  přidáte  kliknutím  myší  na  tlačítko "Přidat".  Položku  databáze,  na  které  je  umístěn kurzor máte možnost zrušit stiskem myší na tlačítku s nápisem "Vymazat".

Po  zadání a  zkontrolování  zápisu  všech položek  nové databáze musíte vytvořenou strukturu databáze uložit na disk počítače, což je  možné  provést  kliknutím  myší  na  tlačítko "Uložit do...". Zobrazí  se   běžný  dialog  Windows  pro   zadání  jména  nového databázového  souboru,   který  musí  mít   vždy  příponu  *.DBF. V případě  správného  zadání  je  databáze  vytvořena  a je ihned zobrazena  v  databázovém  okně  s  nastavením  možnosti okamžité editace.

Následující lekce


Lekce 1.35 - Změna struktury databáze

Podobným  způsobem, jako  je  zadání  struktury nové  databáze je možné provést i její změnu.  Tentokrát musíte mít databázi, jejíž strukturu   budete  chtít   změnit  otevřenou   v  první  oblasti databázového okna.  Po kliknutí pravým tlačítkem  myši se zobrazí podmenu s přístupnou volbou  umožňující změnu struktury databáze. Po  jejím výběru  se zobrazí  již známá  tabulka s možností změny položek  databáze.  Máte  přitom   možnost  již  známým  způsobem přidávat  nové položky  databáze, případně  zrušit již existující položky. Máte  také možnost provést  změnu parametrů jednotlivých položek.

Provedené  změny   máte  možnost  uložit   dvěma  způsoby.  Pokud kliklnete  myší na  tlačítko "Uložit  do...", budete  mít možnost zadat jméno  databáze, do které  se data uloží.  Původní databáze zůstane  přitom  zachována  beze  změny.  Pokud  zadáte jméno již existující databáze, budete dotázáni  na její přepsání. V případě souhlasu budou data zvolené databáze nahrazena novou databází.

Pokud  budete chtít  uložit modifikovanou  strukturu databáze  do stejného  souboru,  stiskněte  myší  tlačítko  "Uložit". Dojde ke změně  struktury databáze  s přihráním  původního obsahu. Původní databáze zůstane  přitom zachována v  souboru TEMP_BAK.DBF. Pokud obsahuje   databáze   memopoložky,   je   jejich  obsah  zachován v záložním souboru TEMP_BAK.FPT. Musíte si uvědomit, že při další provedené  změně struktury  jsou uvedené  soubory nahrazeny  vždy novým obsahem.

V obou  výše uvedených  případech  dojde  ke změně  struktury dat podle  nového zadání  databázové struktury.  Nově přidané položky jsou samozřejmě  prázdné, Položky, u  kterých jste změnili  délku mohou  přijít  o  část  svého  obsahu.  Neprovádějte  změnu  typu položek, protože by nebylo možné převzít do nové databáze původní data.  Pokud tak  budete muset  učinit, nadefinujte  ve struktuře databáze   novou  položku   požadovaného  typu,   proveďte  změnu struktury a  následně sestavte program, kterým  převedete data do nové  položky s  příslušnou konverzí.  Další modifikací struktury databáze můžete původní položku zrušit.

Následující lekce


Lekce 1.36 - Editace memo položek databáze

Jak jsme se již seznámili v předchozích lekcích, je možné ukládat v databázích  údaje různého  typu. Běžné  jsou údaje  typu číslo, řetězec,  datum   a  logická  hodnota,  jejichž   délka  je  vždy definována ve struktuře databáze. Pokud budeme potřebovat ukládat do databáze údaj, jehož délka je proměnná, můžeme použít k jejich uložení tzv. Memo položky.

Memo položka je ve struktuře  databáze definována vždy o délce 10 bajtů a má uveden typ "M".  Skutečná délka memo položky však může být proměnná, protože se do  databáze ukládá ve skutečnosti pouze adresa uložení  memo položky v  samostatném souboru, který  tvoří nedílnou součást databáze. Uvedený soubor má vždy jméno shodné se jménem databáze, jeho přípona je  však vždy *.FPT. Uvedený soubor se otevírá  automaticky při otevírání  databáze a nemusíte  s ním provádět žádné  akce. Pokud je  ve struktuře databáze  definována memo  položka   a  příslušný  soubor,   který  je  má   obsahovat neexistuje,  bude  systémem  nahlášena  chyba  a  databáze nebude otevřena.

Pokud  obsahuje databáze memo položku,  je  tato  v  okně  databáze  indikována v celém sloupci textem  "(Memo)".  Pokud  v  uvedeném  sloupci  stisknete klávesu Enter, zobrazí  se obsah memo položky.  Forma zobrazení závisí na tom, zda máte nastavenou  možnost editace záznamů databáze. Pokud ne, zobrazí  se v novém  okně pouze obsah  memo položky. Zpět  se přepnete  stiskem  klávesy  Esc.  Pokud  máte  nastavenu  možnost editace  databáze  budou  v  okně  zobrazeny  navíc i tlačítka OK a Zrušit  pro  ukončení  editace  memo  položky.  Možnost editace databáze se nastaví přes pomocné menu, které se zobrazí po stisku pravého tlačítka myši na ploše databázového okna.

V memo  položce  máte  možnost  se  pohybovat  pomocí kurzorových kláves. Lze také běžným způsobem  vybrat blok textu a umístit jej do schránky Windows. To vše bez  ohledu na to, zda máte povolenou editaci  záznamů.   Text  obsahu  memo   položky  se  automaticky zarovnává  ke krajům.  Změnou velikosti  okna máte  proto možnost ovlivnit zobrazení textu.

Formulář se zobrazeným obsahem  memo položky je zobrazen modálně, to  znamená,  že  se  nelze  přepnout  do  jiného  okna. Ukončení zobrazení  (editace) se  provede stiskem  klávesy Esc.  Pokud byl obsah memo  položky změněn, jste dotázáni,  zda se mají provedené změny uložit. Pokud máte nastavenou možnost editace, máte možnost ji ukončit navíc i tlačítkem OK,  kdy se provedené změny uloží do databáze, případně tlačítkem Zrušit, kdy jsou změny anulovány.

UPOZORNĚNÍ:

Pokud budete  pracovat s databází,  která byla vytvořena  v jiném systému a  memo položka bude delší  než 64 Kb, nebude  možné tuto memo položku zobrazit a zpracovat.

Následující lekce


Lekce 1.37 - Zpracování memopoložek z programu

S memopoložkami databází budete chtít pracovat také přímo v programu. To Vám umožní ukládat do memopoložek i jiné, než textové zobrazitelné údaje. Proto je nutné pracovat s memopoložkami velice opatrně, abyste nenarušili jejich strukturu.

S memopoložkami můžete pracovat dvěmi způsoby. Buď k ní přistupujete jako k textu (je možné pracovat vždy s konkrétním zadaným odstavcem), nebo k přistupujete celkově. Při textovém přístupu musíte počítat s tím, že lze takto zpracovávat pouze memopoložky do délky 64 Kb na jeden záznam.

Obsah zadané memololožky jednoho záznamu je možné převést do textové proměnné procedurou DbfReadBin. Obdobně je možné přesunout obsah proměnné do memolopožky procedurou DbfWriteBin. Uvedené procedury je možné použít pro zpracování memopoložek libovolné délky. Podobně je možné použít proceduru DbfFileToBin pro zápis obsahu souboru na disku do memopoložky a proceduru DbfBinToFile pro zápis memopoložky do souboru.

Obsah textové proměnné lze uložit do memopoložky procedurou DbfWriteMem. Načíst obsah memopoložky je možné procedurou DbfReadMem. Memopoložka nesní  mít v  tomto případě  rozsah větší  než 64 Kb. Memopoložku obsahující text je možné načítat postupně po odstavcích. Pořadové číslo  indexu se  udává parametrem  index v  pořadí od  jedničky. Pokud  budete chtít  načíst najednou  celou memopoložku,  zadejte nulový index. V tomto případě  bude z načteného řetězce odstraněn znak  #10  pro  možnost  zobrazení  v  textovém  výstupním  okně.

{kompletní výpis memopoložky do textového výstupu}

Procedure vypis;

Var x, z: integer;

begin

   z := DbfMemoCount('poznamka');

   if z > 0 then

   begin

      ConsoleClear;

      for x:= 1 to z do

          Writeln(DbfReadMem('poznamka', x));

   end else

       Writeln('Překročen rozsah memopoložky');

   end;

end;

Následující lekce


Lekce 1.38 - Síťové zpracování databází

Systém KLONDAIK je navržen hlavně na lokální zpracování dat. Přesto je však možné s ním za jistých okolností zpracovávat i data při síťovém zpracování. Systém zajišťuje automaticky kontrolu síťového přístupu k jednotlivým záznamům a nedovolí současnou editaci dat v rámci sítě. Přesto je však nutné si při zvažovaném síťovén zpracování vše důkladně prozkoušet a prověřit na Vámi používané síťi.

Pro možnost kontrol síťového přístupu z programu slouží funkce DbfFileLock (uzamkne celou databázi),  DbfRecLock (uzamkne aktuální záznam), DbfUnlock (odemkne uzamřené záznamy) a DbfLocked (kontroluje, zda je záznam uzamčen).

Následující lekce


Lekce 1.39 - Tisk sestav z databází (reporty)

Databází je možné prohlížet  dvěma různými způsoby. V předchozích lekcích  jsme se  již seznámili  s možností  zobrazování databáze v databázovém okně, kterému se také v databázových systémech říká BROWS.  Nyní se  seznámíme s   další možností  a to  je zobrazení sestavy formou  sestavy (reportu). Sestava  je zobrazení databáze ve  formě  tiskového  výstupu.  Sestavu  je  možné kromě tisku na tiskárně také zobrazit na obrazovce.

Před  definicí  sestavy  si  nejprve  musíte  otevřít požadovanou databázi,  ze které  budete chtít  sestavu tisknout.  Dále můžete omezit  rozsah dat  nastavením filtru.  Pokud budete  chtít řadit data v sestavě podle indexu, musíte jej také nastavit.

Tvorbu  sestavy  zahájíte  kliknutím  myší  na  ikonu s tiskárnou v databázovém  okně.  Standardně  se  nabízí  sestava  se  jménem databáze  a  příponou  *.PTS.  Název  můžete  změnit.  Pokud  již předloha  zadané  sestavy  existuje,  bude  zobrazen  její  návrh k možným  dalším úpravám.  V opačném  případě vám  nabídnuto její vytvoření.

Při  vytváření  nové  sestavy   jsou  nabídnuty  všechny  položky databáze  k  jejich  výběru  zařazení  do  sestavy.  V levé části dialogového  okna  inicializace  sestavy  jsou  nabídnuty položky databáze,  v  pravé  části  jsou  umístěny  položky,  které budou umístěny v sestavě. Uprostřed se nachází tlačítka, kterými můžete přesouvat   položky  databáze.   Dále  obsahuje   dialogové  okno inicializace sestavy výběr způsobu tisku. Buď jako běžná sestava, kdy jsou položky databáze umístěny vedle sebe, nebo v řádcích pod sebou.  Po  ukončení   inicializačního  dialogu  je  vygenerována předloha sestavy dle zadaného nastavení.

Předloha sestavy  je zobrazena v  samostatném okně, které  slouží nejen  k její  editaci, ale  také k  zobrazení finálního  vzhledu sestavy. V horní části okna se nachází panel nástrojů pro editaci předlohy sestavy, která se nachází v dolní části okna. Jednotlivé prvky sestavy  máte možnost přesouvat po  ploše předlohy sestavy, nastavovat  parametry  tisku  a  podobně.  Je  také možné doplnit sestavu  dalšími prvky.  Buď grafickými  (obrázek) nebo textovými (nadpisy, datum  tisku, číslo strany apod.).  Předloha sestavy je rozdělena  na  několik  samostatných  oddílů.  Začátek sestavy je tisknut pouze jednou na začátku  sestavy. Hlava stránky se tiskne na  začátku každé  stránky  a  obsahuje nejčastěji  popis sloupců sestavy. Tělo sestavy obsahuje vlastní data sestavy. Pata stránky se tiskne  na konci stránky.  Podrobnosti o použití  jednotlivých nástrojů editace sestavy naleznete  v samostatné nápovědě, kterou máte možnost vyvolat kdekoliv  z editace předlohy sestavy stiskem klávesy F1.

Pokud budete potřebovat předat sestavě obecné parametry, je možné tak učinit procedurou DbfParamAdd. Hodnota parametru je v sestavě neměnná a může se jednat například o jméno organizace v hlavičce sestavy. Zadané parametry  naleznete  při   návrhu  sestavy  v  záložce 'Parametry'.  Možné je  definovat maximálně  100 parametrů, které zůstávají v  platnosti po celou  dobu spuštění systému  KLONDAIK, nebo do jejich výmazu procedurou DbfParamClear.

Hodnotu parametru již zadaného parametru je možné změnit procedurou DbfParamSet. Funkce  DbfParamGet čte hodnotu  parametru sestavy  dle zadaného  indexu. Uvedenou funkci lze tak použít například k uložení libovolných  hodnot využitelných i  mimo sestavu. Provádí částečnou    duplikaci   systémových    proměnných   definovaných procedurou  SysVarSet.  V  tomto  případě  je  ale  čtení  hodnot prováděno  pomocí indexu,  čili  podobně  jako u  proměnných typu ARRAY. Počet zadaných parametrů zjistíte procedurou DbfParamCount. Zadané parametry je možné zrušit najednou procedurou DbfParamClear.

Sestavu  je  možné  vytisknou  i  z  programu  voláním  procedury DbfReport.  Volbou  parametrů  procedury  je  možné  zadat  rozsah stránek  pro tisk  a to,  zda má  být sestava  ihned tisknuta  na tiskárně,  případně zda  se má  nejprve zobrazit  její previev na obrazovce.

Následující lekce


Lekce 1.40 - Ovládání oken z programu

Systém  KLONDAIK   se  skládá  z  několika   oken,  které  slouží k zobrazování  výsledných hodnot  a ke  komunikaci s  uživatelem. Každé  okno  má  své  specifické  určení.  Pokud  byste ponechali všechna okna na ploše otevřená,  mohli byste brzy ztratit přehled o jejich  obsahu. Proto  se nyní  seznámíme s  tím, jak  je možné ovládat okna přímo z programu.

Počet a obsah oken je pevně definován pevně v systému. Není možné žádné  okno  zrušit.  Okna  je  pouze  možné  minimalizovat,  kdy zabírají pouze malou část plochy.  Okna můžete z programu uzavřít jednotlivě   procedurou   ConsoleHide,   ImageHide, CommandHide a DbfHide. Původní  velikost  oken obnovíte procedurou  ConsoleShow,   ImageShow, CommandShow, DbfShow.

Z programu   máte  také   možnost  nastavit   polohu  a  velikost používaných  oken. K  tomu můžete  použít procedury  ConsoleForm, ImageForm, CommandForm a DbfForm.  Jako parametry  uvedených procedur  uvedete vždy levý horní roh okna a šířku a výšku okna v bodech.

Výše  uvedenými  procedurami  máte  možnost  ovládat  z  programu nastavení  a zobrazení  používaných oken.  Bude vhodné,  pokud si zvyknete na začátku programu  nejprve všechna okna uzavřít. Okno, které budete  v programu používat potom  nastavíte na požadovanou velikost. Jediné okno, které není možné takto ovládat je okno pro výpis obsahu proměnných. Je to proto, že by nebylo vhodné, aby se při ladění programu uzavíralo.

Následující lekce


Lekce 1.41 - Spuštění dalšího programu

V předchozích  lekcích  jsme  si  probrali  spoustu  zabudovaných procedur  a funkcí.  Jejich použití  jsme si  přitom ukazovali na jednoduchých  programech, které  byste  měli  být schopni  si již sestavovat sami. Po  nějaké době ale zjistíte, že  by bylo vhodné mít možnost spojit programy do  jednoho většího celku. K tomu lze použít funkce RunPrg.

Funkce  RunPrg  se  používá  ke  spuštění  programu.  To umožňuje rozčlenit  program  na  několik  samostatných  přehledných celků. Každý  z   nich  může  přitom   vykonávat  určitý  blok   operací nezávislých  na ostatních  částech. Volané  programy jsou schopny pracovat  samozřejmě  i  nadále  zcela  samostatně. Dříve popsané programy pro  práci s databázemi  by bylo možné  spojit například následujícím programem:

Program Databaze;

begin

   RunPrg('DBF_1.KL3');

   RunPrg('DBF_2.KL3');

   RunPrg('DBF_3.KL3');

   RunPrg('DBF_4.KL3');

   RunPrg('DBF_5.KL3');

   RunPrg('DBF_6.KL3');

end;

end.

Ačkoliv se  spouštěný program zadává jako  volání procedury, není možné programu předat běžným způsobem  parametry tak, jak to bývá u volání  procedury.  Pro předání hodnot volanému programu je možné použít proceduru SysVarSet. Předávanou hodnotu potom v programu načteme procedurou SysVarGet.

Z volaného programu je možné převzít výslednou hodnotu,  protože  spouštění  programů  je  funkce,  která  vrací  výsledek ukončení programu.  To lze zajistit  tak, že ve  volaném programu naplníme  systémovou  proměnnou  Result  požadovanou hodnotou pro předání. Jednu z možností uvádí následující dvojice programů:

Program RunPrgA;

{--------------}

{z tohoto programu voláme další program}

Var zbozi  : Array;

begin

   {zbozi := Array1Create(1, 2);}

   {pole nemusí být inicilizováno,

    je nutné je ale deklarovat !!!}

   {volaný program vrací dva parametry: název a cenu zboží}

   zbozi := RunPrg('RunPrgB.kl3');

   {zobrazíme převzaté parametry}

   ShowMessage('NÁZEV: '+Array1Get(zbozi, 1)

              + chr(13) +"CENA  : "

              + RealToStr(Array1Get(zbozi, 2),12,2)+' Kč');

end;

end.

Program RunPrgB;

{--------------}

{tento program je volán z jiného programu}

Var pole  : Array;

begin

   pole := Array1Create(1, 2);

   Array1Set(pole,1,'');

   Array1Set(pole,2,0);

   If DbfUse("CENIK") then

   begin

      {skok na náhodný záznam}

      DbfGo(Random(DbfRecCount));

      {naplnit pole údaji z databáze}

      Array1Set(pole, 1, DbfReadStr("NAZEV"));

      Array1Set(pole, 2, DbfReadNum("CENA"));

      DbfUse("");      {databázi uzavřeme}

   end;

   {výsledná hodnota}

   Result := pole;

end;

end.

Uvedený příklad volání programu funkcí RunPrg je zajímavý tím, že ukazuje  možnost  převzít  z  volaného  programu najednou několik parametrů, ačkoliv  je předávána vždycky pouze  jedna hodnota. To je umožněno  proto, že se  použila proměnná typu  pole obsahující několik prvků.  Všimněte si také  toho, že proměnné  byla (a musí být)  deklarována, nebyla  však  jako  pole v  základním programu inicializována.  Je to  proto,  že  vše zajistil  volaný program, který předal již inicializovanou a hodnotami naplněnou proměnnou.

Pozor na to, že při  používání funkce RunPrg musíte zajistit, aby v případě  požadavku  převzetí  hodnot  volaný  program  skutečně vracel při svém ukončení  výslednou hodnotu. Samozřejmě správného typu.  Nejvhodnější je  proto  naplnit  proměnnou Result  ihned na začátku   volaného  programu   nulovou  (prázdnou)  inicializační hodnotou a na konci programu skutečnou předávanou hodnotou.

Následující lekce


Lekce 1.42 -Animace programu

V předcházejících lekcích obsáhlého kurzu programování jsme se seznámili  s tím, jak napsat program a jak používat knihovny zabudovaných procedur a funkcí.  Při pečlivém studiu a hlavně při praktickém využívání nabytých zkušeností byste již měli být schopni sestavit samostatně i rozsáhlé programy. I tak však není nikdy zaručeno, že  vám bude program pracovat ihned správně.  Chybu  v  zápisu programu  vám  může  ohlásit systém v případě  chybně deklarované  proměnné, špatně  zadaného příkazu a podobně. Avšak i v případě, že program proběhne až do konce bez vypsání chybového hlášení, neznamená to,  že je program bez chyb. Chyba  nemusí  být  v  samotném  zápisu  programu,  ale v chybném sestavení  algoritmu zpracování.  Protože se  takové chyby špatně hledají,  byl  systém  doplněn   pomůckou  ke  sledování  průběhu programu.

Pokud  spustíte  program  klávesou  F6  případně  volbou  z  menu Program/Animace, nebo  kliknutím na ikonu s  obrázkem filmu, bude program   mimo   vykonávání   naprogramované   činnosti  současně zobrazovat v okně s programem  řádku, kterou právě vykonává. Chod programu je současně zpomalen tak,  aby bylo možné průběh animace programu sledovat. To nám umožní kontrolovat průběh programu přes jednotlivé příkazy, volání procedur a funkcí.

Počáteční  rychlost animace  programu je  standardně nastavena na jednu desetinu  sekundy na jeden řádek.  Po uvedenou dobu vyčkává systém mezi vykonáváním jednotlivých  řádek programu. Ve zdrojovém kódu programu  je možné současně sledovat,  jakou činnost program právě vykonává. To vám umožní poznat například důkladněji činnost příkazů pro cyklus a větvení programu.

Pokud budete chtít sledovat průběh programu až od určitého místa, případně  nastavit  jinou  rychlost  animace  programu,  je možné využít příkazu DelayStep, který  nastavuje prodlevu animace. Jako parametr se zadává čas v  milisekundách, po kterou má systém mezi řádkami animace vyčkávat. Pokud proto zadáte v programu:

DelayStep(1000);

bude  prodleva animace  prodloužena na  jednu sekundu.  Po nějaké době jistě  přijdete sami na  to, kdy je  vhodné prodlevu animace změnit  a  na  jakou  hodnotu.  Pokud  nebudete  chtít zobrazovat animaci  programu  již  od  jeho  počátku,  ale až od konkrétního místa,  zadejte na  začátek  programu  příkaz DelayStep(0);  a na požadovaném místě  prodlevu znovu zvyšte  na požadovanou hodnotu. Počátkem  programu se  rozumí samozřejmě  první řádek  ve výkonné části  programu  a  ne  například  fyzický  první  řádek programu obsahující  hlavičku a  název programu.  Příkaz DelayStep  je při spuštění kompilovaného  programu v RunTime  ignorován a je  možné jej proto v programu bez obav ponechat.


KURZ - TVORBA FORMULÁŘŮ

Lekce 2.01 - Tvorba aplikací na formuláři

Lekce 2.02 - Vytvoření a spuštění formuláře

Lekce 2.03 - Komponenty (objekty formuláře)

Lekce 2.04 - Změna objektů na formuláři

Lekce 2.05 - Nastavení vlastností objektů

Lekce 2.06 - Naše první jednoduchá aplikace

Lekce 2.07 - Názvosloví popisu objektů

Lekce 2.08 - Procedury pro obsluhu událostí

Lekce 2.09 - Základní vlastnosti objektů

Lekce 2.10 - Změna vlastností z programu

Lekce 2.11 - Základní události objektů

Lekce 2.12 - Základní události formuláře


Lekce 2.01 - Tvorba aplikací na formuláři

Až  dosud jsme  probírali poměrně  omezené možnosti programování. Veškeré akce probíhaly pouze  v předem pevně definovaných oknech. Neměli  jsme možnost  žádným způsobem  ovlivnit vzhled  aplikace. Našim  hlavním  cílem  bylo  seznámit  se  se  základními příkazy systému a zabudovanou knihovnou procedur a funkcí. Ve druhé části kurzu programování systému KLONDAIK  si proto předvedeme, jak lze tvořit aplikace skládáním komponent na formuláři.

Formulář je vlastně okno Windows, na které je možné umístit běžné prvky systému Windows, jako jsou tlačítka, ikony, editační pole a podobně. Máme  přitom možnost definovat  formulář plně dle  svých představ  při zachování  standardu ovládání  Windows. Naučíme  se definovat obsah a vzhled formuláře.  Seznámíme se také s tím, jak se zadává zpracování událostí našeho formuláře.

Následující lekce


Lekce 2.02 - Vytvoření a spuštění formuláře

Naše dosavadní programy se skládaly  vždy z programu, kterým jsme mohli pouze ovládat pevně  definovaná okna systému KLONDAIK. Nyní se  naučíme sestavit  aplikaci s  využitím vlastních definovaných oken. Všimněte  si, že bylo uvedeno  sestavit a ne naprogramovat. Je   to   proto,   že   aplikace   se   sestavují   na  formuláři z předdefinovaných prvků s definováním jejich vlastností a reakcí na události. U velmi jednoduchých aplikací přitom nemusíte napsat jediný řádek programu, přesto však budou pracovat zcela správně.

Programování  ve  Windows  bylo  ještě  nedávno  velmi  složité a vyžadovalo rozsáhlé znalosti služeb  Windows. Později byly dány k dispozici programové  systémy, které vše  zjednodušily a aplikace se  tvořila  velmi  jednoduše  vizuálním  skládáním  komponent na definici  formuláře  a  definicí  reakce  na  jednotlivé události Windows. Jedním z takových systémů je například i KLONDAIK 3.

Pokud  máte na  obrazovce otevřen  nějaký program,  uzavřete jej. Stejně  tak uzavřete  všechna okna  systému KLONDAIK.  Ponechejte na obrazovce pouze hlavní okno systému. Tím máte vše připraveno k vytvoření  prvního  formuláře.

Nový,  prázdný formulář  vytvoříte velmi  jednoduše kliknutím  na ikonu  pro vytvoření  formuláře. Další  možností je  použít volbu z menu Soubor/Nový formulář, případně stisknout jednoduše klávesy Ctrl+N. Zobrazí  se definice prázdného formuláře.  Jeho plocha je vytečkovaná  k usnadnění  ukládání dalších  komponent na formulář. Nic  takového však  nebudeme zatím  dělat a  zkusíme si  formulář ihned spustit. To provedeme běžným způsobem, například stisknutím klávesy F9.  Protože nebyl program  s formulářem dosud  uložen do souboru, jsme nejprve vyžádáni o  zadání jeho jména.

Zobrazený  formulář je  prázdný, obsahuje  pouze systémové  ikony pro jeho  maximalizaci, přesun a uzavření.  Zkuste si změnit jeho velikost a  změnit polohu. Jak  vidíte, pracuje plně  podle zásad Windows.  Zpět  do  systému  KLONDAIK  se  vrátíte po kliknutí na uzavírací   systémovou  ikonu   okna.  Všimněte   si,  že   spolu s formulářem se vytvořil i program,  který ale obsahuje pouze tři řádky:

Program Prg1;

end.

Jak vidíte, dokázali jsme vytvořit  a zobrazit okno Windows, aniž jsme museli napsat  jediný řádek programu. Je pravda,  že okno je prázdné a  nevykonává žádnou činnost. V  dalších lekcích si proto ukážeme,  jak do  formuláře doplnit  další viditelné  prvky a jak nadefinujeme činnost, kterou bude okno vykonávat.

Zvídavějším  bude  možná  podivné,  jak  je  možné, že je program prázdný a přesto systém ví, že má zobrazit formulář. Je to proto, že spolu s programem, který je  uložen v souboru s příponou *.KL3 byl  vytvořen i  další soubor  stejného jména,  avšak s  příponou *.KFM. Tento  soubor je však  nečitelný běžným editorem  a žádným způsobem do něj rozhodně nijak  nezasahujte! Do tohoto souboru se potom zaznamenávají i další  definice obsahu a vzhledu formuláře. Soubor s programem obsahuje pouze naprogramované akce.

Následující lekce


Lekce 2.03 - Komponenty (objekty formuláře)

V předcházející  lekci  jsme  se  seznámili  s  tím, jak vytvořit a spustit formulář.  Nyní si ukážeme,  jak je možné  na formuláři zobrazit tlačítka, texty, ikony a další prvky. Všechny tyto prvky na formuláři jsou dále označovány jako objekty.

Pro výběr  objektů slouží paleta  komponent, která se  zobrazí po stisku funkční klávesy F12. Zobrazí  se vám okno s mnoha ikonami. Ikony jsou rozděleny záložkami na  několik skupin s názvy Základ, Windows, Dialogy a Databáze. Okno s komponentami můžete libovolně přesouvat  po  obrazovce.  Můžete   také  změnit  jeho  velikost. Všimněte  si,  že  při  změně  velikosti  okna  se ikony na ploše přerovnají tak, aby byly pokud možno všechny viditelné.

Pokud najedete  kurzorem myši nad  některou z ikon  umístěných na paletě  komponent,  zobrazí   se  název  komponenty.  Požadovanou komponentu   vyberete   kliknutím   myši   na   ikonu  požadované komponenty.  Všimněte si,  že se  současně změní  i vzhled ikony s šipkou  umístěné vždy  vlevo nahoře  na paletě  s komponentami. Nyní již  můžete kliknout myší  na plochu formuláře.  Podle toho, jakou  komponentu  jste  vybrali,  zobrazí  se  vám  na formuláři příslušný  objekt.  Zkuste  si  uvedeným  způsobem  přesunout  na formulář několik  různých objektů. Pokud se  podíváte na program, zjistíte,  že obsahuje  stále  pouze  tři původní  řádky. Spusťte program a uvidíte, že  nadefinovaný formulář se skutečně zobrazí. Nevykonává  však nejspíše  žádnou činnost.  Ukončete proto  práci formuláře kliknutím na systémovou uzavírací ikonu formuláře.

Každý objekt  je na formuláři  definován mimo svého  typu a jména i dalšími  vlastnostmi. Například  tlačítko má  zadanou velikost, nápis má definován text, font a podobně. Takto je možné pro každý objekt  zadat požadovaný  souhrn vlastností.  Vlastnosti je možné nastavit  nejen  při  definici  formuláře,  je  však  také  možné vlastnosti měnit přímo z programu.

Většina  objektů má  určité události,  pro které  je možné  zadat akce,  které se  provedou, pokud  se událost  u objektu vyskytne. Událost může  být například kliknutí myší  na tlačítku nebo stisk klávesy. To  jsou zcela běžné  události. Mezi další  události ale patří  také například  otevření formuláře,  změna jeho velikosti, přesun myší nad tlačítkem a podobně.

Programování  aplikací  ve  Windows  se  proto  skládá  hlavně  z nastavení vlastností objektů a definování akcí, které se provedou při  výskytu  události.  Není  to  již  klasické programování, se kterým jsme se seznámili v první části kurzu. Nyní se seznámíme s událostmi řízeném  programování. Takový program  po svém spuštění čeká  na  události  od  uživatele  a  pokud  má  pro tuto událost nadefinovánu  akci,  provede  ji  a  čeká  na  další událost. Při klasickém programování se vše  zpracovávalo v pořadí podle zadání programu.  Nyní  se  ale  jednotlivé  události zpracovávají podle pořadí svého výskytu.

Programování  aplikace se  skládá ze  dvou kroků.  Nejprve si  na formuláři  nadefinujete  používané  objekty  a nastavíte potřebné vlastnosti.  Při  tom  nemusíte  napsat  jedinou  řádku programu, přesto jste již definovali vzhled aplikace. Ve druhém kroku potom zadáte  akce,  které  se  mají  provést  po  výskytu  sledovaných událostí. Zde  se již programuje. Systém  vám přitom sám připraví požadované  definice  procedur  a  vy  pouze  doplníte zpracování události v programu.

Následující lekce


Lekce 2.04 - Změna objektů na formuláři

Naučili  jsme  se  již  umístit  objekt  z  palety  komponent  na formulář.  Nyní  se  naučíme  měnit  vlastnosti  objektů přímo na formuláři, přesouvat je na jinou pozici, kopírovat a vymazávat.

Pokud  chcete  provádět  jakoukoliv  změnu  objektu,  musíte  jej nejprve  vybrat.  To  učiníte  tak,  že  na  objekt  umístěný  na formuláři kliknete  myší. V rozích  a uprostřed stran  objektu se přitom  zobrazí  malé  čtverečky.

Změnu polohy  objektu provedete jeho uchopením  myší a přetažením na  novou  pozici.  Velikost  objektu  změníte  uchopením myší za ohraničující čtvereček a tažením v požadovaném směru.

Objekt  zkopírujete do  schránky Windows  stiskem kláves  Ctrl+C. Následně  potom  můžete  vytvořit  kopii  objektu  stiskem kláves Ctrl+V.  Do   nového  objektu  jsou   zkopírovány  téměř  všechny vlastnosti původního objektu. Pozice  objektu je přitom na rozdíl od originálu mírně posunuta vpravo dolů.

Stiskem kláves Ctrl+X můžete objekt vyjmout z formuláře. Takovýto objekt  je přesunut  z formuláře  do schránky  Windows a  vy máte možnost objekt zkopírovat například do jiného formuláře.

Objekt vymažete  jednoduše stiskem klávesy  Delete. Takto zrušený objekt již  nelze znovu obnovit. Zvykněte  si proto rušit objekty raději již  zmíněným vyjmutím z formuláře.  V případě nutnosti je možné objekt znovu vložit ze schránky.

Některé  akce při  návrhu  formuláře  je možné  provádět najednou s více objekty.  Označení více objektů se  provede jednoduše tak, že  stisknete klávesu  Shift  a  postupně kliknete  na požadované objekty,  které  chcete  označit.  Další  možností  je  'orámovat skupinu'  objektů  vytvořením  obdélníku  tažením  myší.  Všechny objekty na formuláři vyberete  stiskem klávesy Ctrl+A nebo volbou z menu Edit/Vybrat vše.

Skupinu vybraných  objektů na formuláři  označených výše uvedeným způsobem máte možnost přesunout  na novou pozici, zkopírovat nebo vymazat.  Máte však  také možnost  označené objekty  na formuláři vzájemně  srovnat. K  tomu slouží  okno zarovnávání,  které se zobrazí  výběrem  z  menu  Nástroje/Zarovnávání.  Po  kliknutí na příslušnou ikonu v okně se označené objekty na formuláři srovnají v označeném směru.

Následující lekce


Lekce 2.05 - Nastavení vlastností objektů

Jak jsme  si již uvedli,  je každý objekt  na formuláři definován svými  vlastnostmi. Některé  vlastnosti můžete  změnit přímo myší při  definici  vzhledu  formuláře.  Lze  takto nastavit například rozměry  objektu, nemůžete  ale změnit  například barvu,  nápis a podobně. K  tomu slouží okno Nastavení  objektů, které se zobrazí po  stisku   funkční  klávesy  F11,   případně  výběrem  z   menu Nástroje/Nastavení objektů.

Okno  Nastavení  objektů  se  dynamicky  mění  podle  toho, která komponenta je právě  na formuláře aktivní. Je to  proto, že každá komponenta  má   samozřejmě  jiné  vlastnosti.   Na  začátku,  po aktivování formuláře  jsou přístupné vlastnosti  formuláře. Pokud klikneme na  formuláři na jinou komponentu,  změní se automaticky i zobrazované vlastnosti  dle vybrané komponenty.  Další možností je vybrat komponentu  ze seznamu, který je umístěn  v horní části okna  nastavení vlastností.  V  seznamu  se zobrazuje  vždy jméno vybrané komponenty,  po kliknutí na  trojúhelník vpravo od  jména máte možnost vybrat ze seznamu dle jména jinou komponentu.

Jak jsme si již uvedli,  má každá komponenta dva druhy parametrů. Jsou to  vlastnosti a události.  Okno Nastavení objektů  má proto v horní  části  okna  dvě  záložky  pro  výběr požadované stránky parametrů.  Při návrhu  vzhledu aplikace  budete přitom  pracovat většinou s vlastnostmi objektů a až při definici prováděních akcí programem budete pracovat s událostmi objektů.

Vlastnosti  objektů jsou  vlastně proměnné  aktivního objektu. Na stránce  vlastností  máte  proto   možnost  přistupovat  k  těmto proměnným a měnit jejich hodnoty. Stránka vlastností je rozdělena na  dvě  části.  V  levé  části  jsou zobrazeny názvy vlastností. V pravé části jsou zobrazeny hodnoty vlastností s možností jejich změny.  Obdobně  je  uspořádána  i  stránka  nastavení  událostí.

Pro události se však zadávají jména procedur, která danou událost zpracuje.

Názvy  vlastností  a  událostí  mohou  být  v  okně řazeny dvojím způsobem. Bud  podle příslušných kategorií  nebo podle abecedního pořadí.  Změnu  nastavení  máte  možnost  si  vybrat  po kliknutí pravého tlačítka myši na okně  nastavení objektů. Stejně tak máte možnost si  vybrat, zda se  má okno Nastavení  objektů zobrazovat stále  nahoře, nad  všemi ostatními  okny. V  dolní části okna je u základních a  často používaných vlastností  a událostí zobrazen jejich stručný popis.

Jak  již víte,  mohou být  vlastnosti objektů  různého typu.  Buď číslo,  řetězec,  logická  hodnota,  předdefinovaná  konstanta  a podobně.  Podle   toho  se  také  mění   způsob  zadávání  hodnot vlastností.  Pokud  je  vlastnost  numerického  typu můžete zadat přímo  číselnou  hodnotu.  Alfanumerickou  hodnotu  (typu string) zadáváte také  přímo, avšak bez uvozovek  či apostrofů. Snadné je také  zadávání  logických  hodnot.  Zobrazený  čtvereček  je  buď zatržený, což  představuje hodnotu True, nebo  prázdný pro hodnotu False. Změnu  hodnoty máte možnost provést  přímo kliknutím myši. Některé  vlastnosti   mohou  nabývat  pouze   předem  zadaných  a pojmenovaných  hodnot. V  takovém  případě  je vpravo  od hodnoty zobrazeno   tlačítko  s   trojúhelníkem  pro   rozbalení  seznamu předdefinovaných  možných  hodnot  nastavení.  Některé vlastnosti mají vpravo zobrazeno tlačítko se třemi tečkami, které slouží pro vyvolání dialogu nastavení příslušné vlastnosti.

Některé vlastnosti se ve skutečnosti skládají z několika hodnot.

Takové  vlastnosti  poznáte  podle   malé  ikonky  se  zobrazením znaménka  '+'  vlevo  od  názvu  vlastnosti.  Například nastavení fontu.  Máte možnost  nastavit font  jednak v  dialogu, který  se zobrazí  po  kliknutí  na  tlačítko  se  třemi  tečkami vpravo od hodnoty  fontu.  Další  možností  je  rozbalit  seznam vlastností kliknutím  na  ikonku  plus  vlevo  od  názvu  vlastnosti. Tím se zobrazí  již přímo  seznam vlastností.  V našem  případě u  fontu například název, velikost a podobně.

Takže  tolik většinou  nezáživná teorie  bez jakékoliv  tvorby. V příští lekci však již vytvoříme první jednoduchou aplikaci.

Následující lekce


Lekce 2.06 - Naše první jednoduchá aplikace

Nejprve sestavíme  velmi jednoduchou aplikaci, ve  které budou na formuláři dvě  tlačítka. První s  nápisem 'KLONDAIK', druhé  bude mít nápis  "Konec'. Aplikace bude  vykonávat jednoduchou činnost. Pokud stiskneme na první tlačítko,  vypíše se nám zpráva "Ahoj!", při stisku druhého tlačítka bude aplikace ukončena.

Ještě než začneme tvořit, uzavřete všechna okna, ponechejte pouze viditelné  pouze  hlavní  okno  systému  KLONDAIK.  Nejprve známým způsobem  (klávesy  Ctrl+N)  vytvořte  nový  formulář.  Stiskněte funkční  klávesu  F12,  aby  se  vám  zobrazila paleta komponent. Vyberte  záložku  'Standard'  a  nalezněte  na  ní ikonu s názvem Button. Představuje  ji ikona zobrazující tlačítko  s nápisem OK. Klikněte na  ikonu, aby se komponenta  aktivovala a přejeďte myší nad  formulář.  Klikněte  myší   v  horní  levé  části  formuláře a tažením vyznačte obdélníkovou oblast  pro tlačítko. Po uvolnění tlačítka  vznikne  na  formuláři  tlačítko  s  nápisem 'Button1'. Vytvořte obdobným  způsobem i druhé tlačítko,  které umístíte pod první  tlačítko.  Nezapomeňte  přitom  znovu  kliknout  na  ikonu tlačítka  v  paletě  komponent.  Vytvoří  se  tlačítko  s nápisem 'Button2'.   Jak  vidíte,   systém  si   sám  jednotlivé  objekty pojmenovává a čísluje.

Nyní  můžete  tlačítka  na  formuláři  srovnat,  případně upravit i velikost formuláře. Velikost formuláře  je možné změnit stejným způsobem  jako velikost  jakéhokoliv jiného  objektu. Formulář je vlastně také  objekt, který však  nemá samostatnou komponentu  na paletě.

Nyní  již  máme  vytvořen  základní  tvar  aplikace. Zadáme ještě požadované  nápisy  na  tlačítka.  To  již  musíme provést v okně Nastavení  objektů. Určitě  již víte,  že je  možné jej  zobrazit například  po  stisku  klávesy  F11.  Ukážeme  se  ale nyní další způsob.  Klikněte   pravým  tlačítkem  myši   na  horní  tlačítko s nápisem  'Button1'  zobrazené  na  našem  formuláři. Zobrazí se PopUp  menu  možných  akcí,  které  je  možné  v  tomto  okamžiku s vybraným  objektem  provést.  Jednou  z  nich  je  i požadované zobrazení okna  pro nastavení objektů. Klikněte  v okně nastavení na  záložku  pro  nastavení   vlastností  a  nalezněte  vlastnost Caption. Pokud máte nastaveno, že jsou vlastnosti rozděleny podle kategorií, naleznete ji v  kategorii Vzhled, jinak podle abecedy. Všimněte si, že vlastnost  Caption obsahuje po vytvoření tlačítka stejnou  hodnotu,  jako  je  nápis  na  tlačítku.  Změňte hodnotu a uvidíte,  že současně  se změnou  hodnoty v  nastavení se změní i nápis na  tlačítku. Je to  proto, že vlastnost  Caption znamená v angličtině  titulek,  nápis.  Změňte  uvedeným  způsobem  nápis horního  tlačítka  na  'KLONDAIK'  a  u  dolního tlačítka zadejte 'Konec'.  Stejným  způsobem  můžete  nastavit  vlastnost  Caption i u formuláře. Zadejte hodnotu  'Moje první aplikace'. Samozřejmě bez nyní uvedených apostrofů.

Jak si  můžete všimnout, program aplikace  zůstává stále prázdný. Obsahuje pouze  definici prázdného programu. Přesto  je již možné naši aplikaci  spustit. Klikněte na klávesu  F9 a uložte aplikaci například  do  souboru  Prg1.  Následně  se  již aplikace spustí. Zobrazí  se  nadefinované  okno   se  dvěma  tlačítky.  Okno  lze přesouvat, zvětšovat a zmenšovat. Po kliknutí na tlačítka se však neprovede žádná činnost. Je to  proto, že jsme zatím neurčili, co se má po stisku tlačítka  provést. Windows proto reaguje na stisk tlačítka  pouze  tím,  že  zobrazí  efekt  stisknutého  tlačítka. Aplikaci  proto  budete  muset  ukončit  kliknutím  na systémovou uzavírací ikonu okna.

Jak již asi tušíte, budeme muset do programu zadat akci, která se má  provést při  výskytu události  stisku tlačítka  na formuláři. Není to  nic složitého. Ukončete  aplikaci, pokud jste  tak dosud neučinili. Aktivujte horní tlačítko na formuláři a přesuňte se do okna  Nastavení objektů.  Zvolte záložku  události a  uvidíte, že všechny události  jsou prázdné, pro žádnou  událost nebyla zadána žádná  činnost.   Nalezněte  v  levém   sloupci  událost  OnClick a dvojkilkněte v pravém sloupečku u této události. Tím zadáte, že chcete pro  tuto událost zapsat  akce, které se  mají při výskytu události provést. Událost OnClick  bude přitom vyvolána po stisku tlačítka.  Systém sám  pro zvolenou  událost vygeneruje  prázdnou proceduru, do které můžete požadovanou akci zapsat:

procedure TForm.Button1Click(Sender: TObject);

begin

end;

Kurzor  je  přitom  umístěn  v  těle  procedury.  Neměňte záhlaví procedury a zapište do těla procedury volání funkce pro zobrazení systémového hlášení: ShowMessage('Ahoj');

Obdobným způsobem  vyvolejte pro spodní tlačítko  událost OnClick a zadejte obsloužení události: Form.Close;

Celý program bude nyní obsahovat následující řádky:

Program Prg1;

procedure TForm.Button1Click(Sender: TObject);

begin

   ShowMessage('Ahoj');

end;

procedure TForm.Button2Click(Sender: TObject);

begin

   Form.Close;

end;

end;

Pozor,  procedury musíte  opravdu zadat  výše uvedeným  postupem. Pokud byste procedury do programu zapsali sami, byla by procedura v programu ignorována! V dalších lekcích si vysvětlíme, proč tomu tak je. Zvykněte si na to, že systém KLONDAIK udělá nějakou práci za vás, nemá však rád, pokud jej obcházíte.

Pokud máte program doplněn podle výše uvedeného vzoru, můžete jej spustit.  Když  kliknete  na  horní  tlačítko,  vypíše  se zadané hlášení. Po  kliknutí na spodní tlačítko  bude aplikace ukončena. Povedlo  se  nám  tedy  vytvořit  aplikaci  podle zadání. Asi ale netušíte  co se  skrývá v  automaticky vygenerovaných procedurách a kdy jsou volány. To si ale vysvětlíme v dalších lekcích.

Následující lekce


Lekce 2.07 - Názvosloví popisu objektů

V předchozí  lekci jsme  několikrát použili  slovo 'objekt', aniž bylo  vysvětleno co  to je.  Seznámíme se  proto nyní  podrobněji s názvoslovím, které budeme při práci s formuláři používat.

V našem prvním jednoduchém formuláři  máme umístěna dvě tlačítka. Každé s jiným  názvem, umístěním a činností. Jsou  to ony zmíněné objekty, čili  prvky formuláře. Každý z  nich je přesně definován nejen svým umístěním, rozměry a  nápisy, ale také činností kterou provádí.  Objektem na  formuláři může  být také  například nápis, ikona a podobně. Formulář se  tedy skládá z objektů, které můžeme popsat svými vlastnostmi a určit akcemi, které objekty vykonávají po výskytu události. Samostatným objektem je také formulář, který můžeme popsat obdobným způsobem.

Každý  objekt  by  bylo  možné  si  zjednodušeně  představit jako strukturovanou  proměnnou specifického  typu. To  by byla  pravda pouze pokud by objekt  obsahoval pouze vlastnosti. Ve skutečnosti je  objekt definován  navíc i  událostmi, pro  které můžeme zadat vlastní  akce,  které  se   mají  po  výskytu  události  provést. V dalších lekcích se seznámíme navíc s tím, že objekt má i určité metody,  které  provádějí  definované  akce  s objektem. Definice objektu  vychází  vždy  ze   své  počáteční  definice,  které  se v ostatních počítačových  jazycích říká třída.  My je ale  budeme pro zjednodušení dále nazývat pouze komponenty.

Pokud se v programech  odkazujeme na konkrétní vlastnost objektu, musíme uvést název objektu a jméno vlastnosti oddělené tečkou bez dalších mezer. Například 'Button1.Caption' nebo 'Form.Color'.

Objekty mají události, na které  mohou reagovat. Ty jsou určeny v okně  nastavení objektů  v záložce  'události'. U  každé události můžeme přitom zadat, jaké akce  se při výskytu události provedou. Název  události  vychází  z  anglické  terminologie.  Pokud se na událost odkazujeme z programu, uvádí  se před jménem události bez jakéhokoliv  oddělovače jméno  objektu. Vlastnost  'Click', která reaguje na stisk tlačítka s  názvem 'Button1' je proto v programu uvedena  jako   'Button1Click'.  V  okně   nastavení  objektů  je uvedená vlastnost nazývána 'OnClick'.

 Názvosloví událostí  v programu vychází  z názvu objektu  a názvu události spojené v jeden  celek bez žádného oddělovače. Například 'Button1Click'. Oddělovací  tečku u událostí  používáme pouze pro oddělení  nadřazeného   objektu  v  definici   procedury  obsluhy události.  V  systému  KLONDAIK  je  až  na vyjímky všem objektům nadřazen formulář, na kterém jsou objekty umístěny.

Tolik tedy možná pro někoho  nezáživná teorie. Je však nutná, aby bylo jasné,  co je to objekt  a jak jej můžeme  používat. Uvedeno bylo  přitom pouze  nejzákladnější a  velmi zjednodušené minimum. Pouze  tolik, abyste  byli schopni  sestavovat sami  na formuláři vlastní  aplikace  v  systému  Windows,  které  je  samo  o  sobě objektově orientováno.

Následující lekce


Lekce 2.08 - Procedury pro obsluhu událostí

Víme již,  že většina objektů dokáže  reagovat na určité události systému  Windows.  Například  po  kliknutí  na  tlačítku  provede zadanou akci. Víme již také,  že seznam událostí pro každý objekt je  viditelný  v  okně  Nastavení  objektů.  Nyní  se  podrobněji seznámíme  s tím,  jak se  definuje a  v programu  zadává obsluha událostí.

Jak již  bylo uvedeno, definují se  pro události procedury, které vzniklou událost obslouží. Ukážeme si to na aplikaci, kterou jsme vytvořili  v  minulých  lekcích.  Aktivujte  kliknutím myši horní tlačítko  s  nápisem  'KLONDAIK'  a  zobrazte  si  okno Nastavení objektů. Vyberte  záložku 'Události'. Jak  vidíte, je u  události OnClick uvedena procedura Button1Click.  Pokud na názvu procedury dvakrát  kliknete  myší,  přesunete  se  na  začátek těla uvedené procedury, ve které jsme v předchozí lekci doplnili volání funkce pro zobrazení systémového hlášení:

procedure TForm.Button1Click(Sender: TObject);

begin

   ShowMessage('Ahoj');

end;

Podobným   způsobem  budete   vyhledávat  i   další,  automaticky doplňované procedury. Nemusíte  se vůbec starat o to,  kde jsou v programu umístěny. Systém si je dokáže sám nalézt. Ovšem pouze za předpokladu, že nebudete sami měnit jména objektů, pro které jste již zadali  akce pro obsluhu událostí.  Stejně tak nezasahujte do vygenerovaného záhlaví a ukončení vygenerované procedury.

Co  je  to  procedura  již  víte.  Znáte  také,  jak  se zapisuje a používá. Vygenerovaná  procedura je však  trochu jiná. Obsahuje ve svém názvu jméno formuláře s  návěštím 'T', na kterém je objekt umístěn a  jméno události, kterou  má procedura obsloužit.  Jméno formuláře je  od jména objektu+vlastnosti odděleno  tečkou. Je to proto,  aby bylo  jméno  procedury  jednoznačné v  celém programu a přesto přehledné.

V proceduře  je  jako  první   parametr  uveden  parametr  Sender (anglicky  odesílatel),  který  je  typu  TObject. Tento parametr nebudeme ve  svých programech používat.  Je zachován pouze  kvůli kompatibilite   s  jinými   jazyky.  Parametr   typu  TObject  je předchůdcem   všech  použitých   typů  a   bylo  by   možné  jeho prostřednictvím  požadované parametry  předat. Některé  procedury mají i další  parametry různého typu, které je  možné v proceduře použít.  Například   událost  KeyPress  předává   znak  stisknuté klávesy.

V těle  procedury  můžete  použít   libovolné  příkazy  a  funkce probrané  v první  části  kurzu.  Lze také  naprogramovat vlastní procedury  a funkce  a umístit  je do  programu. Musíte  si pouze zvyknout na to, že program jako takový neběží od začátku ke konci, ale je zpracováván podle okamžiku výskytu událostí.

Následující lekce


Lekce 2.09 - Základní vlastnosti objektů

Nejdůležitější vlastností objektu je  vždy jejich název, který je označen anglicky Name. Je to  proto, že název objektu je součástí přesného  určení  vlastnosti  konkrétního  objektu  na formuláři. Počáteční názvy  objektů přiděluje systém a  skládají se většinou z typu objektu a pořadového čísla. Název musí být v rámci jednoho formuláře jednoznačný  a nesmí obsahovat  mezery. Dokud jste  pro objekt  nevytvořili  proceduru  obsahující  reakce  na  události, můžete  název objektu  v  okně  Nastavení objektu  změnit.

POZOR!

Pozdější  změna  názvu  objektu   se  nepromítne  automaticky  do vygenerovaných  jmen procedur  a při  výskytu události  by systém nebyl schopen požadovanou proceduru nalézt.

POZOR!

Jméno formuláře  je vždy Form  a ponechejte je  beze změny. Pokud byste  změnili  název  formuláře,   nemohli  byste  se  odkazovat v programu na vlastnosti formuláře.

Další  velmi  důležitou  vlastností  je  u  většiny  objektů text příslušející  objektu. Jak  již  víte,  je to  vlastnost Caption, která představuje u tlačítka nápis na tlačítku, u formuláře je to zase nadpis  okna. Vlastnost Caption lze  změnit v okně Nastavení objektů. Všimněte  si, že současně s  editací vlastnosti se ihned zobrazuje na objektu aktualizovaný nápis.

S nápisem na  objektu velmi úzce souvisí  použitý font pro nápis, který  je  definován  vlastností  Font.  Použitý  font lze změnit v okně  Nastavení  objektů  několika   způsoby.  Buď  kliknete  u vlastnosti  Font na  ikonu se  třemi tečkami  a zadáte požadované nastavení  fontu v  zobrazeném  dialogu.  Je také  možné nastavit pouze  jednotlivé  atributy  fontu.  Všimněte  si,  že vlevo před názvem vlastnosti font je v  okně Nastavení objektu malá ikona se znakem '+'. Pokud na ikonu kliknete, rozvine se vlastnost Font na několik  dalších  možností  nastavení.  Je  tak  možné samostatně nastavit jméno fontu, velikost a barvu. Pro styl fontu je použita další  úroveň nastavení.  Změnu použitého  fontu samozřejmě  také ihned uvidíte na formuláři.

Již  u tvorby  první aplikace  jste se  naučili nastavit velikost a umístění  objektu  myší  přímo  na  formuláři.  To  lze provést samozřejmě  i  méně  pohodlněji  přímo  změnou  vlastností v okně Nastavení objektů. Vlastnost Top  udává umístění objektu v bodech od  horní hrany  formuláře, Left  potom od  levé hrany formuláře. Velikost  objektu  je  definována   vlastností  Width  pro  šířku a Height  pro výšku  objektu. Vlastnost  Top a  Left u  formuláře udává  pozici formuláře  na obrazovce.  Výhodou zadáním konkrétní hodnoty v okně nastavení je, že můžete umístit objekt kdekoliv na formulář. Pokud  budete nastavovat pozici  a velikost objektu  na formuláři  myší, budou  vlastnosti nastavovány  pouze pro hodnoty s krokem 8 bodů.

Barva objektů se nastavuje  vlastností Color. Předdefinovány jsou přitom základní hodnoty, ze kterých si můžete vybrat po rozvinutí seznamu.  Mimo základních  barev  jsou  definovány i  barvy přímo určitých  vlastností.  Například  barva   okna  Windows,  menu  a podobně.

Až  dosud  všechny  prováděné  změny  nastavení  vlastností  byly viditelné již přímo při návrhu formuláře. Některé vlastnosti jsou však  viditelné  až  po  spuštění  programu.  Většina  objektů má například vlastnost Visible. Pokud je nastaveno True, bude objekt na formuláři viditelný. Zadáte-li hodnotu False, nebude se objekt na formuláři zobrazovat, ačkoliv bude  definován. To se dá využít například  pro zobrazení  objektů pouze  za určitých  podmínek. V následující  lekci si  přitom  ukážeme,  jak je  možné nastavovat vlastnosti objektů přímo z programu.

Další vlastností,  která je viditelná až  po spuštění programu je možnost zobrazení nápovědy. Většina objektů má vlastnost Hint, do které  můžete zadat  text  nápovědy,  a přepínač  ShowHint. Pokud zadáte vlastnosti  ShowHint hodnotu True,  zobrazí se v  okamžiku umístění  kurzoru myši  nad  objektem  text zadaný  ve vlastnosti Hint.

Probrali  jsme  si  jen  základní  vlastnosti,  které  má většina objektů  systému KLONDAIK.  Vyzkoušejte si  sami možnosti  jejich použití  v   jednoduchých  programech.  Používejte   zatím  pouze základní objekty, které naleznete v paletě komponent pod záložkou 'standard'.  Nemusíte  přitom   psát  žádný  program.  Nastavovat vlastnosti  objektů přímo  z programu  se naučíme  v následující lekci.

Následující lekce


Lekce 2.10 - Změna vlastností z programu

Probrali  jsme  si  již  použití  základních  vlastností objektů. Objekt  je  pro  nás  přitom  komponenta  z  palety  umístěná  na formuláři.  Ukázali  jsme  si   také,  jak  je  možné  nastavovat vlastnosti objektů  při návrhu programu. Není  přitom nutné psát, žádný program, vlastnosti jsme zadávali v okně Nastavení objektů. Takové použití je však vyhovující pouze u jednoduchých aplikací.

Vlastnosti objektů  je možné nastavovat i  přímo z programu. Není to nic  složitého, musíte pouze  znát jméno objektu  a vlastnost, kterou  chcete nastavit.  Mezi  nimi  se uvede  oddělovací tečka. Požadovaná  vlastnost   se  potom  přiřadí   jako  hodnota  běžné proměnné. Například:

Button1.Caption := 'Zde stiskni';

Button1.Left    := 20;

Form.Color      := clBlue;

Jméno objektu  uvedené před tečkou  udává vlastnost Name.  Systém přitom  zajišťuje,  že  nemohou  existovat  dva  objekty stejného jména.

POZOR!

Jak jsme již uvedli, nesmíte změnit jméno objektu po tom, co jste jej již v programu použili. Pokud  by to bylo nutné, budete muset sami v editoru  vyhledat použití původního jména a  změnit jej na nové.

Podobným způsobem, jako se mění vlastnosti objektů v programu, je možné  zjistit i hodnotu vlastnosti  objektu. Pokud budete  chtít z programu  posunout   pozici  tlačítka  o   deset  bodů  doleva, použijete následující nastavení:

Button1.Left := Button1.Left - 10;

Samozřejmě  je   možné  použít  uložení   vlastností  do  běžných proměnných,   případně  nastavovat   hodnoty  objektů   hodnotami proměnných.  Je však  nutné použít  proměnnou požadovaného  typu. Například pro nastavení vlastnosti  Caption musíte použít hodnotu typu  string. Pokud  byste se  snažili zadat  numerickou hodnotu, bude  nahlášena  chyba.  Některé  vlastnosti  je  možné  nastavit hodnotami   předdefinovaných   konstant,   které   mají  většinou numerické  vyjádření.  Modrou  barvu  formuláře  je  proto  možné z programu nastavit následujícími způsoby:

Form.Color := clBlue;     {konstanta}

Form.Color := $0FF0000;   {hodnota}

Následující lekce


Lekce 2.11 - Základní události objektů

Jak již  bylo uvedeno dříve, jsou  objekty definovány nejen svými vlastnostmi, ale také událostmi, na které mohou reagovat (vykonat zadanou  akci).  S  vlastnostmi  jsme  se  již seznámili, nyní si probereme základní události.

Událost je všeobecně situace, kterou objekt rozpozná a je schopen (ale nemusí) na ní reagovat. Události je přitom možné rozdělit do dvou  skupin. V  první skupině  jsou události,  které vyvolal sám uživatel  programu  například  tím,  že  stisknul  tlačítko myši. Hlavně pro takové události  také budeme psát obsloužení události. Ve  druhé skupině  jsou  zařazeny  události, které  byly vyvolány přímo  systémem.  Například  při  spuštění  aplikace,  nebo jejím ukončení. Takové události je možné použít například pro nastavení počátečních hodnot aplikace.

Pro program  představuje událost zadání  procedury, která se  při výskytu  události  provede.  Jinými  slovy,  že uvedená procedura obslouží  vyvolanou  událost.  Pokud  přitom  není  procedura pro událost  v  programu  definována,  nebude  hlášena  žádná  chyba, událost však také nebude obsloužena.

Nejběžnější událostí je stisk tlačítka myši, které vyvolá událost OnClick.  Stejnou  událost  vyvolá  i  stisk  klávesy  Enter nebo mezerník,  pokud  je  na  formuláři  aktivní tlačítko. Obsloužení události jsme si předvedli v naší první jednoduché aplikaci:

procedure TForm.Button1Click(Sender: TObject);

begin

   ShowMessage('Ahoj');

end;

Pokud budeme  potřebovat rozpoznat stisk  tlačítka, můžeme použít událost  OnKeyDown  (stisk),  OnKeyUp  (uvolnění) nebo OnKeyPress (stisk+uvolnění). Procedura pro obsloužení události je definována tak, že vám předá i buď kód stisknuté klávesy nebo přímo znak:

procedure TForm.Button1KeyPress(Sender: TObject; var Key: Char);

begin

   ShowMessage("Byla stisknuta klávesa'"+Key+"' !");

end;

Podobným  způsobem je  možné také  rozpoznat stisk  nebo uvolnění tlačítka  myši. Uvedené  akce  mohou  obsloužit mimo  již zmíněné události  OnClick také  události OnMouseDown  (stisk) a OnMouseUp (uvolnění). Uvedené události definují  ve své proceduře pro další použití souřadnice stisku tlačítka myši na objektu:

procedure TForm.MouseDown(Sender: TObject;  Button: TMouseButton;

                           Shift: TShiftState; X, Y: Integer);

begin

   ShowMessage('Pozice x='+IntToStr(x)+#10+

               'Pozice y='+IntToStr(y));

end;

Zajímavá a využitelná je  také událost OnMouseMove, která nastane při  přesunu  myší  nad  objektem.  To  lze  využít například pro zobrazení ukazatele pozice myši.

Dalšími standardními událostmi mnoha objektů jsou události, které se  používají  pro  rozpoznání  kliknutí  myši  na objektu a jeho tažení  na novou  pozici. Viz  události OnStartDrag,  OnDragDrop, OnDragOver, OnEndDrag. S nimi se  ale seznámíme až někdy později, protože  jejich  obsloužení  je  trochu  složitější.  Místo toho se seznámíme v následující lekci  s událostmi, které jsou specifické a mnohdy použitelné pro samotné formuláře.

Následující lekce


Lekce 2.12 - Základní události formuláře

První  události,  které  jsou  aktivovány  současně  se spuštěním aplikace souvisí se samotným  formulářem. Jsou to události, které můžeme při znalosti okamžiku  vyvolání událostí použít pro úvodní a ukončovací  akce  aplikace.  Nejprve  je  ještě před zobrazením formuláře vyvolána  událost OnCreate. V  obsloužení této události můžete  definovat akce,  které chcete  provést vždy  při spuštění aplikace.  Zde   můžeme  například  nastavit   počáteční  hodnoty používaných proměnných, případně otevřít datové soubory:

procedure TForm.Create(Sender: TObject);

begin

   ShowMessage('Začátek aplikace');

   DbfUse('cenik.dbf');

end;

Dále je  vyvolána událost OnActivate, která  je vyvolána vždy při aktivování formuláře. Vzhledem k tomu, že v systému KLONDAIK není zatím možné přepínat mezi okny,  bude tato událost vyvolána pouze jednou. Stejně  tak událost OnDeactivate,  která je vyvolána  při deaktivaci  okna.  Aktivace  a  deaktivace  je  tedy  volána  při aktivování jiného okna.

Při běhu aplikace aktivuje  formulář některé události, se kterými jsme  se již  seznámili. Nejčastěji  budete asi  používat událost OnClick pro obsloužení události kliknutí myši na ploše formuláře. Pokud  budete přitom  potřebovat znát  souřadnice stisknutí myši, můžete použít událost OnMouseDown.

Při změně velikosti formuláře je vyvolána událost OnResize. Takže i vždy při minimalizaci a maximalizaci formuláře. Obsloužení této události  je  vhodné  použít  například  pro  změnu umístění nebo velikosti  objektů,  které  mají   být  umístěny  vždy  v  určité vzdálenosti od okraje formuláře.

procedure TForm.FormResize(Sender: TObject);

begin

   Button1.Left  := Form.Width - 60;

   Button1.Top   := Form.Height- 100;

   Button1.Width := 50;

   Button1.Height:= 50;

end;

Podobná událost  je OnRepaint, která je  však vyvolána pouze vždy při nutnosti překreslení plochy formuláře.  Pozor na to, že pokud velikost formuláře zmenšíme, není nutné jej překreslovat, událost tedy  nebude  vyvolána.  Překreslení  je  nutné  až  při zvětšení velikosti  formuláře, kdy  Windows vyvolá  událost OnRepaint  pro překreslení chybějící plochy okna.

Životnost formuláře je ukončena  s vyvoláním události OnClose. Do obsloužení  této  události  je   vhodné  zadat  uzavírající  akce aplikace. Například uzavření databáze a podobně.

Seznámili  jsme  se  se  základy  programování aplikací skládáním komponent  na formuláři.  Pokud jste  v minulosti  dosud uvedeným stylem   neprogramovali,  může   se  vám   zdát  vše   složité  a komplikované. Vytrvejte  však ve svém úsilí  a výsledky se určitě dostaví.  Nejdůležitější je  však vyzkoušet  si vše  prakticky. V dalších  lekcích   již  budeme  probírat   podrobněji  jednotlivé komponenty.


KURZ - KNIHOVNA VIZUÁLNÍCH KOMPONENT

Kurz použití vizuálních komponent se připravyje. Zatím máte možnost seznámit se se všemi komponentami podrobně v knihovně vizuálních komponent.


KURZ - DATABÁZE NA FORMULÁŘI

Lekce 4.01 - Databáze na formuláři

Lekce 4.02 - Vytváříme první databázovou aplikaci

Lekce 4.03 - Základní databázové komponenty

Lekce 4.04 - Použití komponenty DataTable

Lekce 4.05 - Použití komponenty DataSource

Lekce 4.06 - Použití komponenty DataGrid

Lekce 4.07 - Nastavení sloupců komponenty DataGrid

Lekce 4.08 - Použití komponenty DataNavigator

Lekce 4.09 - Komponenty pro zobrazování dat

Lekce 4.10 - Přehled metod komponenty DataTable

Lekce 4.11 - Metody DataTable pro navigaci v databázi

Lekce 4.12 - Metody DataTable pro čtení a zápis dat

Lekce 4.13 - Spojení databází do relace 1:N


Lekce 4.01 - Databáze na formuláři

V první  části  kurzu  jsme  se  seznámili  se základním použitím databází.  S  databázemi  jsme   pracovali  v  databázovém  okně, výsledky  výpočtů  jsme  zobrazovali  v  textovém výstupním okně. Mimoto umožňuje systém KLONDAIK pracovat  s databázemi i přímo na formuláři.  Oba   druhy  práce  s  databázemi   je  možné  vhodně kombinovat.

Nejprve několik poznámek pro zopakování. Databázové okno umožňuje pracovat najednou maximálně se třemi  databázemi. Každá z nich je umístěna  v samostatné  očíslované databázové  oblasti (1  až 3). Databázové  okno   se  používá  na   vytvoření  nových  databází, prohlížení jejich  obsahu, editaci, tvorbě  indexů a sestav.  Pro práci  s  databázemi  otevřenými  v  databázovém  okně  je určena rozsáhlá knihovna procedur a funkcí, jejichž názvosloví začíná na 'Dbf'.  S  databázemi  otevřenými  v  databázovém  okně  je možné pracovat  tzv.   na  pozadí,  kdy  nemusí   být  databázové  okno viditelné.  To   je  vhodné  například  na   různé  konverze  dat a podobně. S  databázemi otevřenými v  databázovém okně je  možné pracovat i pomocí příkazů zadávaných z příkazového okna.

Systém KLONDAIK umožňuje také pracovat s databázemi umístěnými na formuláři v rámci vytvořené aplikace. Na formulář je možné přitom umístit teoreticky neomezený počet  databází. Přístup k databázím umístěným  na  formuláři   je  prostřednictvím  objektů.  Každý objekt má  své vlastnosti, události a  metody. Názvosloví pro práci  s databází  na formuláři  je obdobné  jako názvosloví  pro práci  s databází  v databázovém  okně. K  databázím umístěným na formuláři není možné přistupovat z příkazového okna.

Komponenty pro práci s databázemi, které budou v této části kurzu probírány jsou umístěny na paletě komponent v záložce 'Databáze'.

Následující lekce


Lekce 4.02 - Vytváříme první databázovou aplikaci

Přístup  k databázím  a zobrazování  dat má  na starosti  několik základních komponent. Předvedeme si  proto nyní jejich použití na jednoduchém  příkladě.  Dodržujte  přesně  následující postup, na jehož konci  byste měli mít  na formuláři vytvořenou  jednoduchou aplikaci na prohlížení ceníku.

1)  Uzavřete  nejprve  všechny  programy  a  aplikace  KLONDAIKu. Vytvořte nový, prázdný formulář.  Umístěte na formulář komponenty DataTable a DataSource.  Jedná  se  o nevizuální  komponenty, to znamená že jsou viditelné pouze  po dobu návrhu programu ve formě ikony.  Můžete  je  proto  umístit  kdekoliv  na  formuláři. Dále umístěte na formulář komponentu DataGrid a upravte její velikost na celou plochu formuláře.  Názvy komponent na formuláři ponechte beze  změny.  Aplikaci  již   můžete  spustit.  Uložte  vytvořený formulář do  adresáře, ve kterém  máte uloženy zkušební  pracovní databáze. Pokud  jste neprovedli změny při  instalaci, mělo by se jednat o adresář \OZOKLON3\PROGRAMY\. Pokud tak neučiníte, nebylo by možné v následujícím kroku připojit databázi.

2)  Po spuštění  aplikace  vytvořené  v předchozím  kroku nebudou žádná data zobrazena.  Je to proto, že jsme  zatím nezadali zdroj dat.  Ukončete  proto  aplikaci  a  vyberte komponentu DataTable1 umístěnou na formuláři. Nastavte ve vlastnosti TableNane databázi s ceníkem -  soubor CENIK.DBF. Až potom  (!!!) nastavte vlastnost Active  na  True.  Nyní   klikněte  na  formuláři  na  komponentu DataSource1  a  nastavte  vlastnost  DataSet.  Měla  by  vám  být nabídnuta  hodnota  DataTable1,  kterou  vyberete.  U  komponenty DataGrid  umístěné  na  formuláři  nastavte vlastnost DataSource. Měla by  se vám nabídnout  hodnota DataSource1, kterou  vyberete. Pokud jste provedli vše správně, měly  by se vám nyní zobrazit na ploše  komponenty  DataGrid1  data  ceníku.  Aplikaci  již můžete spustit a vyzkoušejte si základní ovládání databázového okna.

3)  Jistě  budete  souhlasit,  že  ovládání  databáze  není nijak komfortní. Ukážeme  si proto další  komponentu, která nám  umožní základní  navigaci v  databázi. Je  to komponenta  DataNavigator. Umístěte ji  na plochu formuláře  a nastavte již  známým způsobem vlastnost  DataSource  na  nabídnutou  hodnotu DataSource1. Pokud nyní aplikaci  spustíte, umožní vám  navigátor pohyb v  databázi, přidávání a výmaz záznamů.

Vyzkoušejte  si  několikrát  výše  uvedený  postup.  Vytvořte  si obdobné formuláře  i pro další dodávané  zkušební databáze. Možná budete  zpočátku trochu  tápat v  tom, co  kdy a  v jakém  pořadí nastavit. S  databázemi budete mít možnost  pracovat na formuláři pouze pokud vše zvládnete.

Důležité je, že vlastnost Active  můžete nastavit na hodnotu True pouze  pokud máte  již  definovanou  databázi. Stejně  tak můžete změnit  databázi  pouze  v   případě,  že  je  vlastnost  Active komponenty DataTable nastavena na hodnotu False.

Zopakujme  si  nyní  ještě  jednou  postup nastavování vlastností komponent na formuláři. Postupujte vždy následujícím způsobem:

------------------------------------------

komponenta      vlastnost   zadaná hodnota

------------------------------------------

DataTable1      TableName    cenik.dbf

DataTable1      Active       True

DataSource1     DataSet1     DataTable1

DataGrid1       DataSource   DataSource1

DtaNavigator1   DataSource   DataSource1

-----------------------------------------

Možná  vás  překvapilo,  že  v  porovnání  s  možnostmi ostatních komponent  je použití  databází na  formuláři v  systému KLONDAIK trochu složitější.  Je to dáno  vnitřní stavbou systému  a úkoly, které  pro  databázi  zajišťuje  každá  komponenta. V následující lekci  se  proto  seznámíme  se  základními funkcemi databázových komponent.

Následující lekce


Lekce 4.03 - Základní databázové komponenty

V předchozí  lekci jsme  si předvedli  vytvoření velmi jednoduché databázové aplikace na formuláři. Obsahovala pouze nejzákladnější komponenty. Nyní se s nimi seznámíme trochu podrobněji.

DataTable reprezentuje vlastní databázi.  Pokud budeme pracovat s daty, budeme veškeré příkazy posílat právě této komponentě, která jako  jediná  s  daty  manipuluje.  Komponenta  je nevizuální, to znamená, že je viditelná pouze v době návrhu aplikace jako ikona. Pro  vizuální zobrazování  dat je  komponenta DataTable propojena přes    komponentou   DataSource    s   vizuálními   databázovými komponentami.

DataSource představuje  spojovník  mezi  DataTable  a  ostatními vizuálními komponentami.  Komponenta je nevizuální,  je viditelná pouze  v  době  návrhu  aplikace  v  podobě  ikony. Na komponentu DataSource  jsou napojeny  další vizuální  komponenty, které jsou již schopné data zobrazovat.

Pro  zobrazování  dat   je  nejdůležitější  komponenta  DataGrid. Zobrazuje v datové mřížce  přehledně obsah databáze. Řádek mřížky představuje  jeden  záznam  databáze,  sloupec mřížky představuje položku databáze.  V záhlaví mřížky jsou  zobrazeny názvy položek databáze. Datová mřížka (dle názvosloví jazyků xBase je to BROWS) má stejné ovládání jako již známé databázové okno.

Pro navigaci v databázi  se používá komponenta DataNavigator. Jde o sadu  tlačítek,  která  umožňují  pohyb  po  zdroji dat, umožní zadání nového záznamu, výmaz záznamu apod.

Ostatní databázové komponenty sloužící  pro vstup a zobrazení dat jsou  obdobou  běžným  komponentám,   obsahují  však  navíc  přes DataSource komunikovat s databází. Pro vstup a zobrazení textu se používá DataEdit. Textové memopoložky  databází je možné zobrazit a editovat  komponentou  DataMemo.  Logické  hodnoty se zobrazují a editují  pomocí komponenty  DataCheckBox. Navíc  je možné pouze zobrazit   (bez  možnosti   editace)  textové   položky  databáze komponentou DataText.

Následující lekce


Lekce 4.04 - Použití komponenty DataTable

Jak již bylo uvedeno, skrývá  se databáze v komponentě DataTable, přes  kterou  s  ní   můžeme  pracovat.  Je  tedy  nejdůležitější komponentou  pro  zpracování  databází.  Obsahuje  pouze  několik vlastností,  ale mnoho  metod, díky  kterým je  možné s  databází pracovat.

Nejdůležitější vlastnosti komponenty  DataTable slouží pro zadání používané databáze. K tomu  se používají dvě vlastnosti. Adresář, ve kterém je databáze umístěna zadáme do vlastnosti DataBaseName. Jméno  konkrétní databáze  zadáme potom  ve vlastnosti TableName. Vlastnost  DatabaseName  nemusíme   v  případě  zpracování  pouze v jednom adresáři  vůbec zadávat. Pokud  však budete mít  umístěn program  v jiném  adresáři  než  data, budete  muset DatabaseName zadat. Vyhnete se tak zároveň nepříjemnostem při změně aktuálního adresáře.   Databázi   vybranou   dialogem   otevřeme   například následujícím způsobem:

if OpenDialog.execute then

begin

  DataTable.Active      :=False;

  DataTable.DatabaseName:=ExtractFilePath(OpenDialog.Filename);

  DataTable.TableName   :=ExtractFileName(OpenDialog.Filename);

  DataTable.Active      :=True;

end;

Pokud se vám zdá výše  uvedený postup zdlouhavý a složitý, můžete použít volání metody Use, která to provede vše za vás:

if OpenDialog.execute then

begin

  DataTable.Use(OpenDialog.Filename);

end;

Databáze se aktivuje až po nastavení vlastnosti Active na hodnotu True. U této vlastnosti si musíte  dát pozor na to, že pokud máte nastaveno  Active:=True,  není   možné  provádět  změnu  databáze (vlastnosti  DatabaseName  a  Tablename).  Pokud máte aktivovanou databázi již  při návrhu aplikace,  budou data ihned  viditelná a přístupná.

Pokud   zpracováváte  data   v  síti,   můžete  použít  vlastnost Exclusive, která zadává, zda má být databáze otevřena exclusivně. To  znamená,  že  ji  ve  stejném  okamžiku  nemůže používat jiný uživatel. Pro  vlastnost Exclusive platí  obdobné omezení použití jako pro vlastnost Active. Není možné změnit vlastnost Exclusive, pokud již máte databázi aktivovanou.

Pokud budete chtít databázi pouze prohlížet bez možnosti editace, můžete nastavit vlastnost ReadOnly na hodnotu True. Vyvarujete se tak zbytečným  změnám v okamžiku  prohlížení databáze a  nebudete muset  kontrolovat  změnu  dat  u  všech  vizuálních komponentách přistupující k  datům. Zde opět  platí, že vlastnost  ReadOnly je možné změnit pouze v případě, že není databáze aktivní.

Pokud je databáze indexována,  můžete změnit aktivní index, podle kterého je databáze seřazena změnou vlastnosti IndexName.

Poslední  dvě vlastnosti  slouží ke  spojení databází  do relace. Jedná se o vlastnosti  MasterFields a MasterSource. Podrobněji se s nimi seznámíme až v některé z následujících lekcí.

Následující lekce


Lekce 4.05 - Použití komponenty DataSource

Komponenta  DataSource zprostředkovává  spojení  mezi nevizuální komponentou  DataTable a  ostatními vizuálními  komponentami. Jak již  víme, komponenta  DataTable obsahuje  vlastní data  a dokáže s nimi  pracovat.  Je  to  vlastně  ukazatel  na  aktuální  data. Prostřednictvím  DataSource  můžeme   tato  aktuální  data  pomocí dalších vizuálních komponent data zobrazovat.

Nejdůležitější  vlastností  je  DataSet,  to  je  spojení na data obsažená  v  komponentě  DataTable.  Zadává  se  vždy  komponenta DataTable umístěná na formuláři.

Vlastnost  AutoEdit umožňuje  zabránit  editaci   položek.  Při nastavení  DataSource.AutoEdit:=True  je  možné  položky databáze v komponentě   DataEdit   běžně   editovat.   Pokud  však  zadáme DataSource.AutoEdit:=  False, je  zabráněno editaci  položek. Pro přepnutí  do  editačního  režimu  budete  muset  buď  kliknout na editační  ikonu  komponenty   DataNavigator,  nebo  volat  metodu DataTable.Edit.

Pokud budete zpracovávat větší  množství dat z připojené databáze z rozsahu celého souboru, můžete využít vlastnost Enabled. Umožní vám   dočasně   odpojit   komponenty   připojené   k   DataSource zprostředkovávající zobrazení  dat. Tím dosáhnete toho,  že se při procházení  databáze nebudou  data zobrazovat  a zpracování  bude díky tomu mnohem rychlejší.

Komponenta DataSource  má tři velmi důležité události.  Událost OnDataChange se vyskytne při každé změně v databázi. To znamená  nejen při změně dat, ale také při změně pozice databázového ukazatele. Událost OnUpdateData je   volána  vždy,  když   je  záznam  po   editaci aktualizován  (zapisován  fyzicky  do  databáze).  Větší možnosti poskytuje událost  OnStateChange, která je volána  vždy při změně stavu  databáze.  To  znamená,  že  dokáže  rozpoznat přepnutí do editačního  režimu,  režimu  prohlížení,  vložení  nového záznamu a deaktivaci tabulky. Stav tabulky zjistíte testováním vlastnosti State.

Událost OnDataChange je možné použít například pro zobrazení čísla aktuálního záznamu databáze následujícím způsobem:

procedure TForm.DataSourceDataChange(Sender: TObject; Field: TField);

begin

   Edit.Text:= IntToStr(DataTable.Recno)+'/'

              +IntToStr(DataTable.RecCount);

end;

Následující lekce


Lekce 4.06 - Použití komponenty DataGrid

Nejpřehlednější   zobrazení  databází   provedete  pomocí  datové mřížky, která  vám umožní navíc i  uložená data editovat. Obsluha datové  mřížky je  obdobná  jako  obsluha databázového  okna.  Datovou mřížku zobrazíte na formuláři pomocí komponenty DataGrid.

Pro nastavení vzhledu databázové mřížky existuje mnoho vlastností, se kterými se nyní seznámíme.

Nejdůležitější vlastnost komponenty DataGrid je vlastnost DataSource, která definuje zdroj dat. Pokud  zadáte komponentu DataSource, která je dále  napojena na  aktivovanou databázi  (DataTable), bude  datová mřížka  zobrazovat  data  již   při  návrhu  aplikace.  Důležitou vlastností je také vlastnost ReadOnly,  která udává, zda je možné data  editovat.  Hodnotou  True  povolíme  editaci, hodnota False editaci zakáže.

Mnoho vlastností je seskupeno do  skupiny Options. Po kliknutí na ikonu '+' u této volby se rozbalí seznam vlastností, které umožní nastavit následující volby:

dbColLines -  po zadání False  se nebudou zobrazovat  dělící čáry mezi sloupci databázové mřížky

dgColumnResize  -  při  změně  na  False  nelze při běhu aplikace změnit myší šířku sloupců datové mřížky

dgConfirmDelete  -  pokud  nastavíte  na  False,  nebude DataGrid vyžadovat potvrzení smazání záznamu

dgEditing  -  pokud  nastavíte   False,  bude  zakázána  editace, vkládání a rušení záznamů databáze

dgIndicator -  pokud nastavíte na  False, nebude se  v levé části databázové   mřížky  zobrazovat   sloupec  s   indikátorem  stavu aktuálního  záznamu (šipka  - prohlížení,  hvězdička -  vkládání, čárka - editace)

dbRowLines -  po zadání False  se nebudou zobrazovat  dělící čáry mezi řádky databázové mřížky

dgRowSelect -  pokud je nastaveno False,  je možné při procházení databáze  vybrat  položku  databáze,  při  nastavení  na False je zvýrazněn vždy celý aktuální řádek databázové mřížky

dgTabs - pokud je nastaveno  na True, dostanete se stisku klávesy Tab  na další  položku databázové  mřížky, po  nastavení na False způsobí  stisk  klávesy  Tab   přechod  na  další  komponentu  na formuláři

dgTitles - pokud nastavíte False, nebudou se v záhlaví databázové tabulky zobrazovat záhlaví

Komponenta DataGrid  dokáže reagovat mimo  běžných událostí i  na událost OnColEnter při vstupu do nového  sloupce a OnColExit při výstupu  ze  sloupce  datové  mřížky.  Obdobně  dokáže samozřejmě reagovat událostmi OnEnter a OnExit při vstupu a  výstupu z celé datové  mřížky.   Pro  kontrolu  vstupu  dat   na  úrovni  stisku jednotlivých    kláves   můžete    použít   události    OnKeyDown a OnKeyPress.

UPOZORNĚNÍ

Zrušený záznam v databázi je pouze označen ke zrušení. Fyzicky je vymazán až  následným, krokem (DataTable.Pack).  Záznamy označené ke  zrušení mohou  být proto  stále v  datové mřížce zobrazovány. Stav zobrazování záznamů určených ke zrušení závisí na přepínači, který   se   ovládá   procedurou   DbfSetDeleted.   Pokud  zadáte DbfSetDeleted(False),  nebudou  se   záznamy  určené  ke  zrušení zobrazovat.  Nastavení  přepínače  je   platné  pro  celý  systém KLONDAIK, pro všechny databáze.

Probrali jsme si základní  celkové nastavení komponenty DataGrid, které  je  platné  pro  celou  komponentu.  Určitě  by  vás  však zajímalo, jak  je možné změnit pouze  některé vlastnosti sloupců. Například text záhlaví  sloupce a podobně. S tím  se seznámíme až v následující lekci.

Následující lekce


Lekce 4.07 - Nastavení komponenty DataGrid

V předchozí lekci jsme si probrali nastavení komponenty DataGrid. Změny  v  nastavení  se  však  projevily  vždy  v celé databázové mřížce,  nebylo možné  nastavit vlastnosti  jednotlivých sloupců. Jednotlivé  sloupce   datové  mřížky  jsou   vlastně  podmnožinou komponenty DataGrid a je možné je nastavit také samostatně.

Vizuální vzhled  jednotlivých sloupců datové  mřížky - komponenty DataGrid  je možné  změnit pouze  v době  návrhu programu. K tomu slouží vizuální návrhář. Klikněte  levým tlačítkem myši na plochu komponenty DataGrid umístěné na formuláři  a vyberte z popup menu položku  'Editor   DataGrid'.  Pokud  máte   komponentu  DataGrid napojenou  na  tabulku  DataTable  s  aktivovanou  databází, jsou v levé části  návrháře zobrazeny položky databáze,  v pravé části potom nastavujete vlastnosti pro vybranou položku.

POZOR!

Pokud  budete  chtít   nastavovat  jakoukoliv  vlastnost  sloupců komponenty  DataGrid, budete  muset provést  nejprve inicializaci vlastnosti položek.  Klikněte levým tlačítkem myši  na levou část návrháře.  Zobrazí  se  popup  menu,  ze  kterého  vyberete volbu 'Inicializace všech položek'. Tím  se nastaví a načtou standardní hodnoty  všech položek.  Pokud  byste  tento krok  pro komponentu DataGrid  neprovedli,  bylo  by  sice  možné  nastavit vlastnosti jednotlivých sloupců, ale po spuštění aplikace by byly aktivovány standardní hodnoty!

Levá část návrhu mřížky obsahuje jména položek databáze v takovém pořadí, jak  budou uspořádány vedle  sebe v datové  mřížce. Změnu pořadí  provedete jednoduše  uchopením jména  položky databáze  a jejím přetažením na požadovanou pozici.

V pravé části návrhu zobrazení položek datové mřížky se zobrazují pro  vybranou položku  databáze nastavené  vlastnosti. Změnit lze například barvu, font a  text záhlaví sloupce. Některé vlastnosti (například Font) jsou sloučeny  do skupin, které můžeme kliknutím na  ikonu  '+'  rozbalit  a  zadávat  samostatně. Následuje popis nejdůležitějších    vlastností.    Uveden    je    pouze    popis nejdůležitějších vlastností.

Aligment - zarovnávání v mřížce  (vlevo, střed, vpravo). Texty je například vhodné zarovnávat zprava, čísla zleva.

Color - barva podkladu sloupce databázové položky

Font -  nastavení fontu zobrazení  dat. Možné je  zadat například název fontu, barvu, velikost a styl.

PickList -  je možné zadat výběr  hodnot pro automatické dosazení při editaci. Pokud budete mít  zadán výběr předvolených hodnot ve vlastnosti PickList a budete  položku editovat, zobrazí se vpravo u položky ikona s trojúhelníkem. Po  kliknutí na ikonu budete mít možnost vybrat  jednu z předvolených  hodnot, které se  umístí do editované položky.

PopUpMenu  -  možno  vybrat  PopUpMenu,  které  se  zobrazí pokud kliknete levým tlačítkem myši na sloupec databáze.

ReadOnly  -  možno  zadat,  zda  lze  editovat  sloupec  databáze (True/False).

Title  -  zadání  nadpisu  sloupce  mřížky.  Možné je změnit text nadpisy (Caption), ale i barvu podkladu a font.

Některé vlastnosti ve možné  nastavit celkově v nastavení objektu DataGrid  a u  nastavení vlastností  položek datové  mřížky zadat pouze  odlišnosti.  Například  pokud  budeme  chtít editovat pouze sloupec s cenou, zadáme pro objekt DataGrid vlastnost ReadOnly na hodnotu True a pouze v  definici zobrazení datové položky CENA zadáme  vlastnost ReadOnly hodnotu  False. Obdobné nastavení se dá použít například i pro font a podobně.

Zopakujme si nejdůležitější vlastnosti základní nastavení položek datové mřížky.  Následující nastavení vlastností  jsou platná pro zadání v návrháři objektu DataGrid, ne v okně nastavení objektů.

- barvu fontu zobrazení sloupců  datové mřížky změníte nastavením vlastnosti DataGrid.Font.Color

- barvu   podkladu   sloupce   datové   mřížky  nastavíte  změnou vlastnosti DataGrid.Color

- budete-li  chtít,  aby  se  zobrazovaný  text  ve  svém sloupci centroval, nastavte vlastnost DataGrid.Aligment

- pokud  potřebujete nastavit  jiný text  titulku sloupce, změňte vlastnost DataGrid.Title.Caption.

Následující lekce


Lekce 4.08 - Použití komponenty DataNavigator

Pro  navigaci  v  databázi  by  bylo  možné použít sadu tlačítek, kterým  byste  zadali  příslušné  akce  pro  procházení databáze. Výhodnější je však použít  komponentu DataNavigator, která to vše obstará za vás.

Komponenta  DataNavigator  je  sada  tlačítek zprostředkovávající pohyb (navigaci) v databázi. Umožňuje skok na první, následující, předchozí  a  poslední  záznam,  vložení  nového záznamu, vymazat záznam, editovat  záznam, potvrdit uložení  záznamu, zrušit zatím neuložené změny a obnovit zobrazovaná data.

Nejdůležitější  vlastností  je  DataSource,  která definuje zdroj dat.  Pokud zobrazujete  data  v  datové mřížce  DataGrid, musíte zadat stejný DataSource pro DataGrid i pro DataNavigator.

Viditelná  tlačítka  zadáváte  vlastností  VisibleButtons. V okně nastavení komponent je tato  vlastnost sloučena do jedné skupiny. Nastavit  můžete  viditelnost   jednotlivých  tlačítek.  Nastavit můžete  například  pouze   viditelnost  tlačítek  pro  procházení databáze a zneviditelníte tlačítka pro editaci a rušení záznamů.

Cancel	- zrušit změny

Delete	- vymazat záznam

Edit	- přepnout do režimu oprav

First	- první záznam

Insert	- vložit nový záznam

Last	- poslední záznam

Next	- následující záznam

Post	- uložit provedené změny

Prior	- předchozí záznam

Refresh	- obnovit zobrazení při práci v síti

Ve  vlastnosti  Hints můžete   zadat  text  nápovědy,  který  se zobrazuje   pod  příslušným   tlačítkem,  pokud   máte  nastaveno ShowHint:=True. Pro každé tlačítko  je samostatný řádek nápovědy. Musíte uvést text pro každé  tlačítko, i když nebude zobrazováno. Pokud  byste  některý  řádek  vynechali  došlo  by k posunu textu nápovědy.

Následující lekce


Lekce 4.09 - Komponenty pro zobrazování dat

Až dosud jsme pro  zobrazení obsahu databáze používali komponentu DataGrid,  to je  datovou mřížku.  Ne vždy  však může  tato velmi efektní komponenta  vyhovovat. Seznámíme se proto  nyní s dalšími komponentami sloužící k zobrazení a editaci databází.

Pro  zobrazení  textu  z  databázové  položky  bez  možnosti jeho editace lze  použít komponentu DataText.  Pro zobrazování delších textů je možné nastavit vlastnost WordWrap, která udává, zda se má delší text rozdělit na větší počet řádků.

Pro  zobrazení a  editaci numerických,  řetězcových a  datumových položek databází  se používá komponenta DataEdit.  Při editaci je zadaná hodnota  kontrolována dle typu  databázové položky a  není dovolen  chybný vstup.  Do numerické  položky nemůžete  například zadat  nenumerické   znaky,  položka  typu   datum  je  například kontrolována  na  správnost  zadání  měsíce  pouze  od  1 do 12 a podobně. Při  zadávání data je  oddělovačem mezi dnem,  měsícem a rokem lomítko.  Pokud zadáte pouze  poslední dvojčíslí letopočtu, je automaticky doplněno na plnou délku (připraveno pro rok 2000).

Memopoložky je možné zobrazit  na formuláři komponentou DataMemo. Pro zarovnávání textu k okrajům,  případně na střed můžete použít vlastnost Aligment.

Obsah logických položek je možné zobrazit a editovat jejich obsah komponentou DataCheckBox. Zobrazovat je  možné tři stavy. Hodnota True  je  zobrazována  zatrženým  čtverečkem,  hodnota  False  se zobrazuje prázdným čtverečkem. Pokud  není hodnota definována, je čtvereček  zobrazen šedivou  barvou. Komponentou  DataCheckBox je možné zobrazovat a editovat i  hodnoty jiného než logického typu. K tomu  slouží  vlastnosti  DataTable.ValueChecked  kam  se  zadá hodnota pro zobrazení  True a vlastnost DataTable.ValueUnChecked, do  které se  zadá hodnota  pro zobrazení  False. Pokud například zadáte pro zobrazení procenta DPH příslušné procento, bude se vám zobrazovat  výsledek  True/False  podle  stavu  obsahu databázové položky obsahující procento DPH. Navíc je možné takovouto položku i editovat  komponentou  DataCheckBox,   kdy  bude  podle  výběru True/False  doplněna příslušná  hodnota dle  zadání ve vlastnosti ValueChecked, případně ValueUnChecked.

Všechny  komponenty sloužící  k zobrazování  dat mají  vlastnosti DataSource a  DataField. Jak již  víte, do vlastnosti  DataSource musíte  doplnit  vždy  spojení  na  komponentu  DataSource, která zprostředkovává spojení na  komponentu DataTable dodávající data. Dále musíte zadat ve vlastnosti DataField položku databáze, která je komponentou zobrazována.

Většina  komponent   obsahuje  vlastnost  AutoSize pro  možnost automatického   nastavení   velikost   zobrazování   položky   na formuláři.  Možnost  editace  položek  databáze  můžete  ovlivnit vlastností  ReadOnly,  barvy  nastavíte  vlastností  Color,  font zadáte  ve  vlastnosti  Font.   Je  také  možné  nastavit  pozici zobrazování a další běžné vlastnosti.

Následující lekce


Lekce 4.10 - Přehled metod DataTable

Jak již  bylo uvedeno, pracuje komponenta  DataTable přímo s daty databáze.  K tomu  účelu se  používá přes  šedesát metod. Použité názvosloví  metod  vychází  z  názvosloví  jazyků  xBase. Podobné názvosloví se  používá i pro  zpracování dat v  databázovém okně. Metody  použité   pro  zpracování  databázi   na  formuláři  však neobsahují ve svém názvu počáteční 'Dbf'.

Základní použití metod pro komponentu DataTable vyhází z knihovny procedur a funkcí pro práci s databázemi v databázovém okně.

Globální operace s celou tabulkou

AppendFrom- načte (přihraje) data z jiné databáze

Continue	- pokračuje v hledání dalšího záznamu(viz DbfLocate)

CopyFile	- kopíruje databázi do nového souboru

CopyToText- kopíruje databázi do textového souboru

Count	- vrací počet záznamů dle nastaveného filtru

Locate	- hledá záznam dle zadané podmínky

Name	- vrací název souboru databáze

Pack	- fyzicky zruší záznamy označené k výmazu

RecCount	- vrací celkový počet záznamů v databázi

Report	- vytiskne sestavu

SetFilter	- nastaví filtr databáze (výběr dle hodnot)

Use	- otevře databázi

Zap	- fyzicky zruší všechny záznamy databáze

Navigace v databázi

Bof	- test začátku databázového souboru

Eof	- test konce databázového souboru

Go	- přesun na zadané číslo záznamu

GoBottom	- přesun na konec databázového souboru

GoTop	- přesun na začátek databázového souboru

Skip	- přesun ukazatele v databázovém souboru

Zpracování aktuálního záznamu

AppendBlank- přidá prázdný záznam do databáze

Delete	- označí záznam ke zrušení

Deleted	- vrací informaci, zda je záznam určen ke zrušení

Edit 	- přepne databázi do editačního módu

EvalLog	- vrací výsledek logického databázového výrazu

EvalNum	- vrací výsledek numerického databázového výrazu

EvalStr	- vrací výsledek řetězcového databázového výrazu

EvalTest	- testuje správnost databázového výrazu

Post 	- ukončí editaci záznamu databáze

Recall	- obnoví platnost záznamu určeného ke zrušení

RecNo	- vrací číslo aktuálního záznamu

Zpracování struktury databáze

CopyStru	- kopíruje strukturu databáze do nového souboru

CopyToInfo	- kopíruje strukturu databáze do informační databáze

CreateFrom- založí novou databázi z informační databáze

CreateInfo	- založí novou prázdnou informační databázi

FieldCount	- vrací počet položek (sloupců) databáze

FieldDec	- vrací počet desetinných míst zadané položky

FieldName	- vrací jméno položky dle pořadového čísla

FieldType	- vrací typ databázové položky (N/C/L/M)

FieldWidth	- vrací délku databázové položky

Práce s indexy

Found	- vrací informaci, zda bylo hledání úspěšné

IndexTag	- založí nový index databáze

Reindex	- obnoví indexování databáze

Seek	- hledá v databázi dle zadaného klíče

SetOrder	- určí, který index bude aktivní

TagArea	- dle zadaného jména indexu vrací jeho číslo

TagName	- dle zadaného čísla indexu vrací jeho název

Čtení a zápis položek databáze

ReadDat	- přečte datovou položku z databáze

ReadLog	- přečte logickou položku z databáze

ReadNum	- přečte numerickou položku z databáze

ReadStr	- přečte řetězcovou položku z databáze

WriteDat	- zapíše datovou hodnotu do položky databáze

WriteLog	- zapíše logickou hodnotu do položky databáze

WriteNum	- zapíše numerickou hodnotu do položky databáze

WriteStr	- zapíše řetězcovou hodnotu do položky databáze

Zpracování memopoložek

BinToFile	- převede obsah memopoložky do binárního souboru

FileToBin	- načte obsah binárního souboru do memopoložky

MemoCount- vrací počet odstavců memopoložky

MemoLength- vrací délku memopoložky

ReadMem	- přečte textový obsah memopoložky databáze

ReadBin	- přečte binární obsah memopoložky databáze

WriteBin	- zapíše do memopoložky binární hodnotu

WriteMem	- zapíše do memopoložky textovou hodnotu

Kontrola síťového přístupu

FileLock	- uzamkne síťově celou databázi

Locked	- vrací informaci, zda je aktuální záznam uzamčen

RecLock	- uzamkne síťově aktuální záznam databáze

Unlock	- odemyká uzamčené záznamy v síťovém zpracování

Následující lekce


Lekce 4.11 - Metody DataTable pro navigaci

Pokud budete  zpracovávat data přímo  na formuláři, vystačíte  se pro navigaci  v databázi s komponentou  DataNavigator. Pokud však budete chtít  zpracovávat data v  celém rozsahu databáze,  můžete použít příslušné metody komponenty DataTable:

DataTable.First; {skok na první záznam databáze}

DataTable.Next;  {skok na následující záznam databáze}

DataTable.Prior; {skok na předchozí záznam databáze}

DataTable.Last;  {skok na poslední záznam databáze}

Pro  navigaci  v  databázi   můžete  použít  také  metody,  které vycházejí ve  svém názvosloví z  již známých příkazů  pro obsluhu databází v databázovém okně:

DataTable.GoTop;    {skok na první záznam databáze}

DataTable.Skip(1);  {skok na následující záznam databáze}

DataTable.Skip(-1); {skok na předchozí záznam databáze}

DataTable.GoBottom; {skok na poslední záznam databáze}

Jak  jste si  jistě všimli,  první způsob  je výhodnější  zejména pokud budete  procházet databázi po  jednotlivém záznamu, kdy  se použije     metoda    DataTable.Skip.     Podobná    metoda    je DataTable.MoveBy,  která navíc  vrací skutečný  počet provedeného skoku. To  můžete využít například  pro zjištění konce  databáze. Pokud  stojíte na  posledním záznamu  a dáte DataTable.MoveBy(1), bude vrácena nulová hodnota.

Při   procházení   databáze   v   cyklu   můžete   použít  metody DataTable.Bof   (indikuje  začátek   databáze)  a   DataTable.Eof (indikuje konec databáze). Pokud budete procházet celou databází, můžete dočasně vypnout zobrazování  dat komponentou DataGrid. Pro vypnutí  zobrazení   použijte  metodu  DataTable.DisableControls, zobrazení   se   po   ukončení   cyklu   znovu  aktivuje  metodou DataTable.EnableControls:

procedure TForm.Button1Click(Sender: TObject);

Var rec: integer;

begin

   rec := dataTable1.Recno;     {uložíme číslo záznamu}

   ConsoleClear;                {vymažeme textový výstup}

   DataTable1.DisableControls;  {zakážeme zobrazování}

   DataTable1.First;            {skok na první záznam}

   While not DataTable1.Eof do  {do konce souboru}

   begin

      Writeln(DataTable1.ReadStr('NAZEV'));

      DataTable1.Next;          {skok na další záznam}

   end;

   DataTable1.Go(rec);         {vrátíme se na původní záznam}

   DataTable1.EnableControls;  {povolíme zobrazování}

end;

V uvedeném  příkladě jsme  si nejprve  uložili aktuální  pozici v databázi  a  provedli  skok  na  první  záznam.  V  cyklu  až  do posledního záznamu  jsme potom prováděli akce  s každým záznamem. Na konci jsme provedli skok na původní pozici v databázi.

Následující lekce


Lekce 4.12 - Metody DataTable pro čtení a zápis

Pro čtení a  zápis dat se používají opět  obdobné funkce jako pro databáze  umístěné  v  databázovém  okně.  Pro  každý  typ dat se přitom používají  různé metody. Musíte proto  znát typ databázové položky,  ze   které  budete  číst,  případně   do  které  budete data  ukládat. Pro  čtení se  používají metody DataTable.ReadDat, DataTable.ReadLog,   DataTable.ReadNum a   DataTable.ReadStr.  V parametru se udává jméno položky databáze. Pokud položka zadaného jména neexistuje,  případně je jiného  typu, bude vrácena  nulová prázdná hodnota.

Příklad čtení položek databáze:

d := DataTable.ReadDat("DATUM");

c := DataTable.ReadNum("CENA");

n := DataTable.ReadStr("NAZEV");

m := DataTable.ReadMem("POZNAMKA");

Pro   zápis    do   datumových   položek    se   použije   metoda DataTable.WriteDat,  pro   zápis  do  logických   položek  metoda DataTable.WriteLog, pro  zápis do numerických  položek se použije metoda DataTable.WriteNum a pro zápis do  řetězcových položek se používá metoda DataTable.WriteStr. Při použití metod pro zápis do databáze  se  uvádí  v  prvním  parametru  název položky databáze a v druhém parametru hodnoty  pro uložení. Pokud položka zadaného jména  neexistuje, případně  je jiného  typu, neprovede  se žádná akce.

Příklad zápisu do položek databáze:

DataTable.WriteDat("DATUM", "24/12/1997");

DataTable.WriteDat("DATUM", DataTable.EvalStr("DTOC(DAY())"));

DataTable.WriteNum("CENA",  100);

DataTable.WriteNum("CENA",  DataTable.ReadNum("CENA")*1.1);

DataTable.WriteStr("NAZEV", "KLONDAIK");

Nový    záznam    můžete     do    databáze    doplnit    metodou DataTable.AppendBlank.  Nový  prázdný  záznam  potom  můžete výše popsaným způsobem naplnit hodnotami. Další možností je použít pro vytvoření   nového  záznamu   a  naplnění   hodnot  jedné  metody DataTable.AppendRecord.  Jako  parametry  metody  se zadává obsah položek, které budou do záznamu naplněny:

DataTable.AppendRecord(['000001', 'popis položky', 123.45]);

Výše  uvedené  volání  metody  vytvoří  nový  záznam a naplní jej zadanými  hodnotami.  Výhodou   je  jednodušší  zápis,  nevýhodou nutnost  znát   přesnou  struktury  databáze   s  uvedením  pozic jednotlivých položek. Uvědomte si,  že databáze může být kdykoliv modifikována  s doplněním  nových položek  doprostřed záznamy.  V takovém  případě  by  došlo  k  posunu  obsahu  zadávaných  dat v jednotlivých položkách.

UPOZORNĚNÍ:

Při  zápisu do  databáze musíte  dávat pozor  na to,  že ztratíte nenávratně   předchozí   obsah    položek   a   pokud   použijete k experimentům přímo databáze používané například vámi používaným ekonomickým programem, můžete ztratit i mnohem více. Nepoužívejte proto  ve vlastním  zájmu v  systému KLONDAIK  databáze využívané jinými systémy.

Následující lekce


Lekce 4.13 - Spojení databází do relace 1:N

Pokud  potřebujete  propojit  dvě  databáze,  které spolu logicky svými  údaji  souvisí,  můžete  využít  jejich vzájemné propojení pomocí relací.  Jedná se například  o hlavičku faktury  s údaji o odběrateli,  ke  které  máte   v  dalším  souboru  řádky  faktury s uvedením   fakturovaných  položek.   Obdobně  se   může  jednat například  o ceník  s údaji  o zboží,  ke kterému  můžete napojit databázi s údaji o pohybu zboží (příjem a výdej).

Všeobecně platí,  že relacemi lze  propojit databáze, které  mají společnou  klíčovou  položku.  Ve  výše  uvedených  příkladech se jednalo o  číslo faktury a číslo  zboží. Hlavní (master) databáze nemusí být nijak indexována. Podřízená (detail) databáze musí být indexována  podle  klíčové  položky  a  uvedený  index  musí  být aktivní.

Pro vytvoření  relace musíme umístit  na formulář dvě  komponenty DataTable a DataSource a nastavit  samostatně jejich vlastnosti pro  obě databáze  již známým  způsobem. U  druhé databáze musíme navíc  vlastností IndexName nastavit index,  kterým je  databáze seřazena  podle klíčové  položky. V  našem případě  s fakturou to musí  být  index  řazení   podle  čísla  faktury.  Ve  vlastnosti MasterFields potom zadáme klíčovou položku (položku databáze), ve které  se  hledá  stejná  hodnota  jako  je  nastavena  v  hlavní databázi. Posledním krokem  je nastavení vlastnosti MasterSource, kde  zadáme zdroj  dat (komponentu  DataSource) hlavní  databáze. Data můžeme zobrazovat například komponentami DataGrid.

Při  propojování  databází  do  relací  byste  měli postupovat dále uvedeným způsobem, kde  je uveden příklad propojení databází hlavičky  faktury s  databází  řádek  faktur. Předpokládá  se, že podřízená databáze je již indexována podle čísla faktury.

--------------------------------------------

komponenta      vlastnost      zadaná hodnota

--------------------------------------------

DataTable1      TableName      FAKT_HLA.DBF

DataTable1      Active         True

DataSource1     DataSet1       DataTable1

DataGrid1       DataSource     DataSource1

DtaNavigator1   DataSource     DataSource1

DataTable2      TableName      FAKT_RAD.DBF

DataTable2      Active         True

DataSource2     DataSet2       DataTable2

DataGrid2       DataSource     DataSource2

DataTable2      IndexName      FAKTURA

DataTable2      MastterFields  Faktura

DataTable2      MasterSource   DataSource1

-------------------------------------------

Pokud proběhne vše  v pořádku, spojí se obě  databáze do relace a při  změně pozice  v hlavní  databázi budou  u podřízené databáze zobrazovány   pouze   záznamy   odpovídající   záznamu  nadřazené databáze.


POPIS SYNTAXE JAZYKA KLONDAIK

1.01 - Popis jazyka KLONDAIK

1.02 - Základy zápisu programů

1.03 - Struktura programu

1.04 - Deklarace proměnných

1.05 - Typy proměnných

1.06 - Deklarace procedur a funkcí

1.07 - Výrazy

1.08 - Příkazy jazyka KLONDAIK

1.09 - Systémová knihovna

1.10 - Matematická knihovna

1.11 - Knihovna pro zpracování řetězců

1.12 - Knihovna pro práci se soubory

1.13 - Knihovna pro práci s polem (ARRAY)

1.14 - Grafická knihovna

1.15 - Knihovna pro práci s databázemi

1.16 - Výrazy Xbase

1.17 - Knihovna pro binární přístup do souborů


1.01 - popis jazyka KLONDAIK

Jazyk  KLONDAIK připomíná  částečně známý  Pascal. Obsahuje  však mnohé  změny  a  úpravy,  díky  kterým  je  v mnoha případech pro neprofesionální  programátory  jednoduší  a  snažší.  Pokud znáte základy jazyka Pascal, nebude pro  vás problém naučit se používat jazyk KLONDAIK. Naopak, po zvládnutí jazyka KLONDAIK bude pro Vás snadné  přejít  na  standardní  zápis  programů  v jazyce Pascal, protože již budete znát některé základní charakteristiky jazyka.

Jazyk  KLONDAIK  vychází  ve  své  syntaxi, obsažených příkazech, funkcích a  procedurách z klasického jazyka  Pascal. Výrazně však byla zjednodušena deklarační část programu, kdy není kontrolováno použití jednotlivých typů proměnných.

Systém KLONDAIK není klasický kompilátor  do EXE kódu. Nejedná se ale  ani o  čistý interpret,  při kterém  se opakovaně  kompiluje každý  vykonávaný  řádek  programu.   Program  je  kompilován  do interního  tvaru (tzv.  P-kódu). Tento  kód je  potom zpracováván systémovým jádrem KLONDAIKu.


1.02 - Základy zápisu programů

Program  v jazyce  KLONDAIK je  textový soubor  libovolného názvu s příponou *.KL3.  Pokud je s programem  svázán formulář, je jeho definice uložena v souboru *.KFM (binární, netextový soubor). Pro zápis programu není předepsán pevný formát. Přesto je však vhodné dodržet   několik  zásad,   díky  kterým   bude  zápis   programu přehlednější. Vzorem zápisu mohou být například programy dodávané spolu se systémem OZOGAN KLONDAIK.

Jednotlivé řádky  programu mohou mít  délku maximálně 255  znaků. Vzhledem k  přehlednosti programu je však  vhodné dodržovat délku řádku zhruba do 80 znaků.  Nejvhodnější je zapisovat každý příkaz na samostatný řádek. Jednotlivé příkazy je nutné oddělovat znakem středník.

Na řádcích  programu nelze rozdělovat  mezerou nebo novým  řádkem jména  příkazů, proměnných  procedur a  funkcí. Naopak,  je nutné oddělit  minimálně jednou  mezerou nebo  novým řádkem  jednotlivé příkazy,  jména proměnných,  procedur a  funkcí. Řetězce vymezené uvozovkami  nebo  apostrofy  není  možné  rozdělit  novým řádkem. V případě  nutnosti je  možné použít  spojování řetězců znaménkem plus.

V programu  nejsou rozlišována  velká a  malá písmena.  Lze proto psát  velkými i  malými  písmeny.  Jedinou vyjímkou  jsou řetězce uzavřené  mezi dvěma  uvozovkami nebo  apostrofy. Přesto  se však doporučuje ke zvýšení přehlednosti zápisu dodržovat jednotný styl zápisu.  Názvy příkazů  psát velkými  písmeny, jména  proměnných, funkcí  a procedur  začínat  velkým  písmenem. V  případě složení jména z  několika slov neuvádět  mezi slovy mezery  a každé slovo začít velkým písmenem.

Pro zvýšení  srozumitelnosti zdrojového programu  je možné uvádět v něm  komentáře.  Komentář   je  posloupnost  libovolných  znaků uzavřená  mezi  složené  závorky  a  neobsahující  další  složené závorky.  Takto  lze  například  dočasně  označit část zdrojového textu programu, která se nemá  vykonávat. Je možné označit jedním párem složených závorek najednou i několik řádek programu. Další, možností  je  uvedení  dvojice  lomítek,  které  způsobí označení dalšího textu až do konce řádky za komentář.

Příklad:

// komentář až do konce řádku

For x := 1 to 100 do

begin

    MoveTo(x, y);

    y[x] := 0;     {libovolná poznámka}

{   Point(x, y, 2);

    MoveTo(x+5, y+5);

}

end; // takto lze také označit komentář

Pro zvýšení  přehledu je vhodné  dodržovat určitou úpravu  zápisu programu s vyznačením strukturovaného zápisu programu u složených příkazů.  To znamená,  že příkazy  uvnitř cyklů  a podmínek budou posunuty  o několik  mezer. Díky  tomu lze  jednoduše a přehledně sledovat strukturu  vykonávání příkazů v  cyklech a rozhodovacích podmínkách.

Příklad:

For x := 1 to 100 do

begin

   if x < 50 then

   begin

      Point(x, y, 2);

      MoveTo(x+5, y-5);

   end else

   begin

      Point(x, y, 2);

      MoveTo(x-5, y+5);

   end;

end;

Programy jsou  v následujících textech  vytištěny jednotným typem neproporcionálního písma.  Pro možnost znázornění  variant zápisu je  použito  několik  symbolů,  které  se  při  skutečném  zápise programu  nahradí  skutečným  zápisem.  Pokud  jsou  v příkladech uvedeny tři tečky  za sebou, znamená to, že  lze místo nich uvést libovolné  příkazy. Je-li  v zápisu  syntaxe uvedena  část zápisu v hranatých  závorkách,  je  uvedená  část  nepovinná, nemusí být uvedena. Pokud je možný výběr z několika variant, jsou jednotlivé volby  odděleny  svislou  čarou.   Uvedené  konstrukce  musí  být v konkrétním  zápisu programu  vždy nahrazeny  skutečným zápisem, jinak bude při provádění programu nahlášena chyba v programu !


1.03 - Struktura programu

Jednotlivé  části programů  jsou rozděleny  do bloků,  které mají vždy  definovanou  strukturu.  Blok  začíná  vždy  svým  návěštím (klíčovým slovem).  Kromě definice bloku  deklarace proměnných je blok dále uvozen klíčovými slovy begin a end. Hlavní výkonná část programu, kterou je vykonávání programu zahájeno je v samostatném bloku umístěná vždy na konci programu.

Doporučuje  se zachovávat  dále uvedenou  strukturu programu, kdy nejprve nadefinujete  proměnné. Dále je  vhodné uvést uživatelsky definované  funkce  a  procedury.  Až  na  konci programu zapište hlavní výkonnou proceduru programu.

Program xxx;

var

   {deklarace proměnných}

procedure ...

begin

   {deklarace uživatelské procedury}

end;

function ...

begin

   {deklarace uživatelské funkce}

end;

begin

   {tělo hlavního programu}

end;

end.

V programu se  může vyskytovat několik bloků  s definicí procedur a funkcí.  Jména  procedur  a  funkcí  však  musí být jednoznačná a nesmí se v rámci programu  opakovat. V rámci definice procedury a funkce může být vnořena deklarace proměnných.


1.04 - Deklarace proměnných

Proměnné jsou prvky programu, které v programu ukládají do paměti hodnoty výpočtů  k dalšímu použití.  Proměnné mohou být  číselné, znakové,  nebo logické.  Typ proměnné  je dán  typem definujícího výrazu.

Proměnné  musí  být  deklarovány  ještě  dříve,  než budou poprvé v programu použity. Deklaraci proměnných uvádí klíčové slovo Var. Deklarace  obsahuje  seznam  identifikátorů,  které označují nové proměnné  a jejich  typ. K  vyjádření typu  se používají  klíčová slova, které vyjadřuje jeden ze standardních typů (Integer, Real, String, ...).  Typ proměnné popisuje  množinu hodnot, které  může nabývat a operace,  které se na ní mohou  provádět. Definici typu specifikuje identifikátor, který označuje typ proměnné.

Var Var-Name [, Var-Name]: Var-Type;

   [Var-Name... ]

Var-Name v  definici je jméno nově  definované proměnné, Var-Type je typ proměnné.

Příklad:

VAR a1, a2 : integer;

    a3     : string;

ENDVAR


1.05 - Typy proměnných

Základní proměnné jsou nejjednodušší proměnné, které reprezentují jeden  výskyt prvku  údaje.  Ze  základních typů  proměnných jsou odvozovány   další   deklarace   proměnných   typů  pole,  záznam a tabulky.

Podporované typy proměnných:

INTEGER	- celočíselný typ pro kladná nebo záporná celá čísla

REAL     	- číslo obsahující desetinnou část

STRING	- řetězec znaků teoreticky neomezené délky

CHAR	- jeden alfanumerický znak

BOOLEAN	- logická proměnná typu  BOOLEAN (True/False)

ARRAY	- proměnná strukturovaného typu s indexovým přístupem

VARIANT	- proměnná s variabilním obsahem

Typ  INTEGER  se  používá  pro  celá  čísla  bez desetinné části. Naopak,  typ  real  se  používá  pro  vyjádření číselných hodnot s pohyblivou řádovou  čárkou.

Datový  typ  znak  CHAR  se  používá  pro uložení jednoho znaku. Znakové  konstanty  se  vyjadřují  tak,  že  se  znak  uzavře  do apostrofů,  například 'A',  '1', '&'.  Zápis '1'  v tomto případě znamená znak pro vyjádření číslice jedna nikoli číselnou hodnotu.

Datový  typ  STRING  představuje   posloupnost  znaků  typu  CHAR bezprostředně za  sebou. Vytváří tím  tzv. řetězec. Řetězec  musí být  ohraničen apostrofy  nebo dvojitou  uvozovkou. Řetězec  typu string může  mít teoreticky neomezenou délkou.  Prakticky je však omezen kapacitou volné paměti. Prověřováno bylo například použití řetězců o délce 3 Mb.

Datový typ BOOLEAN má pouze dvě možné hodnoty a to True (pro stav pravda)  a False  (pro stav  nepravda). Lze  mu proto  v programu přiřadit buď konkrétní hodnotu True nebo False, případně výsledek vyhodnocení  logického  výrazu.  Logické  výrazy najdou uplatnění zejména v podmíněných příkazech, příkazech cyklu apod.

Nejzajímavější  je typ  VARIANT, který  může obsahovat libovolnou proměnou výše  uvedeného typu. Kromě již  uvedených typů může ale obsahovat  i  pole  proměnných,  se  kterými  je  možné  provádět jednoduše rozsáhlé výpočty za pomoci indexového přístupu. Všechny proměnné jsou ve skutečnosti  vnitřně typu VARIANT, doporučuje se ale  zachovat  pravidlo  rozlišování  typu  proměnných  z  důvodu přehlednosti   programu   a   možného   pozdějšího  důslednějšího vyžadování dodržení používaného typu proměnných.

Proměnná typy ARRAY představuje  datovou strukturu položek, které se  vzájemně  odlišují  pomocí  indexu.  Jako  index  pole slouží hodnoty určitého  typu, který nazýváme typem  indexu pole a který je spolu  s typem složek  pole stanoven popisem  typu pole. Počet složek pole je dán až dále v programu při inicializaci pole.


1.06 - Deklarace procedur a funkcí

Procedury  a  funkce,   souhrnně  nazvané  podprogramy,  dovolují vícenásobné používaní  napsaného kódu programu.  Rozčlení program do   přehledných  částí   a  umožní   vlastně  nové,  uživatelsky definované příkazy jazyka.

Rozdíl mezi procedurou a funkcí je v tom, že funkce vrací hodnotu a může se  použít přímo ve  výrazech. Procedura se  volá příkazem volání procedury ke splnění jedné nebo více operací.

Definice procedury:

Procedure proc_name[(seznam_parametrů)];

begin

   .. kód procedury

end;

Definice funkce:

Function func_name[(seznam_parametrů)] : návratový_typ;

begin

   .. kód funkce

end;

Kde poc-name/func-name je jméno procedury nebo funkce. Toto jméno musí být  v celém programu jednoznačné.

Volitelný seznam_parametreů je seznam parametrů, které se předají proceduře nebo funkci s využitím následující syntaxe:

jméno_parametru:typ_parametru[; jméno_parametru:typ_parametru]

Kde  jméno_parametru  je  jméno   parametru,  který  bude  použit v proceduře   a   typ_parametru   je   typ   parametru  (integer, string,..).

Návratový_typ v definici funkce je typ výsledku vráceného funkcí.

Volání procedur a funkcí:

Volání procedur a funkcí je funkčně obdobné volání příkazů jazyka KLONDAIK.  Pokud  je  vyvolána  procedura  nebo  funkce, předá se řízení  programu  specifikované  proceduře/funkci  a pokračuje se v činnosti programu prováděním instrukcí této procedry/funkce. Po ukončení volané  procedury/funkce je proveden  návrat do programu za místo volání procedury/funkce.

Volání procedury se provádí následujícím zápisem:

procedure_name[(parametr-1, parametr-2 [, parametr-n])];

Kde procedure_name  je jméno volané procedury  nebo funkce, které je definováno v jazyce KLONDAIK nebo uživatelem v programu.

Volitelné   parametry  jsou   parametry  definované   v  definici procedury.


1.07 - Výrazy

Za  výrazy se  považují  veškeré  aritmetické, logické  nebo jiné operace.  Výrazy se  skládají  z  operátorů a  operandů. Operátor slouží k manipulaci s datovými typy, které reprezentují operandy. Operátory mohou být binární, nebo unární.

Většina operátorů  v jazyce KLONDAIK jsou  binární - obsahují dva operandy. Ostatní jsou unární - pouze s jedním operandem. Binární operátory  mají  běžný  algebraický   tvar,  jsou  umístěny  mezi operandy.  Unární operátor  vždy předchází  před svým  operandem. Operátory  mají  různou  prioritu,  která  je  vyjádřena  pořadím v následujícím přehledu (řazeno od nejvyšší priority):

1 - proměnné a funkce vracející numerickou hodnotu

2 - závorky

3 - unární operátory NOT, unární mínus (viz např. -1)

4 - násobící operátory  *, /, MOD, AND, SHL, SHR

5 - sčítací operátory   +, -, OR, XOR

6 - relační operátory   =, <>, >, <, <=, >=

Operand  mezi  dvěma  operátory  s  různou  prioritou je vázán na operátor  s  vyšší  prioritou.  Operand  mezi  dvěma operátory se stejnou  prioritou  je  vázán  na  operátor  po  své levé straně. Operace  s  rovnocennou  prioritou  se  provádějí  zleva doprava. Prioritu  operací lze  upravit pomocí  kulatých závorek,  vždy se nejprve vyhodnotí výraz v závorkách, bez ohledu na prioritu.

Vzájemné vztahy mezi prvky programu lze vyjádřit pomocí relačních operátorů:

    >    větší než

    >=   větší nebo rovno než

    <    menší než

    <=   menší nebo rovno než

    =    rovno

    <>   nerovno

Relační   vztahy  mezi   prvky  programu   jsou  logické   výrazy a výsledkem jejich  vyhodnocení je logická  hodnota True (pravda) nebo  False (nepravda).  Není možné  tvořit výrazy vyhodnocováním numerických výrazů s výrazy řetězcovými nebo logickými.

Numerické výrazy:

V jazyce  KLONDAIK  jsou  všechny  numerické výrazy vyhodnocovány jako  typ  REAL  a  data  jsou  konvertována  zpět  dle deklarace procedury/funkce.

Numerické   výrazy  podporují   standardní  matematické   operace (+,-,*,/). Možné je také použití závorek a unární mínus.

Základem  numerických výrazů  jsou numerické  konstanty, proměnné numerického  typu,  a  funkce  které  vracejí numerickou hodnotu. Numerická  konstanta je  dekadické  číslo,  pokud má  předponu $, jedná se o šestnáctkovou konstantu (viz $10 = 16, $0FF = 256).

Řetězcové výrazy:

Primitivní základy  řetězcových výrazů jsou  řetězcové konstanty, proměnné  řetězcového  typu,  a  funkce  které vracejí řetězcovou hodnotu.

V  jazyce   KLONDAIK  jsou   řetězcové  konstanty   vymezeny  buď jednoduchými  nebo  i  dvojitými  uvozovkami.  Pokud  potřebujete v řetězci zobrazit uvozovky, můžete  tak učinit uvedením opačného typu. Tak lze například definovat řetězec:

"text  'mezi' uvozovkami"

nebo

'jiný "příklad" uvozovek'

Řetězcové výrazy  podporují sčítání řetězců  za použití operátoru plus.   Je  možné   například  použít   výrazu  "abc"+"def".  Při porovnávání řetězců  je kritériem uspořádání  znaků podle tabulky ASCII.  Lze porovnávat  dvě libovolné  řetězcové hodnoty, protože všechny  řetězcové  hodnoty  jsou  kompatibilní.  S hodnotou typu řetězec je rovněž kompatibilní hodnota typu Char.

Logické výrazy

Logické  výrazy v  KLONDAIKu  vracejí  Boolovskou hodnotu  - TRUE (pravda)  nebo  FALSE  (nepravda).  Podporované logické operátory jsou AND, OR, XOR, NOT a závorky.


1.08 - Příkazy jazyka KLONDAIK

Příkazy  jazyka popisují  algoritmus akce,  která se  má provést. Příkazy  mohou  být  přitom  jednoduché  nebo složené. Jednoduché příkazy  jsou  zapsány  celé  na  jednom  řádku a nijak nesouvisí s dalšími  řádky  programu.  Jednoduchým  příkazem  je  například příkaz  Write. Složené  příkazy jsou  naopak zapsány  na více než jednom řádku programu. Jedná se o příkazy, které rozčlení program do  logických celků.  Složené  příkazy  mají vždy  definován svůj počátek a konec, přičemž mezi počátkem a koncem příkazu mohou být obsaženy další  příkazy. Nejčastěji se jedná  o programové cykly, kdy  je  činnost  vymezené  části  opakována  do  splnění  zadané podmínky. Další  možností jsou podmínky,  kdy se vnořené  příkazy provádí pouze při splnění zadané podmínky.

:=	- příkaz přiřazení

If	- rozhodovací blok podmínky

For	- cyklus s definovaným počtem opakování

Repeat	- cyklus s vyhodnocením podmínky na konci

While	- cyklus s vyhodnocením podmínky na začátku

Writeln	- výpis obsahu proměnné


Příkaz přiřazení (:=)

Proměnná := Výraz

Příkaz  přiřazení  přiděluje   proměnné  určitou  hodnotu.  Jméno proměnné   je   přitom   definováno   na   levé   straně  příkazu a přiřazovaná  hodnota  je  uvedena  na  straně  pravé.  Proměnná v definici je již dříve definovaná proměnná v bloku programu Var.

Příklad:

Pocet := Pocet+1;

Nazev := 'KLONDAIK';


Příkaz Writeln

Writeln([výraz-1[, výraz-2...] ...]);

Příkaz  Writeln   se  používá  na  výstup   hodnot  do  textového výstupního okna. Vypisovat je možné buď numerické, nebo řetězcové hodnoty,  případně  výsledky  výpočtů.  Po  ukončení  výstupu  je nastaven vždy  nový řádek pro výpis  hodnot. Obdobný příkaz Write vypíše  stejnou  hodnotu,  ale  další  výstup  bude pokračovat na stejném řádku.


Příkaz podmínky If

Příkaz  If slouží  pro podmíněné  větvení činnosti zpracovávaného programu. Rozdělení činnosti programu  se provádí dle vyhodnocení zadané podmínky uvedené za klíčovým  slovem If. Pokud je podmínka splněna, provede se blok příkazů  uvedený za klíčovým slovem If.

Pokud  je  uvedeno  klíčové  slovo  else  provede se blok příkazů uvedených  za else  pouze v  případě nesplnění  podmínky. Syntaxe příkazu IF je následující:

If podmínka Then

   ... blok příkazů, které se provedou při splnění podmínky

[ else

   ...  blok příkazů které  se  mají  provést,

        jestliže  není podmínka splněna ]

Kde podmínka je logický výraz  který může být vyhodnocen hodnotou True nebo False. Blok příkazů  je vymezen klíčovými slovy begin a end. Pokud má být v bloku  pouze jeden příkaz, nemusí se vymezení bloku zadávat.

Velký pozor si budete muset dávat, pokud budete chtít zadat akce, které  se  mají  provést   při  nesplnění  podmínky.  V  takových případech je nutné pečlivé označení  bloku operací, které se mají provést.  Pokud uděláte  chybu, není  nahlášena žádná  chyba, ale program  bude podle  vás dělat  něco jiného.  Ve skutečnosti bude přesně  dodržovat vymezení  bloků, které  jste v  programu chybně zadali. Zde je příklad složitější konstrukce použití příkazu if:

if x < 50 then

begin

   Point(x, y, 2);

   MoveTo(x+5, y-5);

end else

begin

   Point(x, y, 2);

   MoveTo(x-5, y+5);

end;


Příkaz cyklu For

Příkaz  For  se  používá  pro  provedení  bloku  příkazů s přesně definovaným  počtem opakování,  přičemž počet  opakování je  znám ihned při definici příkazu.

FOR control-variable:=start-value TO|DOWNTO end-value do

   ... blok příkazů

Kde control-value  je numerická proměnná která  bude použita jako řídící  proměnná  pro  smyčku,  start-value  je počáteční hodnota přidělené  řídící proměnné,  end-value je  konečná hodnota řídící proměnné.

Při  použití  klíčového  slova  To  se  bude stav řídící proměnné cyklicky zvyšovat.  Je-li uvedeno DownTo, bude  se hodnota řídící proměnné snižovat.  Pokud je rozdíl  počáteční a koncové  hodnoty menší než nula, cyklus nebude vůbec proveden.

Hodnota  řídící proměnné  se nesmí  v cyklu  měnit. Hodnoty cyklu jsou vyhodnocovány  pouze jednou a  to při spuštění  příkazu For. U příkazů While a Repeat  jsou podmínky vyhodnocovány na začátku, respektive na konci každého cyklu.


Příkaz cyklu REPEAT

Příkaz  se  používá  v  situacích,  kdy  chcete, aby byly příkazy v cyklu provedeny minimálně jednou, protože podmínka opakování je uvedena na konci bloku příkazů.

Repeat

   ... blok příkazů

Until podmínka-ukončení

Kde podmínka-ukončení je logický  výraz, který je vyhodnocován na konci každého cyklu. Blok příkazů se provádí tak dlouho, dokud má podmínka-ukončení hodnotu True.

Tento příkaz je různý od příkazu While, protože blok příkazů bude proveden vždy alespoň jednou. U příkazu While nemusí být z důvodu kontroly podmínky na začátku cyklu proveden cyklus ani jednou.


Příkaz cyklu WHILE

Příkaz  While umožní  vykonávat opakující  se programové sekvence příkazů, které jsou prováděny při splnění dané podmínky. Podmínka je definována na  počátku příkazu a pokud je  splněna, provede se zadaný  blok  příkazů.  Na  konci  smyčky  je znovu vyhodnocována podmínka  a  blok  příkazů  se  opakuje  až do okamžiku nesplnění podmínky. Program potom pokračuje  příkazy, které jsou definovány za vymezeným blokem While.

Syntaxe příkazu While je:

While Podmínka

   ... blok příkazů

Kde podmínka je logický výraz  který může být vyhodnocen hodnotou True nebo False.


1.09 - SYSTÉMOVÁ KNIHOVNA

Systémová  knihovna  obsahuje   procedury  a  funkce  související s chodem   celého   programu.

Beep	- program pípne přes reproduktor počítače

Delay	- čeká zadanou dobu (zpoždění)

DelayStep 	- definuje časovou prodlevu animace programu

InputBox 	- dialogový box pro zadání hodnoty

MessageDlg 	- dialogový box s možností zadání tlačítek

MessageDlgPos	- dialogový box s možností zadání tlačítek

PortInput	- čte hodnotu ze zadaného portu

PortOutput	- zapíše hodnotu na zadaný port

RunExe	- spustí externí program *.EXE

RunForm	- spustí formulář zadaného jména

RunPrg	- spustí program zadaného jména

ShowForm 	- zobrazí nemodálně formulář

ShowMessage 	- systémová zpráva uživateli

SysVarClear	- vymaže všechny systémové proměnné

SysVarGet	- vrací hodnotu systémové proměnné

SysVarSet	- definice systémových proměnných

SysVarShow	- zobrazí přehled systémových proměnných

Version 	- vrací verzi systému KLONDAIK

Funkce pro konverzi českých znaků:

CsKamToAsc 	- zruší z textu háčky a čárky

CsKamToLat 	- převede kódování Kamenický do kódu Latin2

CsKamToWin 	- převede kódování Kamenický do kódu Windows

CsLatToAsc 	- zruší z textu háčky a čárky

CsLatToKam 	- převede kódování Latin2 do kódu Kamenický

CsLatToWin 	- převede kódování Latin2 do kódu Windows

CsWinToAsc 	- zruší z textu háčky a čárky

CsWinToKam 	- převede kódování Windows do kódu Kamenický

CsWinToLat 	- převede kódování Windows do kódu Latin2

Změna nastavení oken integrovaného prostředí:

CommandForm	- nastaví velikost příkazového okna

CommandHide	- minimalizuje příkazové okno do ikony

CommandShow	- obnoví původní velikost příkazového okna

ConsoleClear	- zruší obsah výstupního textového okna

ConsoleForm	- nastaví velikost textového výstupního okna

ConsoleHide	- minimalizuje textové výstupní okno do ikony

ConsolePrint	- vytiskne obsah textového výstupního okna

ConsoleSave	- uloží obsah textového výstupního okna do souboru

ConsoleShow	- obnoví původní velikost textového výstupního okna

DbfForm	- nastaví velikost databázového okna

DbfHide	- minimalizuje databázové okno do ikony

DbfShow	- obnoví původní velikost databázového okna

ImageForm	- nastaví velikost grafického okna

ImageHide	- minimalizuje grafické okno do ikony

ImageShow	- obnoví původní velikost grafického okna


Procedura Beep

procedure Beep;

Procedura pípne přes reproduktor  počítače. Vhodné pro upozornění na ukončení výpočtu, uživatelovu chybu a podobně.


Procedura Delay

procedure Delay(Time: Integer);

Procedura Delay se používá pro vyvolání časové prodlevy zadané délky v činnosti programu. Doba prodlevy se zadává parametrem Time v milisekundách. Pokud proto zadáte v programu:

Delay(1000);

bude v programu vykonána časová prodleva o délce jedné sekundy. Program po uvedenou dobu vyčkává a další příkaz je proveden až po uplynutí zadané doby.

Zadávanou prodlevu nelze použít například k měření času. Je to proto, že vzhledem k multitaskingu Windows není časová prodleva dodržována zcela přesně. Udává se pouze, že by neměla být nikdy kratší, než je zadaná hodnota.


Procedura DelayStep

procedure DealyStep(Time: Integer);

Procedura se používá pro definici časové prodlevy, po kterou systém vyčkává na každém řádku při animaci programu. Prodleva se zadává parametrem Time a zadává se v milisekundách. Pokud proto zadáte v programu:

DelayStep(1000);

bude  prodleva animace  nastavena na  jednu sekundu. Počáteční prodleva je nastavena na jednu desetinu sekundy. Pokud vás zajímá v programu pouze animace určité části programu, zadejte na jeho počátku nulovou hodnotu prodlevy a na požadovaném místě prodlevu zvyšte na požadovanou hodnotu. Počátkem  programu se  rozumí samozřejmě  první řádek  ve výkonné části  programu  a  ne  například  fyzický  první  řádek programu obsahující  hlavičku a  název programu.  Příkaz DelayStep  je při spuštění kompilovaného  programu v RunTime  ignorován a je  možné jej proto v programu bez obav ponechat.

Viz také: kurz programování


Funkce InputBox

function InputBox(nadpis, dotaz: string; hodnota: variant) : string;

Funkce se používá pro zadání vstupní hodnoty z klávesnice od uživatele.  Zobrazí se dialogové okno s titulkem zadaným v parametru nadpis, popis údaje se zadává parametrem dotaz a počáteční hodnota se nastavuje v parametru hodnota. Počáteční hodnota může být buď numerického nebo řetězcového typu. Hodnota vrácená funkcí je však vždy typu string. Pokud proto požadujete od uživatele zadání čísla, musíte provést následně kontrolu správnosti zadání.

Příklad použití:

vstup:= InputBox('Nadpis okna','Popis vstupu:', 'hodnota');

ShowMessage('Zadal jste: '+vstup);

vstup:= InputBox('Další vstup','Zadejte hodnotu:', vstup);

ShowMessage('Zadal jste:'+Chr(13)+vstup);

vstup:= Random(100)/Random(100);

vstup:= InputBox('Zadání čísla','Zadejte číslo:', vstup);

vstup:=StrToReal(vstup);

ShowMessage('Zadal jste číslo:'+RealToStr(vstup,10,3));


Funkce MessageDlg

function MessageDlg(Msg: string; Type: byte;

         Buttons: set; Help: Integer): byte;

Funkce  se  používá  na  zobrazení  hlášení  uživateli s možností definice zobrazených tlačítek. Funkce vrací k dalšímu použití kód stisknutého tlačítka. Dialogový box hlášení je zobrazen uprostřed obrazovky.  Pokud  požadujete  zobrazení  hlášení  v jiné pozici, použijte  obdobnou  funkci  MessageDlgPos,  která  umožňuje zadat navíc souřadnice pro zobrazení dialogového boxu.

První  parametr Msg  udává zobrazený  text na  ploše okna.  Druhý parametr Type definuje titulek okna hlášení dle tabulky:

-----------------------------------

titulek        hodnota   text

-----------------------------------

mtWarning         0      'Varování'

mtError           1      'Chyba'

mtInformation     2      'Informace'

mtConfirmation    3      'Dotaz'

------------------------------------

Ve třetím parametru se zadávají tlačítka, která se mají zobrazit. Tlačítka se zadávají jako  výčet v hranatých závorkách oddělených čárkami. Tabulka  udává konstanty pro  zadání, zobrazený text  na tlačítku a vrácenou hodnotu v případě stisku tlačítka.

------------------------------------------

tlačítko   hodnota   text          Result

------------------------------------------

mbYes        0       'Ano'         mrYes

mbNo         1       'Ne'          mrNo

mbOk         2       'OK'          mrOk

mbCancel     3       'Konec'       mrCancel

mbAbort      4       'Zrušit'      mrAbort

mbRetry      5       'Zopakovat'   mrRetry

mbIgnore     6       'Ignorovat'   mrIgnore

mbAll        7       'Vše'         mrAll

mbHelp      10       'Nápověda'    mrHelp

-------------------------------------------

Poslední parametr definuje položku  helpu, která bude vyvolána po stisknutí tlačítka 'Nápověda'.

Funkce MesageDlg  vrací kód stisknutého tlačítka.  Je proto možné provést akce podle výsledku funkce.

Příklad použití:

{zobrazí informativní hlášení s tlačítkem OK}

MessageDlg('KLONDAIK', mtInformation, [mbOk], 0);

{zobrazí hlášení o chybě s tlačítkem OK}

MessageDlg('Nulou nelze dělit', mtError, [mbOk], 0);

{zobrazí dotaz s tlačítky Ano a Ne,

po stisku tlačítka OK uzavře formulář}

if MessageDlg('Opravdu  konec ?', mtConfirmation,

   [mbYes, mbNo], 0) = mrYes then

   Form.Close

Viz také:

ShowMessage, MessageDlgPos


Funkce MessageDlgPos

function MessageDlgPos(Msg: string; Type: byte;

         Buttons: set; Help, x, y: Integer): byte;

Funkce  se  používá  na  zobrazení  hlášení  uživateli s možností definice zobrazených tlačítek. Funkce vrací k dalšímu použití kód stisknutého  tlačítka.  Dialogový  box  hlášení  je  zobrazen  na obrazovce na pozici dle zadaných souřadnicích.

První  parametr Msg  udává zobrazený  text na  ploše okna.  Druhý parametr Type definuje titulek  okna hlášení. Ve třetím parametru se  zadávají  tlačítka,  která  se  mají  zobrazit.  Tlačítka  se zadávají  jako výčet  v hranatých  závorkách oddělených  čárkami. Parametr  Help definuje  položku  helpu,  která bude  vyvolána po stisknutí tlačítka  'Nápověda'. V parametrech  x a y  jsou zadány souřadnice,  na kterých  se zobrazí  dialogový box  na obrazovce. Podrobnější  popis parametrů  včetně možných  hodnot je  uveden u funkce MesssageDlg.

Příklad použití:

{zobrazí informativní hlášení s tlačítkem OK}

MessageDlgPos('KLONDAIK', mtInformation, [mbOk], 0, 100, 250);

{zobrazí hlášení o chybě s tlačítkem OK}

MessageDlgPos('Nulou nelze dělit', mtError, [mbOk], 0, 100, 250);

Viz také:

ShowMessage, MessageDlg


Funkce   PortInput

function PortInput(port: Integer) : Byte;

Procedura  umožňuje načíst  hodnotu ze  zadaného portu  počítače. Port je možné  zadat buď přímo jeho adresou,  případně lze využít předdefinované systémové konstanty:

-----------------------------------

port     hexadecimálně  dekadicky

-----------------------------------

LPT1        $378           888

LPT1G       $3BC           956

LPT2        $278           632

COM1        $3F8          1016

COM2        $2F8           760

COM3        $3E8          1000

COM4        $2E8           744

----------------------------------

Port označený  nestandardně LPT1G bývá někdy  umístěn na grafické kartě  a může  mít jinou  adresu, než  běžný port  LPT1. Má proto přidělenu samostatnou konstantu.

Příklad použití:

p := PortInput(LPT1+1); {načte stavový registr tiskárny}

p := PortInput($278);

UPOZORNĚNÍ:

Jakékoliv  neodborné  použití  příkazu  může  způsobit  poškození počítače. Stejně  tak i neodborné  připojování zařízení na  porty počítače.

Viz také: PortOutput


Procedura PortOutput

procedure PortOutput(port: Integer; hodnota: Byte);

Procedura umožňuje  posílat data uvedená  v parametru hodnota  na zadaný port počítače. Port je možné zadat buď přímo jeho adresou, případně lze využít předdefinované systémové konstanty:

-----------------------------------

port     hexadecimálně  dekadicky

-----------------------------------

LPT1        $378           888

LPT1G       $3BC           956

LPT2        $278           632

COM1        $3F8          1016

COM2        $2F8           760

COM3        $3E8          1000

COM4        $2E8           744

----------------------------------

Port označený  nestandardně LPT1G bývá umístěn  na grafické kartě a může mít jinou adresu, než běžný port LPT1.

Příklad:

PortOutput(LPT1, 255);

PortOutput($278,   0);

UPOZORNĚNÍ:

Jakékoliv  neodborné  použití  příkazu  může  způsobit  poškození počítače. Stejně  tak i neodborné  připojování zařízení na  porty počítače.

Viz také: PortInput


Funkce  RunExe

function RunExe(prg, par, dir: String; wait: Boolean) : Byte;

Funkce spustí zadaný externí program typu *.EXE, případně program asociovaný se  zadaným souborem. Funkci  používejte velmi opatrně a s  rozvahou. Zvláště  spuštění programů  určených pro  operační systém  MS-DOS by  mohlo  způsobit  v některých  případech značné problémy. Například  program T602.EXE má  na některých počítačích problémy s klávesnicí, případně se svým ukončením. Větší problémy by ale mohlo někdy vyvolat spuštění rezidentního programu.

Parametry:

prg  - jméno programu (souboru), který má být aktivován

par  - parametr předaný spuštěnému programu

dir  - pracovní adresář, ve kterém bude program spuštěn

wait - definuje, zda se má čekat na ukončení programu (pouze pro programy MS-DOSu)

Pokud se  nachází aplikace, kterou  chcete spustit, v  jiném, než aktivním adresáři,  musíte zadat i cestu  k této aplikaci. Zadaný parametr  se předá  spuštěnému programu.  Pokud zadáváte pracovní adresář, ve kterém se má  program spustit, musíte mít definovanou cestu  ke  spouštěnému  programu  příkazem  PATH při inicializaci operačního systému v souboru AUTOEXEC.BAT.

Místo  jména programu  můžete uvést  přímo soubor,  který máte ve Windows asociován  s programem, který  se spustí a  zadaný soubor dále zpracuje. Například při zadání jména souboru 'MANUAL.SAM' se spustí textový editor AmiPro, který ihned načte uvedený dokument. V tomto případě  ale musíte uvést pracovní  adresář, ve kterém se zadaný soubor nachází. Například:

RunExe('MANUAL.SAM', '', 'C:\DOKUMENT\', True);

Protože systém  Windows pracuje v režimu  multitaskingu, může být spuštěno  najednou  několik  programů,  které  běží souběžně. Při jejich  spouštění  funkcí  RunExe  je  možné pro programy určené pro operační systém MS-DOS zadat, zda má systém KLONDAIK  čekat na dokončení zadaného  programu a až potom pokračovat ve vykonávání následující řádky programu. Programy určené pro operační systém Windows na své ukončení nečekají. Čekání na ukončení spuštěného programu je nutné například dodržet pokud budete volat ze   systému   KLONDAIK   postupně   několik  externích  programů zpracovávající uzavřenou celkovou úlohu:

RunExe('PROGRAM1.EXE', '', '', True ); {čeká na ukončení}

RunExe('PROGRAM2.EXE', '', '', False); {nečeká na ukončení!}

Funkce   RunExe  vrací   hodnotu  udávající   úspěšnost  spuštění externího programu. Pokud je vrácena nulová hodnota, proběhlo vše v pořádku.  Jiné hodnoty  signalizují výskyt  chyby, díky  kterým nemohl být program řádně spuštěn, případně dokončen.

Viz také:

RunForm, RunPrg


Funkce   RunForm

function RunForm(name: String) : Variant;

Používá  se k  aktivaci formuláře  systému KLONDAIK.  Program, ze kterého  se  provádí  volání  přitom  čeká  na dokončení volaného programu.  Volanému programu je možné předat parametry pomocí definice systémových proměnných definovaných procedurou SysVarSet.

Z volaného  programu  je možné  převzít návratovou hodnotu k dalšímu použití. Ta musí být ve volaném programu předána pomocí systémové   proměnné   Result.   Předávaná   proměnná   může  být libovolného typu.

Spuštěný formulář je zobrazen modálně, to znamená, že není možné se přepnout do jiného formuláře. Formulář je nutné nejprve ukončit. Pokud požadujete přepínání mezi formuláři, je možné použít funkci ShowForm.

Viz také:

RunExe, RunPrg, ShowForm


Funkce RunPrg

function RunPrg(name: String) : Variant;

Používá se ke spuštění jiného programu ve formátu *.KL3. Jedná se o program, který je naprogramován bez formuláře. Program, ze kterého  se provádí volání  přitom čeká na  dokončení volaného programu  a až  potom  pokračuje  ve vykonávaní  dalších příkazů. Volanému programu je možné předat parametry pomocí definice systémových proměnných definovaných procedurou SysVarSet.

Z volaného programu je možné převzít návratovou hodnotu k dalšímu použití. Ta musí být ve volaném programu předána pomocí systémové proměnné Result. Předávaná   proměnná   může   být   libovolného   typu.  V  kurzu programování  systému   KLONDAIK  je  uveden   příklad  předávání proměnné typu Array, ve které je uloženo několik hodnot.

Jednoduché příklady použití:

RunPrg("abcd.kl3);

Writeln(RunPrg(abcd.kl3));

z := RunPrg("abcd.kl3);

Kompletní příklad včetně volaného programu:

Program Program_1;

{----------------}

{z tohoto programu voláme další program}

begin

   Writeln(RunPrg('Program_2.kl3'));

end;

end.

Program Program_2;

{----------------}

{tento program je volán z jiného programu}

begin

   Result := Random(100);

end;

end.

Viz také:

RunExe, RunForm, ShowForm


Funkce ShowForm

function ShowForm(name: String) : Variant;

Používá  se k  aktivaci formuláře  systému KLONDAIK.  Formulář je zobrazen, je mu předáno řízení.  Zobrazení formuláře je na rozdíl od obdobné funkce  RunForm nemodální, to znamená, že  je možné se přepnout  na  jiný  formulář   bez  nutnosti  uzavření  aktivního formuláře.

Volanému programu  není možné předat žádné  parametry. Z volaného programu  je  však  možné  převzít  návratovou  hodnotu k dalšímu použití. Ta musí být ve volaném programu předána pomocí systémové proměnné Result. Předávaná proměnná může být libovolného typu.

UPOZORNĚNÍ:

Pokud  se   zobrazuje  formulář  funkcí   ShowForm,  nedochází  k probliknutí formuláře, jako je tomu  u funkce RunForm, případně u prvního   spuštěného   formuláře.   Pokud   požadujete   ukončení zobrazování  formuláře  po  kliknutí   na  tlačítko  typu  BitBtn nastaveného na ukončení, musíte zadat  u toho tlačítka v ošetření události OnClick vyvolání metody  Close, která formulář uzavře. U modálně zobrazeného formuláře funkce RunForm to není nutné.


Procedura ShowMessage

procedure ShowMessage(zprava: string);

Procedura zobrazí v samostatném dialogovém okně systémové hlášení zadané v parametru zprava. Procedura se používá k zobrazení libovolných hlášení, například pro výstup výsledku výpočtu.

Viz také:

MessageDlg, MessageDlgPos


Procedura SysVarClear

procedure SysVarClear;

Procedura   zruší  všechny   systémové  proměnné   inicializované procedurou SysVarSet.

Viz také:

SysVarGet, SysVarSet, SysVarShow


Funkce   SysVarGet

function SysVarGet(Name: string) : Variant;

Funkce vrací hodnotu systémové proměnné inicializované procedurou SysVarSet. Jméno proměnné se zadává parametrem Name. Pokud nebyla proměnná zadaného jména definována, vrací funkce prázdnou nulovou numerickou hodnotu.

UPOZORNĚNÍ:

Na  proměnnou  inicializovanou  procedurou  SysVarSet  se  můžete odkazovat i  přímo bez použití funkce  SysVarGet. Pokud však není požadovaná proměnná  definována, bude zobrazeno  chybové hlášení. Pokud  však použijete  funkci SysVarGet,  bude v  takovém případě vrácena  nulová  numerická  hodnota   a  chybové  hlášení  nebude zobrazeno.

Příklad:

SysVarSet(,nazev','KLONDAIK');

SysVarSet('cena',  123.45);

Writeln(SysVarGet('Nazev'));

Writeln(SysVarGet('cena')/100*122);

Viz také:

SysVarClear, SysVarSet, SysVarShow


Procedura SysVarSet

procedure SysVarSet(Name: string; Value: variable);

Procedura  inicializuje  novou  systémovou  proměnnou, která bude platná až  do ukončení činnosti systému,  případně do doby jejího výmazu  procedurou  SysVarClear.  Jméno  proměnné  udává parametr Name,  počáteční  hodnota  proměnné  se  zadá  parametrem  Value. Hodnota proměnné může být libovolného typu kromě ARRAY, sami však musíte zajistit její správné následné zpracování.

Proměnnou je  možné použít v libovolném  dále spuštěném programu. Takto lze  například předávat mezi  programy libovolné parametry. Hodnotu  proměnné, kterou  v programu  naplníme lze  zjistit i po ukončení spuštěného programu výpisem z příkazového okna.

Příklad:

SysVarSet('nazev', 'KLONDAIK');

SysVarSet('cena',  123.45);

Writeln(SysVarGet('Nazev'));

Writeln(SysVarGet('cena')/100*122);

Viz také:

SysVarClear, SysVarGet, SysVarShow


Procedura SysVarShow

procedure SysVarShow;

Zobrazí  seznam deklarovaných  systémových proměnných  procedurou SysVarSet.  Zobrazeno je  maximálně 25  prvních proměnných, které jsou seřazeny  podle abecedy. Zobrazen název  proměnné a  její obsah.  Pokud je proměnná typu  String,  zobrazuje  se  maximálně  50  prvních znaků obsahu proměnné. Proceduru je vhodné používat pouze pro ladění programu pro rychlý výpis obsahu deklarovaných systémových proměnných.

Viz také:

SysVarClear, SysVarGet, SysVarSet, SysVarShow


Funkce Version

function Version : String;

Funkce vrací  verzi systému KLONDAIK  obsahující v řetězci  číslo verze a  datum zveřejnění. Pokud je  program spuštěn pod runtime, obsahuje řetězec navíc indikaci  runtime. Kontrolou délky řetězce je možné  proto zjišťovat, zda  je program spuštěn  pod vývojovým prostředím nebo pod runtime.  Při spuštění ve vývojovém prostředí je tak možné například vypisovat průběžný stav proměnných.

Číslo a datum verze je vypisován ve tvaru:

9.99 - DD/MM/RRRR (X)

kde  9.99   představuje  číslo  verze,   DD/MM/RRRR  udává  datum zveřejnění verze a '(X)' indikuje spuštění programu pod runtime. Pokud je program spuštěn ve vývojovém prostředí, není příznak '(X)' vypisován. Vrácený řetězec je proto kratší, což je možné použít pro indikaci aktivního vývojového prostředí bez ohledu na číslo verze.

Příklad:

procedure TForm.ButtonClick(Sender: TObject);

Var Temp: String;

begin

   if Length(Version) > 17 then

      ShowMessage('Runtime')

   else

      ShowMessage('Vývojové prostředí');

end;


Funkce CsKamToAsc

function CsKamToAsc(text: String) : String;

Funkce  slouží  ke  zrušení  českých  znaků  z řetězce ve formátu Kamenický a nahrazení jejich ekvivalentem bez háčků a čárek.

Příklad:

Načte  jeden řádek  textu  ze  souboru, provede  konverzi, zapíše výsledek  do výstupního  souboru.

procedure TForm.ButtonClick(Sender: TObject);

Var Radek: String;

begin

   Radek := FileReadLine;

   Radek := CsKamToAsc(Radek);

   FileWriteLine(Radek);

end;


Funkce CsKamToLat

function CsKamToLat(text: String) : String;

Funkce  slouží  k  převodu  českých  znaků  z  řetězce ve formátu Kamenický a nahrazení jejich ekvivalentem ve formátu Latin2.

Příklad:

Načte  jeden řádek  textu  ze  souboru, provede  konverzi, zapíše výsledek  do výstupního  souboru.

procedure TForm.ButtonClick(Sender: TObject);

Var Radek: String;

begin

   Radek := FileReadLine;

   Radek := CsKamToLat(Radek);

   FileWriteLine(Radek);

end;


Funkce CsKamToWin

function CsKamToWin(text: String) : String;

Funkce  slouží  k  převodu  českých  znaků  z  řetězce ve formátu Kamenický a nahrazení jejich ekvivalentem ve formátu Windows.

Příklad:

Načte  jeden řádek  textu  ze  souboru, provede  konverzi, zapíše výsledek  do výstupního  souboru.

procedure TForm.ButtonClick(Sender: TObject);

Var Radek: String;

begin

   Radek := FileReadLine;

   Radek := CsKamToWin(Radek);

   FileWriteLine(Radek);

end;


Funkce CsLatToAsc

function CsLatToAsc(text: String) : String;

Funkce slouží ke zrušení českých znaků z řetězce ve formátu Latin2 a nahrazení jejich ekvivalentem bez háčků a čárek.

Příklad:

Načte  jeden řádek  textu  ze  souboru, provede  konverzi, zapíše výsledek  do výstupního  souboru.

procedure TForm.ButtonClick(Sender: TObject);

Var Radek: String;

begin

   Radek := FileReadLine;

   Radek := CsLatToAsc(Radek);

   FileWriteLine(Radek);

end;


Funkce CsLatToKam

function CsLatToKam(text: String) : String;

Funkce slouží k převodu českých  znaků z řetězce ve formátu Latin2 a nahrazení jejich ekvivalentem ve formátu Kamenický.

Příklad:

Načte  jeden řádek  textu  ze  souboru, provede  konverzi, zapíše výsledek  do výstupního  souboru.

procedure TForm.ButtonClick(Sender: TObject);

Var Radek: String;

begin

   Radek := FileReadLine;

   Radek := CsLatToKam(Radek);

   FileWriteLine(Radek);

end;


Funkce CsLatToWin

function CsLatToWin(text: String) : String;

Funkce slouží k převodu českých  znaků z řetězce ve formátu Latin 2 a nahrazení jejich ekvivalentem ve formátu Windows.

Příklad:

Načte  jeden řádek  textu  ze  souboru, provede  konverzi, zapíše

výsledek  do výstupního  souboru.

procedure TForm.ButtonClick(Sender: TObject);

Var Radek: String;

begin

   Radek := FileReadLine;

   Radek := CsLatToWin(Radek);

   FileWriteLine(Radek);

end;


Funkce CsWinToAsc

function CsWinToAsc(text: String) : String;

Funkce  slouží  ke  zrušení  českých  znaků  z řetězce ve formátu Windows a nahrazení jejich ekvivalentem bez háčků a čárek.

Příklad:

Načte  jeden řádek  textu  ze  souboru, provede  konverzi, zapíše výsledek  do výstupního  souboru.

procedure TForm.ButtonClick(Sender: TObject);

Var Radek: String;

begin

   Radek := FileReadLine;

   Radek := CsWinToAsc(Radek);

   FileWriteLine(Radek);

end;


Funkce CsWinToKam

function CsWinToKam(text: String) : String;

Funkce  slouží  k  převodu  českých  znaků  z  řetězce ve formátu Windows a nahrazení jejich ekvivalentem ve formátu Kamenický.

Příklad:

Načte  jeden řádek  textu  ze  souboru, provede  konverzi, zapíše výsledek  do výstupního  souboru.

procedure TForm.ButtonClick(Sender: TObject);

Var Radek: String;

begin

   Radek := FileReadLine;

   Radek := CsWinToKam(Radek);

   FileWriteLine(Radek);

end;


Funkce CsWinToLat

function CsWinToLat(text: String) : String;

Funkce  slouží  k  převodu  českých  znaků  z  řetězce ve formátu Windows a nahrazení jejich ekvivalentem ve formátu Latin2.

Příklad:

Načte  jeden řádek  textu  ze  souboru, provede  konverzi, zapíše výsledek  do výstupního  souboru.

procedure TForm.ButtonClick(Sender: TObject);

Var Radek: String;

begin

   Radek := FileReadLine;

   Radek := CsWinToLat(Radek);

   FileWriteLine(Radek);

end;


Procedura CommandForm

procedure CommandForm(Top, Left, Width, Height :Integer);

Změní  velikost  a  umístění  příkazového  okna  na ploše systému KLONDAIK. Parametry  Left a Top  procedury určují levý  horní roh v bodech,  parametr Width  určuje  šířku  okna a  parametr Height zadává výšku okna v bodech.

Viz také:

CommandHide, CommandShow


Procedura CommandHide

procedure CommandHide;

Procedura minimalizuje  do tvaru ikony  příkazové okno. Proceduru je vhodné použít na začátku programu pro odstranění nepoužívaných oken a tím ke zpřehlednění obrazovky.

Viz také:

CommandForm, CommandHide


Procedura CommandShow

procedure CommandShow;

Procedura obnoví  velikost příkazového okna  do podoby před  jeho minimalizací do ikony.


Procedura ConsoleClear

procedure ConsoleClear;

Procedura  vymaže obsah  textového výstupního  okna. Proceduru je vhodné  použít   na  začátku  programu   pro  odstranění  výstupu předchozího programu.


Procedura ConsoleForm

procedure ConsoleForm(Top, Left, Width, Height :Integer);

Změní  velikost a  umístění  textového  výstupního okna  na ploše systému  KLONDAIK. Parametry  Left  a  Top procedury  určují levý horní roh v  bodech, parametr Width určuje šířku  okna a parametr Height zadává výšku okna v bodech.


Procedura ConsoleHide

procedure ConsoleHide;

Procedura  minimalizuje  do  tvaru  ikony  výstupní textové okno. Proceduru  je vhodné  použít na  začátku programu  pro odstranění nepoužívaných oken a tím ke zpřehlednění obrazovky.


Procedura ConsolePrint

procedure ConsolePrint;

Procedura  vytiskne obsah  textového výstupního  okna na aktuálně nastavenou tiskárnu.


Funkce ConsoleSave

function ConsoleSave(files: String) : Boolean;

Funkce uloží  obsah textového výstupního okna  na disk do souboru definovaného parametrem files. Jestliže soubor zadaného jména již existuje, bude přepsán. Pokud proběhlo uložení souboru v pořádku, vrací funkce hodnotu True, jinak False (málo místa na disku, ..)


Procedura ConsoleShow

procedure ConsoleShow;

Procedura  obnoví velikost  výstupního textového  okna do  podoby před jeho minimalizací do ikony.


Procedura DbfForm

procedure DbfForm(Top, Left, Width, Height :Integer);

Změní  velikost a  umístění  databázového  okna na  ploše systému KLONDAIK. Parametry  Left a Top  procedury určují levý  horní roh v bodech,  parametr Width  určuje  šířku  okna a  parametr Height zadává výšku okna v bodech.


Procedura DbfHide

procedure DbfHide;

Procedura minimalizuje do tvaru  ikony databázové okno. Proceduru je vhodné použít na začátku programu pro odstranění nepoužívaných oken a tím ke zpřehlednění obrazovky.


Procedura DbfShow

procedure DbfShow;

Procedura obnoví  velikost databázového okna do  podoby před jeho minimalizací do ikony.


Procedura ImageForm

procedure ImageForm(Top, Left, Width, Height :Integer);

Změní  velikost a  umístění grafického  výstupního okna  na ploše systému  KLONDAIK. Parametry  Left  a  Top procedury  určují levý horní roh v  bodech, parametr Width určuje šířku  okna a parametr Height zadává výšku okna v bodech.


Procedura ImageHide

procedure ImageHide;

Procedura  minimalizuje do  tvaru ikony  grafické výstupní  okno. Proceduru  je vhodné  použít na  začátku programu  pro odstranění nepoužívaných oken a tím ke zpřehlednění obrazovky.


Procedura ImageShow

procedure ImageShow;

Procedura  obnoví velikost  grafického výstupního  okna do podoby před jeho minimalizací do ikony.


1.10 - MATEMATICKÁ KNIHOVNA

Matematická knihovna umožňuje  provádění základních matematických výpočtů s čísly. Obsahuje také základní trigonometrické funkce.

Abs	- vrací absolutní hodnotu čísla

ArcTan	- vrací arkustangens čísla

ArcSin	- vrací arcsin hodnoty

Cos	- vrací kosinus čísla

Dec	- zmenšuje hodnotu proměnné o jedničku

DecVar	- zmenšuje hodnotu proměnné o zadanou hodnotu

Exp	- vrací exponent čísla

Inc	- zvyšuje hodnotu proměnné o jedničku

IncVar	- zvyšuje hodnotu proměnné o zadanou hodnotu

ln	- vrací přirozený logaritmus argumentu

Max	- vrací větší hodnotu ze dvou zadaných čísel

Min	- vrací  menší hodnotu ze dvou zadaných čísel

PI	- vrací hodnotu ludolfova čísla

Random	- vrací náhodné číslo

RealRound- zaokrouhlení reálného čísla

Round	- zaokrouhluje číslo na celočíselnou hodnotu

Sin	- vrací hodnotu sinus čísla

Sqr	- vrací druhou mocninu čísla

Sqrt	- vrací druhou odmocninu čísla

Tan	- vrací tangens číselné hodnoty

Trunc	- odřízne desetinnou část reálného čísla


Funkce Abs

function Abs(r: Real) : Real;

Vrací absolutní hodnotu čísla r.


Funkce Arctan

function ArcTan(r: Real) : Real;

Funkce vrací arkustangens čísla r.


Funkce ArcSin

function ArcSin(r: Real) : Real;

Funkce vrací arcsin čísla r.


Funkce Cos

function Cos(r: Real): Real;

Vrací kosinus čísla r.


Procedura Dec

procedure Dec(var v: Integer);

Procedura zmenšuje hodnotu proměnné v, která musí být numerického celočíselného typu (integer). Provede se snížení o jedničku. Pokud  bude  proměnná  reálného  typu,  bude vrácena zaokrouhlená hodnota.  Vhodné  použití  je  například  pro  snižování  hodnoty čítače. Na rozdíl  od jazyka Pascal není možné  zadat hodnotu pro snížení. Na to můžete použít proceduru DecVar.

Příklad:

pocet:= 22;

Dec(pocet);  {pocet:=pocet-1;}

Viz také:

Inc, IncVar, DecVar


Procedura DecVar

procedure DecVar(var v, n: Real);

Procedura zmenší hodnotu proměnné v o hodnotu zadanou v parametru n. Proměnná i  velikost snížení mohou být na  rozdíl od procedury Dec reálného typu.

Příklad:

vaha:= 22.56;

kus := 1.23;

DecVar(vaha,kus);  {vaha:=vaha-kus;}

Viz také:

Inc, Dec, IncVar


Funkce Exp

function Exp(r: Real) : Real;

Vrací exponent čísla r.


Procedura Inc

procedure Inc(var v: Integer);

Procedura zvyšuje hodnotu proměnné v, která musí být numerického celočíselného typu (integer). Provede se zvýšení o jedničku. Pokud  bude  proměnná  reálného  typu,  bude vrácena zaokrouhlená hodnota.  Vhodné  použití  je  například  pro  zvyšování  hodnoty čítače. Na rozdíl  od jazyka Pascal není možné  zadat hodnotu pro zvýšení. Na to můžete použít proceduru IncVar.

Příklad:

pocet:= 22;

Inc(pocet);  {pocet:=pocet+1;}

Viz také:

Dec, IncVar, DecVar


Procedura IncVar

procedure IncVar(var v, n: Real);

Procedura zvýší hodnotu proměnné v  o hodnotu zadanou v parametru n. Proměnná i  velikost zvýšení mohou být na  rozdíl od procedury Inc reálného typu.

Příklad:

vaha:= 22.56;

kus := 1.23;

IncVar(vaha,kus);  {vaha:=vaha+kus;}

Viz také:

Inc, Dec, DecVar


Funkce ln

function ln(r: Real) : Real;

Vrací přirozený logaritmus argumentu.


Funkce Max

function Max(r1, r2: Real) : Real;

Funkce porovná hodnoty vstupujících čísel a vrací hodnotu většího čísla.

Viz také: Min


Funkce Min

function Min(r1, r2: Real) : Real;

Funkce porovná hodnoty vstupujících čísel a vrací hodnotu menšího čísla.

Viz také: Max


Funkce PI

Const PI = 3.14;

Funkce vrací hodnotu Ludolfova čísla 3.1415926535897932385.


Funkce Random

function Random(n: Integer) : Integer;

Funkce vrací náhodné číslo z intervalu 0 až n.


Funkce Round

function Round(r: Real) : Integer;

Funkce  zaokrouhluje  parametr   reálného  typu  na  celočíselnou hodnotu.  Výsledek  funkce  je   celočíselná  hodnota,  která  je nejbližší k  hodnotě parametru. Čísla, která  jsou uprostřed dvou celých čísel  se zaokrouhlují k  číslu, které má  větší absolutní hodnotu.

Viz také: RealRound


Funkce RealRound

function RealRound(r: Real; dec :Integer) : Real;

Funkce  zaokrouhluje  parametr  reálného  typu  na  zadaný  počet desetinných  míst. Výsledek  funkce je  reálná hodnota  se zadaným počtem desetinných míst, která  je nejbližší k hodnotě parametru.

Viz také: Round


Funkce Sin

function Sin(r: Real) : Real;

Vrací hodnotu sinus čísla r.


Funkce Sqr

function Sqr(r: Real) : Real;

Vrací druhou mocninu čísla r.

Viz také: Sqrt


Funkce Sqrt

function Sqrt(r: Real) : Real;

Vrací druhou odmocninu z čísla r.

Viz také: Sqr


Funkce Tan

function Tan(r: Real) : Real;

Vrací tangens hodnoty čísla r.


Funkce Trunc

function Trunc(r: Real) : Integer;

Provádí  odříznutí  desetinné  části  reálného  parametru a vrací celočíselnou hodnotu.


1.11 - KNIHOVNA PRO ZPRACOVÁNÍ ŘETĚZCŮ

Knihovna obsahuje  procedury a funkce  pro práci s  řetězci. Mimo zpracování podřetězců umožňuje převod čísel na řetězec a zpět.

Copy	- vrací zadanou část řetězce

Day	- vrací jméno dne v týdnu

Date	- vrací aktuální datum počítače jako řetězec

DateToStr - převádí datum na řetězec

Delete	- vyjme část znaků z řetězce

Chr	- na základě čísla z ASCII tabulky vrací příslušný znak

Insert	- vloží podřetězec do řetězce

IntToStr	- převádí číslo do tvaru řetězce

Length	- vrací délku řetězce

LowerCase	- konvertuje řetězec na malá písmena

Month	- vrací jméno měsíce v roce

Ord	- vrací ASCII hodnotu znaku

Pos	- vyhledá podřetězec v řetězci

RealToStr	- vrací převedené reálné číslo na řetězec

Replicate	- vrací řetězec znaků opakováním zadaného řetězce

SetLength	- nastaví řetězec na danou délku

Space	- vrací prázdný řetězec zadané délky

Str	- provádí konverzi čísla na řetězec

StrToDate 	- převádí řetězec na datum

StrToInt	- převádí řetězec do číselné hodnoty typu integer

StrToReal	- převádí řetězec do číselné hodnoty typu real

StrToTime 	- převádí řetězec na čas

Time	- vrací aktuální nastavený čas počítače jako řetězec

TimeToStr 	- převádí čas na řetězec

Trim	- uřízne z řetězce počáteční a koncové mezery

TrimLeft	- uřízne z řetězce počáteční mezery

TrimRight	- uřízne z řetězce koncové mezery

UpperCase	- konvertuje řetězec na velká písmena

Val	- provádí konverzi řetězce do numerické hodnoty


Funkce Copy

function Copy(s: String; i: Byte; l: Byte) : String;

Funkce vrací  podřetězec z řetězce s.  Parametr i udává počáteční index  v  původním  řetězci  a   parametr  l  uvádí  počet  znaků přenesených do  výsledného řetězce počínajíc  i-tým znakem. Je-li hodnota parametru i větší, než délka řetězce s, je vrácen prázdný řetězec.  Je-li hodnota  parametru l  větší, než  zbývající délka řetězce, je přenesen pouze zbytek řetězce s.


Funkce Day

function Day(d: Integer) : String;

Funkce vrací na  základě pořadového čísla dne v  týdnu jeho jméno jako řetězec.

Viz také: Month


Funkce Date

function Date: String;

Funkce vrací aktuální nastavené datum počítače jako řetězec. Tvar výstupního řetězce závisí na nastavení Windows.

Viz také: Time


Funkce DateToStr

function DateToStr(datum: Date) : String;

Datum uložené v komponentě DateTimePicker ve vlastnosti Date je ve speciálním formátu, který umožňuje s datem porovádět základní matematické výpočty. Například zjišťovat rozdíl dvou dat apod. Funkce DateToStr převede datum do tvaru řetězce pro možnost jeho zobrazení.

Viz také:

Date, StrToDate

Příklad 1:

DateTimePicker.Kind := dtkDate;

DateTimePicker.Date := StrToDate('12/01/99');

DateTimePicker.Date := DateTimePicker.Date-10;

ShowMessage(DateToStr(DateTimePicker.Date));

Příklad 2:

ShowMessage(DateToStr(StrToDate('12/02/99')

                     -StrToDate('13/06/59')));


Procedura Delete

procedure Delete(s: String; i, c: Integer);

Procedura zruší c znaků z podřetězce s od pozice i.


Funkce Chr

function chr(b: Byte) : Char;

Funkce  vrací znak,  který je  reprezentován zadanou celočíselnou hodnotou (dekadické vyjádření ASCII znaku).

Viz také: Ord


Funkce Insert

function Insert(s: string; var d: string, i: integer);

Funkce  vkládá  podřetězec  s  do  řetězce  daného  parametrem d. Hodnota  zadaná  parametrem  i  udává  počáteční  hodnotu  indexu v řetězci s, kam budce vložen řetězec s.


Funkce IntToStr

function IntToStr(i: Integer) : String;

Funkce  převádí číslo v proměnné i do tvaru řetězce.


Funkce Length

function Length(s: String) : Byte;

Funkce vrací délku řetězce s.

Viz také: SetLength


Funkce LowerCase

function LowerCase(s: String) : String;

Převede všechny  znaky zadaného řetězce na  malá písmena. Pracuje včetně  českých   znaků  (pokud  máte   správně  nastaven  systém Windows).

Viz také: UpperCase


Funkce Month

function Month(m: Integer) : String;

Funkce vrací na základě pořadového čísla měsíce v roce jeho jméno jako řetězec.

Viz také: Day


Funkce Ord

function ord(c: Char) : Byte;

Funkce  vrací pořadové číslo znaku v ASCII tabulce.

Viz také: Chr


Funkce Pos

function Pos(subs, s: String) : Integer;

Funkce vyhledá podřetězec subs v  řetězci s. Je-li subs v řetězci s nalezen, vrací funkce hodnotu indexu prvního znaku v řetězci s, kde byl  podřetězec subs nalezen. Neobsahuje-li  řetězec s zadaný podřetězec, je vrácena hodnota 0.


Funkce RealToStr

function RealToStr(r: Real; del, dec: integer) : String;

Funkce provádí konverzi reálného čísla r na řetězec. Parametr del udává  délku  vytvořeného  řetězce  a  parametr  dec  uvádí počet desetinných míst, které budou do řetězce zahrnuty.


Funkce Replicate

function Replicate(znak: String; poc: Integr) : String;

Funkce vrací řetězec vygenerovaný  opakováním řetězce znak. Počet opakování  udává   parametr  poc.  Výsledný   řetězec  je  dlouhý maximálně 255 znaků. Delší je uříznut na uvedenou délku.

Viz také: Space


Procedura SetLength

procedure SetLength(s: String; d:Integer) : String;

Funkce nastaví  řetězec s na  délku zadanou parametrem  d. Zadaná délka  musí být  v rozsahu  0 až  255. Pokud  je původní  řetězec kratší,  bude doplněn  mezerami.  Delší  řetězec bude  uříznut na zadanou délku.

Viz také: Length


Funkce Space

function Space(d: Integer) : String;

Funkce vrací řetězec sestavený ze zadaného počtu mezer (prázdných znaků).

Viz také: Replicate


Procedura Str

procedure Str(r: Real; var s: String);

Procedura  provádí konverzi  numerické hodnoty  r na odpovídající řetězcovou reprezentaci ve formě znakové proměnné s.

Příklad:

num:= 123.45;

Str(num, ss);

Viz také: Val, RealToStr


Funkce StrToDate

function StrToDate(datum: String) : Date;

Datum uložené v komponentě DateTimePicker ve vlastnosti Date je ve speciálním formátu, který umožňuje s datem porovádět základní matematické výpočty. Například zjišťovat rozdíl dvou dat apod. Funkce StrToDate převede datum zadané ve tvaru řetězce do datového formátu.

Viz také:

Date, DateToStr

Příklad 1:

DateTimePicker.Kind := dtkDate;

DateTimePicker.Date := StrToDate('12/01/99');

DateTimePicker.Date := DateTimePicker.Date-10;

ShowMessage(DateToStr(DateTimePicker.Date));

Příklad 2:

ShowMessage(DateToStr(StrToDate('12/02/59')

                     -StrToDate('13/06/59')));


Funkce StrToInt

function StrToInt(s: String) : Integer;

Převádí řetězec do číselné hodnoty typu longint.

Viz také: StrToReal


Funkce StrToReal

function StrToReal(s: String) : Real;

Převádí řetězec do číselné hodnoty typu real. Na rozdíl od funkce Val  dokáže  převést  i  obsah  řetězce  obsahujícího nenumerické znaky,  které jsou  od svého  prvého výskytu  až do konce řetězce ignorovány.

Viz Také: StrToInt


Funkce StrToTime

function StrToTime(cas: String) : Time;

Čas uložený v komponentě DateTimePicker ve vlastnosti Time je ve speciálním formátu, který umožňuje provádět s časem další výpočty. Funkce StrToTime převede čas zadaný ve tvaru řetězce do časového formátu.

Viz také:

Time, TimeToStr

Příklad 1:

DateTimePicker.Kind := dtkTime;

DateTimePicker.Time := StrToTime('12:01:22');

ShowMessage(TimeToStr(DateTimePicker.Time));


Funkce Time

function Time: String;

Funkce vrací  aktuální nastavený čas počítače  jako řetězec. Tvar výstupního řetězce závisí na nastavení Windows.

Viz také: Date


Funkce TimeToStr

function TimeToStr(cas: Time) : String;

Čas  uložený v komponentě DateTimePicker ve vlastnosti Time je ve speciálním formátu, který umožňuje s časem porovádět další výpočty. Funkce TimeToStr převede čas do tvaru řetězce pro možnost jeho zobrazení.

Viz také:

Time, StrToTime

Příklad 1:

DateTimePicker.Kind := dtkTime;

DateTimePicker.Time := StrToTime('12:01:22');

ShowMessage(TimeToStr(DateTimePicker.Time));


Funkce Trim

function Trim(s : String) : String;

Funkce uřízne ze zadaného řetězce počáteční a koncové mezery.

Viz také:

TrimLeft, TrimRight


Funkce TrimLeft

function TrimLeft(s : String) : String;

Funkce uřízne ze zadaného řetězce počáteční mezery.

Viz také:

Trim, TrimRight


Funkce TrimRight

function TrimRight(s : String) : String;

Funkce uřízne ze zadaného řetězce koncové mezery.

Viz také:

Trim, TrimLeft


Funkce UpperCase

function UpperCase(s : String) : String;

Převede všechny znaky zadaného  řetězce na velká písmena. Pracuje včetně českých   znaků  (pokud  máte   správně  nastaven  systém Windows).

Viz také: LowerCase


Funkce Val

function Val(s: String; var r: Real) : Integer;

Funkce  provádí  konverzi  řetězce  s  do  odpovídající numerické hodnoty.  Pokud je  vrácena nenulová  hodnota, obsahuje  výsledek index  (pořadí)  znaku,  u  kterého  došlo  k  chybě při konverzi a proměnná r  je nulová. Výhodněji  lze použít funkce  StrToReal, kdy je vrácena vždy správná  hodnota, nenumerická část řetězce je přitom ignorována.

Viz také:

Str, StrToReal


1.12 - KNIHOVNA PRO PRÁCI SE SOUBORY

Knihovna  obsahuje  základní  operace  se  soubory  a adresáři na disku.  Většinu těchto  funkcí je  nutné používat  velmi opatrně, protože  například   v  případě  výmazu   souboru  můžete  přijít o důležitá data.

Knihovna podporuje dlouhá jména souborů dle konvence Windows 95. Pro  jména souborů  je proto  možné používat  více než osm znaků, mohou obsahovat mezery a podobně.

CreateDir	- zakládá adresář

DiskFree	- vrací volné místo na disku v bajtech

DiskSize	- vrací volné místo na disku v bajtech

ExtractFileDir	- vrací jméno adresáře

ExtractFileDrive	- vrací jméno diskové jednotky

ExtractFileExt	- vrací jméno extenze souboru

ExtractFileName	- vrací jméno souboru

ExtractFilePath	- vrací kompletní cestu k souboru

FileCopy	- zkopíruje soubor do nového adresáře

FileDelete	- zruší zadaný soubor

FileExists	- zjišťuje existenci souboru

FileRename	- přejmenuje soubor

FileSize	- zjišťuje délku souboru

GetAdr	- vrací jméno aktuálního adresáře

GetCurrentDir	- vrací jméno aktuálního adresáře

GetDir	- zjišťuje jméno aktuálního adresáře

ChDir	- změní nastavený pracovní adresář

MkDir	- založí nový adresář

RemoveDir	- zruší zadaný adresář

RmDir	- zruší prázdný adresář

SetCurrentDir	- nastaví zadaný adresář jako aktuální

POZNÁMKA:

Při  práci  se  soubory  na  disku není nutné pracovat s celým  označením  souboru,  to  je jmeno_disku:\adresář\soubor. Pokud se bude pracovat pouze se  soubory v adresáři, ve kterém je uložen prováděný  program, je možné  uvádět pouze jméno  souboru. Obdobně není  nutné uvádět jméno disku,  pokud je požadovaný disk aktuální a bude uvedena kompletní cesta k souboru (adresář).


Funkce CreateDir

function CreateDir(dir: String): Boolean;

Funkce zakládá  adresář a vrací informaci  o úspěšnosti provedené akce. Pokud  byl adresář, který se  zadává parametrem dir správně založen, je vrácena funkcí  hodnota True. Obdobná procedura MkDir která také zakládá adresář je zachována z důvodu kompatibility se systémem MS DOS.

Příklad:

Writeln(CreateDir('d:\texty');

if CreateDir('pokus') then

   Writeln('Adresář byl založen');

Viz také:

MkDir, RemoveDir, RmDir


Funkce DiskFree

function DiskFree(d: Byte) : Integer;

Funkce  zjišťuje velikost  neobsazeného místa  na zadaném  disku. Výsledek vrací v bajtech. Pokud je disk nepřístupný, vrací funkce hodnotu -1. Požadovaný disk se zadává číslem počínaje od jedničky pro  disk A.  (A=1, B=2,  C=2, ...).  Funkce se  dá také  výhodně použít pro testování přítomnosti diskety v mechanice.

Write('Volné místo na disku C: je');

Write(IntToStr(DiskFree(3)/1024/1024), ' Mb');

if DiskFree(1) < 0 then

   Writeln('Založte do mechaniky disketu s daty !');

Viz také: DiskSize


Funkce DiskSize

function DiskSize(d: Byte) : Integer;

Funkce  zjišťuje velikost  zadaného disku.  Výsledek vrací funkce v bajtech. Pokud  je disk nepřístupný,  vrací funkce hodnotu  -1. Požadovaný disk se zadává číslem počínaje od jedničky pro disk A. (A=1,  B=2,  C=2,  ...).  To  lze  výhodně  použít  například pro kontrolu připravenosti diskety v mechanice, případně pro zjištění počtu připojených disků (C, D, E, ...).

Write('Velikost disku C: je');

Write(IntToStr(DiskSize(3)/1024/1024), ' Mb');

Viz také: DiskFree


Funkce ExtractFileDir

function ExtcratFileDir(file: String): String;

Funkce vrací  ze zadaného kompletního  jména souboru část,  která uvádí adresář.  Uvedený disk, adresář ani  soubor přitom nemusí existovat.

Příklad:

Writeln(ExtractFileDir('c:\texty\dopis.txt'));

{vypíše: c:\texty}

Viz také:

ExtractFileDrive, ExtractFileExt, ExtractFileName, ExtractFilePath


Funkce ExtractFileDrive

function ExtcratFileDrive(file: String): String;

Funkce vrací  ze zadaného kompletního  jména souboru část,  která uvádí  jméno disku.  Uvedený  disk,  adresář ani  soubor přitom nemusí existovat.

Příklad:

Writeln(ExtractFileDrive('c:\texty\dopis.txt'));

{vypíše: c:}

Viz také:

ExtractFileDir, ExtractFileExt, ExtractFileName, ExtractFilePath


Funkce ExtractFileExt

function ExtcratFileExt(file: String): String;

Funkce vrací  ze zadaného kompletního  jména souboru část,  která uvádí extenzi  jména souboru. Uvedený disk,  adresář ani soubor přitom nemusí existovat.

Příklad:

Writeln(ExtractFileExt('c:\texty\dopis.txt'));

{vypíše: .txt}

Viz také:

ExtractFileDir, ExtractFileDrive, ExtractFileName, ExtractFilePath


Funkce ExtractFileName

function ExtcratFileName(file: String): String;

Funkce vrací  ze zadaného kompletního  jména souboru část,  která uvádí jméno  souboru. Uvedený disk,  adresář ani soubor  přitom nemusí existovat.

Příklad:

Writeln(ExtractFileName('c:\texty\dopis.txt'));

{vypíše: dopis.txt}

Viz také:

ExtractFileDir, ExtractFileDrive, ExtractFileExt, ExtractFilePath


Funkce ExtractFilePath

function ExtcratFiledir(file: String): String;

Funkce vrací  ze zadaného kompletního  jména souboru část,  která uvádí cestu k souboru. Uvedený  disk, adresář ani soubor přitom nemusí existovat.

Příklad:

Writeln(ExtractFilePath('c:\texty\dopis.txt'));

{vypíše: c:\texty\}

Viz také:

ExtractFileDir, ExtractFileDrive, ExtractFileExt, ExtractFileName


Funkce FileCopy

function FileCopy(f1, f2: String) : boolean;

Funkce  kopíruje soubor  zadaný v  parametru f1  na místo  zadané parametrem f2. Pokud proběhne  kopírování v pořádku, vrátí funkce hodnotu  True, v  opačném případě  vrací hodnotu  False. Je možné používání dlouhých jmen souborů.

Příklad:

FileCopy('soubor.xxx','soubor.bak');

if not FileCopy('soubor.xxx','soubor.bak') then

   Writeln('Soubor nebyl zkopírován');

Viz také:

FileDelete, FileRename


Funkce FileDelete

function FileDelete(f: String) : boolean;

Funkce  zruší soubor  zadaný  parametrem  f. V  případě úspěšného výmazu vrací funkce hodnotu true.

Příklad:

if FileDelete('soubor.xxx') then

   Writeln('Soubor byl smazán');

Viz také:

FileCopy, FileRename


Funkce FileExists

function FileExists(f: String) : Boolean;

Funkce zjišťuje, zda existuje soubor  zadaný v parametru f. Pokud ano vrátí  funkce hodnotu True,  v opačném případě  vrací hodnotu False.

Příklad:

if FileExists('soubor.xxx') then

   FileDelete('soubor.xxx');


Funkce FileRename

function FileRename(f1, f2: String) : boolean;

Funkce  přejmenuje  soubor  zadaný  v  parametru  f1 na soubor se jménem uvedeným v parametru  f2. V případě úspěšného přejmenování souboru vrací funkce hodnotu True.

Příklad:

if FileRename('program.kl3', 'program.xxx') then

   Writeln('Soubor byl přejmenován');

Viz také:

FileCopy, FileDelete


Funkce FileSize

function FileSize(f1: String) : Integer;

Funkce zjišťuje velikost souboru zadaného parametrem f1. Výsledek vrací  v  bajtech.  Pokud  soubor  neexistuje,  případně  se  jej nepodařilo otevřít, vrací funkce zápornou hodnotu -1.

Příklad:

Writeln(FileSize('soubor.xxx'));


Funkce GetAdr

function GetAdr(d: Byte) : String

Funkce  vrací  jméno  aktuálního  adresáře  na  libovolném disku. V numerickém  parametru d  se zadává  disková jednotka.  Pokud je hodnota  nulová,  předpokládá  se  aktuální  jednotka.  V  jiných případech se  udává pořadí jednotky od  A (A = 1,  B = 2, C  = 3, D = 4, atd.).

Pokud se zadá neexistující disk, bude vrácen prázdný řetězec.

Viz také: GetDir


Procedura GetDir

procedure GetDir(d: Byte; s: String);

Procedura zjišťuje jméno aktuálního adresáře na libovolném disku. Jméno adresáře  je vráceno v parametru  s. V numerickém parametru d se   zadává  disková   jednotka.  Pokud   je  hodnota   nulová, předpokládá  se aktuální  jednotka. V  jiných případech  se udává pořadí jednotky od A (A = 1, B = 2, C = 3, D = 4, atd.).

POZOR,  pokud  je  zadáno  chybné  označení  disku,  bude  vrácen nelogicky adresář aktuálního disku. Můžete proto použít výhodněji funkci GetAdr, která v takovém případě vrací prázdný řetězec.

Viz také: GetAdr


Funkce ChDir

function ChDir(s: String) : boolean;

Funkce  změní  současný  pracovní  adresář.  Parametr  s obsahuje specifikaci  cesty  včetně  případné  disketové  jednotky.  Pokud proběhla úspěšně změna adresáře, je vrácena hodnota True.

Příklad:

if ChDir('c:\pokus\') then

   Writeln('Adresář neexistuje !');

Viz také:

GetAdr, GetDir


Funkce MkDir

function MkDir(s: String) : boolean;

Funkce se používá pro  založení adresáře zadaného jména. Parametr s obsahuje  cestu nového  adresáře  a  jeho jméno.  Poslední úsek cesty  (to  je  jméno   vytvářeného  adresáře)  nesmí  být  jméno existujícího  souboru.  Pokud  je  adresář  založen, vrací funkce hodnotu True.

Příklad:

if not MkDir('c:\pokus\') then

   Writeln('Adresář nebyl vytvořen !');

Viz také:

CreateDir, RmDir


Funkce RemoveDir

function RemoveDir(dir: String): Boolean;

Funkce  ruší  zadaný  adresář  a  vrací  informaci  o  úspěšnosti provedené akce. Uvedený adresář musí být prázdný, bez jakýchkoliv souborů.  Pokud  byl  adresář,  který  se  zadává  parametrem dir zrušen,  je vrácena  funkcí  hodnota  True. Obdobná  funkce RmDir která  ruší  adresář  je  zachována  z  důvodu  kompatibility  se systémem MS DOS.

Příklad:

if RemoveDir('pokus') then

   Writeln('Adresář byl zrušen');

Viz také:

CreateDir, RmDir


Funkce RmDir

function RmDir(s: String);

Funkce  vymazává adresář  zadaný parametrem  s. Adresář  musí být prázdný.  Pokud je  výmaz  adresáře  úspěšný, je  vrácena hodnota True.

Příklad:

if RmDir('c:\pokus\') then

   Writeln('Adresář nebyl vymazán !');

Viz také: RemoveDir, MkDir


Funkce SetCurrentDir

function SetCurrentDir(dir: String): Boolean;

Funkce  slouží k  nastavení aktuálního  adresáře, který  je zadán parametrem dir. Pokud uvedený adresář existuje a aktuální adresář se dle  něj změní, vrátí  funkce hodnotu True.  Obdobná procedura ChDir   neobsahuje   okamžitý   výsledek   indikace   bezchybného provedení.

Viz také:

GetCurrentDir, ChDir


Funkce GetCurrentDir

function GetCurrentDir: Boolean;

Funkce  slouží k  určení aktuálního  adresáře.

Viz také: ChDir


1.13 - KNIHOVNA PRO PRÁCI S POLEM (ARRAY)

Knihovna obsahuje procedury a funkce  pro práci s proměnnými typy Array,  které  představuje  jedno  nebo  dvourozměrné  pole. Pole představují  seskupení  hodnot,  ke  kterým  je možné přistupovat pomocí indexy  pole. Proměnné musí  být po své  deklaraci nejprve inicializovány a až potom mohou být použity.

ArrayDimCount	- zkontroluje a vrací počet dimenzí pole

Array1Create	- založí (inicializuje) jednorozměrné pole

Array1Get	- čte hodnotu z jednorozměrného pole

Array1High	- vrací koncový   index jednorozměrného pole

Array1Low	- vrací počáteční index jednorozměrného pole

Array1Set	- zapíše zadanou hodnotu do jednorozměrného pole

Array2Create	- založí (inicializuje) dvourozměrné pole

Array2Get	- čte hodnotu z dvourozměrného pole

Array2High	- vrací koncový   index dvourozměrného pole

Array2Low	- vrací počáteční index dvourozměrného pole

Array2Set	- zapíše zadanou hodnotu do dvourozměrného pole


Funkce ArrayDimCount

function ArrayDimCount(pole: array) : byte;

Funkce   zkontroluje,  zda   proměnná  zadaná   v  parametru   je inicializovaná jako pole. Pokud  ne, vrací nulovou hodnotu. Pokud je proměnná daná parametrem inicializovaná jako pole, vrací počet dimenzí pole. Funkci je proto  možné výhodně použít pro kontrolu, zda došlo opravdu k bezchybné inicializaci pole.

Příklad:

pole:=Array1Create(1, 3);

If ArrayDimCount(pole) > 0 then

begin

   ... pokud inicializace úspěšná, další akce

end;

Viz také:

Array1Create, Array2Create


Funkce Array1Create

function Array1Create(low, high: real) : array;

Funkce inicializuje  proměnnou typu pole  a nastaví ji  na zadaný rozsah.  Parametry udávají  počáteční  a  koncový index  pole pro přístup k položkám pole pomocí indexů. První index nemusí začínat od jedničky, nebo  nuly. Je možné použít dokonce  i záporné číslo indexu. Po  provedení inicializace je  vhodné zkontrolovat funkcí ArrayDimCount úspěšnost inicializace pole.

Inicializované  pole  obsahuje  položky  nedefinovaného stavu. Je proto   vhodné  po   inicializaci  pole   provést  jeho  naplnění počátečními  hodnotami.  Není  přitom  vyžadováno,  aby používaly všechny položky pole stejný typ proměnných.

Příklad:

pole := Array1Create(0, 9);

For x = 0 to 9 do Array1Set(pole, x, 0);

Viz také:

ArrayDimCount, Array2Create


Funkce Array1Get

function Array1Get(pole: array; index: real): variant;

Funkce vrací obsah zadané  položky jednorozměrného pole. Parametr pole zadává  pole pro čtení  hodnoty, parametr index  udává index pro přístup k požadované položce. Pozor na to, že pokud bylo pole sice inicializováno, ale nebyla  do zadaného indexu pole naplněna žádná počáteční hodnota, bude vrácena nedefinovaná hodnota.

Viz také: Array1Set


Funkce Array1High

function Array1High(pole: array) : real;

Funkce vrací nejvyšší možnou hodnotu indexu jednorozměrného pole. Funkce se používá většinou pro přístup  k poli v cyklu od první k poslední položce.

Příklad:

pole:=Array1Create(1, 3);

for x = Array1Low(pole) to Array1High(pole) do

begin

   ... akce s každou položkou pole

end;

Viz také: Array1Low


Funkce Array1Low

function Array1Low(pole: array) : real;

Funkce vrací nejnižší možnou hodnotu indexu jednorozměrného pole. Funkce se  používá většinou pro přístup  k poli v cyklu  od první k poslední položce.

Příklad:

pole:=Array1Create(1, 3);

for x = Array1Low(pole) to Array1High(pole) do

begin

   ... akce s každou položkou pole

end;

Viz také: Array1Low


Procedura Array1Set

procedure Array1Set(pole : array; index: real;  value: variant): variant;

Procedura dosazuje do pole  novou zadanou hodnotu. První parametr udává pole, ve druhém parametru je uveden přístupový index k poli a ve třetím parametru je uvedena nová hodnota, která se na zadaný index pole dosadí.

Příklad:

pole:=Array1Create(1, 3);

Array1Set(pole, 1, "klondaik");

Array1Set(pole, 2, 100);

Array1Set(pole, 2, Array1Get(pole,2)+1);


Funkce Array2Create

function Array2Create(low1, high1, low2, high2: real) : array;

Funkce inicializuje  proměnnou typu pole  a nastaví ji  na zadaný rozsah.  První dva  parametry udávají  počáteční a  koncový index pole v první dimenzi, další  dva parametry udávají rozsah pole ve druhé  dimenzi. Index  přitom  nemusí  začínat od  jedničky, nebo nuly.  Je  možné  použít  dokonce  i  záporné  číslo  indexu.  Po provedení    inicializace   je    vhodné   zkontrolovat    funkcí ArrayDimCount úspěšnost inicializace pole.

Inicializované  pole  obsahuje  položky  nedefinovaného stavu. Je proto   vhodné  po   inicializaci  pole   provést  jeho  naplnění počátečními  hodnotami.  Není  přitom  vyžadováno,  aby používaly všechny položky pole stejný typ proměnných.

Příklad:

pole := Array2Create(0, 9, 1, 3);

For x = 0 to 9 do

    for y = 1 to 3 do Array2Set(pole, x, y, 0);

Viz také:

ArrayDimCount, Array1Create


Funkce Array2Get

function Array2Get(pole: array; x, y: real): variant;

Funkce vrací  obsah zadané položky  dvourozměrného pole. Parametr pole zadává  pole pro čtení hodnoty,  další dva parametry udávají potom  index pro  přístup k  požadované položce.  Pozor na to, že pokud  bylo  pole  sice  inicializováno,  ale  nebyla do zadaného indexu  pole  naplněna  žádná  počáteční  hodnota,  bude  vrácena nedefinovaná hodnota.

Viz také: Array2Set


Funkce Array2High

function Array2High(pole: array, dim: integer) : real;

Funkce vrací nejvyšší možnou  hodnotu indexu dvourozměrného pole. Dimenze pole  (první, nebo druhá) se  zadává ve druhém parametru. Funkce se  používá většinou pro přístup  k poli v cyklu  od první k poslední položce.

Příklad:

pole:=Array2Create(1, 3, 0, 9);

for x = Array2Low(pole, 1) to Array2High(pole, 1) do

begin

   ... akce s každou položkou pole v první dimenzi

end;

Viz také: Array2Low


Funkce Array2Low

function Array2Low(pole: array, dim: integer) : real;

Funkce vrací nejnižší možnou  hodnotu indexu dvourozměrného pole. Dimenze pole  (první, nebo druhá) se  zadává ve druhém parametru. Funkce se  používá většinou pro přístup  k poli v cyklu  od první k poslední položce.

Příklad:

pole:=Array2Create(1, 3, 0, 9);

for x = Array2Low(pole, 1) to Array2High(pole, 1) do

begin

   ... akce s každou položkou pole v první dimenzi

end;

Viz také: Array2Low


Procedura Array2Set

procedure Array2Set(pole : array; x, y: real; value: variant): variant;

Procedura dosazuje do dvourozměrného  pole novou zadanou hodnotu. První parametr udává pole pro  změnu hodnoty, další dva parametry udávají  index  pole  a  v  posledním  parametru  je uvedena nová hodnota, která se na zadaný index pole dosadí.

Příklad:

pole:=Array2Create(1, 3, 0, 9);

Array2Set(pole, 1, 1, "klondaik");

Array2Set(pole, 1, 2, 100);

Array2Set(pole, 1, 2, Array2Get(pole, 1, 2)+1);


1.14 - GRAFICKÁ KNIHOVNA

V  grafické knihovně jsou definovány  procedury a funkce sloužící k výstupu  do grafického  okna. Do  okna je  možné kreslit  čáry, čtverce,  kružnice a  elipsy, čtverce,  obdélníky a trojúhelníky. Možné je  nastavit barvu, druh a  styl čáry. Stejně tak  je možné nastavit  barvu ploch.  Plochu grafického  okna je  možné ukládat a načítat v souborech typu *.BMP.

Souřadnicový systém

Definice barev

Příkazy a funkce grafické knihovny:

Arc	- kreslí křivku, část elipsy

Ellipse	- kreslí elipsu  nebo kružnici

GetMaxX	- vrací velikost grafického okna na ose x (šířka)

GetMaxY	- vrací velikost grafického okna na ose y (výška)

ImageBrushColor	- nastaví barvu výplně ploch

ImageBrushStyle	- nastaví styl vyplňování ploch

ImageClear	- vymaže obsah grafického okna

ImageFontColor	- nastaví barvu fontu

ImageFontName	- nastaví typ fontu

ImageFontSize	- nastaví velikost fontu

ImageFontStyle	- nastaví styl fontu (bold, italic, podtržení..)

ImageFromClip	- převede obsah schránky na zadanou pozici

ImageInit	- inicializuje grafické okno

ImageLoad	- načte soubor do grafického okna

ImageMove	- zkopíruje část grafického okna na novou pozici

ImagePenColor	- nastaví barvu kreslených čar

ImagePenStyle	- nastaví druh čáry (plná, tečkovaná, ..)

ImagePenWidth	- nastaví sílu čáry

ImagePrint	- výstup grafického okna na tiskárnu

ImageSave	- zapíše grafické okno do souboru

ImageToClip	- uloží výřez grafického okna do schránky

Line	- kreslí úsečku dle zadaných souřadnic (počátek, konec)

LineTo	- kreslí úsečku z  aktuální pozice do  bodu zadaného parametry

MoveTo	- přesune pozici grafického ukazatele

Pie	- kreslí kruhovou výseč

Point	- vykreslí bod na zadané souřadnici

Rectangle	- kreslí pravoúhelník nebo čtverec

RoundRect	- kreslí pravoúhelník se zaoblenými hranami

TextHeight	- vrací výšku textu v bodech

TextOut	- vypíše zadaný text do grafického okna

TextWidth	- vrací šířku textu v bodech

Triangle	- nakreslí trojúhelník

Grafické   výstupní  okno   máte  možnost   ovládat  z   programu následujícími procedurami (viz systémová knihovna):

ImageShow	- definuje zobrazení (viditelnost) okna s grafem

ImageForm	- nastavení velikosti a umístění okna s grafem


Souřadnicový systém

V   grafickém okně  se zápis a  kreslení provádí v  souřadnicovém systému. Souřadnice se zadávají  v bodech. Souřadnicový systém je vztažen k  levému hornímu rohu, který  má souřadnici 0,0. Hodnoty ve  směru osy  X narůstají  směrem doprava,  hodnoty ve směru osy Y narůstají směrem  dolů. Při zápisu souřadnice  se uvádí nejprve osa x, potom osa y. Je  přitom možné zadávat příkazy pro kreslení mimo plochu grafického okna, zobrazí se však pouze ta část, která je obsažena maximálními souřadnicemi grafického okna.

V grafickém  okně  je  definován  tzv.  grafický  ukazatel, který zaznamenává pozici vykreslení  posledního bodu. Poloha grafického ukazatele se při použití  některých procedur automaticky mění. Je možné ji nastavit i z programu procedurou MoveTo.

Činnost  grafického okna  je  možné  si představit  jako malířské plátno definovaných  rozměrů, na které se  kreslí perem (anglicky pen). Větší  plochy je možné  vybarvit štětcem (anglicky  brush). Kreslí se  přitom vždy nastavenou barvou.  Aby bylo možné zadávat jednoduše příkazy  pro zápis do grafického okna, obsahuje  jazyk KLONDAIK  několik předdefinovaných  konstant obsahující možné hodnoty pro vlastnosti pera a štětce.

Při kreslení obrazců do grafického  okna se kreslí obrazce čarou, jejíž barva je definována  procedurou ImagePenColor. Styl čáry je definován procedurou ImagePenStyle a  tloušťka čáry je definována procedurou   ImagePenWidth.  Plocha   nakreslených  geometrických obrazců  je  vyplněna  barvou  zadanou procedurou ImageBrushColor a stylem zadaným procedurou ImageBrushStyle.


Barvy

Možnosti  zobrazování barev  závisí na  možnostech videokarty  ve Vašem  počítači. Používáte-li  barevnou VGA  kartu, máte  možnost zobrazit   minimálně   16    barev.   Po   příslušném   nastavení videoadaptéru  je  možné  běžně  zobrazovat  256 barev, výjimečně i více. Systém KLONDAIK   umožňuje zadat  teoreticky libovolnou barvu z  rozsahu 16 miliónů  barev. Skutečně zobrazená  barva ale závisí  na možnostech  technického zařízení,  protože se  zobrazí vždy barva nejbližší.

Hodnotu  barev  je  možné  zadávat  několika  způsoby,  které lze v programu  libovolně  kombinovat.  Pokud  budete  používat pouze základní,  šestnáctibarevnou paletu,  můžete tak  učinit hodnotou barvy  v  rozsahu  1  až  16.  Stejnou  barvu  máte možnost zadat i pomocí předdefinované konstanty udávající anglické jméno barvy. Budete-li chtít  vybírat barvy z rozsahu  nad základních šestnáct barev, budete muset použít definici barev pomocí RGB hodnoty.

Hodnota barev  zadávaná definicí RGB  znamená, že každá  barva je definována jako  poměr kombinace barev  modré, zelené a  červené. Pro  každou barvu  je možné  volit hodnoty  v rozsahu  0 až  256. Násobek těchto hodnot (modrá x  zelená x červená) udává výslednou barvu. Výhodné je používat  tzv. hexadecimálního zápisu, kdy jsou pro  každou barvu  vyhrazeny dvě  pozice čísla  s hodnotami od 00 (číslo 0) až do FF (číslo 256). Při použití hexadecimálního čísla je nutné uvést před číslem rozlišovací znak $. Viz tabulka hodnot barev.

------------------------------------------

hodnota     konstanta    název barvy

------------------------------------------

$000000     clBlack      černá

$000080     clMaroon     kaštanově červená

$0000FF     clRed        světle červená

$008000     clGreen      tmavě zelená

$008080     clOlive      tmavě žlutá

$00FF00     clLime       světle zelená

$00FFFF     clYellow     žlutá

$800000     clNavy       tmavě modrá

$800080     clPurple     tmavě fialová

$808000     clTeal       tmavě modrozelená

$808080     clDkGray     tmavošedá

$0C0C0C0    clLtGray     světle šedá

$0FF0000    clBlue       modrá

$0FF00FF    clFuchsia    fialová

$0FFFF00    clAqua       modrozelená

$0FFFFFF    clWhite      bílá

------------------------------------------

Bílou barvu štětce je možné nastavit následujícími příkazy:

SetBrushColor($0FFFFFF);

SetBrushColor(clWhite);

POZOR!

Při zadávání hexadecimální konstanty musí  být za znakem $ uveden numerický znak.  Zápis '$FF00FF' je proto  chybný. Správně má být '$0FF00FF'.


Procedura Arc

procedure Arc(x1, y1, x2, y2, x3, y3, x4, y4: Integer);

V grafickém okně, případně v objektu Image nakreslí  kruhový oblouk  - část  elipsy dle  zadaných souřadnic. Souřadnicemi x1, y1, x2, y2 jsou zadány okraje plné elipsy, pokud by byla  vykreslená celá. Souřadnicemi  x3, y3 je  uveden počátek vykreslování  křivky   a  souřadnicemi  x4,  y4   je  udán  konec vykreslení křivky proti směru hodinových ručiček.

Příklad kreslení do grafického okna:

Arc(0,0,100,100, 50,0,0,50);         {levý  horní čtvrtkruh}

Arc(0,0,100,100, 0,50,50,100);       {levý  dolní čtvrtkruh}

Arc(0,0,100,100, 100,50,50,0);       {pravý horní čtvrtkruh}

Arc(0,0,100,100, 50,100,100,50);     {pravý dolní čtvrtkruh}

Arc(0,0,100,100, 100,50,0,50);       {horní půlkruh}

Arc(0,0,100,100, 0,50,100,50);       {dolní půlkruh}

Arc(0,0,100,100, 50,100,50,0);       {pravý půlkruh}

Arc(0,0,100,100, 50,0,50,100);       {levý  půlkruh}

Příklad kreslení v objektu Image:

Image.Arc(0,0,100,100, 50,0,0,50);


Procedura Ellipse

procedure Ellipse(x1, y1, x2, y2 : Integer);

Procedura  nakreslí V grafickém okně, případně v objektu Image elipsu,  která  je  umístěna  do  pomyslného obdélníku o souřadnicích  x1, y1 pro levý horní roh  a x2, y2 pro pravý dolní roh.

Procedura  je  vhodná  i  pro  kreslení  kružnic,  kdy  se zadají souřadnice tak, aby tvořily hranu čtverce.


Funkce GetMaxX

function GetMaxX: Integer;

Pokud se použije volání funkce samostatně, vrací funkce velikost inicializované grafické  plochy grafického okna na ose  x (šířka grafické plochy v bodech).

Volá-li se funkce jako metoda objektu Image,  bude vrácena šířka zobrazované bitmapy v bodech.

Viz také: GetmaxY


Funkce GetMaxY

function GetMaxY : Integer;

Pokud se použije volání funkce samostatně, vrací funkce velikost inicializované grafické  plochy grafického okna na ose  y (výška grafické plochy v bodech).

Volá-li se funkce jako metoda objektu Image,  bude vrácena výška zobrazované bitmapy v bodech.

Viz také: GetmaxX


Procedura ImageBrushColor

procedure ImageBrushColor(color: Integer);

Procedura  nastaví barvu  štětce dle  definovaných konstant. Při dalším kreslení ploch bude využívána nastavená barva.

Viz také:

definice barev, ImageBrushStyle


Metoda BrushColor

procedure BrushColor(color: Integer);

Metoda nastaví barvu  štětce pro kreslení v objektu Image dle  definovaných konstant. Při dalším kreslení ploch bude využívána nastavená barva.

Viz také:

definice barev, BrushStyle


Procedura ImageBrushStyle

procedure ImageBrushStyle(styl: Integer);

Procedura  nastaví  styl  vykreslování  ploch.  Okraje  plochy se vykreslují  dle  definice  barvy,  tloušťky  a  stylu  pera.  Pro zadávání je možné použít předdefinované konstanty:

---------------------------------------------------------

hodnota   konstanta     název stylu

---------------------------------------------------------

   1      bsSolid        vyplní oblast jednou barvou

   2      bsClear        vyplní oblast barvou pozadí

   3      bsHorizontal   vyplní oblast vodorovnými čarami

   4      bsVertical     vyplní oblast svislými čarami

   5      bsFDiagonal    diagonální čáry \\\\\\\

   6      bsBDiagonal    diagonální čáry ///////

   7      bsCross        vodorovné a svislé čáry

   8      bsDiagCross    vodorovné a svislé čáry diagonálně

---------------------------------------------------------

Viz také: ImageBrushColor


Metoda BrushStyle

procedure BrushStyle(styl: Integer);

Metoda objektu Image nastaví  styl  vykreslování  ploch.  Okraje  plochy se vykreslují  dle  definice  barvy,  tloušťky  a  stylu  pera.  Pro zadávání je možné použít předdefinované konstanty:

---------------------------------------------------------

hodnota   konstanta     název stylu

---------------------------------------------------------

   1      bsSolid        vyplní oblast jednou barvou

   2      bsClear        vyplní oblast barvou pozadí

   3      bsHorizontal   vyplní oblast vodorovnými čarami

   4      bsVertical     vyplní oblast svislými čarami

   5      bsFDiagonal    diagonální čáry \\\\\\\

   6      bsBDiagonal    diagonální čáry ///////

   7      bsCross        vodorovné a svislé čáry

   8      bsDiagCross    vodorovné a svislé čáry diagonálně

---------------------------------------------------------

Viz také: BrushColor


Procedura ImageClear

procedure ImageClear;

Provede  se  výmaz  obsahu  grafického  okna  bez  změny definice velikosti. Nastaví  současně bílou barvu plochy,  styl štětce pro plně vybarvené plochy, černou barvu pera, sílu čáry na jeden bod. Pokud  požadujete  současnou  změnu  velikosti  grafického  okna, použijte proceduru ImageInit.

Viz také: ImageInit


Procedura ImageFontColor

procedure ImageFontColor(color: Integer);

Procedura nastavuje  barvu fontu pro  výstup textů do  grafického okna  procedurou TextOut.  Pro zadání  barvy je  možné uvést  buď číselné vyjádření  v hodnotách RGB, nebo  lze použít výše uvedené konstanty.

Viz také:

definice barev, ImageFontName, ImageFontSize, ImageFontStyle


Metoda FontColor

procedure FontColor(color: Integer);

Metoda objektu Image nastavuje  barvu fontu pro  výstup textů metodou TextOut.  Pro zadání  barvy je  možné uvést  buď číselné vyjádření  v hodnotách RGB, nebo  lze použít předdefinované konstanty.

Viz také:

definice barev, FontName, FontSize, FontStyle


Procedura ImageFontName

procedure ImageFontName(font: String);

Procedura nastaví  zadaný font jako aktuální  pro výstup textů do grafického okna procedurou TextOut. Pokud zadaný font neexistuje, nastaví  systém  Windows  sám  přibližný  font. Nemění vlastnosti fontu pro formuláře !

Viz také:

ImageFontColor, ImageFontSize, ImageFontStyle


Metoda FontName

procedure FontName(font: String);

Metoda objektu Image nastaví  zadaný font jako aktuální  pro výstup textů metodou TextOut. Pokud zadaný font neexistuje, nastaví  systém  Windows  sám  přibližný  font.

Viz také:

FontColor, FontSize, FontStyle


Procedura ImageFontSize

procedure ImageFontSize(size: Integer);

Procedura  nastaví zadanou  velikost v  bodech jako  aktuální pro výstup  textů  do  grafického  okna  procedurou  TextOut.  Nemění vlastnosti fontu pro formuláře !

Viz také:

ImageFontColor, ImageFontName, ImageFontStyle


Metoda FontSize

procedure FontSize(size: Integer);

Metoda objektu Image nastaví zadanou  velikost v  bodech jako  aktuální pro další výstup  textů  do  grafické  plochy metodou TextOut.

Viz také:

FontColor, FontName, FontStyle


Procedura ImageFontStyle

procedure ImageFontStyle(style: Integer);

Procedura nastaví styl fontu pro  výstup textů do grafického okna procedurou  TextOut.  Je  možné  nastavit  tučné písmo, nakloněné písmo, podtržené a přeškrtnuté písmo. Pro zadávání stylu je možné použít numerickou hodnotu, nebo předdefinované konstanty:

------------------------------------------

hodnota   konstanta     popis stylu

------------------------------------------

   0      fsNormal      normální písmo

   1      fsBold        tučné písmo

   2      fsItalic      nakloněné písmo

   4      fsUnderline   podtržené písmo

   8      fsStrikeOut   přeškrtnuté písmo

------------------------------------------

Pokud  budete  chtít  nastavit  najednou  vícenásobný styl fontu, musíte zadat součet hodnot stylu.

Příklad:

Pro nastavení nakloněného podtrženého písma musíte zadat:

ImageFontStyle(6);      // (součet 2 + 4) nebo

ImageFontStyle(fsItalic + fsUnderline);

Viz také:

ImageFontColor, ImageFontName, ImageFontSize


Metoda FontStyle

procedure FontStyle(style: Integer);

Metoda objektu Image nastaví styl fontu pro  výstup textů metodou TextOut.  Je  možné  nastavit  tučné písmo, nakloněné písmo, podtržené a přeškrtnuté písmo. Pro zadávání stylu je možné použít numerickou hodnotu, nebo předdefinované konstanty:

------------------------------------------

hodnota   konstanta     popis stylu

------------------------------------------

   0      fsNormal      normální písmo

   1      fsBold        tučné písmo

   2      fsItalic      nakloněné písmo

   4      fsUnderline   podtržené písmo

   8      fsStrikeOut   přeškrtnuté písmo

------------------------------------------

Pokud  budete  chtít  nastavit  najednou  vícenásobný styl fontu, musíte zadat součet hodnot stylu.

Příklad:

Pro nastavení nakloněného podtrženého písma musíte zadat:

Image.FontStyle(6);      // (součet 2 + 4) nebo

Image.FontStyle(fsItalic + fsUnderline);

Viz také:

FontColor, FontName, FontSize


Procedura ImageFromClip

procedure ImageFromClip(x1, y1, x2, y2 : Integer);

Do grafického okna se přesune obsah schránky (clipboardu). Pozice levého horního rohu pro zobrazení  je zadána souřadnicemi x1, y1. Pravý dolní roh je zadán souřadnicemi x2, y2.

Pokud  budete  chtít  zobrazit  obsah  schránky  na  celou plochu grafického okna, zadejte příkaz:

ImageFromClip(0,0,GetMaxX,GetMaxY);

Viz také:

ImageToClip, ImageMove


Procedura ImageInit

procedure ImageInit(osax, osay: Integer);

Procedura inicializuje  grafické okno a nastaví  jeho velikost na rozměry osaX  x osaY. Nastaví  současně bílou barvu  plochy, styl štětce pro plně vybarvené plochy, černou barvu pera, sílu čáry na jeden  bod.  Inicializací  se   provede  výmaz  původního  obsahu grafického   okna.  Při   spuštění  programu   je  grafické  okno automaticky inicializováno ve velikosti 300 x 400 bodů.

Viz také: ImageClear


Procedura ImageLoad

procedure ImageLoad(files: String);

Procedura  načte  do  grafického  okna  obrázek  ze  souboru typu *.BMP.  Velikost grafického  okna bude  nastavena podle velikosti obrázku v souboru. Velikost obrázku  v bodech je možné zjistit po načtení funkcemi GetMaxX a GetMaxY.

Viz také: ImageSave


Procedura ImageMove

procedure ImageMove(x1, y1, x2, y2, x3, y3, x4, y4: Integer);

Procedura provádí  kopii části plochy grafického  okna na zadanou pozici.  Ohraničení  plochy,  která  se  má  kopírovat  je zadána souřadnicemi x1, y1, x2, y2.  Plocha se zkopíruje na místo zadané souřadnicemi x3,  y3, x4, y4. Neodpovídá-li  poměr stran zdrojové a cílové  plochy,  nebude  zkopírovaný  obraz  uříznut,  ale bude upraven (deformován)  do zadaných souřadnic.  To je možné  využít k mnoha  zajímavým efektům.  Například ke  zvětšení části  plochy apod.

Viz také:

ImageToClip, ImageFromClip


Procedura ImagePenColor

procedure ImagePenColor(color: Integer);

Procedura nastavuje barvu pera  (čáry) pro kreslení do grafického okna.  Pro  zadání  barvy  je  možné  uvést buď číselné vyjádření v hodnotách RGB, nebo lze použít výše uvedené konstanty.

Viz také:

definice barev, ImagePenStyle, ImagePenWidth


Metoda PenColor

procedure PenColor(color: Integer);

Metoda objektu Image nastavuje barvu pera  (čáry) pro další kreslení.  Pro  zadání  barvy  je  možné  uvést buď číselné vyjádření v hodnotách RGB, nebo lze použít předdefinované konstanty barev.

Viz také:

definice barev, PenStyle, PenWidth


Procedura ImagePenStyle

procedure ImagePenStyle(styl: Integer);

Procedura nastavuje druh čáry, kterou se bude kreslit.

-----------------------------------------------------

hodnota   konstanta      název stylu

-----------------------------------------------------

   1      psSolid        souvislá čára

   2      psDash         přerušovaná čára

   3      psDot          tečkovaná čára

   4      psDashDot      čerchovaná čára

   5      psDashDotDot   čerchovaná čára se dvěma tečkami

   6      psClear        neviditelná čára

-----------------------------------------------------

Viz také:

ImagePenColor, ImagePenWidth


Metoda PenStyle

procedure PenStyle(styl: Integer);

Metoda objektu Image nastavuje druh čáry, kterou se bude kreslit.

-----------------------------------------------------

hodnota   konstanta      název stylu

-----------------------------------------------------

   1      psSolid        souvislá čára

   2      psDash         přerušovaná čára

   3      psDot          tečkovaná čára

   4      psDashDot      čerchovaná čára

   5      psDashDotDot   čerchovaná čára se dvěma tečkami

   6      psClear        neviditelná čára

-----------------------------------------------------

Viz také:

PenColor, PenWidth


Procedura ImagePenWidth

procedure ImagePenWidth(width: Integer);

Procedura  nastavuje sílu  čáry v   bodech. Pozor  na to,  že při použití silnější čáry může styl čáry splynout do plné čáry.

Viz také:

ImagePenColor, ImagePenStyle


Metoda PenWidth

procedure ImagePenWidth(width: Integer);

Metoda objektu Image nastavuje sílu  čáry v   bodech. Pozor  na to,  že při použití silnější čáry může styl čáry splynout do plné čáry.

Viz také:

PenColor, PenStyle


Procedura ImagePrint

procedure ImagePrint(x1, y1, x2, y2 : Integer);

Procedura vytiskne  obsah grafického okna  na aktuálně nastavenou tiskárnu. Jako  parametry se udávají souřadnice  v bodech, kam se má  obrázek  vytisknout.  Tím  je  možné  dosáhnout  požadovaného roztažení obrazu. Pozor na to,  že různé tiskárny mohou mít různý stupeň rozlišení bodů na stránce.

Zadají-li se  nulové parametry, bude  obrázek vytisknut tak,  aby byl rovnoměrně umístěn na stránce  papíru. Nedojde přitom k žádné deformaci obrazu.


Procedura ImageSave

procedure ImageSave(files: String);

Procedura  uloží  obsah  grafického   okna  na  disk  do  souboru definovaného parametrem  files ve formátu  *.BMP. Jestliže soubor zadaného jména již existuje, bude přepsán.

Viz také: ImageLoad


Procedura ImageToClip

procedure ImageToClip(x1, y1, x2, y2 : Integer);

Část  grafického okna  zadaného souřadnicemi  levého horního rohu x1,  y1 a  pravého dolního  rohu x2,  y2 se  přesune do  schránky (clipboardu).

Pokud budete chtít přesunout  do schránky obsah celého grafického okna, zadejte příkaz:

ImageToClip(0,0,GetMaxX,GetMaxY);

Viz také: ImageFromClip


Procedura Line

procedure Line(x1, y1, x2, y2 : Integer);

V grafickém okně, případně v objektu Image  nakreslí  čáru  z  pozice  zadané  souřadnicemi  x1, y1 do pozice zadané  souřadnicemi  x2,  y2.  Čára  se  kreslí aktuálním stylem a aktuální barvou.  Grafický ukazatel se nastaví  na poslední bod nakreslené čáry. Příklad použití:

Line(10, 10, 60, 100);        // grafické okno

Image.Line(10, 10, 60, 100);  // Objekt Image

Viz také: LineTo, MoveTo


Procedura LineTo

procedure LineTo(x, y : Integer);

V grafickém okně, případně v objektu Image nkreslí čáru z pozice aktuálního ukazatele do definovaného bodu. Parametry x a  y definují koncový bod čáry.  Grafický ukazatel se nastaví na poslední bod kreslené čáry.

Příklad:

LineTo(60, 100);       // grafické okno

Image.LineTo(60, 100); // objekt Image

Viz také: Line, MoveTo


Procedura MoveTo

procedure MoveTo(x, y: Integer);

V grafickém okně, případně v objektu Image přemístí   grafický  ukazatel   do  definovaného   bodu  zadaného souřadnicemi x a y.

Příklad:

MoveTo(60, 100);        // grafické okno

Image.MoveTo(60, 100);  // objekt Image

Viz také: Line, LineTo


Procedura Pie

Pie(x1, y1, x2, y2, x3, y3, x4, y4: Integer);

V grafickém okně, případně v objektu Image nakreslí  kruhovou  výseč  -  část  plochy  elipsy  dle  zadaných souřadnic. Souřadnicemi  x1, y1, x2,  y2 jsou zadány  okraje plné elipsy,  pokud by  byla vykreslená  celá. Souřadnicemi  x3, y3 je uveden počátek vykreslování plochy a  souřadnicemi x4, y4 je udán konec vykreslení plochy proti směru hodinových ručiček.

Příklad pro kreslení do grafického okna:

Pie(0,0,100,100, 50,0,0,50);    {levý  horní čtvrtkruh}

Pie(0,0,100,100, 0,50,50,100);  {levý  dolní čtvrtkruh}

Pie(0,0,100,100, 100,50,50,0);  {pravý horní čtvrtkruh}

Pie(0,0,100,100, 50,100,100,50);{pravý dolní čtvrtkruh}

Pie(0,0,100,100, 100,50,0,50);  {horní půlkruh}

Pie(0,0,100,100, 0,50,100,50);  {dolní půlkruh}

Pie(0,0,100,100, 50,100,50,0);  {pravý půlkruh}

Pie(0,0,100,100, 50,0,50,100);  {levý  půlkruh}

Příklad pro kreslení do objektu Image:

Image.Pie(0,0,100,100, 50,0,0,50);  {levý  horní čtvrtkruh}


Procedura Point

procedure Point(x, y, w : Integer);

V grafickém okně, případně v objektu Image nakreslí na pozici zadané  souřadnicemi x, y bod, jehož velikost je zadaná parametrem w.  Bod se nakreslí aktuální barvou pera,  kterou  lze  nastavit  procedurou  ImagePenColor (grafické okno) nebo metodou PenColor (objekt Image). Bod není vykreslen  kružnicí,  ale   pravidelným  mnohoúhelníkem.

Příklad:

Point(100, 100, 2);


Procedura Rectangle

Rectangle(x1, y1, x2, y2 : Integer);

V grafickém okně, případně v objektu Image nakreslí  pravoúhelník.  Parametry  x1  a  y1 definují souřadnice levého  horního rohu  pravoúhelníku,  parametry  x2 a  y2 definují souřadnice pravého dolního rohu pravoúhelníku.

Příklad:

Rectangle(10, 10, 60, 60);

Viz také: RoundRect


Procedura RoundRect

RoundRect(x1, y1, x2, y2 : Integer);

V grafickém okně, případně v objektu Image nakreslí pravoúhelník  se zaoblenými hranami.  Parametry x1 a  y1 definují souřadnice levého  horního rohu pravoúhelníku, parametry x2 a  y2 definují souřadnice pravého  dolního rohu pravoúhelníku. Parametr  x3 udává  velikost  zakřivení  pravoúhelníku na  ose x, parametr y3 udává velikost zakřivení pravoúhelníku na ose y.

Příklad:

RoundRect(10, 10, 60, 60, 5, 5);

Viz také: Rectangle


Funkce TextHeight

function TextHeight(s: String) : Integer;

V grafickém okně, případně v objektu Image vrací výšku textu v bodech dle nastaveného fontu.  Proceduru je možné použít například pro orámování textu čarou.

Viz také:

TextWidth, TextOut


Procedura TextOut

procedure TextOut(x, y: Integer; Text: String);

V grafickém okně, případně v objektu Image zobrazí na  pozici x, y  textový řetězec zadaný v parametru  Text. Pro  zobrazení se  použije aktuálně  nastavený font.

Viz také:

TextHeight, TextWidth


Funkce TextWidth

function TextWidth(s: String) : Integer;

V grafickém okně, případně v objektu Image vrací šířku textu v bodech dle nastaveného fontu.  Proceduru je možné použít například pro orámování textu čarou.

Viz také:

TextHeight, TextOut


Procedura Triangle

procedure Triangle(x1, y1, x2, y2, x3, y3 : Integer);

Procedura nakreslí v grafickém okně, případně v objektu Image trojúhelník. Parametry  x1 a y1 definují první vrchol, parametry  x2 a y2  definují druhý vrchol  a parametry x3 a y3 definují třetí vrchol trojúhelníku.


1.15 - KNIHOVNA PRO PRÁCI S DATABÁZEMI

Používané  databáze jsou  v systému  KLONDAIK uloženy  ve formátu FoxPro.  Využívat  je  možné  i  třídění  dat  a  zápis  textu do memopoložek.  Syntaxe  příkazů  používaných  pro obsluhu databází vychází  přímo z  jazyka  FoxPro.  V mnohých  případech (například definice  filtrů) je  možné zadat  výraz přímo  v syntaxi  jazyka FoxPro.

DbfAppendBlank	- přidá prázdný záznam do databáze

DbfAppendFrom	- načte (přihraje) data z jiné databáze

DbfBinToFile	- převede obsah memopoložky do binárního souboru

DbfBof	- test začátku databázového souboru

DbfContinue	- pokračuje v hledání dalšího záznamu(viz DbfLocate)

DbfCopyFile	- kopíruje databázi do nového souboru

DbfCopyStru	- kopíruje strukturu databáze do nového souboru

DbfCopyToInfo	- kopíruje strukturu databáze do informační databáze

DbfCopyToText	- kopíruje databázi do textového souboru

DbfCount	- vrací počet záznamů dle nastaveného filtru

DbfCreateFrom	- založí novou databázi z informační databáze

DbfCreateInfo	- založí novou prázdnou informační databázi

DbfDelete	- označí záznam ke zrušení

DbfDeleted	- vrací informaci, zda je záznam určen ke zrušení

DbfEvalLog	- vrací výsledek logického databázového výrazu

DbfEvalNum	- vrací výsledek numerického databázového výrazu

DbfEvalStr	- vrací výsledek řetězcového databázového výrazu

DbfEvalTest	- testuje správnost databázového výrazu

DbfEof	- test konce databázového souboru

DbfFieldCount	- vrací počet položek (sloupců) databáze

DbfFieldDec	- vrací počet desetinných míst zadané položky

DbfFieldName	- vrací jméno položky dle pořadového čísla

DbfFieldType	- vrací typ databázové položky (N/C/L/M)

DbfFieldWidth	- vrací délku databázové položky

DbfFileLock	- uzamkne síťově celou databázi

DbfFileToBin	- načte obsah binárního souboru do memopoložky

DbfFound	- vrací informaci, zda bylo hledání úspěšné

DbfGo	- přesun na zadané číslo záznamu

DbfGoBottom	- přesun na konec databázového souboru

DbfGoTop	- přesun na začátek databázového souboru

DbfIndexTag	- založí nový index databáze

DbfLocate	- hledá záznam dle zadané podmínky

DbfLocked	- vrací informaci, zda je aktuální záznam uzamčen

DbfMemoCount	- vrací počet odstavců memopoložky

DbfMemoLength	- vrací délku memopoložky

DbfName	- vrací název souboru databáze

DbfPack	- fyzicky zruší záznamy označené k výmazu

DbfParamAdd	- přidá novou hodnotu parametru sestavy

DbfParamClear	- zruší všechny definované parametry sestavy

DbfParamCount	- vrací počet parametrů sestavy

DbfParamGet	- čte hodnotu parametru sestavy

DbfParamSet	- definuje hodnotu parametru sestavy pomocí indexu

DbfReadBin	- přečte binární obsah memopoložky databáze

DbfReadDat	- přečte datovou položku z databáze

DbfReadLog	- přečte logickou položku z databáze

DbfReadMem	- přečte textový obsah memopoložky databáze

DbfReadNum	- přečte numerickou položku z databáze

DbfReadStr	- přečte řetězcovou položku z databáze

DbfRecall	- obnoví platnost záznamu určeného ke zrušení

DbfRecCount	- vrací celkový počet záznamů v databázi

DbfRecLock	- uzamkne síťově aktuální záznam databáze

DbfRecNo	- vrací číslo aktuálního záznamu

DbfReindex	- obnoví indexování databáze

DbfReport	- vytiskne sestavu

DbfSeek	- hledá v databázi dle zadaného klíče

DbfSelect	- aktivace pracovní databázové oblasti

DbfSetDeleted	- nastaví, přístupnost zrušených záznamů

DbfSetExact 	- nastaví způsob hledání funkcí Seek

DbfSetFilter	- nastaví filtr databáze (výběr dle hodnot)

DbfSetOrder	- určí, který index bude aktivní

DbfSetSoftSeek - nastaví umístění ukazatele v databázi po Seek

DbfSkip	- přesun ukazatele v databázovém souboru

DbfTagArea	- dle zadaného jména indexu vrací jeho číslo

DbfTagName	- dle zadaného čísla indexu vrací jeho název

DbfUnlock	- odemyká uzamčené záznamy v síťovém zpracování

DbfUse	- otevře databázi

DbfWriteBin	- zapíše do memopoložky binární hodnotu

DbfWriteDat	- zapíše datovou hodnotu do položky databáze

DbfWriteLog	- zapíše logickou hodnotu do položky databáze

DbfWriteMem	- zapíše do memopoložky textovou hodnotu

DbfWriteNum	- zapíše numerickou hodnotu do položky databáze

DbfWriteStr	- zapíše řetězcovou hodnotu do položky databáze

DbfZap	- fyzicky zruší všechny záznamy databáze

Okno  s databází  máte možnost  ovládat z  programu následujícími procedurami (viz systémová knihovna):

DbfShow	- definuje zobrazení (viditelnost) okna s tabulkou

DbfForm	- nastaví velikost a umístění okna s databází


Procedura DbfAppendBlank

procedure DbfAppendBlank;

Příkaz  doplní do  otevřené  databáze  v otevřené  datové oblasti prázdný  záznam. Ukazatel  databáze se  nastaví současně  na nový záznam.


Funkce   DbfAppendFrom

function DbfAppendFrom(file: String; typ: Integer, filtr: String): Boolean;

Funkce načte  do aktuálního databázového souboru  data ze souboru uvedeného v  parametru file. Typ  načítaných dat a  způsob jejich načítání je uveden v parametru typ dle následující tabulky:

-----------------------------------------------------------

typ popis dat

-----------------------------------------------------------

 1  databázový soubor FoxPro

 2  ASCII soubor s oddělením položek čárkami(CDF)

 3  ASCII soubor s pevnou délkou záznamů jako databáze SDF)

-----------------------------------------------------------

Pokud  se  provádí  načtení  dat  z  databázového  souboru, budou převedeny pouze data se stejným názvem položek databáze.

V  souboru typu  CDF (comma date  format) jsou jednotlivé  datové položky   odděleny   čárkami.   Řetězce   jsou   přitom   uvedeny v uvozovkách.   Jeden  řádek   souboru  představuje   jednu  větu databáze. Řádky mohou mít tudíž rozdílnou délku.

Soubor typu SDF (system date format) je textový soubor, ve kterém jsou položky databáze uloženy vždy se stejnou délkou.

Při používání  funkce musíte být opatrní,  aby nedošlo ke zničení databáze.  Pokud  neodpovídá  řazení  položek databáze načítanému textovému  souboru, mohlo  by  dojít  k chybnému  načtení položek databáze a tím i k jejímu totálnímu znehodnocení.

Převáděná  data  mohou  být  omezena  filtrem  zadaným  podmínkou v parametru  filtr.  Podmínka  filtru  je  logický  výraz  zadaný v syntaxi jazyka  xBase. Pokud se uvede  prázdný řetězec, nebudou načítaná dat žádným způsobem filtrována.

Příklad:

DbfAppendFrom("C:\DATA\BBB.TXT", 2, "");

if DbfAppendFrom("C:\DATA\AAA.DBF", 1, "ROK > 1997") then

   Writeln("Načtení proběhlo v pořádku");


Procedura DbfBinToFile

procedure DbfBinToFile(field: string; file: string);

Procedura  převede   obsah  memopoložky  do   obecného  binárního souboru. Parametr field udává jméno memopoložky aktuálně otevřené databáze,  parametr file  určuje jméno  souboru, do  kterého bude memopoložka   převedena.   Memopoložka    není   převodem   nijak upravována, její  rozsah je omezen  velikostí do 16  Mb. Kontrolu úspěšnosti   převodu  je   možné  provést   porovnáním  velikosti memopoložky  (DbfMemoLength)  a   velikosti  vytvořeného  souboru (FileSize).

Příklad:

DbfBinToFile('popis', 'navod.txt');

if FileSize('navod.txt') = DbfMemoLength('popis') then

  Writeln('Převedlo se v pořádku !');

Viz také:

DbfFileToBin, DbfMemoLength, Filesize


Funkce DbfBof

function DbfBof : Boolean;

Funkce vyhodnocuje, zda je  ukazatel databáze nastaven před první záznam databáze. Funkce se používá  například velmi často v cyklu pro  zpracování   každého  záznamu  databáze   směrem  k  počátku databáze. Pokud  není v aktivní databázové  oblasti otevřen žádný soubor, je rovněž vrácena hodnota False.

Příklad:

While not DbfBof do            {dokud není začátek databáze}

begin

   Writeln(DbfReadStr("NAZ")); {vypíše obsah položky NAZ}

   DbfSkip(-1);                {jdi na předchozí záznam}

end;

Viz také:

DbfEof, DbfSkip


Funkce DbfContinue

function DbfContinue: Real;

Pokračuje v hledání dalšího  záznamu zadaného podmínkou ve funkci DbfLocate.  Funkce  vrací  v  případě  úspěšného  nalezení  číslo záznamu, jinak vrací nulovou  hodnotu. Nenalezení záznamu je také indikováno funkcí DbfEof.

Příklad:

DbfLocate("CENA > 100");          {hledá v databázi cenu>100}

While not DbfEof do               {dokud není konec databáze}

begin

   Writeln(DbfReadStr("NAZEV"));  {vypíše obsah položky NAZEV}

   DbfContinue;                   {hledá další záznam}

end;

Viz také: DbfLocate


Funkce DbfCopyFile

function DbfCopyFile(file: String) : Boolean;

Používá se na kopírování otevřené databáze do jiného databázového souboru. Jméno  nové databáze je  uvedeno parametrem file.  Pokud databáze stejného jména již existuje, bude bez varování nahrazena novou  databází.   Pokud  je  rozsah   aktuální  databáze  omezen nastaveným  filtrem,  budou  do  nové  databáze  kopírovány pouze záznamy vyhovující zadanému filtru.

Pokud  obsahuje  databáze  záznamy  označené  ke zrušení, podléhá kopírování těchto záznamů nastavení přepínače DbfSetDeleted.

Funkce vrací  v případě úspěšně provedené  kopie logickou hodnotu True.

Viz také: DbfCopyToText


Funkce DbfCopyStru

function DbfCopyStru(file: String) : Boolean;

Založí novou,  prázdnou databázi se  strukturou výchozí databáze. Jméno  nové databáze  se zadává  v parametru  file. Pokud  soubor stejného  jména již  existuje,  bude  přepsán bez  varování novým obsahem.  Funkce  vrací   logickou  hodnotu  udávající  úspěšnost kopírování struktury databáze.

Viz také: DbfCopyFile


Procedura DbfCopyToInfo

procedure DbfCopyToInfo(f: String);

Procedura založí  novou informační databázi  obsahující strukturu databáze  otevřené   v  aktuální  databázové   oblasti.  Založená informační databáze  obsahuje v každém  svém záznamu popis  jedné položky  databáze,  ze  které  byla  založena.  Obsah  informační databáze  můžete potom  běžným způsobem  editovat, přidávat popis nových  položek,  případně  zrušit   položky,  které  nemají  být následně  v  databázi  obsaženy.  Po  provedení  změn  informační databáze je  možné vytvořit funkcí  DbfCreateFrom novou, prázdnou databázi se strukturou dle obsahu informační databáze. Informační databáze může tedy sloužit k vytvoření nové databáze, případně ke změnám struktury databáze příkazy z programu.

Struktura informační databáze:

-------------------------------------

jméno položky   typ   délka  desetiny

-------------------------------------

FIELD_NAME       C     10       0

FIELD_TYPE       C      1       0

FIELD_LEN        N      5       0

FIELD_DEC        N      3       0

-------------------------------------

Viz také:

DbfCreateFrom, DbfCreateInfo


Funkce DbfCopyToText

function DbfCopyToText(file: String; typ: Integer) : Boolean;

Kopíruje  aktuální  databázi  do  textového  ASCII souboru. Jméno souboru je  uvedeno parametrem file. Pokud  soubor stejného jména již existuje,  bude přepsán bez varování  novým obsahem. Pokud je rozsah  databáze omezen  nastaveným filtrem,  budou do  textového souboru  převedeny  pouze  záznamy  vyhovující  zadanému  filtru. Funkce  vrací  logickou  hodnotu  udávající  úspěšnost  vytvoření textového souboru.

Pokud  obsahuje  databáze  záznamy  označené  ke zrušení, podléhá kopírování těchto záznamů nastavení přepínače DbfSetDeleted.

Uspořádání dat v textovém souboru je určeno parametrem typ, který udává  způsob  oddělení   jednotlivých  položek  dle  následující tabulky:

-------------------------------------------------------------

typ  způsob přenosu do textového souboru

-------------------------------------------------------------

 1   ASCII soubor s oddělením položek čárkami (CDF)

 2   ASCII soubor s pevnou délkou záznamů jako databáze (SDF)

-------------------------------------------------------------

Pokud zadáte oddělení jednotlivých  položek čárkou (CDF), vznikne textový  soubor, ve  kterém bude  jedna řádka  textu představovat jeden  záznam z  databáze. Položky  z věty  budou přitom odděleny čárkami, řetězcové položky budou  umístěny v uvozovkách. Datum se uvede číselně  ve tvaru RRRRMMDD,  logická hodnota T  (True) nebo F (False).  Každá řádka  textového souboru  může mít  proto jinou délku.

Při zadání  oddělení typu SDF  bude vytvořen textový  soubor, kde bude jedna řádka představovat jeden záznam databáze. Položky věty nebudou  nijak odděleny,  zapíší se  za sebe  v délce položek dle zadání  struktury databáze.  Díky  tomu  budou mít  všechny řádky textového souboru stejnou délku  rovnou součtu délky jednotlivých položek databáze.


Funkce DbfCount

function DbfCount: Integer;

Funkce vrací počet záznamů databáze, které odpovídají nastavenému filtru.  V závislosti  na nastavení,   zda se  mají brát  v úvahu záznamy určené ke zrušení započítává i záznamy určené ke zrušení.

Viz také:

DbfDelete, DbfRecCount, DbfSetDeleted, DbfSetFilter


Funkce DbfCreateFrom

function DbfCreateFrom(f: String) : Boolean;

Funkce  založí   novou,  prázdnou  databázi   se  strukturou  dle informační databáze, která obsahuje  jména položek nové databáze, jejich typy a délku. Jméno  nové databáze se zadává parametrem s, funkce  vrací  logický   příznak  úspěšnosti  založení  databáze. Informační databáze  obsahující popis položek  nové databáze musí být otevřena v aktuální databázové oblasti.

Pokud budete editovat informační  databázi, musíte dodržovat daná omezení struktury databáze, to je  například typ položek pouze C, N,  D, L  nebo M.  Délka numerické  položky smí  být maximálně 19 znaků. Počet  desetinných míst může být  uveden pouze u numerické položky. Položka typu  datum musí mít délku 8,  memo položka musí mít délku 10, logická položka musí mít délku 1. Pokud bude uveden nepřípustný údaj, nebude databáze založena a funkce DbfCreateFrom vrátí hodnotu False.

Informační  databázi  je  možné  založit  pro  další editaci jako prázdnou  databázi  procedurou  DbfCreateInfo.  Další možností je vytvořit    informační    databázi    procedurou    DbfCopyToInfo z existující  databáze.  V  takovém  případě  již bude informační databáze  obsahovat  popis  struktury  databáze,  ze  které  byla vytvořena a je možné provést pouze úpravy.

Viz také:

DbfCopyToInfo, DbfCreateInfo


Procedura DbfCreateInfo

procedure DbfCreateInfo(f: String);

Procedura  se  používá  pro  založení  nové,  prázdné  informační databáze  se  jménem  zadaným  v  parametru  f.  Založená prázdná informační databáze bude mít následující strukturu:

-------------------------------------

jméno položky   typ   délka  desetiny

-------------------------------------

FIELD_NAME       C     10       0

FIELD_TYPE       C      1       0

FIELD_LEN        N      5       0

FIELD_DEC        N      3       0

-------------------------------------

Po otevření takto vytvořené informační databáze ji můžete naplnit popisem   požadované   struktury   a   následným  voláním  funkce DbfCreateFrom   vytvořit   novou   databázi   zadané   struktury. Informační databáze může tedy  sloužit k vytvoření nové databáze, případně ke změnám struktury databáze příkazy z programu.

Viz také:

DbfCopyToInfo, DbfCreateFrom


Procedura DbfDelete

procedure DbfDelete;

Označí aktuální záznam databáze ke  zrušení. Zatím nedojde k jeho fyzickému  zrušení.   V  závislosti  na  tom   zda  je  nastavena dostupnost záznamů  určených ke zrušení  (DbfSetDeleted) je možné se záznamy určenými ke zrušení dále pracovat.

Záznamy  určené  ke  zrušení  jsou  v  databázovém okně zobrazeny červenou barvou.  Obnova záznamu určeného  ke zrušení se  provede procedurou   DbfRecall.   Fyzické   zrušení   označených  záznamů z databáze se provede procedurou DbfPack. Informaci o tom, zda je záznam  označen ke  zrušení získáte  použitím funkce  DbfDeleted. Kompletní  zrušení všech  záznamů  z  databáze se  provede funkcí DbfZap.

Viz také:

DbfDeleted, DbfSetDeleted, DbfPack, DbfZap


Funkce DbfDeleted

function DbfDeleted: Boolean;

Funkce  vrací informaci  o tom,  zda je  aktuální záznam databáze označen ke zrušení.

Viz také:

DbfDelete, DbfPack, DbfRecall, DbfSetDeleted


Funkce DbfEvalLog

function DbfEvalLog(vyraz: String) : Boolean;

Funkce  vyhodnotí  logický  výraz  zadaný  parametrem vyraz přímo v syntaxi jazyků  xBase. Ve výrazu lze  použít a vyhodnotit přímo i položky  databáze. Funkce  vrací logickou  hodnotu dle výsledku vyhodnocení výrazu. Pokud není v aktuální datové oblasti otevřena žádná databáze, je vrácena vždy hodnota  False a to bez ohledu na zadaný výraz. Stejně tak je vrácena hodnota False, pokud je zadán chybný logický výraz.

Příklad:

if DbfEvalLog("DELETED()") then

begin

   Writeln("Záznam je určen ke zrušení")

end else

   Writeln("Záznam není určen ke zrušení");

Viz také:

DbfEvalNum, DbfEvalStr, DbfEvalTest, DbfReadLog, výrazy xBase


Funkce  DbfEvalNum

function  DbfEvalNum(vyraz: String) : Real;

Funkce  vyhodnotí numerický  výraz zadaný  parametrem vyraz přímo v syntaxi jazyků  xBase. Ve výrazu lze  použít a vyhodnotit přímo i položky databáze. Funkce vrací  numerickou hodnotu dle výsledku vyhodnocení výrazu. Pokud není v aktuální datové oblasti otevřena žádná databáze, je vrácen vždy nulový výsledek a to bez ohledu na zadaný  výraz. Stejně  tak je  vrácena nulová  hodnota, pokud  je zadán chybný numerický výraz.

Příklad:

Writeln(DbfEvalNum('a+b'));    {vrátí součet položek databáze}

Writeln(DbfEvalNum('LEN(s)')); {vrátí délku položky databáze s}

Viz také:

DbfEvalLog, DbfEvalStr, DbfEvalTest, DbfReadNum, výrazy xBase


Funkce DbfEvalStr

function DbfEvalStr(vyraz: String) : String;

Funkce  vyhodnotí řetězcový  výraz zadaný  parametrem vyraz přímo v syntaxi jazyků xBase. Ve výrazu  lze použít k vyhodnocení přímo položky databáze. Funkce vrací  výsledek typu string dle výsledku vyhodnocení výrazu. Pokud není v aktuální datové oblasti otevřena žádná databáze, je vrácen vždy jako výsledek prázdný řetězec a to bez ohledu na zadaný výraz. Stejně tak je vrácen prázdný řetězec, pokud je zadán chybný výraz.

Příklad:

Writeln(DbfEvalStr('DTOC(DATE())'));   {vrátí aktuální datum}

Writeln(DbfEvalStr('SUBS(POL,1,12)')); {vrátí začátek položky}

Viz také:

DbfEvalLog, DbfEvalNum, DbfEvalTest, DbfReadStr, výrazy xBase


Funkce DbfEvalTest

function DbfEvalTest(vyraz: String) : Integer;

Funkce  zkontroluje  syntaktickou   správnost  výrazu  zadávaného v jazyce xBase.  Výsledek funkce určí  správnost výrazu, případně typ výsledku zadaného výrazu dle následující tabulky:

---------------------------------

výsledek  typ výrazu jazyka xBase

---------------------------------

   0      chybný výraz

   1      řetězcový výraz

   2      numerický výraz

   3      logický výraz

---------------------------------

Viz také:

DbfEvalLog, DbfEvalNum, DbfEvalStr, výrazy xBase


Funkce DbfEof

function DbfEof: Boolean;

Funkce vyhodnocuje, zda je ukazatel databáze nastaven za poslední záznam  databáze.  Funkce  se  používá  velmi  často  v cyklu pro zpracování každého záznamu databáze.

Příklad:

While not DbfEof do               {dokud není konec databáze}

begin

   Writeln(DbfReadStr("NAZEV"));  {vypíše obsah položky NAZEV}

   DbfSkip(1);                    {jdi na další záznam}

end;

Viz také:

DbfBof, DbfSkip


Funkce DbfFieldCount

function FieldCount: Integer;

Funkce   vrací  počet   položek  databáze   otevřené  v  aktuální databázové oblasti.

Viz také:

DbfFieldDec, DbfFieldName, DbfFieldType, DbfFieldWidth


Funkce DbfFieldDec

function DbfFieldDec(s: String) : Integer;

Funkce  vrací počet  desetinných míst  numerické položky zadaného jména v otevřené aktuální databázové oblasti.

Viz také:

DbfFieldCount, DbfFieldName, DbfFieldType, DbfFieldWidth


Funkce DbfFieldName

function DbfFieldName(i: Integer) : String;

Funkce vrací  jméno položky databáze dle  zadání jejího pořadí ve struktuře databáze v otevřené aktuální databázové oblasti.

Viz také:

DbfFieldCount, DbfFieldDec, DbfFieldType, DbfFieldWidth


Funkce DbfFieldType

function DbfFieldType(s: String) : String;

Funkce  vrací typ  databázové položky  zadaného jména  v otevřené aktuální databázové  oblasti. Typ položky  udává jaké údaje  může položka obsahovat: C (řetězec), N  (číslo), D (datum), L (logická hodnota), M (memo položka).

Viz také:

DbfFieldCount, DbfFieldDec, DbfFieldName, DbfFieldWidth


Funkce DbfFieldWidth

function DbfFieldWidth(s: String) : Integer;

Funkce vrací  délku databázové položky zadaného  jména v otevřené aktuální databázové oblasti.

Viz také:

DbfFieldCount, DbfFieldDec, DbfFieldName, DbfFieldType


Funkce DbfFileLock

function DbfFileLock: boolean;

Funkce  se používá  pro uzamčení  aktuálního databázového záznamu pro síťový přístup. Po uzamčení  není možné záznam z jiné stanice editovat.  Uzamčení je  funkční také  pro soubor  otevřený v jiné databázové oblasti.  Pokud proběhlo uzamčení  databáze v pořádku, je  vrácena hodnota  True. Funkci  je vhodné  používat pouze  pro rozsáhlé  změny,   například  indexaci  a   podobně.  Nezamykejte zbytečně  celou databázi,  v případě  nutnosti používejte  raději uzamčení záznamu funkcí DbfRecLock.

Informaci  o tom,  zda je  aktuální záznam  uzamčen vám  poskytne funkce  DbfLocked.   Záznam  se  odemkne   procedurou  DbfUnlock. Databáze se  musí odemknou ještě  před svým uzavřením.  Pokud tak nebude provedeno,  zůstane databáze uzamčena  a je nutné  nejprve uzavřít  databázi  na  všech  stanicích,  čímž  bude pro následné použití již odemčena.

Příklad:

if DbfFileLock then

begin

   DbfPack;

   DbfUnlock;

end else

   Writeln('Chyba uzamčení databáze');

Viz také:

DbfLocked, DbfRecLock, DbfUnlock


Procedura DbfFileToBin

procedure DbfFileToBin(field: string; file: string);

Procedura  načte obsah  souboru do  memopoložky databáze. Položka databáze je určena parametrem field,  soubor je zadán v parametru file. Velikost převáděného souboru je  omezena velikostí do 16 Mb dat.  Kontrolu  správnosti  přenosu  je  možné provést porovnáním velikosti  memopoložky  (DbfMemoLength)  a  velikosti vytvořeného souboru (FileSize).

Příklad:

DbfFileToBin('popis', 'navod.txt');

if FileSize('navod.txt') = DbfMemoLength('popis') then

  Writeln('Převedlo se v pořádku !');

Viz také:

DbfBinToFile, DbfMemoLength, Filesize


Funkce DbfFound

function DbfFound: Boolean;

Vrací  informaci  o  tom,   zda  bylo  poslední  hledání  záznamu v databázi  dle klíče  funkcí DbfSeek  úspěšné. Pokud  ano, vrací hodnotu  True. Pokud  nebylo hledání  úspěšné, případně  jestliže nebylo hledání v aktuální  datové oblasti provedeno, vrací funkce hodnotu False.

Výsledek hledání je závislý na nastavení přepínačů DbfSetExact a DbfSetSoftSeek.

Příklad:

DbfSetOrder("NAZ");   {nastaví klíč dle názvu}

DbfSeek("TELEVIZE");  {hledá v databázi dle klíče text TELEVIZE}

if DbfFound then

   Writeln("Záznam byl nalezen");

Viz také: DbfSeek


Procedura DbfGo

procedure DbfGo(rec: Integer);

Nastaví  ukazatel v  databázi na  určené číslo  záznamu. Ignoruje přitom  nastavený filtr  a nastavení  přístupnosti pouze  záznamů neoznačených ke zrušení.

Viz také:

DbfGoTop, DbfGoBottom, DbfSetDeleted


Procedura DbfGoBottom

procedure DbfGoBottom;

Nastaví  ukazatel  v  databázi  na  poslední  záznam.  Pokud není nastaven index databáze, bude se jednat o fyzicky poslední záznam dle pořadí  zápisu do databáze.  Pokud bude nastaven  index, bude nastaven poslední záznam dle nastaveného indexu.

Viz také:

DbfGo, DbfGoTop


Procedura DbfGoTop

procedure DbfGoTop;

Nastaví ukazatel v databázi na  první záznam. Pokud není nastaven index databáze, bude se jednat  o fyzicky první záznam dle pořadí zápisu  do databáze.  Pokud  bude  nastaven index,  bude nastaven první záznam dle nastaveného indexu.

Viz také:

DbfGo, DbfGoBottom


Funkce DbfIndexTag

function DbfIndexTag(name, key: String) : Integer;

Založí nový index v indexovém  souboru se stejným jménem, jako má databáze, s  příponou souboru CDX.  Tento indexový soubor  (pokud existuje)  se otevírá  společně s  databází. V  indexovém souboru typu  CDX může  být uloženo  najednou několik  indexů pro hledání funkcí DbfSeek. Každý index je při svém vytváření pojmenován a je možné se mezi němi funkcí DbfSetOrder přepínat.

Indexy se používají pro rychlé vyhledávání v databázi, řazení dle velikosti nebo podle abecedy.

Jméno indexu pomocí kterého se  lze následně mezi indexy přepínat se  zadává parametrem  name.  Výraz,  podle kterého  jsou záznamy seřazeny  je  uveden  v  parametru  key.  Výraz pro indexování se zadává  přímo jazyce  xBase a  měl by  být řetězcového  typu. Pro indexování čísel použijte funkci  STR(), pro převod data použijte funkci DTOS(). Uspořádání indexu je vždy vzestupné.

Každý  index  je  dostupný  buď  svým  jménem  zadaným  při  jeho vytváření, případně pořadovým  číslem svého vytvoření. Doporučuje se přitom používat raději názvu indexu.

Příklad:

DbfIndexTag("NAZ","UPPER(NAZ)");  {nastaví index dle položky NAZ}

DbfIndexTag("DAT","DTOC(DAT)");   {nastaví index dle položky DAT}

DbfIndexTag("XXX","NAZ+STR(CENA)");

Viz také:

DbfReindex, DbfTagArea, DbfTagName, výrazy xBase


Funkce DbfLocate

function DbfLocate(vyraz: String) : Real;

Hledá  záznam  databáze  podle  zadané  podmínky.  Funkce se může použít i  pro neindexované databáze,  protože se hledání  provádí sekvenčně pro každý záznam  vyhodnocováním zadané podmínky. Výraz pro  hledání se  zadává parametrem  vyraz přímo  v jazyce  xBase. Hledání se  provádí vždy od  pozice ukazatele databáze,  dokud se nenalezne záznam  vyhovující zadané podmínce. Na  tento záznam je následně nastaven ukazatel databáze.  V případě neúspěchu hledání je  ukazatel  databáze  nastaven   za  poslední  záznam  databáze a následné volání  funkce DbfEof vrací  hodnotu True. Pokud  bylo hledání úspěšné, je možné hledat další záznam dle stejné podmínky funkcí DbfContinue.

Funkce vrací v případě úspěšného hledání číslo nalezeného záznamu a následná funkce DbfEof vrací hodnotu False.

Příklad:

DbfLocate("UPPER(SUBS(NAZ,1,3))='FAX'"); {složitější hledání}

DbfLocate("CENA > 100");             {hledá v databázi cenu>100}

While not DbfEof do                  {dokud není konec databáze}

begin

   Writeln(DbfReadStr("NAZEV"));     {vypíše obsah položky NAZEV}

   DbfContinue;                      {hledá další záznam}

end;

Viz také:

DbfContinue, DbfEof, výrazy xBase


Funkce DbfLocked

function DbfLocked: boolean;

Funkce  se používá  pro kontrolu,  zda je  při síťovém zpracování aktuální databázový záznam uzamčen.  V takovém případě není možné se  záznamem  pracovat  a  je  nutné  vzniklou situaci programově ošetřit.

Příklad:

if DbfLocked then

   DbfWriteNum('cena', 123);

else

   Writeln('Nelze, záznam je blokován');

Viz také:

DbfFileLock, DbfRecLock, DbfUnlock


Funkce DbfMemoCount

function DbfMemoCount(field: string): integer;

Funkce vrací počet odstavců databázové memopoložky. Odstavec je v memopoložce ukončen znakem konce  řádku. Maximální velikost takto zpracovávané  memopoložky  může  být  maximálně  64  Kb. Pokud je vrácena záporná hodnota, byl překročen uvedený rozsah.

UPOZORNĚNÍ:

Pokud budete chtít používat funkci  DbfMemoCount v cyklu, bylo by vhodné pro  rychlejší zpracování přečíst  délku memopoložky pouze jednou a uložit ji do proměnné k dalšímu použití.

Příklad:

{kompletní výpis memopoložky do textového výstupu}

Procedure vypis;

Var x, len: integer;

begin

   z := DbfMemoCount('poznamka');

   if z > 0 then

   begin

      ConsoleClear;

      for x:= 1 to z do

          Writeln(DbfReadMem('poznamka', x));

   end else

       Writeln('Překročen rozsah memopoložky');

   end;

end;

Viz také:

DbfMemoLength, DbfReadMem, DbfReadBin


Funkce DbfMemoLength

function DbfMemoLength(field: string): integer;

Funkce  vrací  délku  memopoložky  databáze.  Maximální  povolený rozsah memopoložky  je do 16  Mb. Pokud budete  chtít zpracovávat memopoložku  po odstavcích,  nesmí její  rozsah při  čtení funkcí DbfReadMem přesáhnout  64 Kb. Větší rozsah  je možný načíst pouze funkcí DbfReadBin v binárním tvaru  a dál ji případně zpracovávat funkcemi pro práci s řetězci.

Viz také:

DbfMemoCount, DbfReadBin, DbfReadMem


Funkce DbfName

function DbfName : String;

Vrací   jméno   otevřeného   databázového   souboru.  Pokud  není v aktuální  datové  oblasti  otevřena  žádná  databáze  je vrácen prázdný řetězec.

Viz také: DbfUse


Procedura DbfPack

procedure DbfPack;

Zruší fyzicky  z databáze záznamy  označené ke zrušení.  Současně aktualizuje indexy.

Viz také:

DbfDelete, DbfRecall, DbfZap


Procedura DbfParamAdd

Procedure DbfParamAdd(param: variant);

Procedura přidává  sestavě parametry, které je  možné zahrnout do sestavy.  Parametry  naleznete  při   návrhu  sestavy  v  záložce 'Parametry'.  Možné je  definovat maximálně  100 parametrů, které zůstávají v  platnosti po celou  dobu spuštění systému  KLONDAIK, nebo do jejich výmazu procedurou DbfParamClear.

Parametry  jsou  funkcí  DbfParamAdd   přidávány  vždy  na  konec seznamu.  Seznam  parametrů  je   tak  vždy  prodloužen  o  jeden parametr.  Pokud potřebujete  zadat parametr  s určitým  indexem, případně provést změnu již zadaného parametru, můžete také učinit procedurou DbfParamSet.

Parametry  je možné  zadávat bez  ohledu na  to, zda  je otevřena databáze. Parametry jsou společné pro všechny databázové oblasti. Je možné je proto také využít i k jiným účelům.

Viz také:

DbfParamClear, DbfParamCount, DbfParamGet, DbfParamSet, DbfReport


Procedura DbfParamClear

procedure DbfParamClear;

Procedura  zruší  všechny  parametry  sestavy  zadané  procedurou DbfParamAdd nebo DbfParamSet.

Viz také:

DbfParamAdd, DbfParamCount, DbfParamGet, DbfParamSet, DbfReport


Funkce DbfParamCount

function DbfParamCount;

Funkce vrací počet definovaných parametrů sestavy.

Viz také:

DbfParamAdd, DbfParamClear, DbfParamGet, DbfParamSet, DbfReport


Funkce DbfParamGet

function DbfParamGet(index: Integer) : variant;

Funkce  čte hodnotu  parametru sestavy  dle zadaného  indexu. Při tisku sestavy není funkci nutné  používat, protože parametr je na sestavu umístěn automaticky dle  zadání v návrhu tiskové sestavy. Parametry   jsou   při   návrhu   sestavy   seskupeny  v  záložce 'Parametry'.

Pořadové  číslo  požadovaného  parametru  se  zadává  v parametru index.  Pokud parametr  se zadaným  indexem neexistuje,  je vrácen prázdný řetězec.

Funkci lze ve spojení s procedurou DbfParamSet použít například k uložení libovolných  hodnot využitelných i  mimo sestavu. Provádí částečnou    duplikaci   systémových    proměnných   definovaných procedurou  SysVarSet.  V  tomto  případě  je  ale  čtení  hodnot prováděno  pomocí indexu,  čili  podobně  jako u  proměnných typu ARRAY.

Viz také:

DbfParamAdd, DbfParamClear, DbfParamCount, DbfParamSet, DbfReport


Procedura DbfParamSet

Procedure DbfParamSet(index: Integer; param: variant);

Procedura přidává  sestavě parametry, které je  možné zahrnout do sestavy.  Parametry  naleznete  při   návrhu  sestavy  v  záložce 'Parametry'.  Možné je  definovat maximálně  100 parametrů, které zůstávají v  platnosti po celou  dobu spuštění systému  KLONDAIK, nebo do jejich výmazu procedurou DbfParamClear. Zadané parametry jsou společné pro všechny sestavy tisknuté z databázového okna, případně i z aplikace sestavené na formuláři.

Parametry  jsou  funkcí  DbfParamAdd  přidávány  na  místo zadané parametrem index.  Parametry je možné  zadávat bez ohledu  na to, zda  je otevřena  databáze. Parametry  jsou společné  pro všechny databázové oblasti.

POZOR:

Pokud  se  zadá  index  parametru  větší  než  dosud zadaný počet parametrů, jsou případně parametry s menším indexem, které nebyly dosud definovány automaticky deklarovány jako prázdný řetězec.

Viz také:

DbfParamAdd, DbfParamClear, DbfParamCount, DbfParamGet, DbfReport


Funkce DbfReadBin

function DbfReadBin(field: string): string;

Funkce čte  obsah zadané memopoložky  databáze. Její velikost  je omezena do 16 Mb. Memopoložka se načítá bez jakýchkoliv úprav, je proto  převedena  v  přesném  binárním  tvaru  a  může  obsahovat libovolné znaky.

Viz také:

DbfMemoLength, DbfReadMem, DbfBinToFile


Funkce DbfReadDat

function DbfReadDat(field: String) : String;

Funkce vrací hodnotu zadané datumové položky databáze. Pokud není v aktuální datové  oblasti otevřena žádná  databáze, vrací funkce prázdný řetězec.  Stejně tak je  vrácen prázdný řetězec  pokud se zadá jméno  neexistující položky databáze,  případně pokud zadaná položka není datumového typu.

Příklad:

WRITELN(DbfReadDat("DATUM"));

Viz také:

DbfEvalStr, DbfReadLog, DbfReadNum, DbfReadStr


Funkce DbfReadLog

function DbfReadLog(field: String) : Boolean;

Funkce vrací hodnotu zadané  logické položky databáze. Pokud není v aktuální datové  oblasti otevřena žádná  databáze, vrací funkce hodnotu False. Stejně tak je  vrácena hodnota False pokud se zadá jméno  neexistující  položky   databáze,  případně  pokud  zadaná položka není logického typu.

Příklad:

if DbfReadLog("FAK") then

   WRITELN("Faktura byla vystavena");

Viz také:

DbfEvalLog, DbfReadDat, DbfReadNum, DbfReadStr


Funkce DbfReadMem

function DbfReadMem(field: string; index: integer): string;

Funkce  načte memopoložku  zadanou parametrem  field. Memopoložka nesní  mít v  tomto případě  rozsah větší  než 64 Kb. Memopoložku obsahující text je možné načítat postupně po odstavcích. Pořadové číslo  indexu se  udává parametrem  index v  pořadí od  jedničky. Pokud  budete chtít  načíst najednou  celou memopoložku,  zadejte nulový index. V tomto případě  bude z načteného řetězce odstraněn znak  #10  pro  možnost  zobrazení  v  textovém  výstupním  okně. Kompletní memopoložku  bez jakékoliv konverze  do délky 16  Mb je možné načíst funkcí DbfReadBin.

Příklad:

{kompletní výpis memopoložky do textového výstupu}

Procedure vypis;

Var x, z: integer;

begin

   z := DbfMemoCount('poznamka');

   if z > 0 then

   begin

      ConsoleClear;

      for x:= 1 to z do

          Writeln(DbfReadMem('poznamka', x));

   end else

       Writeln('Překročen rozsah memopoložky');

   end;

end;

Viz také:

DbfMemoCount, DbfMemoLength, DbfReadBin


Funkce DbfReadNum

function DbfReadNum(field: String) : Real;

Funkce  vrací hodnotu  zadané numerické  položky databáze.  Pokud není  v aktuální  datové oblasti  otevřena žádná  databáze, vrací funkce  nulovou hodnotu.  Stejně  tak  je vrácena  nulová hodnota pokud se zadá jméno neexistující položky databáze, případně pokud zadaná položka není numerického typu.

Příklad:

Writeln(DbfReadNum("CENA"):12:2);

Viz také:

DbfEvalStr, DbfReadLog, DbfReadNum, DbfReadDat


Funkce DbfReadStr

function DbfReadStr(field: String) : String;

Funkce  vrací hodnotu  zadané řetězcové  položky databáze.  Pokud není  v aktuální  datové oblasti  otevřena žádná  databáze, vrací funkce  prázdný řetězec.  Stejně  tak  je vrácen  prázdný řetězec pokud se zadá jméno neexistující položky databáze, případně pokud zadaná položka není řetězcového typu.

Příklad:

Writeln(DbfReadStr("NAZ"));

Viz také:

DbfEvalStr, DbfReadLog, DbfReadNum, DbfReadDat


Procedura DbfRecall

procedure DbfRecall;

Obnoví platnost záznamu určeného ke zrušení.

Příklad:

DbfGoTop;               {skok na začátek databáze}

While not DbfEof do     {dokud není konec databáze}

begin

   IF DbfDeleted then   {pokud se má záznam zrušit}

      DbfRecall;        {obnoví platnost záznamu}

   DbfSkip(1);          {přejde na další záznam}

end

Viz také:

DbfDelete, DbfDeleted, DbfSetDeleted


Funkce DbfRecCount

function DbfRecCount: Integer;

Vrací fyzický  počet záznamů databáze. Nebere  ohled na nastavený filtr a záznamy určené ke zrušení.

Viz také:

DbfCount, DbfDelete, DbfRecNo


Funkce DbfRecLock

function DbfRecLock: boolean;

Funkce se používá při  síťovém zpracování pro uzamčení aktuálního databázového záznamu.  Záznam je možné  po provedení požadovaných chráněných  akcí  odemknout  procedurou  DbfUnlock,  případně  je záznam  automaticky   odemknut  při  přechodu   na  jiný  záznam databáze.

Příklad:

if DbfRecLock then

begin

   DbfWriteNum('cena', 123);

   DbfUnlock;

end else

   Writeln('Nelze, záznam není přístupný');

Viz také:

DbfFileLock, DbfLocked, DbfUnlock


Funkce DbfRecNo

function DbfRecNo: Integer;

Vrací číslo aktuálního záznamu databáze.

Viz také: DbfRecCount


Procedura DbfReindex

procedure DbfReindex;

Přeindexuje záznamy aktuální databáze.

Viz také: DbfIndexTag


Procedura DbfReport

procedure DbfReport(file: String;  s1, s2: Integer; prev: Boolean);

Vytiskne tiskovou sestavu dle zadané předlohy zadanou v parametru file.  Pomocí  parametrů  s1  (počáteční  strana  sestavy)  a  s2 (konečná strana sestavy) je možné zadat rozsah tisku požadovaných stran  sestavy. Pokud  se zadají  nulové hodnoty,  bude vytištěna celá sestava bez omezení. Parametr  prev udává, zda se má tisková sestava  nejprve zobrazit  na  obrazovce.  Při zadání  False bude proveden ihned tisk sestavy.

Předloha tiskové sestavy musí  být nejprve vytvořena interaktivně z databázového okna  kliknutím na ikonu s  tiskárnou. Před tiskem sestavy je vhodné nejprve nastavit  filtr výběru dat a indexování databáze.

Sestavě je možné předat pro tisk parametry. Tak je možné například předat do tisku sestavy faktury pomocí parametrů údaje z hlavičky faktury. Řádky faktury se potom tisknou z aktuální databáze. Parametry jsou společné pro všechny sestavy tisknuté z databázového okna, případně i z aplikace sestavené na formuláři. Parametry se zadávají procedurou DbfParamSet.

V demoverzi je možné tisknout pouze první stranu tiskové sestavy.

Příklad:

{tisk kompletní sestavy, nejprve prohlížení na obrazovce}

DbfReport("CENIK", 0, 0, True);

{tisk stran 10 až 12 sestavy, ihned na tiskárnu}

DbfReport("CENIK", 10, 12, False);

Viz také:

DbfParamAdd, DbfParamClear, DbfParamCount, DbfParamGet, DbfParamSet


Funkce DbfSeek

function DbfSeek(key: String) : Boolean;

Hledá  v aktuální  databázi  zadaný  klíč zadaný  parametrem key. Databáze  musí být  indexována podle  hledaných položek databáze. Klíč pro  hledání musí být  zadán v souladu  v vytvořeným indexem a může v něm být použit výraz v jazyce xBase.

Pokud je  hledání úspěšné, vrací  funkce hodnotu True  a ukazatel databáze je  umístěn na nalezený  záznam. Následné volání  funkce DbfFound  vrátí hodnotu  True. V  případě neúspěšného  hledání reakce závislá na nastavení přepínačů ovládaných procedurami DbfSetExact a DbfSetSoftSeek. Při standardním nastavení je vrácena hodnota False a ukazatel databáze je umístěn na nejbližší následující záznam vzestupně podle nastaveného indexu.

Příklad:

DbfSetOrder("NAZ");      {nastaví index podle názvu}

DbfSeek("FAX");          {hledá dle názvu text 'FAX'}

DbfSetOrder("DAT");      {nastaví index podle data}

DbfSeek("DTOS(DAY())");  {hledá v položce DAT dnešní datum}

Viz také:

DbfFound, DbfIndexTag, DbfSetOrder


Procedure DbfSelect

procedure DbfSelect(x: Byte);

Aktivuje  zadanou  pracovní  databázovou  oblast. Systém KLONDAIK může  pro  práci  s  databázemi  v  databázovém okně používat tři datové oblasti, v nichž může mít otevřenou databázi. Při spuštění systému je nastavena vždy první datová oblast.

Příklad:

DbfSelect(1);                    {nastaví první datovou oblast}

DbfGoTop;                        {skok na začátek databáze}

While not DbfEof  do             {dokud není konec databáze}

begin

   if DbfEvalLog("CEN>100") then {pokud je cena větší než 100}

   begin

      pNaz := DbfReadStr("NAZ");

      pCen := DbfReadNum("CEN");

      DbfSelect(2);              {nastaví druhou datovou oblast}

      DbfAppendBlank;            {přidá nový, prázdný záznam}

      DbfWriteStr("NAZ",pNaz);   {zapíše hodnotu do položky}

      DbfWriteNum("CEN",pCen);   {zapíše hodnotu do položky}

      DbfSelect(1);              {nastaví první datovou oblast}

   End;

   DbfSkip(1);                   {přejde na další záznam}

End;

Viz také: DbfUse


Procedura DbfSetDeleted

procedure DbfSetDeleted(d: Boolean);

Určuje, zda budou dostupné a viditelné záznamy určené ke zrušení.

Příklad:

DbfSetDeleted(True);

Writeln(DbfCount);     {počet záznamů bez ohledu na zrušení}

DbfSetDeleted(False);

Writeln(DbfCount);     {počet pouze platných záznamů}

Viz také:

DbfCount, DbfDelete, DbfDeleted, DbfRecall


Procedura DbfSetExact

procedure DbfSetExact(exact: boolean);

Procedura  slouží  k  nastavení   způsobu  hledání  podle  indexů a určuje, zda se musí pro  hledání zadávat klíč stejné délky jako je  délka klíče  pro indexaci.  Uvedená možnost  slouží k  zadání jednoznačného klíče o plné délce. Nastavení je platné pro všechny databáze  v systému  KLONDAIK používané  v databázovém  okně i na formuláři. Standardně je nastavena hodnota False.

Pokud se jako parametr ve  funkci DbfSetExact uvede hodnota True, musí být  při hledání funkcí  Seek zadána vždy  plná délka klíče. Pokud je tedy databáze  indexována podle položky obsahující název o délce 20 znaků, musí se  při hledání zadat rovněž hodnota klíče pro hledání o délce 20 znaků.

Pokud se jako parametr ve  funkci DbfSetExact uvede hodnota False (standardní nastavení), je možné  pro vyhledávání zadávat i menší délku  hodnoty  klíče  pro  hledání.  Tím  je umožněno vyhledat i záznamy databáze bez znalosti celého klíče. Například po zadání

DataTable.Seek('B');

je vyhledán záznam databáze s klíčem, který má první písmeno 'B'.

Pokud není  záznam se zadaným klíčem  nalezen, bude nastaven jako aktuální  záznam buď  nejbližší následující,  případně poslední v závislosti na nastavení DbfSetSoftSeek.

Viz také:

DbfSeek, DataTable.Seek


Procedura DbfSetFilter

procedure DbfSetFilter(filtr: String);

Nastavuje  podmínku,  která   určuje  dostupný  výběr  (filtraci) přístupných záznamů. Filtr se zadává logickým výrazem v parametru filtr.  Výraz musí  být uveden  v syntaxi  jazyka xBase. Pokud je zadán  chybný  výraz,  není  nastaven  žádný  filtr. Pokud chcete zrušit  nastavení  filtru,  zadává  se  pro  výraz filtru prázdný řetězec.

Příklad:

{položka CENA je větší než 100 a zároveň menší než 200}

DbfSetFilter("CENA>100.AND.CENA<200");

{datumová položka DAT obsahuje větší, než aktuální datum}

DbfSetFilter("DAT>DATE()");

Viz také:

DbfCount, výrazy xBase


Funkce DbfSetOrder

function DbfSetOrder(name: String) : Integer;

Určuje, který  index bude pro databázi  aktivní. Požadovaný index se  zadává   jménem  indexu.  Pokud   proběhlo  nastavení  indexu v pořádku, je  vráceno číslo indexu.  Pokud nešlo index  nastavit (např. chybně  zadané jméno indexu),  je vrácena nulová  hodnota. Pokud se má zrušit nastavení  databáze podle indexu, zadejte jako parametr prázdný rětězec.

Příklad:

DbfSetOrder("NAZ");   {nastaví index podle názvu}

DbfSeek("TELEVIZE");  {hledá zadaný název}

DbfSetOrder("DAT");   {nastaví index podle data}

DbfSeek("DATE()");    {hledá aktuální datum}

DbfSetOrder("");      {zruší nastavení dle indexu}

Viz také:

DbfIndexTag, DbfSeek, DbfTagArea, DbfTagName


Procedura DbfSetSoftSeek

procedure DbfSetSoftSeek(soft: boolean);

Procedura slouží k nastavení aktuálního záznamu po hledání funkcí Seek, pokud není hledání úspěšné. Nastavení je platné pro všechny databáze  v systému  KLONDAIK používané  v databázovém  okně i na formuláři. Standardně je nastavena hodnota True.

Pokud se jako parametr  ve funkci DbfSetSoftSeek uvede standardní hodnota  True,  bude  v  případě  nenalezení požadovaného záznamu nastaven  nejbližší následující  záznam dle  řazení podle  klíče. Funkce  Found v  takovém případě  vrací hodnotu  True, protože je nalezen alespoň následující záznam.

Pokud  se jako  parametr ve  funkci DbfSetSoftSeek  uvede hodnota False,  bude v  případě nenalezení  požadovaného záznamu nastaven poslední  záznam databáze  dle řazení  podle klíče.  Funkce Found v takovém případě vrací hodnotu False.

Viz také:

DbfFound, DbfSeek, DbfSetExact, DataTable.Found, DataTable.Seek


Procedura DbfSkip

procedure DbfSkip(rec: Integer);

Posune ukazatel  v databázovém souboru  o počet záznamů  zadaných parametrem rec směrem ke konci  nebo začátku souboru (kladné nebo záporné číslo) aktuální datové  oblasti. Pokud není aktivní žádný index,  je  realizován  přesun  dle  fyzického číslování záznamů. Pokud  je aktivní  index, je  realizován přesun  v závislosti  na nastaveném indexu.

Příklad:

DbfGoTop;                        {skok na začátek databáze}

While not DbfEof do              {dokud není konec databáze}

begin

   ...                           {libovolné akce s databází}

   DbfSkip(1);                   {přejde na další záznam}

End;


Funkce DbfTagArea

function DbfTagArea(name: String) : Integer;

Vrací pořadové  číslo indexu aktuální databáze  podle jeho názvu. Pokud  zadáte místo  názvu indexu  prázdný řetězec,  bude vráceno číslo aktuálního indexu.

Viz také: DbfTagName


Funkce DbfTagName

function DbfTagName(x: Integer) : String;

Vrací jméno indexu aktuální databáze podle jeho pořadového čísla. Pokud  zadáte místo  pořadového čísla  indexu nulu,  bude vráceno jméno aktuálního indexu.

Viz také: DbfTagArea


Procedura DbfUnlock

procedure DbfUnlock;

Procedura odemyká  všechny uzamčené záznamy  databáze při síťovém zpracování.   Kompletní  databázi   je  možné   uzamknout  funkcí DbfFileLock,   aktuální  záznam   uzamknete  funkcí   DbfRecLock. Uzamčený  záznam   se  odemkne  procedurou   DbfUnlock,  případně automaticky při přechodu na jiný záznam databáze.

Viz také:

DbfFileLock, DbfLocked, DbfRecLock


Funkce DbfUse

function DbfUse(file: String) : Boolean;

Otevře v  aktuální datové oblasti  zadaný databázový soubor  typu *.DBF. Pokud  existují k datovému souboru  i vytvořené indexy, je současně otevřen  ihned i příslušný indexový  soubor *.CDX, žádný index však nebude aktivní. Ukazatel  záznamu je nastaven na první záznam.

Pokud  je zadaný  soubor nalezen  a jedná  se skutečně o databázi typu FoxPro, vrací funkci hodnotu  True. V opačném případě je při neúspěšném otevření souboru vrácena hodnota False.

Pokud  chcete  databázový  soubor  uzavřít,  použijte  funkci  se zadáním prázdného řetězce místo jména souboru.

Příklad:

If DbfUse("CENIK") then            {pokud je databáze otevřena}

begin

   Whie not DbfEof do              {dokud není konec databáze}

   begin

      Writeln(DbfReadStr("NAZ"));   {vypíše položku NAZ}

      DbfSkip(1);                  {přejde na další záznam}

   End

end else

   Writeln("Databázi se nepodařilo otevřít");

DbfUse("");                        {uzavře databázi}

Viz také: DbfSelect


Procedura DbfWriteBin

procedure DbfWriteBin(field: string; bin: string);

Procedura  naplní  zadanou  memopoložku  aktuálního  databázového záznamu  obsahem  parametru  bin.  Pokud  není  v aktuální datové oblasti   otevřena  žádná   databáze,  případně   zadaná  položka neexistuje, nebo se nejedná o memopoložku, nebude provedena žádná akce. Obsah  memopoložky a předávaných dat  je omezen rozsahem 16 Mb.

Příklad:

DbfWriteBin("poznamka", memo);

Viz také:

DbfMemoLength, DbfWriteMem


Procedura DbfWriteDat

procedure DbfWriteDat(field; dat: String);

Procedura naplní zadanou  položku aktuálního databázového záznamu obsahem  parametru  dat.  Pokud  není  v  aktuální datové oblasti otevřena žádná databáze, případně zadaná položka neexistuje, nebo není typu datum, nebude provedena žádná akce.

Příklad:

DbfWriteDat("DATUM", "12/12/1997");

Viz také:

DbfWriteLog, DbfWriteNum, DbfWriteStr


Procedura DbfWriteLog

procedure DbfWriteLog(field: String; b: Boolean);

Procedura naplní zadanou  položku aktuálního databázového záznamu obsahem  parametru  b.  Pokud  není  v  aktuální  datové  oblasti otevřena žádná databáze, případně zadaná položka neexistuje, nebo není logického typu, nebude provedena žádná akce.

Příklad:

DbfWriteLog("FAK", False);

Viz také:

DbfWriteDat, DbfWriteNum, DbfWriteStr


Procedura DbfWriteMem

procedure DbfWriteMem(field: string; mem: string);

Procedura  naplní  zadanou  memopoložku  aktuálního  databázového záznamu  obsahem  parametru  mem.  Pokud  není  v aktuální datové oblasti   otevřena  žádná   databáze,  případně   zadaná  položka neexistuje, nebo se nejedná o memopoložku, nebude provedena žádná akce. Obsah  memopoložky a předávaných dat  je omezen rozsahem 64 kB.

Příklad:

DbfWriteMem("poznamka", memo);


Procedura DbfWriteNum

procedure DbfWriteNum(field: String; r: Real);

Procedura naplní zadanou  položku aktuálního databázového záznamu obsahem  parametru  r.  Pokud  není  v  aktuální  datové  oblasti otevřena žádná databáze, případně zadaná položka neexistuje, nebo není numerického typu, nebude provedena žádná akce.

Příklad:

DbfWriteNum("CENA", 123);

Viz také:

DbfWriteDat, DbfWriteLog, DbfWriteStr


Procedura DbfWriteStr

procedure DbfWriteStr(field, s: String);

Procedura naplní zadanou  položku aktuálního databázového záznamu obsahem  parametru  s.  Pokud  není  v  aktuální  datové  oblasti otevřena žádná databáze, případně zadaná položka neexistuje, nebo není řetězcového typu, nebude provedena žádná akce.

Příklad:

DbfWriteStr("NAZ", "Tiskárna");

Viz také:

DbfWriteDat, DbfWriteLog, DbfWriteNum


Procedura DbfZap

procedure DbfZap;

Zruší fyzicky najednou všechny záznamy databáze bez ohledu na to, zda jsou  záznamy označeny ke  zrušení. Zrušení záznamů  databáze již nelze žádným způsobem obnovit.

Viz také:

DbfDelete, DbfPack


1.16 - VÝRAZY XBASE

Výrazy xBase se  používají v mnoha procedurách a  funkcích a jsou zapisovány přímo  v syntaxi databázových  jazyků typu Dbase,  Foxpro a Clipper.

ALLTRIM(String)

Vrací řetězec bez počátečních a koncových mezer.

Příklad:

ALLTRIM(" KLONDAIK  ")    vrací: "KLONDAIK"

AT(SearchString, TargetString)

Hledá  výskyt podřetězce  SearchString v  řetězci TargetString. V případě nalezení vrací  pozici znaku  (číslováno od  jedničky) v řetězci, kde zadaný podřetězec začíná.

Příklad:

AT("Z", "OZOGAN")         vrací: 2

CHR(Val)

Vrací znak, jehož číselný ACSII kód odpovídá zadané hodnotě.

Příklad:

CHR(83)                   vrací: "S"

CTOD(String)

Převádí znakový řetězec na datum  typu xBase. Zadaný řetězec musí být přitom zadán ve tvaru data.

Příklad:

CTOD("12/12/1997")

DATE()

Vrací aktuální datum dle nastavení systémového data počítače.

DAY(Date)

Vrací den v měsíci (číslo od 1 do 31) ze zadaného data.

Příklad:

DAY(DATE())

DELETED()

Vrací logickou hodnotu udávající, zda je aktuální záznam databáze označen ke zrušení.

DTOC(Date)

Převádí datumovou položku xBase na řetězec.

DTOS(Date)

Převádí datumovou  položku xBase na  řetězec ve tvaru  RRRRMMMDD, který je vhodný pro indexování databáze podle data.

IIF(Logical, TrueTResult, FalseResult)

Vrací  jednu  ze  dvou  hodnot  v  závislosti  na  zadané logické podmínce. Výsledné  hodnoty mohou být podle  způsobu použití typu řetězec, číslo, datum nebo logická hodnota.

Příklad:

IIF(MONTH(DATE())=1,"LEDEN","ÚNOR až PROSINEC")

INDEXKEY()

Vrací název aktuálního indexu.

LEFT(String, Lenght)

Vrací zadaný počet znaků z řetězce zleva.

Příklad:

 LEFT("OZOGAN", 3)         Vrací: "OZO"

LEN(String)

Vrací číslo udávající počet znaků v řetězci.

Příklad:

LEN("KLONDAIK")       vrací 8

LOWER(String)

Převede všechna písmena v zadaném řetězci na malá písmena.

Příklad:

LOWER("KlonDaiK")     vrací: "klondaik"

MONTH(Date)

Vrací číslo měsíce (1 až 12) odpovídající zadanému datu.

ORDER()

Vrací pořadové číslo aktuálního indexu.

RAT(SearchString, TargetString)

Hledá  výskyt  podřetězce  SearchString  v  řetězci  TargetString zprava.  V případě  nalezení  vrací  pozici  znaku (číslováno od jedničky) v řetězci, kde zadaný podřetězec začíná.

Příklad:

AT("I", "KLONDAIK")         vrací: 7

RECCOUNT()

Vrací počet záznamů v aktuální databázi.

RECNO()

Vrací číslo aktuálního záznamu z aktuální databáze.

RIGHT(String, Length)

Vrací zadaný počet znaků z řetězce zprava.

Příklad:

LEFT("KLONDAIK", 3)         Vrací: "AIK"

SPACE(Length)

Vrací znakový řetězec sestavený ze zadaného počtu mezer.

Příklad:

SPACE(3)                      Vrací: "   "

STR(Number, Length, Decimals)

Převádí číslo Number na řetězec  o délce Length obsahující počet desetinných míst dle parametru Decimals.

Příklad:

STR(123,7,2)                 vrací: " 123.00"

STRZERO(Number, Length, Decimals)

Převádí číslo  Number na řetězec o  délce Length obsahující počet desetinných míst dle parametru  Decimals. Místo počátečních mezer jsou uvedeny nuly.

Příklad:

STRZERO(123,7,2)              vrací: "0123.00"

SUBSTR(String, Start, Length)

Vrací podřetězec z řetězce String od pozice Start a délce Length.

Příklad:

SUBSTR("KLONDAIK", 3,4)       vrací: "ONDA"

TIME()

Vrací aktuální systémový čas ve tvaru řetězce "HH:MM:SS"

TRIM(String)

Odstraní z řetězce koncové mezeru zprava.

Příklad:

TRIM(" KLONDAIK ")          vrací: " KLONDAIK"

UPPER(String)

Převede všechna písmena v zadaném řetězci na velká písmena.

Příklad:

UPPER("KlonDaiK")     vrací: "KLONDAIK"

VAL(String)

Vrací číselnou hodnotu zadaného řetězce.

Příklad:

VAL(" 123abc")        vrací: 123

YEAR(Date)

Vrací ze zadaného data rok jako číslo.


1.17 - knihovna pro binární přístup do souborů

Knihovna umožňuje přístup do obecných binárních souborů.  Možné je pracovat najednou se dvěma soubory. Jeden lze otevřít pro čtení, druhý pro zápis. Číst je možné zadanou délku bloku, případně jeden textový řádek. Obdobně lze zapisovat blok zadané délky, případně textový řádek.

FileReadBlock 	- načte blok zadané délky

FileReadClose 	- uzavře soubor pro čtení

FileReadGetPos 	- vrací pozici ve vstupním souboru

FileReadLine 	- načte řádek textu ze vstupního souboru

FileReadOpen 	- otevře soubor pro čtení

FileReadSetPos 	- nastaví pozici ve vstupním souboru

FileReadSize 	- vrací celkovou délku vstupního souboru

FileWriteBlock 	- zapíše blok do výstupního souboru

FileWriteClose 	- uzavře soubor pro zápis

FileWriteGetPos 	- vrací pozici ve výstupním souboru

FileWriteLine 	- zapíše textový řádek do výstupního souboru

FileWriteOpen 	- otevře výstupní soubor pro zápis

FileWriteSetPos 	- nastaví pozici ve výstupním souboru

FileWriteSize 	- vrací celkovou délku výstupního souboru

Další část knihovny umožňuje načíst obsah souboru do proměnné, případně uložit proměnnou do souboru:

FileToVar 	- načte soubor z disku do proměnné

VarToFile 	- uloží proměnnou do souboru


Funkce FileToVar

function FileToVar(file: String): String;

Funkce  načte z  disku zadaný  soubor a  vrátí jej jako výslednou hodnotu pro uložení do řetězcové proměnné. Se souborem převedeným do  proměnné je  možné dále  pracovat, případně  jej například po změně  kódování českých  znaků  uložit  funkcí VarToFile  zpět do souboru.

Funkcí lze načíst  do paměti najednou i dlouhé  soubory k dalšímu použití. Velikost  souboru je omezena  pouze teoreticky velikostí do  2  Gb,  prakticky  je  velikost  načítaného  souboru  omezena kapacitou  volné  paměti.  Přesto  se  však nedoporučuje používat funkci pro načítání rozsáhlých  souborů, kdy je výhodnější použít binárního přístupu do souboru.

Viz také:

VarToFile, FileReadBlock, FileReadLine

Příklad:

{načte soubor do proměnné}

Temp := FileToVar('SOUBOR.XXX');

{změní kódování z Windows do Latin}

Temp := CsWinToLat(Temp);

{uloží proměnnou do souboru}

VarToFile(Temp, 'SOUBOR.YYY');


Procedura VarToFile

procedure VarToFile(Temp: String; file: String);

Procedura uloží zadanou hodnotu do  souboru na disk. Hodnotu může přitom představovat buď proměnná,  případně přímo zadaná hodnota. Dřívější obsah souboru, do kterého  se hodnota ukládá bude zrušen a nahrazen novým  obsahem. Zadaný soubor je  vždy znovu zakládán, není možné do souboru pouze přidávat další hodnoty.

Viz také:

FileToVar, FileWriteBlock, FileWriteLine

Příklad:

{načte soubor do proměnné}

Temp := FileToVar('SOUBOR.XXX');

{změní kódování z Windows do Latin}

Temp := CsWinToLat(Temp);

{uloží proměnnou do souboru}

VarToFile(Temp, 'SOUBOR.YYY');


Funkce FileReadBlock

function FileReadBlock(size: Integer): String;

Funkce  čte  a  vrací  data  ze  vstupního souboru. Parametr Size zadává  počet bajtů,  které se  mají načíst.  Čtení se provádí od aktuální  pozice souboru.  Po  ukončení  čtení je  nastavena nová pozice  v souboru  v závislosti  na délce  přečteného bloku  dat. Pokud  se zadá  velikost pro  čtení větší,  než zbývá od aktuální pozice do  konce souboru, není hlášena  žádná chyba, funkce vrátí pouze  zbývající   část,  případně  prázdný   řetězec.  Je  možné kombinovat čtení bloku zadané délky se čtením textové řádky.

Viz také:

FileReadLine, FileReadOpen, FileReadGetPos, FileReadSetPos, FileReadSize, FileWriteBlock

Příklad:

Provádí se čtení souboru po blocích  o délce 1000 znaků. Bloky se ukládají do výstupního souboru. Soubor se tak postupně zkopíruje. Kopírování  je  ukončeno  po  dosažení  pozice  vstupního souboru souhlasné s celkovou délkou souboru.

procedure TForm.ButtonClick(Sender: TObject);

Var Temp: String;

begin

   FileReadOpen('SOUBOR.XXX');

   FileWriteOpen('SOUBOR.YYY');

   While FileReadGetPos < FileReadSize do

   begin

      Temp := FileReadBlock(1000);

      FileWriteBlock(Temp);

   end;

   FileReadClose;

   FileWriteClose;

end;


Procedura FileReadClose

procedure FileReadClose;

Procedura uzavírá soubor, který byl otevřen pro čtení.

Viz také:

FileReadOpen


Funkce   FileReadGetPos

function FileReadGetPos: Integer;

Funkce  vrací  aktuální  pozici  ukazatele  ve  vstupním souboru. kazatel je po otevření souboru  nastaven na první pozici. Čtením dat  funkcemi FileReadBlock a FileReadLine se automaticky  mění pozice  ukazatele. Pozici  ukazatele je  možné kdykoliv  nastavit procedurou  FileReadSetPos.  Maximální  možnou  hodnotu ukazatele pozice  v  souboru  udává  funkce  FileReadSize,  to  je  hodnota velikosti vstupního souboru.

Pokud  není  vstupní  soubor  zadán,  případně  došlo k jakékoliv chybě, vrací funkce zápornou hodnotu.


Funkce   FileReadLine

function FileReadLine: String;

Funkce  čte vstupní  textový soubor  od aktuální  pozice a  vrací jeden  řádek textu.  Po ukončení  čtení je  nastavena nová pozice v souboru  v  závislosti  na   délce  přečtené  řádky.  Je  možné kombinovat čtení bloku zadané délky se čtením textové řádky.

Viz také:

FileReadOpen, FileReadGetPos, , FileReadSetPos, FileReadSize, FileWriteBlock

Příklad:

Provádí se čtení vstupního textového  souboru a zjišťuje se délka každé řádky textu. Na konci se vypíše délka nejdelšího řádku.

procedure TForm.ButtonClick(Sender: TObject);

Var Temp    : String;

    MaxLine : Integer;

begin

   MaxLine := 0

   FileReadOpen('SOUBOR.TXT');

   While FileReadGetPos < FileReadSize do

   begin

      Temp := FileReadLine;

      if Length(Temp) > MaxLine then

         MaxLine := Length(Temp);

   end;

   FileReadClose;

   ShowMessage('Nejdelší řádek má délku:'

               +IntToStr(MaxLine));

end;


Procedura FileReadOpen

procedure FileReadOpen(file: String);

Funkce  otevírá vstupní  soubor pro  čtení. Soubor  je možné číst funkcemi  FileReadBlock a  FileReadLine. Čtením  se mění současně pozice  ukazatele  v  souboru,  kterou  je  možné  zjistit funkcí FileReadGetPos,  případně nastavit  procedurou FileReadSetPos pro možnost čtení z nové pozice souboru. Celkovou délku souboru vrací funkce FileReadSize. Soubor  se uzavírá procedurou FileReadClose. V jednom  okamžiku je  možné mít  otevřen pouze  jeden soubor pro čtení.   další   soubor   může   být   otevřen   pro  zápis.  Viz FileWriteOpen.

Pokud se nepodaří soubor otevřít,  nebude hlášena žádná chyba. Je proto vhodné  funkcí FileExists nejprve  zkontrolovat, zda soubor skutečně existuje.  Další možností je použít  po otevření souboru kontrolu  funkcí   FileReadSize,  která  nesmí   vracet  zápornou hodnotu.

Příklad:

{Provede kopírování souboru.}

procedure TForm.ButtonClick(Sender: TObject);

begin

   if FileExists('COPY.XXX') then

   begin

      FileReadOpen('COPY.XXX');

      FileWriteOpen('COPY.YYY');

      if FileReadSize >= 0 then

         FileWriteBlock(FileReadBlock(FileReadSize));

      FileReadClose;

      FileWriteClose;

   end;

end;


Procedura FileReadSetPos

procedure FileReadSetPos(pozice: Integer);

Funkce nastavuje pozici  v souboru, který je určen  pro čtení. Po otevření souboru je pozice nastavena na začátek. Pozice ukazatele v souboru se  mění automaticky čtením  dat funkcemi FileReadBlock a FileReadLine.  Nastavením nové  pozice bude  čtení prováděno ze zadané   pozice.  Maximální   možnou  hodnotu   ukazatele  pozice v souboru  udává  funkce  FileReadSize,  to  je hodnota velikosti vstupního souboru.


Funkce FileReadSize

function FileReadSize: Integer;

Funkce  vrací celkovou  velikost otevřeného  vstupního souboru  v bajtech. Funkci je vhodné používat  například ve spojení s funkcí FileReadGetPos pro  kontrolu,  zda  byla  přečtena všechna data. Pokud není vstupní soubor otevřen, je vrácena záporná hodnota.

Příklad:

Provádí se čtení vstupního textového  souboru a zjišťuje se počet řádek textu.

procedure TForm.ButtonClick(Sender: TObject);

Var Temp : String;

    Line : Integer;

begin

   Line := 0

   FileReadOpen('SOUBOR.TXT');

   While FileReadGetPos < FileReadSize do

   begin

      Temp := FileReadLine;

      Line := Line + 1;

   end;

   FileReadClose;

   ShowMessage('Text obsahuje:'

               +IntToStr(Line)+' řádek.');

end;


Procedura FileWriteBlock

procedure FileWriteBlock(Block: String);

Funkce zapisuje do výstupního souboru  blok dat. Data se zapisují do souboru  od aktuální pozice  ukazatele. Po zápisu  je ukazatel pozice automaticky  aktualizován na novou  hodnotu. Změnou pozice ukazatele je možné data přepisovat novými hodnotami.

Viz také:

FileWriteLine, FileWriteOpen, FileWriteGetPos, FileWriteSetPos, FileWriteSize

Příklad:

Provádí se čtení souboru po blocích  o délce 1000 znaků. Bloky se ukládají do výstupního souboru. Soubor se tak postupně zkopíruje. Kopírování  je  ukončeno  po  dosažení  pozice  vstupního souboru souhlasné s celkovou délkou souboru.

procedure TForm.ButtonClick(Sender: TObject);

Var Temp: String;

begin

   FileReadOpen('SOUBOR.XXX');

   FileWriteOpen('SOUBOR.YYY');

   While FileReadGetPos < FileReadSize do

   begin

      Temp := FileReadBlock(1000);

      FileWriteBlock(Temp);

   end;

   FileReadClose;

   FileWriteClose;

end;


Procedura FileWriteClose

procedure FileWriteClose;

Funkce uzavírá  výstupní soubor určený pro  zápis. Až po uzavření souboru jsou  data volně přístupná  ostatním aplikacím volaným  z operačního systému.

Viz také:

FileWriteOpen


Funkce   FileWriteGetPos

function FileWriteGetPos

Funkce  vrací  aktuální  pozici  ukazatele  ve výstupním souboru. Ukazatel je po otevření souboru nastaven na první pozici. Zápisem dat funkcemi  FileWriteBlock a FileWriteLine se automaticky mění pozice  ukazatele. Pozici  ukazatele je  možné kdykoliv  nastavit procedurou FileWriteSetPos pro možnost přepsání původních hodnot.

Maximální možnou hodnotu ukazatele  pozice v souboru udává funkce FileReadSize, to je hodnota velikosti vstupního souboru.

Pokud  není výstupní  soubor  zadán,  případně došlo  k jakékoliv chybě, vrací funkce zápornou hodnotu.


Procedura FileWriteLine

procedure FileWriteLine

Funkce zapisuje text do výstupního  souboru. Zápis je prováděn od aktuální  pozice  ukazatele  v  souboru.  Po  ukončení  zápisu je nastavena nová  pozice v souboru v  závislosti na délce zapsaného textu.

Viz také:

FileWriteBlock, FileWriteOpen, FileWriteGetPos, FileWriteSetPos,

Příklad:

Provádí se čtení vstupního textového souboru. Text je konvertuván z kódu  kamenický  do  kódu  Windows  a  je ukládán do výstupního souboru.

procedure TForm.ButtonClick(Sender: TObject);

Var Temp    : String;

begin

   FileReadOpen('SOUBOR.TXT');

   FileWriteOpen('SOUBOR.WIN');

   While FileReadGetPos < FileReadSize do

   begin

      Temp := CsKamToWin(FileReadLine);

      FileWriteLine(Temp);

   end;

   FileReadClose;

   FileWriteClose;

end;


Procedura FileWriteOpen

procedure FileWriteOpen(file: String);

Funkce  otevírá výstupní  soubor pro  zápis. Do  souboru je možné zapisovat  funkceni  FileWriteBlock a  FileWriteLine. Zápisem se mění současně pozice ukazatele v souboru, kterou je možné zjistit funkcí    FileWriteGetPos,     případně    nastavit    procedurou FileWriteSetPos pro možnost opakovaného zápisu na stejnou pozici. Celkovou  délku  souboru  vrací  funkce  FileWriteSize. Soubor se uzavírá procedurou FileWriteClose. V jednom okamžiku je možné mít otevřen  pouze  jeden  soubor  pro  zápis.  Další soubor může být otevřen pro čtení. Viz FileReadOpen.

Kontrolu, zda je otevřen soubor pro zápis je možné provést funkcí FileWriteSize, která nesmí vrátit zápornou hodnotu.

POZOR !

Otevřením  souboru pro  zápis, který  již existuje,  budou data z tohoto  souboru zničena  a  přepsána.  Ze souboru  otevřeného pro zápis není možné data číst.

Příklad:

{Provede kopírování souboru.}

procedure TForm.ButtonClick(Sender: TObject);

begin

   if FileExists('COPY.XXX') then

   begin

      FileReadOpen('COPY.XXX');

      FileWriteOpen('COPY.YYY');

      FileWriteBlock(FileReadBlock(FileReadSize));

      FileReadClose;

      FileWriteClose;

   end;

end;


Procedura FileWriteSetPos

procedure FileWriteSetPos(pozice: Integer);

Funkce nastavuje pozici  v souboru, který je určen  pro zápis. Po otevření souboru je pozice nastavena na začátek. Pozice ukazatele v souboru se mění automaticky zápisem dat funkcemi FileWriteBlock a FileWriteLine.  Nastavením nové  pozice bude  prováděn zápis na zadanou  pozici.   Maximální  možnou  hodnotu   ukazatele  pozice v souboru  udává  funkce  FileWriteSize,  to  je aktuální hodnota velikosti výstupního souboru.


Funkce FileWriteSize

function FileWriteSize: Integer;

Funkce  vrací  celkovou  velikost  otevřeného  výstupního souboru v bajtech. Pokud se provádí pouze kontinální zápis dat do souboru bez změny  pozice ukazatele, souhlasí  velikost souboru s  pozicí ukazatele.


Přehled metod komponenty DataTable

AppendBlank- přidá prázdný záznam do databáze

AppendFrom- načte (přihraje) data z jiné databáze

BinToFile	- převede obsah memopoložky do binárního souboru

Bof	- test začátku databázového souboru

Continue	- pokračuje v hledání dalšího záznamu(po Locate)

CopyFile	- kopíruje databázi do nového souboru

CopyStru	- kopíruje strukturu databáze do nového souboru

CopyToInfo	- kopíruje strukturu databáze do informační databáze

CopyToText- kopíruje databázi do textového souboru

Count	- vrací počet záznamů dle nastaveného filtru

CreateFrom- založí novou databázi z informační databáze

CreateInfo	- založí novou prázdnou informační databázi

Delete	- označí záznam ke zrušení

Deleted	- vrací informaci, zda je záznam určen ke zrušení

Edit 	- přepne databázi do editačního módu

EvalLog	- vrací výsledek logického databázového výrazu

EvalNum	- vrací výsledek numerického databázového výrazu

EvalStr	- vrací výsledek řetězcového databázového výrazu

EvalTest	- testuje správnost databázového výrazu

Eof	- test konce databázového souboru

FieldCount	- vrací počet položek (sloupců) databáze

FieldDec	- vrací počet desetinných míst zadané položky

FieldName	- vrací jméno položky dle pořadového čísla

FieldType	- vrací typ databázové položky (N/C/L/M)

FieldWidth	- vrací délku databázové položky

FileLock	- uzamkne síťově celou databázi

FileToBin	- načte obsah binárního souboru do memopoložky

Found	- vrací informaci, zda bylo hledání úspěšné

Go	- přesun na zadané číslo záznamu

GoBottom	- přesun na konec databázového souboru

GoTop	- přesun na začátek databázového souboru

IndexCount 	- vrací počet indexů datrabáze

IndexTag	- založí nový index databáze

Locate	- hledá záznam dle zadané podmínky

Locked	- vrací informaci, zda je aktuální záznam uzamčen

MemoCount- vrací počet odstavců memopoložky

MemoLength- vrací délku memopoložky

Name	- vrací název souboru databáze

Pack	- fyzicky zruší záznamy označené k výmazu

Post 	- ukončí editaci záznamu databáze

ReadBin	- přečte binární obsah memopoložky databáze

ReadDat	- přečte datovou položku z databáze

ReadLog	- přečte logickou položku z databáze

ReadMem	- přečte textový obsah memopoložky databáze

ReadNum	- přečte numerickou položku z databáze

ReadStr	- přečte řetězcovou položku z databáze

Recall	- obnoví platnost záznamu určeného ke zrušení

RecCount	- vrací celkový počet záznamů v databázi

RecLock	- uzamkne síťově aktuální záznam databáze

RecNo	- vrací číslo aktuálního záznamu

Reindex	- obnoví indexování databáze

Report	- vytiskne sestavu

Seek	- hledá v databázi dle zadaného klíče

SetFilter	- nastaví filtr databáze (výběr dle hodnot)

SetExclusive- nastavení a kontrola exclusivního přístupu

SetOrder	- určí, který index bude aktivní

Skip	- přesun ukazatele v databázovém souboru

TagArea	- dle zadaného jména indexu vrací jeho číslo

TagName	- dle zadaného čísla indexu vrací jeho název

Unlock	- odemyká uzamčené záznamy v síťovém zpracování

Use	- otevře databázi

WriteBin	- zapíše do memopoložky binární hodnotu

WriteDat	- zapíše datovou hodnotu do položky databáze

WriteLog	- zapíše logickou hodnotu do položky databáze

WriteMem	- zapíše do memopoložky textovou hodnotu

WriteNum	- zapíše numerickou hodnotu do položky databáze

WriteStr	- zapíše řetězcovou hodnotu do položky databáze

Zap	- fyzicky zruší všechny záznamy databáze


Procedura DataTable.AppendBlank

procedure DataTable.AppendBlank;

Příkaz  doplní do  databáze prázdný  záznam. Ukazatel  databáze se  nastaví současně  na nový záznam.


Funkce DataTable.AppendFrom

function DataTable.AppendFrom(file: String; typ: Integer, filtr: String): Boolean;

Funkce načte  do databázového souboru  data ze souboru uvedeného v  parametru file. Typ  načítaných dat a  způsob jejich načítání je uveden v parametru typ dle následující tabulky:

-----------------------------------------------------------

typ popis dat

-----------------------------------------------------------

 1  databázový soubor FoxPro

 2  ASCII soubor s oddělením položek čárkami(CDF)

 3  ASCII soubor s pevnou délkou záznamů jako databáze SDF)

-----------------------------------------------------------

Pokud  se  provádí  načtení  dat  z  databázového  souboru, budou převedeny pouze data se stejným názvem položek databáze.

V  souboru typu  CDF (comma date  format) jsou jednotlivé  datové položky   odděleny   čárkami.   Řetězce   jsou   přitom   uvedeny v uvozovkách.   Jeden  řádek   souboru  představuje   jednu  větu databáze. Řádky mohou mít tudíž rozdílnou délku.

Soubor typu SDF (system date format) je textový soubor, ve kterém jsou položky databáze uloženy vždy se stejnou délkou.

Při používání  funkce musíte být opatrní,  aby nedošlo ke zničení databáze.  Pokud  neodpovídá  řazení  položek databáze načítanému textovému  souboru, mohlo  by  dojít  k chybnému  načtení položek databáze a tím i k jejímu totálnímu znehodnocení.

Převáděná  data  mohou  být  omezena  filtrem  zadaným  podmínkou v parametru  filtr.  Podmínka  filtru  je  logický  výraz  zadaný v syntaxi jazyka  xBase. Pokud se uvede  prázdný řetězec, nebudou načítaná dat žádným způsobem filtrována.

Příklad:

DataTable.AppendFrom("C:\DATA\BBB.TXT", 2, "");

if DataTable.AppendFrom("C:\DATA\AAA.DBF", 1, "ROK > 1997") then

   Writeln("Načtení proběhlo v pořádku");


Procedura DataTable.BinToFile

procedure DataTable.BinToFile(field: string; file: string);

Procedura  převede   obsah  memopoložky  do   obecného  binárního souboru. Parametr field udává jméno memopoložky databáze,  parametr file  určuje jméno  souboru, do  kterého bude memopoložka   převedena.   Memopoložka    není   převodem   nijak upravována, její  rozsah je omezen  velikostí do 16  Mb. Kontrolu úspěšnosti   převodu  je   možné  provést   porovnáním  velikosti memopoložky  (DataTable.MemoLength)  a   velikosti  vytvořeného  souboru (FileSize).

Příklad:

DataTable.BinToFile('popis', 'navod.txt');

if FileSize('navod.txt') = DataTable.MemoLength('popis') then

  Writeln('Převedlo se v pořádku !');

Viz také:

DataTable.FileToBin, DataTable.MemoLength, Filesize


Funkce DataTable.Bof

function DataTable.Bof : Boolean;

Funkce vyhodnocuje, zda je  ukazatel databáze nastaven před první záznam databáze. Funkce se používá  například velmi často v cyklu pro  zpracování   každého  záznamu  databáze   směrem  k  počátku databáze. Pokud  není v aktivní databázové  oblasti otevřen žádný soubor, je rovněž vrácena hodnota False.

Příklad:

While not DataTable.Bof do     {dokud není začátek databáze}

begin

   Writeln(DataTable.ReadStr("NAZ"));{vypíše obsah položky NAZ}

   DataTable.Skip(-1);            {jdi na předchozí záznam}

end;

Viz také:

DataTable.Eof, DataTable.Skip


Funkce DataTable.Continue

function DataTable.Continue: Real;

Pokračuje v hledání dalšího  záznamu zadaného podmínkou ve funkci DataTable.Locate.  Funkce  vrací  v  případě  úspěšného  nalezení  číslo záznamu, jinak vrací nulovou  hodnotu. Nenalezení záznamu je také indikováno funkcí DataTable.Eof.

Příklad:

DataTable.Locate("CENA > 100"); {hledá v databázi cenu>100}

While not DataTable.Eof do      {dokud není konec databáze}

begin

   {vypíše obsah položky NAZEV}

   Writeln(DataTable.ReadStr("NAZEV"));

   DataTable.Continue;            {hledá další záznam}

end;

Viz také: DataTable.Locate


Funkce DataTable.CopyFile

function DataTable.CopyFile(file: String) : Boolean;

Používá se na kopírování otevřené databáze do jiného databázového souboru. Jméno  nové databáze je  uvedeno parametrem file.  Pokud databáze stejného jména již existuje, bude bez varování nahrazena novou  databází.   Pokud  je  rozsah   aktuální  databáze  omezen nastaveným  filtrem,  budou  do  nové  databáze  kopírovány pouze záznamy vyhovující zadanému filtru.

Pokud  obsahuje  databáze  záznamy  označené  ke zrušení, podléhá kopírování těchto záznamů nastavení přepínače DbfSetDeleted.

Funkce vrací  v případě úspěšně provedené  kopie logickou hodnotu True.

Viz také: DataTable.CopyToText


Funkce DataTable.CopyStru

function DataTable.CopyStru(file: String) : Boolean;

Založí novou,  prázdnou databázi se  strukturou výchozí databáze. Jméno  nové databáze  se zadává  v parametru  file. Pokud  soubor stejného  jména již  existuje,  bude  přepsán bez  varování novým obsahem.  Funkce  vrací   logickou  hodnotu  udávající  úspěšnost kopírování struktury databáze.

Viz také: DataTable.CopyFile


Procedura DataTable.CopyToInfo

procedure DataTable.CopyToInfo(f: String);

Procedura založí  novou informační databázi  obsahující strukturu aktuální databáze. Založená informační databáze  obsahuje v každém  svém záznamu popis  jedné položky  databáze,  ze  které  byla  založena.  Obsah  informační databáze  můžete potom  běžným způsobem  editovat, přidávat popis nových  položek,  případně  zrušit   položky,  které  nemají  být následně  v  databázi  obsaženy.  Po  provedení  změn  informační databáze je  možné vytvořit funkcí DataTable.CreateFrom novou, prázdnou databázi se strukturou dle obsahu informační databáze. Informační databáze může tedy sloužit k vytvoření nové databáze, případně ke změnám struktury databáze příkazy z programu.

Struktura informační databáze:

-------------------------------------

jméno položky   typ   délka  desetiny

-------------------------------------

FIELD_NAME       C     10       0

FIELD_TYPE       C      1       0

FIELD_LEN        N      5       0

FIELD_DEC        N      3       0

-------------------------------------

Viz také:

DataTable.CreateFrom, DataTable.CreateInfo


Funkce DataTable.CopyToText

function DataTable.CopyToText(file: String;

                   typ: Integer): Boolean;

Kopíruje  aktuální  databázi  do  textového  ASCII souboru. Jméno souboru je  uvedeno parametrem file. Pokud  soubor stejného jména již existuje,  bude přepsán bez varování  novým obsahem. Pokud je rozsah  databáze omezen  nastaveným filtrem,  budou do  textového souboru  převedeny  pouze  záznamy  vyhovující  zadanému  filtru. Funkce  vrací  logickou  hodnotu  udávající  úspěšnost  vytvoření textového souboru.

Pokud  obsahuje  databáze  záznamy  označené  ke zrušení, podléhá kopírování těchto záznamů nastavení přepínače DbfSetDeleted.

Uspořádání dat v textovém souboru je určeno parametrem typ, který udává  způsob  oddělení   jednotlivých  položek  dle  následující tabulky:

-------------------------------------------------------------

typ  způsob přenosu do textového souboru

-------------------------------------------------------------

 1   ASCII soubor s oddělením položek čárkami (CDF)

 2   ASCII soubor s pevnou délkou záznamů jako databáze (SDF)

-------------------------------------------------------------

Pokud zadáte oddělení jednotlivých  položek čárkou (CDF), vznikne textový  soubor, ve  kterém bude  jedna řádka  textu představovat jeden  záznam z  databáze. Položky  z věty  budou přitom odděleny čárkami, řetězcové položky budou  umístěny v uvozovkách. Datum se uvede číselně  ve tvaru RRRRMMDD,  logická hodnota T  (True) nebo F (False).  Každá řádka  textového souboru  může mít  proto jinou délku.

Při zadání  oddělení typu SDF  bude vytvořen textový  soubor, kde bude jedna řádka představovat jeden záznam databáze. Položky věty nebudou  nijak odděleny,  zapíší se  za sebe  v délce položek dle zadání  struktury databáze.  Díky  tomu  budou mít  všechny řádky textového souboru stejnou délku  rovnou součtu délky jednotlivých položek databáze.


Vlastnost Count

Vlastnost DataTable.Count

Vlastnost StrArray.Count


Funkce DataTable.Count

function DataTable.Count: Integer;

Funkce vrací počet záznamů databáze, které odpovídají nastavenému filtru.  V závislosti  na nastavení,   zda se  mají brát  v úvahu záznamy určené ke zrušení započítává i záznamy určené ke zrušení.

Viz také:

DataTable.Delete, DataTable.RecCount, DbfSetDeleted, DataTable.SetFilter


Funkce DataTable.CreateFrom

function DataTable.CreateFrom(f: String) : Boolean;

Funkce  založí   novou,  prázdnou  databázi   se  strukturou  dle informační databáze, která obsahuje  jména položek nové databáze, jejich typy a délku. Jméno  nové databáze se zadává parametrem s, funkce  vrací  logický   příznak  úspěšnosti  založení  databáze. Informační databáze  obsahující popis položek  nové databáze musí být otevřena v aktuální databázové oblasti.

Pokud budete editovat informační  databázi, musíte dodržovat daná omezení struktury databáze, to je  například typ položek pouze C, N,  D, L  nebo M.  Délka numerické  položky smí  být maximálně 19 znaků. Počet  desetinných míst může být  uveden pouze u numerické položky. Položka typu  datum musí mít délku 8,  memo položka musí mít délku 10, logická položka musí mít délku 1. Pokud bude uveden nepřípustný údaj, nebude databáze založena a funkce DbfCreateFrom vrátí hodnotu False.

Informační  databázi  je  možné  založit  pro  další editaci jako prázdnou  databázi  procedurou  DbfCreateInfo.  Další možností je vytvořit    informační    databázi    procedurou    DbfCopyToInfo z existující  databáze.  V  takovém  případě  již bude informační databáze  obsahovat  popis  struktury  databáze,  ze  které  byla vytvořena a je možné provést pouze úpravy.

Viz také:

DataTable.CopyToInfo, DataTable.CreateInfo


Procedura DataTable.CreateInfo

procedure DataTable.CreateInfo(f: String);

Procedura  se  používá  pro  založení  nové,  prázdné  informační databáze  se  jménem  zadaným  v  parametru  f.  Založená prázdná informační databáze bude mít následující strukturu:

-------------------------------------

jméno položky   typ   délka  desetiny

-------------------------------------

FIELD_NAME       C     10       0

FIELD_TYPE       C      1       0

FIELD_LEN        N      5       0

FIELD_DEC        N      3       0

-------------------------------------

Po otevření takto vytvořené informační databáze ji můžete naplnit popisem   požadované   struktury   a   následným  voláním  funkce DbfCreateFrom   vytvořit   novou   databázi   zadané   struktury. Informační databáze může tedy  sloužit k vytvoření nové databáze, případně ke změnám struktury databáze příkazy z programu.

Viz také:

DataTable.CopyToInfo, DataTable.CreateFrom


Funkce a metoda Delete

Funkce Delete

Komponenta DataTable

Komponenta StrArray


Procedura DataTable.Delete

procedure DataTable.Delete;

Označí aktuální záznam databáze ke  zrušení. Zatím nedojde k jeho fyzickému  zrušení.   V  závislosti  na  tom   zda  je  nastavena dostupnost záznamů  určených ke zrušení  (DbfSetDeleted) je možné se záznamy určenými ke zrušení dále pracovat.

Záznamy  určené  ke  zrušení  jsou  v  databázovém okně zobrazeny červenou barvou.  Obnova záznamu určeného  ke zrušení se  provede procedurou   DbfRecall.   Fyzické   zrušení   označených  záznamů z databáze se provede procedurou DbfPack. Informaci o tom, zda je záznam  označen ke  zrušení získáte  použitím funkce  DbfDeleted. Kompletní  zrušení všech  záznamů  z  databáze se  provede funkcí DbfZap.

Viz také:

DataTable.Deleted, DbfSetDeleted, DataTable.Pack, DataTable.Zap


Funkce DataTable.Deleted

function DataTable.Deleted: Boolean;

Funkce  vrací informaci  o tom,  zda je  aktuální záznam databáze označen ke zrušení.

Viz také:

DataTable.Delete, DataTable.Pack, DataTable.Recall, DbfSetDeleted


Procedura DataTable.Edit

procedure Edit;

Procedura přepne databázi do editačního módu, kdy je možné měnit obsah položek databáze přes komponenty zobrazující data na formuláři. Ukončení editace se provede metodou DataTable.Post, případně automaticky přechodem na jiný záznam databáze. Informaci o tom, v jakém stavu je tabulka je možné zjistit testováním vlastnosti DataTable.State.

Příklad:

DataTable.Edit;

DataEdit.Text := 'abcd';

DataTable.Post;


Funkce DataTable.EvalLog

function DataTable.EvalLog(vyraz: String) : Boolean;

Funkce  vyhodnotí  logický  výraz  zadaný  parametrem vyraz přímo v syntaxi jazyků  xBase. Ve výrazu lze  použít a vyhodnotit přímo i položky  databáze. Funkce  vrací logickou  hodnotu dle výsledku vyhodnocení výrazu. Pokud není v aktuální datové oblasti otevřena žádná databáze, je vrácena vždy hodnota  False a to bez ohledu na zadaný výraz. Stejně tak je vrácena hodnota False, pokud je zadán chybný logický výraz.

Příklad:

if DataTable.EvalLog("DELETED()") then

begin

   Writeln("Záznam je určen ke zrušení")

end else

   Writeln("Záznam není určen ke zrušení");

Viz také:

DataTable.EvalNum, DataTable.EvalStr, DataTable.EvalTest, DataTable.ReadLog, výrazy xBase


Funkce  DataTable. EvalNum

function DataTable.EvalNum(vyraz: String) : Real;

Funkce  vyhodnotí numerický  výraz zadaný  parametrem vyraz přímo v syntaxi jazyků  xBase. Ve výrazu lze  použít a vyhodnotit přímo i položky databáze. Funkce vrací  numerickou hodnotu dle výsledku vyhodnocení výrazu. Pokud není v aktuální datové oblasti otevřena žádná databáze, je vrácen vždy nulový výsledek a to bez ohledu na zadaný  výraz. Stejně  tak je  vrácena nulová  hodnota, pokud  je zadán chybný numerický výraz.

Příklad:

{vrátí součet položek databáze}

Writeln(DataTable.EvalNum('a+b'));

{vrátí délku položky databáze s}

Writeln(DataTable.EvalNum('LEN(s)'));

Viz také:

DataTable.EvalLog, DataTable.EvalStr, DataTable.EvalTest, DataTable.ReadNum, výrazy xBase


Funkce DataTable.EvalStr

function DataTable.EvalStr(vyraz: String) : String;

Funkce  vyhodnotí řetězcový  výraz zadaný  parametrem vyraz přímo v syntaxi jazyků xBase. Ve výrazu  lze použít k vyhodnocení přímo položky databáze. Funkce vrací  výsledek typu string dle výsledku vyhodnocení výrazu. Pokud není v aktuální datové oblasti otevřena žádná databáze, je vrácen vždy jako výsledek prázdný řetězec a to bez ohledu na zadaný výraz. Stejně tak je vrácen prázdný řetězec, pokud je zadán chybný výraz.

Příklad:

{vrátí aktuální datum}

Writeln(DataTable.EvalStr('DTOC(DATE())'));

{vrátí začátek položky}

Writeln(DataTable.EvalStr('SUBS(POL,1,12)'));

Viz také:

DataTable.EvalLog, DataTable.EvalNum, DataTable.EvalTest, DataTable.ReadStr, výrazy xBase


Funkce DataTable.EvalTest

function EvalTest(vyraz: String) : Integer;

Funkce  zkontroluje  syntaktickou   správnost  výrazu  zadávaného v jazyce xBase.  Výsledek funkce určí  správnost výrazu, případně typ výsledku zadaného výrazu dle následující tabulky:

---------------------------------

výsledek  typ výrazu jazyka xBase

---------------------------------

   0      chybný výraz

   1      řetězcový výraz

   2      numerický výraz

   3      logický výraz

---------------------------------

Viz také:

DataTable.EvalLog, DataTable.EvalNum, DataTable.EvalStr, výrazy xBase


Funkce DataTable.Eof

function DataTable.Eof: Boolean;

Funkce vyhodnocuje, zda je ukazatel databáze nastaven za poslední záznam  databáze.  Funkce  se  používá  velmi  často  v cyklu pro zpracování každého záznamu databáze.

Příklad:

While not DataTable.Eof do  {dokud není konec databáze}

begin

   {vypíše obsah položky NAZEV}

   Writeln(DataTable.ReadStr("NAZEV"));

   {jde na další záznam}

   DataTable.Skip(1);

end;

Viz také:

DataTable.Bof, DataTable.Skip


Funkce DataTable.FieldCount

function DataTable.FieldCount: Integer;

Funkce   vrací  počet   položek  databáze.

Viz také:

DataTable.FieldDec, DataTable.FieldName, DataTable.FieldType, DataTable.FieldWidth


Funkce DataTable.FieldDec

function DataTable.FieldDec(s: String) : Integer;

Funkce  vrací počet  desetinných míst  numerické položky zadaného jména.

Viz také:

DataTable.FieldCount, DataTable.FieldName, DataTable.FieldType, DataTable.FieldWidth


Funkce DataTable.FieldName

function DataTable.FieldName(i: Integer) : String;

Funkce vrací  jméno položky databáze dle  zadání jejího pořadí ve struktuře databáze.

Viz také:

DataTable.FieldCount, DataTable.FieldDec, DataTable.FieldType, DataTable.FieldWidth


Funkce DataTable.FieldType

function DataTable.FieldType(s: String) : String;

Funkce  vrací typ  databázové položky  zadaného jména  v otevřené databázi. Typ položky  udává jaké údaje  může položka obsahovat: C (řetězec), N  (číslo), D (datum), L (logická hodnota), M (memo položka).

Viz také:

DataTable.FieldCount, DataTable.FieldDec, DataTable.FieldName, DataTable.FieldWidth


Funkce DataTable.FieldWidth

function DataTable.FieldWidth(s: String) : Integer;

Funkce vrací  délku databázové položky zadaného  jména v otevřené databázi.

Viz také:

DataTable.FieldCount, DataTable.FieldDec, DataTable.FieldName, DataTable.FieldType


Funkce DataTable.FileLock

function DataTable.FileLock: boolean;

Funkce  se používá  pro uzamčení  aktuálního databázového záznamu pro síťový přístup. Po uzamčení  není možné záznam z jiné stanice editovat.  Uzamčení je  funkční také  pro soubor  otevřený v jiné databázové oblasti.  Pokud proběhlo uzamčení  databáze v pořádku, je  vrácena hodnota  True. Funkci  je vhodné  používat pouze  pro rozsáhlé  změny,   například  indexaci  a   podobně.  Nezamykejte zbytečně  celou databázi,  v případě  nutnosti používejte  raději uzamčení záznamu funkcí DataTable.RecLock.

Informaci  o tom,  zda je  aktuální záznam  uzamčen vám  poskytne funkce DataTable.Locked.   Záznam  se  odemkne   procedurou DataTable.Unlock. Databáze se  musí odemknou ještě  před svým uzavřením.  Pokud tak nebude provedeno,  zůstane databáze uzamčena  a je nutné  nejprve uzavřít  databázi  na  všech  stanicích,  čímž  bude pro následné použití již odemčena.

Příklad:

if DataTable.FileLock then

begin

   DataTable.Pack;

   DataTable.Unlock;

end else

   Writeln('Chyba uzamčení databáze');

Viz také:

DataTable.Locked, DataTable.RecLock, DataTable.Unlock


Procedura DataTable.FileToBin

procedure DataTable.FileToBin(field: string; file: string);

Procedura  načte obsah  souboru do  memopoložky databáze. Položka databáze je určena parametrem field,  soubor je zadán v parametru file. Velikost převáděného souboru je  omezena velikostí do 16 Mb dat.  Kontrolu  správnosti  přenosu  je  možné provést porovnáním velikosti  memopoložky  (DataTable.MemoLength)  a  velikosti vytvořeného souboru (FileSize).

Příklad:

DataTable.FileToBin('popis', 'navod.txt');

if FileSize('navod.txt') = DataTable.MemoLength('popis') then

   Writeln('Převedlo se v pořádku !');

Viz také:

DataTable.BinToFile, DataTable.MemoLength, Filesize


Funkce DataTable.Found

function DataTable.Found: Boolean;

Vrací  informaci  o  tom,   zda  bylo  poslední  hledání  záznamu v databázi  dle klíče  funkcí DataTable.Seek  úspěšné. Pokud  ano, vrací hodnotu  True. Pokud  nebylo hledání  úspěšné, případně  jestliže nebylo hledání v aktuální  datové oblasti provedeno, vrací funkce hodnotu False.

Výsledek hledání je závislý na nastavení přepínačů DbfSetExact a DbfSetSoftSeek.

Příklad:

{nastaví klíč dle názvu}

DataTable.SetOrder("NAZ");

{hledá v databázi dle klíče text TELEVIZE}

DataTable.Seek("TELEVIZE");

if DataTable.Found then

   Writeln("Záznam byl nalezen");

Viz také: DataTable.Seek


Procedura DataTable.Go

procedure DataTable.Go(rec: Integer);

Nastaví  ukazatel v  databázi na  určené číslo  záznamu. Ignoruje přitom  nastavený filtr  a nastavení  přístupnosti pouze  záznamů neoznačených ke zrušení.

Viz také:

DataTable.GoTop, DataTable.GoBottom, DbfSetDeleted


Procedura DataTable.GoBottom

procedure DataTable.GoBottom;

Nastaví  ukazatel  v  databázi  na  poslední  záznam.  Pokud není nastaven index databáze, bude se jednat o fyzicky poslední záznam dle pořadí  zápisu do databáze.  Pokud bude nastaven  index, bude nastaven poslední záznam dle nastaveného indexu.

Viz také:

DataTable.Go, DataTable.GoTop


Procedura DataTable.GoTop

procedure DataTable.GoTop;

Nastaví ukazatel v databázi na  první záznam. Pokud není nastaven index databáze, bude se jednat  o fyzicky první záznam dle pořadí zápisu  do databáze.  Pokud  bude  nastaven index,  bude nastaven první záznam dle nastaveného indexu.

Viz také:

DataTable.Go, DataTable.GoBottom


Funkce DataTable.IndexCount

function IndexCount: integer;

Funkce IndexCount vrací počet indexů, podle kterých je databáze indexována. Jméno indexu lze zjistit podle jeho čísla metodou TagName.


Funkce DataTable.IndexTag

function DataTable.IndexTag(name, key: String) : Integer;

Založí nový index v indexovém  souboru se stejným jménem, jako má databáze, s  příponou souboru CDX.  Tento indexový soubor  (pokud existuje)  se otevírá  společně s  databází. V  indexovém souboru typu  CDX může  být uloženo  najednou několik  indexů pro hledání funkcí DataTable.Seek. Každý index je při svém vytváření pojmenován a je možné se mezi němi funkcí DataTable.SetOrder přepínat.

Indexy se používají pro rychlé vyhledávání v databázi, řazení dle velikosti nebo podle abecedy.

Jméno indexu pomocí kterého se  lze následně mezi indexy přepínat se  zadává parametrem  name.  Výraz,  podle kterého  jsou záznamy seřazeny  je  uveden  v  parametru  key.  Výraz pro indexování se zadává  přímo jazyce  xBase a  měl by  být řetězcového  typu. Pro indexování čísel použijte funkci  STR(), pro převod data použijte funkci DTOS(). Uspořádání indexu je vždy vzestupné.

Každý  index  je  dostupný  buď  svým  jménem  zadaným  při  jeho vytváření, případně pořadovým  číslem svého vytvoření. Doporučuje se přitom používat raději názvu indexu.

UPOZORNĚNÍ:

Databáze musí být pro indexování nastavena na excluzívní (chráněný) přístup. To lze zajistit buď nastavením vlastnosti DataTable.Exclusive, nebo výhodněji a jednodušeji funkcí DataTable.SetExclusive.

Příklad:

if DataTable.SetExclusive(true) then

begin

   {nastaví index dle položky NAZ}

   DataTable.IndexTag("NAZ","UPPER(NAZ)");

   {nastaví index dle položky DAT}

   DataTable.IndexTag("DAT","DTOC(DAT)");

   DataTable.IndexTag("XXX","NAZ+STR(CENA)");

end;

Viz také:

DataTable.Reindex, DataTable.TagArea, DataTable.TagName, výrazy xBase


Funkce DataTable.Locate

function DataTable.Locate(vyraz: String) : Real;

Hledá  záznam  databáze  podle  zadané  podmínky.  Funkce se může použít i  pro neindexované databáze,  protože se hledání  provádí sekvenčně pro každý záznam  vyhodnocováním zadané podmínky. Výraz pro  hledání se  zadává parametrem  vyraz přímo  v jazyce  xBase. Hledání se  provádí vždy od  pozice ukazatele databáze,  dokud se nenalezne záznam  vyhovující zadané podmínce. Na  tento záznam je následně nastaven ukazatel databáze.  V případě neúspěchu hledání je  ukazatel  databáze  nastaven   za  poslední  záznam  databáze a následné volání  funkce DataTable.Eof vrací  hodnotu True. Pokud  bylo hledání úspěšné, je možné hledat další záznam dle stejné podmínky funkcí DataTable.Continue.

Funkce vrací v případě úspěšného hledání číslo nalezeného záznamu a následná funkce DbfEof vrací hodnotu False.

Příklad:

{hledá název začínající na 'FAX'}

DataTable.Locate("UPPER(SUBS(NAZ,1,3))='FAX'");

DataTable.Locate("CENA > 100");  {hledá v databázi cenu>100}

While not DataTable.Eof do       {dokud není konec databáze}

begin

   {vypíše obsah položky NAZEV}

   Writeln(DataTable.ReadStr("NAZEV"));

   DataTable.Continue;           {hledá další záznam}

end;

Viz také:

DataTable.Continue, DataTable.Eof, výrazy xBase


Funkce DataTable.Locked

function DataTable.Locked: boolean;

Funkce  se používá  pro kontrolu,  zda je  při síťovém zpracování aktuální databázový záznam uzamčen.  V takovém případě není možné se  záznamem  pracovat  a  je  nutné  vzniklou situaci programově ošetřit.

Příklad:

if DataTable.Locked then

   DataTable.WriteNum('cena', 123);

else

   Writeln('Nelze, záznam je blokován');

Viz také:

DataTable.FileLock, DataTable.RecLock, DataTable.Unlock


Funkce DataTable.MemoCount

function DataTable.MemoCount(field: string): integer;

Funkce vrací počet odstavců databázové memopoložky. Odstavec je v memopoložce ukončen znakem konce  řádku. Maximální velikost takto zpracovávané  memopoložky  může  být  maximálně  64  Kb. Pokud je vrácena záporná hodnota, byl překročen uvedený rozsah.

UPOZORNĚNÍ:

Pokud budete chtít používat funkci  DbfMemoCount v cyklu, bylo by vhodné pro  rychlejší zpracování přečíst  délku memopoložky pouze jednou a uložit ji do proměnné k dalšímu použití.

Příklad:

{kompletní výpis memopoložky do textového výstupu}

Procedure vypis;

Var x, len: integer;

begin

   z := DataTable.MemoCount('poznamka');

   if z > 0 then

   begin

      ConsoleClear;

      for x:= 1 to z do

          Writeln(DataTable.ReadMem('poznamka', x));

   end else

       Writeln('Překročen rozsah memopoložky');

   end;

end;

Viz také:

DataTable.MemoLength, DataTable.ReadMem, DataTable.ReadBin


Funkce DataTable.MemoLength

function DataTable.MemoLength(field: string): integer;

Funkce  vrací  délku  memopoložky  databáze.  Maximální  povolený rozsah memopoložky  je do 16  Mb. Pokud budete  chtít zpracovávat memopoložku  po odstavcích,  nesmí její  rozsah při  čtení funkcí DataTable.ReadMem přesáhnout  64 Kb. Větší rozsah  je možný načíst pouze funkcí DataTable.ReadBin v binárním tvaru  a dál ji případně zpracovávat funkcemi pro práci s řetězci.

Viz také:

DataTable.MemoCount, DataTable.ReadBin, DataTable.ReadMem


Funkce DataTable.Name

function DataTable.Name : String;

Vrací   jméno   otevřeného   databázového   souboru.

Viz také: DataTable.Use


Procedura DataTable.Pack

procedure DataTable.Pack;

Zruší fyzicky  z databáze záznamy  označené ke zrušení.  Současně aktualizuje indexy.

UPOZORNĚNÍ:

Databáze musí být pro pakování nastavena na excluzívní (chráněný) přístup. To lze zajistit buď nastavením vlastnosti DataTable.Exclusive, nebo výhodněji a jednodušeji funkcí DataTable.SetExclusive.

Příklad:

if DataTable.SetExclusive(True) then

   DataTable.Pack;

Viz také:

DataTable.Delete, DataTable.Recall, DataTable.Zap


Procedura DataTable.Post

procedure Post;

Procedura ukončí editaci záznamu databáze.

Viz také:

DataTable.Edit, DataTable.State

Příklad:

DataTable.Edit;

DataEdit.Text := 'abcd';

DataTable.Post;


Funkce DataTable.ReadBin

function DataTable.ReadBin(field: string): string;

Funkce čte  obsah zadané memopoložky  databáze. Její velikost  je omezena do 16 Mb. Memopoložka se načítá bez jakýchkoliv úprav, je proto  převedena  v  přesném  binárním  tvaru  a  může  obsahovat libovolné znaky.

Viz také:

DataTable.MemoLength, DataTable.ReadMem, DataTable.BinToFile


Funkce DataTable.ReadDat

function DataTable.ReadDat(field: String) : String;

Funkce vrací hodnotu zadané datumové položky databáze. Pokud není otevřena žádná  databáze, vrací funkce prázdný řetězec.  Stejně tak je  vrácen prázdný řetězec  pokud se zadá jméno  neexistující položky databáze,  případně pokud zadaná položka není datumového typu.

Příklad:

WRITELN(DataTable.ReadDat("DATUM"));

Viz také:

DataTable.EvalStr, DataTable.ReadLog, DataTable.ReadNum, DataTable.ReadStr


Funkce DataTable.ReadLog

function DataTable.ReadLog(field: String) : Boolean;

Funkce vrací hodnotu zadané  logické položky databáze. Pokud není otevřena databáze, vrací funkce hodnotu False. Stejně tak je  vrácena hodnota False pokud se zadá jméno  neexistující  položky   databáze,  případně  pokud  zadaná položka není logického typu.

Příklad:

if DataTable.ReadLog("FAK") then

   WRITELN("Faktura byla vystavena");

Viz také:

DataTable.EvalLog, DataTable.ReadDat, DataTable.ReadNum, DataTable.ReadStr


Funkce DataTable.ReadMem

function DataTable.ReadMem(field: string;

                   index: integer): string;

Funkce  načte memopoložku  zadanou parametrem  field. Memopoložka nesní  mít v  tomto případě  rozsah větší  než 64 Kb. Memopoložku obsahující text je možné načítat postupně po odstavcích. Pořadové číslo  indexu se  udává parametrem  index v  pořadí od  jedničky. Pokud  budete chtít  načíst najednou  celou memopoložku,  zadejte nulový index. V tomto případě  bude z načteného řetězce odstraněn znak  #10  pro  možnost  zobrazení  v  textovém  výstupním  okně. Kompletní memopoložku  bez jakékoliv konverze  do délky 16  Mb je možné načíst funkcí DataTable.ReadBin.

Příklad:

{kompletní výpis memopoložky do textového výstupu}

Procedure vypis;

Var x, len: integer;

begin

   z := DataTable.MemoCount('poznamka');

   if z > 0 then

   begin

      ConsoleClear;

      for x:= 1 to z do

          Writeln(DataTable.ReadMem('poznamka', x));

   end else

       Writeln('Překročen rozsah memopoložky');

   end;

end;

Viz také:

DataTable.MemoCount, DataTable.MemoLength, DataTable.ReadBin


Funkce DataTable.ReadNum

function DataTable.ReadNum(field: String) : Real;

Funkce  vrací hodnotu  zadané numerické  položky databáze.  Pokud není  otevřena  databáze, vrací funkce  nulovou hodnotu.  Stejně  tak  je vrácena  nulová hodnota pokud se zadá jméno neexistující položky databáze, případně pokud zadaná položka není numerického typu.

Příklad:

Writeln(DataTable.ReadNum("CENA"):12:2);

Viz také:

DataTable.EvalStr, DataTable.ReadLog, DataTable.ReadNum, DataTable.ReadDat


Funkce DataTable.ReadStr

function DataTable.ReadStr(field: String) : String;

Funkce  vrací hodnotu  zadané řetězcové  položky databáze.  Pokud není otevřena  databáze, vrací funkce  prázdný řetězec.  Stejně  tak  je vrácen  prázdný řetězec pokud se zadá jméno neexistující položky databáze, případně pokud zadaná položka není řetězcového typu.

Příklad:

Writeln(DataTable.ReadStr("NAZ"));

Viz také:

DataTable.EvalStr, DataTable.ReadLog, DataTable.ReadNum, DataTable.ReadDat


Procedura DataTable.Recall

procedure DataTable.Recall;

Obnoví platnost záznamu určeného ke zrušení.

Příklad:

DataTable.GoTop;        {skok na začátek databáze}

While not DataTable.Eof do {dokud není konec databáze}

begin

   IF DataTable.Deleted then {pokud se má záznam zrušit}

   DataTable.Recall;         {obnoví platnost záznamu}

   DataTable.Skip(1);        {přejde na další záznam}

end

Viz také:

DataTable.Delete, DataTable.Deleted, DbfSetDeleted


Funkce DataTable.RecCount

function DataTable.RecCount: Integer;

Vrací fyzický  počet záznamů databáze. Nebere  ohled na nastavený filtr a záznamy určené ke zrušení.

Viz také:

DataTable.Count, DataTable.Delete, DataTable.RecNo


Funkce DataTable.RecLock

function DataTable.RecLock: boolean;

Funkce se používá při  síťovém zpracování pro uzamčení aktuálního databázového záznamu.  Záznam je možné  po provedení požadovaných chráněných  akcí  odemknout  procedurou DataTable.Unlock,  případně  je záznam  automaticky   odemknut  při  přechodu   na  jiný  záznam databáze.

Příklad:

if DataTable.RecLock then

begin

   DataTable.WriteNum('cena', 123);

   DataTable.Unlock;

end else

   Writeln('Nelze, záznam není přístupný');

Viz také:

DataTable.FileLock, DataTable.Locked, DataTable.Unlock


Funkce DataTable.RecNo

function DataTable.RecNo: Integer;

Vrací číslo aktuálního záznamu databáze.

Viz také: DataTable.RecCount


Procedura DataTable.Reindex

procedure DataTable.Reindex;

Přeindexuje záznamy databáze.

Viz také: DataTable.IndexTag


Procedura DataTable.Report

procedure DataTable.Report(file: String; s1,s2: Integer;

                 prev: Boolean, Source: DataSource);

Vytiskne tiskovou sestavu dle zadané předlohy zadanou v parametru file.  Pomocí  parametrů  s1  (počáteční  strana  sestavy)  a  s2 (konečná strana sestavy) je možné zadat rozsah tisku požadovaných stran  sestavy. Pokud  se zadají  nulové hodnoty,  bude vytištěna celá sestava bez omezení. Parametr  prev udává, zda se má tisková sestava  nejprve zobrazit  na  obrazovce.  Při zadání  False bude proveden ihned tisk sestavy. V posledním parametru se zadává napojení na data přes komponentu DataSource.

Předloha tiskové sestavy musí  být nejprve vytvořena interaktivně z databázového okna  kliknutím na ikonu s  tiskárnou. Před tiskem sestavy je vhodné nejprve nastavit  filtr výběru dat a indexování databáze.

Sestavě je možné předat pro tisk parametry. Tak je možné například předat do tisku sestavy faktury pomocí parametrů údaje z hlavičky faktury. Řádky faktury se potom tisknou z aktuální databáze. Parametry jsou společné pro všechny sestavy tisknuté z databázového okna, případně i z aplikace sestavené na formuláři. Parametry se zadávají procedurou DbfParamSet.

V demoverzi je možné tisknout pouze první stranu tiskové sestavy.

Příklad:

{tisk kompletní sestavy, nejprve prohlížení na obrazovce}

DataTable.Report("CENIK", 0, 0, True, DataSource1);

{tisk stran 10 až 12 sestavy, ihned na tiskárnu}

DataTable.Report("CENIK", 10, 12, False, DataSource1);

Viz také:

DbfParamAdd, DbfParamClear, DbfParamCount, DbfParamGet, DbfParamSet


Funkce DataTable.Seek

function DataTable.Seek(key: String) : Boolean;

Hledá  v databázi  klíč zadaný  parametrem key. Databáze  musí být  indexována podle  hledaných položek databáze. Klíč pro  hledání musí být  zadán v souladu  v vytvořeným indexem a může v něm být použit výraz v jazyce xBase.

Pokud je  hledání úspěšné, vrací  funkce hodnotu True  a ukazatel databáze je  umístěn na nalezený  záznam. Následné volání  funkce DataTAble.Found  vrátí hodnotu  True. V  případě neúspěšného  hledání reakce závislá na nastavení přepínačů ovládaných procedurami DbfSetExact a DbfSetSoftSeek. Při standardním nastavení je vrácena hodnota False a ukazatel databáze je umístěn na nejbližší následující záznam vzestupně podle nastaveného indexu.

Příklad:

DataTable.SetOrder("NAZ");    {nastaví index podle názvu}

DataTable.Seek("FAX");        {hledá dle názvu text 'FAX'}

DataTable.SetOrder("DAT");    {nastaví index podle data}

DataTable.Seek("DTOS(DAY())");{hledá v položce DAT dnešní datum}

Viz také:

DataTable.Found, DataTable.IndexTag, DataTable.SetOrder


Funkce DataTable.SetExclusive

function DataTable.SetExclusive(exclusiv: Boolean);

Funkce provádí nastavení exclusivního (chráněného) přístupu do databáze, který je vyžadován například pro indexování databáze DataTable.IndexTag, pakování databáze DataTable.Pack a kompletní výmaz záznamů databáze DataTable.Zap.

Parametr Exclusiv zadává, zda se má nastavit chráněný režim přístupu k databázi. Hodnota True zadává chráněný režim, hodnota False jej naopak ruší  a nastaví běžný přístup do databáze.

Databáze musí být v okamžiku použití funkce aktivní, to znamená, že musí být nastaveno:

DataTable.Active := True;

Pokud požadujeme nastavit execlusivní přístup k databázi funkcí SetExclusive, pokusí se funkce provést sama následující sekvenci volání:

DataTable.Active   := False;

DataTable.Exclusive:= True;

DataTable.Active   := True;

Pokud se nastavení exclusiního přístupu z jakéhokoliv důvodu nepodaří nastavit, vrátí funkce SetExclusive hodnotu False. K tomu může dojít například pokud je databáze otevřena na jiném formuláři. Funkci je možné použít samozřejmě i pro zrušení exclusivního přístupu. Pro pakování databáze je proto vhodné použít následující postup:

DataTable.Active := True;

if DataTable.SetExclusive(True) then DataTable.Pack

else ShowMessage(‘Nelze, databáze je používaná’);

DataTable.SetExclusive(False);     {Nezapomenout !!!}

Nezapomeňte po provedení chráněné akce na nutnost zrušení chráněného přístupu.


Procedura DataTable.SetFilter

procedure DataTable.SetFilter(filtr: String);

Nastavuje  podmínku,  která   určuje  dostupný  výběr  (filtraci) přístupných záznamů. Filtr se zadává logickým výrazem v parametru filtr.  Výraz musí  být uveden  v syntaxi  jazyka xBase. Pokud je zadán  chybný  výraz,  není  nastaven  žádný  filtr. Pokud chcete zrušit  nastavení  filtru,  zadává  se  pro  výraz filtru prázdný řetězec.

Příklad:

{položka CENA je větší než 100 a zároveň menší než 200}

DataTable.SetFilter("CENA>100.AND.CENA<200");

{datumová položka DAT obsahuje větší, než aktuální datum}

DataTable.SetFilter("DAT>DATE()");

Viz také:

DataTable.Count, výrazy xBase


Funkce DataTable.SetOrder

function DataTable.SetOrder(name: String) : Integer;

Určuje, který  index bude pro databázi  aktivní. Požadovaný index se  zadává   jménem  indexu.  Pokud   proběhlo  nastavení  indexu v pořádku, je  vráceno číslo indexu.  Pokud nešlo index  nastavit (např. chybně  zadané jméno indexu),  je vrácena nulová  hodnota. Pokud se má zrušit nastavení  databáze podle indexu, zadejte jako parametr prázdný rětězec.

Příklad:

DataTable.SetOrder("NAZ");  {nastaví index podle názvu}

DataTable.Seek("TELEVIZE"); {hledá zadaný název}

DataTable.SetOrder("DAT");  {nastaví index podle data}

DataTable.Seek("DATE()");   {hledá aktuální datum}

DataTable.SetOrder("");     {zruší nastavení dle indexu}

Viz také:

DataTable.IndexTag, DataTable.Seek, DataTable.TagArea, DataTable.TagName


Procedura DataTable.Skip

procedure DataTable.Skip(rec: Integer);

Posune ukazatel  v databázovém souboru  o počet záznamů  zadaných parametrem rec směrem ke konci  nebo začátku souboru (kladné nebo záporné číslo). Pokud není aktivní žádný index,  je  realizován  přesun  dle  fyzického číslování záznamů. Pokud  je aktivní  index, je  realizován přesun  v závislosti  na nastaveném indexu.

Příklad:

DataTable.GoTop;           {skok na začátek databáze}

While not DataTable.Eof do {dokud není konec databáze}

begin

   ...                     {libovolné akce s databází}

   DataTable.Skip(1);      {přejde na další záznam}

End;


Funkce DataTable.TagArea

function DataTable.TagArea(name: String) : Integer;

Vrací pořadové  číslo indexu databáze  podle jeho názvu. Pokud  zadáte místo  názvu indexu  prázdný řetězec,  bude vráceno číslo aktuálního indexu.

Viz také: DataTable.TagName


Funkce DataTable.TagName

function DataTable.TagName(x: Integer) : String;

Vrací jméno indexu aktuální databáze podle jeho pořadového čísla. Pokud  zadáte místo  pořadového čísla  indexu nulu,  bude vráceno jméno aktuálního indexu.

Viz také: DataTable.TagArea


Procedura DataTable.Unlock

procedure DataTable.Unlock;

Procedura odemyká  všechny uzamčené záznamy  databáze při síťovém zpracování.   Kompletní  databázi   je  možné   uzamknout  funkcí DataTable.FileLock,   aktuální  záznam   uzamknete  funkcí DataTable.RecLock. Uzamčený  záznam   se  odemkne  procedurou DataTable.Unlock,  případně automaticky při přechodu na jiný záznam databáze.

Viz také:

DataTable.FileLock, DataTable.Locked, DataTable.RecLock


Funkce DataTable.Use

function DataTable.Use(file: String) : Boolean;

Otevře v  zadaný databázový soubor  typu *.DBF. Pokud  existují k datovému souboru  i vytvořené indexy, je současně otevřen  ihned i příslušný indexový  soubor *.CDX, žádný index však nebude aktivní. Ukazatel  záznamu je nastaven na první záznam.

Funkce zjednodušuje otevírání databáze při použití komponenty DataTable na formuláři. Obsahuje nastavení vlastnosti DatabaseName a TableName, následně aktivuje databázi nastavením vlastnosti Active na True.

Pokud  je zadaný  soubor nalezen  a jedná  se skutečně o databázi typu FoxPro, vrací funkce hodnotu True. V opačném případě je při neúspěšném otevření souboru vrácena hodnota False.

Pokud  chcete  databázový  soubor  uzavřít,  použijte  funkci  se zadáním prázdného řetězce místo jména souboru.

Příklad:

If DataTable.Use("CENIK") then   {pokud je databáze otevřena}

begin

   Whie not DataTable.Eof do     {dokud není konec databáze}

   begin

      Writeln(DataTable.ReadStr("NAZ"));{vypíše položku NAZ}

      DataTable.Skip(1);                {přejde na další záznam}

   End

end else

   Writeln("Databázi se nepodařilo otevřít");

DataTable.Use("");                {uzavře databázi}


Procedura DataTable.WriteBin

procedure DataTable.WriteBin(field: string; bin: string);

Procedura  naplní  zadanou  memopoložku  aktuálního  databázového záznamu  obsahem  parametru  bin.  Pokud  není  otevřena  žádná   databáze,  případně   zadaná  položka neexistuje, nebo se nejedná o memopoložku, nebude provedena žádná akce. Obsah  memopoložky a předávaných dat  je omezen rozsahem 16 Mb.

Příklad:

DataTable.WriteBin("poznamka", memo);

Viz také:

DataTable.MemoLength, DataTable.WriteMem


Procedura DataTable.WriteDat

procedure DataTable.WriteDat(field; dat: String);

Procedura naplní zadanou  položku aktuálního databázového záznamu obsahem  parametru  dat.  Pokud  není  v otevřena žádná databáze, případně zadaná položka neexistuje, nebo není typu datum, nebude provedena žádná akce.

Příklad:

DataTable.WriteDat("DATUM", "12/12/1997");

Viz také:

DataTable.WriteLog, DataTable.WriteNum, DataTable.WriteStr


Procedura DataTable.WriteLog

procedure DataTable.WriteLog(field: String; b: Boolean);

Procedura naplní zadanou  položku aktuálního databázového záznamu obsahem  parametru  b.  Pokud  není otevřena žádná databáze, případně zadaná položka neexistuje, nebo není logického typu, nebude provedena žádná akce.

Příklad:

DataTable.WriteLog("FAK", False);

Viz také:

DataTable.WriteDat, DataTable.WriteNum, DataTable.WriteStr


Procedura DataTable.WriteMem

procedure DataTable.WriteMem(field: string; mem: string);

Procedura  naplní  zadanou  memopoložku  aktuálního  databázového záznamu  obsahem  parametru  mem.  Pokud  není otevřena  žádná   databáze,  případně   zadaná  položka neexistuje, nebo se nejedná o memopoložku, nebude provedena žádná akce. Obsah  memopoložky a předávaných dat  je omezen rozsahem 64 kB.

Příklad:

DataTable.WriteMem("poznamka", memo);


Procedura DataTable.WriteNum

procedure DataTable.WriteNum(field: String; r: Real);

Procedura naplní zadanou  položku aktuálního databázového záznamu obsahem  parametru  r.  Pokud  není otevřena žádná databáze, případně zadaná položka neexistuje, nebo není numerického typu, nebude provedena žádná akce.

Příklad:

DataTable.WriteNum("CENA", 123);

Viz také:

DataTable.WriteDat, DataTable.WriteLog, DataTable.WriteStr


Procedura DataTable.WriteStr

procedure DataTable.WriteStr(field, s: String);

Procedura naplní zadanou  položku aktuálního databázového záznamu obsahem  parametru  s.  Pokud  není otevřena žádná databáze, případně zadaná položka neexistuje, nebo není řetězcového typu, nebude provedena žádná akce.

Příklad:

DataTable.WriteStr("NAZ", "Tiskárna");

Viz také:

DataTable.WriteDat, DataTable.WriteLog, DataTable.WriteNum


Procedura DataTable.Zap

procedure DataTable.Zap;

Zruší fyzicky najednou všechny záznamy databáze bez ohledu na to, zda jsou  záznamy označeny ke  zrušení. Zrušení záznamů  databáze již nelze žádným způsobem obnovit.

UPOZORNĚNÍ:

Databáze musí být pro zrušení všech záznamů nastavena na excluzívní (chráněný) přístup. To lze zajistit buď nastavením vlastnosti DataTable.Exclusive, nebo výhodněji a jednodušeji funkcí DataTable.SetExclusive.

Příklad:

if DataTable.SetExclusive(true) then

   DataTable.Zap;

Viz také:

DataTable.Delete, DataTable.Pack


Knihovna vizuálních komponent

Záložka STANDARD

Bevel	- Komponenta pro tvorbu čar nebo boxů s 3D vzhledem

BitBtn	- Komponenta tlačítka se symbolem (bitmapou)

Button	- Tlačítko pro výběr volby nebo příkazu

CheckBox	- Komponenta sloužící k zadání zaškrtávací volby (ano/ne)

CheckListBox	- Seznam typu Listbox s možností zaškrtnutí volby

ComboBox	- Komponenta seznamu s možností zadání nové položky

Edit	- Komponenta pro zadání jednořádkového vstupu od uživatele

GroupBox	- Skupinování zaškrtávacích či přepínacích boxů

Image	- Komponenta pro práci s obrázky ve formátu BMP nebo WMF

Label	- Zobrazení textu na formuláři

ListBox	- Komponenta pro zobrazení seznamu položek

MainMenu	- Komponenta pro obsluhu hlavního menu na formuláři

MaskEdit	- Formátování dat s kontrolu vstupu od uživatele

Memo	- Zadání a editace víceřádkového vstupu, textu poznámky

Panel	- Komponenta sloužící k seskupování několika komponent

PopupMenu	- Komponenta pro obsluhu lokálního (místního) menu

RadioButton	- Výběr jedné z několika vzájemně se vylučujících voleb

RadioGroup	- Seskupování přepínacích tlačítek (RadioButtons)

ScrollBar	- Horizontální nebo vertikální posuvnítko

ScrollBox	- Plocha na formuláři, kterou lze posouvat

Shape	- Kreslení jednoduchých obrazců (kruh, obdélník)

SpeedButton	- Tlačítko s pro vytváření nástrojových lišt

StaticText	- Komponenta pro zobrazení textu s možností orámování

StringGrid	- Zobrazení řetězců ve sloupcích a řádcích tabulky

Záložka WINDOWS

Animate	- Komponenta pro zobrazení animace

DateTimePicker	- Komponenta pro zobrazení kalendáře a výběr data

DirectoryListBox	- Zobrazení seznamu adresářů s možností výběru

DriveComboBox	- Zobrazení seznamu disků při práci se soubory

FileListBox	- Zobrazení seznamu souborů v adresáři s možností výběru

FilterComboBox	- Komponenta pro zadání filtru při výběru druhu souboru

PageControl	- Zobrazení panelu se záložkami

ProgressBar	- Komponenta pro časové zviditelnění průběhu akce

RichEdit	- Komfortního textový editor s možností změny fontu

StatusBar	- Stavový řádek s doplňujícími informaci o aplikaci

TabControl	- Zobrazení vícestránkového formuláře se záložkami

TrackBar	- Zadání hodnoty tažením jezdce posuvníku

UpDown	- Zadávání číselné hodnoty šipkami (zvýšení/snížení)

Záložka DIALOGY

ColorDialog	- Dialog pro uživatelské nastavení barvy.

FindDialog	- Dialog pro uživatelské zadání hledaného textu.

FontDialog	- Dialog pro uživatelské zadání fontu.

OpenDialog	- Dialog pro uživatelský výběr souboru.

OpenPictureDialog	- Dialog pro uživatelský výběr souboru s obrázkem.

PrintDialog	- Dialog pro zadání a zahájení tisku.

PrinterSetupDialog	- Dialog pro uživatelské nastavení tiskárny.

ReplaceDialog	- Dialog pro zadání nahrazování textu.

SaveDialog	- Dialog pro zadání jména souboru pro uložení.

SavePictureDialog	- Dialog pro zadání souboru s obrázkem pro uložení.

Záložka DATABÁZE

DataComboBox 	- Seznam s možností zadání nové hodnoty

DataCheckBox	- Zobrazení a editace zaškrtávací volby z podřízené databáze

DataEdit	- Editace textové, numerické a datumové položky databáze

DataGrid	- Zobrazení a editace dat v datové mřížce (BROWS)

DataImage	- Obrázky uložené v databázi

DataListBox 	- Výběr ze seznamu předdefinovaných hodnot

DataLookUpCombo	- Výběr ze seznamu z jiné databáze

DataLookUpList 	- Podřízený seznam z jiné databáze

DataMemo	- Zobrazení a editace víceřádkového vstupu - memopoložky

DataNavigator	- Komponenta sloužící k navigaci v databázi

DataRadioGroup	- Databázový přepínací box

DataSource	- Definice zdroje dat pro předávání dalším komponentám

DataTable	- Definice databáze, změny v datech

DataText	- Zobrazení textu položky databáze bez možnosti editace

Záložka Systém

Timer	- Provádění akcí v zadaném časovém intervalu

MediaPlayer	- MultImediální přehrávač

Ostatní komponenty (nejsou umístěny na paletě komponent)

Application 	- Definuje spuštěnou aplikaci

Form 	- Okno windows, ve kterém se tvoří aplikace

MenuItem 	- Položky hlavního menu, případně PoupMenu

Screen 	- Informace o obrazovce

StrArray 	- Vícenásobné řetězce s indexovým přístupem

TabSheet 	- Obsah stránek zobrazených objektem PageControl


Komponenta Animate

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Active (RW)          Align (RW)           AutoSize (*RW)

Center (RW)          Color (RW)           CommonAVI (RW)

Cursor (RW)          FileName (RW)        FrameCount (*R)

Height (RW)          HelpContext (RW)     Hint (RW)

Left (RW)            Name (R)             ParentColor (RW)

ParentShowHint (RW)  Repetitions (RW)     ShowHint (RW)

StartFrame (RW)      StopFrame (RW)       Tag (RW)

Timers (RW)          Top (RW)             Transparent (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

Play                 Reset                Seek

Stop

--------------------------------------------------------------

OnClose              OnOpen               OnStart

OnStop

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta Animate slouží pro přehrávání animovaných sekvencí ve formátu AVI. Soubor pro přehrávání se zadává ve vlastnosti FileName. Přehrávat je možné pouze sekvence bez zvuku a komprese. Jiné formáty přehrávat nelze.

Komponenta obsahuje několik zabudovaných animací přístupných ve vlastnosti CommonAVI. Dle názvu je možné vybrat například animaci pro kopírování nebo výmaz souboru, hledání na disku apod.

Animace se skládá z několika snímků, které se postupně přehrávají. Snímky jsou číslovány od nuly a pro zadání rozsahu přehrávání se pracuje někdy s těmito čísly snímků.

Animace se přehrává po zadání vlastnosti Active na hodnotu True. Z programu lze animaci ovládat metodami Close, Play, Seek a Stop. Metoda Play přebírá jako parametr index počátečního snímku, koncového snímku a zobrazovaného snímku. Metoda Seek nastaví animaci na zadaný snímek.


Komponenta Application

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

HelpFile (*RW)

--------------------------------------------------------------

HelpCommand          HelpContext          HelpJump

ProcessMessage

--------------------------------------------------------------

Objekt nereaguje na žádné události

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta Application není umístěna na paletě komponent, protože je obsažena vždy v každé spuštěné aplikaci. Obsahuje pouze jednu vlastnost a několik metod. Používají se většinou pro práci s nápovědou aplikace.

Vlastnost HelpFile zadává soubor helpu pro celou aplikaci. Ten je možné zadat také v každém formuláři. Pokud však použijete nastavení vlastnosti HelpFile u objektu Application, nebudete muset zadávat soubor s helpem samostatně pro každý formulář.


Komponenta Bevel

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Cursor (RW)          Height (RW)

Hint (RW)            Left (RW)            Name (R)

ParentShowHint (RW)  Shape (RW)           ShowHint (RW)

Style (RW)           Tag (RW)             Top (RW)

Visible (RW)

--------------------------------------------------------------

Objekt nemá žádné metody ani události

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta Bevel se používá pro vykreslování rámečků nebo čar na formuláři. Umožní rozdělit plochu formuláře vizuálně na několik samostatných skupin a tím jej zpřehlednit. Na rozdíl od komponenty Panel máte možnost zobrazit pouze jednu hranu rámečku a zobrazovat tak na formuláři i čáry.

Vlastností Shape máte možnost zadat, zda budou čáry vykreslovány kolem dokola, případně zadat vykreslení pouze jedné z čar na obvodu rámečku.

Vlastnost Style definuje, zda budou čáry opticky vyzvednuty nebo ponořeny.


Komponenta BitBtn

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Cancel (RW)          Caption (RW)         Cursor (RW)

Default (RW)         Enabled (RW)         Font (RW)

Glyph                Height (RW)          HelpContext (RW)

Hint (RW)            Kind (RW)            Layout (RW)

Left (RW)            Margin (RW)          ModalResult (RW)

Name (R)             NumGlyphs (RW)       ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       ShowHint (RW)

Spacing (RW)         Style (RW)           TabOrder (RW)

TabStop (RW)         Tag (RW)             Top (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

Click

--------------------------------------------------------------

OnClick              OnEnter              OnExit

OnKeyDown            OnKeyPress           OnKeyUp

OnMouseDown          OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta BitBtn kombinuje vlastnosti komponent Button a SpeedButton . Umožňuje zobrazit na formuláři tlačítko s textem a bitmapou (obrázkem). Standardní bitmapy již komponenta obsahuje, je však možné použít externí bitmapu.

Základní vlastnosti komponenty jsou stejné jako u komponenty Button. Novou důležitou vlastností je však vlastnost Kind, která obsahuje několik předdefinovaných stylů tlačítka včetně zobrazované bitmapy. Vlastnost Kind současně nastavuje některé další vlastnosti v závislosti na použité bitmapě.

Zobrazovanou bitmapu můžete zadat ve vlastnosti Glyph. V tom případě nezapomeňte nastavit také vlastnost NumGlyphs, která udává počet obsažených obrázků pro zobrazování stavu tlačítka.

Vlastnosti Layout, Spacing a Margin umožní nastavit uspořádání textu a bitmapy na tlačítku.

Nejdůležitější vlastností je OnClick, do které zadáte akci, která se má provést po stisknutí tlačítka. Nezapomeňte na to, že podle nastavení vlastnosti Kind může být formulář po kliknutí na tlačítko uzavřen, aniž zadáte provedení jakékoliv akce.


Komponenta Button

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Cancel (RW)          Caption (RW)         Cursor (RW)

Default (RW)         Enabled (RW)         Font (RW)

Height (RW)          HelpContext (RW)     Hint (RW)

Left (RW)            ModalResult (RW)     Name (R)

ParentFont (RW)      ParentShowHint (RW)  PopupMenu (RW)

ShowHint (RW)        TabOrder (RW)        TabStop (RW)

Tag (RW)             Top (RW)             Visible (RW)

--------------------------------------------------------------

Click                SetFocus

--------------------------------------------------------------

OnClick              OnEnter              OnExit

OnKeyDown            OnKeyPress           OnKeyUp

OnMouseDown          OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta Button se používá pro zobrazení tlačítka na formuláři. Tlačítku je možné zadat akci, která se má provést po kliknutí na tlačítko. Na tlačítku je možné zobrazit pouze text. Pokud požadujete zobrazit bitmapu (obrázek), použijte komponentu BitBtn, případně SpeedButton.

Pro zadání textu na tlačítku použijte vlastnost Caption. Pokud požadujete, aby bylo tlačítko dostupné pomocí klávesy Alt+písmeno, zadejte v textu vlastnosti Caption před požadované písmeno znak &. Například &Tisk. Uvedené písmeno bude po spuštění aplikace na tlačítku podtrženo a po stisku klávesy Alt+podtržené písmeno se provede akce, která je pro uvedené tlačítko zadána v obsloužení události OnClick.

Pokud zadáte u vlastnosti tlačítka vlastnost Cancel := True, potom bude provedena po stisku klávesy ESC akce zadaná v ošetření události OnClick. Takto můžete mít nastaveno pouze jedno tlačítko na formuláři.

V některých situacích bude výhodné použít zablokování použití tlačítka vlastností Enabled. Například pokud nejsou splněny podmínky, které vyžaduje akce prováděná v obsluze události OnClick.


Komponenta CheckBox

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Alignment (RW)       AllowGrayed (RW)     Caption (RW)

Checked (RW)         Color (RW)           Ctl3D (RW)

Cursor (RW)          Enabled (RW)         Font (RW)

Height (RW)          HelpContext (RW)     Hint (RW)

Left (RW)            Name (R)             ParentColor (RW)

ParentCtl3D (RW)     ParentFont (RW)      ParentShowHint (RW)

PopupMenu (RW)       ShowHint (RW)        State (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

SetFocus

--------------------------------------------------------------

OnClick              OnEnter              OnExit

OnKeyDown            OnKeyPress           OnKeyUp

OnMouseDown          OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta CheckBox slouží k zaznamenání stavu logické hodnoty. Možné jsou až tři stavy tlačítka a to True (křížek), False (prázdný čtvereček) a neznámý stav (šedá barva tlačítka). Výběr volby je možné provést buď myší, případně klávesou space (mezera), pokud je objekt zaměřen.

Stav přepínače je uložen ve vlastnosti Checked (pouze True, a False). Neznámý stav dokáže navíc indikovat vlastnost State. Možnost použití neznámého stavu musíte povolit ve vlastnosti AllowGrayed.

Pro zadání, zda se má text u tlačítka zobrazovat vpravo nebo vlevo použijte nastavení vlastnosti Alignment.

Pokud požadujete spojit několik zaškrtávacích tlačítek do jedné skupiny, použijte komponentu CheckListBox. Pro zaznamenání logické hodnoty databáze je určena samostatná komponenta DataCheckBox.


Komponenta CheckListBox

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           AllowGrayed (RW)     BorderStyle (RW)

Checked (*)          Color (RW)           Columns (RW)

Ctl3D (RW)           Cursor (RW)          Enabled (RW)

Font (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            IntegralHeight (RW)  ItemHeight (RW)

ItemIndex (*RW)      Items (RW)           Left (RW)

Name (R)             ParentColor (RW)     ParentCtl3D (RW)

ParentFont (RW)      ParentShowHint (RW)  PopupMenu (RW)

ShowHint (RW)        Sorted (RW)          State (*RW)

Style (RW)           TabOrder (RW)        TabStop (RW)

TabWidth (RW)        Tag (RW)             Top (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

Clear                SetFocus

--------------------------------------------------------------

OnClick              OnClickCheck         OnDblClick

OnEnter              OnExit               OnKeyDown

OnKeyPress           OnKeyUp              OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta CheckListBox, jak již její název napovídá slučuje v sobě možnosti komponent CheckBox a ListBox. Slouží proto pro sestavení rozsáhlých mnohonásobných seznamů s možností připojení zaškrtávacího boxu. Umožňuje proto snadný uživatelský výběr jednotlivých položek ze seznamu.

Seznam položek je uložen ve vlastnosti Items, kterou představuje proměnná typu StrArray. Uvedený typ proměnné má své vlastní metody pro práci s obsaženým seznamem řetězců. Pro zadání počátečního obsahu můžete použít speciální editor přístupný z okna Nastavení objektu, který se aktivuje kliknutím na ikonu se třemi tečkami vpravo od vlastnosti Items.

Jednotlivé položky jsou v seznamu řetězců přístupné svým indexem, to je pořadovým číslem. Položky jsou číslovány od nuly. První položka v pořadí má proto index nula, pátá položka má index 4. Pokud potřebujete zjistit obsah položky, musíte zadat její pořadový index. Obsah první položky proto zobrazíte

ShowMessage(CheckListBox.Items[0]);

Podobným způsobem můžete změnit obsah položky, kdy opět zadáváte index položky a nový obsah. Pro druhou položku v pořadí proto zadáte:

CheckListBox.Items[1]:='druhá položka';

Novou položku do seznamu zadáte z aplikace použitím metody Add následujícím způsobem:

CheckListBox.Items.Add('aaa');

Pokud potřebujete některou položku ze seznamu zrušit, použijte volání metody Delete následujícím způsobem:

CheckListBox.Items.Delete(2);

Potřebujete-li v seznamu vyhledat index položky se zadaným obsahem, použijte  funkci IndexOf:

ShowMessage(CheckListBox.Items.IndexOf('aaa'));

Obsah seznamu můžete uložit na disk do textového souboru, případně načít textový soubor do seznamu metodami SaveToFile a LoadFromFile:

CheckListBox.Items.SaveToFile('seznam.txt');

CheckListBox.Items.LoadFromFile('seznam.txt');

Potřebujete-li projít celý seznam a provést s každou položkou seznamu nějakou akci, použijte vlastnost Items.Count. Musíte přitom počítat s tím, že se seznam čísluje od nuly, počet položek seznamu je však uváděn od jedničky. Od seznamu musíte proto v cyklu jedničku odečíst:

for x:= 0 to CheckListBox.Items.Count-1 do

    CheckListBox.Checked[x] := False;

Jak již bylo uvedeno, hlavní výhoda komponenty CheckListBox je sloučení seznamu se zaškrtávacím boxem. Každá položka má samostatný zaškrtávací box přístupný vlastností Checked, která je dostupná pouze z programu. Podle nastavení vlastnosti AllowGrayed máte možnost zadávat pouze hodnoty True a False, případně i třetí tzv. neznámou hodnotu. Tu máte možnost zjistit pouze testováním vlastnosti State, například následujícím způsobem:

if CheckListBox.State[0] = cbGrayed then

   Edit.Text := 'Odpověď nebyla zadána';

Pokud potřebujete seznam seřadit podle abecedy, použijte vlastnost Sorted. Pro kompletní výmaz seznamu použijte metodu Clear.

Komponenta obsahuje běžné události dovolující například reagovat na zaměření objektu, stisk klávesy nebo myši a podobně. Nejdůležitější událostí je ale událost OnClickCheck, která nastane v okamžiku změny nastavení zaškrtávacího tlačítka seznamu. Vybranou položku seznamu zjistíte v události ItemIndex.


Komponenta ColorDialog

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Color (RW)           Ctl3D (RW)           HelpContext (RW)

Name (R)             Options              Tag (RW)

--------------------------------------------------------------

Execute

--------------------------------------------------------------

OnClose              OnShow

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta ColorDialog slouží pro zadání barvy z aplikace. Dialog se vyvolá metodou Execute, pokud se ukončí dialog stiskem klávesy 'OK', bude vybraná barva přístupná ve vlastnosti Color.

Příklad:

Po kliknutí na tlačítko Button se aktivuje dialog pro výběr barvy. Pokud je barva vybrána, použije se vybraná barva na barvu formuláře.

procedure TForm.ButtonClick(Sender: TObject);

begin

   if ColorDialog.Execute then

      Form.Color := ColorDialog.Color;

end;


Komponenta ComboBox

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Color (RW)           Ctl3D (RW)           Cursor (RW)

DropDownCount (RW)   Enabled (RW)         Font (RW)

Height (RW)          HelpContext (RW)     Hint (RW)

ItemHeight (RW)      ItemIndex (RW)       Items (RW)

Left (RW)            MaxLength (RW)       Name (R)

ParentColor (RW)     ParentCtl3D (RW)     ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       SelLength (*RW)

SelStart (*RW)       SelText (*RW)        ShowHint (RW)

Sorted (RW)          Style (RW)           TabOrder (RW)

TabStop (RW)         Text (RW)            Top (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

Clear

--------------------------------------------------------------

OnChange             OnClick              OnDblClick

OnEnter              OnExit               OnKeyDown

OnKeyPress           OnKeyUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta ComboBox kombinuje editační pole spolu se seznamem řetězců, který slouží pro výběr jedné z předvolených hodnot. Seznam řetězců se přitom většinou zobrazuje automaticky pouze při požadavku na změnu obsahu editačního pole objektu ComboBox.

Objekt ComboBox může být zobrazován ve třech variantách závislých na nastavení vlastnosti Style. Standardní zobrazení je, že se zobrazuje pouze editační okno s jednou vybranou položkou. Tu lze dle nastavení buď editovat, případně je editace zakázána. Další možností je zobrazovat seznam hodnot stále.

Seznam položek pro uživatelský výběr je uložen ve vlastnosti Items, kterou představuje proměnná typu StrArray. Uvedený typ proměnné má své vlastní metody pro práci s obsaženým seznamem řetězců. Pro zadání počátečního obsahu můžete použít speciální editor přístupný z okna nastavení objektů, který se aktivuje kliknutím na ikonu se třemi tečkami vpravo od vlastnosti Items.

Jednotlivé položky jsou v seznamu řetězců přístupné svým indexem, to je pořadovým číslem. Položky jsou číslovány od nuly. První položka v pořadí má proto index nula, pátá položka má index 4. Pokud potřebujete zjistit obsah položky, musíte zadat její pořadový index. Obsah první položky proto zobrazíte

ShowMessage(ComboBox.Items[0]);

Podobným způsobem můžete změnit obsah položky, kdy opět zadáváte index položky a nový obsah. Pro druhou položku v pořadí proto zadáte:

ComboBox.Items[1]:='druhá položka';

Novou položku do seznamu zadáte z aplikace použitím metody Add následujícím způsobem:

ComboBox.Items.Add('aaa');

Pokud potřebujete některou položku ze seznamu zrušit, použijte volání metody Delete následujícím způsobem:

ComboBox.Items.Delete(2);

Potřebujete-li v seznamu vyhledat index položky se zadaným obsahem, použijte  funkci IndexOf:

ShowMessage(ComboBox.Items.IndexOf('aaa'));

Obsah seznamu můžete uložit na disk do textového souboru metodou SaveToFile, případně načít textový soubor do seznamu metodou LoadFromFile:

ComboBox.Items.SaveToFile('seznam.txt');

ComboBox.Items.LoadFromFile('seznam.txt');

Potřebujete-li projít celý seznam a provést s každou položkou seznamu nějakou akci, použijte vlastnost Items.Count. Musíte přitom počítat s tím, že se seznam čísluje od nuly, počet položek seznamu je však uváděn od jedničky. Od seznamu musíte proto v cyklu jedničku odečíst:

for x:= 0 to ComboBox.Items.Count-1 do

    Memo.Lines.Add(ComboBox.Items[x]);

Pokud potřebujete seznam seřadit podle abecedy, použijte vlastnost Sorted. Pro kompletní výmaz seznamu použijte metodu .


Komponenta DataComboBox

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Color (RW)           Ctl3D (RW)           Cursor (RW)

DataField (RW)       DataSource (RW)      DropDownCount (RW)

Enabled (RW)         Font (RW)            Height (RW)

HelpContext (RW)     Hint (RW)            ItemHeight (RW)

ItemIndex (*RW)      Items (RW)           Left (RW)

Name (R)             ParentColor (RW)     ParentCtl3D (RW)

ParentFont (RW)      ParentShowHint (RW)  PopupMenu (RW)

ReadOnly (RW)        SelLength (*RW)      SelStart (*RW)

SelText (*RW)        ShowHint (RW)        Sorted (RW)

Style (RW)           TabOrder (RW)        TabStop (RW)

Tag (RW)             Text (*RW)           Top (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

Clear

--------------------------------------------------------------

OnChange             OnClick              OnDblClick

OnEnter              OnExit               OnKeyDown

OnKeyPress           OnKeyUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta  DataComboBox  má   podobnou  funkci  jako  komponenta DataListBox.  Může  tedy  sloužit   jako  číselník  pro  zadávání předvolených hodnot. Mimo výběru hodnoty ze seznamu dovoluje také zápis  nové  hodnoty.  Komponentu  představuje  ComboBox,  to  je kombinace ListBoxu a komponenty DataEdit. Při procházení databází zobrazuje  objekt  DataComboBox  vždy  hodnotu  příslušné položky databáze   a  to   i  v   případě,  že   není  shodná   s  žádnou z předdefinovaných položek zadaných ve vlastnosti Items.

Předvolené hodnoty mohou být zadány při návrhu aplikace, případně je možné  je zadat z  programu při vytváření  formuláře, případně může být seznam hodnot doplňován kdykoliv z programu.

Zdroj připojených  dat je uveden ve  vlastnosti DataSource. Udává se  zdroj  připojené  podřízené  databáze,  ze  které se zobrazuje databázová  položka.  Podřízená  položka  databáze  se  zadává ve vlastnosti DataField.

Aktuální   zobrazovaný   text   obsažený   v   objektu  (převzatý z databáze)  je dostupný  ve vlastnosti  text. Změnou  vlastnosti však nedosáhnete změny obsahu podřízené databázové položky.

Změnou   hodnoty   obsažené   v   objektu   DataComboBox  nedojde automaticky k uložení zadané hodnoty do databáze. K tomu je nutné buď  kliknout na  tlačítko Post  objektu DataNavigator,  případně změnit pozici  v databázi přechodem na  jiný záznam. Nedoporučuje se používat volání metody Post u události OnChange, protože může dojít  ke vzájemnému  ovlivňování stavů  komponent na  formuláři. Místo toho lze použít volání metody Post v události OnExit, to je při změně zaměření objektu DataComboBox.

Seznam  položek pro  uživatelský  výběr  je uložen  ve vlastnosti Items,  kterou představuje  proměnná typu  StrArray. Uvedený  typ proměnné  má své  vlastní metody  pro práci  s obsaženým seznamem řetězců.  Pro zadání  počátečního obsahu  můžete použít speciální editor  přístupný z  okna  nastavení  objektů, který  se aktivuje kliknutím na ikonu se třemi tečkami vpravo od vlastnosti Items.

Jednotlivé položky jsou v seznamu řetězců přístupné svým indexem, to  je pořadovým  číslem. Položky  jsou číslovány  od nuly. První položka v  pořadí má proto index  nula, pátá položka má  index 4. Pokud  potřebujete  zjistit  obsah  položky,  musíte  zadat  její pořadový index. Obsah první položky proto zobrazíte:

ShowMessage(DataComboBox.Items[0]);

Podobným způsobem můžete změnit  obsah položky, kdy opět zadáváte index  položky a  nový obsah.  Pro druhou  položku v pořadí proto zadáte:

DataComboBox.Items[1]:='druhá položka';

Novou položku  do seznamu zadáte  z aplikace použitím  metody Add následujícím způsobem:

DataComboBox.Items.Add('aaa');

Pokud  potřebujete některou  položku ze  seznamu zrušit, použijte volání metody Delete následujícím způsobem:

DataComboBox.Items.Delete(2);

Potřebujete-li  v  seznamu  vyhledat  index  položky  se  zadaným obsahem, použijte funkci IndexOf:

ShowMessage(DataComboBox.Items.IndexOf('aaa'));

Obsah  seznamu  můžete  uložit  na  disk  do  textového  souboru, případně načít textový soubor do seznamu metodami SaveToFile a LoadFromFile:

DataComboBox.Items.SaveToFile('seznam.txt');

DataComboBox.Items.LoadFromFile('seznam.txt');

Potřebujete-li  projít celý  seznam a  provést s  každou položkou seznamu  nějakou  akci,  použijte  vlastnost  Items.Count. Musíte přitom počítat s tím, že se seznam čísluje od nuly, počet položek seznamu  je  však  uváděn  od  jedničky.  Od seznamu musíte proto v cyklu jedničku odečíst:

for x:= 0 to DataComboBox.Items.Count-1 do

    Memo.Lines.Add(DataComboBox.Items[x]);

Pokud   potřebujete  seznam   seřadit  podle   abecedy,  použijte vlastnost  Sorted. Pro  kompletní výmaz  seznamu použijte  metodu Clear.

Vlastnost  Style objektu   DataComboBox  umožňuje  zadat  formát zobrazení  objektu na  formuláři, to  je zda  je seznam  rozbalen trvale, případně pouze v případě výběru nové hodnoty.


Komponenta DataCheckBox

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Alignment (RW)       AllowGrayed (RW)     Caption (RW)

Checked (*RW)        Color (RW)           Ctl3D (RW)

Cursor (RW)          DataField (RW)       DataSource (RW)

Enabled (RW)         Font (RW)            Height (RW)

HelpContext (RW)     Hint (RW)            Left (RW)

Name (R)             ParentColor (RW)     ParentCtl3D (RW)

ParentFont (RW)      ParentShowHint (RW)  PopupMenu (RW)

ReadOnly (RW)        ShowHint (RW)        State (*)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Top (RW)             ValueChecked (RW)    ValueUnchecked (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

SetFocus

--------------------------------------------------------------

OnClick              OnEnter              OnExit

OnKeyDown            OnKeyPress           OnKeyUp

OnMouseDown          OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Obsah logických položek databáze je možné zobrazit a editovat jejich obsah komponentou DataCheckBox. Zobrazovat je možné tři stavy. Hodnota True je zobrazována zatrženým čtverečkem, hodnota False se zobrazuje prázdným čtverečkem. Pokud není hodnota definována, je čtvereček zobrazen šedivou barvou.

Komponenta je napojena na databázi přes komponentu DataSource. Propojení se zadává ve vlastnosti DataSource. Dále musíte zadat ve vlastnosti DataField položku databáze, která je komponentou zobrazována.

Pokud bude stav přepínače editován uživatelsky z klávesnice, je změna zaznamenána automaticky do databáze při změně pozice v databázi nebo na příkaz uživatele kliknutím na příslušné tlačítko objektu DataNavigator. Při změně textu z programu musíte použít nejprve metodu Edit pro přepnutí do editačního módu, následně změnit stav přepínače a nakonec uložit provedené změny metodou Post:

DataTable.Edit;

DataCheckBox.Checked := True;

DataTable.Post;

Komponentou DataCheckBox je možné zobrazovat a editovat i hodnoty jiného než logického typu. K tomu slouží vlastnosti ValueChecked, do které se zadá hodnota pro zobrazení True a vlastnost ValueUnChecked, do které se zadá hodnota pro zobrazení False. Pokud například zadáte pro zobrazení procenta DPH příslušné procento, bude se zobrazovat výsledek True/False podle stavu obsahu databázové položky obsahující procento DPH. Navíc je možné takovouto položku i editovat komponentou DataCheckBox, kdy bude podle výběru True/False doplněna příslušná hodnota dle zadání ve vlastnosti ValueChecked, případně ValueUnChecked.


Komponenta DataEdit

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

AutoSelect (RW)      AutoSize (RW)        BorderStyle (RW)

CharCase (RW)        Color (RW)           Ctl3D (RW)

Cursor (RW)          DataField (RW)       DataSource (RW)

Enabled (RW)         Font (RW)            Height (RW)

HelpContext (RW)     Hint (RW)            Left (RW)

MaxLength (RW)       Modified (*RW)       Name (R)

ParentColor (RW)     ParentCtl3D (RW)     ParentFont (RW)

ParentShowHint (RW)  PasswordChar (RW)    PopupMenu (RW)

ReadOnly (RW)        SelLength (*RW)      SelStart (*RW)

SelText (*RW)        ShowHint (RW)        TabOrder (RW)

TabStop (RW)         Tag (RW)             Text (*RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

Clear                ClearSelection       CopyToClipboard

CutToClipboard       PasteFromClipboard   SetFocus

--------------------------------------------------------------

OnChange             OnClick              OnDblClick

OnEnter              OnExit               OnKeyDown

OnKeyPress           OnKeyUp              OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta DataEdit se používá pro zápis jednořádkového textu umístěného v databázi.  Při nastavení vlastnosti ReadOnly ji lze také použít pro zobrazení textu bez možnosti editace. Pro zobrazení textu položky databáze bez možnosti editace lze použít také komponentu DataText.

Nejdůležitější vlastností je DataSource, ve které se udává zdroj připojených dat. Položku databáze zadáváte ve vlastnosti DataField.

Editovaný text je uložen ve vlastnosti Text. Délka editovaného textu se zadává ve vlastnosti MaxLength. Pokud uvedete větší hodnotu, než je délka editované položky v databázi, bude do databáze uložen pouze text o délce odpovídající definici struktury databáze.

Pokud bude text editován uživatelsky z klávesnice, je změna zaznamenána automaticky do databáze při změně pozice v databázi nebo na příkaz uživatele kliknutím na příslušné tlačítko objektu DataNavigator. Při změně textu z programu musíte použít nejprve metodu Edit pro přepnutí do editačního módu, následně změnit text a nakonec uložit provedené změny metodou Post:

DataTable.Edit;

DataEdit.Text := 'abcd';

DataTable.Post;

Druh orámování textu zadává vlastnost BorderStyle, barvu podkladu zadáte ve vlastnosti Color. Můžete také změnit Font. Pokud požadujete možnost přístupu k editovanému textu na formuláři pomocí rychlé Alt klávesy, umístěte nad editovaný text komponentu Label s nastavením vlastnosti FocusControl, ve které zadáte objekt s editovaným textem.

Pro automatický převod na velká nebo malá písmena je možné použít vlastnost CharCase. Pokud má sloužit editovaný text jako heslo, lze změnou vlastnosti PasswordChar zadat znak, který se zobrazuje v editovaném textu místo zadávaných znaků.

Editovaný text lze přenášet přes schránku Windows do jiného textu. Buď uživatelsky z klávesnice, nebo z programu. Vybraný text lze označit pomocí vlastností SelStart, SelLength a SelText. Celý text lze označit metodou SelectAll, pro výmaz označené části textu se použije ClearSelection. Přenos textu mezi schránkou a objektem zajišťují metody CopyToClipboard, CutToClipboard, PasteFromClipboard.

Komponenta obsahuje mimo běžných událostí i událost OnChange, která nastane v okamžiku změny textu. Ta může nastat ve dvou případech. Buď je uživatelem změněn text z klávesnice, avšak také v případě změny textu při přechodu na nový záznam databáze. Pokud proto potřebuje ošetřit uživatelskou změnu z klávesnice, použijte událost OnKeyPress.


Komponenta DataGrid

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           BorderStyle (RW)     Color (RW)

Columns              Ctl3D (RW)           Cursor (RW)

DataSource (RW)      Enabled (RW)         FixedColor (RW)

Font (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            Left (RW)            Name (R)

Options              ParentColor (RW)     ParentCtl3D (RW)

ParentFont (RW)      ParentShowHint (RW)  PopupMenu (RW)

ReadOnly (RW)        ShowHint (RW)        TabOrder (RW)

TabStop (RW)         Tag (RW)             TitleFont (RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

SetFocus

--------------------------------------------------------------

OnColEnter           OnColExit            OnDblClick

OnEnter              OnExit               OnKeyDown

OnKeyPress           OnKeyUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta DataGrid se požívá na zobrazení dat ve tvaru databázové mřížky, která umožňuje i editaci dat.

Nejdůležitější vlastností je DataSource, která definuje zdroj dat. Pokud se zadá objekt DataSource, který je dále napojen na aktivovanou databázi (objekt DataTable), bude datová mřížka zobrazovat data již při návrhu aplikace. Důležitou vlastností je také vlastnost ReadOnly, která udává, zda je možné data editovat. Hodnotou True povolíme editaci, hodnota False editaci zakáže. Pozor však na to, že vlastnost ReadOnly má také objekt DataTable, na který je datová mřížka napojena.

Komponenta DataGrid dokáže reagovat mimo běžných událostí i na událost OnColEnter při vstupu do nového sloupce a OnColExit při výstupu ze sloupce datové mřížky. Obdobně dokáže samozřejmě reagovat událostmi OnEnter a OnExit při vstupu a výstupu z celé datové mřížky. Pro kontrolu vstupu dat na úrovni stisku jednotlivých kláves můžete použít události OnKeyDown a OnKeyPress.

UPOZORNĚNÍ:

Zrušený záznam v databázi je pouze označen ke zrušení. Fyzicky je vymazán až následným, krokem (DataTable.Pack). Záznamy označené ke zrušení mohou být proto stále v datové mřížce zobrazovány. Stav zobrazování záznamů určených ke zrušení závisí na přepínači, který se ovládá procedurou DbfSetDeleted. Pokud zadáte DbfSetDeleted(False), nebudou se záznamy určené ke zrušení zobrazovat. Nastavení přepínače je platné pro celý systém KLONDAIK, pro všechny databáze používané na formuláři i v databázovém okně.

Vizuální vzhled jednotlivých sloupců datové mřížky - komponenty DataGrid je možné změnit pouze v době návrhu programu. K tomu slouží vizuální návrhář, který je popsán v kurzu použití programu.


Komponenta DataImage

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           AutoDisplay (RW)     BorderStyle (RW)

Center (RW)          Color (RW)           Ctl3D (RW)

Cursor (RW)          DataField (RW)       DataSource (RW)

Enabled (RW)         Font (RW)            Height (RW)

HelpContext (RW)     Hint (RW)            Left (RW)

Name (R)             ParentColor (RW)     ParentCtl3D (RW)

ParentFont (RW)      ParentShowHint (RW)  PopupMenu (RW)

ReadOnly (RW)        ShowHint (RW)        Stretch (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

CopyToClipboard      CutToClipboard       LoadPicture

PasteFromClipboard   Picture.LoadFromFile Picture.SaveToFile

--------------------------------------------------------------

OnClick              OnDblClick           OnEnter

OnExit               OnKeyDown            OnKeyPress

OnKeyUp              OnMouseDown          OnMouseMove

OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponeta DataImage slouží pro zobrazování obrázků uložených v databázi na formuláři. Obrázek je uložen v databázové položce typu Memo. S memopoložkou obsahující obrázky lze manipulovat pouze metodami zde uvedenými.

UPOZORNĚNÍ:

Jakékoliv jiné akce (například přes objekt DataTable) budou mít za následek narušení informací o obrázku a tím i nemožnost jeho zobrazování !

Nejdůležitější vlastností je DataSource, ve které se udává zdroj připojených dat. Položku databáze, ve které je obrázek uložen zadáváte ve vlastnosti DataField. Musí být typu Memo a nesmí obsahovat text.

Jednou z možností přesunu bitmapy do databáze a vyjmutí s databáze je použití metod CopyToClipboard, CutToClipboard a PasteFromClipboard. Obrázek lze přesunout do memolopožky také voláním metod Picture.LoadFromFile, kdy se musí jako parametr uvést jméno souboru s obrázkem, který musí být typu *.BMP. Obdobně lze uložit obrázek z databáze do souboru voláním metody Picture.SaveToFile. Při změně obsahu databázové položky programu musíte použít nejprve metodu Edit pro přepnutí do editačního módu, následně volat požadovanou metodu pro akci s bitmapou a nakonec uložit provedené změny metodou Post:

DataTable.Edit;

DataImage.Picture.LoadFromFile('obrazek.bmp');

DataTable.Post;

Pokud má být bitmapa zobrazena na celé ploše objektu, nastavte vlastnost Stretch . Při požadavku na automatickou změnu velikosti objektu podle velikosti bitmapy nastavte vlastnost AutoSize. Při požadavku na vycentrování  bitmapy na ploše objektu nastavte vlastnost Center.


Komponenta DataListBox

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           BorderStyle (RW)     Color (RW)

Ctl3D (RW)           Cursor (RW)          DataField (RW)

DataSource (RW)      Enabled (RW)         Font (RW)

Height (RW)          HelpContext (RW)     Hint (RW)

IntegralHeight (RW)  ItemHeight (RW)      ItemIndex (*RW)

Items (RW)           Left (RW)            Name (R)

ParentColor (RW)     ParentCtl3D (RW)     ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       ReadOnly (RW)

ShowHint (RW)        Style (RW)           TabOrder (RW)

TabStop (RW)         Tag (RW)             Top (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

Clear

--------------------------------------------------------------

OnClick              OnDblClick           OnEnter

OnExit               OnKeyDown            OnKeyPress

OnKeyUp              OnMouseDown          OnMouseMove

OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta    DataListBox    se    používá    pro    výběr   jedné z předdefinovaných  hodnot, které  jsou zobrazeny  v seznamu typu ListBox. Typické použití je například pro výběr dle číselníku, ve kterém  se  uživateli  zobrazují  slovní  popisy.  Při procházení databáze  je   vždy  zvýrazněn  řádek   seznamu,  který  odpovídá podřízené položce databáze.

Předvolené hodnoty mohou být zadány při návrhu aplikace, případně je možné  je zadat z  programu při vytváření  formuláře, případně může být seznam hodnot doplňován kdykoliv z programu.

Zdroj připojených  dat je uveden ve  vlastnosti DataSource. Udává se  zdroj  připojené  podřízené  databáze,  ze  které se zobrazuje databázová  položka.  Podřízená  položka  databáze  se  zadává ve vlastnosti DataField.

Uživatelskou  změnou  zvýrazněné  hodnoty  v  seznamu (kliknutím) nedojde automaticky k uložení zadané  hodnoty do databáze. K tomu je  nutné buď  kliknout na  tlačítko Post  objektu DataNavigator, případně použít  volání metody Post  v události OnExit, to je při změně zaměření objektu DataListBox.

Seznam  položek pro  uživatelský  výběr  je uložen  ve vlastnosti Items,  kterou představuje  proměnná typu  StrArray. Uvedený  typ proměnné  má své  vlastní metody  pro práci  s obsaženým seznamem řetězců.  Pro zadání  počátečního obsahu  můžete použít speciální editor  přístupný z  okna  nastavení  objektů, který  se aktivuje kliknutím na ikonu se třemi tečkami vpravo od vlastnosti Items.

Jednotlivé položky jsou v seznamu řetězců přístupné svým indexem, to  je pořadovým  číslem. Položky  jsou číslovány  od nuly. První položka v  pořadí má proto index  nula, pátá položka má  index 4. Pokud  potřebujete  zjistit  obsah  položky,  musíte  zadat  její pořadový index. Obsah první položky proto zobrazíte:

ShowMessage(DataListBox.Items[0]);

Podobným způsobem můžete změnit  obsah položky, kdy opět zadáváte index  položky a  nový obsah.  Pro druhou  položku v pořadí proto zadáte:

DataListBox.Items[1]:='druhá položka';

Novou položku  do seznamu zadáte  z aplikace použitím  metody Add následujícím způsobem:

DataListBox.Items.Add('aaa');

Pokud  potřebujete některou  položku ze  seznamu zrušit, použijte volání metody Delete následujícím způsobem:

DataListBox.Items.Delete(2);

Potřebujete-li  v  seznamu  vyhledat  index  položky  se  zadaným obsahem, použijte funkci IndexOf:

ShowMessage(DataListBox.Items.IndexOf('aaa'));

Obsah  seznamu  můžete  uložit  na  disk  do  textového  souboru, případně načít textový soubor do seznamu metodami SaveToFile a LoadFromFile:

DataListBox.Items.SaveToFile('seznam.txt');

DataListBox.Items.LoadFromFile('seznam.txt');

Potřebujete-li  projít celý  seznam a  provést s  každou položkou seznamu  nějakou  akci,  použijte  vlastnosti Items.Count. Musíte přitom počítat s tím, že se seznam čísluje od nuly, počet položek seznamu  je  však  uváděn  od  jedničky.  Od seznamu musíte proto v cyklu jedničku odečíst:

for x:= 0 to DataListBox.Items.Count-1 do

    Memo.Lines.Add(DataListBox.Items[x]);

Pokud   potřebujete  seznam   seřadit  podle   abecedy,  použijte vlastnost  Sorted. Pro  kompletní výmaz  seznamu použijte  metodu Clear.


Komponenta DataLookUpCombo

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Color (RW)           Ctl3D (RW)           Cursor (RW)

DataField (RW)       DataSource (RW)      DropDownAlign (RW)

DropDownRows (RW)    DropDownWidth (RW)   Enabled (RW)

Font (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            KeyField (RW)        Left (RW)

ListField (RW)       ListSource (RW)      Name (R)

ParentColor (RW)     ParentCtl3D (RW)     ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       ReadOnly (RW)

ShowHint (RW)        TabOrder (RW)        TabStop (RW)

Tag (RW)             Text (*RW)           Top (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

OnClick              OnCloseUp            OnEnter

OnExit               OnKeyDown            OnKeyPress

OnKeyUp              OnMouseDown          OnMouseMove

OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta   DataLookUpCombo   se   používá   pro   výběr   jedné z předdefinovaných  hodnot, které  jsou na  rozdíl od  komponenty DataComboBox nabízeny  z  jiné   databáze.  Typické  použití  je například  pro  výběr  dle  číselníku,  ve  kterém  se  uživateli zobrazují  slovní   popisy.  Při  procházení   databáze  je  vždy zvýrazněn  řádek   seznamu,  který  odpovídá   podřízené  položce databáze.

Zdroj připojených  dat je uveden ve  vlastnosti DataSource. Udává se zdroj, ze které se zobrazuje databázová položka, která je dále napojena na  podřízený číselník. Zobrazovaná  položka databáze se zadává ve vlastnosti DataField.

Pro  podřízený  číselník  je  nutné  definovat  samostatný objekt DataTable a DataSource,  ve kterých  uvedeme databázi obsahující číselník.  Uvedená  databáze  je   potom  použita  ve  vlastnosti ListSource objektu DataLookUpCombo.  Název pole,  ze kterého  se budou  data  předávat  do  druhé  tabulky  při potvrzení volby se definuje  ve  vlastnosti  KeyField.  Ve  vlastnosti  ListField se zadává,  které  položky  databáze  číselníku  se mají zobrazovat. Pokud  se uvede  více databázových  položek oddělených středníky, budou  se  zobrazovat  ve  výběrovém  poli  vedle sebe ve tvaru tabulky.

Aktuální   zobrazovaný   text   obsažený   v   objektu  (převzatý z databáze)  je dostupný  ve vlastnosti  text. Změnou  vlastnosti však nedosáhnete změny obsahu podřízené databázové položky.

Uživatelskou  změnou  zvýrazněné  hodnoty  v  seznamu (kliknutím) nedojde automaticky k uložení zadané  hodnoty do databáze. K tomu je  nutné buď  kliknout na  tlačítko Post  objektu DataNavigator, případně změnit  pozici v databázi  přechodem na jiný  záznam. Je také možné použít volání metody Post u události OnClick.


Komponenta DataLookUpList

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           BorderStyle (RW)     Color (RW)

Ctl3D (RW)           Cursor (RW)          DataField (RW)

DataSource (RW)      Enabled (RW)         Font (RW)

Height (RW)          HelpContext (RW)     Hint (RW)

KeyField (RW)        Left (RW)            ListField (RW)

ListSource (RW)      Name (R)             ParentColor (RW)

ParentCtl3D (RW)     ParentFont (RW)      ParentShowHint (RW)

PopupMenu (RW)       ReadOnly (RW)        RowCount (RW)

ShowHint (RW)        TabOrder (RW)        TabStop (RW)

Tag (RW)             Top (RW)             Visible (RW)

Width (RW)

--------------------------------------------------------------

OnClick              OnDblClick           OnEnter

OnExit               OnKeyDown           OnKeyPress

OnKeyUp              OnMouseDown          OnMouseMove

OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta   DataLookUpList   se    používá   pro   výběr   jedné z předdefinovaných  hodnot, které  jsou na  rozdíl od  komponenty DataListBox nabízeny   z  jiné  databáze.   Typické  použití  je například  pro  výběr  dle  číselníku,  ve  kterém  se  uživateli zobrazují  slovní   popisy.  Při  procházení   databáze  je  vždy zvýrazněn  řádek   seznamu,  který  odpovídá   podřízené  položce databáze.

Zdroj připojených  dat je uveden ve  vlastnosti DataSource. Udává se zdroj, ze které se zobrazuje databázová položka, která je dále napojena na  podřízený číselník. Zobrazovaná  položka databáze se zadává ve vlastnosti DataField.

Pro  podřízený  číselník  je  nutné  definovat  samostatný objekt DataTable a DataSource,  ve kterých  uvedeme databázi obsahující číselník.  Uvedená  databáze  je   potom  použita  ve  vlastnosti ListSource objektu  DataLookUpList.  Název  pole,  ze kterého se budou  data  předávat  do  druhé  tabulky  při potvrzení volby se definuje  ve  vlastnosti  KeyField.  Ve  vlastnosti  ListField se zadává,  které  položky  databáze  číselníku  se mají zobrazovat. Pokud  se uvede  více databázových  položek oddělených středníky, budou  se  zobrazovat  ve  výběrovém  poli  vedle sebe ve tvaru tabulky.

Uživatelskou  změnou  zvýrazněné  hodnoty  v  seznamu (kliknutím) nedojde automaticky k uložení zadané  hodnoty do databáze. K tomu je  nutné buď  kliknout na  tlačítko Post  objektu DataNavigator, případně změnit  pozici v databázi  přechodem na jiný  záznam. Je také možné použít volání metody Post u události OnClick.


Komponenta DataMemo

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Alignment (RW)       AutoDisplay (RW)

BorderStyle (RW)     Color (RW)           Ctl3D (RW)

Cursor (RW)          DataField (RW)       DataSource (RW)

Enabled (RW)         Font (RW)            Height (RW)

HelpContext (RW)     Hint (RW)            Left (RW)

Lines (*RW)          MaxLength (RW)       Modified (*RW)

Name (R)             ParentColor (RW)     ParentCtl3D (RW)

ParentFont (RW)      ParentShowHint (RW)  PopupMenu (RW)

ReadOnly (RW)        ScrollBars (RW)      SelLength (*RW)

SelStart (*RW)       SelText (*RW)        ShowHint (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Top (RW)             Visible (RW)         WantTabs (RW)

Width (RW)           WordWrap (RW)

--------------------------------------------------------------

Clear                ClearSelection       CopyToClipboard

CutToClipboard       LoadMemo             PasteFromClipboard

SelectAll            SetFocus

--------------------------------------------------------------

OnChange             OnClick              OnDblClick

OnEnter              OnExit               OnKeyDown

OnKeyPress           OnKeyUp              OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta DataMemo se používá pro zápis a zobrazení víceřádkového textu umístěného v databázi.  Při nastavení vlastnosti ReadOnly ji lze také použít pro zobrazení víceřádkového textu bez možnosti editace.

Nejdůležitější vlastností je DataSource, ve které se udává zdroj připojených dat. Položku databáze zadáváte ve vlastnosti DataField.

Pokud bude text editován uživatelsky z klávesnice, je změna zaznamenána automaticky do databáze při změně pozice v databázi nebo na příkaz uživatele kliknutím na příslušné tlačítko objektu DataNavigator. Při změně textu z programu musíte použít nejprve metodu Edit pro přepnutí do editačního módu, následně změnit text a nakonec uložit provedené změny metodou Post:

DataTable.Edit;

DataMemo.Text := 'abcd';

DataTable.Post;

Druh orámování textu zadává vlastnost BorderStyle, barvu podkladu zadáte ve vlastnosti Color. Můžete také změnit Font. Pokud požadujete možnost přístupu k editovanému textu na formuláři pomocí rychlé Alt klávesy, umístěte nad editovaný text komponentu Label s nastavením vlastnosti FocusControl, ve které zadáte objekt s editovaným textem.

Editovaný text lze přenášet přes schránku Windows do jiného textu. Buď uživatelsky z klávesnice, nebo z programu. Vybraný text lze označit pomocí vlastností SelStart, SelLength a SelText. Celý text lze označit metodou SelectAll, pro výmaz označené části textu se použije ClearSelection. Přenos textu mezi schránkou a objektem zajišťují metody CopyToClipboard, CutToClipboard, PasteFromClipboard.

Komponenta obsahuje mimo běžných událostí i událost OnChange, která nastane v okamžiku změny textu. Ta může nastat ve dvou případech. Buď je uživatelem změněn text z klávesnice, avšak také v případě změny textu při přechodu na nový záznam databáze. Pokud proto potřebujete ošetřit uživatelskou změnu z klávesnice, použijte událost OnKeyPress.

Text je uložen ve vlastnosti Lines, kterou představuje proměnná typu StrArray. Uvedený typ proměnné má své vlastní metody pro práci s obsaženým textem. Pro zadání počátečního obsahu textu můžete použít editor přístupný z okna nastavení objektů, který se aktivuje kliknutím na ikonu se třemi tečkami vpravo od vlastnosti Lines.

Jednotlivé řádky textu jsou z programu přístupné svým indexem, to je pořadovým číslem řádku. Řádky jsou číslovány od nuly. První řádek má proto index nula, pátý řádek má index 4. Pokud potřebujete zjistit obsah řádku, musíte zadat jeho pořadový index. Obsah prvního řádku proto zobrazíte:

ShowMessage(DataMemo.Lines[0]);

Podobným způsobem můžete změnit obsah řádku, kdy opět zadáváte index řádku a nový obsah. Pro druhý řádek v pořadí proto zadáte:

DataMemo.Lines[1]:='druhý řádek';

Nový řádek zadáte do textu z programu použitím metody Add následujícím způsobem:

DataMemo.Lines.Add('aaa');

Pokud potřebujete některý řádek textu zrušit, použijte volání metody Delete následujícím způsobem:

DataMemo.Lines.Delete(2);

Potřebujete-li v textu vyhledat index řádku se známým obsahem, použijte  funkci IndexOf:

ShowMessage(DataMemo.Lines.IndexOf('aaa'));

Editovaný text můžete uložit na disk do textového souboru metodou SaveToFile, případně načít textový soubor do textu metodou LoadFromFile:

DataMemo.Lines.SaveToFile('seznam.txt');

DataMemo.Lines.LoadFromFile('seznam.txt');

Potřebujete-li projít celý text a provést s každým řádkem nějakou akci, použijte vlastnost Lines.Count. Musíte přitom počítat s tím, že se řádky číslují od nuly, počet položek řádek textu je však uváděn od jedničky. Od počtu řádků musíte proto v cyklu jedničku odečíst:

DataMemo.Edit;

for x:= 0 to DataMemo.Lines.Count-1 do

    DataMemo.Lines[x] := CsWinToLat(DataMemo.Lines[x]);

DataMemo.Post;

Editovaný text je také přístupný jako celek ve vlastnosti Text, která je přístupná pouze z programu. Délka editovaného textu se zadává ve vlastnosti MaxLength. Standardně je zadána nula, což znamená, že délka textu je omezena velikostí do 65 Kb. Větší délku nelze nastavit.


Komponenta DataNavigator

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           ConfirmDelete (RW)   Ctl3D (RW)

Cursor (RW)          DataSource (RW)      Enabled (RW)

Flat (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            Hints (RW)           Left (RW)

Name (R)             ParentCtl3D (RW)     ParentShowHint (RW)

PopupMenu (RW)       ShowHint (RW)        TabOrder (RW)

TabStop (RW)         Tag (RW)             Top (RW)

Visible (RW)         VisibleButtons       Width (RW)

--------------------------------------------------------------

NavigatorButtons

--------------------------------------------------------------

Objekt nereaguje na žádné události, ačkoliv jsou zobrazovány

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta DataNavigator je sada tlačítek zprostředkovávající pohyb (navigaci) v databázi. Umožňuje skok na první, následující, předchozí a poslední záznam, vložení nového záznamu, vymazat záznam, editovat záznam, potvrdit uložení záznamu, zrušit zatím neuložené změny a obnovit zobrazovaná data.

Nejdůležitější vlastností je DataSource, která definuje zdroj dat. Pokud se zobrazují data v datové mřížce DataGrid, musí se zadat stejný DataSource pro DataGrid i pro DataNavigator.

Viditelná tlačítka se zadávají při návrhu aplikace v okně Nastavení objektu vlastností VisibleButtons. V okně nastavení komponent je tato vlastnost sloučena do jedné skupiny. Nastavit lze viditelnost jednotlivých tlačítek. Je možné například nastavit viditelnost tlačítek pouze pro procházení databáze a zneviditelnit tlačítka pro editaci a rušení záznamů. Z programu lze nastavit viditelná tlačítka metodou NavigatorButtons.

Objekt DataNavigator má předdefinována tlačítka s následujícím pořadím a významem:

First 	- první záznam

Prior 	- předchozí záznam

Next 	- následující záznam

Last 	- poslední záznam

Insert  	- vložit nový záznam

Delete	- vymazat záznam

Edit 	- přepnout do režimu oprav

Post 	- uložit provedené změny

Cancel 	- zrušit změny

Refresh	- obnovit zobrazení při práci v síti

Ve vlastnosti Hints je možné zadat text nápovědy, který se zobrazuje pod příslušným tlačítkem, pokud je nastaveno ShowHint  := True. Pro každé tlačítko je samostatný řádek nápovědy. Nápovědu lze zadat buď speciálním editorem, který se zobrazí pro kliknutí na ikonu s třemi tečkami, případně lze nastavit nápovědu z programu nastavením vlastnosti Hints. V editoru musíte uvést text pro každé tlačítko, i když nebude zobrazováno. Pokud byste některý řádek vynechali, došlo by k posunu textu nápovědy. Z programu lze zadat nápovědu pro každé tlačítko samostatně.

UPOZORNĚNÍ:

Komponenta DataNavigator obsluhuje sama všechny události a nedokáže proto reagovat na žádné události přímo z programu. Seznam událostí, který je generován automaticky operačním systémem nelze proto použít a aplikace na ně nebude také reagovat.


Komponenta DataRadioGroup

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Caption (RW)         Color (RW)

Columns (RW)         Ctl3D (RW)           Cursor (RW)

DataField (RW)       DataSource (RW)      Enabled (RW)

Font (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            ItemIndex (*RW)      Items (RW)

Left (RW)            Name (R)             ParentColor (RW)

ParentCtl3D (RW)     ParentFont (RW)      ParentShowHint (RW)

PopupMenu (RW)       ReadOnly (RW)        ShowHint (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Top (RW)             Values (*RW)         Visible (RW)

Width (RW)

--------------------------------------------------------------

OnChange             OnClick              OnEnter

OnExit

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta  DataRadioGroup  se  používá  pro  zobrazení, případně zadání hodnot databázové položky ve stylu RadioGroup. Zobrazovaná položka  nabývá  vždy  jednu  z  několika  možných  (vzájemně  se vylučujících)  hodnot.  Proto  je  objekt  vizuálně zobrazen jako skupina  koleček, z  nichž může  být vybráno  pouze jedno z nich. Pokud  neodpovídá   obsah  podřízené  databázové   položky  žádné předvolené hodnotě, nebude vybrána žádná hodnota.

Komponentu je možné používat i pro zobrazení hodnot, které nejsou logického  typu, je  však možné  definovat předem  možné hodnoty. Například  částka DPH  ve výši   0, 5  nebo 22  %. Předdefinované hodnoty  pro zobrazení  stavu  se  zadávají ve  vlastnosti Items, která je typu StrArray. Předvolené  hodnoty mohou být zadány při návrhu  aplikace,  případně  je  možné  je  zadat  z programu při vytváření  formuláře, případně  může být  seznam hodnot doplňován kdykoliv z programu.

Pokud  odpovídá přesně  obsah databázové  položky zadaným  možným stavům  zadaných ve  vlastnosti  Items,  bude se  zobrazovat vždy odpovídající hodnota.  Jestliže však potřebujete  zobrazovat jiné hodnoty,  než  jsou  uloženy  v   databázi,  je  nutné  zadat  ve vlastnosti Values odpovídající  hodnoty příslušející zobrazovaným hodnotám  uvedeným  ve  vlastnosti  Items.  Tento  způsob  je nutné například použít pro zobrazení stavu logických hodnot.

Zdroj připojených  dat je uveden ve  vlastnosti DataSource. Udává se  zdroj  připojené  podřízené  databáze,  ze  které se zobrazuje databázová  položka.  Podřízená  položka  databáze  se  zadává ve vlastnosti DataField.

Uživatelskou  změnou  zvýrazněné  hodnoty  v  seznamu (kliknutím) nedojde automaticky k uložení zadané  hodnoty do databáze. K tomu je  nutné buď  kliknout na  tlačítko Post  objektu DataNavigator, případně  změnit  pozici  v  databázi  přechodem  na jiný záznam. Nedoporučuje se používat volání  metody Post u události OnChange, protože může  dojít ke vzájemnému ovlivňování  stavů komponent na formuláři. Místo  toho lze použít  volání metody Post  v události OnExit, to je při změně zaměření objektu DataRadioGroupBox.

Index vybrané hodnoty je přístupný ve vlastnosti ItemIndex. Index se čísluje  od muly, proto má  například třetí zobrazené tlačítko přístupový index s číslem dva. Změnou nastavení hodnoty indexu se nedosáhne změny obsahu databázové položky.

Objekt DataRadioGroup  neobsahuje přetáčecí pruh  a rozestup mezi tlačítky  je  upravován   automaticky  podle  vymezené  velikosti zobrazovaného objektu. Při velkém množství tlačítek by mohlo dojít až  k jejich  překrývání. Pokud  je seznam  rozsáhlejší, využijte vlastnost Columns.

Seznam  předdefinovaných hodnot  pro zobrazení  možného stavu  je uložen  ve  vlastnosti  Items,  kterou  představuje proměnná typu StrArray. Stejný typ proměnné používá vlastnost Values pro zadání odpovídajících hodnot uložených v  databázi. Uvedený typ proměnné má své vlastní metody pro práci s obsaženým seznamem řetězců. Pro zadání  počátečního  obsahu  je  možné  použít  speciální  editor přístupný z  okna nastavení objektů, který  se aktivuje kliknutím na ikonu se třemi tečkami vpravo od vlastnosti.

Jednotlivá  tlačítka  jsou  v  seznamu  řetězců  přístupná  svým indexem, to  je pořadovým číslem.  Položky seznamu tlačítek  jsou číslovány od  nuly. První položka  v pořadí má  proto index nula, pátá položka má index 4. Pokud potřebujete zjistit obsah položky, musíte  zadat  její  pořadový  index.  Obsah  první položky proto zobrazíte následujícím způsobem:

ShowMessage(DataRadioGroup.Items[0]);

Podobným způsobem můžete změnit  obsah položky, kdy opět zadáváte index  položky a  nový obsah.  Pro druhou  položku v pořadí proto zadáte:

DataRadioGroup.Items[1]:='druhé talčítko';

Nové tlačítko  přidáte do seznamu z  aplikace použitím metody Add následujícím způsobem:

DataRadioGroup.Items.Add('aaa');

Pokud  potřebujete některé  tlačítko ze  seznamu zrušit, použijte volání metody Delete následujícím způsobem:

DataRadioGroup.Items.Delete(2);

Potřebujete-li  v  seznamu  vyhledat  index  tlačítka  se zadaným popisem, použijte funkci IndexOf:

ShowMessage(DataRadioGroup.Items.IndexOf('Tisknout'));

Obsah  seznamu  tlačítek  můžete  uložit  na  disk  do  textového soubory, případně načít textový soubor do seznamu metodami SaveToFile a LoadFromFile:

DataRadioGroup.Items.SaveToFile('seznam.txt');

DataRadioGroup.Items.LoadFromFile('seznam.txt');

Potřebujete-li  projít celý  seznam tlačítek  a provést  s každým z nich  nějakou  akci,  použijte  vlastnost  Items.Count.  Musíte přitom počítat s tím, že se seznam čísluje od nuly, počet položek seznamu  je  však  uváděn  od  jedničky.  Od seznamu musíte proto v cyklu jedničku odečíst:

for x:= 0 to DataRadioGroup.Items.Count-1 do

    Memo.Lines.Add(DataRadioGroup.Items[1]);

Komponenta obsahuje pouze události reagující na zaměření objektu, ztrátu  zaměření  a  samozřejmě  také  kliknutí  na tlačítko. Pro zjištění,  které  tlačítko  bylo  nastaveno,  použijte  vlastnost ItemIndex.


Komponenta DataSource

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

AutoEdit (RW)        DataSet (RW)         Enabled (RW)

Name (R)             Tag (RW)

--------------------------------------------------------------

Objekt neobsahuje žádné metody

--------------------------------------------------------------

OnDataChange         OnStateChange        OnUpdateData

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta DataSource zprostředkovává spojení mezi nevizuální komponentou DataTable a ostatními vizuálními komponentami. Je to proto, že komponenta DataTable obsahuje vlastní data, nedokáže je však zobrazovat. Je to vlastně ukazatel na aktuální data. Prostřednictvím DataSource lze tato aktuální data pomocí dalších vizuálních komponent zobrazovat.

Nejdůležitější vlastností je DataSet, to je spojení na data obsažená v komponentě DataTable. Zadává se vždy komponenta DataTable umístěná na formuláři.

Vlastnost AutoEdit umožňuje zabránit editaci položek uživatelem. Pokud je zadána hodnota False, je možné změnit obsah databáze pouze z programu.

Pokud se zpracovává v aplikaci najednou  větší množství dat z připojené databáze z rozsahu celého souboru, lze využít vlastnost Enabled, která  umožňuje dočasně odpojit komponenty připojené k DataSource zprostředkovávající zobrazení dat. Tím se dosáhnete toho, že se při procházení databáze nebudou data zobrazovat a zpracování bude mnohem rychlejší.

Událost OnDataChange se vyskytne při každé změně v databázi. To znamená  nejen při změně dat, ale také při změně pozice databázového ukazatele. Událost OnUpdateData je volána vždy, když je záznam po editaci aktualizován (zapisován fyzicky do databáze). Událost OnStateChange je volána vždy při změně stavu databáze. To znamená, že dokáže rozpoznat přepnutí do editačního režimu, režimu prohlížení, vložení nového záznamu a deaktivaci databáze.


Komponenta DataTable

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Active (RW)          DataBaseName (RW)    Exclusive (RW)

Filter (RW)          IndexName (RW)       MasterFields (RW)

MasterSource (RW)    Name (R)             ReadOnly (RW)

State (*R)           TableName (RW)       Tag (RW)

--------------------------------------------------------------

Přehled metod

--------------------------------------------------------------

Objekt DataTable nereaguje na žádné události

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta DataTable zpřístupňuje data z databáze a nabízí je prostřednictvím komponenty DataSource dalším komponentám pro zobrazení a editaci dat. Je tedy nejdůležitější komponentou pro zpracování databází. Je možné pracovat pouze s databázemi ve formátu FoxPro. Komponenta obsahuje pouze několik vlastností, ale mnoho metod, díky kterým je možné s databází pracovat.

Nejdůležitější vlastnosti komponenty DataTable slouží pro zadání používané databáze. Adresář, ve kterém je databáze umístěna je uveden ve vlastnosti DataBaseName. Jméno konkrétní databáze je uvedeno ve vlastnosti TableName.

Databáze se aktivuje až po nastavení vlastnosti Active na hodnotu True. U této vlastnosti si musíte dát pozor na to, že pokud máte nastaveno Active := True, není možné provádět změnu databáze (vlastnosti DatabaseName, Exclusive a Tablename). Pokud máte aktivovanou databázi již při návrhu aplikace, budou data ihned viditelná a přístupná.

Při zpracování databáze v síti, lze použít vlastnost Exclusive, která zadává, zda má být databáze otevřena exklusivně. To znamená, že ji ve stejném okamžiku nemůže používat jiný uživatel. Není možné změnit vlastnost Exclusive, pokud je databáze již aktivovaná. Exclusivní přístup do databáze lze nastavit jednodušeji voláním metody DataTable.SetExclusive, která vraci, zda se podařilo exclusivní přístup opravdu nastavit.

Pokud budete chtít databázi pouze prohlížet bez možnosti editace, můžete nastavit vlastnost ReadOnly na hodnotu True. Vyvarujete se tak zbytečným změnám v okamžiku prohlížení databáze a nebudete muset kontrolovat změnu dat u všech vizuálních objektů přistupujících k datům. Zde opět platí, že vlastnost ReadOnly je možné změnit pouze v případě, že není databáze aktivní.

Pokud je databáze indexována, můžete změnit aktivní index, podle kterého je databáze seřazena změnou vlastnosti IndexName.

Pomocí vlastností MasterFields a MasterSource lze spojit databáze do relace.

Komponenta DataTable pracuje přímo s daty databáze. K tomu účelu se používá přes šedesát metod. Použité názvosloví metod vychází z názvosloví jazyků xBase. Podobné názvosloví se používá i pro zpracování dat v databázovém okně. Metody použité pro zpracování databázi na formuláři však neobsahují ve svém názvu počáteční 'Dbf'.


Komponenta DataText

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Alignment (RW)       1(RW)

Color (RW)           Cursor (RW)          DataField (RW)

DataSource (RW)      Enabled (RW)         Font (RW)

Height (RW)          Hint (RW)            Left (RW)

Name (R)             ParentColor (RW)     ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       ShowHint (RW)

Tag (RW)             Top (RW)             Transparent (RW)

Visible (RW)         Width (RW)           WordWrap (RW)

--------------------------------------------------------------

Objekt neobsahuje žádné metody

--------------------------------------------------------------

OnClick              OnDblClick           OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta DataText se používá pro zobrazení  textu  z  databázové  položky na formuláři  bez  možnosti jeho editace. Pro zobrazování delších textů je možné nastavit vlastnost WordWrap, která udává, zda se má delší text rozdělit na větší počet řádků.

Komponenta je napojena na databázi přes komponentu DataSource. Propojení se zadává ve vlastnosti DataSource. Dále musíte zadat ve vlastnosti DataField položku databáze, která je komponentou zobrazována.


Komponenta DateTimePicker

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

CalAlignment (RW)    CalColors            Checked (RW)

Color (RW)           Cursor (RW)          Date (RW)

DateFormat (RW)      DateMode (RW)        Enabled (RW)

Font (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            Kind (RW)            Left (RW)

Name (R)             ParentColor (RW)     ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       ShowCheckBox (RW)

ShowHint (RW)        TabStop (RW)         Tag (RW)

Time (RW)            Top (RW)             Visible (RW)

Width (RW)

--------------------------------------------------------------

SetFocus

--------------------------------------------------------------

OnChange             OnClick              OnCloseUp

OnDblClick           OnEnter              OnExit

OnKeyDown            OnKeyPress           OnKeyUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta DateTimePicker slouží k zadávání data a času s kontrolou zadaných hodnot. Objekt DateTimePicker má na formuláři vzhled editačního pole, po kliknutí se však zobrazí kalendář, který umožní uživateli výběr požadovaného data. Datum je uložen ve vlastnosti Date.

Podle nastavení vlastnosti Kind lze použít komponentu i na zadávání a zobrazení času. V takovém případě se zobrazí u editačního okna s časem šipky pro možnost změny času pomocí myši. Čas je uložen ve vlastnosti Time.

Datum a čas je uložen ve speciálním formátu. Pro jeho konverzi do tvaru řetězce se používají samostatné funkce DateToStr, TimeToStr, StrToDate, StrToTime.

Viz také:

funkce Date, funkce Time


Komponenta DirectoryListBox

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Color (RW)           Columns (RW)

Ctl3D (RW)           Cursor (RW)          Directory (*RW)

DirLabel (RW)        Drive (*RW)          Enabled (RW)

FileList (RW)        Font (RW)            Height (RW)

HelpContext (RW)     Hint (RW)            IntegralHeight (RW)

ItemHeight (RW)      Left (RW)            Name (R)

ParentColor (RW)     ParentCtl3D (RW)     ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       ShowHint (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

OpenCurrent          Update

--------------------------------------------------------------

OnChange             OnClick              OnDblClick

OnEnter              OnExit               OnKeyDown

OnKeyPress           OnKeyUp              OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta DirectoryListBox je specializovaný seznam adresářů. Adresáře jsou zobrazeny včetně stromové struktury. Ve spojení s komponentami FileListBox, DriveComboBox a FilterComboBox může posloužit pro tvorbu vlastních formulářů pro zadávání souborů.

Konkrétní adresář je zadán ve vlastnostech Drive a Directory. Pro rozsáhlé adresáře je možné nastavit ve vlastnosti Columns větší počet sloupců pro zobrazování adresáře.


Komponenta DriveComboBox

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Color (RW)           Ctl3D (RW)           Cursor (RW)

DirList (RW)         Drive (*RW)          Enabled (RW)

Font (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            Left (RW)            Name (R)

ParentColor (RW)     ParentCtl3D (RW)     ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       ShowHint (RW)

TabOrder (RW)        TabStop (RW)         Tag

Text                 TextCase (RW)        Top (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

OnChange             OnClick              OnDblClick

OnEnter              OnExit               OnKeyDown

OnKeyPress           OnKeyUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta DriveComboBox je speciální seznam přístupných diskových mechanik počítače. Používá se většinou ve spojení s komponentami FileListBox, DirectoryListBox a FilterComboBox pro tvorbu vlastních formulářů pro zadávání souborů.


Metoda a komponenta Edit

Komponenta Edit

Metoda DataTable.Edit


Komponenta Edit

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

AutoSelect (RW)      AutoSize (RW)        BorderStyle (RW)

CharCase (RW)        Color (RW)           Ctl3D (RW)

Cursor (RW)          Enabled (RW)         Font (RW)

Height (RW)          HelpContext (RW)     HideSelection (RW)

Hint (RW)            Left (RW)            MaxLength (RW)

Modified (*RW)       Name (R)             ParentColor (RW)

ParentCtl3D (RW)     ParentFont (RW)      ParentShowHint (RW)

PasswordChar (RW)    PopupMenu (RW)       ReadOnly (RW)

SelLength (*RW)      SelStart (*RW)       SelText (*RW)

ShowHint (RW)        TabOrder (RW)        TabStop (RW)

Tag (RW)             Text (RW)            Top (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

Clear                ClearSelection       CopyToClipboard

CutToClipboard       PasteFromClipBoard   SelectAll

SetFocus

--------------------------------------------------------------

OnChange             OnClick              OnDblClick

OnEnter              OnExit               OnKeyDown

OnKeyPress           OnKeyUp              OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta Edit se používá pro zápis jednořádkového textu na formuláři.  Při nastavení vlastnosti ReadOnly ji lze také použít pro zobrazení textu. K tomu lze použít také samostatnou komponentu Label. Pokud požadujete použití vstupní masky zadávaného textu, použijte komponentu MaskEdit.

Druh orámování textu zadává vlastnost BorderStyle, barvu podkladu zadáte ve vlastnosti Color. Můžete také změnit Font. Pokud požadujete možnost přístupu k editovanému textu na formuláři pomocí rychlé Alt klávesy, umístěte nad editovaný text komponentu Label s nastavením vlastnosti FocusControl, ve které zadáte objekt s editovaným textem.

Editovaný text je uložen ve vlastnosti Text. Délka editovaného textu se zadává ve vlastnosti MaxLength. Standardně je zadána nula, což znamená, že délka textu není omezena.

Pro automatický převod na velká nebo malá písmena je možné použít vlastnost CharCase. Pokud má sloužit editovaný text jako heslo, lze změnou vlastnosti PasswordChar zadat znak, který se zobrazuje v editovaném textu místo zadávaných znaků.

Editovaný text lze přenášet přes schránku Windows do jiného textu. Buď uživatelsky z klávesnice, nebo z programu. Vybraný text lze označit pomocí vlastností SelStart, SelLength a SelText. Celý text lze označit metodou SelectAll, pro výmaz označené části textu se použije ClearSelection. Přenos textu mezi schránkou a objektem zajišťují metody CopyToClipboard, CutToClipboard, PasteFromClipboard.

Komponenta obsahuje mimo běžných událostí i událost OnChange, která nastane v okamžiku změny textu. Lze také použít události OnKeyPress pro kontrolu zadávaných znaků s možností vynulování neplatných znaků.


Komponenta FileListBox

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Color (RW)           Ctl3D (RW)

Cursor (RW)          Directory (*RW)      Drive (*RW)

Enabled (RW)         ExtendedSelect (RW)  FileEdit (RW)

FileName (*RW)       FileType             Font (RW)

Height (RW)          HelpContext (RW)     Hint (RW)

IntegralHeight (RW)  ItemHeight (RW)      ItemIndex (*RW)

Items (*RW)          Left (RW)            Mask (RW)

MultiSelect (RW)     Name (R)             ParentColor (RW)

ParentCtl3D (RW)     ParentFont (RW)      ParentShowHint (RW)

PopupMenu (RW)       Selected (*RW)       ShowGlyphs (RW)

ShowHint (RW)        TabOrder (RW)        TabStop (RW)

Tag (RW)             Top (RW)             Visible (RW)

Width (RW)

--------------------------------------------------------------

ApplyFilePath        Clear                SetFocus

Update

--------------------------------------------------------------

OnChange             OnClick              OnDblClick

OnEnter              OnExit               OnKeyDown

OnKeyPress           OnKeyUp              OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta FileListBox slouží pro zobrazování seznamu souborů obsažených v zadaném adresáři. Konkrétní adresář je zadán ve vlastnostech Drive a Directory .

Seznam souborů je přístupný pouze z programu a je uložen ve vlastnosti Items, kterou představuje proměnná typu StrArray. Uvedený typ proměnné má své vlastní metody pro práci s obsaženým seznamem řetězců. POZOR !!! U objektu typu FileListBox lze však použít pouze vlastnost Count a metodu SaveToFile.

Jednotlivé položky jsou v seznamu řetězců přístupné svým indexem, to je pořadovým číslem. Položky jsou číslovány od nuly. První položka v pořadí má proto index nula, pátá položka má index 4. Pokud potřebujete zjistit obsah položky, musíte zadat její pořadový index. Obsah první položky proto zobrazíte:

ShowMessage(FileListBox.Items[0]);

Obsah seznamu můžete uložit na disk do textového souboru:

ListBox.Items.SaveToFile('seznam.txt');

Potřebujete-li projít celý seznam a provést s každou položkou seznamu nějakou akci, použijte vlastnost Items.Count. Musíte přitom počítat s tím, že se seznam čísluje od nuly, počet položek seznamu je však uváděn od jedničky. Od seznamu musíte proto v cyklu jedničku odečíst:

for x:= 0 to FileListBox.Items.Count-1 do

    Memo.Lines.Add(FileListBox.Items.[x]);

Jak již bylo uvedeno, slouží komponenta FileListBox pro uživatelský výběr souboru z adresáře. Možnost výběru pouze jednoho souboru, případně většího počtu souborů se zadává ve vlastnosti MultiSelect. Podle nastavení vlastnosti ExtendedSelect lze provádět buď nezávislý výběr souborů, případně sekvenční výběr souborů dle rozsahu od až do.

Máte-li nastavenu možnost vícenásobného výběru ve vlastnosti MultiSelect, máte možnost z programu pomocí vlastnosti Selected kontrolovat, zda je určitý soubor z adresáře vybrán:

if FileListBox.Selected[1] then

   Memo.Lines.Add(FileListBox.Items[1]);

Komponenta obsahuje metodu Clear, kterou se provede výmaz obsahu seznamu souborů. Metoda Update aktualizuje seznam souborů, například při výmazu obsaženého souboru. Pro nové načtení obsahu adresáře se změnou disku, adresáře a vyhledávací masky lze použít vlastnost ApplyFilePath.


Komponenta FilterComboBox

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Color (RW)           Ctl3D (RW)           Cursor (RW)

Enabled (RW)         FileList (RW)        Filter (RW)

Font (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            Left (RW)            Mask (*RW)

Name (R)             ParentColor (RW)     ParentCtl3D (RW)

ParentFont (RW)      ParentShowHint (RW)  PopupMenu (RW)

ShowHint (RW)        TabOrder (RW)        TabStop (RW)

Tag (RW)             Top (RW)             Visible (RW)

--------------------------------------------------------------

OnChange             OnClick              OnDblClick

OnEnter              OnExit               OnKeyDown

OnKeyPress           OnKeyUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta FilterComboBox slouží k zadání filtru pro výběr souboru. Používá se společně s komponentami DriveComboBox, DirectoryListBox a FileListBox.

Filtr pro výběr souborů se zadává ve vlastnosti Filter dle běžných podmínek. Například *.* pro všechny soubory, *.TXT pouze soubory s extenzí TXT apod. Pro zadání filtru je v okně Nastavení objektu přístupný speciální editor, ve  kterém se zadává v levém sloupci text popisu filtru a v pravém sloupci se uvádí konkrétní filtr. Pokud se zadává vlastnost Filtr z programu, musí se jednotlivé části filtru oddělit znakem svislé čáry.

Ve vlastnosti FileList se zadává spojení na objekt typu FileListBox, ve kterém se budou zobrazovat soubory aktuálního adresáře.


Komponenta FindDialog

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Ctl3D (RW)           FindText (RW)        HelpContext (RW)

Name (R)             Options              Tag (RW)

--------------------------------------------------------------

CloseDialog          Execute

--------------------------------------------------------------

OnClose              OnFind               OnShow

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta FindDialog slouží pro zadání podmínek pro hledání textu. Dialog se vyvolá metodou Execute. Zadaný text pro hledání se ukládá do vlastnosti FindText. Po kliknutí na tlačítko 'Najít další' bude aktivována událost OnFind, do které je nutné zadat akce, které se mají provést. Komponenta neprovádí sama hledání v textu, slouží pouze jako dialog pro zadání parametrů pro hledání. Vyhledání textu musí být proto naprogramováno.

Dialog je zobrazen nemodálně, to znamená, že je možné jej nechat zobrazený a přepnout se do jiného formuláře. Je možné jej zrušit buď kliknutím na tlačítko s nápisem 'Storno', případně voláním metody CloseDialog.


Komponenta FontDialog

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Ctl3D (RW)           Device (RW)          Font (RW)

HelpContext (RW)     MaxFontSize (RW)     MinFontSize (RW)

Name (R)             Options              Tag (RW)

--------------------------------------------------------------

Execute

--------------------------------------------------------------

OnClose              OnShow

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta FontDialog slouží pro zadání fontu z aplikace. Dialog se vyvolá metodou Execute, pokud se ukončí dialog stiskem klávesy 'OK', bude vybraný font přístupný ve vlastnosti Font.

Příklad:

Po kliknutí na tlačítko Button se aktivuje dialog pro výběr Fontu. Pokud je Font vybrán, použije se pro nastavení fontu komponenty Edit.

procedure TForm.ButtonClick(Sender: TObject);

begin

   if FontDialog.Execute then

      Edit.Font := FontDialog.Font;

end;


Komponenta Form

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

ActiveControl (RW)   AutoScroll (*RW)     BorderIcons

BorderStyle (RW)     Caption (RW)         ClientHeight (RW)

ClientWidth (RW)     Color (RW)           Ctl3D (RW)

Cursor (RW)          Enabled (RW)         Font (RW)

Height (RW)          HelpContext (RW)     HelpFile (RW)

Hint (RW)            HorzScrollBar        Icon

KeyPreview (RW)      Left (RW)            Menu (RW)

Name                 ParentFont (RW)      PopupMenu (RW)

Position             PrintScale           ShowHint (RW)

Tag (RW)             Top (RW)             VertScrollBar

Visible (RW)         Width (RW)           WindowState (RW)

--------------------------------------------------------------

Close                Print

--------------------------------------------------------------

OnActivate           OnClick              OnClose

OnCreate             OnDblClick           OnDeactivate

OnDestroy            OnHide               OnKeyDown

OnKeyPress           OnKeyUp              OnMouseDown

OnMouseMove          OnMouseUp            OnPaint

OnResize             OnShow

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Objekt Form je nejdůležitější částí celé aplikace. Obsahuje na své ploše všechny používané objekty. Kompletní aplikace se může skládat z několika formulářů, jeden z nich je však vždy hlavní. Z jednoho formuláře nelze v programu nijak zasahovat do nastavení ostatních formulářů.

Formulář je vždy modální, to znamená, že není možné se přepnout do jiného formuláře. Je možné pouze spustit voláním RunForm další formulář.

Počáteční pozici formuláře na obrazovce můžete nastavit vlastností Position. Počáteční stav formuláře můžete nastavit vlastností WindowState. Pokud nemá být možné měnit z aplikace velikost formuláře, použijte vlastnost BorderStyle.

Pro definici velikosti formuláře včetně orámování a záhlaví okna použijte vlastnost Width (šířka) a Height (výška). Pro nastavení velikosti pracovní plochy okna bez započítání orámování a záhlaví použijte vlastnosti ClientWidth (šířka) a ClientHeight (výška).

Pro definici objektu, který má mít zaměření (je aktivní) použijte vlastnost ActiveControl.

Pokud má mít možnost formulář zpracovávat stisknutí klávesy mimo příslušných objektů nejdříve formulář, nastavte vlastnost KeyPreview na hodnotu True.

UPOZORNĚNÍ:

Jméno objektu ponechejte vždy 'Form'. Jinak byste nemohli přistupovat k vlastnostem formuláře.


Komponenta GroupBox

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Caption (RW)         Color (RW)

Ctl3D (RW)           Cursor (RW)          Enabled (RW)

Font (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            Left (RW)            Name (R)

ParentColor (RW)     ParentCtl3D (RW)     ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       ShowHint (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

SetFocus

--------------------------------------------------------------

OnClick              OnDblClick           OnEnter

OnExit               OnMouseDown          OnMouseMove

OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta GroupBox je velmi podobná komponentě Panel a slouží hlavně pro seskupování tlačítek typu RadioButton, které dokáže navzájem provázat svými vlastnostmi, případně chováním. Na rozdíl od komponenty Panel je vlastnost Caption zobrazována v horní lince zobrazení objektu a slouží tak k popisu skupiny. Ostatní vlastnosti jsou totožné s komponentou Panel.

UPOZORNĚNÍ:

Zrušíte-li objekt GroupBox z formuláře, zrušíte tím současně i všechny podřízené objekty na něm umístěné.


Komponenta Image

Přehled vlastností, metod a událostí objektu:

-----------------------------------------------------------------------

Align (RW)              AutoSize (RW)           Center (RW)

Cursor (RW)             Enabled (RW)            Height (RW)

Hint (RW)               IncrementalDisplay (RW) Left (RW)

Name (R)                ParentShowHint (RW)     Picture

PopupMenu (RW)          ShowHint (RW)           Stretch (RW)

Tag (RW)                Top (RW)                Transparent (RW)

Visible (RW)            Width (RW)

-----------------------------------------------------------------------

Arc                     BrushColor              BrushStyle

Clear                   Ellipse                 FontColor

FontName                FontSize                FontStyle

GetMaxX                 GetMaxY                 Line

LineTo                  MoveTo                  PenColor

PenStyle                PenWidth                Picture.LoadFromFile

Picture.SaveToFile      Pie                     Point

Rectangle               RoundRect               TextHeight

TextOut                 TextWidth               Triangle

-----------------------------------------------------------------------

OnClick                 OnDblClick              OnMouseDown

OnMouseMove             OnMouseUp

-----------------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta Image slouží pro zobrazování bitmapy (obrázků) na formuláři. Možno je zobrazit bitmapy typu *.BMP, ikony tylu *.ICO a metafile soubory typu *.WMF.

Zobrazovanou bitmapu zadáte v dialogu, který se zobrazí po kliknutí na ikonu se třeni tečkami umístěnou vpravo u vlastnosti Picture v okně nastavení objektu.

Pokud má být bitmapa zobrazena na celé ploše objektu, nastavte vlastnost Stretch. Při požadavku na automatickou změnu velikosti objektu podle velikosti bitmapy nastavte vlastnost AutoSize. Při požadavku na vycentrování  bitmapy na ploše objektu nastavte vlastnost Center.

Metodou Picture.LoadFromFile je možné načíst zobrazovabou bitmapu ze souboru, její uložení so souboru se provede metodou Picture.SaveToFile. Objekt obsahuje metody pro přímé kreslení na plochu objektu. Názvosloví metod vychází z obdobných příkazů pro kreslení do grafického výstupního okna.


Komponenta Label

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Alignment (RW)       AutoSize (RW)

Caption (RW)         Color (*RW)          Cursor (RW)

Enabled (RW)         FocusControl (RW)    Font (RW)

Height (RW)          Hint (RW)            Layout (RW)

Left (RW)            Name (R)             ParentColor (RW)

ParentFont (RW)      ParentShowHint (RW)  PopupMenu (RW)

ShowAccelChar (RW)   ShowHint (RW)        Tag (RW)

Top (RW)             Transparent (RW)     Visible (RW)

Width (RW)           WordWrap (RW)

--------------------------------------------------------------

SetFocus

--------------------------------------------------------------

OnClick              OnDblClick           OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta Label se používá pro zobrazování textu na formuláři bez možnosti jeho editace. Komponentu je možné použít jako návěští pro komponenty které nemají možnost použití rychlé přístupové Alt klávesy.

Pokud zadáte ve vlastnosti FocusControl objekt na formuláři a uvedete v textu uloženém ve vlastnosti Caption znak &, zobrazí se v aplikaci následující znak podtržený. Po stisku klávesy Alt+podtržený znak bude zaměřen objekt uvedený ve vlastnosti FocusControl.

Delší text je možné zobrazit dle nastavení komponenty WordWrap s automatickým rozdělením na několik řádků.

Možnost horizontálního nastavení textu (nahoře, centrován, dole) zadáte ve vlastnosti Layout.

Pro průhledné zobrazení textu použijte vlastnost Transparent.

Viz také: StaticText


Komponenta ListBox

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           BorderStyle (RW)     Color (RW)

Columns (RW)         Ctl3D (RW)           Cursor (RW)

Enabled (RW)         ExtendedSelect (RW)  Font (RW)

Height (RW)          HelpContext (RW)     Hint (RW)

IntegralHeight (RW)  ItemHeight (RW)      ItemIndex (*RW)

Items (RW)           Left (RW)            MultiSelect (RW)

Name (R)             ParentColor (RW)     ParentCtl3D (RW)

ParentFont (RW)      ParentShowHint (RW)  PopupMenu (RW)

Selected (*)         ShowHint (RW)        Sorted (RW)

Style (RW)           TabOrder (RW)        TabStop (RW)

TabWidth (RW)        Tag (RW)             Top (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

SetFocus

--------------------------------------------------------------

OnClick              OnDblClick           OnEnter

OnExit               OnKeyDown            OnKeyPress

OnKeyUp              OnMouseDown          OnMouseMove

OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta ListBox slouží pro zobrazování seznamů řetězcových položek s možností uživatelského výběru požadované položky.

Seznam položek je uložen ve vlastnosti Items, kterou představuje proměnná typu StrArray. Uvedený typ proměnné má své vlastní metody pro práci s obsaženým seznamem řetězců. Pro zadání počátečního obsahu můžete použít speciální editor přístupný z okna nastavení objektů, který se aktivuje kliknutím na ikonu se třemi tečkami vpravo od vlastnosti Items.

Jednotlivé položky jsou v seznamu řetězců přístupné svým indexem, to je pořadovým číslem. Položky jsou číslovány od nuly. První položka v pořadí má proto index nula, pátá položka má index 4. Pokud potřebujete zjistit obsah položky, musíte zadat její pořadový index. Obsah první položky proto zobrazíte

ShowMessage(ListBox.Items[0]);

Podobným způsobem můžete změnit obsah položky, kdy opět zadáváte index položky a nový obsah. Pro druhou položku v pořadí proto zadáte:

ListBox.Items[1]:='druhá položka';

Novou položku do seznamu zadáte z aplikace použitím metody Add následujícím způsobem:

ListBox.Items.Add('aaa');

Pokud potřebujete některou položku ze seznamu zrušit, použijte volání metody Delete následujícím způsobem:

ListBox.Items.Delete(2);

Potřebujete-li v seznamu vyhledat index položky se zadaným obsahem, použijte   funkci IndexOf:

ShowMessage(ListBox.Items.IndexOf('aaa'));

Obsah seznamu můžete uložit na disk do textového souboru metodou SaveToFile, případně načít textový soubor do seznamu metodou LoadFromFile:

ListBox.Items.SaveToFile('seznam.txt');

ListBox.Items.LoadFromFile('seznam.txt');

Potřebujete-li projít celý seznam a provést s každou položkou seznamu nějakou akci, použijte vlastnost Items.Count. Musíte přitom počítat s tím, že se seznam čísluje od nuly, počet položek seznamu je však uváděn od jedničky. Od celkového počtu musíte proto v cyklu jedničku odečíst:

for x:= 0 to ListBox.Items.Count-1 do

    ListBox.Checked[x] := False;

Pokud potřebujete seznam seřadit podle abecedy, použijte vlastnost Sorted. Pro kompletní výmaz seznamu použijte metodu Clear.

Jak již bylo uvedeno, slouží komponenta ListBox pro uživatelský výběr položek ze seznamu. Možnost výběru pouze jedné položky, případně většího počtu položek se zadává ve vlastnosti MultiSelect. Podle nastavení vlastnosti ExtendedSelect lze provádět buď nezávislý výběr položek, případně sekvenční výběr dle rozsahu od až do.

Máte-li nastavenu možnost vícenásobného výběru ve vlastnosti MultiSelect, máte možnost z programu pomocí vlastnosti Selected kontrolovat, zda je určitá položka seznamu vybrána:

if ListBox.Selected[1] then

   Memo.Lines.Add(ListBox.Items[1]);

Komponenta obsahuje běžné události dovolující například reagovat na zaměření objektu, stisk klávesy nebo myši a podobně.


Komponenta MainMenu

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Items (*)            Name (R)             Tag (RW)

--------------------------------------------------------------

Objekt neobsahuje žádné metody, nereaguje na žádné události

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta MainMenu se používá na doplnění formuláře o uživatelské menu, které je zobrazeno v horní liště formuláře. Menu lze vytvářet a přidávat nové položky menu lze pouze při návrhu aplikace. Z programu je možné pouze změnit některé vlastnosti menu. Na formuláři může být definováno několik objektů typu MainMenu. Aktivní však může být pouze jedno menu, které se uvede ve vlastnosti Menu objektu Form.

Položky menu jsou uloženy ve vlastnosti Items. Pro jejich přidávání a editaci  slouží speciální editor, který je dostupný po kliknutí na ikonu se třemi tečkami v okně Nastavení objektu, vpravo od vlastnosti Items.

Vlastnost Items je samostatný objekt typu MenuItem, ke kterému lze z programu běžným způsobem přistupovat. Propojení na objekt MainMenu je realizováno přes jméno položky menu, které je zadáno ve vlastnosti Items objektu MainMenu. Pomocí tohoto jména položky menu lze ke každé položce menu přistupovat z programu jako k samostatnému objektu typu MenuItem. Pokud například zadáte při návrhu menu aplikace u objektu MainMenu ve vlastnosti Items položku menu, která bude mít ve vlastnosti name uvedeno 'Tisk', lze u této položky menu z programu provádět například následující změny:

Tisk.Caption := 'Tisk ceníku';

Tisk.Checked := False;

Komponenta MainMenu nemá definovány žádné metody ani události. Pro zadání akce, která se provede po výběru položky menu použijte událost OnClick události Items.


Komponenta MaskEdit

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

AutoSelect (RW)      AutoSize (RW)        BorderStyle (RW)

CharCase (RW)        Color (RW)           Ctl3D (RW)

Cursor (RW)          EditMask (RW)        EditText (*RW)

Enabled (RW)         Font (RW)            Height (RW)

HelpContext (RW)     Hint (RW)            Left (RW)

MaxLength (RW)       Modified             Name (R)

ParentColor (RW)     ParentCtl3D (RW)     ParentFont (RW)

ParentShowHint (RW)  PasswordChar (RW)    PopupMenu (RW)

ReadOnly (RW)        SelLength (*RW)      SelStart (*RW)

SelText (*RW)        ShowHint (RW)        TabOrder (RW)

TabStop (RW)         Tag (RW)             Text (RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

Clear                ClearSelection       CopyToClipboard

CutToClipboard       PasteFromClipboard   SelectAll

SetFocus             ValidateEdit

--------------------------------------------------------------

OnChange             OnClick              OnDblClick

OnEnter              OnExit               OnKeyDown

OnKeyPress           OnKeyUp              OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta MaskEdit slouží pro vstup dat od uživatele se současnou kontrolou zadávaných dat. MaskEdit má všechny možnosti jako komponenta Edit, navíc však obsahuje zejména vlastnost EditMask, do které se zadává vstupní zadávací maska. Je to předpis, kterým se určuje, které znaky mohou být uživatelem zadány.

Text formátovaný maskou je přístupný z programu ve vlastnosti EditText. Text bez formátování zadávací maskou je uložen ve vlastnosti Text.

Pro kontrolu, zda je zadán správný řetězec lze použít metodu ValidateEdit.


Komponenta MediaPlayer

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

AutoEnable (RW)      AutoOpen (RW)        AutoRewind (RW)

ColoredButtons       Cursor (RW)          DeviceType (RW)

Display (RW)         Enabled (RW)         EnabledButtons

FileName (RW)        Height (RW)          HelpContext (RW)

Hint (RW)            Left (RW)            Mode (*R)

Name (R)             ParentShowHint (RW)  PopupMenu (RW)

Shareable (RW)       ShowHint (RW)        TabOrder (RW)

TabStop (RW)         Tag (RW)             Top (RW)

Visible (RW)         VisibleButtons       Width (RW)

--------------------------------------------------------------

Back                 Close                Eject

Next                 Open                 Pause

PauseOnly            Play                 Previous

Resume               Rewind               Save

StartRecording       Step                 Stop

--------------------------------------------------------------

OnEnter              OnExit               OnNotify

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta MediaPlayer se používá k práci s multimédii. Dokáže pracovat s různými formáty souborů, případně s různými multimediálními prostředky. Rozsah možností je přitom závislý vždy na typu používaného multimediálního zařízení, které se zadává ve vlastnosti DeviceType.

Komponentu představuje na formuláři sada tlačítek sloužících k uživatelskému ovládání.  Každé tlačítko lze přitom (pouze při návrhu aplikace) samostatně skrýt nebo zablokovat vlastnostmi VisibleButtons a EnabledButtons.  Tlačítka jsou na panelu objektu uspořádána v následujícím pořadí:

Play - spustí přehráváni

Pause - pozastaví/spistí akci

Stop - zastaví přehrávání, případně záznam

Next - přejde na následující stopu

Prev - přejde na předchozí stopu

Step - provede posun v záznamu vpřed

Back - povede posun v záznamu dozadu

Record - spustí záznam

Eject - vysune médium ze zařízení (CD disk)

Událost OnNotify je provedena po dokončení zadané metody. Ošetření události má smysl zejména v případě, že daná funkce řízení média potrvá delší dobu a aplikace bude provádět mezitím souběžně další akce.

Pokud se použije objekt MediaPlayer pro přehrávání videozáznamu, je implicitně nastaveno zobrazování do samostatného okna. Ve vlastnosti Display lze však zadat objekt, ve kterém se bude videosekvence zobrazovat.


Komponenta Memo

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Alignment (RW)       BorderStyle (RW)

Color (RW)           Ctl3D (RW)           Cursor (RW)

Enabled (RW)         Font (RW)            Height (RW)

HelpContext (RW)     HideSelection (RW)   Hint (RW)

Left (RW)            Lines (RW)           MaxLength (RW)

Name (R)             ParentColor (RW)     ParentCtl3D (RW)

ParentFont (RW)      ParentShowHint (RW)  PopupMenu (RW)

ReadOnly (RW)        ScrollBars (RW)      SelLength (*RW)

SelStart (*RW)       SelText (*RW)        ShowHint (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Text (*RW)           Top (RW)             Visible (RW)

WantReturns (RW)     WantTabs (RW)        Width (RW)

WordWrap (RW)

--------------------------------------------------------------

Clear                ClearSelection       CopyToClipboard

CutToClipboard       PasteFromClipBoard   SelectAll

SetFocus

--------------------------------------------------------------

OnChange             OnClick              OnDblClick

OnEnter              OnExit               OnKeyDown

OnKeyPress           OnKeyUp              OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta Memo se používá pro zápis víceřádkového textu na formuláři.  Při nastavení vlastnosti ReadOnly ji lze také použít pro zobrazení dlouhého textu bez možnosti editace.

Druh orámování textu zadává vlastnost BorderStyle, barvu podkladu zadáte ve vlastnosti Color. Můžete také změnit Font. Pokud požadujete možnost přístupu k editovanému textu na formuláři pomocí rychlé Alt klávesy, umístěte nad editovaný text komponentu Label s nastavením vlastnosti FocusControl, ve které zadáte objekt s editovaným textem.

Editovaný text lze přenášet přes schránku Windows do jiného textu. Buď uživatelsky z klávesnice, nebo z programu. Vybraný text lze označit pomocí vlastností SelStart, SelLength a SelText. Celý text lze označit metodou SelectAll, pro výmaz označené části textu se použije ClearSelection:=.Přenos textu mezi schránkou a objektem zajišťují metody CopyToClipboard, CutToClipboard, PasteFromClipboard.

Komponenta obsahuje mimo běžných událostí i událost OnChange, která nastane v okamžiku změny textu. Lze také použít událost OnKeyPress pro kontrolu zadávaných znaků s možností vynulování neplatných znaků.

Text je uložen ve vlastnosti Lines, kterou představuje proměnná typu StrArray. Uvedený typ proměnné má své vlastní metody pro práci s obsaženým textem. Pro zadání počátečního obsahu textu můžete použít editor přístupný z okna Nastavení objektu, který se aktivuje kliknutím na ikonu se třemi tečkami vpravo od vlastnosti Lines.

Jednotlivé řádky textu jsou z programu přístupné svým indexem, to je pořadovým číslem řádku. Řádky jsou číslovány od nuly. První řádek má proto index nula, pátý řádek má index 4. Pokud potřebujete zjistit obsah řádku, musíte zadat jeho pořadový index. Obsah prvního řádku proto zobrazíte

ShowMessage(Memo.Lines[0]);

Podobným způsobem můžete změnit obsah řádku, kdy opět zadáváte index řádku a nový obsah. Pro druhý řádek v pořadí proto zadáte:

Memo.Lines[1]:='druhý řádek';

Nový řádek zadáte do textu z programu použitím metody Add následujícím způsobem:

Memo.Lines.Add('aaa');

Pokud potřebujete některý řádek textu zrušit, použijte volání metody Delete následujícím způsobem:

Memo.Lines.Delete(2);

Potřebujete-li v textu vyhledat index řádku se známým obsahem, použijte  funkci IndexOf:

ShowMessage(Memo.Lines.IndexOf('aaa'));

Editovaný text můžete uložit na disk do textového souboru metodou SaveToFile, případně načít textový soubor do textu metodou LoadFromFile:

Memo.Lines.SaveToFile('seznam.txt');

Memo.Lines.LoadFromFile('seznam.txt');

Potřebujete-li projít celý text a provést s každým řádkem nějakou akci, použijte vlastnosti Lines.Count. Musíte přitom počítat s tím, že se řádky číslují od nuly, počet položek řádek textu je však uváděn od jedničky. Od počtu řádků musíte proto v cyklu jedničku odečíst:

for x:= 0 to Memo.Lines.Count-1 do

    Memo.Lines[x] := CsWinToLat(Memo.Lines[x]);

Editovaný text je také přístupný jako celek ve vlastnosti Text. Vlastnost je přístupná pouze z programu. Délka editovaného textu se zadává ve vlastnosti MaxLength. Standardně je zadána nula, což znamená, že délka textu je omezena velikostí do 65 Kb. Větší hodnotu nelze zadat.


Komponenta MenuItem

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Caption (RW)         Checked (RW)         Default (RW)

Enabled (RW)         HelpContext (RW)     Name (R)

RadioItem (RW)       ShortCut (*)         Tag (RW)

Visible (RW)

--------------------------------------------------------------

Click

--------------------------------------------------------------

OnClick

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta MenuItem je jedna z mála komponent, která není umístěna na paletě komponent. Je totiž pouze součástí objektů MainMenu a PopupMenu, nelze ji proto používat samostatně. Každá položka menu objektu MainMenu a PopupMenu uložená ve vlastnosti Items přitom tvoří jeden objekt typu MenuItem. Položky menu jsou při návrhu aplikace definovány přímo z objektů MainMenu a PopupMenu návrhářem menu, který se zobrazí po kliknutí na ikonu se třemi tečkami vpravo od vlastnosti Items.

Každá položka menu má vlastnost Caption, ve které je umístěn text zobrazený v menu. Pokud se místo textu uvede pouze pomlčka, bude místo textu v menu uvedena oddělovací čára.

Vlastnost Checked umožní zobrazit u položky menu značku pro odsouhlasení (tzv. 'fajfku'). Pomocí vlastnosti RadioItem je možné zobrazit u položky menu značku ve tvaru černé tečky, která může indikovat například výběr jedné z volby.

Vlastnost ShortCut umožní zadat pro každou položku menu klávesovou zkratku, pomocí které se dá položka menu přímo aktivovat z klávesnice bez nutnosti zobrazení menu.

Metoda Click vyvolá z programu provedení události OnClick objektu bez ohledu na to, zda opravdu k události došlo.


Komponenta OpenDialog

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Ctl3D (RW)           DefaultExt (RW)      FileName (RW)

Filter (RW)          FilterIndex (RW)     HelpContext (RW)

InitialDir (RW)      Name (R)             Options

Tag (RW)             Title (RW)

--------------------------------------------------------------

Execute

--------------------------------------------------------------

OnClose              OnFolderChange       OnSelectionChange

OnShow               OnTypeChange

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta OpenDialog slouží pro zadání souboru. Dialog se vyvolá metodou Execute. Pokud se ukončí dialog stiskem klávesy 'OK', bude vybraný soubor přístupný ve vlastnosti Filename.

Komponenta má několik událostí, které dokáží reagovat průběžně na změnu adresáře i souboru. Díky tomu je možné provádět akce s vybraným souborem ještě dříve, než je ukončen celý dialog.

Viz také:  SaveDialog

Příklad:

Po kliknutí na tlačítko Button se aktivuje dialog pro výběr souboru. Pokud je soubor vybrán, bude načten text souboru do objektu Memo.

procedure TForm.ButtonClick(Sender: TObject);

begin

   if OpenDialog.Execute then

      Memo.Lines.LoadFromFile(OpenDialog.Filename);

end;


Komponenta OpenPictureDialog

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Ctl3D (RW)           DefaultExt (RW)      FileName (RW)

Filter (RW)          FilterIndex (RW)     HelpContext (RW)

InitialDir (RW)      Name (R)             Options

Tag (RW)             Title (RW)

--------------------------------------------------------------

Execute

--------------------------------------------------------------

OnClose              OnFolderChange       OnSelectionChange

OnShow               OnTypeChange

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta OpenPictureDialog slouží pro zadání grafického souboru. Dialog obsahuje oblast, ve které se zobrazuje obsah souboru určeného pro výběr. Pro vyvolání dialogu použijte metodou Execute. Pokud se ukončí dialog stiskem klávesy 'OK', bude vybraný soubor přístupný ve vlastnosti Filename.

Viz také: SavePictureDialog

Příklad:

Po kliknutí na tlačítko Button se aktivuje dialog pro výběr souboru. Pokud je soubor vybrán, bude načten soubor do objektu Image.

procedure TForm.ButtonClick(Sender: TObject);

begin

   if OpenDialog.Execute then

      Image.Picture.LoadFromFile(OpenPictureDialog.Filename);

end;


Komponenta PageControl

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

ActivePage (W)       Align (RW)           Cursor (RW)

Enabled (RW)         Font (RW)            Height (RW)

HelpContext (RW)     Hint (RW)            HotTrack (*RW)

Left (RW)            MultiLine (*RW)      Name (RW)

PageCount (*R)       PageIndex (*RW)      ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       ScrollOpposite (*RW)

ShowHint (RW)        TabHeight (RW)       TabOrder (RW)

TabPosition (RW)     TabStop (RW)         TabWidth (RW)

Tag (RW)             Top (RW)             Visible (RW)

Width (RW)

--------------------------------------------------------------

SelectNextPage

--------------------------------------------------------------

OnChange             OnEnter              OnExit

OnMouseDown          OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta PageControl slouží pro tvorbu panelů se záložkami. Na rozdíl od komponenty TabControl obsahuje každá záložka samostatnou kartu s možností zadání rozdílného obsahu. Pro každou záložku je možné proto nadefinovat samostatně obsah zobrazované karty, které představuje komponenta TabSheet.

Novou stránku (záložku) je možné do objektu zadat ze závěsného Popup menu, které se vyvolá po kliknutí na objekt typu PageControl při návrhu aplikace. Po zvolení položky menu 'Nová stránka' se přidá do objektu nová záložka včetně podřízené stránky (objekt typu TabSheet). Nápis uvedený na záložce je možné změnit nastavením vlastnosti Caption objektu TabSheet. Stránkami objektu PageControl lze listovat již při návrhu aplikace kliknutím myši na požadovanou záložku.

Vlastnost ActivePage určuje aktivní zobrazovanou stránku (objekt typu TabSheet). Vlastnost MultiLine určuje, zda se mají záložky při větším počtu zobrazovat ve více řadách. Vlastnost TabPosition udává umístění záložek nahoře nebo dole.

Vlastnost PageCount, která je dostupná pouze z programu vrací počet stránek (záložek) objektu PageControl. Vlastnost PageIndex udává index aktivní záložky. Vlastnost TabPosition udává umístění záložek (nahoře nebo dole).

Metoda SelectNextPage vyhledá a zobrazí následující stranu zobrazovaných záložek objektu PageControl. Při požadavku na možnost kontroly uživatelské změny záložky lze využít událost OnChange.

UPOZORNĚNÍ:

Zrušíte-li objekt PageControl z formuláře, zrušíte tím současně i všechny podřízené objekty na něm umístěné.


Komponenta Panel

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Alignment (RW)       BevelInner (RW)

BevelOuter (RW)      BevelWidth (RW)      BorderStyle (RW)

BorderWidth (RW)     Caption (RW)         Color (RW)

Ctl3D (RW)           Cursor (RW)          Enabled (RW)

Font (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            Left (RW)            Name (R)

ParentColor (RW)     ParentCtl3D (RW)     ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       ShowHint (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

OnClick              OnDblClick           OnEnter

OnExit               OnMouseDown          OnMouseMove

OnMouseUp            OnResize

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta Panel slouží k seskupování objektů do logických celků. Mimo grafického seskupení dokáže na rozdíl od komponenty Bevel seskupené objekty navzájem provázat svými vlastnostmi, případně chováním.

Díky vlastnosti Align máte možnost nastavit, že se bude velikost panelu měnit v závislosti na velikosti formuláře. Pokud proto umístíte na panel   například objekt Memo, u kterého nastavíte vlastnost Align na allClient, nebudete se muset starat o změnu velikosti objektu Memo při změně velikosti formuláře.

Umístíte-li na objekt Panel na formuláři další objekty, bude se pozice umístění vztahovat k umístění na panelu a ne k formuláři. Stejně tak pokud změníte vlastnost Align, nebude se objekt zarovnávat k okrajům, formuláře, ale k okrajům panelu.

Umístíte-li na panel další objekt, máte možnost automaticky nastavovat nekteré vlastnosti převzaté z panelu. K tomu použije vlastnosti ParentColor, ParentCtl3D, ParentFont a ParentShowHint.

Uvedené schopnosti podřízených objektů umístěných na panelu je možné dosáhnout pouze pokud jsou objekty umístěny na panel přímo z palety komponent. Nestačí proto dříve vytvořené objekty přesunout myší nad plochu panelu. Museli byste objekt přesunout nejprve do schránky Windows klávesami Ctrl+X, přesunout ukazatel myši nad panel a umístit objekt na panel ze schránky Windows stiskem kláves Ctrl+V. Zda je komponenta opravdu závislá na panelu poznáte snadno tak, že při posunu panelu po formuláři se přesouvají současně i všechny podřízené objekty.

UPOZORNĚNÍ:

Zrušíte-li panel z formuláře, zrušíte tím současně i všechny podřízené objekty na něm umístěné.


Komponenta PopupMenu

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Alignment (RW)       AutoPopUp (RW)       HelpContext (RW)

Items (*)            Name (R)             Tag (RW)

--------------------------------------------------------------

PopUp

--------------------------------------------------------------

OnPopup

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta PopupMenu se používá na doplnění formuláře o lokální (závěsné) menu. Toto menu je přístupné po kliknutí pravým tlačítkem nad objektem, pro které je PopupMenu definováno. PopupMenu se používá nejčastěji pro zpřístupnění akcí, které lze s tímto objektem provádět.

PopupMenu lze vytvářet a nové položky menu lze přidávat pouze při návrhu aplikace. Z programu je možné změnit některé vlastnosti menu. Na formuláři může být definováno několik objektů typu PopupMenu. Jednotlivý objekt však smí mít pouze definováno jedno PopupMenu, které se uvede ve vlastnosti PopupMenu konkrétního objektu.

Položky menu jsou uloženy ve vlastnosti Items. Pro jejich přidávání a editaci  slouží speciální editor, který je dostupný po kliknutí na ikonu se třemi tečkami v okně Nastavení objektu, vpravo od vlastnosti Items.

Vlastnost Items je samostatný objekt typu MenuItem, ke kterému lze z programu běžným způsobem přistupovat. Propojení na objekt PopupMenu je realizováno přes jméno položky menu, které je zadáno ve vlastnosti Items objektu PopupMenu. Pomocí tohoto jména položky menu lze ke každé položce menu přistupovat z programu jako k samostatnému objektu typu MenuItem. Pokud například zadáte při návrhu menu aplikace u objektu PopupMenu ve vlastnosti Items položku menu, která bude mít ve vlastnosti name uvedeno 'Tisk', lze u této položky menu z programu provádět například následující změny:

Tisk.Caption := 'Tisk ceníku';

Tisk.Checked := False;

Komponenta PopupMenu má definovánu metodu Popup, která vyvolá a zobrazí na zadaných souřadnicích menu Popup. Událost OnPopup se vyskytuje v okamžiku požadavku na zobrazení závěsného Popup menu ještě před jeho zobrazením. Pro zadání akce, která se provede po výběru položky menu použijte událost OnClick události Items.


Komponenta PrintDialog

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Collate (RW)         Copies (RW)          FromPage (RW)

HelpContext (RW)     MaxPage (RW)         MinPage (RW)

Name (R)             Options              PrintRange (RW)

PrintToFile (RW)     Tag (RW)             ToPage (RW)

--------------------------------------------------------------

Execute

--------------------------------------------------------------

OnClose              OnShow

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta PrintDialog slouží pro zadání podmínek pro tisk. Dialog se vyvolá metodou Execute. V dialogu je možné změnit tiskárnu, provést její nastavení, zadat rozsah tisku stran, počet kopií a způsob jejich řazení.

Komponenta PrintDialog neprovádí sama žádný tisk. Slouží pouze jako dialog pro zadání parametrů pro tisk. Tisk podle zadaných parametrů musí být v aplikaci naprogramován.


Komponenta PrinterSetupDialog

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Ctl3D (RW)               HelpContext (RW)      Name (R)

Tag

--------------------------------------------------------------

Execute

--------------------------------------------------------------

OnClose              OnShow

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta PrinterSetupDialog slouží pro nastavení vlastností tiskárny. Dialog se vyvolá metodou Execute. V dialogu je možné změnit tiskárnu a provést její nastavení.


Komponenta ProgressBar

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Cursor (RW)          Enabled (RW)

Height (RW)          HelpContext (RW)     Hint (RW)

Left (RW)            Max (RW)             Min (RW)

Name (R)             ParentShowHint (RW)  PopupMenu (RW)

Position (RW)        ShowHint (RW)        Step (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

StepBy               StepIt

--------------------------------------------------------------

OnEnter              OnExit               OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta ProgressBar slouží pro zobrazení časového průběhu akce. Zobrazení je prováděno ve tvaru barevného proužku, který postupně vyplňuje zadanou plochu.

Počáteční hodnota je určena vlastností Min, konečnou hodnotu určuje vlastnost Max. Pozici ukazatele udává vlastnost Position. Změnu ukazatele pozice časového průběhu je možné vyvolat také metodami StepBy a StepIt.

Příklad:

procedure TForm.ButtonClick(Sender: TObject);

var x: Integer;

begin

   for x := ProgressBar.Min to ProgressBar.Max do

   begin

       {doplnit akce, jejíž průběh se sleduje}

       ProgressBar.Position := x;

   end;

end;


Komponenta RadioButton

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Alignment (RW)       Caption (RW)         Checked (RW)

Color (RW)           Ctl3D (RW)           Cursor (RW)

Enabled (RW)         Font (RW)            Height (RW)

HelpContext (RW)     Hint (RW)            Left (RW)

Name (RW)            ParentColor (RW)     ParentCtl3D (RW)

ParentFont (RW)      ParentShowHint (RW)  PopupMenu (RW)

ShowHint (RW)        TabOrder (RW)        TabStop (RW)

Tag (RW)             Top (RW)             Visible (RW)

Width (RW)

--------------------------------------------------------------

SetFocus

--------------------------------------------------------------

OnClick              OnDblClick           OnEnter

OnExit               OnKeyDown            OnKeyPress

OnKeyUp              OnMouseDown          OnMouseMove

OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta RadioButton se používá pro zadání jedné z několika se vzájemně vylučujících voleb. Funkčně se tedy jedná o přepínač. To znamená, že pouze jedno tlačítko v sadě může mít hodnotu True. Sada tlačítek je vymezena buď formulářem, případně umístěním na panelu, nebo objektu GroupBox. Díky tomu je možné vytvořit několik na sobě nezávislých sad tlačítek. Další možností je použít samostatný objekt RadioGroup, který sám vytváří a skupinuje tlačítka RadioButton.

Nejdůležitější vlastnosti objektu RadioButton je vlastnost Checked, která udává, zda je tlačítko sepnuto. Uživatelským sepnutím libovolného tlačítka se automaticky vypne dosud zapnuté tlačítko ve skupině.

Pokud budete chtít seskupovat tlačítka, musíte na formulář umístit nejprve objekt pro jejich slučování. To znamená Panel nebo RadioGroup. Až potom můžete na jejich plochu umístit tlačítko RadioButton. Nestačí pouze přemístit tlačítko RadioButton na plochu objektu pro sloučení.


Komponenta RadioGroup

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Caption (RW)         Color (RW)

Columns (RW)         Ctl3D (RW)           Cursor (RW)

Enabled (RW)         Font (RW)            Height (RW)

HelpContext (RW)     Hint (RW)            ItemIndex (RW)

Items (RW)           Left (RW)            Name (R)

ParentColor (RW)     ParentCtl3D (RW)     ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       ShowHint (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

SetFocus

--------------------------------------------------------------

OnClick              OnEnter              OnExit

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta RadioGroup se používá na vytvoření skupiny přepínacích tlačítek RadioButton včetně definice použitých tlačítek. Odpadnou tak problémy se skupinováním tlačítek a vše máte uloženo v jednom objektu. Výhodou je také možnost měnit počet tlačítek dynamicky přímo z aplikace. Lze je také uložit vytvořenou skupinu tlačítek do souboru k možnému pozdějšímu použití.

Index stisknutého tlačítka je přístupný ve vlastnosti ItemIndex. Index se čísluje od nuly, proto má například třetí zobrazené tlačítko přístupový index s číslem dva.

Objekt RadioGroup neobsahuje přetáčecí pruh a rozestup mezi tlačítky je upravován automaticky podle vymezené velikosti zobrazovaného objektu. Při velkém množství tlačítek by mohlo dojít až k jejich překrývání. Pokud je seznam rozsáhlejší, využijte vlastnost Columns pro rozdělení tlačítek do odstavců.

Seznam tlačítek je uložen ve vlastnosti Items, kterou představuje proměnná typu StrArray. Uvedený typ proměnné má své vlastní metody pro práci s obsaženým seznamem řetězců. Pro zadání počátečního obsahu můžete použít speciální editor přístupný z okna Nastavení objektu, který se aktivuje kliknutím na ikonu se třemi tečkami vpravo od vlastnosti Items.

Jednotlivá tlačítka jsou v seznamu řetězců přístupná svým indexem, to je pořadovým číslem. Položky seznamu tlačítek jsou číslovány od nuly. První položka v pořadí má proto index nula, pátá položka má index 4. Pokud potřebujete zjistit obsah položky, musíte zadat její pořadový index. Obsah první položky proto zobrazíte následujícím způsobem:

ShowMessage(RadioGroup.Items[0]);

Podobným způsobem můžete změnit obsah položky, kdy opět zadáváte index položky a nový obsah. Pro druhou položku v pořadí proto zadáte:

RadioGroup.Items[1]:='druhé tlačítko';

Nové tlačítko přidáte do seznamu z aplikace použitím metody Add následujícím způsobem:

RadioGroup.Items.Add('aaa');

Pokud potřebujete některé tlačítko ze seznamu zrušit, použijte volání metody Delete následujícím způsobem:

RadioGroup.Items.Delete(2);

Potřebujete-li v seznamu vyhledat index tlačítka se zadaným popisem, použijte  funkci IndexOf:

ShowMessage(RadioGroup.Items.IndexOf('Tisknout'));

Obsah seznamu tlačítek můžete uložit na disk do textového souboru metodou SaveToFile, případně načít textový soubor do seznamu metodou LoadFromFile:

RadioGroup.Items.SaveToFile('seznam.txt');

RadioGroup.Items.LoadFromFile('seznam.txt');

Potřebujete-li projít celý seznam tlačítek a provést s každým z nich  nějakou akci, použijte vlastnosti Items.Count. Musíte přitom počítat s tím, že se seznam čísluje od nuly, počet položek seznamu je však uváděn od jedničky. Od celkového počtu položek v seznamu musíte proto v cyklu jedničku odečíst:

for x := 0 to RadioGroup.Items.Count-1 do

    Memo.Lines.Add(RadioGroup.Items[x]);

Komponenta obsahuje pouze události reagující na zaměření objektu, ztrátu zaměření a samozřejmě také kliknutí na tlačítko. Pro zjištění, které tlačítko bylo nastaveno, použijte vlastnost ItemIndex.


Komponenta ReplaceDialog

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Ctl3D (RW)           FindText (RW)        HelpContext (RW)

Name (R)             Options              ReplaceText (RW)

Tag (RW)

--------------------------------------------------------------

CloseDialog          Execute

--------------------------------------------------------------

OnClose              OnFind               OnReplace

OnShow

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta ReplaceDialog slouží pro zadání podmínek pro hledání textu s jeho současnou náhradou za nový text. Dialog se vyvolá metodou Execute. Zadaný text pro hledání se ukládá do vlastnosti FindText, text pro nahrazování je uložen ve vlastnosti ReplaceText. Po kliknutí na tlačítko 'Najít další' bude aktivována událost OnFind, do které je nutné zadat akce, které se mají provést. Komponenta neprovádí sama hledání v textu ani jeho nahrazování, slouží pouze jako dialog pro zadání parametrů pro hledání. Vyhledání a nahrazení textu musí být proto naprogramováno.

Dialog je zobrazen nemodálně, to znamená, že je možné jej nechat zobrazený a přepnout se do jiného formuláře. Je možné jej zrušit buď kliknutím na tlačítko s nápisem 'Storno', případně voláním metody CloseDialog.


Komponenta RichEdit

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------------------

Align (RW)               Alignment (RW)           BorderStyle (RW)

Color (RW)               Ctl3D (RW)               Cursor (RW)

Enabled (RW)             Font (RW)                Height (RW)

HelpContext (RW)         HideScrollBars (RW)      HideSelection (RW)

Hint (RW)                Left (RW)                Lines (RW)

MaxLength (RW)           Modified (*RW)           Name (R)

Paragraph.Alignment (RW) ParentColor (RW)         ParentCtl3D (RW)

ParentFont (RW)          ParentShowHint (RW)      PlainText (RW)

PopupMenu (RW)           ReadOnly (RW)            ScrollBars (RW)

SelAttributes (RW)       SelLength (*RW)          SelStart (*RW)

SelText (*RW)            ShowHint (RW)            TabOrder (RW)

TabStop (RW)             Tag (RW)                 Text (RW)

Top (RW)                 Visible (RW)             WantReturns (RW)

WantTabs (RW)            Width (RW)               WordWrap (RW)

--------------------------------------------------------------------------

Clear                    ClearSelection           CopyToClipboard

CutToClipboard           FindText                 PasteFromClipboard

Print                    SelectAll

--------------------------------------------------------------------------

OnChange                 OnEnter                  OnExit

OnKeyDown                OnKeyPress               OnKeyUp

OnMouseDown              OnMouseMove              OnMouseUp

OnSelectionChange

--------------------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta RichEdit slouží pro zápis a editaci víceřádkového textu s možností formátování textu. Zadat je možné pro každou část textu font (velikost, barvu ...) a zarovnávání řádků (vlevo, centrovat a vpravo). Pokud požadujete práci s běžným textem, použijte raději komponentu Memo.

Editovaný text lze uložit do souboru na disk. Standardní přípona souboru pro uložení a načtení textu objektu RichEdit je *.RTF. S uvedeným formátem souborů umí pracovat většina textových editorů pro systém Windows (např. Word).

Text obsahuje běžně nezobrazované znaky, které udávají vizuální formátování  textu na formuláři. Například změnu fontu, barvu textu, zarovnávání řádků a podobně. Uvedené formátovací znaky značně prodlužují velikost souboru, který je ukládán na disk. Text lze zobrazit včetně formátovacích znaků nastavením vlastnosti PlainText.

Druh orámování textu zadává vlastnost BorderStyle, barvu podkladu textu zadáte ve vlastnosti Color. Pokud požadujete možnost přístupu k editovanému textu na formuláři pomocí rychlé Alt klávesy, umístěte nad editovaný text komponentu Label s nastavením vlastnosti FocusControl, ve které zadáte objekt s editovaným textem.

Editovaný text lze přenášet přes schránku Windows do jiného textu. Buď uživatelsky z klávesnice, nebo z programu. Vybraný text lze označit pomocí vlastností SelStart, SelLength a SelText. Celý text lze označit metodou SelectAll, pro výmaz označené části textu se použije metoda ClearSelection. Přenos textu mezi schránkou a objektem zajišťují metody CopyToClipboard, CutToClipboard a PasteFromClipboard.

Komponenta obsahuje mimo běžných událostí i událost OnChange, která nastane v okamžiku změny textu. Lze také použít událost OnKeyPress pro kontrolu zadávaných znaků s možností vynulování neplatných znaků.

Text je uložen ve vlastnosti Lines, kterou představuje proměnná typu StrArray. Uvedený typ proměnné má své vlastní metody pro práci s obsaženým textem.

Jednotlivé řádky textu jsou z programu přístupné svým indexem, to je pořadovým číslem řádku. Řádky jsou číslovány od nuly. První řádek má proto index nula, pátý řádek má index 4. Pokud potřebujete zjistit obsah řádku, musíte zadat jeho pořadový index. Obsah prvního řádku proto zobrazíte:

ShowMessage(Memo.Lines[0]);

Podobným způsobem můžete z programu změnit obsah řádku, kdy opět zadáváte index řádku a nový obsah. Pro druhý řádek v pořadí proto zadáte:

RichEdit.Lines[1]:='druhý řádek';

Nový řádek zadáte do textu z programu použitím metody Add následujícím způsobem:

RichEdit.Lines.Add('aaa');

Pokud potřebujete některý řádek textu zrušit, použijte volání metody Delete následujícím způsobem:

RichEdit.Lines.Delete(2);

Potřebujete-li v textu vyhledat index řádku se známým obsahem, použijte  funkci IndexOf:

ShowMessage(RichEdit.Lines.IndexOf('aaa'));

Editovaný text můžete uložit na disk do textového souboru metodou SaveToFile, případně načít textový soubor do seznamu metodou LoadFromFile:

RichEdit.Lines.SaveToFile('dokument.rtf');

RichEdit.Lines.LoadFromFile('dokument.rtf');

Potřebujete-li projít celý text a provést s každým řádkem textu nějakou akci, použijte vlastnosti Lines.Count. Musíte přitom počítat s tím, že se řádky číslují od nuly, počet položek řádek textu je však uváděn od jedničky. Od celkového počtu řádků musíte proto v cyklu jedničku odečíst:

for x:= 0 to RichEdit.Lines.Count-1 do

    RichEdit.Lines[x] := CsWinToLat(Memo.Lines[x]);

Editovaný text je také přístupný jako celek ve vlastnosti Text. Vlastnost je přístupná pouze z programu a text je uveden bez formátovacích nezobrazovaných znaků. Délka editovaného textu se zadává ve vlastnosti MaxLength. Standardně je zadána nula, což znamená, že délka textu není omezena.


Komponenta SaveDialog

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Ctl3D (RW)           DefaultExt (RW)      FileName (RW)

Filter (RW)          FilterIndex (RW)     HelpContext (RW)

InitialDir (RW)      Name (R)             Options

Tag (RW)             Title (RW)

--------------------------------------------------------------

Execute

--------------------------------------------------------------

OnClose              OnFolderChange       OnSelectionChange

OnShow               OnTypeChange

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta SaveDialog slouží pro zadání souboru k uložení. Dialog se vyvolá metodou Execute. Pokud se ukončí dialog stiskem klávesy 'OK', bude vybraný soubor přístupný ve vlastnosti Filename.

Viz také: OpenDialog

Příklad:

Po kliknutí na tlačítko Button se aktivuje dialog pro výběr souboru. Pokud je soubor vybrán, bude obsah objektu Memo uložen do zadaného souboru.

procedure TForm.ButtonClick(Sender: TObject);

begin

   if SaveDialog.Execute then

      Memo.Lines.SaveToFile(SaveDialog.Filename);

end;


Komponenta SavePictureDialog

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Ctl3D (RW)           DefaultExt (RW)      FileName (RW)

Filter (RW)          FilterIndex (RW)     HelpContext (RW)

InitialDir (RW)      Name (R)             Options

Tag (RW)             Title (RW)

--------------------------------------------------------------

Execute

--------------------------------------------------------------

OnClose              OnFolderChange       OnSelectionChange

OnShow               OnTypeChange

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta SavePictureDialog slouží pro zadání souboru k uložení. Dialog obsahuje oblast, ve které se zobrazuje obsah vybraného souboru. Dialog se vyvolá metodou Execute. Pokud se ukončí dialog stiskem klávesy 'OK', bude vybraný soubor přístupný ve vlastnosti Filename.

Viz také: OpenPictureDialog

Příklad:

Po kliknutí na tlačítko Button se aktivuje dialog pro výběr souboru. Pokud je soubor vybrán, bude obsah objektu Memo uložen do zadaného souboru.

procedure TForm.ButtonClick(Sender: TObject);

begin

   if SaveDialog.Execute then

      Image.Picture.SaveToFile(SavePictureDialog.Filename);

end;


Komponenta Screen

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Cursor (*RW)         Height (*R)          Width (*R)

--------------------------------------------------------------

Objekt neobsahuje žádnou metodu

--------------------------------------------------------------

Objekt nereaguje na žádné události

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta Screen není umístěna na paletě komponent, protože je obsažena vždy v každé spuštěné aplikaci. Obsahuje pouze tři vlastnosti definující informace o obrazovce. Ve vlastnosti Cursor lze zadat aktuální tvar kurzoru.  To je vhodné použít například pro zobrazení déletrvajícího výpočtu, kdy se zobrazuje místo běžného kurzoru symbol přesýpacích hodin.

Vlastnosti Height a Width vrací informace o grafickém rozlišení obrazovky.


Komponenta ScrollBar

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Ctl3D (RW)           Cursor (RW)          Enabled (RW)

Height (RW)          HelpContext (RW)     Hint (RW)

Kind (RW)            LargeChange (RW)     Left (RW)

Max (RW)             Min (RW)             Name (R)

ParentCtl3D (RW)     ParentShowHint (RW)  PopupMenu (RW)

Position (RW)        ShowHint (RW)        SmallChange (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

SetParams

--------------------------------------------------------------

OnChange             OnEnter              OnExit

OnKeyDown            OnKeyPress           OnKeyUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta ScrollBar se používá pro nastavení hodnot v požadovaném intervalu. Změna hodnot se provádí pomocí přetáčecího pruhu zvaného též někdy jako posuvnítko.

Orientaci přetáčecího pruhu určuje vlastnost Kind. Je možné horizontální (standard) nebo vertikální umístění. Minimální a maximální hodnotu nastavíte ve vlastnostech Min, a Max. Velikost posuvu (změny intervalu) zadáte ve vlastnostech LargeChange a SmallChange. Aktuální pozici udává vlastnost Position. Hodnotu minima, maxima a aktuální pozice můžete zadat najednou voláním metody SetParams.

Změnu pozice přetáčecího pruhu indikuje událost OnChange.

Podobné použití má i komponenta UpDown, která se však používá ve spojení s další komponentou pro zadání numerické hodnoty v požadovaném intervalu.

Příklad použití:

Požadujete, aby byl na formuláři zobrazen panel, jehož velikost chcete měnit pomocí objektu ScrollBar. Počáteční hodnota objektu ScrollBar a současně jeho vlastnost Max je rovna počáteční velikosti panelu. Panel bude proto  možné pouze zmenšovat.

procedure TForm.FormCreate(Sender: TObject);

begin

   ScrollBar.Max := Panel.Width;

end;

procedure TForm.ScrollBarChange(Sender: TObject);

begin

   Panel.Width := ScrollBar.Position;

end;


Komponenta ScrollBox

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           AutoScroll (RW)      BorderStyle (RW)

Color (RW)           Ctl3D (RW)           Cursor (RW)

Enabled (RW)         Font (RW)            Height (RW)

HelpContext (RW)     Hint (RW)            HorzScrollBar

Left (RW)            Name (R)             ParentColor (RW)

ParentCtl3D (RW)     ParentFont (RW)      ParentShowHint (RW)

PopupMenu (RW)       ShowHint (RW)        TabOrder (RW)

TabStop (RW)         Tag (RW)             Top (RW)

VertScrollBar        Visible (RW)         Width (RW)

--------------------------------------------------------------

OnClick              OnDblClick           OnEnter

OnExit               OnMouseDown          OnMouseMove

OnMouseUp            OnResize

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta ScrollBox slouží k vytvoření samostatné rolovací sekce formuláře, která může obsahovat ovládací prvky jiného typu. Používá se, pokud mají být některé části formuláře pevné, zatímco lze s ostatními volně posouvat.


Komponenta Shape

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Brush.Color (RW)     Brush.Style (RW)

Cursor (RW)          Enabled (RW)         Height (RW)

Hint (RW)            Left (RW)            Name (R)

ParentShowHint (RW)  Pen.Color (RW)       Pen.Mode (RW)

Pen.Style (RW)       Pen.Width (RW)       Shape (RW)

ShowHint (RW)        Tag (RW)             Top (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

OnMouseDown          OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta Shape slouží pro vykreslení jednoduchých grafických obrazců na formuláři. Druh zobrazeného obrazce se zadává ve vlastnosti Shape. Možné je vykreslit elipsu, kružnici, obdélník, obdélník se zakulacenými rohy, čtverec  a čtverec se zakulacenými rohy.

Ke změně výplně obrazce slouží vlastnost Brush, která má podvolby Color (barva) a Style (druh výplně). Jako druh výplně je možné zadat plnou plochu, případně čáry různého směru.


Komponenta SpeedButton

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

AllowAllUp (RW)      Caption (RW)         Cursor (RW)

Down (RW)            Enabled (RW)         Flat (RW)

Font (RW)            Glyph                GroupIndex (RW)

Height (RW)          Hint (RW)            Layout (RW)

Left (RW)            Margin (RW)          Name (R)

NumGlyphs (RW)       ParentFont (RW)      ParentShowHint (RW)

ShowHint (RW)        Spacing (RW)         Tag (RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

Click                Glyph.LoadFromFile

--------------------------------------------------------------

OnClick              OnDblClick           OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta SpeedButton zobrazuje na formuláři tlačítko s možností zobrazení textu a bitmapy (obrázku). Na rozdíl od komponenty BitBtn je však určena hlavně k tvorbě nástrojových lišt, protože umožňuje závislé propojení několika tlačítek.

Nejdůležitější vlastností je GroupIndex, která umožňuje slučovat tlačítka do skupin. Pro vytvoření skupiny tlačítek musíte zadat v celé skupině tlačítek stejnou, nenulovou hodnotu. To umožní závislé použití tlačítek, kdy je možné  sestavovat tlačítka do podoby přepínačů. Vždy pouze jedno tlačítko může být stisknuto. Zda je tlačítko stisknuto udává vlastnost Down.

Bitmapu můžete zadat ve vlastnosti Glyph. Nezapomeňte nastavit vlastnost NumGlyphs, která udává počet obsažených obrázků pro zobrazování stavu tlačítka. Bitmapu můžete načíst i z programu metodou Glyph.LoadFromFile.

Vlastnosti Layout, Spacing a Margin umožní nastavit uspořádání textu a bitmapy na tlačítku.

Nejdůležitější vlastností je OnClick, do které zadáte akci, která se má provést po stisknutí tlačítka.


Komponenta StaticText

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Alignment (RW)       AutoSize (RW)

BorderStyle (RW)     Caption (RW)         Color (RW)

Cursor (RW)          Enabled (RW)         FocusControl (RW)

Font (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            Left (RW)            Name (R)

ParentColor (RW)     ParentFont (RW)      ParentShowHint (RW)

PopupMenu (RW)       ShowAccelChar (RW)   ShowHint (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

OnClick              OnDblClick           OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta StaticText se používá pro zobrazování textu na formuláři bez možnosti jeho editace. Komponentu je možné použít jako návěští pro komponenty které nemají možnost použití rychlé přístupové Alt klávesy.

Pokud zadáte ve vlastnosti FocusControl objekt na formuláři a uvedete v textu uloženém ve vlastnosti Caption znak &, zobrazí se v aplikaci následující znak podtržený. Po stisku klávesy Alt+podtržený znak bude zaměřen objekt uvedený ve vlastnosti FocusControl.

Pokud požadujete orámování textu, použijte vlastnost BorderStyle.

Delší text je možné zobrazit dle nastavení komponenty WordWrap s automatickým rozdělením na několik řádků.

Viz také: Label


Komponenta StatusBar

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Cursor (RW)          Enabled (RW)

Font (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            Left (RW)            Name (R)

Panels               Panels.Text          ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       ShowHint (RW)

SimplePanel (RW)     SimpleText (RW)      SizeGrip (RW)

Tag (RW)             Top (RW)             Visible (RW)

Width (RW)

--------------------------------------------------------------

OnClick              OnDblClick           OnMouseDown

OnMouseMove          OnMouseUp            OnResize

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta StatusBar slouží pro zobrazování stavového řádku aplikace. Umožňuje zobrazovat například stav databáze nebo informace o postupu výpočtů. Pomocí stavového řádku lze jednoduše zobrazovat i pokyny k obsluze, případně jednoduchou nápovědu. Dle nastavení vlastnosti SimplePanel lze stavový řádek použít jako jednoduchý, případně rozdělený na několik samostatných sekcí.

Pokud je nastaveno zobrazování jednoduchého panelu, zadává se text pro zobrazení do vlastnosti SimpleText. Při rozdělení panelu na samostatné sekce  se zadává text do vlastnosti Panels.Text. Při návrhu aplikace je pro zadání sekcí používán speciální vizuální editor.

Příklad:

ShowMessage(StatusBar.Panels.Text[0]);

StatusBar.Panels.Text[1]:='abcd';


Komponenta StrArray

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Count (R)

--------------------------------------------------------------

Add                  Delete               Exchange

IndexOf              Insert               LoadFromFile

Move                 SaveToFile

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Jedna z mála komponent, která není umístěna na paletě komponent, přesto má však velký význam. Nepoužívá se nikdy přímo, je však obsažena v dalších komponentách jako jedna z vlastností. Jedná se například o vlastnost Lines u komponent Memo, DataMemo a RichEdit, vlastnost Items u komponent ComboBox, ListBox, CheckListBox a RadioGroup nebo vlastnost Tabs u vlastnosti TabControl.

Ke komponentě se z programu přistupuje vždy přes jméno rodičovského (nadřazeného) objektu na formuláři, které se uvádí vždy včetně vlastnosti nebo metody typu StrArray. Objekty jsou přitom odděleny tečkou. Pro přidání nového řetězce do textu komponenty Memo (vlastnost Lines) se proto při použití metody Add použije následující zápis:

Memo.Lines.Add('abcd');

Vnitřně je možné si komponentu typu StrArray představit jako seskupení samostatných řetězců, které jsou z programu přístupné svým indexem, to je pořadovým číslem řetězce. Indexy jsou číslovány od nuly. První řetězec v seznamu má proto index nula, pátý řetězec má index 4. Pokud potřebujete zjistit obsah řetězce, musíte zadat jeho pořadový index, který se zadává v hranatých závorkách. Obsah prvního řádku textu komponenty Memo proto zobrazíte:

ShowMessage(Memo.Lines[0]);

Podobným způsobem můžete změnit obsah řetězce, kdy opět zadáváte přístupový index a nový obsah. Pro druhý řádek textu komponenty Memo proto zadáte:

Memo.Lines[1]:='druhý řádek';

Novou položku zadáte do seznamu řetězců z programu použitím metody Add následujícím způsobem:

Memo.Lines.Add('aaa');

Pokud potřebujete zrušit některou položku ze seznamu řetězců, použijte volání metody Delete následujícím způsobem:

Memo.Lines.Delete(2);

Potřebujete-li v seznamu řetězců vyhledat index položky se známým obsahem, použijte funkci IndexOf následujícím způsobem:

ShowMessage(Memo.Lines.IndexOf('aaa'));

Seznamu řetězců můžete uložit na disk do textového souboru metodou SaveToFile, případně načít textový soubor do seznamu řetězců metodou LoadFromFile:

Memo.Lines.SaveToFile('seznam.txt');

Memo.Lines.LoadFromFile('seznam.txt');

Potřebujete-li projít celý seznam řetězců a provést s každou položkou seznamu nějakou akci, použijte vlastnosti Count. Musíte přitom počítat s tím, že se položky seznamu číslují od nuly, počet položek seznamu  je však uváděn od jedničky. Od počtu položek řetězců musíte proto v cyklu jedničku odečíst:

for x:= 0 to Memo.Lines.Count-1 do

    Memo.Lines[x] := CsWinToLat(Memo.Lines[x]);

Konkrétní příklady použití jsou uvedeny vždy u popisu vlastnosti, která je typu StrArray.


Komponenta StringGrid

Přehled vlastností, metod a událostí objektu:

-----------------------------------------------------------------

Align (RW)            BorderStyle (*RW)     Cells (*RW)

Col (*RW)             ColCount (RW)         Color (RW)

Ctl3D (RW)            Cursor (RW)           DefaultColWidth (RW)

DefaultRowHeight (RW) Editing (RW)          Enabled (RW)

FixedColor (RW)       FixedCols (RW)        FixedRows (RW)

Font (RW)             GridLineWidth (RW)    Height (RW)

HelpContext (RW)      Hint (RW)             Left (RW)

Name (R)              Options               ParentColor (RW)

ParentCtl3D (RW)      ParentFont (RW)       ParentShowHint (RW)

PopupMenu (RW)        Row (*RW)             RowCount (RW)

ScrollBars (RW)       ShowHint (RW)         TabOrder (RW)

TabStop (RW)          Tag (RW)              Top (RW)

Visible (RW)          Width (RW)

-----------------------------------------------------------------

OnClick               OnDblClick            OnEnter

OnExit                OnKeyDown             OnKeyPress

OnKeyUp               OnMouseDown           OnMouseMove

OnMouseUp

-----------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta StringGrid umožňuje zobrazovat textové řetězce ve formě tabulky uspořádané do řádků a sloupců. Počet řádků tabulky udává vlastnost RowCount, počet sloupců je určen vlastností ColCount.

Tabulku lze zobrazit také tak, že lze barevně odlišit zadaný počet horních řádků a zadaný počet sloupců tabulky. Zadává se ve vlastnostech FixedRows a FixedCols. Standardní hodnota je 1. Vznikne tak záhlaví tabulky. Jeho barvu lze zadat ve vlastnosti FixedColor.

Velikost řádků a sloupců udávají vlastnosti DefaultColWidth a DefaultRowHeight. Tloušťku čáry pro nakreslení tabulky lze zadat ve vlastnosti GridLineWidth.

Pro zadání textu do tabulky se používá vlastnost Cells, která je dostupná pouze z programu. Jako parametr se uvádí souřadnice pozice buňky v tabulce.   Souřadnice se přitom zadávají od nuly. První řádek má proto například index s číslem nula.

Uživatel má možnost se v tabulce běžným způsobem pohybovat. Aktuální pozice v tabulce je určena ve vlastnostech Col a Row, které jsou dostupné pouze z programu.

Editaci tabulky uživatelem je možné zakázat, případně povolit z programu definicí vlastnosti Editing.


Komponenta TabControl

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Align (RW)           Cursor (RW)          Enabled (RW)

Font (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            HotTrack (RW)        Left (RW)

MultiLine (RW)       Name (RW)            ParentFont (RW)

ParentShowHint (RW)  PopupMenu (RW)       ScrollOpposite (RW)

ShowHint (RW)        TabHeight (RW)       TabIndex (RW)

TabOrder (RW)        TabPosition (RW)     Tabs (RW)

TabStop (RW)         TabWidth (RW)        Tag (RW)

Top (RW)             Visible (RW)         Width (RW)

--------------------------------------------------------------

OnChange             OnEnter              OnExit

OnMouseDown          OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta TabControl slouží pro tvorbu panelů se záložkami. Neobsahuje však žádné karty podřízené nadřazeným záložkám. Komponenta proto neumožňuje automatickou změnu obsahu panelu v závislosti na změně záložky. K tomu je vhodné použít komponentu PageControl.

Komponentu je výhodné použít, pokud nepožadujeme změnu obsahu panelu při změně záložky. Na zobrazovaném panelu lze například zobrazovat databázi v datové mřížce DataGrid a záložky mohou obsahovat písmena abecedy. Výběrem požadovaného písmene se nastaví záložka se současným zobrazením dat podle indexu zadaného písmene. Vznikne tak jednoduchá kartotéka.

Informace o záložkách jsou uloženy ve vlastnosti Tabs, která je typu StrArray a je možné s ní proto jednoduše pracovat přímo z programu. Vlastnost TabIndex zadává aktuálně vybranou záložku. Vlastnost MultiLine určuje, zda se mají záložky při větším počtu zobrazovat ve více řadách.


Komponenta TabSheet

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Caption (RW)         Cursor (RW)          Enabled (RW)

Font (RW)            Height (RW)          HelpContext (RW)

Hint (RW)            Left (RW)            Name (R)

PageIndex (RW)       ParentFont (RW)      ParentShowHint (RW)

PopupMenu (RW)       ShowHint (RW)        TabIndex (*R)

TabVisible (RW)      Tag (RW)             Top (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

OnEnter              OnExit               OnMouseDown

OnMouseMove          OnMouseUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta TabSheet je jedna z mála komponent, která není umístěna na paletě komponent. Je totiž pouze součástí objektu PageControl, nelze ji proto používat samostatně. Komponenta definuje obsah stránek zobrazených na objektu PageControl pod jednotlivými záložkami. Pro každou záložku objektu typu PageControl je přitom definována samostatná stránka - objekt typu TabSheet.

Vlastnost Caption definuje nápis na záložce.  Index vybrané (aktivní) záložky určuje vlastnost TabIndex. Její změnou je možné změnit také zobrazovanou záložku.

Vlastnost PageIndex vrací, případně nastaví pořadí záložky v seznamu záložek. Změnou se přesune záložka včetně svého obsahu na novou pozici. Vlastnost TabVisible zadává viditelnost a přístupnost záložky.

Objekt typu TabSheet nemá definovány žádné metody. Události dokáží pouze detekovat vstup do stránky, výstup ze stránky a použití myši.


Komponenta Timer

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Enabled              Interval             Name

Tag

--------------------------------------------------------------

OnTimer

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta Timer se používá  pro provádění periodicky prováděných akcí  v  průběhu  déletrvajícího   procesu.  Je  možné  například zobrazovat průběžně čas provádění akce, kontrolovat zadaný časový limit a podobně. Vzhledem k multitaskingu Windows není zpracování časového  intervalu  zcela  přesné.  Zadaná  akce  proto  může být vzhledem k  souběžně probíhajícím procesům  zpracována i později, než je zadaný časový interval. Ne však dříve.

Kontrolovaný  časový interval  se zadává  ve vlastnosti  Interval v milisekundách.  Akce,  která  se  po  zadaném časovém intervalu provede  se  zadává  v  události  OnTimer.  Akce  by  měla být co nejkratší.

Nezadávejte  v  aplikaci  mnoho  časovačů,  protože  tím  dochází k celkovému zpomalení aplikace a  hlavně se odčerpávají systémové zdroje Windows a  mohlo by tím dojít až  k nefunkčnosti operačního systému.

Pro zapnutí a vypnutí časovače je možné použít vlastnost Enabled. Pokud  je   nastaveno  Enabled  :=  False,   nebude  akce  zadaná v události OnTimer prováděna.


Komponenta TrackBar

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

Ctl3D (RW)           Cursor (RW)          Enabled (RW)

Frequency (RW)       Height (RW)          HelpContext (RW)

Hint (RW)            Left (RW)            LineSize (RW)

Max (RW)             Min (RW)             Name (R)

Orientation (RW)     PageSize (RW)        ParentCtl3D (RW)

ParentShowHint (RW)  PopupMenu (RW)       Position (RW)

SelEnd (RW)          SelStart (RW)        ShowHint (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

TickMarks (RW)       TickStyle (RW)       Top (RW)

Visible (RW)         Width (RW)

--------------------------------------------------------------

SetTick

--------------------------------------------------------------

OnChange             OnEnter              OnExit

OnKeyDown            OnKeyPress           OnKeyUp

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta TrackBar umožňuje snadné uživatelské zadání celočíselné hodnoty tažením jezdce posuvníku podél zobrazené stupnice. Je možné zadat minimální a maximální hodnotu. Nastavená hodnota je dostupná ve vlastnosti Position. Ukazatel pro zadání hodnoty je možné umístit na formuláři buď vodorovně nebo svisle dle nastavení vlastnosti Orientation.

Stupnici lze podle vlastnosti TickStyle zobrazit buď automaticky, případně lze zadat metodou SetTick vlastní stupnici s libovolným rozmístěním značek.

Pomocí vlastností SelStart a SelEnd lze zobrazovat mimo jezdce s posuvníkem i zvýrazněnou oblast například pro zvýraznění optimálních hodnot.


Komponenta UpDown

Přehled vlastností, metod a událostí objektu:

--------------------------------------------------------------

AlignButton (RW)     ArrowKeys (RW)       Associate (RW)

Cursor (RW)          Enabled (RW)         Height (RW)

HelpContext (RW)     Hint (RW)            Increment (RW)

Left (RW)            Max (RW)             Min (RW)

Name (R)             Orientation (RW)     ParentShowHint (RW)

PopupMenu (RW)       Position (RW)        ShowHint (RW)

TabOrder (RW)        TabStop (RW)         Tag (RW)

Thousands (RW)       Top (RW)             Visible (RW)

Width (RW)           Wrap (RW)

--------------------------------------------------------------

Objekt nereaguje na žádné události, ačkoliv jsou zobrazovány

--------------------------------------------------------------

Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta UpDown slouží ve spojení s editačním polem ke zvyšování nebo snižování celočíselné hodnoty pomocí ovládacích šipek.

Editační pole, ve kterém se zobrazuje číselná hodnota se zadává ve vlastnosti Associate. Objekt UpDown se umístí automaticky vpravo, nebo vlevo od editačního pole v závislosti na vlastnosti AlignButton. Ve vlastnosti Orientation se zadá orientace ovládacích šipek. Hodnota změny se projeví automaticky v editačním poli, odkud lze aktuální hodnotu dále použít.

UPOZORNĚNÍ:

Protože si objekt zajišťuje sám ošetření všech událostí, nelze události objektu UpDown použít k vlastním účelům.


Vlastnost Active

Vlastnost indikuje, zda je objekt aktivní.

komponenta Animate

komponenta DataTable


Vlastnost Active

property Active: Boolean;

Vlastnost Active určuje, zda je zadaná animace aktivní. Pokud je zadána hodnota True, bude animace spuštěna. Předváděná sekvence je závislá na dalších zadaných vlastnostech.


Vlastnost Active

property Active: Boolean;

Vlastnost Active určuje, zda je databáze aktivní, to je zda je otevřena pro čtení nebo zápis. Pro nastavení na hodnotu True musíte nejprve zadat jméno databáze ve vlastnosti TableName, případně také ve vlastnosti DatabaseName adresář, ve kterém se databáze nachází.

Pokud je nastavena vlastnost Active na hodnotu True, nelze změnit nastavení vlastností DatabaseName, Exclusive a TableName. Nejprve je nutné nastavit vlastnost Active na hodnotu False, až potom lze uvedené vlastnosti změnit.


Vlastnost ActiveControl

property ActiveControl: object;

Vlastnost ActiveControl udává objekt na formuláři, který je nastaven pro vstup, pokud se stane formulář aktivní. Na formuláři může být pro vstup označen vždy pouze jeden objekt určený pro vstup. Je to vždy ten objekt, který je aktivní a připraven pro zadávání hodnot (např. objekt Edit) nebo připraven pro spuštění akce (např. tlačítko Button).

Příklad:

Form.ActiveControl := Edit1;


Vlastnost ActivePage

property ActivePage: TabSheet;

Vlastnost ActivePage určuje aktivní zobrazovanou stránku (objekt typu TabSheet). Při požadavku na změnu stránky se zadává přímo název objektu typu TabSheet (ne jako řetězec).

Příklad:

PageControl.ActivePage := TabSheet1;


Vlastnost Align

property Align: set;

Vlastnost Align udává způsob automatického zarovnávání objektu na formuláři. Možné hodnoty nastavení:

alNone - umístění a velikost dle nastavení a beze změn

alTop - objekt se přesouvá na vrchol formuláře nebo panelu se zachováním původní výšky objektu, šířka objektu se roztáhne na plnou plochu formuláře, případně panelu

alBottom - objekt se přesouvá na dolní část formuláře nebo panelu se zachováním původní výšky objektu, šířka objektu se roztáhne na plnou plochu formuláře, případně panelu

alLeft - objekt se přesouvá na levou část formuláře nebo panelu se zachováním původní šířky objektu, výška objektu se roztáhne na plnou plochu formuláře, případně panelu

alRight - objekt se přesouvá na pravou část formuláře nebo panelu se zachováním původní šířky objektu, výška objektu se roztáhne na plnou plochu formuláře, případně panelu

alClient - velikost objektu se upravuje vždy na plnou plochu formuláře, případně panelu

Příklad:

Panel.Align := alClient;

Memo.Align  := alRight;


Vlastnost AlignButton

property AlignButton: set;

Vlastnost AlignButton definuje umístění provázaného editačního pole, do kterého se automaticky převádí číselná hodnota nastavená objektem UpDown. Je možné zadat jednu z následujících hodnot:

udLeft 	-  na levé hraně objektu

udRight 	- na pravé hraně objektu

Objekt se na uvedenou hranu přemístí automaticky se současným přizpůsobením své velikosti.


Vlastnost Alignment

Způsob umístění textu na ploše objektu.

komponenta PopupMenu

ostatní komponenty


Vlastnost Alignment

property Alignment: set;

Vlastnost Alignment udává způsob zobrazení PopupMenu na ploše objektu vzhledem k pozici ukazatele myši. Je možné provést nastavení jednou z následujících hodnot:

paLeft 	- PopupMenu se zobrazí vlevo od pozice myši

paCenter 	- PopupMenu se zobrazí vycentrováno vzhledem k pozici myši

paRight 	- PopupMenu se zobrazí vpravo od pozice myši


Vlastnost Alignment

property Alignment: set;

Vlastnost Alignment udává způsob umístění textu na ploše objektu. Může se přitom jednat o text na ploše panelu, případně text u objektu Label. Je možné provést nastavení jednou z následujících hodnot:

taLeftJustify	- text se zarovnává vlevo

taCenter 	- text se vycentruje

taRightJustify 	- text se zarovná vpravo

U komponenty CheckBox a RadioButton udává vlastnost umístění textu vůči tlačítku. Není možné zadat volbu taCenter.

Příklad:

Panel.Caption := 'xyz';

Panel.Alignment := taLeftJystify;


Vlastnost AllowAllUp

property AllowAllUp;

Vlastnost AllowAllUp určuje, zda je možné mít v jedné skupině tlačítek všechna tlačítka bez výběru. Pokud nastavíte u všech tlačítek ve skupině (vlastnost GroupIndex) vlastnost AllowAllUp na True, potom bude možné  mít všechna tlačítka vypnutá (bez stisku). Při nastavení vlastnosti AllowAllUp na hodnotu False budou tlačítka ve skupině působit jako přepínače. To znamená, že bude vždy jeno tlačítko stisknuté. První stisknuté tlačítko musíte zadat při návrhu programu.

UPOZORNĚNÍ:

Pokud není nastavena vlastnost GroupIndex na nenulovou hodnotu, nemá nastavení vlastnosti AllowAllUp žádný význam.

Viz také:

GroupIndex, Down


Vlastnost AllowGrayed

property AllowGrayed: Boolean;

Vlastnost AllowGrayed definuje, zda může být nastaven třetí stav tlačítka. Tato volba je indikována šedou barvou a může být použita pro zaznamenání neznámého stavu. Pokud bude zadána hodnota True, bude možné zadat tři stavy tlačítka a to True, False a neznámý stav. Například pokud nebyla v dotazníku odpovězena otázka, je možné zaznamenat neznámý stav.

Viz také:

Checked, State

Příklad:

{povolí a nastaví neznámý stav tlačítka}

procedure TForm.FormCreate(Sender: TObject);

begin

   CheckBox.AllowGrayed := True;

   CheckBox.State       := cbGrayed;

end;


Vlastnost ArrowKeys

property ArrowKeys: boolean;

Vlastnost ArrowKeys určuje, zda může být prováděna změna hodnoty  pouze myší, nebo i z klávesnice.  Je-li zadána hodnota True, je možné provádět změnu nastavení hodnot stiskem kláves s šipkou nahoru nebo dolů. Při zadání hodnoty False je možné provádět změnu hodnot pouze myší.

Vlastnost je využitelná pouze v případě, že máte zadán současně provázaný editační prvek.


Vlastnost Associate

property Associate: TObject;

Vlastnost Associate definuje provázané editační pole, do kterého se automaticky převádí číselná hodnota nastavená objektem UpDown.

Příklad:

Associate := Edit1;


Vlastnost AutoDisplay

property AutoDisplay: boolean;

Vlastnost AutoDisplay určuje, zda se budou automaticky zobrazovat data z memopoložek databází. Pokud je zadána standardní hodnota True, je při každé změně pozice v databázi automaticky zobrazován nový obsah memopoložky databáze v objektu typu DataMemo. Při zadání hodnoty False se bude místo obsahu memopoložky zobrazovat pouze jméno databázové položky. Data lze v takovém případě zobrazit voláním metody LoadMemo. Vlastnost lze využít v případě požadavku na větší rychlost zpracováni, kdy se zobrazí obsah memopoložky pouze na pokyn uživatele.

Příklad:

U objektu DataMemo je nastaveno, že se nemá zobrazovat automaticky obsah memopoložky. Zobrazí se pouze pokud klikne uživatel myší na plochu, ve které se memopoložka zobrazuje.

procedure TForm.DataMemoClick(Sender: TObject);

begin

   DataMemo.LoadMemo;

end;


Vlastnost AutoEdit

property AutoEdit: Boolean;

Vlastnost AutoEdit umožňuje zabránit editaci položek uživatelem. Pokud je zadána hodnota False, je možné změnit obsah databáze pouze z programu.


Vlastnost AutoEnable

property AutoEnable: Boolean;

Vlastnost AutoEnable určuje, zda zajišťuje objekt MediaPlayer sám automaticky zpřístupnění možných tlačítek.

Pokud je zadána hodnota True, zajišťuje objekt sám automaticky aktualizaci přístupnosti jednotlivých tlačítek podle aktuálního stavu přehrávače a prováděné akce. Tlačítka, která není možné použít jsou nepřístupná a není možné je použít. Při zadání hodnoty False, jsou všechna tlačítka stále přístupná bez ohledu na stav přehrávače.


Vlastnost AutoOpen

property AutoOpen: Boolean;

Vlastnost AutoOpen určuje, zda je určené zařízení zadané ve vlastnosti DeviceType otevřeno automaticky ihned při aktivaci formuláře. Pokud je zadána hodnota True, je zařízení ihned při aktivaci formuláře připraveno k provozu. Při zadání hodnoty False je nutné pro aktivaci zařízení použít metodu Open. V takovém případě již totiž není možné použít případně pozdější nastavení vlastnosti AutoOpen z programu.


Vlastnost AutoPopUp

property AutoPopup: Boolean;

Vlastnost AutoPopup definuje, zda je závěsné Popup menu vyvoláno automaticky po kliknutí pravým tlačítkem myši nad objektem, pro které je PopupMenu definováno. Pokud je ponechána standardní hodnota True, dojde vždy k vyvolání Popup menu. Při zadání hodnoty False se Popup menu nevyvolá. Lze jej však vyvolat kdykoliv z programu metodou PopUp.

Vlastnost lze použít v případě, kdy není vhodné, aby se Popup menu používalo. Například pokud definuje Popup menu akce, které se provádí v editoru, je vhodné nastavit vlastnost AutoPopup na hodnotu True pouze  tehdy, pokud se zpracovává text. Není-li text zadán, je nastavena vlastnost AutoPopup na hodnotu False.


Vlastnost AutoRewind

property AutoRewind: Boolean;

Vlastnost AutoRewind určuje, zda je nastavena počáteční startovací pozice zařízení automaticky po dosažení konečné pozice. Pokud je zadána hodnota True, dojde automatiky na konci přehrávání k přechodu na počátek. Při zadání hodnoty False zůstane pozice zachována beze změny a je možné ji změnit kliknutím na tlačítko Prev objektu MediaPlayer nebo voláním metody Previous.


Vlastnost AutoScroll

Property AutoScroll: Boolean;

Vlastnost AutoScroll určuje, zda se na formuláři zobrazí automaticky přetáčecí pruhy, pokud není dostatečná velikost formuláře pro zobrazení svého obsahu.

Pokud je vlastnost AutoScroll nastavena na hodnotu True, potom se přetáčecí pruhy zobrazí na formuláři automaticky, pokud je to nutné. Například pokud uživatel změní velikost formuláře tak, že některé zobrazované objekty na formuláři nejsou plně viditelné, budou zobrazeny přetáčecí pruhy pro možnost scollování plochy formuláře pro zobrazení skrytých objektů.

Při nastavení vlastnosti AutoScroll na hodnotu False, nebudou přetáčecí pruhy zobrazovány.


Vlastnost AutoSelect

property AutoSelect: Boolean;

Vlastnost AutoSelect určuje, zda je v okamžiku zaměření označen celý text umístěný v objektu. Používá se pokud se počítá s tím, že bude uživatel text měnit. V takovém případě, se zadá hodnota True. Pokud získá objekt zaměření, bude celý text označen. Při stisku klávesy se znaky ze označený text zruší a zapisuje se do prázdné položky. Při stisku klávesy se šipkou se zruší označení a je možné text opravovat.

Pokud se zadá ve vlastnosti Autoselect hodnota False, není text objektu při jeho zaměření označen a je možné jej běžným způsobem editovat.

UPOZORNĚNÍ:

Pokud změníte zaměření objektu kliknutím myši, nebude text označen, ale kurzor se umístí na místo kliknutí myši. Vlastnost AutoSelect je uplatněna pouze v případě, že je objekt zaměřen při změně objektu pomocí klávesy Tab, případně použitím volání metody SetFocus.


Vlastnost AutoSize

Definuje, zda se po změně velikosti upraví velikost objektu.

komponenta Image

ostatní komponenty


Vlastnost AutoSize

property AutoSize: Boolean;

Vlastnost AutoSize určuje, zda bude velikost objektu upravena automaticky v závislosti na zobrazované bitmapě. Pokud je zadána hodnota True, potom je velikost objektu upravena dle grafického rozlišení obrázku. Při zadání hodnoty False zůstává velikost objektu beze změny, obrázek bude v takovém případě zobrazen dle nastavení vlastnosti Center a Stretch.


Vlastnost AutoSize

property AutoSize: Boolean;

Vlastnost AutoSize určuje, zda je velikost objektu závislá na zobrazovaném obsahu. Pokud je zadána hodnota True, potom je například velikost editačního pole objektu Edit nastavena vždy podle obsahu zadaného objektu. Pokud se zadá vlastnost False, je velikost objektu dána pevně vlastností Width. To znamená, že text zobrazovaný objektem Edit může být někdy uříznut.


Vlastnost BevelInner

property BevelInner: set;

Vlastnost BevelInner definuje styl vnitřního okraje panelu. Je možné zadat jenu z následujících hodnot:

bvNone 	- standardní hodnota

bvLowered	- vnitřní okraj je zapuštěný

bvRaised	- vnitřní okraj je vyvýšený

Viz také:

BevelOuter, BevelWidth, BorderStyle, BorderWidth


Vlastnost BevelOuter

property BevelOuter: set;

Vlastnost BevelOuter definuje styl vnějšího okraje panelu. Je možné zadat jenu z následujících hodnot:

bvNone 	-standardní hodnota

bvLowered	- vnější okraj je zapuštěný

bvRaised	- vnější okraj je vyvýšený

Viz také:

BevelInner, BevelWidth, BorderStyle, BorderWidth


Vlastnost BevelWidth

property BevelWidth: integer;

Vlastnost BevelWidth definuje šířku čáry vnitřního a vnějšího orámování panelu. Není možné zadat nulovou hodnotu.

Viz také:

BevelInner, BevelOuter, BorderStyle, BorderWidth


Vlastnost BorderIcons

property BorderIcons: set;

Vlastnost BorderIcons udává, které systémové ikony se zobrazují v pravé horní liště formuláře. Je možné zadávat libovolnou kombinaci z uvedených hodnot:

biSystemMenu	- možnost aktivace systémového menu formuláře

biMinimize	- minimalizace formuláře do ikony

biMaximize	- maximalizace formuláře na plnou plochu obrazovky

Jisté kombinace vlastnosti BorderIcons jsou závislé na nastavení vlastnosti BorderStyle, kdy se vzájemně vylučují. Vlastnost je možné nastavit pouze při návrhu aplikace, není dostupná z programu.


Vlastnost BorderStyle

Vlastnost BorderStyle vrací nebo nastaví ohraničení (rámeček) kolem objektu.

komponenta Form

ostatní komponenty


Vlastnost BorderStyle

property BorderStyle: set;

Vlastnost BorderStyle udává vzhled okrajů objektu. Možný je výběr z následujících hodnot:

bsNone 	- bez orámování

bsSingle	- orámování jednoduchou čarou

Příklad:

Edit.BorderStyle := bsNone;


Vlastnost BorderStyle

property BorderStyle: set;

Vlastnost BorderStyle je sada hodnot, které specifikují vzhled a chování okrajů formuláře, titulního pruhu formuláře a možnost změny velikosti formuláře uživatelem. Možný je výběr z následujících hodnot:

bsDialog	- není možná změna velikosti formuláře (vhodné pro dialogy)

bsSingle	- není možná změna velikosti formuláře, jednoduchá čára

bsNone	- není možná změna velikosti formuláře, žádný okraj

bsSizeable	- možnost změny velikosti formuláře, standardní okraj

bsToolWindow	- podobně jako bsToolWindow, menší záhlaví formuláře

bsSizeToolWin	- podobně jako bsSizeable, menší záhlaví formuláře

Příklad:

Form.BorderStyle := bsDialog;

Edit.BorderStyle := bsNone;


Vlastnost BorderWidth

property BorderWidth: integer;

Vlastnost BorderWidth definuje vzdálenost mezi vnitřním a vnějším orámováním panelu. Není možné zadat nulovou hodnotu.

Viz také:

BevelInner, BevelOuter, BorderStyle


Vlastnost Brush.Color

property Brush.Color: set;

Vlastnost určuje barvu výplně zobrazovaného grafického obrazce. Lze zadat jednu z používaných barev.

Viz také: Brush.Style


Vlastnost Brush.Style

property Brush.Style: set;

Vlastnost určuje styl vykreslování ploch. Lze zadat jednu z následujících možností:

bsSolid        	- vyplní oblast jednou barvou

bsClear       	- vyplní oblast barvou pozadí

bsHorizontal	- vyplní oblast vodorovnými čarami

bsVertical     	- vyplní oblast svislými čarami

bsFDiagonal    	- diagonální čáry \\\\\\\

bsBDiagonal    	- diagonální čáry ///////

bsCros         	- vodorovné a svislé čáry

bsDiagCross    	- vodorovné a svislé čáry diagonálně

Viz také: Brush.Color


Vlastnost CalAlignment

property CalAlignment: set;

Vlastnost CalAlignment určuje umístění kalendáře při uživatelském výběru data. Je možné zadat jednu z následujících hodnot:

dtaLeft	- kalendář je umístěn při zadávání data vlevo

dtaRight	- kalendář je umístěn při zadávání data vpravo


Vlastnost CalColors

Vlastnost CalColors se používá pro nastavení barev kalendáře sloužícího pro výběr data. Barvy lze nastavit pouze při návrhu aplikace, není možné je zadat z programu.


Vlastnost Cancel

property Cancel: Boolean;

Vlastnost Cancel určuje, zda se vykoná obsah události OnClick, pokud je stisknuto tlačítko Esc. Pokud je nastavena hodnota True, událost OnClick tlačítka se provede, když stiskne uživatel klávesu Esc. Ačkoliv může mít aplikace více než jeno ukončovací tlačítko, formulář vyvolá událost OnClick pouze pro první viditelné tlačítko v pořadí tabulátoru.


Vlastnost Caption

property Caption: String;

Vlastnost Caption definuje textový obsah, který identifikuje objekt uživateli.  U formuláře je to například titulek okna, u tlačítka zobrazený text na formuláři. Prvotní nastavení vlastnosti Caption je po umístění objektu na formulář totožné s vlastností Name, je možné jej kdykoliv změnit.

U komponenty MenuItem obsahuje vlastnost Caption text položky menu. Pokud požadujete zobrazit místo textu menu oddělovací čáru mezi jednotlivými položkami menu, zadejte do vlastnosti Caption pouze pomlčku.

Příklad:

Form.Caption := 'Hlavní formulář aplikace';


Vlastnost Cells

property Cells[Col, Row: integer]: String;

Vlastnost Cells zadává řetězec, který je obsažen v tabulce na pozici zadané sloupcovým a řádkovým indexem. Indexy se zadávají v hranatých závorkách a počítají se od nuly. Levá horní buňka v tabulce má proto index [0,0].

Příklad:

StringGrid.Cells[1, 3] := 'abcd';


Vlastnost Center

property Center: Boolean;

Vlastnost Center zadává, zda má být zobrazená bitmapa ve vymezeném prostoru vycentrována.

Viz také:

AutoSize, Stretch


Vlastnost CharCase

property CharCase: set;

Vlastnost CharCase určuje způsob konverze znaků při zápisu. Možný je výběr z následujících hodnot:

ecLowerCase	- znaky jsou konvertovány na malá písmena

ecNortmal	- znaky nejsou konvertovány

ecUpperCase	- znaky jsou konvertovány na velká písmena

Příklad:

{bude provádět konverzi na velká písmena}

DataEdit.CharCase := ecUpperCase;


Vlastnost Checked

Vlastnost Checked indikuje stav objektu (vybráno/nevybráno).

komponenty CheckBox, DataCheckBox

komponenta CheckListBox

komponenta DateTimePicker

komponenta MenuItem

komponenta RadioButton


Vlastnost Checked

property Checked[index: integer]: Boolean;

Vlastnost Checked vrací, případně nastaví stav tlačítka objektu CheckListBox. Parametr udává pořadový index položky seznamu. Pokud je zobrazený čtvereček prázdný, je indikována hodnota False. Stejně tak i při neznámém stavu, který je indikován šedou barvou. Pokud je zadán křížek, je vrácena hodnota True. Obdobným způsobem dovoluje vlastnost provést i nastavení nové hodnoty. Neznámý stav lze však nastavit pouze vlastností State.

UPOZORNĚNÍ:

Seznam se čísluje od nuly. První položka seznamu má index 0, druhá 1, atd. Proto například pátá položka v seznamu má index s číslem 4.

Viz také:

AllowGrayed, State

Příklad:

if CheckListBox.Checked[3] then

   Edit.Text := 'True'

else Edit.Text := 'False';


Vlastnost Checked

property Checked: Boolean;

Vlastnost Checked vrací stav tlačítka objektu CheckBox. Pokud je zobrazený čtvereček prázdný, je indikována hodnota False. Stejně tak i při neznámém stavu, který je indikován šedou barvou. Pokud je zadán křížek, je vrácena hodnota True. Obdobným způsobem dovoluje vlastnost provést i nastavení nové hodnoty. Neznámý stav lze však nastavit pouze vlastností State.

Viz také:

AllowGrayed, State

Příklad:

if CheckBox.Checked then Edit.Text := 'True'

else Edit.Text := 'False';


Vlastnost Checked

property Checked: Boolean;

Vlastnost Checked vrací, případně nastaví stav přepínacího tlačítka umístěného na objektu DateTimePicker. Pokud je zobrazený čtvereček prázdný, je indikována hodnota False. Pokud je zadán křížek, je vrácena hodnota True. Obdobným způsobem dovoluje vlastnost provést i nastavení nové hodnoty.

Přepínací tlačítko se na objektu DateTimePicker zobrazuje pouze v případě, pokud je nastavena vlastnost ShowCheckBox na hodnotu True.


Vlastnost Checked

property Checked: Boolean;

Vlastnost Checked umožní zobrazit u položky menu značku pro odsouhlasení (tzv. 'fajfku'). Značka může takto indikovat například nastavení volby, protože má význam dvoupolohového přepínače.

Viz také: RadioItem


Vlastnost Checked

property Checked: Boolean;

Vlastnost Checked vrací stav přepínače objektu RadioButton. Pokud je zobrazený kroužek prázdný, je indikována hodnota False. Pokud je v kroužku tečka, je vrácena hodnota True. Obdobným způsobem dovoluje vlastnost provést i nastavení nové hodnoty.

Příklad:

if RadioButton.Checked then Edit.Text := 'True'

else Edit.Text := 'False';


Vlastnost ClientHeight

property ClientHeight: Integer;

Vlastnost ClientHeight určuje výšku oblasti na formuláři v bodech určenou pro zobrazování objektů. Do této oblasti se na rozdíl od vlastnosti Height nezapočítává výška titulního pruhu okna, výška menu, velikost stavového pruhu a podobně.


Vlastnost ClientWidth

property ClientWidth: Integer;

Vlastnost ClientWidth určuje šířku oblasti na formuláři v bodech určenou pro zobrazování objektů. Do této oblasti se na rozdíl od vlastnosti Width nezapočítává šířka rámečku formuláře.


Vlastnost Col

property Col: Integer;

Vlastnost Col je dostupná pouze z programu a udává aktuální pozici sloupce v tabulce StringGrid. Sloupce jsou číslovány od nuly, první sloupec má proto index nula.

Viz také: Row


Vlastnost ColCount

property ColCount: Integer;

Vlastnost ColCount udává celkový počet sloupců tabulky bez ohledu na počet barevně zvýrazněných sloupců.

Viz také: RowCount


Vlastnost Collate

property Visible: Boolean;

Vlastnost Collate určuje způsob řazení stránek při tisku více kopií dokumentu. Pokud je zadána hodnota True, mají se další kopie tisknout vždy až po ukončení tisku celého dokumentu. Při zadání hodnoty False se tiskne vždy jedna strana v zadaném počtu kopií, následně potom obdobně další strany.

Zaškrtávací box pro vlastnost Collate je na formuláři nastavení tiskárny označen textem 'seřadit'.


Vlastnost Color

property Color: set;

Vlastnost Color určuje barvu podkladu formuláře nebo objektu. Pokud je u objektu nastavena vlastnost ParentColor na hodnotu True, přebírá se barva dle nastavení nadřazeného objektu (nejčastěji formuláře).

Barvu je možné nastavit pomocí předdefinovaných konstant, případně v programu pomocí dialogu pro výběr barvy:

if ColorDialog.Execute then

   Form.Color := ColorDialog.Color;

Barva může být zadána přímo hodnotou barvy dle následujícího výběru:

clBlack	- černá

clMaroon	- kaštanově červená

clRed	- světle červená

clGreen	- tmavě zelená

clOlive	- tmavě žlutá

clLime	- světle zelená

clYellow	- žlutá

clNavy	- tmavě modrá

clPurple	- tmavě fialová

clTeal	- tmavě modrozelená

clDkGray	- tmavošedá

clLtGray	- světle šedá

clBlue	- modrá

clFushsia	- fialová

clAgua	- modrozelená

clWhite	- bílá

Další barvy lze zadat hodnotou dle nastavení systémových barev Windows  - jsou to barvy, které se nastavují pro zobrazování oken ve Windows. Nelze je zadat přímo z programu, možno použít pouze v okně nastavení objektů:

clMenuText	- barva textu menu

clWindowText	- barva textu v oknech

clOptionText	- barva textu na titulním pruhu okna

clActiveBorder	- barva okraje aktivního ona

clInactiveBorder	- barva okraje neaktivních oken

clAppWorkSpace	- barva aplikační pracovní oblasti

clHighLight	- podkladová barva vybraného textu

clHighLightText	- barva vybraného textu

clBtnFace	- barva tlačítka

clbtnShadow	- barva stínu tlačítka

clGrayText	- barva textu, který je ztlumený

clBtnText	- barva textu na tlačítku

Příklad:

Form.Color := clRed;


Vlastnost ColoredButtons

property ColoredButtons: set;

Vlastnost ColoredButtons určuje, které z tlačítek objektu MediaPlayer je vybarveno. Standardně jsou všechna tlačítka barevná, pouze nepřístupná tlačítka jsou zobrazována šedou barvou. Vlastnost je možné nastavit pouze z programu.


Vlastnost Columns

Vlastnost Columns specifikuje sloupce zobrazení objektu.

komponenty typu ListBox

komponenta DataGrid


Vlastnost Columns

Vlastnost je dostupná pouze při návrhu aplikace. Určuje vzhled a obsah jednotlivých sloupců objektu DataGrid. Ke změně nastavení slouží speciální editor, který se vyvolá kliknutím na ikonu se třemi tečkami umístěnou vpravo od názvu vlastnosti v okně Nastavení objektu.

Pokud budete chtít nastavovat jakoukoliv vlastnost sloupců komponenty DataGrid, budete muset provést nejprve inicializaci vlastnosti položek. Klikněte levým tlačítkem myši na levou část návrháře. Zobrazí se popup menu, ze kterého vyberete volbu 'Inicializace všech položek'. Tím se nastaví a načtou standardní hodnoty všech položek. Pokud byste tento krok pro komponentu DataGrid neprovedli, bylo by sice možné nastavit vlastnosti jednotlivých sloupců, ale po spuštění aplikace by byly aktivovány standardní hodnoty!

Levá část návrhu mřížky obsahuje jména položek databáze v takovém pořadí, jak budou uspořádány vedle sebe v datové mřížce. Změnu pořadí provedete jednoduše uchopením jména položky databáze a jejím přetažením na požadovanou pozici.

V pravé části návrhu zobrazení položek datové mřížky se zobrazují pro vybranou položku databáze nastavené vlastnosti s následujícím významem:

Alignment - zarovnávání v mřížce (vlevo, střed, vpravo). Texty je například vhodné zarovnávat zprava, čísla zleva.

Color - barva podkladu sloupce databázové položky

Font - nastavení fontu zobrazení dat. Možné je zadat například název fontu, barvu, velikost a styl.

PickList - je možné zadat výběr hodnot pro automatické dosazení při editaci. Pokud budete mít zadán výběr předvolených hodnot ve vlastnosti PickList a budete položku editovat, zobrazí se vpravo u položky ikona s trojúhelníkem. Po kliknutí na ikonu budete mít možnost vybrat jednu z předvolených hodnot, které se umístí do editované položky.

PopUpMenu - možno vybrat PopUpMenu, které se zobrazí pokud kliknete levým tlačítkem myši na sloupec databáze.

ReadOnly - možno zadat, zda lze editovat sloupec databáze (True/False).

Title - zadání nadpisu sloupce mřížky. Možné je změnit text nadpisy (Caption), ale i barvu podkladu a font.


Vlastnost Columns

property Columns: integer;

Vlastnost Columns udává u objektu typu ListBox (CheckListBox, DirectoryListBox, RadioGroup) počet sloupců seznamu. Standardní je nulová hodnota, při které se zobrazuje pouze jeden sloupec seznamu. Pokud přesáhne délka seznamu vyhrazené místo, je možné se v seznamu pohybovat pomocí přetáčecích pruhů. Pokud zadáte větší počet sloupců, bude zobrazeno najednou více položek seznamu. Šířka každého sloupce závisí na celkové šířce objektu a počtu sloupců.


Vlastnost CommonAVI

property CommonAVI: set;

Vlastnost CommonAVI umožňuje zadat jednu ze zabudovaných animací. Standardní hodnota je aviNone, při které je možné zadat ve vlastnosti FileName vlastní animaci. Dále je zadat jednu z následujících hodnot:

aviCopyFile	- animace pro kopírování souboru

aviCopyFiles	- animace pro kopírování souborů

aviDeleteFile	- animace pro výmaz souboru

aviEmptyREcycle	- animace pro vyprázdnění koše

aviFindComputer	- animace pro prohledávání počítače

aviFindFile	- animace hledání souboru

aviFindFolder	- animace hledání adresáře

aviRecyclkeFile	- animace přesunu souboru do koše


Vlastnost ConfirmDelete

property ConfirmDelete: Boolean;

Vlastnost ConfirmDelete určuje, zda se zobrazuje kontrolní dotaz při požadavku na výmaz záznamu z databáze. Pokud je zadána hodnota True, zobrazuje se při každém požadavku na výmaz záznamu z databáze kontrolní dotaz, který musí být před výmazem uživatelem odsouhlasen. Při zadání hodnoty False ve vlastnosti ConfirmDelete je záznam ihned bez dalšího dotazu označen ke zrušení.

UPOZORNĚNÍ:

Záznamy jsou ke zrušení pouze označeny, je možné obnovit jejich platnost. Viz metoda Delete.


Vlastnost Copies

property Copies: Boolean;

Vlastnost Copies určuje počet kopií, které se mají tisknout.

Viz také: Collate


Vlastnost Count

property Count: Integer;

Vlastnost Count obsahuje počet položek obsažených v proměnné typu StrArray. Vlastnost je dostupná pouze z programu, lze ji pouze číst, nelze provést nastavení nové hodnoty. Používá se například při procházení celého seznamu v cyklu k určení konečného cyklu. V takovém případě pozor na to, že položky seznamu jsou číslovány od nuly, celkový počet je však číslován od jedničky. Od celkového počtu je proto nutné jedničku odečíst.

Příklad:

{načte soubor autoexec.bat}

Memo.Lines.LoadFromFile('c:\autoexec.bat');

{vypíše jeho obsah do textového výstupu}

for x:= 0 to Memo.Lines.Count-1 do

    Writeln(Memo.Lines[x]);


Vlastnost Ctl3D

property Ctl3D: Boolean;

Vlastnost Ctl3D udává, zda je objekt zobrazován plasticky (třírozměrně). Pokud je nastavena vlastnost na hodnotu True, jsou objekty zobrazovány plasticky (třírozměrně). Po nastavení na hodnotu False jsou objekty zobrazovány pouze jednoduchou čarou bez plastického zvýraznění.

Pokud je u objektu nastavena vlastnost ParentCtl3D na hodnotu True, přebírá se vlastnost Ctl3D automaticky dle nastavení nadřazeného objektu (nejčastěji formuláře).

Příklad:

Edit.Ctl3D := False;


Vlastnost Cursor

property Cursor: set;

Vlastnost Cursor udává vzhled kurzoru, pokud se ukazatel myši nachází nad objektem. Možné hodnoty nastavení:

crDefault	- standardní tvar kurzoru pro daný objekt a akci

crArrow	- standardní tvar kurzoru s šipkou

crCross	- tvar kříže

crDrag	- kurzor pro přemístění objektu

crHandPoint	- ruka ukazující nahoru

crHelp	- šipka s otazníkem

crHourglass	- přesýpací hodiny

crHSplit 	- vertikální posuvník

crIBeam 	- svislá čárka

crMultiDrag	- kurzor pro přemístění většího počtu objektů

crNo	- kurzor se stopkou

crNoDrop	- kurzor se stopkou

crSizeNESW	- dvojitá šipka zleva dole doprava nahoru

crSizeNS	- dvojitá šipka zdola nahoru

crSizeNWSE	-dvojitá šipka zprava dole doleva nahoru

crSizeWE	- dvojitá šipka zleva doprava

crSQLWait	- přesýpací hodiny + SQL

crUpArrow	- šipka nahoru

crVSplit	- horizontální posuvník

Příklad:

Form.Cursor := crHourglass;


Vlastnost DataBaseName

property DatabaseName: String;

Vlastnost DatabaseName určuje adresář, ve kterém se nachází databáze. Pokud není vlastnost DatabaseName zadána, předpokládá se aktuální adresář. Pozor však na to, že při změně adresáře za chodu aplikace nebudou v takovém případě data dostupná a bude hlášena chyba přístupu do databáze.

UPOZORNĚNÍ:

Pokud je nastavena vlastnost Active na hodnotu True, nelze změnit nastavení vlastností DatabaseName, Exclusive a TableName. Nejprve je nutné nastavit vlastnost Active na hodnotu False, až potom lze uvedené vlastnosti změnit.

Viz také: TableName


Vlastnost DataField

property DataField: String;

Vlastnost DataField udává položku databáze, jejíž obsah objekt zobrazuje. Možné položky databáze určuje objekt DataSource, který je dále napojen přímo na databázi.

Příklad:

DataMemo.Field := 'poznamka';


Vlastnost DataSet

property DataSet: DataSet;

Vlastnost DataSet zadává databázi, na kterou je napojen objekt DataSource. Objekt DataSource potom data následně předává dalším objektům například pro jejich editaci a zobrazení.


Vlastnost a komponenta DataSource

Komponeta DataSource

Vlastnost DataSource


Vlastnost DataSource

property DataSource: DataSource;

Vlastnost DataSource udává zdroj dat, který je dále napojen na konkrétní databázi specifikovanou v objektu DataTable.


Vlastnost a funkce Date

funkce Date

vlastnost Date


Vlastnost Date

property Date: TDate;

Vlastnost Date obsahuje uživatelem zadané datum, případně datum zadané z programu. Datum je ve speciálním formátu, který umožňuje provádět s datem matematické výpočty, pro zobrazení je však nutné jej konvertovat do tvaru řetězce. Pro zobrazování data je nutné mít nastavenu vlastnost Kind na hodnotu dtkDate.

Viz také:

DateToStr, StrToDate

Příklad:

DateTimePicker.Kind := dtkDate;

DateTimePicker.Date := StrToDate('12/01/99');

DateTimePicker.Date := DateTimePicker.date-1;

ShowMessage(DateToStr(DateTimePicker.Date));


Vlastnost DateFormat

property DateFormat: set;

Vlastnost DateFormat zadává formát zobrazeného data. Je možné zadat jednu z následujících hodnot:

dfLong	- datum se zobrazuje se jménem měsíce

dfShort	- datum se zobrazuje s číslem měsíce


Vlastnost DateMode

property DateMode: set;

Vlastnost DateMode určuje metodu výběru data. Pokud je zadáno dmComboBox, provádí se výběr data v graficky zobrazeném kalendáři. Při zadání dmUpDown se datum zadává postupným výběrem pomocí šipek.


Vlastnost Default

Definuje, které tlačítko je nastaveno jako standardní tlačítko na formuláři.

komponenty Button, BitBtn

komponenta MenuItem


Vlastnost Default

property Default: Boolean;

Vlastnost Default určuje standardní (default) položku menu, která je v menu zvýrazněna tučným písmem. Takto lze mít v jedné úrovni menu označenu pouze jednu položku, čož si zajišťuje přímo sám systém KLONDAIK. Pokud označíte položku menu za standardní, bude případná předchozí standardní položka odznačena.

Pokud použijete vlastnost Default u položky hlavního menu formuláře, bude  po dvojkliknutí myší na hlavní úrovni menu ihned vyvolán program, který je uveden v události OnClick položky menu, která má vlastnost Default nastavenu na hodnotu True.


Vlastnost Default

property Default: Boolean;

Vlastnost Default určuje, zda se provede automatické volání události OnClick, pokud je stisknuto tlačítko Enter. Pokud je nastavena hodnota True, událost OnClick tlačítka se provede, když stiskne uživatel klávesu Esc. Ačkoliv může mít aplikace více než jedno ukončovací tlačítko, formulář vyvolá událost OnClick pouze pro první viditelné tlačítko v pořadí tabulátoru.


Vlastnost DefaultColWidth

property DefaultColWidth: Integer;

Vlastnost DefaultColWidth zadává šířku sloupců v tabulce StringGrid. Šířka se uvádí se v bodech a je jednotná pro všechny sloupce v tabulce.

Viz také:

DefaultRowHeight


Vlastnost DefaultExt

property DefaultExt: String;

Vlastnost DefaultExt zadává standardní extenzi (rozšíření jména) souboru. Zadává se ve tvaru maximálně tří znaků, neuvádí se tečka. Vlastnost se použije při zadání jména souboru z klávesnice, kdy nebude nutné uvádět plné jméno souboru. Extenze souboru se doplní dle obsahu vlastnosti DefaultExt.

Příklad:

OpenDialog.DefaultExt := 'KL3';


Vlastnost DefaultRowHeight

property DefaultRowHeight: Integer;

Vlastnost DefaultRowHeight zadává výšku řádky v tabulce StringGrid. Výška se uvádí se v bodech a je jednotná pro všechny řádky v tabulce.

Viz také:

DefaultColWidth


Vlastnost Device

property Device: set;

Vlastnost Device určuje, pro které zařízení je font určen (obrazovka, tiskárna). Možný je výběr jedné z následujících možností:

fdScreen	- font určen pro obrazovku

fdPrinter	- font určen pro tiskárnu

fdBoth	- font určen pro obrazovku i tiskárnu


Vlastnost DeviceType

property DeviceType: set;

Vlastnost DeviceType určuje druh multimediálního zařízení objektu MediaPlayer, se kterým jsou prováděny akce. Možné je zadat pouze jednu z hodnot dtAutoSelect, dtAVIVideo, dtCDAudio, dtDat, dtDigitalVideo, dtMMMovie, dtOther, dtOverlay, dtScanner, dtSequencer, dtVCR, dtVideoDisc, dtWaveAudio. Při pokusu o zadání neexistujícího zařízení je po spuštění aplikace hlášena chyba.

Standardně je zadáno nastavení dtAutoSelect, při kterém je zařízení rozpoznáno podle zadaného jména použitého souboru zadaného ve vlastnosti FileName.


Vlastnost Directory

property Directory: String;

Vlastnost Directory určuje adresář, jehož data objekt zobrazuje. Při změně adresáře je automaticky do objektu načten nový obsah. U objektu typu FileListBox je to seznam souborů, u objektu typu DirectoryListBox je to seznam adresářů. Vlastnost je dostupná pouze z programu, v době návrhu aplikace je zobrazován vždy obsah aktuálního adresáře.

Viz také: Drive

Příklad:

FileListBix.Directory := 'C';


Vlastnost DirLabel

property DirLabel: TLabel;

Vlastnost DirLabel určuje objekt typu Label, ve kterém je automaticky zobrazován aktuálně vybraný adresář. Tím je zajištěna automatická aktualizace zobrazování adresáře při provedení jakékoliv změny nastavení adresáře.


Vlastnost DirList

property DirList: DirectoryListBox;

Vlastnost DirList určuje spojení na objekt typu DirectoryListBox, ve kterém se budou zobrazovat adresáře vybraného disku.

Příklad:

DriveComboBox.DirList:= DirectoryListBox1;


Vlastnost Display

property Display: component;

Vlastnost Display určuje, objekt na formuláři, ve kterém se bude spuštěná multimediální prezentace objektu MediaPlayer zobrazovat. Pokud bude ponechána vlastnost prázdná, bude se prezentace zobrazovat v samostatném automaticky vytvořeném okně. Jinak je možné zadat jméno objektu, jehož typ je pro zobrazování multimédia přípustný. Využít je možné například objekt typu Panel.

Samozřejmě je zbytečné nastavovat vlastnost Display při přehrávání zvukových souborů.


Vlastnost Down

property Down: Boolean;

Vlastnost Down se používá v případě seskupení tlačítek typu SpeedButton do skupin.  V takovém případě vlastnost udává, zda je tlačítko stisknuto. Skupiny tlačítek se tvoří nastavením vlastnosti GroupIndex na stejnou nenulovou hodnotu.

UPOZORNĚNÍ:

Pokud není nastavena vlastnost GroupIndex na nenulovou hodnotu, nemá nastavení vlastnosti Down žádný význam, není možné ji změnit.

Viz také: AllowAllUp


Vlastnost Drive

property Drive: Char;

Vlastnost Drive určuje disk, jehož data objekt zobrazuje. Při změně disku je automaticky do objektu načten nový obsah. U objektu typu FileListBox je to seznam souborů, u objektu typu DirectoryListBox je to seznam adresářů. Vlastnost je dostupná pouze z programu, v době návrhu aplikace je zobrazován vždy obsah aktuálního disku.

Viz také: Directory

Příklad:

FileListBox.Drive := 'C';


Vlastnost DropDownAlign

property DropDownAlign: set;

Vlastnost  DropDownAlign  udává  způsob  zarovnávání  zobrazeného seznamu hodnot  podřízeného číselníku při výběru.  Možný je výběr z následujících hodnot:

daCenter	- výběr je vycentrován

daLeft 	- výběr je zarovnán k levé hraně objektu

daRight 	- výběr je zarovnán k pravé hraně objektu


Vlastnost DropDownCount

property DropDownCount: integer;

Vlastnost DropDownCount určuje počet položek seznamu, které se zobrazí pro výběr nové hodnoty objektu ComboBox. Standardně je nastavena velikost 8 položek. Pokud počet položek obsažených v seznamu převyšuje zadanou hodnotu DropDownCount, zobrazí se svislý přetáčecí pruh.

Pokud je u vlastnosti Style uvedena hodnota csSimple, je vlastnost DropDownCount ignorována.


Vlastnost DropDownRows

property DropDownRows: Integer;

Vlastnost  DropDownRows  udává  počet  řádek  zobrazeného seznamu hodnot podřízeného číselníku při výběru.

Viz také: DropDownWidth


Vlastnost DropDownWidth

property DropDownWidth: Integer;

Vlastnost  DropDownWidth udává  šířku zobrazeného  seznamu hodnot podřízeného číselníku pří výběru. Zadává se v bodech.

Viz také: DropDownRows


Vlastnost Editing

property Editing: Boolean;

Vlastnost Editing je dostupná pouze z programu a určuje, zda má uživatel aplikace možnost provádět změnu obsahu tabulky StringGrid. Při návrhu aplikace je možné vlastnost nastavit ve vlastnosti Options, volbě goEditing.


Vlastnost EditMask

property EditMask: String;

Vlastnost MaskEdit definuje vstupní masku, pomocí které se provádí kontrola správnosti zadávaných dat. Pokud se pokusí zadat uživatel neplatný znak, nebude tento znak přijat a bude vypsáno varovné hlášení.

Zadávací vstupní maska se skládá ze třech polí, které jsou odděleny středníky. V první části je vlastní zadávací maska. Druhou část masky představuje jeden znak určující, zda se mají ukládat literály zadané v masce spolu s daty (standardně ne). Třetí část masky udává znak, který se bude zobrazovat místo prázdného, nezadaného znaku.

V prvním poli masky je možné zadat následující znaky definující vlastní masku:

! 	- potlačí počáteční mezery

> 	- všechny následující znaky jsou konvertovány na velká písmena

< 	- všechny následující znaky jsou konvertovány na malá písmena

\ 	- znak který následuje je literálový znak

L 	- povinný alfabetický symbol

l 	- nepovinný alfabetický symbol

A 	- alfanumerický povinný symbol

a 	- alfanumerický nepovinný symbol

C 	- libovolný povinný znak

c 	- libovolný nepovinný znak

0	- povinná číslice

9 	- nepovinná číslice

# 	- nepovinná číslice nebo znak plus nebo znak mínus

: 	- oddělovač hodin, minut a sekund

/ 	- oddělovač dnů, měsíců a roků

; 	- oddělovač částí masky

Pro zadávání masky při návrhu aplikace slouží speciální editor, ve kterém můžete vybrat a upravit předdefinované zadávací masky. Lze také vyzkoušet funkci masky. Pokud je hlášena chyba v zadávání znaků, můžete ukončit zadávání stiskem klávesy Esc.

Ve druhé části masky se zadává jedním znakem, zda mají být literálové znaky z masky zahrnuty do textu. To umožní například ponechat v textu oddělovací znaky, které nemusí být zadávány a jsou doplněny automaticky. Pokud uvedete ve druhém poli masky číslo 0, nebudou oddělovací znaky do textu převedeny. Uloží se pouze při uvedení čísla 1. Například pomlčka v řetězci "123-456" se  uloží, pokud je v druhé části editovací masky uvedeno číslo 1. Při hodnotě nula se pomlčka do řetězce neuloží.

Třetí část zadávací masky určuje znak, který se zobrazuje na místě dosud nezadaných znaků. Může být použit například znak podtržítko "_".


Vlastnost EditText

property EditText: String;

Vlastnost EditText obsahuje text upravený vstupní zadávací maskou. Maska může obsahovat funkce pro doplnění oddělovacích znaků a v takovém případě je ve vlastnosti Text obsažen původní text beze změny a ve vlastnosti EditText je text doplněn o oddělovací znaky definované v zadávací masce vlastností EditMask.


Vlastnost Enabled

property Enabled: Boolean;

Vlastnost Enabled kontroluje, zda má objekt na formuláři reagovat na jemu příslušející události. Pokud je nastaveno Enabled := True, potom objekt reaguje na všechny definované události. Při nastavení Enabled := False bude objekt zobrazen šedivou barvou a nebude reagovat na definované události.

Vlastnost Enabled je vhodné použít například v případě, že se po stisku tlačítka spustí akce náročného výpočtu, nebo jiné déle trvající akce. V takovém případě zablokujeme tlačítko, aby jej nebylo možné stisknout opakovaně. Po dokončení výpočtu obnovíme opět přístupnost tlačítka.

U objektu DataSource je možné nastavením vlastnosti Enabled na hodnotu False zabránit automatické aktualizaci zobrazovaných dat v připojených objektech. Tím se zabezpečí, že změna pozice v databázi nemá vliv na zobrazované údaje.  Využívá se především při programovém procházení databáze po jednotlivých záznamech. Zabrání tak problikávání obrazovky při změně dat a současně zrychlí celou prováděnou operaci s databází.

Příklad:

if OpenDialog.Execute then

   Button_Open.Enabled := False;


Vlastnost EnabledButtons

property EnabledButtons: set;

Vlastnost EnabledButtons určuje, která z tlačítek objektu MediaPlayer jsou přístupná pro použití. Vlastnost je možné nastavit pouze při návrhu aplikace.  Pokud je nastavena vlastnost AutoEnable na hodnotu True, je přístupnost tlačítek nastavována automaticky podle stavu objektu.


Vlastnost Exclusive

property Exclusive: Boolean;

Vlastnost Exclusive aktivuje databázi pro vyhrazený exklusivní přístup. Pokud je nastavena vlastnost Exclusive na hodnotu True, nebude možné databázi otevřít z jiné stanice při síťovém zpracování, případně v jiné aplikaci nebo v jiném formuláři. Používá se pro provedení akcí, které provádí celkovou reorganizaci databáze. Například pro provedení akcí Pack, Reindex a Zap. Vlastnost Exclusive lze nastavit pouze pokud není databáze aktivní.

Exclusivní přístup do databáze lze nastavit jednodušeji voláním metody DataTable.SetExclusive, která vraci, zda se podařilo exclusivní přístup opravdu nastavit.

UPOZORNĚNÍ:

Pokud je nastavena vlastnost Active na hodnotu True, nelze změnit nastavení vlastností DatabaseName, Exclusive a TableName. Nejprve je nutné nastavit vlastnost Active na hodnotu False, až potom lze uvedené vlastnosti změnit.


Vlastnost ExtendedSelect

property ExtendedSelect: Boolean;

Vlastnost ExtendedSelect zadává, zda je možné vybrat sekvenční rozsah položek v seznamu. Uvedená možnost je současně závislá na vlastnosti MultiSelect, která musí být nastavena na hodnotu True.

Pokud se zadá ve vlastnosti ExtendedSelect hodnota True a vlastnost Multiselect je současně nastavena také na hodnotu True, může uživatel vybrat položku a pokud při současném stisku klávesy Shift vybere další položku seznamu, budou vybrány automatiky všechny položky mezi prvním a posledním výběrem. Vícenásobný výběr je možné provést také tažením myši po seznamu se současným stiskem levého tlačítka myši.

Pokud se zadá ve vlastnosti ExtendedSelect hodnota False a vlastnost Multiselect je současně nastavena na hodnotu True, může uživatel vybrat libovolné množství položek seznamu bez závislosti na rozsahu výběru.


Vlastnost FileEdit

property FileEdit: TEdit;

Vlastnost FileEdit určuje objekt typu Edit, ve kterém se zobrazuje vybraný soubor z objektu typu FileListBox. Pokud není žádný soubor vybraný, zobrazuje se v zadaném objektu maska zadávající filtr souborů. Pokud je některý soubor vybrán, zobrazuje se v textu objektu jméno vybraného souboru bez přístupové cesty.

Příklad:

FileEdit := Edit1;


Vlastnost FileList

property FileList: FileListBox;

Vlastnost FileList určuje spojení na objekt typu FileListBox, ve kterém se budou zobrazovat soubory aktuálního adresáře.

Příklad:

DirectoryListBox.FileList:= FileListBox1;

FilterComboBox.FileList  := FileListBox1;


Vlastnost FileName

Vlastnost FileName obsahuje adresář a jméno vybraného souboru.

komponenta Animate

komponenta FileListBox

komponenta MediaPlayer

komponenta OpenDialog, SaveDialog


Vlastnost FileName

property FileName: String;

Vlastnost obsahuje jméno souboru s animací. Je možné zobrazit pouze animace bez komprese a zvuku. Standardní přípona souboru je *.AVI.


Vlastnost FileName

property FileName: String;

Vlastnost obsahuje adresář a jméno vybraného souboru, který je aktuálně vybrán v seznamu souborů.


Vlastnost FILENAME

property FileName: String;

Vlastnost FileName zadává jméno multimediálního souboru, se kterým budou prováděny následné akce. Typ souboru přitom určuje možné prováděné akce.


Vlastnost FileName

property FileName: String;

U objektů, které slouží jako dialogy pro otevření souborů vrací jméno vybraného souboru v okamžiku ukončení výběru souboru stiskem tlačítka 'Otevřít'. Pokud se ukončí dialog stiskem tlačítka 'Storno', bude vlastnost Filename při ukončení dialogu prázdná.

Příklad:

Po kliknutí na tlačítko je aktivován dialog pro výběr souboru. Pokud bude soubor vybrán, bude text souboru načten do objektu Memo.

procedure TForm.ButtonClick(Sender: TObject);

begin

   if OpenDialog.Execute then

      Memo.Lines.LoadFromFile(OpenDialog.Filename);

end;


Vlastnost FileType

property FileType: set;

Vlastnost FileType určuje typ souborů, které jsou v seznamu zobrazovány. Vlastnost lze nastavit pouze při návrhu aplikace. Po kliknutí myší na jméno vlastnosti se rozbalí seznam možností pro zadání typu souboru. Seznam možností zobrazování je vázán na označení atributů souborů v operačním souboru. Lze(                 oknanastavit libovolný počet typů souborů dle následujících vlastností:

ftArchive	- zobrazuje soubory s atributem Archive

ftDirectory	- zobrazuje adresáře

ftHidden	- zobrazuje soubory s atributem Hiden

ftNormal	- zobrazuje běžné soubory

ftReadOnly	- zobrazuje soubory s atributem ReadOnly

ftSystem	- zobrazuje systémové soubory

ftVolumeID	- zobrazuje jméno média


Vlastnost Filter

Definuje filtr pro omezení výběru.

komponenta DataTable

komponenta OpenDialog, FilterComboBox


Vlastnost Filter

property Filter: String;

Vlastnost Filter zadává podmínku, která určuje dostupný výběr (filtraci) přístupných záznamů. Filtr se zadává logickým výrazem, který musí být uveden v syntaxi jazyka xBase. Pokud je zadán chybný výraz, není nahlášena chyba, filtr nebude aktivován.

Příklad:

DataTable.Filter := 'CENA>100.AND.CENA<200';

DataTable.Filter := 'DAT>DATE()';


Vlastnost Filter

property Filter: String;

Vlastnost Filter umožňuje zadat několik podmínek výběru souboru. Filtr pro výběr souborů se zadává dle běžných podmínek. Například *.* pro všechny soubory, *.TXT pouze soubory s extenzí TXT apod.

Pro zadání filtru je v okně nastavení objektu přístupný speciální editor, ve  kterém se zadává v levém sloupci text popisu filtru a v pravém sloupci se uvádí konkrétní filtr. Pokud se zadává vlastnost Filtr z programu, musí se jednotlivé části filtru oddělit znakem svislé čáry.

Příklad:

OpenDialog.Filter := 'vše (*.*)|*.*|texty (*.TXT)|*.TXT';


Vlastnost FilterIndex

property FilterIndex: Integer;

Vlastnost FilterIndex určuje, který filtr dle pořadí je vybrán jako standardní.

Příklad:

Standardně bude nastaven druhý filtr pro výběr textového souboru.

OpenDialog.Filter := 'vše (*.*)|*.*|texty (*.TXT)|*.TXT';

OpenDialog.FilterIndex := 2;


Vlastnost a metoda FindText

Vlastnost FindText

Metoda Findtext


Vlastnost FindText

property FindText: String;

Vlastnost FindText obsahuje řetězec pro vyhledáváni v textu. Uvedený text zadává uživatel v dialogu pro hledání textu.  Hledání v textu je zahájeno v okamžiku stisknutí klávesy 'Najít další' voláním události OnFind.


Vlastnost FixedColor

Vlastnost FixedColor určuje barvu sloupců v mřížce, jejichž pozice je neměnná.

komponenta DataGrid

komponenta StringGrid


Vlastnost FixedColor

property FixedColor: set;

Vlastnost FixedColor určuje barvu sloupců v mřížce DataGrid, jejiž pozice je neměnná. Jedná se o záhlaví sloupců, ve kterých jsou umístěny názvy databázových položek a záhlaví řádků, ve kterém jsou zobrazovány systémové informace.

Barvu je možné nastavit pomocí předdefinovaných konstant, případně v programu pomocí dialogu pro výběr barvy


Vlastnost FixedColor

property FixedColor: set;

Vlastnost FixedColor určuje barvu sloupců v mřížce StringGrid, které jsou použity jako záhlaví řádků a sloupců. Barvu je možné nastavit pomocí předdefinovaných konstant, případně v programu pomocí dialogu pro výběr barvy

Viz také:

FixedRows, FixedColor


Vlastnost FixedCols

property FixedCols: Integer;

Vlastnost FixedCols určuje počet barevně odlišených sloupců v tabulce StringGrid.

Viz také:

FixedRows, FixedColor


Vlastnost FixedRows

property FixedRows: Integer;

Vlastnost FixedRows určuje počet barevně odlišených řádků v tabulce StringGrid.

Viz také:

FixedCols, FixedColor


Vlastnost Flat

property Flat: Boolean;

Vlastnost Flat definuje způsob zobrazení tlačítka, kdy se zobrazují jeho okraje pouze pokud  je ukazatel myši umístěn nad tlačítkem. To umožní vytvářet aplikace vzhledově dle stylu MS Office.

Pokud je zadána hodnota True, bude se zobrazovat rámeček kolem tlačítka pouze pokud bude nad ním umístěn ukazatel myši. Při nastavení hodnoty False bude prováděno standardní zobrazení okrajů tlačítka.

UPOZORNĚNÍ:

Pokud zadáte do vlastnosti Flat hodnotu True, musíte mít na počítači instalovánu knihovnu COMCTL32.DLL verze 4.7 nebo vyšší.


Vlastnost FocusControl

property FocusControl: TObject;

Vlastnost FocusControl zadává objekt na formuláři, který je spřažen s návěštím pro rychlý přístup k objektu (získání zaměření).  Ve vlastnosti Caption objektu musí být v textu uveden znak &, který je po spuštění aplikace nahrazen podrtžením následujícího písmene. Kliknutím na klávesu Alt+podrtržený znak se dosáhne toho, že bude zaměřen objekt, který je uveden ve vlastnosti FocusControl.

Vlastnost se používá k rychlému získání zaměření u objektů, které nemají vlastnost Caption, ve které by se rychlá přístupová klávesa definovala. Jedná se například o objekty Edit, Memo a podobně.

Viz také: ShowAccelChar

Příklad:

Objekt Label je svázán s komponentou Edit. Po stisku kláves Alt+N dojde automaticky k zaměření objektu Edit a lze editovat jeho obsah.

Label.Caption := '&Název';

Label.FocusControl := Edit;


Vlastnost Font

property Font: font;

Vlastnost Font definuje písmo, které je pro příslušný objekt použito.

V okně Nastavení objektů je možné nastavit jméno fontu, velikost, typ a barvu fontu. Po kliknutí na tlačítko se třemi tečkami je vyvolán dialog pro výběr požadovaného fontu. Jednotlivé atributy fontu (jméno, typ, velikost a barvu) můžete nastavit jednotlivě po rozbalení vlastnosti Font.

V programu je možné font nastavit pouze jako celek převzetím vlastnosti z jiného objektu, případně výsledkem volání dialogu FontDialog. Není možné nastavit pouze jednotlivé atributy fontu (například velikost).

Atributy fontu podřízených objektů je možné nastavit vlastností ParentFont. Pokud nastavíte u formuláře vlastnost ParentFont := True, potom bude font nastavený pro formulář automaticky použit i pro všechny objekty umístěné na formuláři.

Příklady:

Form.Font:= FontDialog.Execute; {font nastaven pomocí dialogu}

Button.Font := Form.Font;       {font převzat z jiného objektu}


Vlastnost FrameCount

property FrameCount: Integer;

Vlastnost FrameCount vrací počet sekvencí, které jsou v animaci obsaženy.


Vlastnost Frequency

property Frequency: Integer;

Vlastnost Frequency zadává rozestup značek na stupnici objektu TrackBar. Vlastnost je použita pouze v případě, že je nastavena vlastnost TickStyle na hodnotu tsAuto.

Viz také: SetTick


Vlastnost FromPage

property FromPage: Integer;

Vlastnost FromPage je použita u dialogu PrintDialog pro výběr rozsahu tisku stránek a udává první stranu pro tisk. Standardní hodnota nastavení je 0, to

znamená, že se bude tisknout vše od počátku.

Viz také:

MaxPage, Minpage, Minpage


Vlastnost Glyph

property Glyph: Bitmap;

Vlastnost Glyph definuje bitmapu, která se zobrazí na tlačítku. Bitnmapa je ve formátu BMP a je možné ji načíst (zadat) v návrháři aplikace. Bitmapa se může skládat ze čtyřech částí, které se zobrazují v závislosti na druhu prováděné akce s tlačítkem. Všechny části musí mít stejnou velikost a  musí být umístěny v bitmapě na jedné řádce vedle sebe. Systém KLONDAIK potom zobrazuje vždy jednu z částí bitmapy v závislosti na následující akci:

Prví část bitmapy se zobrazuje pokud je tlačítko nahoře. Pokud je zaměřené, je kolem tlačítka zobrazeno orámování čárkovanou čarou.

Druhá část bitmapy se použije v případě, že není možné tlačítko aktivovat (vlastnost Enabled je nastavena na hodnotu False).

Třetí část bitmapy se použije v okamžiku stisku tlačítka.

Čtvrtá část bitmapy se používá v případě že je tlačítko trvale stisknuto.

Pokud použijete bitmapu, která nebude obsahovat všechny části bitmapy, pokusí se systém KLONDAIK vygenerovat příslušnou část bitmapy sám.

UPOZORNĚNÍ:

Pokud použijete bitmapu s vícenásobným počtem bitmap pro výše uvedené použití, musíte zadat ve vlastnosti NumGlyphs počet použitých bitmap.


Vlastnost GridLineWidth

property GridLineWidth: Integer;

Vlastnost GridLineWidth zadává tloušťku čáry mezi buňkami tabulky.


Vlastnost GroupIndex

property GroupIndex: integer;

Vlastnost GroupIndex se používá pro tvorbu seskupení tlačítek pro možnost tvorby přepínačů. Pokud je nastavena nulová hodnota, je možné pracovat s tlačítkem nezávisle na ostatních tlačítcích. Při zadání nenulové hodnoty je stav tlačítka závislý na stavu ostatních tlačítek se stejnou hodnotou vlastnosti GroupIndex. Tlačítko může být stisknuto trvale, není možné mít stisknuto najednou více tlačítek ve skupině.

Možnost, kdy nemusí být stisknuto ani jedno tlačítko nastavíte vlastností AllowAllUp.

Viz také:

AllowAllUp, Down


Vlastnost Height

property Height: Integer;

Vlastnost Height určuje výšku objektu v bodech. Pokud zvýšíte hodnotu vlastnosti Height, bude objekt vyšší, pokud hodnotu snížíte, sníží se i výška zobrazovaného objektu.

Vlastnost Height u objektu Screen lze pouze číst a udává výšku obrazovky v bodech.

Příklad:

Při každém stisku tlačítka se zvětší výška tlačítka o 10 bodů:

Procedure TForm.Button1Click(Sender: TObject);

Begin

   Button1.Height := Button1.Height + 10;

end;


Vlastnost Helpcontext

property HelpContext: Integer;

Vlastnost HelpContext zadává číslo položky kontextové nápovědy. Každá položka helpu by měla mít definováno své kontextové číslo, které je definováno při vytváření souboru nápovědy ve svém projektu. Pokud je v aplikaci u aktivního objektu stisknuta klávesa F1, zobrazí se příslušné heslo se zadaným číslem kontextové nápovědy uvedené ve vlastnosti HelpContext.

Soubor s helpem musí být uveden ve vlastnosti HelpFile objektu Form.

Příklad:

Procedure TForm.Activate;

begin

   Form.HelpFile:= 'MujHelp.HLP';

   Edit1.HelpContext   :=  3;

   Botton1.HelpContext := 12;

end;


Vlastnost HelpFile

property HelpFile: String;

Vlastnost HelpFile zadává soubor s helpem, ve kterém je umístěna nápověda pro aplikaci. Přístup k jednotlivým položkám menu je řešen pomocí kontextových čísel, kterými je možné zadat požadovanou položku menu volané nápovědy.

Vlastnost je možné nastavit nejen samostatně pro každý formulář v objektu Form, ale také najednou pro celou aplikaci v obkektu Application.

Vix také:

HelpContext.

Příklad:

Procedure TForm.Activate;

begin

   Form.HelpFile:= 'MujHelp.HLP';

   Edit1.HelpContext   :=  3;

   Botton1.HelpContext := 12;

end;


Vlastnost HideScrollBars

property HideScrollbars: Boolean;

Vlastnost HideScrollBars zadává, zda se mají skrývat přetáčecí pruhy, pokud velikost textu nepřesahuje zadanou oblast. Pokud je zadána hodnota True, budou přetáčecí pruhy definované ve vlastnosti ScrollBars viditelné pouze pokud přesáhne zobrazovaný text zadanou oblast objektu. Při zadání hodnoty False budou zobrazovány přetáčecí pruhu stále dle nastavení vlastnosti ScrollBars. Z toho vyplývá, že vlastnost HideScrollBars má význam pouze pokud není vlastnost ScrollBars nastavena na hodnotu ssNode.


Vlastnost HideSelection

property HideSelection: Boolean;

Vlastnost určuje, zda je zvýrazněn vybraný text i pokud není objekt zaměřen. Vybraný text je zvýrazněn modrou barvou a určuje rozsah textu pro operace se schránkou Windows. Pokud je zadáno False, nebude vybraný text po ztrátě zaměření objektu nijak označen. Označení vybraného textu bude ukryto. Pokud zadáte hodnotu False, zůstane označený text zvýrazněný i v okamžiku ztráty zaměření objektu. Označení nebude ukryto.


Vlastnost Hint

property Hint: String;

Vlastnost Hint je řetězec, který s zobrazuje u objektu, pokud nad něj umístíte kurzor myši. Text se zobrazuje v malém rámečku se žlutým podkladem a plní tak funkci rychlé řádkové nápovědy.

Podmínkou pro zobrazení nápovědy je nastavení vlastnosti ShowHint na hodnotu True. K tomu můžete výhodně použít nastavení ShowHint u formuláře, přičemž bude nastavení platné pro všechny objekty umístěné na formuláři.

Příklad:

Button.ShowHint:= True;

Button.Hint    := 'Provede se výpočet zisku';


Vlastnost Hints

property Hints: StrArray;

Vlastnost Hints umožňuje zadat vlastní nápovědu pro každé tlačítko objektu DataNavigator. Pro zadání nápovědy je možné použít speciální editor, který se zobrazí po kliknutí na ikonu s třemi tečkami vpravo od názvu vlastnosti v okně Nastavení objektu. Pro každé tlačítko lze zadat na samostatném řádku samostatnou nápovědu. Jeden řádek je určen vždy pro jedno tlačítko dle pořadí zobrazování tlačítek v objektu. Pokud ponecháte řádek prázdný, bude zachována původní nápověda.

Při zadávání vlastnosti z programu je nutné přistupovat k vlastnosti jako k proměnné typu StrArray. Je tedy nutné uvést vždy index řádku nápovědy. Indexy jsou počítány od nuly.

Příklad:

DataNavigator.Hints[1] := 'začátek';

DataNavigator.Hints[2] := 'předchozí';

DataNavigator.Hints[3] := 'následující';

DataNavigator.Hints[4] := 'konec';


Vlastnost HorzScrollBar

property HorzScrollBar: ScrollBar;

Vlastnost HorzScrollBar definuje zobrazení horizontálního přetáčecího pruhu. Ten se zobrazuje na formuláři, pokud není možné zobrazit najednou všechny objekty. Přetáčecí pruh v takovém případě slouží k uživatelskému scrolování obsahu formuláře.

Zobrazení přetáčecího pruhu je závislé na nastavení vlastnosti AutoScroll.

Vlastnosti přetáčecího pruhu je možné změnit pouze v okně nastavení objektů, nelze provést z programu.

Viz také: VertScrollBar


Vlastnost HotTrack

property HotTrack: Boolean;

Vlastnost HotTrack zadává, zda jsou záložky při najetí kurzoru nad ně zvýrazňovány. Pokud se zadá hodnota True, bude nápis na záložce při najetí myši nad kurzor barevně zvýrazněn.


Vlastnost Icon

property Icon: Icon;

Vlastnost Icon definuje ikonu, která se zobrazí v levém horním rohu formuláře. Pokud není žádná ikona zadána, zobrazuje se na formuláři ikona systému KLONDAIK. Pro zobrazení ikony se používá soubor typu *.ICO.

Ikonu je možné změnit pouze v okně Nastavení objektu, není možné provést změnu z programu.

Pro změnu ikony klikněte na ikonu se třemi tečkami pro vyvolání dialogu výběru ikony. Pokud vyberete jiný soubor než typu *.ICO, bude výběr ignorován.


Vlastnost Increment

property Increment: Integer;

Vlastnost Increment určuje velikost změny hodnoty v editačním poli při kliknutí na šipku objektu. Standardně je nastavena hodnota 1. Pokud je však rozdíl mezi počáteční (vlastnost Min) a koncovou hodnotou (vlastnost Max) velmi velký, je vhodné změnit přiměřeně i velikost změny ve vlastnosti Increment. Pokud by byla například vlastnost Min rovna 0 a vlastnost Max 1000, bylo by nutné provést 1000x změnu pro přechod od nejnižší hodnotě k nejvyšší. Proto bude v takovém případě vhodné nastavit vlastnost Increment na větší hodnotu.


Vlastnost IncrementalDisplay

property IncrementalDisplay: Boolean;

Vlastnost IncrementalDisplay určuje, zda se má postupné vykreslování obrazu provádět během pomalých operací. Pokud zadáte True, bude obraz vykreslován nepřetržitě, po zadání False bude obraz vykreslen až bude provedena celá operace kreslení.


Vlastnost IndexName

property IndexName: String;

Vlastnost IndexName zadává jméno indexu, podle kterého je databáze seřazena. Index je možné vytvořit metodou IndexTag.

Viz také:

TagArea, TagName

Příklad:

DataTable.IndexName := 'JMENO';


Vlastnost InitialDir

property InitialDir: String;

Vlastnost InitialDir zadává počáteční adresář pro výběr souboru. Pokud není vlastnost zadána, je nastaven aktuální adresář. Pokud má být například vybrán soubor z adresáře Windows, je nutné zadat:

OpenDialog.InitialDir := 'C:\WINDOWS\';


Vlastnost IntegralHeight

property IntegralHeight: Boolean;

Vlastnost IntegralHeight udává, zda se má výška seznamu upravit automaticky podle výšky zobrazovaných položek. Pokud zadáte hodnotu True, bude výška seznamu upravena vždy automaticky podle výšky poslední položky tak, aby se zobrazovala pouze celá, neoříznutá položka. Nastavíte-li hodnotu False, nebude výška seznamu nijak upravována, ale poslední položka nemusí být zobrazena celá. Z textu může být viditelná například pouze horní část písmen.

Viz také: ItemHeight


Vlastnost Interval

property Interval: Integer;

Zadává  časový  interval,  po  jehož  uplynutí  je provedena akce zadaná v  události OnTimer. Interval  se zadává v  milisekundách. Hodnota 1000 udává interval jedné sekundy, 60 000 znamená interval jedné minuty. Je možné zadat hodnotu maximálně 65 535, to je něco přes  jednu minutu.  Nemá význam  zadávat hodnotu  menší než  50, protože  kratší  časový  interval  nelze  z  důvodu  dalších akcí prováděných operačním systémem dosáhnout.


Vlastnost ItemHeight

property ItemHeight: Integer;

Vlastnost ItemHeight udává výšku položky seznamu v bodech. U objektů typu ListBox je závislá v závislosti na nastavení vlastnosti Style, systém KLONDAIK ale uvedenou vlastnost nevyužívá.

Viz také:

ItemHeight, Style


Vlastnost ItemIndex

Vlastnost ItemIndex udává aktuální pozici ukazatele v seznamu typu ListBox.

komponenta RadioGroup

ostatní komponenty


Vlastnost ItemIndex

property ItemIndex: integer;

Vlastnost ItemIndex udává položku, která má v přepínači nastavenu hodnotu True. Takto může být označena maximálně jedna položka v seznamu. Pokud není žádná položka označena, je vrácena záporná hodnota.


Vlastnost ItemIndex

property ItemIndex: integer;

Vlastnost ItemIndex je dostupná pouze ve spuštěné aplikaci a udává aktuálně vybrané pořadové číslo položky v seznamu bez ohledu na to, zda je položka seznamu vybrána či nikoliv.


Vlastnost Items

Vlastnost obsahuje seznam položek.

komponenta MainMenu, PopupMenu

ostatní komponenty


Vlastnost Items

property Items: MenuItem;

Vlastnost Items obsahuje položky hlavního menu (MainMenu), případně závěsného menu (PopupMenu) aplikace. Vlastnost Items je samostatný objekt typu MenuItem, který má definovány samostatné vlastnosti a události. Pro změnu nastavení položek menu (objekt typu MenuItem) je možné použít speciální editor, který je přístupný z okna Nastavení objektu po kliknutí na ikonu se třemi tečkami umístěnou vpravo od názvu vlastnosti.

V pravé části návrháře menu se zobrazí přímo vlastnosti objektu MenuItem. Lze tak nastavit pro každou položku menu samostatně požadované vlastnosti. V levé části návrháře menu lze pracovat s položkami menu, to je doplňovat nové položky, přesouvat umístění položek menu a podobně. Menu může obsahovat podřízené položky - další úroveň menu.

Nejdůležitější vlastností položky menu je Caption, to je text položky menu, který se zobrazuje. Pokud požadujete oddělit jednotlivé části menu vodorovnou čarou, zadejte do vlastnosti Caption pomlčku. Znak & v textu menu umožní definovat horkou přístupovou klávesu k položce menu.

Ve vlastnosti ShortCut lze nastavit vhodnou klávesovou zkratku. Vybrat lze z předdefinovaného seznamu zkratek, případně zadat vlastní klávesovou zkratku.

Vlastnost Enabled umožňuje některé položky menu znepřístupnit. Vlastnost Visible umožní ukrýt položku menu. U každé položky menu je možné nastavit přepínač Checked, který se zobrazuje vlevo od položky menu.

Jediná událost, na kterou položka menu reaguje je událost OnClick, ve které se uvede program, který se provede po výběru položky menu.


Vlastnost Items

property Items: StrArray;

Vlastnost Items obsahuje položky seznamu řetězců, který je typu StrArray. Jsou to vícenásobné řetězce, ke kterým je možné přistupovat samostatně podle čísla indexu. Vlastnost s uvedenými možnostmi se používá u objektů ListBox, CheckListBox, ComboBox, RadioGroup a FileLIstBox.

Pro obsluhu seznamu řetězců existují samostatné metody. Vzhledem k tomu, že je vlastnost Items samostatným objektem, musí se při volání těchto metod uvádět jméno objektu z formuláře, vlastnost Items a volaná metoda spolu s vyžadovanými parametry. U objektu ListBox je možné například využívat metody s následujícím voláním:

ListBox.Items.Add - přidá položku do seznamu

ListBox.Items.Clear - vymaže položku seznamu

ListBox.Items.Count - vrací počet položek seznamu

ListBox.Items.Delete - zruší položku seznamu

ListBox.Items.Exchange - vymění položky seznamu

ListBox.Items.IndexOf - hledá položku dle zadaného obsahu

ListBox.Items.Insert - vloží novou položku do seznamu

ListBox.Items.LoadFromFile - načte textový soubor do seznamu

ListBox.Items.Move - přesune položku seznamu na novou pozici

ListBox.Items.SaveToFile - uloží seznam do textového souboru

UPOZORNĚNÍ:

U objektu typu FileListBox není možné používat všechny zde uvedené možnosti. Je možné použít pouze následující metody:

FileListBox.Items.Count - vrací počet položek seznamu

FileListBox.Items.SaveToFile - uloží seznam do textového souboru

Příklad:

{načte soubor AUTOEXEC.BAT do seznamu}

ListBox.Items.LoadFromFile('c:\autoexec.bat');

{zobrazí počet řádků seznamu}

ShowMessage(ListBox.Items.Count);

{přidá nový řádek do seznamu}

ListBox.Items.Add('VERIFY ON');

{uloží seznam zpět do souboru}

ListBox.Items.SaveToFile('c:\autoexec.xxx');


Vlastnost KeyField

property KeyField: String;

Vlastnost KeyField zadává položku podřízené databáze, ze které se budou   předávat    údaje   do   objektu    DataLookUpList nebo DataLookUpCombo.  Definuje  se  tím  vazba  na připojený číselník údajů.

Viz také: ListField


Vlastnost KeyPreview

property KeyPreview: Boolean;

Vlastnost KeyPreview definuje u formuláře, zda má událost stisku klávesy zpracovávat pouze příslušný aktivní objekt na formuláři, nebo zda má událost stisku klávesy zpracovat i samotný formulář. Pokud je standardně nastaveno KeyPreview := False, bude událost stisku klávesy zpracovávat pouze aktivní objekt. Nastavíte-li KeyPreview := True, bude možné událost stisku klávesy zpracovat nejprve událostí pro formulář a následně potom i událostí pro příslušné tlačítko.

Vlastnost KeyPreview je výhodné použít v případě požadavku na zpracování události stisku klávesy bez ohledu na aktuální vybraný objekt.


Vlastnost Kind

Vlastnost Kind určuje druh zobrazování objektu.

komponenta BitBtn

komponenta DateTimePicker

komponenta ScrollBar


Vlastnost Kind

property Kind: set;

Vlastnost určuje bitmapu, která se zobrazí na tlačítku. Vybírá se jena z předdefinovaných hodnot. Po výběru jsou nastaveny automaticky některé vlastnosti tlačítka (Cancel, Caption, ModalResult), aby vyhovovaly provedenému výběru. Je možné vybrat jednu za následujících hodnot:

bkCustom	- standardní hodnota, umožní zadat vlastní bitmapu

bkOK	- zobrazí se zelená značka pro odsouhlasení s textem OK

bkYes	- zobrazí se zelená značka pro odsouhlasení s textem Yes

bkCancel	- zobrazuje se značka červeného přeškrtnutí

bkNo	- zobrazuje se značka STOP

bkHelp	- zobrazuje se značka otazníku.

bkClose	- zobrazí se značka výstupních dveří pro možnost ukončení

bkAbort	- zobrazí se značka červeného přeškrtnutí

bkRetry	- zobrazí se zelená značka pro opakování akce

bkIgnore	- zobrazí se zelená značka odcházejícího panáčka

bkAll	- zobrazí se značka dvojitého zeleného odsouhlasení

Text, který se po výběru vlastnosti Kind zobrazí na tlačítku je možné ve vlastnost Caption změnit. Vlastní bitmapu máte možnost zadat ve vlastnosti Glyph.

Příklad:

BitBtn.Kind := bkOk;


Vlastnost Kind

property Kind: set;

Vlastnost určuje druh zobrazovaného údaje objektu na formuláři. Je možné zadat jednu z následujících hodnot:

dtkDate - objekt je určen pro zadávání data

dtkTime - objekt je určen pro zadávání času

Příklad:

DateTimePicker.Kind := dtkTime;


Vlastnost Kind

property Kind: set;

Vlastnost určuje orientaci objektu na formuláři. Vybírá se jena z předdefinovaných hodnot dle následujícího výběru:

sbHorizontal	- horizontální uspořádání (standard)

sbVertical	- vertikální uspořádání

Příklad:

if CheckBox.Checked then

   ScrollBar.Kind := sbVertical;

else

   ScrollBar.Kind := sbHorizontal;


Vlastnost LargeChange

property LargeChange: Integer;

Vlastnost LargeChange určuje velikost změny pozice ukazatele objektu ScrollBar při kliknutí na požadovanou pozici přetáčecího pruhu, případně při použití kláves PageUp a PageDown. Standardně je nastavena hodnota 1. Pokud je však rozdíl mezi počáteční a koncovou hodnotou stavu objektu ScrollBar velmi velký, je vhodné změnit přiměřeně i velikost změny ve vlastnosti LargeChange.  Pokud by byla například vlastnost Min rovna 0 a vlastnost Max 1000, bylo by nutné provést 1000x posun ukazatele. Proto bude v takovém případě vhodné nastavit vlastnost LargeChange na větší hodnotu.

Viz také: SmallChange

Příklad:

ScrollBar.Min:=     0;

ScrollBar.Max:= 10000;

ScrollBar.LargeChange:= 250; {40 kroků od minima k maximu}

ScrollBar.SmallChange:= 250; {40 kroků od minima k maximu}


Vlastnost Layout

Vlastnost Layout specifikuje umístění zobrazeného textu.

komponenty BitBtn, SpeedButton

komponenta Label


Vlastnost Layout

property Layout: set;

Vlastnost určuje, kde se zobrazí na tlačítku bitmapa vzhledem k textu zadaném ve vlastnosti Caption. Je možné vybrat jednu z následujících hodnot:

blGlyphLeft	- bitmapa se zobrazí vlevo od textu

blGlyphRight	- bitmapa se zobrazí vpravo od textu

blGlyphTop	- bitmapa se zobrazí nad textem

blGlyphBottom	- bitmapa se zobrazí pod textem


Vlastnost Layout

property Layout: set;

Vlastnost určuje, vertikální pozici textu  v definované ploše objektu Label.

Je možné zadat jednu z následujících hodnot:

tlTop	- text je umístěn u horního okraje objektu

tlCenter	- text je vertikálně vycentrován

tlBottom	- text je umístěn u spodního okraje objektu


Vlastnost Left

property Left: Integer;

U formuláře určuje vlastnost Left  horizontální umístění formuláře v bodech od levého okraje obrazovky. U ostatních objektů určuje vlastnost Left horizontální souřadnici objektu od levé hrany formuláře. Pokud je objekt umístěn na panelu, určuje vlastnost Left horizontální souřadnici objektu od levé hrany panelu.

Příklad:

Při každém stisku tlačítka se přesune tlačítko o 10 bodů doprava:

Procedure TForm.Button1Click(Sender: TObject);

Begin

   Button1.Left := Button1.Left + 10;

end;


Vlastnost Lines

property Lines: StrArray;

Vlastnost Lines obsahuje víceřádkový text u objektu Memo a DataMemo, který je typu StrArray. Jsou to vícenásobné řetězce, ke kterým je možné přistupovat samostatně podle čísla indexu.

Pro obsluhu seznamu řetězců existují samostatné metody. Vzhledem k tomu, že je vlastnost Lines samostatným objektem, musí se při volání těchto metod uvádět jméno objektu z formuláře, vlastnost Lines a volaná metoda spolu s vyžadovanými parametry. U objektu Memo je možné například využívat metody s následujícím voláním:

Memo.Lines.Add - přidá nový řádek na konec textu

Memo.Lines.Clear - zruší všechny řádky textu

Memo.Lines.Count - vrací počet řádek textu

Memo.Lines.Delete - vymaže zadaný řádek textu

Memo.Lines.Exchange - vymění mezi sebou dva řádky textu

Memo.Lines.IndexOf - hledá řádek textu se zadaným obsahem

Memo.Lines.Insert - vloží nový řádek textu na zadanou pozici

Memo.Lines.LoadFromFile - načte textový soubor

Memo.Lines.Move - přesune řádek textu na novou pozici

Memo.Lines.SaveToFile - uloží text do souboru na disk

Příklad:

{načte soubor AUTOEXEC.BAT}

Memo.Lines.LoadFromFile('c:\autoexec.bat');

{zobrazí počet řádků textu}

ShowMessage(Memo.Lines.Count);

{přidá nový řádek na konec textu}

Memo.Lines.Add('VERIFY ON');

{uloží text do souboru na disk}

Memo.Lines.SaveToFile('c:\autoexec.xxx');


Vlastnost LineSize

property LineSize: Integer;

Vlastnost LineSize zadává přírůstek změny hodnoty ukazatele při změně pozice z klávesnice pomocí kurzorových šipek.

Viz také: PageSize


Vlastnost ListField

property ListField: String;

Vlastnost ListField zadává  podřízené položky databáze číselníku, které   se   mají   zobrazovat   pro   výběr   hodnot  v  objektu DataLookUpList nebo  DataLookUpCombo.   Pokud  se   uvede  více databázových položek oddělených středníky, budou se zobrazovat ve výběrovém poli vedle sebe ve tvaru tabulky.

Viz také: KeyField


Vlastnost ListSource

property ListSource: DataSource;

Vlastnost ListSource  zadává zdroj dat  podřízeného číselníku pro přebírání   údajů   do    nadřazené   databáze   pomocí   objektů DataLookUpList nebo  DataLookUpCombo.   Zobrazované  databázové položky se  uvedou ve vlastnosti  ListField. Položka pro  předání dat se definuje ve vlastnosti KeyField.


Vlastnost Margin

property Margin: integer;

Vlastnost Margin určuje počet bodů mezi hranou tlačítka a zobrazovanou bitmapou. Standardní hodnota -1 udává, že je bitmapa na tlačítku centrována. Ostatní hodnoty udávají vzdálenost v bodech mezi okrajem tlačítka a zobrazovanou bitmapu.


Vlastnost Mask

property Mask: String;

Vlastnost Mask zadává masku pro výběr jmen souborů obsažených v seznamu. Maska se zadává dle běžných zvyklostí operačního systému. To znamená, že hvězdička nahrazuje jakýkoliv znak v libovolném počtu. Například '*.KL3' zadává masku pro výběr všech souborů s příponou KL3. Znak otazník nahrazuje jakýkoliv jednotlivý znak. Pokud požadujete zadat do masky výběr několika filtrů, je nutné je oddělit středníkem.

Příklad:

FileListBox.Mask:='*.*';

FileListBox.Mask:='*.TXT';

FileListBox.Mask:='*.KL3; *.KFM';


Vlastnost MasterFields

property MasterFields: String;

Vlastnost MasterFields specifikuje položku nadřazené databáze pro spojení databáze do relace. Používá se u podřízené databáze. Podrobněji viz kurz programování.

Viz také: MasterSource


Vlastnost MasterSource

property MasterSource: DataSource;

Vlastnost MasterSource zadává nadřazený zdroj dat pro spojení databáze do relace. Používá se u podřízené databáze. Podrobněji viz kurz programování.

Viz také: MasterFields


Vlastnost a funkce Max

Funkce Max vrací větší ze dvou zadaných čísel.

Vlastnost Max udává maximální možnou pozici ukazatele.

funkce Max

komponenta ProgressBar

komponenta ScrollBar

komponenta TrackBar

komponenta UpDown


Vlastnost Max

property Max: integer;

Vlastnost Max určuje maximální hodnotu, kterou může nabývat pozice ukazatele časového průběhu akce objektu ProgressBar.

Příklad:

ProgressBar.Max:=100;


Vlastnost Max

property Max: integer;

Vlastnost Max určuje maximální hodnotu, kterou může nabývat pozice posuvnítka objektu ScrollBar. Při změně pozice uživatelem je možné přečíst hodnotu aktuálního stavu posuvnítka čtením vlastnosti Position.

Nastavit hodnoty vlastnosti Min, Max a Position lze najednou voláním metody SetParams.

Příklad:

ScrollBar.Min:=1;

ScrollBar.Max:=100;

ScrollBar.Position:=20;


Vlastnost Max

property Max: integer;

Vlastnost Max určuje maximální hodnotu, kterou může nabývat pozice ukazatele objektu TrackBar.

Příklad:

TrackBar.Max:=100;


Vlastnost Max

property Max: integer;

Vlastnost Max určuje maximální hodnotu, kterou může nabývat pozice  objektu UpDown. Při změně pozice uživatelem je možné přečíst hodnotu aktuálního stavu čtením vlastnosti Position, současně se také automaticky převádí do připojeného editačního pole.


Vlastnost MaxFontSize

property MaxFontSize: Integer;

Vlastnost MaxFontSize určuje největší velikost fontu, která bude zahrnuta do dialogu výběru fontu. Omezení velikosti výběru fontu bude platné pouze pokud je nastavena vlastnost Options.LimitSize na hodnotu True.

Viz také:

MinFontSize


Vlastnost MaxLength

property MaxLength: Integer;

Vlastnost MaxLength udává maximální počet znaků, které mohou být zapsány. Pokud se zadá nulová hodnota, nebude délka omezena. Pokud obsahuje text před změnou vlastnosti MaxLength větší počet znaků, nebude text nijak krácen, nebude však také možné jej dále editovat (přidávat další znaky).

UPOZORNĚNÍ:

Pokud se udává délka textu, která může být na více řádcích (například Memo), je nutné počítat s tím, že přechod na novou řádku je v do textu zaznamenán dvěma znaky.


Vlastnost MaxPage

property MaxPage: Integer;

Vlastnost MaxPage umožňuje určit maximální možnou stranu pro tisk. Není přitom dovoleno uživateli zadat v dialogu větší hodnotu. Lze použít například pro omezení rozsahu tisku v demoverzi apod.

Viz také:

FromPage, Minpage, ToPage


Vlastnost Menu

property Menu: MainMenu;

Vlastnost definuje hlavní menu formuláře. Při návrhu aplikace je možné změnit a nastavit položky menu v návrháři. Po spuštění aplikace již není možné žádné změny provádět. Je možné pouze změnit použité menu za jiné.

Příklad:

if CheckBox.Checked then

   Form.MainMenu := MainMenu1;

else

   Form.MainMenu := MainMenu2;


Vlastnost a funkce Min

Funkce Min vrací menší ze dvou zadaných čísel.

Vlastnost Min udává minimální možnou pozici ukazatele.

funkce Min

komponenta ProgressBar

komponenta ScrollBar

komponenta TrackBar

komponenta UpDown


Vlastnost Min

property Min: integer;

Vlastnost Min určuje minimální hodnotu, kterou může nabývat pozice ukazatele časového průběhu akce objektu ProgressBar.

Příklad:

ProgressBar.Min:=1;


Vlastnost Min

property Min: integer;

Vlastnost Min určuje minimální hodnotu, kterou může nabývat pozice posuvnítka objektu ScrollBar. Při změně pozice uživatelem je možné přečíst hodnotu aktuálního stavu posuvnítka čtením vlastnosti Position.

Nastavit hodnoty vlastnosti Min, Max a Position lze najednou voláním metody SetParams.

Příklad:

ScrollBar.Min:=1;

ScrollBar.Max:=100;

ScrollBar.Position:=20;


Vlastnost Min

property Min: integer;

Vlastnost Min určuje minimální hodnotu, kterou může nabývat pozice ukazatele objektu TrackBar.

Příklad:

TrackBar.Min:=0;


Vlastnost Min

property Min: integer;

Vlastnost Min určuje minimální hodnotu, kterou může nabývat pozice  objektu UpDown. Při změně pozice uživatelem je možné přečíst hodnotu aktuálního stavu čtením vlastnosti Position, současně se také automaticky převádí do připojeného editačního pole.


Vlastnost MinFontSize

property MinFontSize: Integer;

Vlastnost MinFontSize určuje nejmenší velikost fontu, která bude zahrnuta do dialogu výběru fontu. Omezení velikosti výběru fontu bude platné pouze pokud je nastavena vlastnost Options.LimitSize na hodnotu True.

Viz také: MaxFontSize


Vlastnost MinPage

property MinPage: Integer;

Vlastnost MinPage umožňuje určit minimální možnou stranu pro tisk. Není přitom dovoleno uživateli zadat v dialogu větší hodnotu. Lze použít například pro omezení rozsahu tisku v demoverzi apod.

Viz také:

FromPage, MaxPage, ToPage


Vlastnost ModalResult

property ModalResult: set;

Vlastnost ModalResult určuje druh akce, která se provede po stisku tlačítka. To umožní, že není nutné psát speciální akce obsloužení události kliknutí na tlačítko.


Vlastnost Mode

property Mode: set;

Vlastnost Mode indikuje aktuální stav otevřeného multimediálního souboru objektu MediaPlayer. Vlastnost je možné pouze číst. Zjistit je možné jednu z následujících hodnot:

mpNotReady 	- není připraveno

mpStopped 	- zastaveno

mpPlaying 	- přehrávání

mpRecording 	- záznam

mpSeeking 	- vyhledávání

mpPaused 	- pozastaveno

mpOpen 	- otevřeno

Příklad:

if MediaPlayer.Mode = mpPaused then Resume;


Vlastnost Modified

property Modified: Boolean;

Vlastnost Modified poskytuje informaci o tom, zda byl změněn obsah zobrazovaného textu. Pokud byly provedeny změny, bude vrácena hodnota True. V ostatních případech je vrácena hodnota False.

Pokud provedete z programu uložení textu do souboru, je možné nastavit vlastnost na hodnotu False. Samotné uložení textu neprovede změnu nastavení hodnoty Modified.

Pokud je text přebírán z databáze, je informace o modifikaci nastavena na hodnotu False při každé změně pozice v databázi se současným zobrazením nové hodnoty v textu objektu.


Vlastnost MultiLine

property MultiLine: Boolean;

Vlastnost MultiLine určuje, zda se mají záložky při větším počtu zobrazovat ve více řadách. Pokud se zadá hodnota True, budou záložky při nedostatku místa zobrazovány ve více řadách. Pokud je zadána hodnota False, jsou při nedostatku místa pro zobrazení záložek zobrazovány přetáčecí šipky pro možnost listování záložkami.

Viz také: ScrollOpposite


Vlastnost MultiSelect

property MultiSelect: Boolean;

Vlastnost MultiSelect určuje, zda je možné vybrat ze seznamu současně více položek. Pokud je nastavena hodnota False, může být vybrána pouze jedna položka seznamu. Pokud zadáte hodnotu True, můžete vybrat najednou více položek seznamu.

Druh vícenásobného výběru položek seznamu je závislý na vlastnosti ExtendedSelect. Podle ní je možné vybírat libovolné položky, případně jeden souvislý rozsah položek (od až do).


Vlastnost Name

property Name: String;

Vlastnost Name udává jednoznačné jméno objektu na formuláři. Každý objekt musí být pojmenován. Nelze zadat jméno objektu, který již existuje.

Jméno formuláře musí zůstat zachováno vždy Form. Pouze tak bude možné se na měj v programu odkazovat.

Jméno objektu se používá v programu pro přístup k jednotlivým vlastnostem. Pro definici jména vlastnosti konkrétního objektu musíte použít jméno objektu umístěné na formuláři a vlastnosti oddělené tečkou. Například:

Form.Left := 120;

Panel.Caption := 'Data';

Jméno objektu je možné změnit pouze v okně nastavení objektů. Pokud tak ale učiníte v případě, že jste již zapsali pro objekt zpracování události, mohlo by se stát, že nebude při zpracování aplikace událost nalezena. V takovém případě musíte sami při změně jména objektu změnit v programu příslušné odkazy zpracování událostí. Doporučuje se proto ponechat jména objektů dle původního přidělení.

Systém KLONDAIK přiděluje jména nově umístěných objektů na formuláři automaticky. Vychází přitom z pojmenování výchozí komponenty, ke které připojí pořadové číslo. Jméno objektu máte sice možnost změnit, snažte se však dodržet alespoň původní označení komponenty, ke kterému připojíte vlastní označení oddělovacím znakem '_'. Je to z důvodu možnosti vyvolání interaktivního helpu klávesou Ctrl+F1 z editoru programu. V takovém případě se v nápovědě hledá slovo, na kterém stojí kurzor. Ze slova se oddělí nejprve veškeré číslice na konci slova a znaky následující za '_'. Výsledné slovo se použije pro hledání. Příkladem vhodného pojmenování je například Button1, Button_tisk, Panel_data. Pokud proto použijete například název ButtonTisk, nebude nápověda pro heslo 'Button' nalezena.


Vlastnost NumGlyphs

property NumGlyphs: integer;

Vlastnost NumGlyphs určuje počet bitmap, které obsahuje tlačítko. Používá se, pokud bitmapa zadaná ve vlastnosti Glyph obsahuje větší počet bitmap, které se používají pro zobrazení stavu tlačítka. Možné je zadat pouze hodnoty 1 až 4. Standardní hodnota je 1.


Vlastnost Options

Vlastnost Oprions zadává volby nastavení objektu.

komponenta ColorDialog

komponenta DataGrid

komponenta FindDialog

komponenta FontDialog

komponenta OpenDialog, SaveDialog

komponenta OpenPictureDialog, SavePictureDialog

komponenta PrintDialog

komponenta StringGrid


Vlastnost Options

Vlastnost Options lze pro ColorDialog nastavit pouze při vývoji aplikace v okně nastavení objektu. Po kliknutí na ikonu '+' u této volby se rozbalí seznam vlastností, které umožní nastavit u objektu ColorDialog následující možnosti:

cdAnyColor	- dovoluje zadat libovolnou barvu

cdFullOpen	- zajistí zobrazení plného dialogu již při zobrazení

cdPreventFullOpen- zabrání možnosti definovat vlastní barvy

cdShowHelp	- umožňuje zobrazení tlačítka pro nápovědu

cdSolidColor	- použije se nejbližší pevná barva


Vlastnost Options

Vlastnost Options lze pro objekt DataGrid nastavit pouze při vývoji aplikace v okně nastavení objektu. Po kliknutí na ikonu '+' u této volby se rozbalí seznam vlastností, které umožní nastavit u objektu DataGrid následující možnosti:

dbColLines - po zadání False se nebudou zobrazovat dělící čáry mezi sloupci databázové mřížky

dgColumnResize - při změně na False nelze při běhu aplikace změnit myší šířku sloupců datové mřížky

dgConfirmDelete - pokud nastavíte na False, nebude DataGrid vyžadovat potvrzení smazání záznamu

dgEditing - pokud nastavíte False, bude zakázána editace, vkládání a rušení záznamů databáze

dgIndicator - pokud nastavíte na False, nebude se v levé části databázové mřížky zobrazovat sloupec s indikátorem stavu aktuálního záznamu (šipka - prohlížení, hvězdička - vkládání, čárka - editace)

dbRowLines - po zadání False se nebudou zobrazovat dělící čáry mezi řádky databázové mřížky

dgRowSelect - pokud je nastaveno False, je možné při procházení databáze vybrat položku databáze, při nastavení na False je zvýrazněn vždy celý aktuální řádek databázové mřížky

dgTabs - pokud je nastaveno na True, dostanete se stisku klávesy Tab na další položku databázové mřížky, po nastavení na False způsobí stisk klávesy Tab přechod na další komponentu na formuláři

dgTitles - pokud nastavíte False, nebudou se v záhlaví databázové tabulky zobrazovat záhlaví


Vlastnost Options

Vlastnost Options lze pro FindDialog nastavit pouze při vývoji aplikace v okně nastavení objektu. Po kliknutí na ikonu '+' u této volby se rozbalí seznam vlastností, které umožní nastavit základní použití objektu.

Zadává se, zda se mají rozlišovat velká a malá písmena (frMatchCase), vyhledávat celá slova (frWholeWords), a směr vyhledávání (frDown). Pokud se nemá některá z těchto voleb uživateli umožnit, lze využít frHideMatch, hrHideWholeWord, frHideUpDown to je příslušná volba se nebude zobrazovat. Pokud požadujete zobrazení, ale nemožnost zadání uživatelem, použijte frDisableMatchCase, frDisableWholeWord, frDisableUpDown. Možné je také nastavit zobrazení tlačítka pro vyvolání nápovědy.


Vlastnost Options

Vlastnost Options lze pro FontDialog nastavit pouze při vývoji aplikace v okně nastavení objektu. Po kliknutí na ikonu '+' u této volby se rozbalí seznam vlastností, které umožní nastavit základní použití objektu.

Volba fdEfect je standardně nastavena na hodnotu True a umožňuje zadat volbu pro přeškrtnuté a podtržené písmo. Volby fdNoCase fdNoSize a fdNoStyleSel potlačují zobrazení počátečních hodnot příslušných parametrů.

Volba fdAnsiOnly způsobí filtraci netextových fontů. Pokud se nastaví volba fdForceFontExist na hodnotu True, je možné zadat pouze nainstalovaný font. Možné je také nastavit zobrazení tlačítka pro vyvolání nápovědy.


Vlastnost Options

Vlastnost Options lze pro dialogy otevření a uložení souboru nastavit pouze při vývoji aplikace v okně nastavení objektu. Po kliknutí na ikonu '+' u této volby se rozbalí seznam vlastností, které umožní nastavit základní použití objektu.

Pro možnost potlačení kontroly existence souboru zadaného jména je možné použít volbu ofNoValidate. Lze nastavit volbu ofCreatePrompt pro vyžádání potvrzení založení souboru. Obdobné platí pro ofPathMustExist. Podle nastavení ofShareAware nelze otevřít soubor, který již používá někdo jiný např. při síťovém zpracování. Nastavení ofNoChangeDir způsobí vždy návrat do počátečního adresáře. Volba ofOverWritePrompt varuje při ukládání souborů na možnost přepsání souboru.


Vlastnost Options

Vlastnost Options lze pro dialog PrintDialog nastavit pouze při vývoji aplikace v okně nastavení objektu. Po kliknutí na ikonu '+' u této volby se rozbalí seznam vlastností, které umožní nastavit základní použití objektu.

Volby umožňují především potlačit nabídku některých voleb, což znamená, že uživatel je nemůže vybrat: poPrintToFile, poPageNums, poSelection. Je vhodné nastavit vždy volbu poWarning na True, kdy bude uživatel upozorněn, že nemá vybránu žádnou tiskárnu. Volba poHelp zadává, zda se bude zobrazovat tlačítko pro vyvolání nápovědy.


Vlastnost Options

Vlastnost Options lze pro objekt StringGrid nastavit pouze při vývoji aplikace v okně nastavení objektu. Po kliknutí na ikonu '+' u této volby se rozbalí seznam vlastností, které umožní nastavit základní použití objektu.

Volby goRowSizing a goColSizing povolují (zakazují) individuální změnu velikosti řádek/sloupců. Volba goRowMoving a goColMoving povoluje (zakazuje) přesun sloupců/řádek. Volba goRangeSelect umožňuje uživateli výběr více buněk najednou, goRowSelect celé řádky.

Volba goEditing povoluje uživatelskou editaci buněk. Z programu lze nastavit vlastností Editing. Automatický editační režim zajistí volba goAlwaysShowEditor. Volba goTabs umožňuje pohyb po tabulce pomocí kláves Tab, Shift+Tab. Volba goThumbTracing je použitelná pro pomalejší počítače a ovlivňuje způsob překreslování tabulky.


Vlastnost Orientation

Vlastnost určuje směr šipek (orientaci).

komponenta TrackBar

komponenta UpDown


Vlastnost Orientation

property Orientation: set;

Vlastnost Orientation určuje směr šipek, které se zobrazují na objektu TrackBar. Možné je nastavení jednou z následujících hodnot:

trVertical	- vertikální (standardní) uspořádání

trHorizontal	- horizontální uspořádání šipek


Vlastnost Orientation

property Orientation: set;

Vlastnost Orientation určuje směr šipek, které se zobrazují na objektu UpDown. Možné je nastavení jednou z následujících hodnot:

udVertical	- vertikální (standardní) uspořádání

udHorizontal	- horizontální uspořádání šipek


Vlastnost PageCount

property PageCount: Integer;

Vlastnost PageCount vrací počet stránek (záložek) objektu PageControl. Vlastnost je dostupná pouze z programu a lze ji pouze číst, nelze ji nastavit.


Vlastnost PageIndex

komponenta TabSheet

komponenta PageControl


Vlastnost PageIndex

property PageIndex: Integer;

Vlastnost PageIndex objektu TabSheet vrací, případně nastaví pořadí záložky. Změnou se přesune záložka včetně svého obsahu na novou pozici. Záložky jsou číslovány od nuly.


Vlastnost PageIndex

property PageIndex: Integer;

Vlastnost PageIndex objektu PageControl vrací index aktivní záložky, případně nastaví aktivní záložku podle zadaného indexu. Záložky jsou číslovány od nuly, druhá záložka má proto například index s číslem 1.


Vlastnost PageSize

property PageSize: Integer;

Vlastnost PageSize zadává přírůstek změny hodnoty ukazatele při změně pozice z klávesnice pomocí kláves PageUp, PageDown a pomocí kliknutí myši.

Viz také: LineSize


Vlastnost Panels

Vlastnost Panels nastavuje zobrazení jednotlivých sekcí objektu StatusBar. Pro nastavení se používá speciální editor, který je přístupný po kliknutí na ikonu s třemi tečkami umístěnou vpravo od názvu vlastnosti v okně nastavení objektu. Vlastnost nelze používat v programu, lze ji nastavit pouze při vývoji aplikace.

Novou sekci je možné vložit po kliknutí na ikonu '+'. Změna pořadí již zapsaných sekcí se provede uchopením sekce v levé části editoru a přetažením nahoru nebo dolů na požadovanou pozici. Vlastnosti sekcí se zadávají v pravé části editoru s běžným významem. Vlastnost Text zadává zobrazovaný text a lze ji změnit z programu vlastností Panels.Text. Ostatní vlastnosti sekce nelze z programu změnit.


Vlastnost Panels.Text

property Panels.Text[index: Integer]: String;

Vlastnost vrací, případně nastaví text zadané sekce objektu StatusBar. Parametr udává pořadový index sekce. Sekce jsou číslovány od nuly. První sekce má index 0, druhá 1, atd.

Příklad:

ShowMessage(StatusBar.Panels.Text[0]);

StatusBar.Panels.Text[1]:='abcd';


Vlastnost Paragraph.Alignment

property Paragraph.Alignment: set;

Vlastnost udává způsob zarovnávání aktuálního oddílu textu. Oddílem se přitom rozumí souvislý odstavec textu. Je možné provést nastavení jednou z následujících hodnot:

taLeftJustify	- text se zarovnává vlevo

taCenter 	- text se vycentruje

taRightJustify 	- text se zarovná vpravo

Příklad:

{vycentruje odstavec}

RichEdit.Paragraph.Alignment := taCenter;


Vlastnost ParentColor

property ParentColor: Boolean;

Vlastnost ParentColor nastavuje, zda je barva podkladu objektu nastavena automaticky podle svého předchůdce. Předchůdce je pro většinu objektů formulář, pouze pokud je objekt umístěn na panelu, je předchůdcem objektu tento panel. Nastavením vlastnosti ParentColor na True zajistíte jednotný vzhled všech objektů. Při změně nastavení barvy podkladu předchůdce nebudete muset provádět následně změny u všech podřízených objektů.

Viz také:

ParentCtl3D, ParentFont, ParentShowHint


Vlastnost ParentCtl3D

property ParentCtl3D: Boolean;

Vlastnost ParentCtl3D nastavuje, zda je vlastnost Ctl3D (plastické vykreslování) objektu nastavena automaticky podle svého předchůdce. Předchůdce je pro většinu objektů formulář, pouze pokud je objekt umístěn na panelu, je předchůdcem objektu tento panel. Nastavením vlastnosti ParentCtl3D na True zajistíte jednotný vzhled všech objektů. Při změně nastavení vlastnosti Ctl3D předchůdce nebudete muset provádět následně změny u všech podřízených objektů.

Viz také:

ParentColor, ParentFont, ParentShowHint


Vlastnost ParentFont

property ParentFont: Boolean;

Vlastnost ParentFont nastavuje, zda je font objektu nastaven automaticky podle svého předchůdce. Předchůdce je pro většinu objektů formulář, pouze pokud je objekt umístěn na panelu, je předchůdcem objektu tento panel. Nastavením vlastnosti ParentFont na True zajistíte jednotný vzhled všech objektů. Při změně nastavení fontu předchůdce nebudete muset provádět následně změny u všech podřízených objektů.

Viz také:

ParentColor, ParentCtl3D, ParentShowHint


Vlastnost ParentShowHint

property ParentShowHint: boolean;

Vlastnost ParentShowHint nastavuje, zda je možnost zobrazování řádkové nápovědy objektu nastavena automaticky podle svého předchůdce. Předchůdce je pro většinu objektů formulář, pouze pokud je objekt umístěn na panelu, je předchůdcem objektu tento panel. Nastavením vlastnosti ParentShowHint na True zajistíte jednotné chování všech objektů. Při změně nastavení vlastnosti ParentShowHint u předchůdce nebudete muset provádět následně změny u všech podřízených objektů.

Viz také:

ParentColor, ParentCtl3D, ParentFont


Vlastnost PasswordChar

property PasswordChar: Char;

Vlastnost PasswordChar definuje znak, který je zobrazován v editačním poli místo znaků zadávaných uživatelem. To je vhodné například při zadávání hesla. Standardně je nastaven znak '*'.


Vlastnost Pen.Color

property Pen.Color: set;

Vlastnost určuje barvu čáry kolem zobrazovaného grafického obrazce. Lze zadat jednu z používaných barev.

Viz také:

Color, Pen.Mode, Pen.Style, Pen.Width


Vlastnost Pen.Mode

property Pen.Mode: set;

Určuje mód kreslení čáry. Pro kreslení čar existují tři faktory, které určují způsob kreslení čar. Je to barva pera, barva podkladu a bitová operace, kterou systém provádí s těmito barvami. Tato operace je známa jako rastrová operace. Existuje celkem 16 předdefinovaných módu kreslení čar. Je možné zadat jednu z možností dle následující tabulky:

---------------------------------------------------------------

Mód            výsledná barva bodu            boolovská operace

---------------------------------------------------------------

pmBlack        vždy černá                     0

pmWhite        vždy bílá                      1

pmNOP          nezměněná                      D

pmNOT          inverze barvy D                not D

pmCopy         barva určená S                 S

pmNotCopy      inverze barvy S                not S

pmMergePenNot  kombinace S a inverze D        S or not D

pmMaskPenNot   kombinace barvy S a inverze D  S and not D

pmMergeNotPen  kombinace D a inverze S        S not S or D

pmMaskNotPen   kombinace barev D a inverze S  not S and D

pmMerge        kombinace S a D                S or D

pmNotMerge     inverze pmMerge                not (S or D)

pmMask         kombinace barev S a D          S and D

pmNotMask      inverze operace pmMask         not (S and D)

pmXor          kombinace barev buď S nebo D   S XOR D

pmNotXos       inverze pmXor na S a D         not (S XOR D)

--------------------------------------------------------------

poznámka:

S znamená zdrojovou a D znamená cílovou barvu

Viz také:

Pen.Color, Pen.Style, Pen.Width


Vlastnost Pen.Style

property Pen.Style: set;

Vlastnost určuje styl použité čáry pro nakreslení grafického obrazce. Je možno použít jednu z následujících možností.

psSolid	- souvislá čára

psDash   	- přerušovaná čára

psDot          	- tečkovaná čára

psDashDot   	- čerchovaná čára

psDashDotDot	- čerchovaná čára se dvěmi tečkami

psClear        	- neviditelná čára

Viz také:

Pen.Color, Pen.Mode, Pen.Width


Vlastnost Pen.Width

property Pen.Width: Integer;

Vlastnost určuje tloušťku čáry v bodech, kterou je grafický objekt nakreslen. Pozor  na to,  že při použití silnější čáry může styl čáry splynout do plné čáry.

Viz také:

Pen.Color, Pen.Mode, Pen.Style


Vlastnost Picture

Vlastnost Picture zadává bitmapu (obrázek), který je zobrazen na ploše objektu Image. Je možné zobrazovat grafické formáty *.BMP, *.ICO a *.WMF. Zobrazovanou bitmapu můžete zadat po vyvolání dialogu, který se zobrazí po kliknutí na ikonu se třeni tečkami umístěnou vpravo u vlastnosti v okně nastavení objektu.

Proporce zobrazení lze nastavit vlastnostmi AutoSize, Center a Stretch.

Bitmapu lze načíst z programu metodou Picture.LoadFromFile, uložit ji lze voláním metody Picture.SaveToFile.


Vlastnost PlainText

property PlainText: Boolean;

Vlastnost PlainText udává způsob načtení textu do objektu RichEdit. Pokud Je zadána hodnota False, bude text načten a současně upraven dle vnitřního formátování. Pokud je zadána hodnota True, bude text načten do objektu bez jakýchkoliv úprav. To znamená, že text nebude naformátován, nebudou zvýrazněny zadané barvy textu a podobně. Text bude zobrazen včetně formátovacích znaků.

UPOZORNĚNÍ:

Vlastnost PlainText musí být nastavena ještě před načtením textu. Pozdější změna nemá na zobrazovaný text žádný vliv.


Komponenta a vlastnost PopupMenu

Komponenta PopupMenu

Vlastnost PopupMenu


Vlastnost PopupMenu

property PopUpMenu: PopUpMenu;

Vlastnost PopUpMenu definuje lokální (závěsné) menu, které se zobrazí, pokud uživatel stiskne pravé tlačítko myši nad objektem. Pro zvolené objekty formuláře je tak možné nastavit různé PopUpMenu s akcemi, které jsou pro zvolený objekt přístupné.

Příklad:

if CheckBox.Checked then

   Form.PopupMenu:= PopupMenu1

else

   Form.PopupMenu:= PopupMenu2;


Vlastnost Position

Vlastnost vrací/nastaví pozici ukazatele nebo zobrazení formuláře.

komponenta Form

komponenta ProgressBar

komponenta ScrollBar

komponenta TrackBar

komponenta UpDown


Vlastnost Position

property Position: set;

Vlastnost Position udává pozici formuláře na obrazovce v okamžiku jeho aktivace. Vhodné je používat automatické nastavení na střed obrazovky z důvodu možného různého rozlišení obrazovky na různých počítačích. Lze nastavit pouze při návrhu aplikace, vlastnost není přístupná z programu.

Možný je výběr z následujících možností:

poDesigned	- formulář se zobrazí v pozici dle návrhu aplikace

poScreenCenter 	- formulář je na obrazovce vycentrován

Ostatní možnosti nastavení jsou použitelné pouze pro vícenásobný styl formulářů MDI, které systém KLONDAIK nepodporuje.


Vlastnost Position

property Position: integer;

Vlastnost Position určuje pozici ukazatele časového průběhu akce na objektu ProgressBar. Jeho minimální hodnotu určuje vlastnost Min, maximální hodnota je definována vlastností Max.

Příklad:

ProgressBar.Min:=1;

ProgressBar.Max:=100;

ProgressBar.Position:=20;


Vlastnost Position

property Position: integer;

Vlastnost Position určuje pozici posuvnítka na objektu přetáčecího pruhu Scrollbar. Pokud bude uživatel pozici měnit, bude se měnit současně i hodnota vlastnosti Position. Minimální hodnotu určuje vlastnost Min, maximální hodnota je definována vlastností Max. Změnit hodnoty vlastnosti Min, Max a Position lze najednou voláním metody SetParams.

Příklad:

ScrollBar.Min:=1;

ScrollBar.Max:=100;

ScrollBar.Position:=20;


Vlastnost Position

property Position: integer;

Vlastnost Position určuje pozici ukazatele na objektu TrackBar. Jeho minimální hodnotu určuje vlastnost Min, maximální hodnota je definována vlastností Max.

Příklad:

TrackBar.Min:=1;

TrackBar.Max:=100;

TrackBar.Position:=20;


Vlastnost Position

property Position: integer;

Vlastnost Position určuje velikost hodnoty převáděné automaticky do připojeného editačního pole. Minimální hodnotu určuje vlastnost Min, maximální hodnota je definována vlastností Max.


Vlastnost PrintRange

property PrintRange: set;

Vlastnost PrintRange určuje typ zadání rozsahu pro tisk. Zadaná volba je  vybrána příslušným tlačítkem. Je možné zadat jednu z následujících hodnot:

prAllPages	- je vybrána volba všechny stránky

prSelection	- je vybrána volba stránky od, do

prPageNums 	- je vybrána volba výběr


Vlastnost PrintScale

property PrintScale: set;

Vlastnost PrintScale určuje proporce tisku formuláře metodou Form.Print. Možný je výběr z následujících hodnot:

poNone - neprovádí se žádná změna měřítka, proto může mít zobrazený formulář na obrazovce a jeho tištěná forma různě proporce zobrazení stran formuláře

poProportional - (standardní volba) formulář je vytištěn tak, že je dodrženo měřítko poměru stran formuláře

poPrintToFit - dodržují se stejné proporce, velikost je však upravena vzhledem k ploše stránky


Vlastnost PrintToFile

property PrintToFile: Boolean;

Vlastnost PrintToFile určuje, zda se má provést tisk do souboru. Uvedenou akci je nutné naprogramovat, dialog ji neprovádí.


Vlastnost RadioItem

property RadioItem: Boolean;

Vlastnost RadioItem umožní zobrazit u položky menu značku ve tvaru černé tečky. Značka může takto indikovat například výběr jedné z volby. Pokud budete požadovat, aby byla takto nastavena pouze jedna značka v menu, musíte sami v programu zajistit zrušení případně jiné předchozí značky.

Viz také:  Checked


Vlastnost ReadOnly

property ReadOnly: Boolean;

Vlastnost ReadOnly definuje, zda má uživatel možnost provádět změny v obsahu objektu. Změny přitom závisí na objektu, u kterého je vlastnost použita. Většinou není možné provádět editaci textu.


Vlastnost Repetitions

property Repetitions: Integer;

Vlastnost Repetitions zadává počet zobrazení animace. Pokud je zadána nulová hodnota, opakuje se animace stále dokola, případně do nastavení vlastnosti Active na hodnotu False.


Vlastnost ReplaceText

property ReplaceText: String;

Vlastnost obsahuje řetězec pro nahrazování textu. Uvedený text zadává uživatel v dialogu pro nahrazování textu.

Viz také: FindText


Vlastnost Row

property Row: Integer;

Vlastnost Row je dostupná pouze z programu a udává aktuální pozici řádky v tabulce StringGrid. Řádky jsou číslovány od nuly, první řádek má proto index nula.


Vlastnost RowCount

Komponenta DataGrid

Komponenta DataLookUpList


Vlastnost RowCount

property RowCount: Integer;

Vlastnost RowCount udává celkový počet řádků tabulky StringGrid bez ohledu na počet barevně zvýrazněných řádků.

Viz také: ColCount


Vlastnost RowCount

property RowCount: Integer;

Vlastnost   RowCount    udává   počet   řádků    seznamu   objektu DataLookUpList,   ve   kterém   se   zobrazují  data  podřízeného číselníku.  Zadáním   hodnoty  je  automaticky   provedena  změna velikosti zobrazovaného objektu na formuláři.


Vlastnost ScrollBars

property ScrollBars: set;

Vlastnost ScrollBars udává, zda se budou u objektu zobrazovat vodorovné či svislé přetáčecí pruhy pro možnost zobrazení obsahu nezobrazeného textu. Je možné nastavit jednu z následujících hodnot:

ssBoth	- zobrazuje se vodorovný i svislý přetáčecí pruh

ssHorizontal	- zobrazuje se vodorovný přetáčecí pruh

ssNone	- nezobrazuje se žádný přetáčecí pruh

ssVertical	- zobrazuje se svislý přetáčecí pruh


Vlastnost ScrollOpposite

property ScrollOpposite: Boolean;

Vlastnost ScrollOpposite určuje způsob přetáčení řádků se záložkami, pokud je povoleno víceřádkové zobrazení. Pokud je zadána hodnota True, mohou se některé řádky se záložkami zobrazovat ve spodní části objektu.

Viz také: MultiLine


Vlastnost SelAttributes

property SelAttributes: TextAttributes;

Vlastnost SelAttributes určuje atributy fontu vybraného textu objektu RichEdit. Používá se pro změnu fontu u vybrané oblasti. Oblast textu pro provedení změny je možné zadat uživatelem z klávesnice, případně z programu pomocí vlastností SelStart a SelLength.

Viz také: FontDialog

Příklad:

Nejprve se nastaví dialog pro výběr fontu na aktuální font vybrané oblasti a následně se vyvolá dialog pro změnu fontu. Pokud je font vybrán, provede se změna nastavení fontu vybrané oblasti podle fontu zadaného v dialogu.

procedure TForm.ButtonClick(Sender: TObject);

begin

   FontDialog.Font := RichEdit.SelAtributes;

   if FontDialog.Execute then

      RichEdit.SelAtributes := FontDialog.Font;

end;


Vlastnost Selected

property Selected[index: integer]: Boolean;

Vlastnost Selected vrací, případně nastaví, zda je vybrán řádek seznamu zadaný indexem. Lze použít pouze při nastavení vlastnosti MultiSelect na hodnotu True, jinak vrací vždy hodnotu False, případně není nastavení provedeno.

UPOZORNĚNÍ:

Seznam se čísluje od nuly. První položka seznamu má index 0, druhá 1, atd. Proto například pátá položka v seznamu má index s číslem 4.

Příklad:

Nejprve se provede výmaz obsahu objektu Memo, potom se prochází všechny řádky seznamu a pokud je řádek seznamu označen, provede se jeho zkopírování do textu objektu Memo.

procedure TForm.ButtonClick(Sender: TObject);

variable x: integer;

begin

   Memo.Clear;

   for x:= 0 to ListBox.Items.Count-1 do

       if ListBox.Selected[x] then

          Memo.Lines.Add(ListBox.Items[x]);

end;


Vlastnost SelEnd

property SelEnd: integer;

Vlastnost SelEnd definuje konec zvýrazněné oblasti na ukazateli TrackBar.

Viz také: SelStart


Vlastnost SelLength

property SelLength: Integer;

Vlastnost SelLength udává počet znaků, které jsou vybrané. Používá se ve spojení s vlastnostmi SelStart a SelText pro výběr části textu. Pro výběr textu musíte nejprve zadat vlastností SelStart počátek textu, potom uvedete ve vlastnosti SelLength délku vybraného textu a až potom můžete použít vlastnost SelText pro přečtení vybraného textu.

UPOZORNĚNÍ:

Pokud budete používat uvedené možnosti pro vložení podřetězce do textu, musíte uvést ve vlastnosti SelLength přesnou délku vkládaného textu. Pokud uvedete menší délku, bude výsledný text zkrácen. Při uvedení větší délky se výsledný text prodlouží.

Příklad:

Edit.Text := '1234567890'

Edit.SelStart := 2;

Edit.SelLength:= 5;

ShowMessage(Edit.SelText); {vypíše '23456'}

Edit.SelText := 'abcde';

ShowMessage(Edit.Text);    {vypíše '12abcde89'}


Vlastnost SelStart

komponenta TrackBar

ostatní komponenty


Vlastnost SelStart

property SelStart: integer;

Vlastnost SelStart definuje začátek zvýrazněné oblasti na ukazateli TrackBar.

Viz také: SelEnd


Vlastnost SelStart

property SelStart: Integer;

Vlastnost udává počáteční pozici pro výběr části textu. Používá se ve spojení s vlastnostmi SelLength a SelText. Pro výběr textu musíte nejprve zadat vlastností SelStart počátek textu, potom uvedete ve vlastnosti SelLength délku vybraného textu a až potom můžete použít vlastnost SelText pro přečtení vybraného textu.

UPOZORNĚNÍ:

Pozice počátku vybraného textu se udává od nuly. První znak má tedy pozici nula, druhý znak je na pozici 1 atd. Viz uvedený příklad.

Příklad:

Edit.Text := '1234567890'

Edit.SelStart := 2;

Edit.SelLength:= 5;

ShowMessage(Edit.SelText); {vypíše '34567'}

Edit.SelText := 'abcde';

ShowMessage(Edit.Text);    {vypíše '12abcde89'}


Vlastnost SelText

property SelText: String;

Vlastnost SelText udává obsah vybraného textu. Používá se ve spojení s vlastnostmi SelStart a SelLength. Pro výběr textu musíte nejprve zadat vlastností SelStart počátek textu, potom uvedete ve vlastnosti SelLength délku vybraného textu a až potom můžete použít vlastnost SelText pro přečtení vybraného textu.

Příklad:

Edit.Text := '1234567890'

Edit.SelStart := 2;

Edit.SelLength:= 5;

ShowMessage(Edit.SelText); {vypíše '23456'}

Edit.SelText := 'abcde';

ShowMessage(Edit.Text);    {vypíše '12abcde89'}


Komponenta a vlastnost Shape

Vlastnoat Shape vrací/nastaví hodnotu vzhledu čáry (plochy).

Komponenta Shape

Vlastnost Bevel.Shape

Vlastnost Shape.Shape


Vlastnost Shape

property Shape: set;

Vlastnost Shape určuje tvar zobrazení orámování objektu. Možný je výběr z následujících hodnot:

bsBox        	- zobrazení ve tvaru okna (plastického rámu)

bsFrame      	- zobrazení ve tvaru rámu

bsTopLine    	- zobrazení ve tvaru linky v horní části rámu

bsBottomLine	- zobrazení ve tvaru linky ve spodní části rámu

bsLeftLine   	- zobrazení ve tvaru linky v levé části rámu

bsRightLine  	- zobrazení ve tvaru linky v pravé části rámu


Vlastnost Shape

property Shape: set;

Vlastnost Shape určuje tvar zobrazeného objektu. Možný je výběr z následujících možností:

stEllipse     	- tvar elipsy

stRectangle   	- tvar obdélníku

stRoundRect   	- tvar obdélníku se zakulacenými rohy

stRoundSquare	- tvar čtverce se zaoblenými rohy

stCircle      	- tvar kružnice


Vlastnost Shareable

property Shareable: Boolean;

Vlastnost Shareable určuje, zda je možné u objektu MediaPlayer používat zadaný soubor ve vlastnosti FileName sdílený dalšími aplikacemi. Pokud je zadána hodnota True, je možné soubor používat sdílený více aplikacemi. Například při síťovém zpracování, případně při vícenásobném spuštění aplikace. Při zadání hodnoty False je povolen pouze exklusivní přístup k souboru. V takovém případě nelze se zadaným souborem v jiné aplikaci pracovat.


Vlastnost ShortCut

property ShortCut: String;

Vlastnost ShorCut umožní zadat pro každou položku menu klávesovou zkratku, pomocí které se dá položka menu přímo aktivovat. Tu můžete přímo zadat, případně vybrat z předdefinovaného seznamu zkratek. Některé kombinace však nejsou možné, protože je BIOS počítače nedokáže detekovat.

Vybraná klávesová zkratka se přitom automaticky zobrazuje v textu položky menu.


Vlastnost ShowAccelChar

property ShowAccelChar: Boolean;

Vlastnost ShowAccelChar definuje možnost použití znaku & v návěští Label. Uvedený znak se používá v textu vlastnosti Caption a pokud je nastaveno ShowAccerChar := true, potom se místo uvedeného znaku zobrazí podtržené písmeno, které následuje za znakem &. Při stisknutí klávesy Alt+podtržené písmeno získá zaměření objekt uvedený ve vlastnosti FocusControl. Pokud požaduje zobrazení znaku & v textu, musíte uvést dva uvedené znaky za sebou. Například 'Pepsi && Cola'.

Pokud nastavíte ShowAccerChar := false, bude zobrazen normálně celý text včetně případného znaku &, vlastnost FocusControl nebude použita.


Vlastnost ShowCheckBox

property ShowCheckBox: Boolean;

Vlastnost ShowCheckBox zadává, zda se zobrazuje na objektu DateTimePicker přepínací tlačítko typu CheckBox. Stav tlačítka (zapnuto/vypnuto) lze nastavit, případně přečíst ve vlastnosti Checked.


Vlastnost ShowGlyphs

property ShowGlyphs: Boolean;

Vlastnost ShowGlyphs určuje, zda se u jména souboru bude zobrazovat bitmapa charakterizující druh souboru. Pokud se zadá hodnota True, bude se u jména souboru zobrazovat bitmapa podle přípony jména souboru. Při uvedení hodnoty False se nebude bitmapa zobrazovat.


Vlastnost ShowHint

property ShowHint: Boolean;

Vlastnost ShowHint definuje, zda se bude zobrazovat rychlá řádková nápověda u objektů definovaná vlastností Hint. Nápověda se zobrazuje, pokud je nad objektem umístěn kurzor myši. Text se zobrazuje v malém rámečku se žlutým podkladem. Standardní hodnota nastavení je False, což znamená, že se řádková nápověda nebude zobrazovat. Pokud zadáte ShowHint := True, bude se řádková nápověda zobrazovat.

Pokud nastavíte ShowHint := True u formuláře, bude nastavení platné pro všechny objekty umístěné na formuláři.

Příklad:

Button.ShowHint:= True;

Button.Hint    := 'Provede se výpočet zisku';


Vlastnost SimplePanel

property SimplePanel: Boolean;

Vlastnost SimplePanel určuje, zda se na objektu zobrazuje jeden panel, či zda je panel rozdělen na sekce. Pokud je zadána hodnota True, bude se zobrazovat jeden panel s textem, který je uveden ve vlastnosti SimpleText. Pokud se uvede hodnota False, bude se panel zobrazovat rozdělený na jednotlivé sekce v závislosti na rozdělení vlastností Panels.


Vlastnost SimpleText

property SimpleText: String;

Vlastnost SimpleText obsahuje text, který se zobrazuje na panelu, pokud není rozdělen na sekce. Zobrazování jednoduchého textu nebo rozdělení panelu na sekce je závislé na nastavení vlastnosti SimpleText.


Vlastnost SizeGrip

property SizeGrip: Boolean;

Vlastnost SizeGrip určuje, zda je možné měnit myší velikost objektu na formuláři. Pokud je nastavena hodnota True, má objekt v pravém dolním rohu vyznačenu trojúhelníkovou oblast, za kterou je možné objekt uchopit myší a provést změnu velikosti. Má význam pouze pokud není vlastnost Align nastavena na vlastnost alBottom, alRight nebo alClient.


Vlastnost SmallChange

property SmallChange: Integer;

Vlastnost SmallChange určuje velikost změny pozice ukazatele objektu ScrollBar při použití kláves šipka vpravo a vlevo, případně při kliknutí myší na šipky přetáčecího pruhu. Standardně je nastavena hodnota 1. Pokud je však rozdíl mezi počáteční a koncovou hodnotou stavu objektu ScrollBar velmi velký, je vhodné změnit přiměřeně i velikost změny ve vlastnosti SmallChange.  Pokud by byla například vlastnost Min rovna 0 a vlastnost Max 1000, bylo by nutné provést 1000x posun ukazatele. Proto bude v takovém případě vhodné nastavit vlastnost SmallChange na větší hodnotu.

Viz také: LargeChange

Příklad:

ScrollBar.Min:=     0;

ScrollBar.Max:= 10000;

ScrollBar.LargeChange:= 250; {40 kroků od minima k maximu}

ScrollBar.SmallChange:= 250; {40 kroků od minima k maximu}


Vlastnost Sorted

property Sorted: Boolean;

Vlastnost určuje, zda mají být položky seznamu řazeny abecedně. Pokud je zadána hodnota False, jsou položky v seznamu řazeny dle časové posloupnosti přidávání položek. Pokud je zadána hodnota True, jsou položky obsažené v seznamu seřazeny abecedně a následující přidávané položky se vkládají na pozici podle abecedy. Vkládáním položek proto dochází ke změně jejich indexového přístupu.

UPOZORNĚNÍ:

Pokud seznam jednou seřadíte, ztrácí se veškerá informace o původním řazení seznamu, nelze již vrátit zpět původní řazení.

Příklad:

ListBox.Items.Add('zzz');

ListBox.Items.Add('ššš');

ListBox.Items.Add('ččč');

ListBox.Items.Add('aaa');

ListBox.Sorted := True;


Vlastnost Spacing

property Spacing: integer;

Vlastnost Spacing udává vzdálenost textu od bitmapy na tlačítku. Standardní hodnota jsou 4 body. Pokud se zadá hodnota -1, bude text na tlačítku vycentrován vzhledem k pozici bitmapy a okraji tlačítka.


Vlastnost StartFrame

property StartFrame: Integer;

Vlastnost StartFrame zadává číslo prvního zobrazovaného snímku animace. Standardně je nastaven první snímek. Zadáním větší hodnoty nebude sekvence zobrazována od počátku.

Viz také: StopFrame


Vlastnost State

Vlastnost State definuje, případně nastavuje stav objektu.

komponenta CheckBox

komponenta CheckListBox

komponenta Table


Vlastnost State

property State: set;

Vlastnost definuje, případně vrací stav tlačítka objektu CheckBox. Je možno provést nastavení jednou z následujících hodnot:

cbChecked 	- zadána hodnota True (křížek)

cbUnchecked	- zadána hodnota False (prázdný čtvereček)

cbGrayed	- zadán neznámý stav (šedá barva čtverečku)

Viz také: AllowGrayed

Příklad:

if CheckBox.State = cbGrayed then

   Edit.Text := 'Odpověď nebyla zadána';


Vlastnost State

property State[index: integer]: set;

Vlastnost definuje, případně vrací stav položky seznamu v objektu CheckListBox. Je možno provést nastavení jednou z následujících hodnot:

cbChecked	- zadána hodnota True (křížek)

cbUnchecked	- zadána hodnota False (prázdný čtvereček)

cbGrayed	- zadán neznámý stav (šedá barva čtverečku)

Viz také: AllowGrayed

Příklad:

if CheckListBox.State[0] = cbGrayed then

   Edit.Text := 'Odpověď nebyla zadána';


Vlastnost State

property State: integer;

Vlastnost vrací aktuální stav databáze dle následujícího významu:

dsBrowse	- databáze je v režimu prohlížení

dsEdit	- databáze je v editačním režimu, změny ještě nebyly uloženy

dsInsert	- databáze je v režimu vkládání nových záznamů

dsInactive	- databáze není aktivní


Vlastnost a událost Step

Vlastnost Step (ProgressBar)

Metodat Step  (MediaPlayer)


Vlastnost Step

property Step: integer;

Vlastnost Step udává přírůstek změny ukazatele pozice v jednom kroku při použití metody StepIt. Lze použít například pokud chceme zaznamenat časový průběh akce bez ohledu na předpokládanou dobu jejího ukončení. Metoda StepIt zvyšuje jednorázově velikost pozice ukazatele časového průběhu. Pokud  je však dosaženo konce ukazatele, je obnoveno zobrazování průběhu akce znovu od počátku ukazatele. Lze tak zobrazovat probíhající akci bez znalosti doby jejího ukončení.


Vlastnost StopFrame

property StopFrame: Integer;

Vlastnost StopFrame zadává číslo posledního zobrazovaného snímku animace. Standardně je nastaven poslední snímek. Zadáním menší hodnoty nebude sekvence zobrazována až do konce.

Viz také: StartFrame


Vlastnost Stretch

property Stretch: Boolean;

Vlastnost zadává, zda se velikost bitmapy (obrázku) upraví dle velikosti objektu. Pokud je zadána hodnota True, bude velikost bitmapy automaticky upravena tak, aby vyplňovala celou zadanou plochu objektu Image. Pokud bude zadáno False, nebude bitmapa nijak upravována. V takovém případě však nemusí být bitmapa zobrazena celá.

Viz také:

AutoSize, Center


Vlastnost Style

Vlastnost Style zadává styl zobrazení objektu.

komponenta Bevel

komponenta BitBtn

komponenta ComboBox

komponenta ListBox,  CheckListBox


Vlastnost Style

property Style: set;

Vlastnost Style zadává typ čáry pro vykreslení objektu. Je možné zadat jednu z následujících hodnot nastavení:

bsRaised	- čáry jsou opticky vyvýšeny nad formulářem

bsLowered	- čáry jsou opticky ponořeny do formuláře


Vlastnost Style

property Style: set;

Vlastnost Style zadává styl zobrazení tlačítka vzhledem k používanému operačnímu systému. Nemá význam provádět změnu nastavení. Zachovejte hodnotu bsAutodetect, která sama rozpozná používaný operační systém.


Vlastnost Style

property Style: set;

Vlastnost Style udává styl zobrazení seznamu pro výběr možných hodnot. Je možné zadat jednu z následujících hodnot nastavení:

csDropDown - standardní hodnota, kdy je seznam sbalen, lze doplnit nové položky (nutno ošetřit programově)

csSimple - je provedeno zobrazení včetně seznamu, lze vložit novou položku (nutno ošetřit programově)

csDropDownList - seznam je sbalen, není možné doplňovat nové položky

csOwnerDrawFixed - systém KLONDAIK nevyužívá

csOwnerDrawVariable  - systém KLONDAIK nevyužívá


Vlastnost Style

property Style: set;

Vlastnost zadává druh zobrazení seznamu. Systém KLONDAIK umožňuje pouze standardní zobrazení, ponechejte proto zadanou hodnotu lbStandard.


Vlastnost TabHeight

property TabHeight: Integer;

Vlastnost TabHeight zadává výšku záložek s popisem. Výška je uvedena v bodech. Pokud je zadána nulová hodnota, je výška záložek nastavována automaticky podle použitého fontu.


Vlastnost TabIndex

property TabIndex: Integer;

Vlastnost TabIndex určuje index vybrané (aktivní) záložky. Záložky jsou číslovány od nuly. Druhá záložka má proto index s číslem 1.

Příklad:

{Přepne na poslední záložku}

TabControl.TabIndex := TabControl.Tabs.Count-1;


Vlastnost TableName

property TableName: String;

Vlastnost TableName určuje databázový soubor, ve kterém je databáze na disku uložena. Je možné pracovat pouze s databázemi ve formátu FoxPro, to znamená že případné indexy jsou uloženy v souborech typu *.CDX, a memopoložky v souborech typu *.FPT. Uvedené soubory jsou v případě jejich existence automaticky otevřeny.

UPOZORNĚNÍ:

Pokud je nastavena vlastnost Active na hodnotu True, nelze změnit nastavení vlastností DatabaseName, Exclusive a TableName. Nejprve je nutné nastavit vlastnost Active na hodnotu False, až potom lze uvedené vlastnosti změnit.

Viz také: DatabaseName


Vlastnost TabOrder

property TabOrder: integer;

Vlastnost TabOrder udává pořadí zaměření objektů při použití klávesy Tabelátor. Uvedená klávesa provádí přesun na následující objekt, který tímto získá zaměření a je připraven pro vstup. Pokud požadujete přesun směrem zpět, použijte klávesy Shift+Tab.

Počáteční nastavení vlastnosti TabOrder je provedeno automaticky v pořadí zadávání objektů na formulář. Doporučuje se provést změnu pouze při návrhu aplikace podle předpokládaného zadávání dat.

Viz také: TabStop


Vlastnost TabPosition

property TabPosition: set;

Vlastnost TabPosition udává umístění záložek. Je možný výběr jedné z následujících hodnot nastavení:

tpBottom	- záložky jsou umístěny nahoře

tpTop	- záložky jsou umístěny dole


Vlastnost Tabs

property Tabs: StrArray;

Vlastnost Tabs obsahuje seznam záložek u objektu TabControl, který je typu StrArray. Jsou to vícenásobné řetězce, ke kterým je možné přistupovat samostatně podle čísla indexu.

Pro obsluhu seznamu záložek existují samostatné metody. Vzhledem k tomu, že je vlastnost Tabs samostatným objektem, musí se při volání těchto metod uvádět jméno objektu z formuláře, vlastnost Tabs a volaná metoda spolu s vyžadovanými parametry. U objektu TabControl je možné například využívat metody s následujícím voláním:

TabControl.Tabs.Add - přidá novou záložku

TabControl.Tabs.Clear - zruší všechny záložky

TabControl.Tabs.Count - vrací počet záložek

TabControl.Tabs.Delete - vymaže zadanou záložku

TabControl.Tabs.Exchange - vymění mezi sebou dvě záložky

TabControl.Tabs.IndexOf - hledá záložku se zadaným textem

TabControl.Tabs.Insert - vloží novou záložku na zadanou pozici

TabControl.Tabs.LoadFromFile - načte seznam záložek ze souboru

TabControl.Tabs.Move - přesune záložku na novou pozici

TabControl.Tabs.SaveToFile - uloží seznam záložek do souboru na disk


Vlastnost TabStop

property TabStop: Boolean;

Vlastnost TabStop definuje, zda může uživatel přecházet mezi jednotlivými objekty na formuláři klávesou Tab. Pokud je nastavena standardní hodnota True, potom je předáváno řízení mezi objekty stiskem klávesy Tab. Pokud je zadána hodnota vlastnosti False, neprovede stisk klávesy Tab předání řízení dalšímu objektu.

Viz také: TabOrder


Vlastnost TabVisible

property TabVisible: Boolean;

Vlastnost TabVisible zadává viditelnost a přístupnost záložky. Pokud je nastavena hodnota True, je záložka viditelná včetně svého obsahu. Pokud se zadá hodnota False, nebude záložka v seznamu viditelná.

UPOZORNĚNÍ:

Pokud nastavíte  hodnotu False u aktivní záložky, zmizí ze seznamu záložka, její obsah však zůstane viditelný. Pro zneviditelnění obsahu záložky musíte proto použít vlastnost Visible.


Vlastnost TabWidth

Vlastnost TabWidth specifikuje velikost tabelátoru v okně seznamu.

komponenty PageControl, TabControl

komponenty ListBox , CheckListBox


Vlastnost TabWidth

property TabWidth: Integer;

Vlastnost zadává šířku záložky u objektů typu PageControl a TabControl. Pokud je uvedena nulová hodnota, je šířka záložek definována automaticky podle textu uvedeného na záložkách. Pokud se zadá nenulová hodnota, bude použita pro nastavení šířky záložky v bodech.


Vlastnost TabWidth

property TabWidth: Integer;

Vlastnost specifikuje velikost tabelátoru v okně seznamu. Udává počet mezer zobrazených pro každý znak tabelátoru, který se zobrazuje v řetězci.


Vlastnost Tag

property Tag: integer;

Vlastnost Tag dovoluje uložit libovolné číslo do paměti objektu pro možné další použití. Tato hodnota není systémem KLONDAIK nijak používána a na jejím nastavení není závislá žádná činnost systému. Uložení a využití hodnotu musí zajistit vždy autor programu.


Vlastnost Text

property Text: String;

Vlastnost Text obsahuje text, který je uložen v objektu. Nejčastěji se jedná o editovaný text, u objektu ComboBox se jedná o text vybraný ze seznamu a zobrazený v editačním okně. U objektu RichEdit obsahuje vlastnost Text text bez formátovacích znaků. Lze jej proto použít pro vyhledávání v textu.

Příklad 1:

Pokud je zadána omezená délka možnosti zápisu do objektu typu Memo, bude se při každé změně textu zobrazovat možný limit nově zapsaných znaků. Podobným způsobem je možné upravovat událost tak, aby zapisovala počet znaků, které text obsahuje.

procedure TForm.MemoChange(Sender: TObject);

begin

   if Memo.MaxLength > 0 then

      Label1.Caption:= Memo.MaxLength - Length(Memo.Text);

end;

Příklad 2:

{zobrazí v editačním okně počet záznamů databáze}

Edit.Text := IntToStr(DataTable.RecCount);


Vlastnost TextCase

property TextCase: set;

Vlastnost TextCase určuje, zda se provádí konverze jména diskové jednotky na velká písmena. Možný je výběr jedné z následujících hodnot:

tcLowerCase - jméno diskové mechaniky je zobrazováno malými písmeny

tcUpperCase - jméno diskové mechaniky je zobrazováno velkými písmeny


Vlastnost Thousands

property Thousands: Boolean;

Vlastnost určuje, zda jsou tisícové řády čísel vzájemně odděleny, což přispívá k lepší čitelnosti čísel. Pokud zadáte hodnotu True, bude mezi každými třemi číslicemi zleva provedeno oddělení tisícovek. Uvede-li se hodnota False, budou čísla zobrazena bez oddělení tisíců.


Vlastnost TickMarks

property TickMarks: set;

Vlastnost TickMarks definuje umístění značek ukazatele na objektu. Je možné zadat jednu z následujících hodnot:

tmBoth	- značky jsou umístěny nahoře i dole

tmBottomRight	- značky jsou umístěny dole nebo vpravo podle orientace

tmTopLeft	- značky jsou umístěny nahoře nebo vlevo podle orientace


Vlastnost TickStyle

property TickStyle: set;

Vlastnost TickStyle definuje způsob označování pozic ukazatele na objektu. Je možné zadat jednu z následujících hodnot:

tsAuto	- značky jsou umístěny automaticky podle vlastnosti Frequency

tsManual	- značky jsou umístěny pouze na pozicích Min a Max, další značky je možné definovat z programu metodou SetTick

tsNone	 - značky nejsou zobrazovány


Funkce a vlastnost Time

Funkce Time

Vlastnost Time


Vlastnost Time

property Time: TTime;

Vlastnost Time obsahuje uživatelem zadaný čas. Čas je uložen ve speciálním formátu. Pro jeho zobrazení je nutné jej konvertovat do tvaru řetězce. Pro zobrazování času musíte mít nastavenu vlastnost Kind na hodnotu dtkTime.

Viz také:

StrToTime, TimeToStr

Příklad:

DateTimePicker.Kind := dtkTime;

DateTimePicker.Time := StrToTime('12:01:00');

ShowMessage(TimeToStr(DateTimePicker.Time));


Vlastnost Timers

property Timers: Boolean;

Vlastnost Timers specifikuje, zda jsou jednotlivé snímky animace časově synchronizovány.


Vlastnost Title

property Title: String;

Vlastnost Title zadává titulek dialogového boxu. Pokud se ponechá prázdná hodnota, bude automaticky doplněn standardní text titulku v závislosti na druhu dialogového boxu.

Příklad:

OpenDialog.Title := 'Otevřít soubor pro konverzi';


Vlastnost TitleFont

property TitleFont: font;

Vlastnost TitleFont definuje písmo, které se použije pro nadpis záhlaví sloupců.

V okně Nastavení objektu je možné nastavit jméno fontu, velikost, typ a barvu fontu. Po kliknutí na tlačítko se třemi tečkami je vyvolán dialog pro výběr požadovaného fontu. Jednotlivé atributy fontu (jméno, typ, velikost a barvu) můžete nastavit jednotlivě po rozbalení vlastnosti Font.

V programu je možné font nastavit pouze jako celek převzetím vlastnosti z jiného objektu, případně výsledkem volání dialogu FontDialog. Není možné nastavit pouze jednotlivé atributy fontu (například pouze velikost fontu).


Vlastnost Top

property Top: Integer;

Vlastnost Top určuje u formuláře vertikální umístění formuláře v bodech od horního okraje obrazovky. U ostatních objektů určuje vlastnost Top vertikální souřadnici objektu od horní hrany formuláře. Pokud je objekt umístěn na panelu, určuje vlastnost Top vertikální souřadnici objektu od horní hrany panelu.

Příklad:

Při každém stisku tlačítka se přesune tlačítko o 10 bodů nahoru:

Procedure TForm.Button1Click(Sender: TObject);

Begin

   Button1.Top := Button1.Top - 10;

end;


Vlastnost ToPage

property ToPage: Integer;

Vlastnost ToPage je použita u dialogu PrintDialog pro výběr rozsahu tisku stránek a udává poslední stranu pro tisk. Standardní hodnota nastavení je 0, to znamená, že se bude tisknout vše do konce.

Viz také:

FromPage, MaxPage, Minpage


Vlastnost Transparent

property Transparent: Boolean;

Vlastnost Transparent definuje, zda je objekt zobrazen průhledně a zda jsou viditelné objekty umístěné v nižší vrstvě na formuláři.


Vlastnost ValueChecked

property ValueChecked: String;

Vlastnost ValueChecked umožňuje zobrazovat  v logickém tvaru i proměnné jiného typu, než Boolean. Zadává se hodnota, při jejímž souhlasu je zobrazován stav přepínače ve stavu True (čtvereček s křížkem).

Viz také:

AllowGrayed, ValueUnChecked

Příklad:

Požadujete zobrazovat ve tvaru přepínače CheckBox procento DPH (přirážka k ceně, možné hodnoty pouze 5 a 22 %). U přepínače se proto nastaví vlastnosti ValueChecked a ValueUnChecked na příslušné hodnoty procentní sazby.  Pokud například zadáte pro zobrazení procenta DPH příslušné procento, bude se zobrazovat  výsledek  True/False  podle  stavu  obsahu databázové položky obsahující procento DPH.

DataCheckBox.ValueChecked := '5';

DataCheckBox.ValueUnChecked := '22';


Vlastnost ValueUnchecked

property ValueUnChecked: String;

Vlastnost ValueUnChecked umožňuje zobrazovat  v logickém tvaru i proměnné jiného typu, než Boolean. Zadává se hodnota, při jejímž souhlasu je zobrazován stav přepínače ve stavu False (prázdný čtvereček).

Viz také:

AllowGrayed, ValueChecked

Příklad:

Požadujete zobrazovat ve tvaru přepínače CheckBox procento DPH (přirážka k ceně, možné hodnoty pouze 5 a 22 %). U přepínače se proto nastaví vlastnosti ValueChecked a ValueUnChecked na příslušné hodnoty procentní sazby. Pokud například zadáte pro zobrazení procenta DPH příslušné procento, bude se zobrazovat  výsledek  True/False  podle  stavu  obsahu databázové položky obsahující procento DPH.

DataCheckBox.ValueChecked := '5';

DataCheckBox.ValueUnChecked := '22';


Vlastnost Values

property Values: StrArray;

Vlastnost  Values  určuje  skutečný  obsah  podřízené  databázové položky zobrazované  objektem DataRadioGroup. Pokud  je vlastnost Values  prázdná, použije  se přímo  hodnota zadaná  ve vlastnosti Items. Jestliže jsou ve vlastnosti Values zadány možné předvolené hodnoty obsahu databázové položky, použije se pro zobrazení stavu hodnota z vlastnosti Items odpovídající svým pořadovým indexem.

Vlastnost  Values  je  nutné  použít  například  pro  zobrazování a zadávání stavu  logických hodnot, kdy  je nutno nastavit  obsah vlastností Items  i Values. Ve vlastnosti  Items se přitom zadává text, který  je zobrazován objektem  DataRadioGroup na formuláři. Je  možné zadat  libovolný text.  Ve vlastnosti  Values je  nutné zadat možné stavy databázové položky. U logických hodnot je nutné zadat  'True'  a  'False'.  Tyto  hodnoty  musí  být zadány přesně v uvedeném  tvaru, to  je  velké  první písmeno,  ostatní písmena malá!!! Pokud byste uvedený zápis nedodrželi, nebyl by zobrazován odpovídající stav zadaný ve  vlastnosti Items. Uvedené hodnoty ke možné zadat při návrhu aplikace, případně v programu:

procedure TForm.FormCreate(Sender: TObject);

begin

   DataRadioGroup.Items.Add('ANO');

   DataRadioGroup.Items.Add('NE');

   DataRadioGroup.Values.Add('True');

   DataRadioGroup.Values.Add('False');

end;

Vlastnost Values  je typu StrArray. Jsou  to vícenásobné řetězce, ke kterým je možné přistupovat samostatně podle čísla indexu. Pro obsluhu vlastnosti  existují samostatné metody.  Vzhledem k tomu, že je  vlastnost Values samostatným objektem,  musí se při volání těchto metod  uvádět jméno objektu z  formuláře, vlastnost Values a volaná metoda spolu s vyžadovanými parametry:

DataRadioGroup.Values.Add - přidá položku do seznamu

DataRadioGroup.Values.Clear - vymaže položku seznamu

DataRadioGroup.Values.Count - vrací počet položek seznamu

DataRadioGroup.Values.Delete - zruší položku seznamu

DataRadioGroup.Values.Exchange - vymění položky seznamu

DataRadioGroup.Values.IndexOf - hledá položku dle zadaného obsahu

DataRadioGroup.Values.Insert - vloží novou položku seznamu

DataRadioGroup.Values.LoadFromFile - načte textový soubor do seznamu

DataRadioGroup.Values.Move - přesune položku seznamu na novou pozici

DataRadioGroup.Values.SaveToFile - uloží seznam do textového souboru


Vlastnost VertScrollBar

property VertScrollBar: ScrollBar;

Vlastnost VertScrollBar definuje zobrazení vertikálního přetáčecího pruhu (posuvnítka). Ten se zobrazuje na formuláři, pokud není možné zobrazit najednou všechny objekty. Přetáčecí pruh v takovém případě slouží k uživatelskému scrolování obsahu formuláře.

Zobrazení přetáčecího pruhu je závislé na nastavení vlastnosti AutoScroll.

Vlastnosti přetáčecího pruhu je možné změnit pouze v okně nastavení objektů, nelze provést z programu.

Viz také: HorzScrollBar


Vlastnost Visible

property Visible: Boolean;

Vlastnost Visible určuje, zda je objekt na formuláři viditelný. Pokud je zadána standardní hodnota True, je objekt na formuláři zobrazován. Po zadání hodnoty False není objekt na formuláři zobrazován, přesto však nohou být další vlastnosti objektu definovány, je také možné aktivovat metody objektů.

Neviditelný objekt je možné využít k mnoha různým akcím. Po umístění objektu ListBox na formuláři je možné jej například naplnit seznamem osob a po volání metody ListBox.Sort získat seznam osob seřazený dle abecedy. Další možností je načíst do objektu typu Memo textový soubor a přistupovat k němu v rámci jednotlivých řádků. Obdobné využití neviditelných objektů naleznete jistě i pro další komponenty.


Vlastnost VisibleButtons

komponenta DataNavigator

komponenta MediaPlayer


Vlastnost VisibleButtons

property VisibleButtons: set;

Vlastnost VisibleButtons zadává tlačítka, která se zobrazují na navigátoru po databázi. Po kliknutí myší na názvu vlastnosti v okně Nastavení objektu se zobrazí seznam tlačítek, ze kterého je možné vybrat zobrazovaná tlačítka:

First	- první záznam

Prior 	- předchozí záznam

Next 	- následující záznam

Last 	- poslední záznam

Insert  	- vložit nový záznam

Delete 	- vymazat záznam

Edit 	- přepnout do režimu oprav

Post 	- uložit provedené změny

Cancel 	- zrušit změny

Refresh 	- obnovit zobrazení při práci v síti

Vlastnost VisibleButtons umožní zobrazovat pouze tlačítka, která je možno použít a lze tak například snadno zabránit uživateli k vykonání nežádoucí akce. Pokud se má například umožnit uživateli pouze prohlížet záznamy, lze zobrazit pouze tlačítka First, Prior, Next a Last.

Vlastnost VisibleButtons je dostupná pouze při návrhu aplikace. Z programu je možné nastavit zobrazovaná tlačítka voláním metody NavigatorButtons.


Vlastnost VisibleButtons

property VisibleButtons: set;

Vlastnost VisibleButtons zadává tlačítka, která se budou zobrazovat na objektu MediaPlayer. Po kliknutí myší na názvu vlastnosti v okně Nastavení objektu se zobrazí seznam tlačítek, ze kterého je možné vybrat zobrazovaná tlačítka:

btBack 	- povede posun v záznamu dozadu

btEject 	- vysune médium ze zařízení (CD disk)

btNext 	- přejde na následující stopu

btPause 	- pozastaví/spustí akci

btPlay 	- spustí přehráváni

btPrev 	- přejde na předchozí stopu

btRecord 	- záznam

btStep 	- provede posun v záznamu vpřed

btStop 	- zastaví přehrávání, případně záznam

Vlastnost VisibleButtons umožní zobrazovat pouze tlačítka, která je možno použít a lze tak například snadno zabránit uživateli k vykonání nežádoucí akce. Vlastnost je dostupná pouze při návrhu aplikace.


Vlastnost WantReturns

property WantReturns: Boolean;

Vlastnost WantReturns určuje, zda je možné do textu zadat znak Enter (konec řádu). Pokud zadáte hodnotu False a máte na formuláři umístěn objekt BitBtn, u kterého je ve vlastnosti Default zadána hodnota True, dojde při stisku klávesy Enter k uzavření formuláře. Nový řádek můžete v tomto případě zadat pouze stiskem kláves Ctrl+Enter.

Pokud nastavíte u vlastnosti WantReturns hodnotu True, bude možné zadat nový řádek stiskem klávesy Enter bez ohledu na použití a nastavení objektu BitBtn.


Vlastnost WantTabs

property WantTabs: Boolean;

Vlastnost WantTabs určuje, zda je možné do textu zadat Tabelátor. Pokud zadáte hodnotu False, dojde při stisku klávesy Tab k zaměření dalšího objektu. Znak Tabelátor můžete v tomto případě zadat pouze stiskem kláves Ctrl+Tab. Pokud nastavíte u vlastnosti WantTabs hodnotu True, bude možné zadat do textu znak Tabelátor běžným způsobem.


Vlastnost Width

property Width: Integer;

Vlastnost Width určuje šířku objektu v bodech. Pokud zvýšíte hodnotu vlastnosti Width, bude objekt širší, pokud hodnotu snížíte, sníží se i šířka zobrazovaného objektu.

Vlastnost Width u objektu Screen lze pouze číst a udává šířku obrazovky v bodech.

Příklad:

Při každém stisku tlačítka se zvětší šířka tlačítka o 10 bodů:

Procedure TForm.Button1Click(Sender: TObject);

Begin

   Button1.Width := Button1.Width + 10;

end;


Vlastnost WindowState

property WindowState: set;

Vlastnost WindowState určuje druh zobrazení formuláře za běhu aplikace. Pro zadání je možný výběr z následujících hodnot:

wsNormal	- normální zobrazení formuláře

wsMinimized 	- formulář je minimalizován

wsMaximized	- formulář je maximalizován na plnou plochu obrazovky

Vzhledem k tomu, že je možné pracovat vždy pouze s jedním formulářem, nedoporučuje se používat volbu wsMinimized, mohlo by dojít k nežádoucím situacím.

Příklad:

if CheckBox.Checked then

   Form.WindowState:= wsNormal

else

   Form.WindowState:= wsMaximized;


Vlastnost WordWrap

property WordWrap: Boolean;

Vlastnost WordWrap definuje, zda bude delší text, který by přesahoval okraje objektu uříznut. Pokud zadáte hodnotu False, bude delší text uříznut, při zadání hodnoty True bude delší text rozdělen automaticky na více řádků do vymezeného prostoru.

Viz také: AutoSize


Vlastnost Wrap

property Wrap: Boolean;

Vlastnost Wrap udává, zda se má při dosažení minimální nebo maximální hodnoty pokusit objekt pokračovat cyklicky od počátku. Pokud je zadána hodnota True, je při dosažení maxima při následujícím kroku provedeno automaticky nastavení na minimální hodnotu. Pokud se zadá ve vlastnosti Wrap hodnota False, je při dosažení minimální nebo maximální hodnoty změna hodnot zastavena.


Metoda Add

funkce Add(S: string) : integer;

Funkce Add přidá do seznamu řetězců na jeho konec nový řetězec a vrací pozici řetězce v seznamu. Pokud je seznam řazen abecedně, dojde okamžitě k jeho abecednímu zatřídění.

UPOZORNĚNÍ:

Seznam se čísluje od nuly. První položka seznamu má index 0, druhá 1, atd. Proto například pátá položka v seznamu má index s číslem 4.

Příklad:

ListBox.Items.Add('aaa');

Memo.Lines.Add('bbb)';

ShowMessage(MemoLines.Add('ccc'));

Viz také: StrArray.InsertI


Metoda ApplyFilePath

procedure ApplyFilePath(path: String);

Procedura ApplyFilePath aktualizuje seznam souborů FileListBox s novým načtením disku, adresáře a výběrové masky dle zadání parametru path. Dle zadání parametru se změní nastavení disku, adresáře a masky souboru se současným načtením odpovídajících souborů do seznamu.

Viz také: Update


Metoda Back

procedure Back;

Procedura Back povede posun v záznamu směrem zpět. Nahrazuje tak stisk tlačítka Back na ovladači MediaPlayer.

Play 	- spustí přehráváni

Pause 	- pozastaví/spustí akci

Stop 	- zastaví přehrávání, případně záznam

Next 	- přejde na následující stopu

Prev 	- přejde na předchozí stopu

Step 	- provede posun v záznamu vpřed

Back 	- povede posun v záznamu dozadu

Eject 	- vysune médium ze zařízení (CD disk)


Metoda Clear

procedure Clear;

Procedura Clear provede kompletní výmaz obsahu objektu. U objektu Edit bude zrušen text. U objektů, ve kterých jsou údaje uloženy jako seznam řetězců budou všechny položky seznamu zrušeny, počet řetězců bude vynulován. Seznam řetězců představuje u objektu Memo zapsaný text, u objektu RadioGroup je to seznam tlačítek, u objektu ListBox to je položka seznamu a podobně.


Metoda ClearSelection

procedure ClearSelection;

Procedura ClearSelection zruší označený text. Text lze označit buď uživatelsky z klávesnice, případně nastavením vlastností SelStart a SelLength. Pokud není označen text, neprovede se žádná akce.

Viz také: SelectAll

Příklad:

Edit.Text     := '1234567890'

Edit.SelStart := 2;

Edit.SelLength:= 5;

Edit.ClearSelection;

ShowMessage(Edit.Text); {vypíše '12890'}


Metoda Click

procedure Click;

Procedura Click vyvolá z programu provedení události OnClick objektu bez ohledu na to, zda opravdu k události došlo.


Metoda Close

komponenta MediaPlayer

komponenta Form


Metoda CLOSE

procedure Close;

Procedura Close uzavře aktivní používané multimediální zařízení. Procedura Close je vyvolána také automaticky v okamžiku ukončení aplikace.


Metoda CLOSE

procedure Close;

Procedura Close provede uzavření formuláře. Tím jsou současně ukončeny všechny akce související s tímto formulářem. Pokud byl tedy formulář spuštěn jako hlavní aplikace, bude současně ukončena celá aplikace. Pokud jste spustili formulář z jiného formuláře, bude pouze ukončen tento formulář s návratem do původního formuláře.

Metoda Close může být také volána automaticky v závislosti na nastavení objektu BitBtn.


Metoda CloseDialog

procedure CloseDialog;

Procedura CloseDialog uzavírá dialog FontDialog nebo ReplaceDialog, které je možné otevřít nemodálně. To znamená, že lze dialog ponechat zobrazený a přepnout se na jiný formulář.


Metoda CopyToClipboard

procedure CopyToClipboard;

Procedura CopyToClipboard zkopíruje obsah objektu do schránky Windows k dalšímu použití.  Obsah objektu může být v binárním (obrázek), případně textovém tvaru. Pokud je obsah objektu textového typu, lze jej označit buď uživatelsky z klávesnice, případně nastavením vlastností SelStart a SelLength. Pokud není označen text, neprovede se žádná akce.

Viz také:

CutToClipboard, PasteFromClipboard

Příklad:

Edit.Text     := '123456789-'

Edit.SelStart := 0;

Edit.SelLength:= 3;

Edit.CopyToClipboard;

Edit.SelStart := 10;

Edit.PasteFromClipboard;

ShowMessage(Edit.Text); {vypíše '123456789-123'}


Metoda CutToClipboard

procedure CutToClipboard;

Procedura CutToClipboard přesune obsah objektu do schránky Windows k dalšímu použití.  Původní obsah tak bude zrušen! Obsah objektu může být v binárním (obrázek), případně textovém tvaru. Pokud je obsah objektu textového typu, lze označit buď uživatelsky z klávesnice, případně nastavením vlastností SelStart a SelLength. Pokud není označen žádný text, neprovede se žádná akce.

Viz také:

CopyToClipboard, PasteFromClipboard

Příklad:

Edit.Text     := '123456789-'

Edit.SelStart := 3;

Edit.SelLength:= 4;

Edit.CutToClipboard;

Edit.SelStart := Length(Edit.Text);

Edit.PasteFromClipboard;

ShowMessage(Edit.Text); {vypíše '12389-4567'}


Metoda Delete

procedure Delete(Index: integer);

Procedura zruší v proměnné typu StrArray položku se zadaným indexem. Po výmazu dojde k posunu indexů následujících položek seznamu.

UPOZORNĚNÍ:

Seznam se čísluje od nuly. První položka seznamu má index 0, druhá 1, atd. Proto například pátá položka v seznamu má index s číslem 4.

Příklad:

ListBox.Items.Delete(2);

Memo.Lines.Delete(0)';


Metoda Eject

procedure Eject;

Procedura Eject otevře multimediální zařízení a vysune médium. Při použití CD-ROM mechaniky vysune CD disk.


Metoda Exchange

procedure Exchange(Index1, Index2: integer);

Procedura Exchange navzájem zamění pozici dvou položek zadaných indexy Index1 a Index2 v proměnné typu StrArray. Ostatní položky seznamu budou zachovány beze změny. Pokud je zadán jeden index mimo rozsah, bude na pozici druhého indexu řetězec vynulován (zkrácen na nulovou délku).

UPOZORNĚNÍ:

Seznam se čísluje od nuly. První položka seznamu má index 0, druhá 1, atd. Proto například pátá položka v seznamu má index s číslem 4.

Příklad:

{provede se výměna první a poslední řádky}

Memo.Lines.Exchange(0, Memo.Lines.Count-1)';

Viz také: StrArray.Move


Metoda Execute

function Execute: Boolean;

Funkce Execute aktivuje dialog a po jeho ukončení vrací informaci o způsobu ukončení dialogu. Pokud byl dialog ukončen stiskem tlačítka 'Otevřít', je vrácena hodnota True, jinak vrací dialog hodnotu False.

Příklad:

Po kliknutí na tlačítko je aktivován dialog pro výběr souboru. Pokud bude soubor vybrán, bude text souboru načten do objektu Memo.

procedure TForm.ButtonClick(Sender: TObject);

begin

   if OpenDialog.Execute then

      Memo.Lines.LoadFromFile(OpenDialog.Filename);

end;


Metoda FindText

function FindText(SearchText: String, StartPos, Length: Integer,

                  Options: Types): Integer;

Funkce FindText hledává v textu zadaný text s možností zadání parametrů pro hledání. Hledaný text se zadává v parametru SearchText. Pozice, od které se text vyhledává se zadává v parametru StartPos. Díky tomu je možné hledat další výskyt textu, nemusí se hledat vždy od počátku. Délka textu, ve které se hledá se zadává v parametru Length. Parametry pro hledání se zadávají v parametru Options v hranatých závorkách s následujícím významem:

stWholeWord	- vyhledávat pouze celá slova

stMatchCase 	- rozlišovat velká a malá písmena

Pokud požadujete hledání se zadaným parametrem, uvedete jej v hranatých závorkách. Při uvedení obou parametrů je oddělíte čárkou. Pokud nechcete zadané parametry hledání uvádět, musíte uvést alespoň prázdné závorky.

Funkce vrací v případě nenalezení zadaného textu zápornou hodnotu. Pokud je zadaná text nalezen, je vrácena funkcí FindText pozice nalezeného textu.

Příklad 1:

Hledá text 'abc' od počátku do konce textu, bez dalších parametrů:

RichEdit.FindText('abc', 0, Length(RichEdit.Text), []);

Příklad 2:

Hledá text 'KL3' od aktuální pozice kurzoru do konce, v parametrech hledání zadáno, že se mají rozlišovat zadaná malá a velká písmena:

RichEdit.FindText('KL3', RichEdit.SelStart,

                  Length(RichEdit.Text)-RichEdit.SelStart,

                  [stMatchCase]);

Příklad 3:

Kompletní příklad při použití dialogu FindText:

procedure TForm.FindDialogFind(Sender: TObject);

var Found, StartPos, ToEnd: Integer;

begin

    if RichEdit.SelLength <> 0 then

       StartPos := RichEdit.SelStart + RichEdit.SelLength

    else

       StartPos := 0;

    ToEnd := Length(RichEdit.Text) - StartPos;

    Found := RichEdit.FindText(FindDialog.FindText, StartPos,

                               ToEnd, [stMatchCase]);

    if Find < 0 then ShowMessage('Nebylo nenalezeno')

    else begin

       RichEdit.SetFocus;

       RichEdit.SelStart  := Found;

       RichEdit.SelLength := Length(FindDialog.FindText);

    end;

end;


Metoda Glyph.LoadFromFile

procedure Glyph.LoadFromFile(S: string);

Procedura načte novou bitmapu tlačítka. Pokud zadaný soubor neexistuje, neprovede se žádná akce. Nezapomeňte v případě nutnosti upravit vlastnost NumGlyphs udávající počet obsažených obrázků v bitmapě pro zobrazování různých stavů tlačítka.

Příklad:

SpeedButton.Glyph.LoadFromFile('print.bmp');


Metoda HelpCommand

procedure HelpCommand(Command: set, Data: Integer);

Procedura HelpComand vyvolá provedení zadané akce s nápovědou aplikace. Parametr Data se zadává vždy nulový. V parametru Command se zadává jedna z následujících hodnot dle požadované akce:

HELP_CONTENS 	- vyvolá zobrazení obsahu nápovědy

HELP_PARTIALKEY 	- vyvolá dialog pro hledání v rejstříku nápovědy

HELP_HELPONHELP 	- vyvolá nápovědu o použití helpu

Příklad:

procedure TForm.ButtonClick(Sender: TObject);

begin

   Application.HelpCommand(HELP_CONTENS, 0);

   Application.HelpCommand(HELP_PARTIALKEY, 0);

   Application.HelpCommand(HELP_HELPONHELP, 0);

end;


Metoda HelpContext

procedure HelpContext(Context: Integer);

Procedura HelpContext vyvolá nápovědu zadané položky kontextové nápovědy. Každá položka helpu by měla mít definováno své kontextové číslo, které je definováno při vytváření souboru nápovědy ve svém projektu. Pokud je v aplikaci vyvolána metoda HelpContext, zobrazí se příslušné heslo se zadaným číslem kontextové nápovědy.

Příklad:

procedure TForm.ButtonClick(Sender: TObject);

begin

   Application.HelpContext(3);

end;


Metoda HelpJump

procedure HelpJump(JumpTo: string);

Procedura HelpJump vyvolá a zobrazí zadanou položku aktuálního menu aplikace zadanou svým přístupovým klíčem. Pokud není zadán soubor s helpem pro aplikaci ani formulář, neprovede se žádná akce. Při zadání neexistujícího hesla nápovědy je vyvoláno chybové hlášení.

Příklad:

procedure TForm.ButtonClick(Sender: TObject);

begin

   Application.HelpJump("xyz");

end;


Metoda IndexOf

function IndexOf(S: string): integer;

Funkce IndexOf vrací pořadový index umístění zadaného řetězce v proměnné typu StrArray. Pokud se zadaný řetězec vyskytuje v seznamu vícekrát, je vrácen index jeho prvního výskytu od počátku seznamu. Pokud není zadaný řetězec nalezen, je vrácena záporná hodnota.

UPOZORNĚNÍ:

Seznam se čísluje od nuly. První položka seznamu má index 0, druhá 1, atd. Proto například pátá položka v seznamu má index s číslem 4.

Příklad:

ShowMessage(ListBox.Items.IndexOf('ccc'));


Funkce a metoda Insert

Funkce Insert

Metoda Insert


Metoda Insert

procedure Insert(Index: integer; S: string):

Procedura Insert přidá do proměnné typy StrArray na zadanou pozici nový řetězec. Pokud je zadán index 0, bude řetězec umístěn na začátek seznamu. Pokud je zadán index větší než je rozsah seznamu, nebude řetězec do seznamu doplněn. Pokud je seznam řazen abecedně, dojde okamžitě k jeho abecednímu zatřídění.

UPOZORNĚNÍ:

Seznam se čísluje od nuly. První položka seznamu má index 0, druhá 1, atd. Proto například pátá položka v seznamu má index s číslem 4.

Příklad:

ListBox.Items.Insert(3, 'ccc');

Viz také: StrArray.Add


Metoda LoadFromFile

procedure LoadFromFile(S: string);

Procedura LoadFromFile načte do proměnné typy StrArray textový soubor. Jednotlivé řádky souboru jsou potom přístupné pomocí svého pořadového indexu. Původní obsah seznamu řetězců je zrušen.

Příklad:

{načte soubor autoexec.bat}

Memo.Lines.LoadFromFile('c:\autoexec.bat');

{vypíše jeho obsah do textového výstupu}

for x:= 0 to Memo.Lines.Count-1 do

    Writeln(Memo.Lines[x]);

Viz také:

StrArray.SaveToFile


Metoda LoadMemo

procedure LoadMemo;

Procedura LoadMemo načte memopoložku z databáze. Používá se ve spojení s vlastností AutoDisplay, kdy je možné zadat, že se nemají data zobrazovat při každé změně pozice v databázi, ale pouze při volání metody LoadMemo.

Příklad:

U objektu DataMemo je nastaveno (AutoDisplay := False), že se nemá zobrazovat automaticky obsah memopoložky. Zobrazí se pouze pokud klikne uživatel myší na plochu, ve které se memopoložka zobrazuje.

procedure TForm.DataMemoClick(Sender: TObject);

begin

   DataMemo.LoadMemo;

end;


Metoda LoadPicture

procedure LoadPictiure;

Procedura LoadPicture načte obrázek z memopoložky databáze do objektu. Využívá se, pokud je nastavena vlastnost AutoDisplay na hodnotu False. V takovém případě se nenačítá obrázek automaticky, ale právě voláním metody LoadPicture.


Metoda Move

procedure Move(Index1, Index2: integer);

Procedura Move provede přesun zadaného řetězce v proměnné typu StrArray z pozice Index1 na pozici Index2. Současně se změní pozice dalších řetězců souvisejících s tímto přesunem. Pokud je zadán index pro přesun větší, než je počet řetězců, bude řetězec pouze vyjmut ze seznamu řetězců.

UPOZORNĚNÍ:

Seznam se čísluje od nuly. První položka seznamu má index 0, druhá 1, atd. Proto například pátá položka v seznamu má index s číslem 4.

Příklad:

{provede se přesun první řádky na konec}

Memo.Lines.Move(0, Memo.Lines.Count-1)';

Viz také: StrArray.Exchange


Metoda NavigatorButtons

procedure NavigatorButtons(Button: set);

Procedura NavigatorButtons zadává tlačítka, která se zobrazují na navigátoru po databázi. Seznam tlačítek se zadává výčtem v hranatých závorkách. Možné je zadat výběr z následujících hodnot pro příslušná tlačítka:

nbFirst	- první záznam

nbPrior 	- předchozí záznam

nbNext 	- následující záznam

nbLast 	- poslední záznam

nbInsert	- vložit nový záznam

nbDelete	- vymazat záznam

nbEdit 	- přepnout do režimu oprav

nbPost 	- uložit provedené změny

nbCancel	- zrušit změny

nbRefresh	- obnovit zobrazení při práci v síti

Procedura NavigatorButtons umožní zobrazovat pouze tlačítka, která je možno použít a lze tak například snadno zabránit uživateli k vykonání nežádoucí akce. Pokud se má například umožnit uživateli pouze prohlížet záznamy, lze zobrazit pouze tlačítka pro navigaci v databázi bez možnosti dalších změn:

DataNavigator.NavigatorButtons([nbFirst, nbPrior, nbNext, nbLast]);


Metoda Next

procedure Next;

Procedura Next povede posun na následující stopu multimediálního zařízení.  Nahrazuje tak stisk tlačítka Next na ovladači MediaPlayer.


Metoda Open

procedure Open;

Procedura Open otevře zadané multimediální zařízení. Typ média musí být předem zadáno ve vlastnosti DeviceType.


Metoda OpenCurrent

procedure OpenCurrent;

Procedura OpenCurrent otevře adresář, který je vybrán v seznamu adresářů. Simuluje tím uživatelovo kliknutí na zadaný adresář.


Metoda PasteFromClipboard

procedure PasteFromClipboard;

Procedura PasteFromClipboard přesune do objektu obsah schránky Windows. Ten může být v binárním (obrázek), nebo textovém tvaru. Pokud je typ rozdílný, žádná akce se neprovede. Je-li obsah objektu textového typu, přesune na aktuální pozici v textu text umístěný ve schránce Windows. Pokud není ve schránce žádný text, neprovede se žádná akce.

Viz také:

CopyToClipboard, CutToClipboard

Příklad:

Edit.Text     := '123456789-'

Edit.SelStart := 3;

Edit.SelLength:= 4;

Edit.CutToClipboard;

Edit.SelStart := Length(Edit.Text);

Edit.PasteFromClipboard;

ShowMessage(Edit.Text); {vypíše '12389-4567'}


Metoda Pause

procedure Pause;

Procedura Pause pozastaví přehrávání (záznam). Při následujícím volání procedury se zastavení odblokuje. Procedura slouží proto jako přepínač zastavení a pokračování. Pokud má být provedeno vždy pouze opravdu pozastavení, je možné použít metodu PauseOnly.


Metoda PauseOnly

procedure PauseOnly;

Procedura PauseOnly pozastaví přehrávání (záznam). Pozastavení záznamu je na rozdíl od metody Pause vždy platné bez ohledu na to, zda již je pozastavení provedeno. Pokračování v záznamu se provede voláním procedury Resume.


Metoda Picture.LoadFromFile

procedure Picture.LoadFromFile(S: string);

Procedura načte do objektu Image bitmapu pro zobrazení.

Příklad:

Image.Picture.LoadFromFile('obrazek.bmp');

Viz také: Picture.SaveToFile


Metoda Picture.SaveToFile

procedure Picture.SaveToFile(S: string);

Procedura uloží do souboru na disk bitmapu z objektu Image.

Příklad:

Image.Picture.SaveToFile('obrazel.bmp');

Viz také: Picture.LoadFromFile


Metoda Play

komponenta MediaPlayer

komponenta Animate


Metoda Play

procedure Play;

Procedura Play povede spuštění zadaného multimediálního záznamu. Nahrazuje tím stisk tlačítka Play na ovladači MediaPlayer.


Metoda Play

procedure Play(FromFrame, ToFrame, Count: Integer);

Procedura Play spouští animaci objektu Animate se zadanými parametry. FromFrame zadává počáteční snímek animace, ToFrame zadává poslední snímek animace. Parametr Count zadává počet opakování animace. Zadá-li se nulová hodnota, bude animace opakována stále dokola.


Metoda PopUp

procedure Popup(X, Y: Integer);

Procedura Popup vyvolá a zobrazí na souřadnicích zadanými parametry Popup menu. Lze použít například pokud je vlastností AutoPopup zakázáno automatické vyvolání menu.

Příklad:

PopupMenu1.Popup(10, 100);


Metoda Previous

procedure Previous;

Procedura Previous povede posun na předcházející stopu multimediálního zařízení.  Nahrazuje tak stisk tlačítka Prev na ovladači MediaPlayer.


Metoda Print

Metoda tiskne obsah objektu na tiskárně.

komponenta Form

komponenta RichEdit


Metoda Print

procedure Print;

Provede se tisk aktivního formuláře na tiskárně.


Metoda Print

procedure Print(Caption: String);

Provede se tisk textu zadaného v objektu RichEdit. Text se bude tisknout dle zadaného nastavení fontů, barev a podobně. Parametr Caption je použit v tiskovém manažeru a udává název tisknutého dokumentu.


Metoda ProcessMessage

procedure ProcessMessage;

Metoda ProcessMessage slouží k přepínání procesů v multitaskingu Windows. Je vhodné použít u déletrvajících akcí, které neumožňují automatické přepínání procesů. Voláním metody ProcessMessage bude provedeno přepnutí na další procesy.  Je vhodné používat například v cyklu.


Metoda Reset

procedure Reset;

Procedura Reset inicializuje vlastnosti StartFrame, StopFrame u objektu Animate a nastavuje první snímek animace. Používá se pro nastavení do standardního výchozího stavu. Při počátečním nastavení se uzavírá a znovuotevírá animace spolu s generováním příslušných událostí. Animace je po restartu nastavena do neaktivního režimu (vlastnost Active nastavena na hodnotu False).


Metoda Resume

procedure Resume;

Procedura Resume pokračuje v přehrávání/záznamu momentálně zastaveného multimediálního zařízení.


Metoda Rewind

procedure Rewind;

Procedura Rewind nastavuje pozici multimédia na jeho počátek.


Metoda Save

procedure Save;

Procedura Save uloží nahrané médium objektu MediaPlayer do souboru zadaného ve vlastnosti FileName.


Metoda SaveToFile

procedure SaveToFile(S: string);

Procedura SaveToFile uloží do textového souboru seznam řetězců z proměnné typu StrArray.

Příklad:

if SaveDialog.Execute then

   Memo.Lines.SaveToFile(SaveDialog.FileName);

Viz také: StrArray.LoadFromFile


Metoda Seek

Komponenta Animate

Komponenta DataTable


Metoda Seek

procedure Seek(Frame: Integer);

Procedura Seek zobrazuje zadaný snímek animace objektu Animate. Animace je nastavena do neaktivního režimu (vlastnost Active nastavena na hodnotu False).


Metoda SelectAll

procedure SelectAll;

Procedura SelectAll označí celý text jako vybraný pro následnou akci (výmaz, kopírování). Pokud požadujete použít označit pouze část textu, použijte vlastnosti SelStart a SelLength.

Viz Také:

ClearSelection

Příklad:

Edit.Text     := '123456789-'

Edit.SelectAll;

Edit.CopyToClipboard;

Edit.SelStart := Length(Edit.Text);

Edit.PasteFromClipboard;

ShowMessage(Edit.Text); {vypíše '123456789-123456789-'}


Metoda SelectNextPage

procedure SelectNextPage(Forward: Boolean);

Procedura SelectNextPage vyhledá a zobrazí následující stranu zobrazovaných záložek objektu PageControl. Směr vyhledávání zadává parametr Forward. Pokud je uvedena hodnota True, provádí se vyhledávání dopředu, při zadání False se vyhledává směrem zpět. Vyhledávání je cyklické, to znamená, že při hledání vpřed se po nalezení poslední záložky pokračuje od počátku první záložkou. Obdobné platí i pro vyhledávání směrem vzad.


Metoda SetFocus

procedure SetFocus;

Procedura SetFocus nastaví zaměření pro volaný objekt. Zaměření objektu znamená, že bude nastaven pro vstup. Zaměření objektu lze na formuláři změnit uživatelsky stiskem klávesy Tab.

Příklad:

{provede zaměření objektu Memo}

Memo.SetFocus;


Metoda SetParams

procedure SetParams(Postion, Min, Max: integer);

Procedura SetParams nastaví u objektu ScrollBar najednou parametry Min, Max i Position. Vhodné zejména při počáteční inicializaci nastavení. Samostatně můžete nastavit hodnoty pomocí vlastností Min, Max a Position. Pokud bude zadán parametr Min s větší hodnotou než Max, nebude provedena žádná akce.

Příklad:

ScrollBar.SetParams(30, 0, 100);


Metoda SetTick

procedure SetTick(Value: Integer);

Procedura SetTick přidává novou značku označující pozici ukazatele TrackBar. Pro zobrazení značek je nutné mít nastavenu vlastnost TickStyle na hodnotu tsManual.


Metoda StartRecording

procedure StartRecording;

Procedura StartRecording zahájí záznam z definovaného multimediálního zařízení. Je možné použít pouze pokud to zadané zařízení umožňuje.


Metoda Step

procedure Step;

Procedura Step povede posun v záznamu směrem dopředu. Nahrazuje tak stisk tlačítka Step na ovladači MediaPlayer.


Metoda StepBy

procedure StepBy(Delta: Integer);

Procedura StepBy zvyšuje pozici ukazatele časového průběhu akce o zadanou hodnotu. Lze použít v případě, že znáte přímo velikost přírůstku změny a nemusíte proto vypočítávat novou pozici.

Viz také: StepIt


Metoda StepIt

procedure StepIt;

Procedura StepIt zvyšuje pozici ukazatele časového průběhu akce o hodnotu zadanou ve vlastnosti Step. Lze použít například pokud chceme zaznamenat časový průběh akce bez ohledu na předpokládanou dobu jejího ukončení. Pokud  je dosaženo konce ukazatele, je obnoveno zobrazování průběhu akce znovu od počátku ukazatele. Lze tak zobrazovat probíhající akci bez znalosti doby jejího ukončení.

Viz také: StepBy


Metoda Stop

komponenta Animate

komponenta MediaPlayer


Metoda Stop

procedure Stop;

Procedura Stop ukončuje zobrazování animace objektu Animate. Animace je nastavena do neaktivního režimu (vlastnost Active nastavena na hodnotu False), zobrazen je první snímek animace a je vyvolána událost OnStop.


Metoda Stop

procedure Stop;

Procedura Stop ukončuje přehrávání, případně záznam multimédia. Nahrazuje tak stisk tlačítka Step na ovladači MediaPlayer.


Metoda Update

procedure Update;

Procedura Update aktualizuje seznam souborů u objektu FileListBox, případně seznam adresářů u objektu DirectoryListBox. Používá se pro obnovu seznamu, který byl změněn například výmazem souboru, případně změnou adresáře.


Metoda ValidateEdit

function ValidateEdit(Msg: string): Boolean;

Funkce ValidateEdit kontroluje, zda text odpovídá masce zadané ve vlastnosti EditMask. Pokud ne, je vrácena hodnota False a současně je vypsáno systémové hlášení s textem uvedeným v parametru Msg. Pokud se uvede místo parametru Msg prázdný řetězec, nebude vypsáno žádné hlášení.


Událost OnActivate

procedure OnActiavte(Sender: TObject);

Událost OnActivate se vyskytuje v okamžiku aktivace formuláře, když se stává aktivní.


Událost OnChange

Událost se vyskytuje v okamžiku změny obsahu objektu.

komponenta ComboBox

komponenty DataEdit, DataMemo

komponenta DateTimePicker

komponenty Edit, Memo, RichEdit

komponenta PageControl

komponenta TabControl

komponenta ScrollBar, TrackBar


Událost OnChange

procedure OnChange(Sender: TObject);

Událost OnChange nastane v okamžiku změny obsahu editačního okna u objektu ComboBox. Informaci o tom, která položka seznamu je aktivní obsahuje vlastnost ItemIndex. Obsah editačního okna obsahuje vlastnost Text.

Příklad 1:

{při změně stavu vypíše text zobrazený objektem}

procedure TForm.ComboBoxChange(Sender: TObject);

begin

   ShowMessage(ComboBox.Text);

end;

Příklad 2:

{při změně stavu vypíše aktuální pořadové číslo seznamu}

procedure TForm.ComboBoxChange(Sender: TObject);

begin

   ShowMessage(ComboBox.ItemIndex);

end;


Událost OnChange

procedure OnChange(Sender: TObject);

Událost OnChange nastane v okamžiku změny obsahu textu u objektu. Uvedená situace může nastat ve dvou případech. Buď je uživatelem změněn text z klávesnice, avšak také v případě změny textu při přechodu na nový záznam databáze. Pokud proto potřebuje ošetřit uživatelskou změnu z klávesnice, použijte například událost OnKeyPress.


Událost OnChange

procedure OnChange(Sender: TObject);

Událost OnChange nastane v okamžiku změny data, případně času podle nastavení vlastnosti Kind. Událost je možné použít například pro aktualizaci údajů v dalších objektech umístěných na formuláři. Dále uvedený příklad aktualizuje datum v databázi podle změny nastavení v objektu DateTimePicker.

Příklad 1:

procedure TForm.DateTimePickerChange(Sender: TObject);

begin

   if DataTable.State = dsBrowse then

      DataTable.WriteDat('DATUM',DateToStr(DateTimePicker.Date));

end;


Událost OnChange

procedure OnChange(Sender: TObject);

Událost OnChange nastane v okamžiku změny obsahu editovaného textu. Je možné využít například pro kontrolu délky zapsaného textu.

Příklad:

Pokud je zadána omezená délka možnosti zápisu do objektu typu Memo, bude se při každé změně textu zobrazovat možný limit nově zapsaných znaků. Podobným způsobem je možné upravit událost tak, aby zobrazovala počet znaků, které text obsahuje.

procedure TForm.MemoChange(Sender: TObject);

begin

   if Memo.MaxLength > 0 then

      Label1.Caption:= Memo.MaxLength - Length(Memo.Text);

end;


Událost OnChange

procedure OnChange(Sender: TObject);

Událost OnChange nastane v okamžiku změny záložky objektu PageControl. Informaci o tom, která záložka je aktivní obsahuje vlastnost ActivePage. Událost lze využít například pro aktualizaci údajů na zobrazované stránce.


Událost OnChange

procedure OnChange(Sender: TObject);

Událost OnChange nastane v okamžiku změny záložky objektu TabControl. Informaci o tom, která záložka je aktivní obsahuje vlastnost TabIndex. Událost lze využít například pro aktualizaci údajů na zobrazované stránce.


Událost OnChange

procedure OnChange(Sender: TObject);

Událost OnChange nastane u objektů ScrollBox a TrackBar v okamžiku změny pozice přetáčecího pruhu. Informaci o hodnotě nastavení lze zjistit čtením vlastnosti Position.

Příklad:

procedure TForm.ScrollBarChange(Sender: TObject);

begin

   Panel.Width := ScrollBar.Position;

end;


Událost OnClick

procedure OnClick(Sender: TObject);

Událost OnClick se vyskytuje v okamžiku kliknutí levým tlačítkem myši nad objektem. Událost se používá pro spuštění akce, která reaguje na uživatelský povel k akci. Mimo kliknutí levým tlačítkem myši je událost OnClick aktivována i v následujících případech:

- uživatel stiskne klávesu mezerník, pokud je vybraný objekt button nebo CheckBox

- uživatel stiskne klávesu Enter, pokud je vybrán objekt, který je uveden ve vlastnosti Default uvedenu hodnotu True

- uživatel stiskne klávesu Esc, pokud je vybrán objekt, který je uveden ve vlastnosti Cancel uvedenu hodnotu True

- uživatel stiskne klávesu Alt + akční klávesu uvedenou podtrženým písmenem na tlačítku. Například pokud uvedete u vlastnosti tlačítka Caption text, ve kterém bude písmeno & následované běžným znakem, zobrazí se tento znak na tlačítku podtrženě. Například Button.Caption:='&Tisk'. Po spuštění aplikace a stisku klávesy Alt+T se vyvolá událost OnClick uvedeného objektu.

- u objektu RadioButton je nastavena hodnota True

- u objektu CheckBox je provedena změna hodnoty

Příklad:

procedure TForm.FormClick(Sender: TObject);

begin

   ShowMessage('Kliknul jste na formulář');

end;


Událost OnClickCheck

procedure OnClickCheck(Sender: TObject);

Událost OnClickCheck nastane v okamžiku změny nastavení zaškrtávacího tlačítka seznamu CheckListBox. Informaci o tom, která položka seznamu je aktivní obsahuje vlastnost ItemIndex. Stav zaškrtávacího boxu zjistíte ve vlastnosti Checked, případně State.

Příklad 1:

{při změně stavu vypíše obsah položky seznamu}

procedure TForm.CheckListBoxClickCheck(Sender: TObject);

begin

  ShowMessage(CheckListBox.Items[CheckListBox.ItemIndex]);

end;

Příklad 2:

{při změně stavu na hodnotu True vypíše obsah položky seznamu}

procedure TForm.CheckListBoxClickCheck(Sender: TObject);

begin

  if CheckListBox.Checked[CheckListBox.ItemIndex]) then

     ShowMessage(CheckListBox.Items[CheckListBox.ItemIndex]);

end;


Událost OnClose

Událost OnClose se vyskytuje v okamžiku uzavření objektu.

komponenta Animate

komponenta Form

komponenta pro Dialogy


Událost OnClose

procedure OnClose(Sender: TObject);

Událost OnClose se vyskytuje v okamžiku uzavírání animace. Například při zadání nové animace ve vlastnosti CommonAVI, případně jménem souboru ve vlastnosti Filename.


Událost OnClose

procedure OnClose(Sender: TObject);

Událost OnClose se vyskytuje v okamžiku uzavření dialogu.


Událost OnClose

procedure OnClose(Sender: TObject; var Action: TCloseAction);

Událost OnClose se používá, pokud požadujete provést některé akce v okamžiku uzavírání formuláře. Je možné provést například uložení editovaných hodnot do databáze a podobně.

Parametr Action obslužné události je možné použít pro zadání způsobu uzavření formuláře. Pokud ponecháte parametr beze změny, bude formulář uzavřen. Nastavením na jinou hodnotu máte možnost provést změnu uzavření:

caNone	- formulář nebude uzavřen

caFree	- formulář je uzavřen, uvolněna veškerá paměť

Příklad:

V okamžiku pokusu o uzavření formuláře se zobrazí dialogové okno s kontrolním dotazem na uzavření formuláře. Pokud odpoví uživatel kliknutím na tlačítko Ano, bude formulář uzavřen. Jinak zůstane formulář aktivní.

procedure TForm.FormClose(Sender: TObject; var Action: TCloseAction);

begin

   if MessageDlg('Uzavřít formulář ?',mtConfirmation,

      [mbYes, mbNo], 0) = mrYes

   then Action := caFree

   else Action := caNone;

end;


Událost OnCloseUp

procedure OnCloseUp(Sender: TObject);

Událost OnCloseUp se vyskytuje v okamžiku uzavření kalendáře po výběru data. Událost je možné použít pro převod vybraného data do dalších objektů. Dále uvedený příklad aktualizuje datum v databázi podle změny nastavení v objektu DateTimePicker.

Příklad:

procedure TForm.DateTimePickerCloseUp(Sender: TObject);

begin

   if DataTable.State = dsBrowse then

      DataTable.WriteDat('DATUM',DateToStr(DateTimePicker.Date));

end;


Událost OnColEnter

procedure OnColEnter(Sender: TObject);

Událost OnColEnter se vyskytne v okamžiku, kdy se vstoupí do nového sloupce datové mřížky objektu DataGrid.

Viz také: OnColExit


Událost OnColExit

procedure OnColExit(Sender: TObject);

Událost OnColExit se vyskytne v okamžiku, kdy se opouští sloupec datové mřížky objektu DataGrid.

Viz také: OnColEnter


Událost OnCreate

procedure OnCreate(Sender: TObject);

Událost OnCreate se vyskytuje v okamžiku vytváření formuláře. To je možné využít například k nastavení počátečních hodnot proměnných, otevření datových souborů a podobně.


Událost OnDataChange

procedure OnDataChange(Sender: TObject; Field: TField);

Událost OnDataChange se vyskytne při každé změně v databázi. To znamená nejen při změně dat, ale také při změně pozice databázového ukazatele.  To je výhodné použít pro akce spojené vždy s aktuálním záznamem. Při změně záznamu lze například vyhledat a zobrazit z další databáze podrobnější informace apod.

UPOZORNĚNÍ:

Pokud je umožněna editace databáze, nastává událost při každé změně v databázi. Pokud proto využíváte událost OnDataChange pro zobrazování dat, jsou data po dobu editace v nestabilním stavu. V takovém případě je nutné testovat stav vlastnosti DataTable.State, která udává stav databáze. Viz dále uvedený příklad aktualizace data v objektu DateTimePicker.

Příklad 1:

{zobrazuje při každé změně v databázi aktuální pozici}

procedure TForm.DataSourceDataChange(Sender: TObject; Field: TField);

begin

   Edit.Text:= IntToStr(DataTable.Recno)+'/'

              +IntToStr(DataTable.RecCount);

end;

Příklad 2:

Zobrazí při změně pozice v databázi datum v objektu DateTimePicker. Pokud je databázi možné editovat, je nutné použít testování stavu databáze, protože v okamžiku editace mohou být data v nestabilním stavu, nevyhovující požadované akci s daty.

procedure TForm.DataSourceDataChange(Sender: TObject; Field: TField);

begin

   if DataTable.State = dsBrowse then

      DateTimePicker.Date:=StrToDate(DataTable.ReadDat('DATUM'));

end;


Událost OnDblClick

procedure OnDblClick(Sender: TObject);

Událost OnDblClick se vyskytne, pokud uživatel klikne dvakrát za sebou na ploše objektu.


Událost OnDeactivate

procedure OnDeactivate(Sender: TObject);

Událost OnDeactivate se vyskytuje v okamžiku předání řízení jinému formuláři. Je vhodné použít například pro uložení editovaných hodnot databáze a podobně.


Událost OnDestroy

procedure OnDestroy(Sender: TObject);

Událost OnDestroy se vyskytuje v okamžiku rušení objektu z operační paměti. Objekt již dále nebude přístupný. Je možné využít například pro uložení hodnot, které objekt obsahuje.


Událost OnEnter

procedure OnEnter(Sender: TObject);

Událost OnEnter se vyskytne v okamžiku, kdy získává objekt zaměření. To znamená, že je připraven pro vstup dat, případně spuštění definované akce. Pokud je objekt určen k editaci, je možné jej editovat, tlačítka Button jsou orámovaná zevnitř čárkovanou čarou. Změnu zaměření máte možnost provést klávesou Tab (nebo zpět Shift+Tab), případně nastavením vlastnosti ActiveControl na formuláři.

Událost můžete využít například pro provedení akcí spojených s objektem a nutných pro editaci a počáteční kontrolu dat.

Viz také: OnExit

Příklad:

Editační pole je vždy pouze v okamžiku editace zbarveno červeně. Po přepnutí na jiný objekt je nastavena standardní šedá barva.

procedure TForm.EditEnter(Sender: TObject);

begin

   Edit.Color := clRed;

end;

procedure TForm.EditExit(Sender: TObject);

begin

   Edit.Color := clWhite;

end;


Událost OnExit

procedure OnExit(Sender: TObject);

Událost OnExit se vyskytne v okamžiku, kdy objekt ztrácí zaměření. Změnu zaměření máte možnost provést klávesou Tab (nebo zpět Shift+Tab), případně nastavením vlastnosti ActiveControl na formuláři.

Událost můžete využít například pro provedení akcí spojených s objektem a nutných pro editaci a počáteční kontrolu dat.

Viz také: OnEnter

Příklad:

Editační pole je vždy pouze v okamžiku editace zbarveno červeně. Po přepnutí na jiný objekt je nastavena standardní šedá barva.

procedure TFormEdit.Enter(Sender: TObject);

begin

   Edit.Color := clRed;

end;

procedure TForm.EditExit(Sender: TObject);

begin

   Edit.Color := clWhite;

end;


Událost OnFind

procedure OnFind(Sender: TObject);

Událost nastane v okamžiku pokynu uživatele k hledání textu. Událost sama v textu nic nehledá, požadované akce je nutné v aplikaci naprogramovat. Ke zjištění nastavení podmínek hledání uživatelem se použije čtení hodnot vlastnosti objektu.

Pro hledání textu v objektu typu Memo lze použít hledání dle dále uvedeného příkladu. Při hledání textu v objektu typu RichEdit je možné použít jeho metodu FindText.

Příklad:

Vyhledává se v textu, který je uložen v objektu typu Memo. Protože funkce Pos vyhledává vždy od počátku řetězce a pouze první výskyt, hledá se v pracovním řetězci, který je vždy naplněn textem směrem od pozice kurzoru až na konec textu. Uvedený příklad nebere ohled na nastavení velkých a malých písmen, hledání směrem vpřed a podobně.

procedure TForm.FindDialogFind(Sender: TObject);

var Find : Integer;

    Temp : String;

    Delta: Integer;

begin

   Delta:= Memo.SelStart+Length(Memo.SelText)+1;

   Temp := Copy(Memo.Text, Delta, Length(Memo.Text)-Delta);

   Find:=Pos(FindDialog.FindText, Temp);

   if Find=0 then ShowMessage('Nebylo nenalezeno')

   else begin

      Memo.SelStart := Delta+Find-2;

      Memo.SelLength:= Length(FindDialog.FindText);

   end;

   Memo.SetFocus; {zvýrazní se nalezený text}

end;


Událost OnFolderChange

procedure OnFolderChange(Sender: TObject);

Událost OnFolderChange se vyskytuje v okamžiku nastavení nebo změny adresáře. Ve vlastnosti FileName je přitom nastaven vybraný adresář.


Událost OnHide

procedure OnHide(Sender: TObject);

Událost OnHide je vyvolána, pokud je skryt formulář, to je když je vlastnost Form.Visible nastavena na hodnotu False. Vzhledem k tomu, že formulář nebude viditelný, nebude možné zadávat formuláři jakékoliv uživatelské akce. Doporučuje se proto provádět skrytí formuláře pouze zcela vyjímečně.


Událost OnKeyDown

procedure OnKeyDown(Sender: TObject;

          var Key: Word; Shift: TShiftState);

Událost je vyvolána v okamžiku stisknutí libovolné klávesy, pokud je objekt zaměřen. Používá se například pro zpracování závislé na stisknuté klávese. Událost předává k použití kód znaku stisknuté klávesy a informaci o tom, zda byla stisknuta současně jedna z kláves Shift, Alt nebo Ctrl.

Parametr Key předávaný událostí je typu Integer, obsahuje tedy číselný kód stisknuté klávesy. Událost dokáže proto reagovat i na stisk systémových kláves, to je například funkční klávesy F1, šipky a podobně.

Parametr Shift indikuje, zda byla stisknuta jedna z kláves Ctrl, Alt nebo Shift. Pro zjištění se používá následujících konstant:

ssAlt   	- byla stisknuta klávesa Alt

ssCtrl  	- byla stisknuta klávesa Ctrl

ssShift	- byla stisknuta klávesa Shift

UPOZORNĚNÍ:

Nelze kontrolovat současné použití kombinace kláves Ctrl, Alt a Shift.

Viz také:

OnKeyPress, OnKeyUp

Příklad 1:

{pokud bude stisknuta šipka vpravo,

posune formulář o deset bodů doprava}

procedure TFORM.Memo1KeyDown(Sender: TObject;

          var Key: Word; Shift: TShiftState);

begin

   if key=39 then Form.Left:= Form.Left+10;

end;

Příklad 2:

procedure TForm.Memo1KeyDown(Sender: TObject;

          var Key: Word; Shift: TShiftState);

begin

   if (Key=65) and (Shift=ssCtrl) then

      ShowMessage('Byla stisknuta klávesa Ctrl+A');

end;


Událost OnKeyPress

procedure OnKeyPress(Sender: TObject; Key: char);

Událost je vyvolána v okamžiku stisknutí klávesy, pokud je objekt zaměřen. Používá se například na zpracování závislé na stisknuté klávese. Událost předává k použití znak stisknutý na klávesnici pro použití v ošetření události. Znak je možné ve zpracování události změnit a tím provádět například konverzi znaků.

Parametr Key předávaný událostí je typu Char, obsahuje tedy znak stisknuté klávesy. Událost nereaguje na stisk systémových kláves, to je například funkční klávesy F1, šipky a podobně. Pokud potřebujete ošetřit stisk těchto kláves, použijte zpracování události OnKeyDown.

Viz také: OnKeyUp

Příklad 1:

{pokud zadán velký znak, vypíše hlášení}

procedure TFORM.Memo1KeyPress(Sender: TObject; var Key: char);

begin

   if (ord(key)>=65) and (ord(key)<=90 then

   ShowMessage('Stisknuta klávesa: '+Key);

end;

Příklad 2:

{pokud je zadán jiný znak než velké písmeno,

provede se vynulování znaku}

procedure TForm.Memo1KeyPress(Sender: TObject; var Key: char);

begin

   if (ord(key)<65) or (ord(key)>90) then Key:='';

end;


Událost OnKeyUp

procedure OnKeyUp(Sender: TObject;

          var Key: Word; Shift: TShiftState);

Událost je vyvolána v okamžiku uvolnění stisku libovolné klávesy, pokud je objekt zaměřen. Používá se například na zpracování závislé na stisknuté klávese. Událost předává k použití kód znaku uvolňované klávesy a informaci o tom, zda byla stisknuta současně jedna z kláves Shift, Alt nebo Ctrl.

Parametr Key předávaný událostí je typu Integer, obsahuje tedy číselný kód klávesy. Událost dokáže proto reagovat i na použití systémových kláves, to je například funkční klávesy F1, šipky a podobně.

Parametr Shift indikuje, zda byla současně stisknuta jedna z kláves Ctrl, Alt nebo Shift. Pro zjištění se používá následujících konstant:

ssAlt   	- byla stisknuta klávesa Alt

ssCtrl  	- byla stisknuta klávesa Ctrl

ssShift	- byla stisknuta klávesa Shift

UPOZORNĚNÍ:

Nelze kontrolovat současné použití kombinace kláves Ctrl, Alt a Shift.

Viz také:

OnKeyPress, OnKeyDown

Příklad:

{pokud bude stisknuta šipka vpravo,

posune formulář o deset bodů doprava}

procedure TForm.Memo1KeyUp(Sender: TObject;

          var Key: Word; Shift: TShiftState);

begin

   if key=39 then Form.Left:= Form.Left+10;

end;


Událost OnMouseDown

procedure OnMouseDown(Sender: TObject; Button: TMouseButton;

          Shift: TShiftState; x, y: Integer);

Událost OnMouseDown je volána v okamžiku přesunu ukazatele myši přes objekt. Událost předává ve svých parametrech informaci o druhu stisknutého tlačítka myši a souřadnice ukazatele myši nad objektem.

Parametr Button udává kód stisknutého tlačítka myši s následujícím významem:

mbLeft 	- levé tlačítko myši

mbRight 	- pravé tlačítko myši

mbMiddle 	- střední tlačítko myši (na některých počítačích)

Parametr Shift indikuje stisknutou klávesu s následujícím významem:

ssAlt   	- byla stisknuta klávesa Alt

ssCtrl  	- byla stisknuta klávesa Ctrl

ssShift 	- byla stisknuta klávesa Shift

Parametry X a Y udávají souřadnice ukazatele myši nad objektem.

Viz také:

OnMouseMove, OnMouseUp

Příklad:

{pokud bude stisknuta klávesa Alt se současným

stiskem levého tlačítka myši nad formulářem,

budou  vypsány souřadnice ukazatele myši}

procedure TForm.FormMouseDown(Sender: TObject;

                Button: TMouseButton;

                Shift: TShiftState; x, y: Integer);

begin

   if (button=mbLeft) and (shift=ssAlt)  then

      ShowMessage('X:='+IntToStr(x)+', Y:='+IntToStr(y));

end;


Událost OnMouseMove

procedure OnMouseMove(Sender: TObject;

          Shift: TShiftState; x, y: Integer);

Událost OnMouseMove je volána v okamžiku přesunu ukazatele myši nad objektem bez ohledu na to, zda je stisknuto tlačítko myši. Událost předává ve svých parametrech informaci o stisku klávesy Ctrl, Alt nebo Shift a souřadnice myši nad objektem, nad kterými se ukazatel myši nachází.

Parametr Shift indikuje stisknutou klávesu s následujícím významem:

ssAlt   - byla stisknuta klávesa Alt

ssCtrl  - byla stisknuta klávesa Ctrl

ssShift - byla stisknuta klávesa Shift

ssLeft  - bylo stisknuté levé tlačítko myši

Parametry X a Y udávají souřadnice ukazatele myši nad objektem.

Viz také: OnMouseDown, OnMouseUp

Příklad:

{pokud bude nad formulářem stisknuto levé tlačítko

myši, budou  vypsány souřadnice ukazatele myši}

procedure TForm.FormMouseMove(Sender: TObject;

                Shift: TShiftState; x, y: Integer);

begin

   if shift=ssLeft  then

      Label1.Caption:=IntToStr(x)+'/'+IntToStr(y);

end;


Událost OnMouseUp

procedure OnMouseUp(Sender: TObject; Button: TMouseButton;

          Shift: TShiftState; x, y: Integer);

Událost OnMouseUp je volána v okamžiku uvolnění tlačítka myši, které bylo stisknuto nad objektem. Událost předává ve svých parametrech informaci o druhu stisknutého tlačítka myši a souřadnice ukazatele myši.

Parametr Button udává kód stisknutého tlačítka myši s následujícím významem:

mbLeft 	- levé tlačítko myši

mbRight 	- pravé tlačítko myši

mbMiddle	- střední tlačítko myši (na některých počítačích)

Parametr Shift indikuje stisknutou klávesu s následujícím významem:

ssAlt   	- byla stisknuta klávesa Alt

ssCtrl  	- byla stisknuta klávesa Ctrl

ssShift	- byla stisknuta klávesa Shift

Parametry X a Y udávají souřadnice ukazatele myši nad objektem.

Viz také:

OnMouseDown, OnMouseMove

Příklad:

{pokud bude stisknuta klávesa Alt se současným

uvolněním levého tlačítka myši nad formulářem,

budou vypsány souřadnice ukazatele myši}

procedure TForm.FormMouseUp(Sender: TObject;

                Button: TMouseButton;

                Shift: TShiftState; x, y: Integer);

begin

   if (button=mbLeft) and (shift=ssAlt)  then

      ShowMessage('X:='+IntToStr(x)+', Y:='+IntToStr(y));

end;


Událost OnNotify

procedure OnNotify(Sender: TObject);

Událost OnNotify je provedena po dokončení zadané metody objektu MediaPlayer. Ošetření události má smysl zejména v případě, že daná funkce řízení média potrvá delší dobu a aplikace bude provádět mezitím souběžně další akce.


Událost OnOpen

procedure OnOpen(Sender: TObject);

Událost OnOpen se vyskytuje v okamžiku zadání nové animace. To znamená při zadání animace ve vlastnosti CommonAVI, případně jménem souboru ve vlastnosti Filename.


Událost OnPaint

procedure OnPaint(Sender: TObject);

Událost OnPaint se vyskytuje v okamžiku, kdy je nutné překreslit formulář. To je nutné například v případě že byla zvětšena jeho plocha, ne však v okamžiku změny polohy formuláře na obrazovce.


Událost OnPopup

procedure OnPopup(Sender: TObject);

Událost OnPopup se vyskytuje v okamžiku požadavku na zobrazení závěsného Popup menu ještě před jeho zobrazením. To umožní provést u jednotlivých položek menu případné změny v nastavení vlastností Checked, RadioItem a podobně ještě před zobrazením Popup menu.


Událost OnReplace

procedure OnRepace(Sender: TObject);

Událost nastane v okamžiku pokynu uživatele k nahrazení textu. Událost sama v textu nic nenahrazuje, požadované akce je nutné v aplikaci naprogramovat. Ke zjištění nastavení podmínek hledání uživatelem se použije čtení hodnot vlastnosti objektu ReplaceDialog.

Viz také: OnFind


Událost OnResize

procedure OnResize(Sender: TObject);

Událost OnResize je volána v okamžiku změny velikosti objektu, nejčastěji formuláře. Používá se například pro nové rozmístění ovládacích prvků na formuláři s ohledem na velikost formuláře.

Příklad:

Pokud je provedena taková změna formuláře, že jeho šířka je menší než 400 bodů, případně výška formuláře je menší než 300 bodů, provede se automaticky nastavení velikosti na kontrolovanou minimální velikost.

procedure TForm.FormResize(Sender: TObject);

begin

   if Form.Width  < 400 then Form.Width := 400;

   if Form.Height < 300 then Form.Height:= 300;

end;


Událost OnSelectionChange

Událost OnSelectionChange se vyskytuje se v okamžiku výběru souboru v dialogu, případně při jakékoliv změně v editovaném textu.

komponenty pro dialogy

komponenta RichEdit


Událost OnSelectionChange

procedure OnSelectionChange(Sender: TObject);

Událost OnSelectionChange se vyskytuje v okamžiku výběru souboru v dialogu. Ve vlastnosti FileName je přitom nastaven vybraný soubor pro možné další akce.

Příklad:

Při výběru souboru v dialogu zobrazuje délku vybraného souboru.

procedure TForm.OpenDialogSelectionChange(Sender: TObject);

begin

   Edit.Text := FileSize(OpenDialog.FileName);

end;


Událost OnSelectionChange

procedure OnSelectionChange(Sender: TObject);

Událost OnSelectionChange se vyskytuje v okamžiku změny pozice v textu. To znamená při jakékoliv změně při zápisu, ale také při použití kurzorových kláves nebo při kliknutí myší na text. Událost je vhodné použít například pro zobrazení stavu textu.

Příklad:

Při změně pozice textu se zobrazuje zarovnávání textu optickým stlačením tlačítka typu SpeedButton.

procedure TForm.OpenDialogSelectionChange(Sender: TObject);

begin

   if RichEdit.Paragraph.Alignment:= taLeftJustify then

      SpeedButton1.Down := True;

   if RichEdit.Paragraph.Alignment:= taCenter then

      SpeedButton2.Down := True;

   if RichEdit.Paragraph.Alignment:= taRighJustify then

      SpeedButton3.Down := True;

end;


Událost OnShow

procedure OnShow(Sender: TObject);

Událost OnShow je vyvolána, pokud je zobrazen formulář, případně dialog. Lze  zde proto zadat provedení počátečních akcí týkajících se zobrazovaného formuláře nebo dialogu.


Událost OnStart

procedure OnStart(Sender: TObject);

Událost OnStart se vyskytuje v okamžiku spuštění animace. Například po nastavení vlastnosti Active na hodnotu True. Nemá vliv na opakovanou animaci.


Událost OnStateChange

procedure OnStateChange(Sender: TObject);

Událost OnStateChange je volána vždy při změně stavu databáze. To znamená, že dokáže rozpoznat přepnutí do editačního režimu, režimu prohlížení, vložení nového záznamu a deaktivaci tabulky. Stav databáze lze zjistit testováním vlastnosti DataTable.State.


Událost OnStop

procedure OnStop(Sender: TObject);

Událost OnStop se vyskytuje v okamžiku ukončení animace. Například po nastavení vlastnosti Active na hodnotu False, případně při zadání jiné animace. Nemá vliv na opakovanou animaci.


Událost OnTimer

procedure OnTimer(Sender: TObject);

Událost  je  vyvolávána  automaticky  objektem Timer v  časových intervalech dle zadání  vlastnosti  Interval.  Zadávají  se  akce,  které se mají periodicky  opakovat. Je  vhodné,  aby  byla zadána  co nejkratší akce, protože opakované provádění by mohlo způsobit zpomalení, až zastavení chodu ostatního kódu aplikace.


Událost OnTypeChange

procedure OnTypeChange(Sender: TObject);

Událost OnTypeChange je vyvolána při změně nastavení filtru pro výběr souboru.


Událost OnUpdateData

procedure OnUpdateData(Sender: TObject);

Událost OnUpdateData je volána vždy, když je záznam po editaci aktualizován (zapisován fyzicky do databáze). Dovolí tak provést například další související akce.