2. diel - Podmienky, cykly, premenné, obrázky a ďalšie komponenty
Tentoraz sa pustíme už do trochu zložitejších vecí. Ale nebojte sa, tak strašné to zas nebude, prídu aj horšie časy! Borland už skôr vyrobil program Pascal (Basic). S ním sa programoval programy v textovom režime MS-DOS. Všetko sa navyše muselo písať.
Dalo sa pracovať s grafikou, ale zložito. A v Delphi? V Delphi sa akurát vloží Bitmap (súbor s koncovkou .bmp) a v okne máte obrázok. No, ale vy už od minule viete, že všetko sa musí robiť cez objekty. Preto tentoraz v prvom bode zavítame do položky "Additional":
A vložíme si ikonku s obrázkom krajinky:
Obrázok (Image)
Image to je prostý obrázok.
Obrázok má tieto špeciálne vlastnosti v tabuľke Properties v Object Inspector:
- Center - obrázok (bitmapa) bude uprostred objektu Image
- Picture - bitmapa, ktorá bude v obrázku zobrazená a uložená. Po kliknutí na 3tečky sa objaví okno. Dáte Load ..., vyberiete si na disku bitmapu a uzavřeteokna pomocou OK. Bitmapa je teraz uložená v programe a nemusíte ju schovávať na disku.
- Stretch - bitmapa sa roztiahne po celej ploche obrázku
- Transparent - keď je TRUE bitmapa bude priehľadná v miestach, kde je rovnaká farba, ako v ľavom dolnom bode bitmapy
A to je z vlastností všetko. Teraz už môžu byť vaše programy zaujímavejšie a krajšie.
Tak som vám ukázal vec z priečinka Additional, ale teraz sa zase vrátime do štandardnej položky "Standard"
Ako druhý objekt si dnes ukážeme panel.
Panel
Je to plocha, vystúpené, prepadnutá alebo rovnako vysoká ako okolia, na ktorú pokladáme ostatné objekty! Je v zložke Standard skoro úplne vpravo. Po kliknutí na plochu sa objaví akoby také tlačidlo. Je ale oveľa väčšie a pri klikanie sa neprehýba. Ale čo keď na neho položíme napríklad tlačidlo, alebo obrázok? Skúste ho posunúť preč z panelu! Che, che, nejde to, čo?
Ak ste si všimli, v okne Object TreeView sa od panelu urobila čiara doprava a až na nej je naviazaný objekt v paneli. A k čomu to teda je? Keď treba chcete časť okna inak farebnú! Čo použijete (zatiaľ, pretože zložitejšie veci ešte nepoznáte)? PANEL!
Aj pri paneli vám poviem pár špecialít v tabuľke Properties v Object Inspector:
- Align - ak ste robili experimenty, možno ste si všimli, že táto
položka je aj inde, ale tu mi pripadala najpodstatnejšie. Je to akoby také
prilepovaniu: - alBottom-objekt sa prilepí ku spodku nedřazeného objektu (má
jeho šírku a neodtrhne ho od spodku objektu)
- alClient-Tak to niekedy dokáže pekne zprzit vašej práci s rozmermi objektu! Ten sa jednoducho roztiahne po celej nadradených objektov a vy s rozmermi nič nenarobíte.
- alLeft-objekt sa prilepí k ľavej strane nedřazeného objektu (má jeho výšku a neodtrhne ho od ľavej časti objektu)
- alNone-objekt zostane rovnaký na rovnakom mieste (neprilepuje sa)
- Alright-objekt sa prilepí k pravej strane nedřazeného objektu (má jeho výšku a neodtrhne ho od pravej časti objektu)
- alTop-objekt sa prilepí k vŕšku nedřazeného objektu (má jeho šírku a neodtrhne ho od vršku objektu)
- BevelInner - nastaví druh vnútornej časti: - bvLowered- je
prepadnutá
- bvNone-je rovnaká ako okolie
- bvRaised-je vystúpená
- BevelOuter - nastaví vystúplosť celého panelu: - bvLowered- je
prepadnutý
- bvNone-je rovnaký ako okolie
- bvRaised-je vystúpený
Pozn .: Ak nastavíte BevelOuter a BevelInner každý opačne, bude vnútro rovnako vysoko ako okolie, ale bude ohraničený rantlom (vystúpeným či kauciám)
- BevelWidth - šírka jedného okraja (dĺžka svahu panela v pixeloch)
- Caption nápis na paneli (ja ho moc nepoužívam, takže ho vždy zmažem) <
- Color - farba pozadia (plochy) panelu
Tak ideme ďalej. Teraz vám poviem (vlastne napíšem), ako si vopred vybrať niekoľko vecí:
Checkbox
CHECKBOX je "zaškrtávacie krabička". Je to malý rámček, u ktorého je popisok. Keď na neho klikneme, objaví sa, alebo zmizne "fajka" v rámčeku.
Checkbox má niekoľko špeciálnych vlastností (prekvapenie, že?):
- Alignment - určíte buď že bude rámček vľavo a nápis vpravo (taRightJustify) alebo naopak - nápis vľavo a rámček vpravo (taLeftJustify)
- Caption - Popisok u rámčeku
- Checked - buď TRUE (rámček je zaškrtnutý), alebo FALSE (je prázdny)
- Color - farba pozadia textu a okolie rámčeku
- Font - font popisku rámčeku
- State - nastaví obsah rámčeku cbGrayed- šedá fajka
cbChecked- čierna fajka
cbUnchecked- prázdny
- cbGrayed- šedá fajka
- cbChecked- čierna fajka
- cbUnchecked- prázdny
A to je z vlastností všetko. Na konci tohto dielu si ukážeme bližší využitie!
A čo keď chcete zo zaškrtávátek vybrať iba jedno? K tomu slúži RadioButton.
RadioButton
V určitej skupine týchto objektov môže byť zaškrtnutý iba jeden. Akurát narozdiel od Checkbox je rámik v tvare kolieska a označený je bodkou! Funkcia v tabuľke Properties v Object Inspector sú rovnaké ako pri checkbox (3.). V jednom nadradenom objekte sa budú RadioButton prepínať medzi sebou. V odlišných však vznikajú skupiny. Napr .: Do Panel1 dáte RadioButton1 a RadioButton2 a do Panel2 dáte RadioButton3 a RadioButton4. Potom sa budú prepínať medzi sebou RB1 a RB2, ale keď na ne kliknete, nezmizne koliesko z RB3 alebo RB4. A naopak ...
V prvom bode som vám ukázal vec z priečinka Additional a teraz navštívime položku System:
Začneme prvým objektom zľava a ostatné až inokedy Timer.
Timer
Kto vie po anglicky, už si asi domyslel, že to bude niečo s časom. Je. Každému sa predsa do programu hodí načasovanie. Trebárs že keď sa otvorí okno (spustí program), je jeho obsah prázdny - a po piatich sekundách BAF, objaví sa tlačidlo- dajme tomu na ukončenie. Áno aj taká blbosť je program. A ja vám teraz napíšem, ako Timer využiť. Ako príklad uvediem ten potroublý program: Najprv to chce poznať funkcie Timeru v tabuľke Properties v Object Inspector:
- Enabled - POZOR !!!!! U Timeru je výnimka: nastaví sa tu, či časovač beží (TRUE), alebo nie (FALSE)!
- Interval - To je základ Timeru. Nastavíte čas v tisícinách sekundy (takže ak chceme tých 5 sekúnd, doplníme 5000), po ktorom sa spustí obsah položky OnTimer; v tabuľke Events.
Vložíme Timer a Button (Tlačidlo) -Ten pomenujeme Koniec a VISIBLE nastavíme na FALSE - tlačidlo nie je vidieť.
A u Timeru-pomenujte ho treba Cas-nastavíme:
- ENABLED na TRUE, pretože chceme, aby Timer bežal.
- INTERVAL na 5000, čo je 5sekund.
Teraz už vieme, že to, čo máme v položke OnTimer sa spustí každých päť sekúnd, ale:
- Nič v nej nemáme
- Stačí nám to iba raz
Preto klikneme na rámček OnTimer a do okna na editáciu textu napíšeme:
Konec.Visible := True; Cas.Enabled := False;
Teda tlačidlo sa zviditeľní a časovač sa zastaví.
Vidíte, A JE TO! Teraz už len nastaviť po kliknutí na tlačidlo Close; a je to kompletne, ako som hore naplánoval ...
A teraz si povieme, ako tvoriť premenné (pre tých, čo nevie čo to je: je to časť pamäte počítača, do ktorej si čokoľvek uložíte, ale musíte vopred určiť, čo do nej chcete uložiť):
Najprv si nájdite v okne s editáciou textu tento úsek:
private { Private declarations } public { Public declarations } end;
Máte ho? Dobre ideme ďalej:
Určovať premenné budeme za (pod) nápis PUBLIC v tvare:
Názov: typ premennej;
Názov-môže byť akýkoľvek (bez mäkčeňov, dĺžňov - iba čísla a písmená)
Typ premennej: dnes si ukážeme jeden:
Integer
Integer je celé číslo od - 2.147.483.648 do 2.147.483.647.
Dá sa s ním voľne počítať. Standartní znamienka:
- KRÁT - * (hviezdička)
- PLUS - + (plus)
- MINUS - - (mínus)
Akurát u delenie je výnimka (delí sa so zvyškom):
- VÝSLEDOK DELENIE - div (vyjde výsledok, ale zvyšok sa vypustí)
- Zvyšok po delení - mod (vyjde zvyšok a výsledok sa vypustí)
Príklady s výsledkami:
5 div 2 = 2
5 mod 2 = 1
5 * 2 = 10
5 + 2 = 7
5 - 2 = 3
Tak sme si ukázali, ako počítať, a teraz si ukážeme, ako čísla využiť:
Potrebujeme poznať príkaz IF.
If (ak)
Jeden z najhlavnejších príkazov v Delphi.
Má tvar: if NázevProměnné znamienko výsledok then
NázevProměnné - meno premennej, u ktorej zisťujete danú vec
Znamienko - nákupný, môže byť:
- = Premenná je rovnaká ako výsledok
- <- premenná je menšia ako výsledok
- > - premenná je väčší ako výsledok
- <> - premenná je iná ako výsledok
- <= - premenná je rovnaká alebo menšia ako výsledok
- > = - premenná je rovnaká alebo väčšia ako výsledok
Výsledok - je to číslo alebo názov inej premenná, ktorú porovnávame s
prvou premennou.
Pr .:
if Cislo1 = Cislo2 then
Close;
Tento príkaz znamená, že ak hodnota premennej číslo1 bude rovnaká, ako hodnota premennej číslo2, ukončí sa program. Ak chcete, aby sa stali dve veci (alebo viac), musíte ich ohraničiť Begin a Ende !:
if Cislo1 = 57 then begin Button1.Caption := 'Tlačítko'; Button1.Hint := 'Popisek tlačítka'; end;
Teraz sa potom, čo bude číslo1 mať hodnotu 57, objaví na tlačidle Button1 objaví nápis tlačidlo a ak je na ňom nastavené, že sa zobrazí HINT, po ukázanie na tlačidlo sa objaví pomocný popisok s nápisom "Popis tlačidla". Vidíte a viete ďalšia vec!
Repeat (Opakovanie)
Opakovanie? Áno to je možné taky. Pomocou príkazu Repeat (OPAKOVAŤ). Program bude jednoducho vyhradenú časť opakovať stále dookola (ale nie do nekonečna - teda presnejšie: záleží na programátorovi)
má tvar
repeat neco; until (rovnice);
Niečo-časť programu, ktorá sa má opakovať
Rovnica-časť programu sa bude opakovať, kým sa nestane to v rovnici
Pr .:
repeat Cislo := Cislo + 1; until (Cislo = 100);
Toto je celkom na nič, ale ako príklad to stačí. K premenné Cislo sa zakaždým pripočíta 1. A až sa hodnota Cislo dostane na stovku, bude program pokračovať ďalej. PS: A čo myslíte, že sa stane, keď nejaký inteligent naprogramuje toto:
repeat Button.Visible := True; until (1=2);
Áno, tlačidlo sa bude do nekonečna zviditeľňovať ... (pre tie pomalší: 1 sa nikdy nebude rovnať dvojke !!!!!)
Opakovanie? Áno to je možné taky. Že už som to písal? Áno, toto je ešte jeden druh opakovania. Ale tu sa vám nestane, že sa bude opakovať do nekonečna:
For (Pro) cyklus
Áno, nie je to celý príkaz a tak ho sem rovno napíšem:
for Integerproměnná: = prvníčíslo to posledníčíslo do
O čo ide? Tento príkaz bude opakovať časť programu za príkazom (buď jeden príkaz, alebo príkazy ohraničené Begin a Ende). Ale: pri prvom priebehu časti programu sa bude Integerproměnná (nejaká premenná typu Integer) rovnať premenné, či číslu prvníčíslo. Pri ďalších opakovaniach sa k Integerproměnné pripočíta vždy jednička. Akonáhle bude mať Integerproměnná rovnakú hodnotu ako posledníčíslo, opakovanie skončí.
Pr .:
for Cislo := 0 to 15 do Cislo2 := Cislo2 + Cislo;
V prvom kole sa k číslo2 pripočíta 0, v druhom 1 ... a v poslednom 15.
Celkom jednoduché a lepší ako repeat, ale k niečomu sa treba viac hodiť nemusí ...
Je čas urobiť deťom pá pá! Nie, nie, nie! Teletubbies NIE! A koniec jakbysmet.
Došlo na príklad:
Už toho viete celkom dosť, tak si urobíme kvalitný program:
Form1 premenujte na Okno, BorderStyle na bsNone a ostatné ako chcete. Pridajte tlačidlo a pomenujte ho Ukoncit. Caption bude "KONIEC" a Visible False. Hlavne to nepúšťajte, nejde to zvřít (leda tak pomocou Alt + F4). Nastavte, že po kliknutí na tlačidlo sa program ukončí (príkaz Close;).
A teraz vložte 2 RadioButton. Jeden pomenujte On a druhý Off. On bude mať Caption "Možno ukončiť" a Off "Nemožno ukončiť". Kliknite dvakrát na On a objaví sa (rovnako ako u tlačidlá) okno na editáciu textu. Napíšte:
Ukoncit.Visible := True;
To isté urobte u Off, ale napíšte:
Ukoncit.Visible := False;
Pre dokonalosť u Off v položke Checked nastavte True; A je to pri kliknutí na On sa tlačidlo objaví a keď kliknete na Off, zmizne!
Zatiaľ sme moc vecí zvrchu nevyužili a taky nevyužijeme, ale aby robil program niečo zjímavého, pridáme pár vecí: Pomocou Image môžete pridať obrázky, ale teraz sa pustíme do niečoho, čo vám bude pripadať možno trochu olej Olej:
Vložte časovač (Timer) a pomenujte ho Timer (proste zmažte jedničku ). Interval nastavte na 250 a Enabled na False. Vytvorte si premennú Cislo! Kliknite dvojito na Okno (síce predbiehajú, budem o tom hovoriť až nabudúce, ale to snáď vydržíte), objaví sa odsek (procedúra) v texte, kam sa píše to, čo sa stane pri spustení programu. Sem dajte:
Cislo := 0;
A pridáme zase dva RadioButton (na panel !!! Pokojne na nemajú príliš vystupovať). Play a Stop. U Stop nastavíme Checked na True. U Play nastavíme, že po kliknutí naň sa spustí Timer (Timer.Enabled: = True;) au Stop Timer.Enabled: = False;
A teraz Panel. Nastavte Name na Panel a BevelOuter na bvRaised. A teraz sa vráťme k Timeru. Kliknite na neho dvakrát (je to to isté, ako kliknúť na položku OnTimer v Events). Napíšte:
Cislo := Cislo +1; if Cislo = 1 then Panel.BevelOuter := bvNone; if Cislo = 2 then Panel.BevelOuter := bvLowered; if Cislo = 3 then Panel.BevelOuter := bvNone; if Cislo = 4 then begin Panel.BevelOuter := bvRaised; Cislo := 0; end;
A je to! Uvidíte sami, čo bude Panel robiť. A to je pre tentokrát všetko. Užite si hranie s Delphi a Nestrácajte čas hraním hier ! Tak jo, ahoj, asi pôjdem pariť Flashpoit ..
... Kukensius
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkamiStiahnuté 1363x (300.24 kB)