Digitální učební materiál



Podobné dokumenty
Digitální učební materiál

1. Seznámení s C++ Builderem

Vysoké učení technické v Brně Fakulta elektrotechniky a komunikačních technologií

1. Seznámení s C++ Builderem

Inovace a zkvalitnění výuky prostřednictvím ICT Vytváření aplikací pro systém Windows

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Důležité: Pokud jako Caption zadáme (tj. pomlčku), je položka menu změněna na oddělovač.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Delphi popis prostředí

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

TTreeView je ten strom vlevo (vzhled se dá upravovat) a TListView je ten seznam vpravo (včetně volitelných módů zobrazení jako ikony).

Středoškolská technika Zpracování dat z lineárního lisu. Setkání a prezentace prací středoškolských studentů na ČVUT. Ondřej Maslikiewicz

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

5 Tabulky a seznamy dat Příklad 3 Excel 2010

Modelování sestav. Autodesk INVENTOR. Ing. Richard Strnka, 2012

Naučte se víc... Metodická příručka pro školy k aplikaci Microsoft Office Access 2007

Dělení a vlastnosti komponent

Obsah. Začínáme Viditelné součásti programu Simulace. WOP Menu CNC řízení. CNC Programy. Exec. Grafické okno. Strojní panel. 3D Model.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Metodický list k didaktickému materiálu

DUM 01 téma: Obecné vlastnosti tabulkového editoru, rozsah, zápis do buňky, klávesové zkratky

Druhy souborů. textové. binární. nestrukturované txt strukturované - ini, xml, csv. veřejné bmp, jpg, wav proprietární docx, cdr, psd

Aplikace Repaint Magic pro úpravu obrázků v MS Word

Manuál k aplikaci SDO PILOT v.0.2

Program pro flexibilní tvorbu evidencí. VIKLAN - Evidence. Uživatelská příručka. pro seznámení se základními možnostmi programu

LED_007.c Strana: 1/5 C:\Michal\AVR\Výukové programy\archiv\ Poslední změna: :01:48

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo didaktického materiálu

Spinelterminal. Terminálový program pro ladění aplikací s protokolem Spinel. 20. září 2005 w w w. p a p o u c h. c o m v

Stravenky Exit. 1. Spuštění modulu Stravenky Exit

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT EU-OVK-VZ-III/2-ZÁ-201

MANUÁL K OBSLUZE REDAKČNÍHO SYSTÉMU / wordpress

DUM 02 téma: Úvod do textového editoru MS Word a výběr klávesových zkratek

V této aplikaci si ukážeme jakým způsobem zobrazovat čas a datum. Pro ovládání zobrazení času a datumu se naučíme využívat nabídku.

HypEd4 Uživatelská příručka 2004 HYPEL

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT. Cyklus while, do-while, dělitelnost, Euklidův algoritmus

Tabulková data. budeme pracovat s CSV soubory položky oddělené středníkem, např.

Vývoj objektových aplikací 2

Práce se soubory. Základy programování 2 Tomáš Kühr

Popis úprav SQL verze ProBaze Majetek a Nářadí

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Podmíněné vykonávání

Rámcový manuál pro práci s programem TopoL pro Windows

Obr. 1 - Seznam smluv

Mediator motivace. FontDialog. závislosti mezi jednotlivými ovládacími prvky jsou netriviální

NOVÁ VERZE OBD A JEJÍ VYUŽÍVÁNÍ Ing. Martina Valášková

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

2 Dotazy Příklad 1 Access 2010

MQL4 COURSE. By Coders guru -5 Smyčky & Rozhodnutí Část 2

SCIA.ESA PT. Galerie výkresů

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

VYSOKÁ ŠKOLA BÁŇSKÁ ŠKOLÍCÍ STŘEDISKO STUDIUM K VÝKONU SPECIALIZAČNÍCH ČINNOSTÍ ICT KOORDINÁTORA. Závěrečná práce

Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1

5.1 Vyhledávací portál uživatelské rozhraní

Windows Movie Maker 9. Střih videa

Programovací software Oblast režimů Oblast nástrojů Složka aplikací pro různé funkce: Oblast tlačítek Tlačítko Loading (Načítání)

Analýza dat na PC I.

Projekt Atlasu znečištění ovzduší

Vyšší odborná škola a Střední škola,varnsdorf, příspěvková organizace. Šablona 13 VY 32 INOVACE

Předdefinované dialogy

Ostatní portálové aplikace

ArduinotechGSMShield knihovna

Metodický list k didaktickému materiálu

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Připojení systému A3600 k aplikaci DDS2000

Uživatelská příručka systému pro administrátory obcí a manuál pro správce portálu

Delphi nastavení formulářů

Univerzální program k výpočtu denního osvětlení dle ČSN

Digitální učební materiál

Tematická oblast: Programování 1 (VY_32_INOVACE_08_3_PR) Anotace: Využití ve výuce: Použité zdroje:

Ostatní portálové aplikace

Tematický celek 03 - Cvičné příklady

Výukový materiál vytvořen v rámci projektu EU peníze školám. "Inovace výuky" registrační číslo CZ.1.07/1.5.00/

Nové kreativní týmy v prioritách vědeckého bádání CZ.1.07/2.3.00/ Tento projekt je spolufinancován z ESF a státního rozpočtu ČR.

1. Téma 12 - Textové soubory a výjimky

Standardně máme zapnutý panel nástrojů Formátování a Standardní.

Vzdělávání v egoncentru ORP Louny

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Ostatní portálové aplikace

Objednávky OBX. Objednávkový systém určený k instalaci na PC u zákazníka pro tvorbu offline objednávek zboží

3 Formuláře a sestavy Příklad 2 Access 2010

Klíčové pojmy: Cyklus, řídící proměnná, inicializace, test podmínky, přerušení cyklu, vnořování cyklů.

ISPOP 2016 MANUÁL K VYPLNĚNÍ FORMULÁŘŮ PRO OHLAŠOVÁNÍ ÚDAJŮ PRO VODNÍ BILANCI

MS ACCESS A MS WORD V KAŽDODENNÍ PRAXI

Manuál k programu KaraokeEditor

Fiery Driver Configurator

Knihovna XmlLibEx TXV druhé vydání prosinec 2013 změny vyhrazeny

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Ukončení roku v programu SKLAD Odpadů 8

SPORTONGO UŽIVATELSKÁ PŘÍRUČKA

ÚVOD 3 SEZNÁMENÍ SE SYSTÉMEM 4

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Pokročilejší programování v MS Visual Basic 2010

Evropská obchodní akademie, Děčín I, Komenského náměstí 2, příspěvková organizace IČ tel

Přidávání animací do programů

Vstupní a vstupní proudy v C++

DELTA PANEL pro Windows

Transkript:

VY_32_INOVACE_EL_10_01 Digitální učební materiál Seznamy - použití v aplikaci (1. část) Šablona: III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT Sada: VY_32_INOVACE_EL_10 - Programování v jazyce C++ pro 4. ročník DUM: VY_32_INOVACE_EL_10_01 Anotace: Postup vytvoření aplikace na procvičení práce se seznamy, jejich použití v aplikaci a seznámení s dalšími komponentami Autor: Ing. Petr Neumann Škola: Střední průmyslová škola, Hronov, Hostovského 910 Obor: Počítačové řídicí systémy Předmět: Programování Ročník: 4. Použitá literatura: Václav Kadlec - Učíme se programovat v C++Builder a jazyce C++

VY_32_INOVACE_EL_10_01 Příprava: Seznamy slouží uživateli aplikace jako nabídka možností, ze kterých může jednu položku vybrat. Většina seznamů má položky typu strings = řetězce znaků (texty), proto u nich lze používat stejné metody jako u komponenty Memo. Seznamy umožňují položky nejen vybírat, ale také setřídit podle abecedy, editovat, přidávat a odebírat. Mezi nejčastěji používané komponenty patří: a) ListBox - jednoduchý textový seznam, nejdůležitějšími vlastnostmi jsou Items, ItemIndex a Sorted b) ComboBox - rozbalovací textový seznam c) CheckListBox - textový seznam s možností zaškrtávání položek d) ListView - prohlížeč seznamů Zadání - 1. část: Vytvořte aplikaci Seznamy1 - na formuláři jsou umístěny dva různé typy komponent pro práci se seznamy (aplikace slouží k vytváření seznamu skladeb od různých interpretů). Stisknutím jednoho tlačítka lze přidat do seznamu skladbu, druhým tlačítkem lze přidat interpreta, třetím tlačítkem lze odstranit skladbu a čtvrtým tlačítkem lze odstranit interpreta. Řešení - 1. část: Spusťte vývojové prostředí, upravte velikost formuláře a umístěte na něj komponenty. Zdrojový kód a projekt uložte. Pojmenujte všechny komponenty. Vygenerujte funkci k události OnCreate pro frmseznamy1 a zapište do ní tento text:

VY_32_INOVACE_EL_10_01 void fastcall TfrmSeznamy1::FormCreate(TObject *Sender) this->caption = "Seznamy1"; this->constraints->minheight = 284; this->constraints->minwidth = 518; lblnadpis1->caption = "Skladba :"; lblnadpis2->caption = "Interpret :"; edtpolozka->text = "Láska je láska"; btnpridat1->caption = "Přidat skladbu"; btnpridat1->width = 100; btnpridat2->caption = "Přidat interpreta"; btnpridat2->width = 100; btnodstranit1->caption = "Odstranit skladbu"; btnodstranit1->width = 100; btnodstranit2->caption = "Odstranit interpreta"; btnodstranit2->width = 100; chbradit->caption = " Řadit položky"; chbradit->checked = true; lbxseznam1->columns = 1; lbxseznam1->sorted = true; cbxseznam2->style = cssimple; cbxseznam2->height = 185; cbxseznam2->sorted = true; cbxseznam2->items->add("lucie Bílá"); cbxseznam2->items->add("karel Gott"); cbxseznam2->items->add("helena Vondráčková"); cbxseznam2->text = ""; Program uložte a přeložte. Vygenerujte funkce k událostem OClick pro btnpridat1, btnpridat2, btnodstranit1, btnodstranit2 a chbradit. Do zdrojového kódu zapište tento text: void fastcall TfrmSeznamy1::btnPridat1Click(TObject *Sender) if (edtpolozka->text == "") ShowMessage("Zadej název skladby!!!"); else if (cbxseznam2->text == "") ShowMessage("Vyber jméno interpreta!!!"); else lbxseznam1->items->add(edtpolozka->text + " - " + cbxseznam2->text); edtpolozka->clear(); edtpolozka->setfocus();

VY_32_INOVACE_EL_10_01 void fastcall TfrmSeznamy1::btnPridat2Click(TObject *Sender) if (cbxseznam2->text == "") ShowMessage("Zadej jméno interpreta!!!"); else cbxseznam2->items->add(cbxseznam2->text); cbxseznam2->text = ""; cbxseznam2->setfocus(); void fastcall TfrmSeznamy1::btnOdstranit1Click(TObject *Sender) lbxseznam1->items->delete(lbxseznam1->itemindex); void fastcall TfrmSeznamy1::btnOdstranit2Click(TObject *Sender) cbxseznam2->items->delete(cbxseznam2->itemindex); void fastcall TfrmSeznamy1::chbRaditClick(TObject *Sender) lbxseznam1->sorted = chbradit->checked; cbxseznam2->sorted = chbradit->checked; Program uložte a přeložte.

VY_32_INOVACE_EL_10_02 Digitální učební materiál Seznamy - použití v aplikaci (2. část) Šablona: III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT Sada: VY_32_INOVACE_EL_10 - Programování v jazyce C++ pro 4. ročník DUM: VY_32_INOVACE_EL_10_02 Anotace: Postup vytvoření aplikace na procvičení práce se seznamy, jejich použití v aplikaci a seznámení s dalšími komponentami Autor: Ing. Petr Neumann Škola: Střední průmyslová škola, Hronov, Hostovského 910 Obor: Počítačové řídicí systémy Předmět: Programování Ročník: 4. Použitá literatura: Václav Kadlec - Učíme se programovat v C++Builder a jazyce C++

VY_32_INOVACE_EL_10_02 Zadání - 2. část: Vytvořte aplikaci Seznamy2 - na formuláři jsou umístěny různé komponenty pro práci se seznamy (aplikace slouží k procvičení práce se seznamy). Stisknutím jednoho tlačítka lze načíst soubor zaznamy.txt, druhým tlačítkem lze záznamy rozdělit do dvou seznamů a třetím tlačítkem lze záznamy strukturovaně zobrazit.

VY_32_INOVACE_EL_10_02 Řešení - 2. část: Spusťte vývojové prostředí, upravte velikost formuláře a umístěte na něj komponenty. Zdrojový kód a projekt uložte. Pojmenujte všechny komponenty. Vygenerujte funkci k události OnCreate pro frmseznamy2 a zapište do ní tento text: void fastcall TfrmSeznamy2::FormCreate(TObject *Sender) this->caption = "Seznamy2"; this->borderstyle = bsdialog; this->position = poscreencenter; memzaznam->clear(); lbxzaznam1->columns = 1; lbxzaznam1->sorted = false; lbxzaznam2->columns = 1; lbxzaznam2->sorted = false; lvwzaznam->viewstyle = vsreport; lvwzaznam->showcolumnheaders = true; lvwzaznam->width = 244; //lvwzaznam->columns->add(); lvwzaznam->column[0]->caption = " č. :"; lvwzaznam->column[0]->width = 40; //lvwzaznam->columns->add(); lvwzaznam->column[1]->caption = "typ záznamu :"; lvwzaznam->column[1]->width = 100; //lvwzaznam->columns->add(); lvwzaznam->column[2]->caption = "obsah záznamu :"; lvwzaznam->column[2]->width = 100; btnnacti->caption = "Načti soubor do Memo"; btnrozdel->caption = "Rozděl záznamy do ListBox ů"; btnzobraz->caption = "Zobraz záznamy v ListView"; Program uložte a přeložte. Vygenerujte funkce k událostem OnClick pro btnnacti, btnrozdel a btnzobraz. Do zdrojového kódu zapište tento text: void fastcall TfrmSeznamy2::btnNactiClick(TObject *Sender) memzaznam->lines->loadfromfile("zaznamy.txt"); btnrozdel->setfocus();

VY_32_INOVACE_EL_10_02 void fastcall TfrmSeznamy2::btnRozdelClick(TObject *Sender) lbxzaznam1->clear(); lbxzaznam2->clear(); for (int i = 0; i < memzaznam->lines->count; i += 2) lbxzaznam1->items->add(memzaznam->lines->strings[i]); lbxzaznam2->items->add(memzaznam->lines->strings[i + 1]); btnzobraz->setfocus(); void fastcall TfrmSeznamy2::btnZobrazClick(TObject *Sender) lvwzaznam->clear(); for (int i = 0; i < lbxzaznam1->count; i++) lvwzaznam->items->add(); lvwzaznam->items->item[i]->caption = IntToStr(i + 1); lvwzaznam->items->item[i]->subitems->add(lbxzaznam1->items->strings[i]); lvwzaznam->items->item[i]->subitems->add(lbxzaznam2->items->strings[i]); Program uložte a přeložte.

VY_32_INOVACE_EL_10_03 Digitální učební materiál Menu (uživatelské nabídky) - použití v aplikaci Šablona: III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT Sada: VY_32_INOVACE_EL_10 - Programování v jazyce C++ pro 4. ročník DUM: VY_32_INOVACE_EL_10_03 Anotace: Postup vytvoření aplikace na procvičení práce s uživatelskými nabídkami, jejich použití v aplikaci a seznámení s dalšími komponentami Autor: Ing. Petr Neumann Škola: Střední průmyslová škola, Hronov, Hostovského 910 Obor: Počítačové řídicí systémy Předmět: Programování Ročník: 4. Použitá literatura: Václav Kadlec - Učíme se programovat v C++Builder a jazyce C++

VY_32_INOVACE_EL_10_03 Příprava: Uživatelské nabídky jsou běžnou součástí většiny aplikací. Slouží ke komunikaci uživatele s aplikací, pomocí položek nabídky sděluje uživatel aplikaci, co od ní požaduje. Položek je několik typů - příkazy, nastavení, dialogy a vnoření (submenu). Při tvorbě menu je třeba dodržovat několik zásad, např. řídit se zvyklostmi uživatele. K vytvoření menu se používá komponenta MainMenu, přes kterou spustíme MenuDesigner. Z mnoha vlastností položek zpravidla využíváme pouze Name a Caption. Zadání: Vytvořte aplikaci Menu - na formuláři jsou umístěny tři Label, tři Button a tři Panel. Pomocí položek menu lze třemi různými způsoby jednotlivé komponenty skrýt a zase ukázat. Řešení: Spusťte vývojové prostředí, upravte velikost formuláře a umístěte na něj komponenty. Zdrojový kód a projekt uložte. Pojmenujte všechny komponenty. Vygenerujte funkci k události OnCreate pro frmmenu a zapište do ní tento text:

VY_32_INOVACE_EL_10_03 void fastcall TfrmMenu::FormCreate(TObject *Sender) this->caption = "Menu"; this->constraints->minheight = 186; this->constraints->minwidth = 289; lblnadpis1->caption = "Nadpis 1"; lblnadpis2->caption = "Nadpis 2"; lblnadpis3->caption = "Nadpis 3"; btntlacitko1->caption = "Tlačítko 1"; btntlacitko2->caption = "Tlačítko 2"; btntlacitko3->caption = "Tlačítko 3"; pnlpanel1->caption = "Panel 1"; pnlpanel2->caption = "Panel 2"; pnlpanel3->caption = "Panel 3"; pmnpanel1->checked = true; pmnpanel2->checked = true; pmnpanel3->checked = true; Program uložte a přeložte. Vygenerujte funkce k událostem OnClick pro jednotlivé položky menu. Do zdrojového kódu zapište tento text: void fastcall TfrmMenu::pmnUkazN1Click(TObject *Sender) lblnadpis1->visible = true; void fastcall TfrmMenu::pmnUkazN2Click(TObject *Sender) lblnadpis2->visible = true; void fastcall TfrmMenu::pmnUkazN3Click(TObject *Sender) lblnadpis3->visible = true; void fastcall TfrmMenu::pmnSkryjN1Click(TObject *Sender) lblnadpis1->visible = false; void fastcall TfrmMenu::pmnSkryjN2Click(TObject *Sender) lblnadpis2->visible = false; void fastcall TfrmMenu::pmnSkryjN3Click(TObject *Sender) lblnadpis3->visible = false;

VY_32_INOVACE_EL_10_03 void fastcall TfrmMenu::pmnZmenaT1Click(TObject *Sender) btntlacitko1->visible =! btntlacitko1->visible; if (btntlacitko1->visible) pmnzmenat1->caption = "Skryj Tlačítko 1"; else pmnzmenat1->caption = "Ukaž Tlačítko 1"; void fastcall TfrmMenu::pmnZmenaT2Click(TObject *Sender) btntlacitko2->visible =! btntlacitko2->visible; if (btntlacitko2->visible) pmnzmenat2->caption = "Skryj Tlačítko 2"; else pmnzmenat2->caption = "Ukaž Tlačítko 2"; void fastcall TfrmMenu::pmnZmenaT3Click(TObject *Sender) btntlacitko3->visible =! btntlacitko3->visible; if (btntlacitko3->visible) pmnzmenat3->caption = "Skryj Tlačítko 3"; else pmnzmenat3->caption = "Ukaž Tlačítko 3"; void fastcall TfrmMenu::pmnPanel1Click(TObject *Sender) pnlpanel1->visible =! pnlpanel1->visible; pmnpanel1->checked =! pmnpanel1->checked; void fastcall TfrmMenu::pmnPanel2Click(TObject *Sender) pnlpanel2->visible =! pnlpanel2->visible; pmnpanel2->checked =! pmnpanel2->checked; void fastcall TfrmMenu::pmnPanel3Click(TObject *Sender) pnlpanel3->visible =! pnlpanel3->visible; pmnpanel3->checked =! pmnpanel3->checked; Program uložte a přeložte.

VY_32_INOVACE_EL_10_04 Digitální učební materiál Časovače a další komponenty - použití v aplikaci Šablona: III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT Sada: VY_32_INOVACE_EL_10 - Programování v jazyce C++ pro 4. ročník DUM: VY_32_INOVACE_EL_10_04 Anotace: Postup vytvoření aplikace na procvičení práce s časovači, tabulkami, ukazateli průběhu, jejich použití v aplikaci a seznámení s dalšími komponentami Autor: Ing. Petr Neumann Škola: Střední průmyslová škola, Hronov, Hostovského 910 Obor: Počítačové řídicí systémy Předmět: Programování Ročník: 4. Použitá literatura: Václav Kadlec - Učíme se programovat v C++Builder a jazyce C++

VY_32_INOVACE_EL_10_04 Příprava: Timer - časovač slouží k vykonání nějaké akce po uplynutí nastavené doby nebo k pravidelnému opakování nějaké akce v nastaveném intervalu, nejdůležitějšími vlastnostmi jsou Enabled a Interval. Další použité komponenty: StringGrid - mřížka (tabulka) s texty, nejdůležitějšími vlastnostmi jsou Cells = buňky (jedná se o dvourozměrné pole), Cols (columns) = sloupce a Rows = řádky CGauge - ukazatel průběhu se zobrazením procent, nejdůležitějšími vlastnostmi jsou MinValue, MaxValue a Progress ProgressBar - ukazatel průběhu (jiná varianta), nejdůležitějšími vlastnostmi jsou Min, Max a Position Zadání: Vytvořte aplikaci Časovače - na formuláři jsou umístěna čtyři tlačítka, která spouští čtyři časovače. Každý časovač ovládá jinou akci - blikající tabulka, mizející nápis, hodiny a rostoucí průběhy.

VY_32_INOVACE_EL_10_04 Řešení: Spusťte vývojové prostředí, upravte velikost formuláře a umístěte na něj komponenty. Zdrojový kód a projekt uložte. Pojmenujte všechny komponenty. Vygenerujte funkci k události OnCreate pro frmcasovace a zapište do ní tento text: void fastcall TfrmCasovace::FormCreate(TObject *Sender) this->caption = " Časovače"; this->constraints->minheight = 276; this->constraints->minwidth = 680; btnmrizka->caption = "Mřížka"; btnprekvapeni->caption = "Překvapení"; btnhodiny->caption = "Hodiny"; btnprubeh->caption = "Průběh"; tmrmrizka->enabled = false; tmrmrizka->interval = 400; tmrprekvapeni->enabled = false; tmrprekvapeni->interval = 3000; tmrhodiny->enabled = false; tmrhodiny->interval = 1000; tmrprubeh->enabled = false; tmrprubeh->interval = 100; sgrmrizka->colcount = 3; sgrmrizka->rowcount = 6; sgrmrizka->fixedcols = 0; sgrmrizka->fixedrows = 3; sgrmrizka->fixedcolor = clyellow; lblprekvapeni->caption = "Vážený programátore, čtete mne rychle, protože za 3 sekundy zase zmizím, Váš Label"; lblprekvapeni->visible = false; pnlhodiny->caption = "Reálný čas"; pnlhodiny->font->color = clred; pnlhodiny->font->size = 24; cggprubeh->backcolor = clbtnface; cggprubeh->forecolor = cllime; Program uložte a přeložte. Vygenerujte funkce k událostem OnClick pro btnmrizka, btnpekvapeni, btnhodiny, btnprubeh a OnTimer pro tmrmrizka, tmrpekvapeni, tmrhodiny, tmrprubeh. Do zdrojového kódu zapište tento text: void fastcall TfrmCasovace::btnMrizkaClick(TObject *Sender) tmrmrizka->enabled = true; for (int i = 0; i < sgrmrizka->colcount; i++) for (int j = 0; j < sgrmrizka->rowcount; j++) sgrmrizka->cells[i][j] = "s." + IntToStr(i) + ", ř." + IntToStr(j); btnprekvapeni->setfocus();

VY_32_INOVACE_EL_10_04 void fastcall TfrmCasovace::tmrMrizkaTimer(TObject *Sender) if (sgrmrizka->fixedcolor == clyellow) sgrmrizka->fixedcolor = clwindow; else sgrmrizka->fixedcolor = clyellow; void fastcall TfrmCasovace::btnPrekvapeniClick(TObject *Sender) tmrprekvapeni->enabled = true; lblprekvapeni->visible = true; btnhodiny->setfocus(); void fastcall TfrmCasovace::tmrPrekvapeniTimer(TObject *Sender) tmrprekvapeni->enabled = false; lblprekvapeni->visible = false; void fastcall TfrmCasovace::btnHodinyClick(TObject *Sender) pnlhodiny->caption = TimeToStr(Time()); tmrhodiny->enabled = true; btnprubeh->setfocus(); void fastcall TfrmCasovace::tmrHodinyTimer(TObject *Sender) pnlhodiny->caption = TimeToStr(Time()); void fastcall TfrmCasovace::btnPrubehClick(TObject *Sender) cggprubeh->progress = 0; pbrprubeh->position = 0; //WinAPI funkce: SendMessage(pbrPrubeh->Handle, PBM_SETBARCOLOR, 0, cllime); tmrprubeh->enabled = true; void fastcall TfrmCasovace::tmrPrubehTimer(TObject *Sender) cggprubeh->progress++; pbrprubeh->position++; Program uložte a přeložte.

VY_32_INOVACE_EL_10_05 Digitální učební materiál Stavový řádek - použití v aplikaci Šablona: III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT Sada: VY_32_INOVACE_EL_10 - Programování v jazyce C++ pro 4. ročník DUM: VY_32_INOVACE_EL_10_05 Anotace: Postup vytvoření aplikace na procvičení práce se stavovým řádkem, jeho použití v aplikaci a seznámení s dalšími komponentami Autor: Ing. Petr Neumann Škola: Střední průmyslová škola, Hronov, Hostovského 910 Obor: Počítačové řídicí systémy Předmět: Programování Ročník: 4. Použitá literatura: Václav Kadlec - Učíme se programovat v C++Builder a jazyce C++

VY_32_INOVACE_EL_10_05 Příprava: Stavový řádek je běžnou součástí většiny aplikací. Slouží k informování uživatele o důležitých událostech a aktuálních nastaveních. K zobrazení informací slouží vlastnost Panels->Items = panely->položky. Položky jsou typu strings = řetězce znaků (texty). K vytvoření stavového řádku se používá komponenta StatusBar, přes kterou spustíme Editing. Z mnoha vlastností položek zpravidla využíváme pouze Text a Width. Zadání: Vytvořte aplikaci Stavový řádek - na formuláři je umístěn Panel. Pomocí položek menu lze nastavovat jeho vlastnosti, všechna nastavení se zobrazují na stavovém řádku.

VY_32_INOVACE_EL_10_05 Řešení: Spusťte vývojové prostředí, upravte velikost formuláře a umístěte na něj komponenty. Zdrojový kód a projekt uložte. Pojmenujte všechny komponenty. Vygenerujte funkci k události OnCreate pro frmstav a zapište do ní tento text: void fastcall TfrmStav::FormCreate(TObject *Sender) this->caption = "Stavový řádek"; this->borderstyle = bssingle; pnlpanel->caption = "Panel"; pnlpanel->height = 50; pnlpanel->width = 50; pnlpanel->left = 25; pnlpanel->top = 25; stbstatus->panels->items[0]->text = "Align: None"; stbstatus->panels->items[0]->width = 75; stbstatus->panels->items[1]->text = "Color: BtnFace"; stbstatus->panels->items[1]->width = 100; stbstatus->panels->items[2]->text = "Font-Color: WindowText"; stbstatus->panels->items[2]->width = 150; stbstatus->panels->items[3]->text = "Font-Size: 8"; stbstatus->panels->items[3]->width = 75; stbstatus->panels->items[4]->text = "Font-Style: None"; stbstatus->panels->items[4]->width = 100; stbstatus->panels->items[5]->text = "Height: " + IntToStr(pnlPanel->Height); stbstatus->panels->items[5]->width = 75; stbstatus->panels->items[6]->text = "Width: " + IntToStr(pnlPanel->Width); Program uložte a přeložte. Vygenerujte funkce k událostem OnClick pro jednotlivé položky menu. Do zdrojového kódu zapište tento text: void fastcall TfrmStav::pmnNoneClick(TObject *Sender) pnlpanel->align = alnone; stbstatus->panels->items[0]->text = "Align: None"; pnlpanel->height = 50; pnlpanel->width = 50; pnlpanel->left = 25; pnlpanel->top = 25; stbstatus->panels->items[5]->text = "Height: " + IntToStr(pnlPanel->Height); stbstatus->panels->items[6]->text = "Width: " + IntToStr(pnlPanel->Width); void fastcall TfrmStav::pmnTopClick(TObject *Sender) pnlpanel->align = altop; stbstatus->panels->items[0]->text = "Align: Top"; stbstatus->panels->items[5]->text = "Height: " + IntToStr(pnlPanel->Height); stbstatus->panels->items[6]->text = "Width: " + IntToStr(pnlPanel->Width);

VY_32_INOVACE_EL_10_05 void fastcall TfrmStav::pmnBottomClick(TObject *Sender) pnlpanel->align = albottom; stbstatus->panels->items[0]->text = "Align: Bottom"; stbstatus->panels->items[5]->text = "Height: " + IntToStr(pnlPanel->Height); stbstatus->panels->items[6]->text = "Width: " + IntToStr(pnlPanel->Width); void fastcall TfrmStav::pmnLeftClick(TObject *Sender) pnlpanel->align = alleft; stbstatus->panels->items[0]->text = "Align: Left"; stbstatus->panels->items[5]->text = "Height: " + IntToStr(pnlPanel->Height); stbstatus->panels->items[6]->text = "Width: " + IntToStr(pnlPanel->Width); void fastcall TfrmStav::pmnRightClick(TObject *Sender) pnlpanel->align = alright; stbstatus->panels->items[0]->text = "Align: Right"; stbstatus->panels->items[5]->text = "Height: " + IntToStr(pnlPanel->Height); stbstatus->panels->items[6]->text = "Width: " + IntToStr(pnlPanel->Width); void fastcall TfrmStav::pmnClientClick(TObject *Sender) pnlpanel->align = alclient; stbstatus->panels->items[0]->text = "Align: Client"; stbstatus->panels->items[5]->text = "Height: " + IntToStr(pnlPanel->Height); stbstatus->panels->items[6]->text = "Width: " + IntToStr(pnlPanel->Width); void fastcall TfrmStav::pmnBtnFaceClick(TObject *Sender) pnlpanel->color = clbtnface; stbstatus->panels->items[1]->text = "Color: BtnFace"; void fastcall TfrmStav::pmnRedClick(TObject *Sender) pnlpanel->color = clred; stbstatus->panels->items[1]->text = "Color: Red"; void fastcall TfrmStav::pmnGreenClick(TObject *Sender) pnlpanel->color = clgreen; stbstatus->panels->items[1]->text = "Color: Green"; void fastcall TfrmStav::pmnBlueClick(TObject *Sender) pnlpanel->color = clblue; stbstatus->panels->items[1]->text = "Color: Blue";

VY_32_INOVACE_EL_10_05 void fastcall TfrmStav::smnWindowTextClick(TObject *Sender) pnlpanel->font->color = clwindowtext; stbstatus->panels->items[2]->text = "Font-Color: WindowText"; void fastcall TfrmStav::smnRedClick(TObject *Sender) pnlpanel->font->color = clred; stbstatus->panels->items[2]->text = "Font-Color: Red"; void fastcall TfrmStav::smnGreenClick(TObject *Sender) pnlpanel->font->color = clgreen; stbstatus->panels->items[2]->text = "Font-Color: Green"; void fastcall TfrmStav::smnBlueClick(TObject *Sender) pnlpanel->font->color = clblue; stbstatus->panels->items[2]->text = "Font-Color: Blue"; void fastcall TfrmStav::smn8Click(TObject *Sender) pnlpanel->font->size = 8; stbstatus->panels->items[3]->text = "Font-Size: 8"; void fastcall TfrmStav::smn16Click(TObject *Sender) pnlpanel->font->size = 16; stbstatus->panels->items[3]->text = "Font-Size: 16"; void fastcall TfrmStav::smn32Click(TObject *Sender) pnlpanel->font->size = 32; stbstatus->panels->items[3]->text = "Font-Size: 32"; void fastcall TfrmStav::smnNoneClick(TObject *Sender) pnlpanel->font->style = pnlpanel->font->style >> fsbold >> fsitalic; stbstatus->panels->items[4]->text = "Font-Style: None"; void fastcall TfrmStav::smnBoldClick(TObject *Sender) pnlpanel->font->style = pnlpanel->font->style << fsbold >> fsitalic; stbstatus->panels->items[4]->text = "Font-Style: Bold";

VY_32_INOVACE_EL_10_05 void fastcall TfrmStav::smnItalicClick(TObject *Sender) pnlpanel->font->style = pnlpanel->font->style >> fsbold << fsitalic; stbstatus->panels->items[4]->text = "Font-Style: Italic"; void fastcall TfrmStav::pmnH50Click(TObject *Sender) pnlpanel->height = 50; stbstatus->panels->items[5]->text = "Height: " + IntToStr(pnlPanel->Height); void fastcall TfrmStav::pmnH75Click(TObject *Sender) pnlpanel->height = 75; stbstatus->panels->items[5]->text = "Height: " + IntToStr(pnlPanel->Height); void fastcall TfrmStav::pmnH100Click(TObject *Sender) pnlpanel->height = 100; stbstatus->panels->items[5]->text = "Height: " + IntToStr(pnlPanel->Height); void fastcall TfrmStav::pmnW50Click(TObject *Sender) pnlpanel->width = 50; stbstatus->panels->items[6]->text = "Width: " + IntToStr(pnlPanel->Width); void fastcall TfrmStav::pmnW100Click(TObject *Sender) pnlpanel->width = 100; stbstatus->panels->items[6]->text = "Width: " + IntToStr(pnlPanel->Width); void fastcall TfrmStav::pmnW150Click(TObject *Sender) pnlpanel->width = 150; stbstatus->panels->items[6]->text = "Width: " + IntToStr(pnlPanel->Width); Program uložte a přeložte.

VY_32_INOVACE_EL_10_06 Digitální učební materiál Soubory - použití v aplikaci Šablona: III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT Sada: VY_32_INOVACE_EL_10 - Programování v jazyce C++ pro 4. ročník DUM: VY_32_INOVACE_EL_10_06 Anotace: Postup vytvoření aplikace na procvičení práce se soubory, jejich použití v aplikaci a seznámení s dalšími komponentami Autor: Ing. Petr Neumann Škola: Střední průmyslová škola, Hronov, Hostovského 910 Obor: Počítačové řídicí systémy Předmět: Programování Ročník: 4. Použitá literatura: Václav Kadlec - Učíme se programovat v C++Builder a jazyce C++

VY_32_INOVACE_EL_10_06 Příprava: Soubory slouží k ukládání dat, proto jsou důležitou součástí většiny aplikací. K základním činnostem se soubory patří čtení a zápis dat, soubor se ale musí nejprve otevřít a potom zase zavřít. Samotná data jsou často uložena v podobě prostého (neformátovaného) textu (soubory typu txt). Pro práci se soubory máme k dispozici například tyto možnosti: a) použití knihovny funkcí standardních vstupů a výstupů (stdio.h) - pak lze použít funkce fopen(), fscanf() a fclose() b) použití některé z komponent, která má metody pro práci se soubory - pak lze použít metody LoadFromFile() a SaveToFile() c) použití systémových funkcí, které využívají handle souboru - pak lze použít funkce FileExists(), FileCreate(), FileOpen(), FileRead(), FileWrite(), FileSeek() a FileClose() d) použití standardních dialogů OpenDialog a SaveDialog - probereme v další části Zadání - 1. část: Vytvořte aplikaci Soubory1 - na formuláři jsou umístěny dvě komponenty Memo, do kterých se stisknutím tlačítka načte obsah souboru data.txt pokaždé jiným způsobem. Řešení - 1. část: Spusťte vývojové prostředí, upravte velikost formuláře a umístěte na něj komponenty. Zdrojový kód a projekt uložte. Pojmenujte všechny komponenty. Vygenerujte funkci k události OnCreate pro frmsoubory1 a zapište do ní tento text:

VY_32_INOVACE_EL_10_06 void fastcall TfrmSoubory1::FormCreate(TObject *Sender) this->caption = "Soubory1"; this->borderstyle = bssingle; btnsoubor1->caption = "Load"; btnsoubor2->caption = "Load"; memsoubor1->clear(); memsoubor2->clear(); Program uložte a přeložte. Vygenerujte funkce k událostem OnClick pro btnsoubor1 a btnsoubor2. Do zdrojového kódu zapište tento text: #include <stdio.h> void fastcall TfrmSoubory1::btnSoubor1Click(TObject *Sender) FILE *soubor; int cislo; soubor = fopen("data.txt", "r"); memsoubor1->clear(); while (fscanf(soubor, "%d", &cislo)!= EOF) memsoubor1->lines->add(inttostr(cislo)); fclose(soubor); void fastcall TfrmSoubory1::btnSoubor2Click(TObject *Sender) memsoubor2->lines->loadfromfile("data.txt"); Program uložte a přeložte.

VY_32_INOVACE_EL_10_06 Zadání - 2. část: Vytvořte aplikaci Soubory2 - na formuláři je umístěna komponenta ListBox, do které se stisknutím tlačítka načte obsah souboru osoby.txt opět jiným způsobem. Další tlačítka umožňují editovat seznam a uložit ho do souboru. Řešení - 2. část : Spusťte vývojové prostředí, upravte velikost formuláře a umístěte na něj komponenty. Zdrojový kód a projekt uložte. Pojmenujte všechny komponenty. Vygenerujte funkci k události OnCreate pro frmsoubory2 a zapište do ní tento text: void fastcall TfrmSoubory2::FormCreate(TObject *Sender) this->caption = "Soubory2"; this->borderstyle = bssingle; btnnacti->caption = "Načti soubor"; btnpridej->caption = "Přidej osobu"; btnodeber->caption = "Odeber osobu"; btnuloz->caption = "Ulož soubor"; btnvymaz->caption = "Vymaž okno"; lbxseznam->sorted = true; Program uložte a přeložte. Vygenerujte funkce k událostem OnClick pro btnnacti, btnpridej, btnodeber, btnuloz a btnvymaz. Do zdrojového kódu zapište tento text:

VY_32_INOVACE_EL_10_06 #define osoby "osoby.txt" void fastcall TfrmSoubory2::btnNactiClick(TObject *Sender) int handle; if (!FileExists(osoby)) ShowMessage("Soubor neexistuje!!!"); else handle = FileOpen(osoby, fmopenread); if (handle == -1) ShowMessage("Soubor nelze otevřít pro čtení!!!"); else int delka = FileSeek(handle, 0, 2); PChar buffer = StrAlloc(delka + 1); FileSeek(handle, 0, 0); int precteno = FileRead(handle, buffer, delka); if (precteno < delka) ShowMessage("Soubor nebyl načten celý!!!"); else buffer[delka] = '\0'; lbxseznam->items->text = AnsiString(buffer); StrDispose(buffer); FileClose(handle); void fastcall TfrmSoubory2::btnPridejClick(TObject *Sender) AnsiString prijmeni = "***"; AnsiString krestni = "***"; AnsiString rok = "***"; AnsiString prace = "***"; if (InputQuery("Přidej osobu", "Napiš příjmení :", prijmeni)) if (InputQuery("Přidej osobu", "Napiš křestní jméno :", krestni)) if (InputQuery("Přidej osobu", "Napiš rok narození :", rok)) if (InputQuery("Přidej osobu", "Napiš zaměstnání :", prace)) lbxseznam->items->add(prijmeni + " " + krestni + " (" + rok + ") - " + prace); void fastcall TfrmSoubory2::btnOdeberClick(TObject *Sender) lbxseznam->items->delete(lbxseznam->itemindex);

VY_32_INOVACE_EL_10_06 void fastcall TfrmSoubory2::btnUlozClick(TObject *Sender) int handle; if (!FileExists(osoby)) handle = FileCreate(osoby); if (handle == -1) ShowMessage("Soubor nelze vytvořit!!!"); else handle = FileOpen(osoby, fmopenwrite); if (handle == -1) ShowMessage("Soubor nelze otevřít pro zápis!!!"); FileSeek(handle, 0, 0); int delka = lbxseznam->items->text.length(); int zapsano = FileWrite(handle, lbxseznam->items->text.c_str(), delka); if (zapsano < delka) ShowMessage("Soubor nebyl zapsán celý!!!"); FileClose(handle); void fastcall TfrmSoubory2::btnVymazClick(TObject *Sender) lbxseznam->clear(); Program uložte a přeložte.

VY_32_INOVACE_EL_10_07 Digitální učební materiál Standardní dialogy - použití v aplikaci (1. část) Šablona: III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT Sada: VY_32_INOVACE_EL_10 - Programování v jazyce C++ pro 4. ročník DUM: VY_32_INOVACE_EL_10_07 Anotace: Postup vytvoření aplikace na procvičení práce se standardními dialogy, jejich použití v aplikaci a seznámení s dalšími komponentami Autor: Ing. Petr Neumann Škola: Střední průmyslová škola, Hronov, Hostovského 910 Obor: Počítačové řídicí systémy Předmět: Programování Ročník: 4. Použitá literatura: Václav Kadlec - Učíme se programovat v C++Builder a jazyce C++

VY_32_INOVACE_EL_10_07 Příprava: Standardní dialogy jsou běžnou součástí většiny aplikací. Slouží ke komunikaci mezi uživatelem a aplikací, používají se tedy jako tzv. uživatelské rozhraní. Mezi nejčastěji používané dialogy patří: OpenDialog, SaveDialog, OpenPictureDialog, SavePictureDialog, FontDialog, ColorDialog, PrinterSetupDialog, PrintDialog, FindDialog a ReplaceDialog. Nejdůležitějšími vlastnostmi dialogů OpenDialog a SaveDialog jsou FileName, Filter a Options, dialogu FontDialog Font a dialogu ColorDialog Color, nejdůležitější metodou všech dialogů je Execute(). Zadání: Vytvořte aplikaci Dialogy - na formuláři je umístěna komponenta RichEdit, která umožňuje práci s formátovaným textem. Pomocí položek menu lze otevřít nebo uložit soubor, změnit font nebo barvu písma, najít nebo nahradit část textu. Vše se bude zadávat pomocí standardních dialogů.

VY_32_INOVACE_EL_10_07 Řešení - 1. část: Spusťte vývojové prostředí, upravte velikost formuláře a umístěte na něj komponenty. Zdrojový kód a projekt uložte. Pojmenujte všechny komponenty. Vygenerujte funkci k události OnCreate pro frmdialogy a zapište do ní tento text: void fastcall TfrmDialogy::FormCreate(TObject *Sender) this->caption = "Dialogy"; this->borderstyle = bssingle; redtext->align = alclient; redtext->plaintext = false; redtext->clear(); dlgotevri->defaultext = "rtf"; dlgotevri->filter = "Soubory RTF (*.rtf) *.rtf Všechny soubory (*.*) *.*"; dlgotevri->options >> ofhidereadonly; dlguloz->defaultext = "rtf"; dlguloz->filter = "Soubory RTF (*.rtf) *.rtf Všechny soubory (*.*) *.*"; dlgnajdi->options << frmatchcase; dlgnahrad->options << frmatchcase; Program uložte a přeložte. Vygenerujte funkce k událostem OnClick pro všechny položky menu. Do zdrojového kódu zapište tento text: void fastcall TfrmDialogy::pmnOtevriClick(TObject *Sender) if (dlgotevri->execute()) this->caption = dlgotevri->filename; redtext->lines->loadfromfile(dlgotevri->filename); redtext->readonly = dlgotevri->options.contains(ofreadonly); void fastcall TfrmDialogy::pmnUlozClick(TObject *Sender) if (dlguloz->execute()) this->caption = dlguloz->filename; redtext->lines->savetofile(dlguloz->filename);

VY_32_INOVACE_EL_10_07 void fastcall TfrmDialogy::pmnFontClick(TObject *Sender) if (redtext->sellength > 0) dlgfont->font->assign(redtext->selattributes); if (dlgfont->execute()) redtext->selattributes->assign(dlgfont->font); else dlgfont->font->assign(redtext->defattributes); if (dlgfont->execute()) redtext->defattributes->assign(dlgfont->font); void fastcall TfrmDialogy::pmnBarvaClick(TObject *Sender) if (redtext->sellength > 0) dlgbarva->color = redtext->selattributes->color; if (dlgbarva->execute()) redtext->selattributes->color = dlgbarva->color; else dlgbarva->color = redtext->defattributes->color; if (dlgbarva->execute()) redtext->defattributes->color = dlgbarva->color; Program uložte a přeložte.

VY_32_INOVACE_EL_10_08 Digitální učební materiál Standardní dialogy - použití v aplikaci (2. část) Šablona: III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT Sada: VY_32_INOVACE_EL_10 - Programování v jazyce C++ pro 4. ročník DUM: VY_32_INOVACE_EL_10_08 Anotace: Postup vytvoření aplikace na procvičení práce se standardními dialogy, jejich použití v aplikaci a seznámení s dalšími komponentami Autor: Ing. Petr Neumann Škola: Střední průmyslová škola, Hronov, Hostovského 910 Obor: Počítačové řídicí systémy Předmět: Programování Ročník: 4. Použitá literatura: Václav Kadlec - Učíme se programovat v C++Builder a jazyce C++

VY_32_INOVACE_EL_10_08 Řešení - 2. část: Problematiku vyhledávání a nahrazování části textu nevyřeší dialog (ten slouží jen ke komunikaci), tuto činnost je nutné naprogramovat. Vygenerujte funkce k událostem OnClick pro pmnnajdi a pmnnahrad, OnFind pro dlgnajdi a dlgnahrad a OnReplace pro dlgnahrad. Do zdrojového kódu zapište tento text: void fastcall TfrmDialogy::pmnNajdiClick(TObject *Sender) dlgnajdi->findtext = redtext->seltext; dlgnajdi->execute(); void fastcall TfrmDialogy::dlgNajdiFind(TObject *Sender) int zacatek_hledani; //pozice znaku, od kterého začíná hledání int zbyva_do_konce; //počet znak ů, které zbývají do konce souboru int nalezena_pozice; //pozice prvního znaku nalezeného textu if (redtext->sellength > 0) zacatek_hledani = redtext->selstart + redtext->sellength; else zacatek_hledani = 0; zbyva_do_konce = redtext->text.length() - zacatek_hledani; nalezena_pozice = redtext->findtext(dlgnajdi->findtext, zacatek_hledani, zbyva_do_konce, TSearchTypes() << stmatchcase); if (nalezena_pozice!= -1) redtext->setfocus(); redtext->selstart = nalezena_pozice; redtext->sellength = dlgnajdi->findtext.length(); else ShowMessage("Ukončeno hledání v souboru - zvolený text nebyl nalezen!!!"); void fastcall TfrmDialogy::pmnNahradClick(TObject *Sender) dlgnahrad->findtext = redtext->seltext; dlgnahrad->execute();

VY_32_INOVACE_EL_10_08 void fastcall TfrmDialogy::dlgNahradFind(TObject *Sender) int zacatek_hledani; //pozice znaku, od kterého začíná hledání int zbyva_do_konce; //počet znak ů, které zbývají do konce souboru int nalezena_pozice; //pozice prvního znaku nalezeného textu if (redtext->sellength > 0) zacatek_hledani = redtext->selstart + redtext->sellength; else zacatek_hledani = 0; zbyva_do_konce = redtext->text.length() - zacatek_hledani; nalezena_pozice = redtext->findtext(dlgnahrad->findtext, zacatek_hledani, zbyva_do_konce, TSearchTypes() << stmatchcase); if (nalezena_pozice!= -1) redtext->setfocus(); redtext->selstart = nalezena_pozice; redtext->sellength = dlgnahrad->findtext.length(); else ShowMessage("Ukončeno hledání v souboru - zvolený text nebyl nalezen!!!"); void fastcall TfrmDialogy::dlgNahradReplace(TObject *Sender) //funkce nahradit nebo nahradit vše se rozliší podle: //dlgnahrad->options.contains(frreplace) = false nebo true //zde není řešeno if (redtext->sellength > 0) redtext->seltext = dlgnahrad->replacetext; redtext->setfocus(); redtext->selstart = redtext->selstart - dlgnahrad->replacetext.length(); redtext->sellength = dlgnahrad->replacetext.length(); else ShowMessage("Nebyl označen text pro nahrazení!!!"); //--------------------------------------------------------------------- Program uložte a přeložte. Řešení - 3. část: V řešení popsaném v předchozích částech se opakují velmi podobné části programu (viz. dlgnajdifind a dlgnahradfind). Porovnejte toto řešení s následujícím - zde se využívá (TObject *Sender), což je ukazatel na objekt, který danou událost vyvolal. Také je zde vytvořena vlastní funkce najdi(). void fastcall TfrmDialogy::dlgNajdiFind(TObject *Sender) najdi(sender);

VY_32_INOVACE_EL_10_08 void fastcall TfrmDialogy::dlgNahradFind(TObject *Sender) najdi(sender); void fastcall TfrmDialogy::najdi(TObject *Sender) //(TFindDialog*)Sender funguje pro FindDialog i pro ReplaceDialog int zacatek_hledani; //pozice znaku, od kterého začíná hledání int zbyva_do_konce; //počet znak ů, které zbývají do konce souboru int nalezena_pozice; //pozice prvního znaku nalezeného textu if (redtext->sellength > 0) zacatek_hledani = redtext->selstart + redtext->sellength; else zacatek_hledani = 0; zbyva_do_konce = redtext->text.length() - zacatek_hledani; nalezena_pozice = redtext->findtext(((tfinddialog*)sender)->findtext, zacatek_hledani, zbyva_do_konce, TSearchTypes() << stmatchcase); if (nalezena_pozice!= -1) redtext->setfocus(); redtext->selstart = nalezena_pozice; redtext->sellength = ((TFindDialog*)Sender)->FindText.Length(); else ShowMessage("Ukončeno hledání v souboru - zvolený text nebyl nalezen!!!");

VY_32_INOVACE_EL_10_09 Digitální učební materiál Komponenty pro lepší vzhled aplikace (1. část) Šablona: III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT Sada: VY_32_INOVACE_EL_10 - Programování v jazyce C++ pro 4. ročník DUM: VY_32_INOVACE_EL_10_09 Anotace: Postup vytvoření aplikace na procvičení práce s komponentami pro lepší vzhled aplikace a seznámení s dalšími komponentami Autor: Ing. Petr Neumann Škola: Střední průmyslová škola, Hronov, Hostovského 910 Obor: Počítačové řídicí systémy Předmět: Programování Ročník: 4. Použitá literatura: Václav Kadlec - Učíme se programovat v C++Builder a jazyce C++

VY_32_INOVACE_EL_10_09 Příprava: Pro lepší (profesionálnější) vzhled aplikace můžeme použít například tyto komponenty: Splitter - rozdělení pracovní plochy na několik částí Bevel - oddělovací čáry, nejdůležitějšími vlastnostmi jsou Shape a Style ScrollBox - posuvná oblast Animate - animace, nejdůležitějšími vlastnostmi jsou FileName, CommonAVI a Active SpeedButton - základní prvek panelu nástrojů, nejdůležitějšími vlastnostmi jsou GroupIndex, Down a AllowAllUp PageControl - záložky Zadání - 1. část: Vytvořte aplikaci Vzhled1 - na formuláři jsou umístěny komponenty Splitter, Bevel, ScrollBox a Animate. Aplikace musí umožnit různé způsoby použití těchto komponent. Řešení - 1. část: Spusťte vývojové prostředí, upravte velikost formuláře a umístěte na něj komponenty. Zdrojový kód a projekt uložte. Pojmenujte všechny komponenty. Vygenerujte funkci k události OnCreate pro frmvzhled1 a zapište do ní tento text:

VY_32_INOVACE_EL_10_09 void fastcall TfrmVzhled1::FormCreate(TObject *Sender) this->caption = "Vzhled1"; this->borderstyle = bssingle; this->position = poscreencenter; pnlpanel1->caption = ""; pnlpanel1->align = alleft; splcara1->align = alleft; splcara1->width = 2; pnlpanel3->caption = ""; pnlpanel3->align = alright; splcara2->align = alright; splcara2->width = 2; pnlpanel2->caption = ""; pnlpanel2->align = alclient; bvlramecek->shape = bsbottomline; bvlramecek->style = bslowered; rgpshape->caption = "Shape"; rgpshape->columns = 1; rgpshape->items->add("bsbottomline"); rgpshape->items->add("bsbox"); rgpshape->items->add("bsframe"); rgpshape->items->add("bsleftline"); rgpshape->items->add("bsrightline"); rgpshape->items->add("bsspacer"); rgpshape->items->add("bstopline"); rgpshape->itemindex = 0; rgpstyle->caption = "Style"; rgpstyle->columns = 1; rgpstyle->items->add("bslowered"); rgpstyle->items->add("bsraised"); rgpstyle->itemindex = 0; btntlac1->caption = "Tlačítko 1"; btntlac2->caption = "Tlačítko 2"; btntlac3->caption = "Tlačítko 3"; btntlac4->caption = "Tlačítko 4"; btntlac5->caption = "Tlačítko 5"; btntlac6->caption = "Tlačítko 6"; btntlac7->caption = "Tlačítko 7"; btntlac8->caption = "Tlačítko 8"; btntlac9->caption = "Konec"; //anmpohyb->filename = "*.avi"; anmpohyb->commonavi = avifindcomputer; btnstart->caption = "Start"; btnstop->caption = "Stop"; Program uložte a přeložte. Vygenerujte funkce k událostem OnClick pro rgpshape, rgpstyle, btntlac9, btnstart a btnstop. Do zdrojového kódu zapište tento text:

VY_32_INOVACE_EL_10_09 void fastcall TfrmVzhled1::rgpShapeClick(TObject *Sender) switch (rgpshape->itemindex) case 0 : bvlramecek->shape = bsbottomline; break; case 1 : bvlramecek->shape = bsbox; break; case 2 : bvlramecek->shape = bsframe; break; case 3 : bvlramecek->shape = bsleftline; break; case 4 : bvlramecek->shape = bsrightline; break; case 5 : bvlramecek->shape = bsspacer; break; case 6 : bvlramecek->shape = bstopline; break; void fastcall TfrmVzhled1::rgpStyleClick(TObject *Sender) switch (rgpstyle->itemindex) case 0 : bvlramecek->style = bslowered; break; case 1 : bvlramecek->style = bsraised; break; void fastcall TfrmVzhled1::btnTlac9Click(TObject *Sender) Application->Terminate(); void fastcall TfrmVzhled1::btnStartClick(TObject *Sender) anmpohyb->active = true; void fastcall TfrmVzhled1::btnStopClick(TObject *Sender) anmpohyb->active = false; Program uložte a přeložte.

VY_32_INOVACE_EL_10_10 Digitální učební materiál Komponenty pro lepší vzhled aplikace (2. část) Šablona: III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT Sada: VY_32_INOVACE_EL_10 - Programování v jazyce C++ pro 4. ročník DUM: VY_32_INOVACE_EL_10_10 Anotace: Postup vytvoření aplikace na procvičení práce s komponentami pro lepší vzhled aplikace a seznámení s dalšími komponentami Autor: Ing. Petr Neumann Škola: Střední průmyslová škola, Hronov, Hostovského 910 Obor: Počítačové řídicí systémy Předmět: Programování Ročník: 4. Použitá literatura: Václav Kadlec - Učíme se programovat v C++Builder a jazyce C++

VY_32_INOVACE_EL_10_10 Zadání - 2. část: Vytvořte aplikaci Vzhled2 - na formuláři je umístěna komponenta PageControl se třemi záložkami. Na poslední záložce jsou umístěny tři SpeedButton, které mohou fungovat jako tlačítka, spínače nebo přepínač. Jejich stav je signalizován také barvou tří panelů. Řešení - 2. část: Spusťte vývojové prostředí, upravte velikost formuláře a umístěte na něj komponenty. Zdrojový kód a projekt uložte. Pojmenujte všechny komponenty. Vygenerujte funkci k události OnCreate pro frmvzhled2 a zapište do ní tento text:

VY_32_INOVACE_EL_10_10 void fastcall TfrmVzhled2::FormCreate(TObject *Sender) this->caption = "Vzhled2"; this->borderstyle = bssingle; this->position = poscreencenter; sbttlac1->height = 25; sbttlac1->width = 25; sbttlac1->numglyphs = 4; sbttlac2->height = 25; sbttlac2->width = 25; sbttlac2->numglyphs = 4; sbttlac3->height = 25; sbttlac3->width = 25; sbttlac3->numglyphs = 4; //původní nastavení: sbttlac1->groupindex = 0; sbttlac2->groupindex = 0; sbttlac3->groupindex = 0; sbttlac1->down = false; sbttlac2->down = false; sbttlac3->down = false; sbttlac1->allowallup = false; sbttlac2->allowallup = false; sbttlac3->allowallup = false; pnlsignal1->caption = ""; pnlsignal1->height = 25; pnlsignal1->width = 25; pnlsignal2->caption = ""; pnlsignal2->height = 25; pnlsignal2->width = 25; pnlsignal3->caption = ""; pnlsignal3->height = 25; pnlsignal3->width = 25; rbtpuvodni->caption = "Původní"; rbtpuvodni->checked = true; rbttlacitka->caption = "Tlačítka"; rbtspinace->caption = "Spínače"; rbtprepinac->caption = "Přepína č"; Program uložte a přeložte. Vygenerujte funkce k událostem OnClick pro rbtpuvodni, rbttlacitka, rbtspinace a rbtprepinac a OnMouseDown, OnMouseUp a OnClick pro všechny tři SpeedButton. Do zdrojového kódu zapište tento text:

VY_32_INOVACE_EL_10_10 void fastcall TfrmVzhled2::rbtPuvodniClick(TObject *Sender) sbttlac1->groupindex = 0; sbttlac2->groupindex = 0; sbttlac3->groupindex = 0; sbttlac1->down = false; sbttlac2->down = false; sbttlac3->down = false; sbttlac1->allowallup = false; sbttlac2->allowallup = false; sbttlac3->allowallup = false; pnlsignal1->color = clbtnface; pnlsignal2->color = clbtnface; pnlsignal3->color = clbtnface; void fastcall TfrmVzhled2::rbtTlacitkaClick(TObject *Sender) sbttlac1->groupindex = 0; sbttlac2->groupindex = 0; sbttlac3->groupindex = 0; sbttlac1->down = false; sbttlac2->down = false; sbttlac3->down = false; sbttlac1->allowallup = true; sbttlac2->allowallup = true; sbttlac3->allowallup = true; pnlsignal1->color = clbtnface; pnlsignal2->color = clbtnface; pnlsignal3->color = clbtnface; void fastcall TfrmVzhled2::rbtSpinaceClick(TObject *Sender) sbttlac1->groupindex = 1; sbttlac2->groupindex = 2; sbttlac3->groupindex = 3; sbttlac1->down = false; sbttlac2->down = false; sbttlac3->down = false; sbttlac1->allowallup = true; sbttlac2->allowallup = true; sbttlac3->allowallup = true; pnlsignal1->color = clbtnface; pnlsignal2->color = clbtnface; pnlsignal3->color = clbtnface;

VY_32_INOVACE_EL_10_10 void fastcall TfrmVzhled2::rbtPrepinacClick(TObject *Sender) sbttlac1->groupindex = 1; sbttlac2->groupindex = 1; sbttlac3->groupindex = 1; sbttlac1->down = true; sbttlac2->down = false; sbttlac3->down = false; sbttlac1->allowallup = true; sbttlac2->allowallup = true; sbttlac3->allowallup = true; pnlsignal1->color = clyellow; pnlsignal2->color = clbtnface; pnlsignal3->color = clbtnface; void fastcall TfrmVzhled2::sbtTlac1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) if (rbtpuvodni->checked rbttlacitka->checked) pnlsignal1->color = clyellow; void fastcall TfrmVzhled2::sbtTlac2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) if (rbtpuvodni->checked rbttlacitka->checked) pnlsignal2->color = clyellow; void fastcall TfrmVzhled2::sbtTlac3MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) if (rbtpuvodni->checked rbttlacitka->checked) pnlsignal3->color = clyellow; void fastcall TfrmVzhled2::sbtTlac1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) if (rbtpuvodni->checked rbttlacitka->checked) pnlsignal1->color = clbtnface; void fastcall TfrmVzhled2::sbtTlac2MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) if (rbtpuvodni->checked rbttlacitka->checked) pnlsignal2->color = clbtnface; void fastcall TfrmVzhled2::sbtTlac3MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) if (rbtpuvodni->checked rbttlacitka->checked) pnlsignal3->color = clbtnface;

VY_32_INOVACE_EL_10_10 void fastcall TfrmVzhled2::sbtTlac1Click(TObject *Sender) if (rbtspinace->checked rbtprepinac->checked) if (sbttlac1->down) pnlsignal1->color = clyellow; else pnlsignal1->color = clbtnface; if (sbttlac2->down) pnlsignal2->color = clyellow; else pnlsignal2->color = clbtnface; if (sbttlac3->down) pnlsignal3->color = clyellow; else pnlsignal3->color = clbtnface; void fastcall TfrmVzhled2::sbtTlac2Click(TObject *Sender) if (rbtspinace->checked rbtprepinac->checked) if (sbttlac1->down) pnlsignal1->color = clyellow; else pnlsignal1->color = clbtnface; if (sbttlac2->down) pnlsignal2->color = clyellow; else pnlsignal2->color = clbtnface; if (sbttlac3->down) pnlsignal3->color = clyellow; else pnlsignal3->color = clbtnface;

VY_32_INOVACE_EL_10_10 void fastcall TfrmVzhled2::sbtTlac3Click(TObject *Sender) if (rbtspinace->checked rbtprepinac->checked) if (sbttlac1->down) pnlsignal1->color = clyellow; else pnlsignal1->color = clbtnface; if (sbttlac2->down) pnlsignal2->color = clyellow; else pnlsignal2->color = clbtnface; if (sbttlac3->down) pnlsignal3->color = clyellow; else pnlsignal3->color = clbtnface; Program uložte a přeložte.

VY_32_INOVACE_EL_10_11 Digitální učební materiál Klávesové zkratky - použití v aplikaci Šablona: III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT Sada: VY_32_INOVACE_EL_10 - Programování v jazyce C++ pro 4. ročník DUM: VY_32_INOVACE_EL_10_11 Anotace: Postup vytvoření aplikace na procvičení práce s klávesovými zkratkami, jejich použití v aplikaci a seznámení s dalšími komponentami Autor: Ing. Petr Neumann Škola: Střední průmyslová škola, Hronov, Hostovského 910 Obor: Počítačové řídicí systémy Předmět: Programování Ročník: 4. Použitá literatura: Václav Kadlec - Učíme se programovat v C++Builder a jazyce C++

VY_32_INOVACE_EL_10_11 Příprava: Klávesové zkratky jsou běžnou součástí většiny aplikací. Obvykle se tvoří pomocí kombinace modifikační klávesy (Alt, Ctrl, Shift) a dalšího znaku. Slouží k rychlejšímu a pohodlnějšímu ovládání aplikace pomocí klávesnice. Při tvorbě klávesových zkratek je třeba dodržovat několik zásad, např. řídit se zvyklostmi uživatele. K vytvoření klávesových zkratek lze použít různé postupy (např. znak & ve vlastnosti Caption, vlastnost položek menu ShortCut apod.), pro volbu klávesových zkratek přímo uživatelem slouží komponenta HotKey. Zadání: Vytvořte aplikaci Klávesové zkratky - na formuláři jsou umístěny komponenty ListView, HotKey a Button, dále je zde vytvořeno menu Soubor. Pomocí tlačítka lze jednotlivým položkám menu přiřadit klávesovou zkratku. Funkci položek menu řešte pro jednoduchost pouze zobrazením příslušné zprávy (informačního dialogu), pouze položka Konec bude plně funkční (včetně kontrolního dotazu). Řešení: Spusťte vývojové prostředí, upravte velikost formuláře a umístěte na něj komponenty. Zdrojový kód a projekt uložte. Pojmenujte všechny komponenty. Vygenerujte funkci k události OnCreate pro frmzkratky a zapište do ní tento text:

VY_32_INOVACE_EL_10_11 void fastcall TfrmZkratky::FormCreate(TObject *Sender) TListColumn *sloupec; TListItem *polozka; this->caption = "Klávesové zkratky"; this->borderstyle = bssingle; this->position = poscreencenter; btnnastavit->caption = "&Nastavit"; lvwvypis->hideselection = false; lvwvypis->readonly = true; lvwvypis->viewstyle = vsreport; sloupec = lvwvypis->columns->add(); sloupec->caption = "Menu"; sloupec->width = 100; sloupec = lvwvypis->columns->add(); sloupec->caption = "Zkratka"; sloupec->width = 140; for (int i = 0; i < hmnsoubor->count; i++) polozka = lvwvypis->items->add(); polozka->caption = hmnsoubor->items[i]->caption; polozka->subitems->add(shortcuttotext(hmnsoubor->items[i]->shortcut)); lvwvypis->items->item[0]->selected = true; Program uložte a přeložte. Vygenerujte funkce k událostem OnClick pro lvwvypis, btnnastavit a pro všechny položky menu. Do zdrojového kódu zapište tento text: void fastcall TfrmZkratky::lvwVypisClick(TObject *Sender) if (lvwvypis->selected) htkzkratky->hotkey = TextToShortCut(lvwVypis->Selected->SubItems->Strings[0]); void fastcall TfrmZkratky::btnNastavitClick(TObject *Sender) if (lvwvypis->selected->caption!= "-") lvwvypis->selected->subitems->strings[0] = ShortCutToText(htkZkratky->HotKey); for (int i = 0; i < hmnsoubor->count; i++) hmnsoubor->items[i]->shortcut = TextToShortCut(lvwVypis->Items->Item[i]->SubItems->Strings[0]);

VY_32_INOVACE_EL_10_11 void fastcall TfrmZkratky::pmnNovyClick(TObject *Sender) Application->MessageBox("Soubor nový", "Informace", MB_OK + MB_ICONINFORMATION); void fastcall TfrmZkratky::pmnOtevritClick(TObject *Sender) Application->MessageBox("Soubor otevřít", "Informace", MB_OK + MB_ICONINFORMATION); void fastcall TfrmZkratky::pmnUlozitClick(TObject *Sender) Application->MessageBox("Soubor uložit", "Informace", MB_OK + MB_ICONINFORMATION); void fastcall TfrmZkratky::pmnUlozitJakoClick(TObject *Sender) Application->MessageBox("Soubor uložit jako", "Informace", MB_OK + MB_ICONINFORMATION); void fastcall TfrmZkratky::pmnZavritClick(TObject *Sender) Application->MessageBox("Soubor zavřít", "Informace", MB_OK + MB_ICONINFORMATION); void fastcall TfrmZkratky::pmnKonecClick(TObject *Sender) if(application->messagebox("konec aplikace?", "Otázka", MB_YESNO + MB_ICONQUESTION) == mryes) Application->Terminate(); Program uložte a přeložte.