Beleženje števila zagonov aplikacije na lokalni napravi

Beleženje števila zagonov aplikacije na lokalni napravi

Avtor: Ernest Gungl

Učni cilji: Poznam osnovne programske konstrukte ter programske konstrukte za delo z lokalno podatkovno bazo (TinyDB) in jih smiselno uporabljam: shranjevanje podatkov v lokalno bazo, pridobivanje podatkov iz baze

Naloga:

Sestavite enostavno aplikacijo za risanje pik po ekranu. Aplikacija naj na ekranu prikazuje iz kolikih pik je risba narisana. Na vrhu aplikacije se naj z velikimi številkami izpiše, kolikokrat je bila aplikacija na tej napravi že zagnana. Dodajte še gumb za brisanje risbe.

Primer izdelane aplikacije prikazuje spodnja slika:

(sl1.PNG)

Namig:

Uporabite risarsko platno (Canvas) ter pripadajočega upravitelja dogodkov Canvas.Touched. Za beleženje števila zagonov uporabite lokalno podatkovno bazo TinyDB.

Uporabniški vmesnik oblikujemov oknu Designer:

(sl2.PNG)

Kliknite na Projects -> nov projekt, Start »new project« in ga poimenujte z NAUK_PostopnoVaja1. Sestavite vmesnik po spodnji sliki:

(sl3.PNG)

Vse uporabljene komponente o natančno popisane na naslednji sliki v oknu Components (trenutno je izbrana komponenta HorizontalArrangement1, ki omogoča horizontalno poravnavo komponent). Večina komponent uporabniškega vmesnika (uporabljene so 4 oznake Label, in en gumb Button) se nahaja v oknu User Inteface skupine Palette na levi strani ekrana. Za horizontalno poravnavo komponent je uporabljen gradnik HorizontalArrangement, ki ga najdemo v skupini Layout. Vanj sta povlečeni oznaki napisSteviloPikNaSliki (predstavlja zgolj konstanten napis Število pik na Sliki) in steviloPikNaSliki (prikazuje dejansko število pik na sliki). Vse komponente smo ustrezno poimenovali zaradi lažjega sestavljanja programske kode.

(sl4.PNG)

Platno na katerega rišemo se nahaja znotraj bloka »Drawing and Animation«. Velikost platna ustrezno nastavimo v oknu Properties (komponenta mora biti izbrana). Podatkovno bazo najdemo v zbirki Storage skupine Palette. Za nastavljanje nima nobenih parametrov.

(sl5.PNG)

Širino gumbov in oznak (z izjemo dveh, ki smo ju postavili znotraj HorizontalArrangement) smo nastavili na 100%, da se razširi čez cel ekran.

Za sestavljanje programske kode kliknemo na gumb :

(sl6.PNG)

Najprej ustvarimo dve globalni spremenljivki (pod Built In -> Variables). steviloZagonovPrograma bomo uporabili za shranitev števila zagonov programa, steviloPik pa za stetje števila pik na risbi. Uvedba globalnih spremenljivk je nujna, ko želimo neko vrednost uporabiti v več blokih.

(sl7.PNG)

Najprej bomo sestavili kodo za risanje pik po platnu (Canvas). Za to uporabimo upravitelja dogodkov .Touched (desni klik na gradnik Canvas ). Kordinati x in y povesta pozicijo, na kateri smo kliknili na platno. Barvo pisala za pisanje na platno nastavimo na rdečo (gradnik najdemo v isti skupini kot omenjen upravitelj dogodkov). Za risanje pik uporabimo metodo .DrawPoint, ki ji priredimo koordinati x in y. Globalni spremenljivki steviloPik povečamo število pik za 1 (to storimo vedno, ko se dotaknemo platna), zatem pa prikažemo število pik na zaslonu (steviloPikNaSlikiLabel.Text = steviloPik).

(sl8.PNG)

Sliko (platno) pobrišemo s klikom na gumb brisiEkranButton1, ki pokliče metodo Canvas.Clear (desni klik na gradnik Canvas).

(sl9.PNG)

Ostane nam še realizacija zadnjega dela zahtev. Ker mora naša aplikacija šteti število zagonov le-te, moramo ob vsakem zagonu aplikacije prebrati število trenutnih zagonov, povečati število za 1 in shraniti posodobitve v podatkovno bazo. Ob zagonu programa (to zajamemo z upraviteljem dogodkov .Initialize gradnika Screen), iz baze preberemo trenutno vrednost števila zagonov aplikacije in to vrednost priredimo globalni spremenljivki steviloZagonovPrograma. Če oznaka steviloZagonov v bazi še ne obstaja (pomeni, da aplikacijo zaganjamo prvič), priredimo spremenljivki vrednost 0. Nato povečamo število zagonov aplikacije za 1in shranimo posodobljeno vrednost nazaj v bazo.

(sl10.PNG)

Posodobljeno vrdnost zagonov naše aplikacije tudi prikažemo na zaslonu (steviloZagonovLabel1.Text = steviloZagonovPrograma).

0%
0%