10. diel - Programy XXprofesor, automat a delenie
A je to tu! Desiata časť návodu. To znamená, že by mal byť nejaký zaujímavý ... A taky bude! Chcete si vyrobiť vlastného XXProfesora? Čítajte ďalej a dočkáte sa!
Začnem ale doplnením ešte jedného objektu. Presnejšie zo Smaples. A je to: SPINEDIT
SpinEdit
Je to Edit, v ktorom sa špeciálne vypĺňajú len čísla. Navyše obsahuje tiež 2 sipecka, ktoré číslo zvyšujú alebo znižujú o 1. A čo dôležité nám ponúka Properties v Object Inspector ?:
- Maxvalue - najvyššia hodnota integer zapísaná do SpinEditu
- MINVALUE tak - najnižšia hodnota integer zapísaná do SpinEditu
- Value - číslo napísané vo SpinEditu
Pozor ale na to, keby ste chceli reagovať na zmenu obsahu pomocou procedúry OnChange. Keď totiž zmaže používateľ obsah a chce napísať svoje číslo, program nahlási chybu, že (NIC) nie je Integer. A to teda naozaj nie je!
Ešte mi dovoľte doplniť 3.díl 6.časť. Hovoril som o MASKEDITu Písal som, že sa líši od Editu akurát položkou PasswordChar, ale to nie je pravda. Edit má túto položku tiež. V čom sa teda líši ?:
- EditMask - kliknite na položku dvakrát a zvoľte číselný tvar, aký má mať vyplnenie text
- Character for Blanks - tu si nastavíte znak, ktorý sa zobrazí, keď používateľ zmaže nutné číslo
- Save Literal Characters - či sa majú v Textu zobrazovať tiež bodky, čiarky a ostatné veci, ktoré užívateľ nezapíše
To by bolo a teraz poďme k XXProfesorovi:
Hlavné, čo k tomu budete potrebovať, je vedieť kresliť na PC a programovať v Delphi. A program neobsahuje nič zložité, čo by ste nevedeli! Takže ako na programovanie? Začnite nastavením okna: Name - laboratorium, BorderStyle - bsSingle, Caption - (Ako chcete aby sa to volalo!), Height - 480, Width - 640 a Position - poScreenCenter.
Vložte panel au neho nastavte: Name - HlPanel, Align - alClient, BevelInner i BevelOuter - bvLowered a BevelWidth - 2.
A teraz už Mure u laboratóriách nastaviť ActiveControl. Akú? HlPanel! Teraz budeme vkladať zvyšné objekty (všetky do HlPanelu): 1hlavní obrázok (Image- Name = Walls), 4x SpeedButton (ET1, ET2, ET3 a ET4 - to sú ich mená (Name)), 6x Image (pomenujte, ako chcete), 2x Label (Vysledky, Nastroje), 24x Image (to sú tie najhlavnejšie - pomenuje je vždy ET1A, ET1B, ET1C, ET1D, ET1E a ET1F. Ďalšie zase ET2A, ET2B ... ET2F a tak až k ET4F au všetkých nastavte Visible na false.) a ešte 6x RadioButton (Sekera, Mec, Elektro, Voda, Ohen a štipec). Tým máme vložené objekty, ktoré sú potrebné pre chod a pekný vzhľad programu (jediné, čo chýba je vlastne len 1 Label obsahujúce dátum výroby!). A teraz tu najdôležitejšia časť! Vyrobte si obrázky štyroch tvorov na výskum (bmp približne 95x105 pixelov). To je ešte tá jednoduchšia časť. Mali by ste ich zladiť s obrázkom na pozadí! A potom vyrobiť ku každému výsledok po tom, čo na nich použijete mučiace nástroje a vložte do Image (podľa toho, akého tvora a aký nástroj použijete. Nástroje: Sekera = A, Meč = B, Elektrický prúd = C, Voda = D, Oheň = E a Štipec je F. a čísla tvorov zvoľte podľa toho, do akého obrázku ste umiestnili tvora v klietke - či do ET1, ET2, ET3 alebo ET4). RadioButtonům nastavte Checked na False (okrem Sekera), a Caption na: Sekera = Sekera, Mec = Meč, Elektro = E.Proud, Voda = Voda, Ohen = Oheň a štipec = Skřipec. A teraz už len napísať veľmi jednoduchý program a umiestniť veci na správne miesto (napr. Tých 6 Image voľného mená, do ktorých pre lepší vzhľad umiestnite ilustrácie k mučiacim nástrojom a umiestnite ich blízkosti RadioButton) ...
Nebudeme to preťahovať a skočíme do toho rovno po hlave . Začnime priradením obrázkov
mučiacich nástrojov k RadioButtonům. Po kliknutí na nejaký z obrázkov
nastavte napr .: Mec.Checked: = True;
Ostatné RadioButton automaticky nebudú zaškrtnuté. Takže po kliknutí na
obrázok meča sa zaškrtne RadioButton s nápisom Meč. To isté urobte aj u
ostatných obrázkov! A teraz vám tu napíšem hlavné zdrojový kód, ktorý
použijete pre každý SpeedButton pre OnClick:
ET§A.Visible := False; ET§B.Visible := False; ET§C.Visible := False; ET§D.Visible := False; ET§E.Visible := False; ET§F.Visible := False; if Sekera.Checked then ET§A.Visible := True else if Mec.Checked then ET§B.Visible := True else if Elektro.Checked then ET§C.Visible := True else if Voda.Checked then ET§D.Visible := True else if Ohen.Checked then ET§E.Visible := True else if Skripec.Checked then ET§F.Visible := True;
§ vždy nahraďte číslom za ET v názve SpeedButtonu (takže u ET1 bude miesto § jednička (1)). Potom už len skontrolovať, či sa výsledky pokusov zobrazujú pod správnym tvorom a pod labelom Vysledky (má Caption "Výsledky jednotlivých pokusov:") a či sú pri sebe spráné obrázky nástrojov u správnych RadioButton a tie všetky pod labelom Nastroje (Caption = Nástroje (tá dvojbodka tam patří- nie je to smajlík! Tie sú grafické). No a XXProfesor je hotový. Môžete si ho aj stiahnuť (na konci článku).
Pozrite na to! Sme ešte len pri štvrtom bode a už som vám povedal taj jedného svojho programu. Tak ideme ďalej! A máme tu hneď jednu zaujímavú vecičku (aby ste si uvedomili, že aj celkom zábavná vec môže byť ľahko naprogramovatelná- stačí len nápad). A to:Žrebovanie
To je hra, ktorá (ako ste sa mohli dočítať v TVORBE zožala najväčší
úspech, keď som chodil na ZŠ. A teraz sa s vami podelím o 1. verzii (rovnako
ako u XXProfesora - veď aj ZOOProfesor bol tvorený z 1. verzia): najprv
vložte panel (tentoraz zhezčuje vzhľad okna), pomenujete ho opäť HlPanel
(áno, veľa používam panely - je to lepšie ako program zo sto
šesťdesiatich siedmich oknami nie?
), Align nastavte na alClient, BevelInner na bvLowered a Color na clGray.
Rozmery okna nastavte na: Width = 162 a Height = 214. Do HlPanelu vložte Button
(áno, prostý Button) s Caption X a Name Exit. Do procedúry OnClick napíšte
púhe Close ;.
Teraz už môžeme nastaviť zvyšok vecí okna. Ja som ho pomenoval Project, ale to je úplne jedno. Hlavné sú ostatní parametre: ActiveControl je HlPanel, BorderStyle nastavte na bsNone a Position bude poScreenCenter. To by bolo. Teraz, keď program spustíte, pôjde okno zatvoriť iba tlačidlom Exit (s nápisom X - to má vyzerať ako krížik na zatvorenie okna!). Teraz vložte Timer a pomenujte ho Zmenit. Jeho Interval bude 200. predpíše si premenné:
Playing : Boolean; Jmeni, Odmena, pf : Integer;
A pri okne do procedúry OnCreate napíšte:
Playing := True;
Jmeni := 10;
A teraz vložíme zvyšné objekty ...
Najprv vložte 3 panely (obr1, Obr2 a Obr3). Pri všetkých nastavte Height
aj Width na 41. obr1 (Left = 8, Top = 24) bude obsahovať Shape pomenovaný Shp1
(Left aj Top = 1, Pen.Style = psClear, Height aj Width = 39), Obr2 (Left = 56,
top = 24) bude obsahovať Shape Shp2 (s rovnakými vlastnosťami, ako Shp1) a v
Obr3 (Left = 104, top = 24) opäť Shape a tentoraz s Name Shp3 (vlastnosti ako
u Shp1 a Shp2). To by sme mali 3 hlavné žrebovacie obrázky. Teraz umiestnime
tlačidlo (Button), ktoré pomenujeme Los. Caption bude Zastaviť, Height 17,
Left = 2, Top tiež 2 a Width bude 55. Vložte (do HlPanelu) 7 Label (Kc,
Korún, koruniek, Kredit, Staviť, Vyhra, Vyrobené), 2 Panely (PanelJmeni,
PanelVyhry), nastavte u nich BevelOuter na bvNone, Color na clGray a do
každého jeden Label (do PanelJmeni Prachu a do PanelVyhry zárobok). Ešte
vložte SpinEdit (ja vám hovoril, že ho veľa používam (alebo nehovoril?
) A pomenujte ho čiastkou.
A teraz doplňte parametre podľa tabuľky:
name | caption | Left | top | height | width | font |
kc | Sk | 131 | 160 | auto | auto | Tučný 10 |
korún | Sk | 130 | 75 | auto | auto | Tučná kurzíva 10 |
koruniek | Sk | 131 | 120 | auto | auto | Tučný 10 |
kredit | Vaša aktuálna imanie: | 7 | 144 | auto | auto | Tučný 10 |
staviť | staviť: | 5 | 76 | auto | auto | nemeniť |
vyhra | Posledná výhra: | 7 | 104 | auto | auto | Tučný 10 |
vyrobené | (Dátum výroby) | 58 | 5 | auto | auto | MS Serif 7 strieb. |
prachu | 10 | auto | auto | auto | auto | Tučný 10 |
zárobok | 0 | auto | auto | auto | auto | Tučný 10 |
čiastku | X | 40 | 72 | 26 | 89 | Tučná kurzíva 10 |
U Prachu a zárobok nastavte Align na Alright au čiastku nastavte maxvalue na 10, MINVALUE tak na 0 a Value na 1. A teraz už len vlastný program:
A teraz si vám dovolím napísať procedúry a ku každej popísať, čo sa deje: Najprv procedúra, ktorá sa zavolá (spustí, vykoná, alebo ako chcete ...) potom, čo kliknete na tlačidlo Los:
procedure TProject.LosClick(Sender: TObject); begin if Playing then begin Los.Caption := 'Losovat'; Playing := False; Zmena.Enabled := False; Vyhrat; end else begin Los.Caption := 'Zastavit'; Los.Enabled := False; Playing := True; Zmena.Enabled := True; end; end;
Playing je premenná, ktorá nám určuje, či sa mení symboly žrebovania. Ak sa teda žrebuje a vy kliknete na tlačidlo, zmení sa nápis na tlačidle na "Žrebovať", Playing sa zmení na False (to znamená, že sa už nemení tvary), príkaz Zmena.Enabled: = False; sa zastaví časovač Zmena a výhry; spustí procedúru výhry (tú sme zatiaľ nenadefinovali). A ak nebud Playing True, nápis sa zmení na "Zastaviť", zneprístupní sa tlačidlo Los (nedá sa naň kliknúť (ale to sa v časovači zmení. Je to kvôli neustálemu zastavovanie a spúšťanie rovnakej zostavy tvarov za účelom výhry veľké sumy!) - dosiahne sa toho príkazom Los.Enabled: = False;), Playing sa zmení na True a spustí sa časovač. A teraz preberieme, čo sa stane každú pätinu sekundy (čiže čo napíšeme do procedúr OnTimer:
procedure TProject.ZmenaTimer(Sender: TObject); var x : Integer; begin Los.Enabled := True; Randomize; x := Random(2); if x = 0 then Shp1.Shape := StCircle else Shp1.Shape := StRectangle; x := Random(2); if x = 0 then Shp2.Shape := StCircle else Shp2.Shape := StRectangle; x := Random(2); if x = 0 then Shp3.Shape := StCircle else Shp3.Shape := StRectangle;
Najprv sme sprístupnili tlačidlo Los (viz. Vyššie), potom sme spustili
generovanie náhodných čísel a potom sme do miestnej premennej x (Integer)
dosadili náhodné číslo. Ak je číslo x 0, Shp1 sa zmení na kruh, inak na
obdĺžnik. To isté sa opakuje pre všetky tri tvary.
Ale poďme ďalej:
x := Random(6); if x = 0 then Shp1.Brush.Color := clBlack else if x = 1 then Shp1.Brush.Color := clWhite else if x = 2 then Shp1.Brush.Color := clRed else if x = 3 then Shp1.Brush.Color := clBlue else if x = 4 then Shp1.Brush.Color := clGreen else Shp1.Brush.Color := clYellow;
Opäť dosadíme za x náhodné číslo do 6 (vrátane nuly a okrem 6 = šestka tam nie je!). Ak je číslo 0, Shp1 jedna bude čierny, ak 1, je biely, 2 = červený, 3 = modrý, ak x 4, bude Shp1 zelený a ak niečo iné (= 5), bude žltý. To sa opakuje pre všetky tri Shpey (to je nižšie
x := Random(6); if x = 0 then Shp2.Brush.Color := clBlack else if x = 1 then Shp2.Brush.Color := clWhite else if x = 2 then Shp2.Brush.Color := clRed else if x = 3 then Shp2.Brush.Color := clBlue else if x = 4 then Shp2.Brush.Color := clGreen else Shp2.Brush.Color := clYellow; x := Random(6); if x = 0 then Shp3.Brush.Color := clBlack else if x = 1 then Shp3.Brush.Color := clWhite else if x = 2 then Shp3.Brush.Color := clRed else if x = 3 then Shp3.Brush.Color := clBlue else if x = 4 then Shp3.Brush.Color := clGreen else Shp3.Brush.Color := clYellow; end;
A to sú celé dve procedúry, ktoré sú automaticky vytvořitelné, ale chýba nám ešte jedna ...
A to je procedúra výhra, ktorú musíte preddefinovať hore (pred private a public za ostatné predpísanie procedúr). Ďalej už proste píšte:
procedure TProject.Vyhrat; var odme : Boolean; begin Odmena := Castka.Value; odme := False; if (Shp1.Shape = Shp2.Shape) and (Shp3.Shape = Shp2.Shape) then begin Odmena := Odmena * 5; odme := True; end;
Najprv uložíme do premennej Odmena hodnotu, akú ste stavili (ktorú ste zadali do sumy). Ďalej sa miestna premenná napuchne nastaví na Fasle (to znamená, že hráč nemá zatiaľ žiadnu výhru). A teraz začína najdôležitejšia časť programu: BODOVANIE! Pokiaľ bude mať Shp1 a Shp2 rovnaký tvar a zároveň ich tvar Shp3 rovnaký ako tvar Shp2 (to znamená, že majú všetky Shpy rovnaký tvar - nižšie to budem písať takto (skrátene)), Odmena sa vynásobí päťkrát a napuchne zmení na True (hráč už niečo vyhral).
if (Shp1.Brush.Color = Shp2.Brush.Color) and (Shp3.Brush.Color = Shp2.Brush.Color) then begin Odmena := Odmena * 5; odme := True; end else
Ak majú všetky Shpy rovnakú farbu, vynásobí sa Odmena tiež 5x (a napuchne zmení na True (to už písať nebudem)). Ak však všetky farby nie sú rovnaké, pokračuje program ďalej:
if Shp1.Brush.Color = Shp2.Brush.Color then begin odme := True; if Shp1.Shape = Shp2.Shape then Odmena := Odmena * 2 else Odmena := Odmena * 1; end else
Ak majú Shp1 a Shp2 rovnakú farbu, vynásobí sa Odmena 2x, ak majú aj rovnaký tvar a 1x, ak nie. A či to neplatí, program pokračuje v zisťovaní podobnosti farieb ďalej:
if Shp2.Brush.Color = Shp3.Brush.Color then begin odme := True; if Shp2.Shape = Shp3.Shape then Odmena := Odmena * 2 else Odmena := Odmena * 1; end else
Ak majú Shp2 a Shp3 rovnakú farbu, stane sa to isté, ako u predchádzajúcej časti.
if Shp1.Brush.Color = Shp3.Brush.Color then begin odme := True; if Shp1.Shape = Shp3.Shape then Odmena := Odmena * 2 else Odmena := Odmena * 1; end;
A nakoniec sa ešte zistí farebná a tvarová podobnosť Shp1 sa Shp3. A tým končí skupina IFU spojených ELSE. Tým ale procedúra nekončí!
if odme = False then Odmena := 0; Vydelek.Caption := IntToStr(Odmena - Castka.Value); Jmeni := Jmeni + Odmena - Castka.Value; Prachu.Caption := IntToStr(Jmeni); Castka.MaxValue := Jmeni;
Ak ste sa netrafili do Zane výhernej varianty (napuchne je False), Odmena je nula. Do nápisu Vysledok sa dosadí Odmena bez vsadenej sumy, prevedená na string. K menu (tj. Koľko vlastníte peňazí) sa pripočíta Odmena a odpočíta stavená čiastka (Castka.Value). Vysledok sa prevedie na string a zapíše do Prachu (nápis, ktorý informuje hráča o jeho majetok) a maximálna hodnota vsadených peňazí sa přeřídí na hodnotu peňazí na konte hráča.
if Jmeni < 1 then begin Castka.Enabled := False; Los.Enabled := False; Castka.Value := 0; end; end;
A nakoniec, ak je meno menšie, než 1, nemôžete (logicky) nič staviť (suma sa zneprístupní), Nemôžete kliknúť na tlačidlo Los a stavená čiastka sa nastaví na 0. A tým máte Losovanie hotové. Navyše si môžete opäť stiahnuť na konci článku.
Tak čo? Her už máte dosť, tak na záver jeden program. A rovnako ako XXProfesor sa bude jednať o program, ktorý môžete vylepšiť (tentoraz nie zmenou vzhľadu, ale rozšírením funkcie. Aké funkcie? Delenie. Áno, teraz vám poviem (napíšem), ako vyrobiť Delenie (a to 2.verzia!):Delenie
Začnime nastavením okna: Width = 340, Height = 290, v položke BorderIcons
nastavte všetko (okrem biSystemMenu) na False, BorderStyle = bsDialog, Caption
= Program na písomné delenie pre kontrolu a podvodníkov, Color si nastavte,
ako chcete a Position = poScreenCenter. A teraz si vložíme objekty: 3x Label
(delenie, RovnaSe a Zostane), 1 Button (Vypocet), 2x SpinEdit (delenec,
deliteľ) a 11x Panel (p1, p2 až p9, Podiel a Zvyšok).
A čo do nich dosadíte? tohle:
name | caption | Left | top | height | width | font |
p1 | 100 | 24 | 33 | 23 | 33 | XXX |
p2 | 31 | 58 | 23 | 33 | XXX | |
p3 | 38 | 83 | 23 | 33 | XXX | |
p4 | 45 | 108 | 23 | 33 | XXX | |
p5 | 52 | 133 | 23 | 33 | XXX | |
p6 | 59 | 158 | 23 | 33 | XXX | |
p7 | 66 | 183 | 23 | 33 | XXX | |
p8 | 73 | 208 | 23 | 33 | XXX | |
p9 | 80 | 233 | 23 | 33 | XXX | |
delenec | --500 | 24 | 8 | 23 | 89 | XXX |
deliteľ | --200 | 120 | 8 | 23 | 49 | XXX |
podiel | 2 | 185 | 8 | 23 | 73 | XXX |
zvyšok | 100 | 280 | 8 | 23 | 27 | XXX |
vypocet | vypočítať príklad | 185 | 40 | 17 | 122 | Tučné 8 |
delenie | : | 112 | 5 | auto | auto | Tučné 14 |
RovnaSe | = | 170 | 7 | auto | auto | Tučné 14 |
zostane | Zb. | 260 | 13 | auto | auto | Tučné 8 |
U panelov a SpinEditů nastavte Color na clWhite, delenec bude mať Maxlength 9, maxvalue 999999999, MINVALUE tak 1 a deliteľa Maxlength = 3, maxvalue 999 a MINVALUE tak tiež 1. A u všetkých panelov nastavte BevelInner aj BevelOuter na bvLowered. A môžeme sa pustiť do programovania ...
Je tu len jedna procedúra. Keď kliknete na Vypocet.
procedure TCentrOkno.VypocetClick(Sender: TObject); var Dlnc, Dltl, Zbtk, Pos, Delka : Integer; Vysledek : string; Cha : Boolean; begin Cha := True; p1.Caption := ''; p2.Caption := ''; p3.Caption := ''; p4.Caption := ''; p5.Caption := ''; p6.Caption := ''; p7.Caption := ''; p8.Caption := ''; p9.Caption := ''; p1.Left := 24-8; p2.Left := 31-8; p3.Left := 38-8; p4.Left := 45-8; p5.Left := 52-8; p6.Left := 59-8; p7.Left := 66-8; p8.Left := 73-8; p9.Left := 80-8; Vysledek := ''; Dltl := Delitel.Value; Delka := Length(Delenec.Text) + 1;
Takže, teraz už máme nastavené nápisy v p1 až p9 na nič a umiestnené v základnej pozícii. Vysledok je tiež zatiaľ prázdny, premenná Dlt má hodnotu Delitel.Value a premenná Dlzka má hodnotu o jedna väčšia, než je počet písmen v delenec.
// Výsledek :
Podil.Caption := IntToStr(Delenec.Value div Delitel.Value);
Zbytek.Caption := IntToStr(Delenec.Value mod Delitel.Value);
Na tom nebolo čo vysvetľovať. Jednoducho som vydělelil delenec deliteľa a vyšiel mi nápis do podielov. A zvyšok som urobil rovnakým spôsobom.
// Příprava : if StrToInt(Delenec.Text[1]) >= Delitel.Value then begin p1.Left := p1.Left - 8; p2.Left := p2.Left - 8; p3.Left := p3.Left - 8; p4.Left := p4.Left - 8; p5.Left := p5.Left - 8; p6.Left := p6.Left - 8; p7.Left := p7.Left - 8; p8.Left := p8.Left - 8; p9.Left := p9.Left - 8; Pos := 2; Dlnc := StrToInt(Delenec.Text[1]) end else
Pokiaľ je v Delnci prvé písmeno (prevedené na Integer) väčšie, alebo rovné deliteľ, posunú sa všetky pčka o 8 pixelov doľava od základnej pozície, Pos bude mať hodnotu 2 a Dlnc bude mať hodnotu prvého písmena v delenec (samozrejme prevedeného na Integer). Ak však nie, pokračuje program tu:
if StrToInt(Copy(Delenec.Text, 1, 2)) >= Delitel.Value then begin Pos := 3; Dlnc := StrToInt(Copy(Delenec.Text, 1, 2)) end else if StrToInt(Copy(Delenec.Text, 1, 3)) >= Delitel.Value then begin p1.Left := p1.Left + 8; p2.Left := p2.Left + 8; p3.Left := p3.Left + 8; p4.Left := p4.Left + 8; p5.Left := p5.Left + 8; p6.Left := p6.Left + 8; p7.Left := p7.Left + 8; p8.Left := p8.Left + 8; p9.Left := p9.Left + 8; Pos := 4; Dlnc := StrToInt(Copy(Delenec.Text, 1, 3)); end else
To boli opäť dve na seba nadväzujúce IFOV časti spojené ELSE. 1 .: Ak je nápis v delenca na prvom až druhom mieste väčší alebo rovný deliteľ, Pos bude 3 a Dlnc ona 2 písmená na začiatku. A pozície pček zostane základné. 2 .: Keď bude 1. až tretie písmeno delenca väčšie alebo rovné deliteľ, bude Pos 4 pčka sa posunú o 8 pixelov doprava a Dlnc bude opäť mať hodnotu oných zisťovaných písmen.
begin p1.Left := p1.Left + 16; p2.Left := p2.Left + 16; p3.Left := p3.Left + 16; p4.Left := p4.Left + 16; p5.Left := p5.Left + 16; p6.Left := p6.Left + 16; p7.Left := p7.Left + 16; p8.Left := p8.Left + 16; p9.Left := p9.Left + 16; Pos := 5; Dlnc := StrToInt(Copy(Delenec.Text, 1, 4)); end;
A nakoniec, ak nesedelo ani jedno z predchádzajúcich zistení, posunú sa pčka o 16p doprava Pos bude 5 a Dlnc budú prvé 4 písmená.
if Delenec.Value < Delitel.Value then begin p1.Left := 24; p2.Left := 31; p3.Left := 38; p4.Left := 45; p5.Left := 52; p6.Left := 59; p7.Left := 66; p8.Left := 73; p9.Left := 80; Pos := 4; Dlnc := StrToInt(Copy(Delenec.Text, 1, 3)); end;
Na záver // Prípravy sme ešte doplnili, že ak je Dlenec menšia ako Deliteľ, budú mať pčka pozíciu, ktorú sme im zadali v Object Inspector, Pos bude 4 a Dlnc prvé 3 písmená. A teraz sa pustíme do vypísania výsledkov:
// Zápis :1. if Pos < Delka then begin try Vysledek := Vysledek + IntToStr(Dlnc div Dltl); p1.Caption := IntToStr(Dlnc mod Dltl) + Delenec.Text[Pos]; Dlnc := StrToInt(p1.Caption); Pos := Pos + 1; except Vysledek := '0'; p1.Caption := ''; end; end else
Pokiaľ bude Pos menšia ako Dlzka, potom sa skúsi (to je to try - nepreberala sme to, ale treba to pochopíte) vydeliť Dlnc Dltlem a pripísať k Vysledok. Nápis p1 bude zvyšok po vydelení Dlnce Dltlem a číslo delenca na "post" mieste. Dlnc sa nastaví na obsah p1 a k Posu sa pridá jednička. Ak to nepôjde (Ak sa napríklad bude deliť nulou), prebehne časť programu od EXCEPT do END ;, teda Vysledok bude 0 a p1 bude prázdne.
begin if Cha = True then begin p1.Caption := Zbytek.Caption + ' '; Cha := False; end; end;
Pokiaľ nebude Pos menšia ako Dlzka a Cha bude True, nápis v p1 sa nastaví na medzeru a Cha na False. Tieto 2 časti programu napíšte celkom deväťkrát (pre každý mezipočet (mezizbytek)). Jediné, čo zmeníte, je, že miesto p1 napíšete p2, p3 atď. Keď skončíte u p9 (nič si z toho nedělejte- je to to isté!):
// Zápis :9. if Pos < Delka then begin try Vysledek := Vysledek + IntToStr(Dlnc div Dltl); p9.Caption := IntToStr(Dlnc mod Dltl) + Delenec.Text[Pos]; Dlnc := StrToInt(p9.Caption); Pos := Pos + 1; except Vysledek := Vysledek; p9.Caption := ''; end; end else begin if Cha = True then begin p9.Caption := Zbytek.Caption + ' '; Cha := False; end; end; end;
A je to! Ak si to chcete stiahnuť, tak môžete o kúsok nižšie! Programy sú hotové, návod je dopísanie a ja si konečne dám šlofíka ...
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 426x (1.37 MB)
Aplikácia je vrátane zdrojových kódov v jazyku Delphi