20. R∙znΘ

 
  1. P°ejdeme op∞t k vytvß°enφ normßlnφch aplikacφ. Dal╣φ komponentou, se kterou se seznßmφme, je komponenta Shape. Tato komponenta umo╛≥uje na formulß° vklßdat zßkladnφ geometrickΘ tvary. Vlo╛en² tvar je urΦen vlastnostφ Shape, kterß v rozbalovacφm seznamu nabφzφ mo╛nΘ hodnoty (nap°. sstCircle pro kru╛nici). Zjist∞te, jak se zobrazφ dal╣φ nabφzenΘ hodnoty. Zobrazen² geometrick² tvar ovliv≥ujφ takΘ vlastnosti Pen (ovliv≥uje okraj tvaru; barva, ╣φ°ka a styl Φßry) a Brush (ovliv≥uje vnit°ek tvaru; barva a v²pl≥ov² vzor). Vyzkou╣ejte.
  2. ZaΦneme vytvß°et novou aplikaci a to signalizaci na ╛elezniΦnφm p°ejezdu. Doprost°ed formulß°e umφstφme komponentu Panel, zru╣φme jejφ titulek a vlo╛φme na nφ vedle sebe dv∞ komponenty Shape. Tyto komponenty zm∞nφme na kru╛nice. Na formulß° dßle vlo╛φme komponentu Timer a zapφ╣eme pro nφ nßsledujφcφ obsluhu udßlosti OnTimer.

  3. if (Shape1->Brush->Color != clRed){
      Shape1->Brush->Color = clRed;
      Shape2->Brush->Color = clWhite;
    }
    else {
      Shape1->Brush->Color = clWhite;
      Shape2->Brush->Color = clRed;
    }
  4. Na╣i aplikaci vylep╣φme p°idßnφm tlaΦφtka, jeho╛ stisknutφ m∞nφ re╛im signalizace (blikßnφ, neblikßnφ). Na formulß° p°idßme tlaΦφtko s textem ?Vlak projel, p°idßme globßlnφ prom∞?, p°idßme bool indikujφcφ stav vlaku (true = vlak jede), nastavφme poΦßteΦnφ hodnotu tΘto prom∞nnΘ na true, vytvo°φme udßlost obsluhujφcφ stisk tlaΦφtka a zm∞nφme obsluhu udßlosti ΦasovaΦe:

  5. bool Vlak = true;
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
      if (Vlak){
        if (Shape1->Brush->Color != clRed){
          Shape1->Brush->Color = clRed;
          Shape2->Brush->Color = clWhite;
        }
        else {
          Shape1->Brush->Color = clWhite;
          Shape2->Brush->Color = clRed;
        }
      }
      else {
        Shape1->Brush->Color = clWhite;
        Shape2->Brush->Color = clWhite;
      }
    }
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      if (Vlak) Button1->Caption = "Vlak se blφ╛φ";
      else Button1->Caption = "Vlak projel";
      Vlak = !Vlak;
    }
  6. P°idejte do aplikace t°etφ (fialovΘ) blikajφcφ sv∞tlo signalizujφcφ bezpeΦn² p°ejezd.
  7. Pokuste se vytvo°it aplikaci znßzor≥ujφcφ semafor na k°i╛ovatce. K dosa╛enφ r∙znΘho ΦasovΘho intervalu pro zobrazenφ ΦervenΘ (nebo zelenΘ) a oran╛ovΘ pou╛φvejte pouze jeden ΦasovaΦ. Interval ΦervenΘ a zelenΘ urΦφme nap°. t°emi udßlostmi OnTimer a interval oran╛ovΘ jednou udßlostφ OnTimer. ╪φzenφ zm∞ny barev budeme provßd∞t celoΦφselnou prom∞nnou inkrementovanou udßlostφ OnTimer. P°i hodnot∞ 3 zhasneme Φervenou a rozsvφtφme oran╛ovou a zelenou, p°i hodnot∞ 4 zhasneme oran╛ovou atd. a p°i hodnot∞ 7 prom∞nnou vynulujeme.
  8. P°idejte je╣t∞ dal╣φ semafor pro druh² sm∞r.
  9. Dßle se seznßmφme s mo╛nostmi v²b∞ru komponent na formulß°i. JednotlivΘ komponenty vybφrßme kliknutφm my╣i. Vφce komponent vybφrßme my╣φ p°i stisknutΘ klßvese Shift. Vφce komponent, kterΘ le╛φ na plo╣e pomyslnΘho obdΘlnφka vybereme my╣φ p°i stisknutΘ klßvese Ctrl (stiskneme tlaΦφtko my╣i v jednom rohu v²b∞rovΘho obdΘlnφka a p°i stisknutΘm tlaΦφtku my╣i p°emφstφme ukazatel my╣i do prot∞j╣φho rohu, kde tlaΦφtko my╣i uvolnφme). VybranΘ objekty m∙╛eme my╣φ p°etßhnout do novΘ pozice, vlo╛it je do schrßnky (ze schrßnky je m∙╛eme umφstit na jin² formulß° nebo panel), zru╣it je apod. Vyzkou╣ejte.
  10. Jestli╛e na formulß°i mßme n∞kolik komponent, kterΘ chceme uspo°ßdat, m∙╛eme vyu╛φt zobrazen² rastr na formulß°i. Komponenty m∙╛eme umis╗ovat pouze tak, aby jejich rohy byly v bodech rastru. Dal╣φ mo╛n² zp∙sob uspo°ßdßvßnφ komponent spoΦφvß ve v²b∞ru komponenty, podle kterΘ budeme zarovnßvat a v╣ech dal╣φch komponent, kter²ch se zarovnßvßnφ mß t²kat. Po tomto v²b∞ru zvolφme v nabφdce Edit | Align a v zobrazenΘm dialogovΘm okn∞ zadßme zp∙sob uspo°ßdßnφ (zadanΘ uspo°ßdßnφ prob∞hne vzhledem k prvnφ vybranΘ komponent∞). Obdobn∞ m∙╛eme zp∙sob uspo°ßdßnφ zadßvat z palety nßstroj∙ zarovnßvßnφ zobrazenΘ po volb∞ View | Alignment Pallete. Vyzkou╣ejte.
  11. Na procviΦenφ prßce s tlaΦφtky vytvo°te tuto aplikaci. Na formulß° vlo╛te ╣est tlaΦφtek. P°i stisku prvnφho, resp. druhΘho p°ekopφrujte jeho vlastnost Font tlaΦφtku t°etφmu, resp. pßtΘmu. U prvnφho a druhΘho tlaΦφtka zadejte p°i nßvrhu jin² typ pφsma. T°etφ tlaΦφtko zakß╛e, resp. povolφ prvnφ tlaΦφtko, tj. zm∞nφ jeho vlastnost Enabled (t°etφ tlaΦφtko slou╛φ jako p°epφnaΦ; p°i lichΘm stisku zakß╛e a p°i sudΘm stisku tlaΦφtko povolφ; m∞≥te i jeho titulek). Obdobn∞ ΦtvrtΘ tlaΦφtko skryje, resp. zobrazφ druhΘ tlaΦφtko, tj. m∞nφ jeho vlastnost Visible. PßtΘ tlaΦφtko bude zv∞t╣ovat rozm∞ry ╣estΘho tlaΦφtka (p°i ka╛dΘm stisku oba jeho rozm∞ry zv∞t╣φ o jeden bod). ⌐estΘ tlaΦφtko bude zmen╣ovat samo sebe (p°i ka╛dΘm stisku se oba jeho rozm∞ry zmen╣φ o jeden bod; testujte, aby jste se nedostali do zßporn²ch hodnot). Na v╣echna tlaΦφtka vlo╛te i vhodnΘ titulky.
20. R∙znΘ II