Programové změny vlastností

V první lekci jsme měnili některé vlastnosti objektů během návrhu aplikace (ještě před jejím spuštěním), v této lekci si ukážeme, jak je možné měnit vlastnosti objektů v průběhu programu. Vytvoříme jednoduchý základ pro pexeso, při kterém se kliknutím na "kartičku" změní její barva a objeví se číslo, zatímco při dvojím kliknutí se "kartička" opět "otočí" (číslo zmizí a barva se nastaví na původní). Pro lepší představu máte k dispozici ukázku .


Kartičky jsou tvořeny TLabely, vytvořte nejprve první s vhodnými rozměry (třeba 50x50px), ve vlastnosti Autosize vyberte False, aby se nepřizpůsoboval velikosti textu. Určete barvu a vlastnosti textu (Alignment je zarovnání, zvolte na střed) a potom "kartičku" rozkopírujte, kolikrát budete potřebovat. Všimněte si, že Delphi vytváří automaticky názvy nových objektů. U rozsáhlejších projektů bude lepší ve vlastnosti Name názvy objektů upravovat například podle jejich funkce.

Jakmile jsou připraveny všechny kartičky, můžeme upravovat jejich události. Při kliknutí (OnClick) chceme změnit popisek (Caption) a barvu (Color) první kartičky (Label1, pokud jste si ji nepřejmenovali). Klikněte dvakrát do políčka vedle události OnClick objektu Label1 a doplňte připravenou proceduru do tohoto tvaru:

procedure TForm1.Label1Click(Sender: TObject);
begin
Label1.Caption:='3';
Label1.Color:=clFuchsia;
end;
Oba doplněné řádky mají podobný význam:
Label1.Caption - název objektu.název vlastnosti
:= - operátor přiřazení jazyka Pascal
'3' - text, který se má vypsat (vložit do Caption), v Pascalu je potřeba hodnoty typu znak (slovo, řetězec) uzavírat mezi apostrofy (na anglické klávesnici mezi středníkem a Enter)

Podobným způsobem upravíme i událost OnDblClick (dvojklik):

procedure TForm1.Label1DblClick(Sender: TObject);
begin
Label1.Caption:='';
Label1.Color:=clSkyBlue;
end;
Vlastnosti Caption je přiřazen prázdný řetězec '' (dva apostrofy bez mezery).

Pokud stejným způsobem upravíte události dalších "kartiček", přidáte nadpis a tlačítko pro ukončení, bude aplikace připravena. Jistě vás napadá, čím by se dalo toto minipexesíčko vylepšit, třeba vydržíte tak dlouho, abyste se naučili všechno, co bude k vylepšení potřeba :-).


Aplikaci ukládej do složky s názvem lekce2

Úkoly:

Základní úloha:

Vytvoř aplikaci Pexesíčko alespoň se šesti kartičkami podle textu lekce.


Úloha na plus (za každou přiměřeně náročnou logickou řadu jedno plus, za pomoci vyučujícího matematiky také námět na žákovskou odbornou činnost):

Logické řady
Vytvoř aplikaci s využitím logických řad, kterou by pro promítání ve třídě mohl využít vyučující matematiky. Postupně by klikáním na prázdná (nebo nějak označená, očíslovaná) políčka odkrýval čísla logické řady, dokud by žáci neodhalili její logiku a nepřišli na další číslo.


Úloha na jedničku:

Co je na obrázku?
Vytvořte aplikaci pro známou televizní hru, ve které se postupně odkrývají určené části obrázku, dokud soutěžící nedokážou uhodnout, co na obrázku je (je možné využít vlastnost Visible - viditelnost, nebo Transparent - průhlednost).


Úloha pro experty (námět pro žákovskou odbornou činnost):

Doplňte úlohu na jedničku o možnost načtení nového obrázku (pro načtení obrázku můžete využít příkaz - Image.Picture.LoadFromFile('obrázek.jpg');). Hezkých témat pro tuto aplikaci je dost - osobnosti, hrady a zámky, savci atd.