1. Seznßmenφ s C++ Builderem 
  1. Po spu╣t∞nφ C++ Builderu (p°φkazem Start | Programs | Borland C++ Builder 3 | C++ Builder ) jsou na obrazovce zobrazena tato okna: okno Builderu (je umφst∞no u hornφho okraje obrazovky),


  2. okno Inspektora objekt∙ (je v levΘ Φßsti obrazovky),

    okno nßvrhovΘho formulß°e

    a okno Editoru k≤du formulß°e (poslednφ z t∞chto oken je p°ekryto p°edposlednφm).

    Okno Inspektora objekt∙ mß dv∞ strßnky (viz obrßzek naho°e): strßnku Properties (vlastnostφ) a strßnku Events (udßlostφ). Nejprve se budeme zab²vat strßnkou vlastnostφ. Jsou zde uvedeny r∙znΘ vlastnosti formulß°e. Mezi d∙le╛itΘ vlastnosti formulß°e pat°φ vlastnosti Height (v²╣ka) a Width (╣φ°ka). Zm∞≥te ta╛enφm my╣i na obrazovce rozm∞ry okna formulß°e a sledujte, jak se tyto zm∞ny projevujφ na odpovφdajφcφch vlastnostech v okn∞ Inspektora objekt∙. Lze to provΘst i obrßcen∞. Kdy╛ zm∞nφme n∞kterou z t∞chto vlastnostφ v Inspektoru objekt∙, zm∞nφ se i rozm∞r formulß°e.
  3. Dal╣φ d∙le╛itΘ vlastnosti urΦujφ pozici formulß°e na obrazovce. Jsou to vlastnosti Left (vzdßlenost od levΘho okraje obrazovky) a Top (vzdßlenost od hornφho okraje obrazovky). P°esv∞dΦte se, ╛e to funguje stejn²m zp∙sobem jako u rozm∞r∙ formulß°e.
  4. Vlastnost Caption (titulek okna) urΦuje text zobrazen² v hornφm °ßdku formulß°e (okna). Zm∞≥te tento titulek na Normßlnφ okno (p°epφ╣eme jej v Inspektoru objekt∙).
  5. Vlastnost Color (barva formulß°e) se urΦuje pomocφ symbolick²ch konstant. Zjist∞te, jakß jmΘna majφ tyto konstanty.
  6. Nejd∙le╛it∞j╣φ vlastnostφ je vlastnost Name (jmΘno). Pomocφ tΘto vlastnosti se odkazujeme na formulß°, p°φpadn∞ na jinΘ objekty umφst∞nΘ na formulß°i. Hodnota tΘto vlastnosti musφ b²t identifikßtor. Tzn. nelze zde nap°. pou╛φvat mezery, pφsmena s diakritikou. Hodnotu tΘto vlastnosti vytvß°φ Builder, ale m∙╛eme ji zm∞nit.
  7. Vytvo°enou aplikaci m∙╛eme kdykoliv spustit a prohlΘdnout si tak v²sledky svΘ prßce. Provedeme to volbou Run | Run. Po provedenφ p°ekladu (trvß to n∞kolik sekund) se na obrazovce zobrazφ nß╣ formulß° jako okno (zatφm prßzdnΘ), se kter²m m∙╛eme b∞╛n²m zp∙sobem manipulovat (p°esouvat, m∞nit jeho velikost apod.). Uzav°enφm okna se op∞t dostaneme do v²vojovΘho prost°edφ Builderu.
  8. Na formulß° m∙╛eme vklßdat r∙znΘ komponenty. Pou╛φvßme k tomu Paletu komponent, kterß je umφst∞na v pravΘ dolnφ Φßsti okna Builderu (mß n∞kolik strßnek: Standard, Additional, atd.). Paleta komponent je tvo°ena °adou tlaΦφtek, ukßzßnφm my╣φ na tlaΦφtko zobrazφme jeho nßzev. Nalezn∞te tlaΦφtko s nßzvem Button (je na strßnce Standard ╣estΘ zleva).

  9. Komponentu na formulß° vlo╛φme tak, ╛e kliknutφm vybereme komponentu na Palet∞ komponent a dal╣φm kliknutφm ji umφstφme na po╛adovanΘ mφsto formulß°e. Vlo╛te na formulß° komponentu Button (tlaΦφtko).
  10. Jestli╛e vlo╛enß komponenta je vybrßna (je obklopena zßchytn²mi ΦtvereΦky), pak m∙╛eme m∞nit jejφ velikost a umφst∞nφ a to stejn²m zp∙sobem, jako jsme to m∞nili u formulß°e (Inspektor objekt∙ zobrazuje vlastnosti vybranΘho objektu). Vlastnosti Top a Left se nynφ vztahujφ k formulß°i. Vlastnost Caption komponenty tlaΦφtka urΦuje text zobrazen² na tlaΦφtku. U na╣eho tlaΦφtka zm∞≥te tento text na Zelen².

  11. Dßle zapφ╣eme p°φkazy, kterΘ se majφ provΘst p°i stisknutφ tlaΦφtka (obsluha udßlosti stisknutφ tlaΦφtka). Dvojit²m kliknutφm na tlaΦφtku vytvo°φme kostru tΘto obsluhy udßlosti (jednß se o funkci, p°iΦem╛ Builder vytvo°φ jejφ hlaviΦku a slo╛enΘ zßvorky pro zßpis t∞la funkce) a tato (zatφm prßzdnß) funkce je zobrazena v Editoru k≤du s kurzorem umφst∞n²m mezi { a }. Do tohoto mφsta budeme zapisovat p°φkazy, kterΘ se majφ provΘst p°i stisknutφ tlaΦφtka. V na╣em p°φpad∞ sem zapφ╣eme p°φkazy:
    1.  Color = clGreen;
       Caption = "ZelenΘ okno";
    Prvnφ p°φkaz zm∞nφ barvu formulß°e na zelenou (hodnotu konstanty barvy clGreen vlo╛φme do vlastnosti Color) a druh² zm∞nφ titulek formulß°e (vlo╛φ text - °et∞zec znak∙ - ZelenΘ okno do vlastnosti Caption; °et∞zec znak∙ je nutno zapisovat v uvozovkßch). Kdy╛ nynφ aplikaci p°elo╛φme a spustφme, pak po stisknutφ na╣eho tlaΦφtka tyto akce prob∞hnou.
  12. Vlastnosti objekt∙ tedy m∙╛eme m∞nit pomocφ Inspektora objekt∙ (p°i nßvrhu), nebo p°φkazy jazyka C++ (za b∞hu aplikace). Jestli╛e v programu zapφ╣eme n∞kter² p°φkaz chybn∞, pak je signalizovßna chyba. Ud∞lejte v zapsan²ch p°φkazech n∞jakou chybu (nap°. vynechte n∞kter² st°ednφk nebo zkomolte n∞kter² identifikßtor) a pokuste se aplikaci znovu spustit. Podφvejte se na zp∙sob signalizace chyby. Chybu op∞t odstra≥te.
  13. P°idejte na formulß° dal╣φ tlaΦφtka, nap°. tlaΦφtka ╚erven², Modr² atd. a zajist∞te, aby p°i stisknutφ z t∞chto tlaΦφtek se odpovφdajφcφm zp∙sobem zm∞nila barva a nßzev formulß°e. Program vyzkou╣ejte.
  14. Na formulß° p°idßme je╣t∞ tlaΦφtko, kter²m budeme moci formulß° uzav°φt (ukonΦit b∞h programu). Toto tlaΦφtko nazveme nap°. Konec a obsluha stisku tohoto tlaΦφtka bude tvo°ena p°φkazem:
    1.  Close();
  15. V okn∞ Editoru k≤du si m∙╛eme prohlΘdnout vytvo°en² program (p°esn∞ji °eΦeno programovou jednotku formulß°e). Ka╛d² formulß° mß svoji programovou jednotku. V tomto zdrojovΘm souboru jsou uvedeny nßmi vytvo°enΘ obsluhy udßlostφ pro o╣et°enφ stisknutφ na╣ich tlaΦφtek. Jestli╛e programovou jednotku formulß°e ulo╛φme do souboru (volba File | Save; zvolte nap°. adresß° C:\PRAC), pak Builder vy╛aduje pou╛itφ p°φpony CPP. Ka╛d² formulß° mß mimo svΘ programovΘ jednotky dal╣φ soubor, obsahujφcφ popis vzhledu formulß°e (vlastnosti formulß°e a objekt∙ umφst∞n²ch na formulß°i). Tento soubor mß p°φponu DFM, jednß se o binßrnφ soubor, kter² si b∞╛n²m zp∙sobem nem∙╛eme prohlΘdnout (nenφ to ani pot°eba, nebo╗ vzhled formulß°e vidφme). JmΘno tohoto souboru je stejnΘ jako jmΘno programovΘ jednotky formulß°e (li╣φ se pouze p°φponou). Implicitnφ jmΘno soubor∙ prvnφho formulß°e je Unit1 (toto jmΘno m∙╛eme p°i uklßdßnφ soubor∙ zm∞nit). Existuje je╣t∞ hlaviΦkov² soubor formulß°e. Jeho implicitnφ jmΘno je Unit1.H.
  16. Projekt obsahuje mimo souboru programovΘ jednotky formulß°e, hlaviΦkovΘho souboru formulß°e a souboru vzhledu formulß°e (t∞chto trojic soubor∙ m∙╛e b²t i vφce, sklßdß-li se projekt z vφce formulß°∙) i soubory projektu. Ka╛d² projekt mß t°i projektovΘ soubory, kterΘ jsou vytvß°eny a udr╛ovßny Builderem a my bychom je nem∞li m∞nit. Tyto soubory majφ p°φpony BPR, CPP a RES. Implicitnφ jmΘno je Project1. Je vhodnΘ ka╛d² projekt uklßdat do samostatnΘho adresß°e. V╣echny soubory projektu a formulß°∙ ulo╛φme p°φkazem File | Save All. Po zadßnφ p°φkazu se nßs Builder ptß na jmΘna programov²ch jednotek a jmΘno projektov²ch soubor∙ (zde zadßvßme specifikaci souboru s p°φponou BPR). Vytvo°en² projekt ulo╛te do adresß°e C:\PRAC\PR1 (pro soubory pou╛ijte implicitnφ jmΘna). Po ulo╛enφ projektu jej znovu p°elo╛te a vyzkou╣ejte. Podφvejte se takΘ do adresß°e C:\PRAC\PR1 jakΘ obsahuje soubory. Je zde takΘ soubor s p°φponou EXE. Tento soubor obsahuje nß╣ p°elo╛en² projekt. M∙╛eme jej spustit p°φmo ve Windows (nenφ nutno jej spou╣t∞t z prost°edφ Builderu). Vyzkou╣ejte.
  17. Dßle zaΦneme vytvß°et nov² projekt. K otev°enφ novΘho projektu pou╛ijeme p°φkaz File | New Application. Tφm vytvo°φme prßzdnou aplikaci (jako p°i spu╣t∞nφ Builderu). Do st°edu formulß°e vlo╛φme komponentu Edit (Φtvrtß zleva na strßnce Standard Palety komponent). Kdy╛ nynφ na╣φ aplikaci spustφme m∙╛eme do tΘto komponenty zapisovat libovoln² text. P∙vodnφ text zobrazen² v tΘto komponent∞ byl Edit1, je to hodnota vlastnosti Text tohoto editaΦnφho ovladaΦe. Zru╣φme hodnotu tΘto vlastnosti v Inspektoru objekt∙ a v ovladaΦi nebude nic zobrazeno.
  18. V na╣i aplikaci budeme zji╣╗ovat poΦet znak∙ zapsanΘho textu. Pot°ebujeme tedy vypisovat v²sledek. K v²pisu pou╛ijeme komponentu Label (t°etφ zleva). Umφstφme tuto komponentu na formulß° pod editaΦnφ komponentu. Implicitnφ text je Label1, je to hodnota vlastnosti Caption. Zru╣φme tento text (po zru╣enφ textu komponenta Label nebude vid∞t). Titulek formulß°e zm∞nφme na Zji╣╗ovßnφ dΘlky textu .
  19. Na formulß° p°idßme je╣t∞ tlaΦφtko, jeho╛ stisknutφ spustφ proces zji╣t∞nφ dΘlky zapsanΘho textu. TlaΦφtko vybavφme textem Zjisti. Dßle musφme vytvo°it obsluhu udßlosti stisknutφ tlaΦφtka. V tΘto obsluze zjistφme dΘlku textu metodou Length, kterou aplikujeme na vlastnost Text instance editaΦnφho ovladaΦe Edit1 (Edit1->Text.Length(); Edit1->Text je zapsan² text, a na tento text aplikujeme metodu tak, ╛e jmΘno metody dopln∞nΘ zßvorkami zapφ╣eme za teΦku). Tφm zφskßme Φφselnou hodnotu (Φφselnou hodnotu nelze p°φmo zobrazit; hodnota vlastnosti Caption je typu AnsiString; °et∞zec znak∙), kterou musφme p°evΘst na °et∞zec znak∙ konstruktorem AnsiString (vytvo°φme objekt tohoto typu). Aby se v²sledek zobrazil, je t°eba vytvo°en² °et∞zec p°i°adit do vlastnosti Caption komponenty Label1. Obsluha bude tedy tvo°ena p°φkazem:
    1. Label1->Caption = "PoΦet znak∙ = " + AnsiString(Edit1->Text.Length());
    Jestli╛e pracujeme s vlastnostφ n∞jakΘ komponenty, pak zapisujeme jmΘno komponenty, -> a jmΘno vlastnosti, kdy╛ pracujeme s vlastnostφ samotnΘho formulß°e, pak zapisujeme pouze jmΘno vlastnosti (i v tomto p°φpad∞ bychom mohli pou╛φt jmΘno formulß°e, nap°. Form1->Color).
  20. Aplikaci m∙╛eme vyzkou╣et. Bylo by asi v²hodnΘ, aby p°i stisknutφ klßvesy Enter v²poΦet dΘlky prob∞hl automaticky, abychom nemuseli maΦkat tlaΦφtko. Zde vyu╛ijeme to, ╛e formulß° m∙╛e obsahovat jedno implicitnφ tlaΦφtko, kterΘ se stiskne p°i stisku klßvesy Enter. Implicitnφ tlaΦφtko vytvo°φme nastavenφm vlastnosti tlaΦφtka Default na True (zm∞nu hodnoty False na True a naopak v Inspektoru objekt∙ dosßhneme dvojit²m kliknutφm na tΘto hodnot∞). Prove∩te toto vylep╣enφ na╣φ aplikace.
  21. Nynφ se pokusφme tuto aplikaci zm∞nit a to tak, ╛e zobrazenß informace o dΘlce textu bude p°i zapisovßnφ textu stßle aktualizovßna. V na╣i aplikaci tedy zru╣φme tlaΦφtko a vyu╛ijeme to, ╛e p°i zßpisu ka╛dΘho znaku (zm∞n∞ textu v editaΦnφm ovladaΦi) vznikß pro editaΦnφ ovladaΦ udßlost OnChange. Tato udßlost je implicitnφ udßlostφ editaΦnφho ovladaΦe a kostru jejφ obsluhy m∙╛eme vytvo°it dvojit²m kliknutφm na editaΦnφm ovladaΦi. Obsluha tΘto udßlosti bude tvo°ena stejn²m p°φkazem jako v p°edchozφ verzi byla obsluha stisku tlaΦφtka. Aplikaci spustφme a vidφme, ╛e p°i zßpisu textu do editaΦnφho ovladaΦe, se hodnota dΘlky textu stßle m∞nφ. Zajist∞te je╣t∞, aby tato informace byla zobrazena i p°ed zahßjenφm zßpisu (nastavte hodnotu vlastnosti Caption komponenty Label1).
  22. ZaΦneme op∞t s novou aplikacφ. Na formulß° umφstφme editaΦnφ ovladaΦ, komponentu ListBox (okno seznamu °et∞zc∙) a dv∞ tlaΦφtka. Titulek formulß°e zm∞nφme na Demonstrace seznamu, editaΦnφ ovladaΦ vyprßzdnφme a tlaΦφtka popφ╣eme &P°idat a &Vyprßzdnit (znaky & pou╛φvßme v popisu tlaΦφtek pro oznaΦenφ zkracovacφch klßves). TlaΦφtko P°idat nastavφme jako implicitnφ. P°i stisku tlaΦφtka P°idat vezmeme text zapsan² v editaΦnφm ovladaΦi a p°idßme jej do seznamu °et∞zc∙. Vytvo°φme tedy obsluhu stisknutφ tohoto tlaΦφtka s p°φkazem:
    1. ListBox1->Items->Add(Edit1->Text);
    Zde jsme pou╛ili metodu Add p°idßvajφcφ parametr (text zapsan² do editaΦnφho ovladaΦe) do vlastnosti Items (seznam °et∞zc∙) komponenty ListBox1. Obdobn∞ vytvo°φme obsluhu stisknutφ druhΘho tlaΦφtka (pou╛ijeme zde metodu Clear vlastnosti Items; je bez parametr∙ - za jmΘno metody zapφ╣eme prßzdnΘ kulatΘ zßvorky).
  23. Kdy╛ na╣i aplikaci vyzkou╣φme, zjistφme n∞kolik nedostatk∙. Bylo by vhodnΘ, aby po p°idßnφ textu do seznamu byl text v editaΦnφm ovladaΦi zru╣en. Dßle by bylo vhodnΘ, aby po vlo╛enφ textu do editaΦnφho ovladaΦe jsme mohli ihned zaΦφt psßt do editaΦnφho ovladaΦe dal╣φ text. Do obsluhy udßlosti stisknutφ tlaΦφtka P°idat vlo╛φme p°φkazy (za ji╛ zapsan² p°φkaz):
    1. Edit1->Text = "";
      Edit1->SetFocus();
  24. Nynφ ji╛ na╣e aplikace pracuje uspokojiv∞. M∙╛eme ale p°ijφt s po╛adavkem, aby seznam °et∞zc∙ byl uspo°ßdßn abecedn∞. Tento problΘm m∙╛eme vy°e╣it pomocφ vlastnosti Sorted komponenty ListBox (nastavφme ji v Inspektoru objekt∙ na True). Pokuste se provΘst tuto zm∞nu.

NovΘ pojmy:


1. Seznßmenφ s C++ Builderem