недеља, 20. мај 2012.

3. Razred - Delphi - Primer - Kalkulator

Delphi

Delphi je programski paket namenjen kreiranju Windows aplikacija. Kranji proizvod Delphi-ja je izvršni program koji rešava yadatke zbog kojih je kreiran u okruženju operativnog sistema Windows. Programski jezik koji koristi Delphi je modernizovana verzija Pascal-a poznata pod nazivom Object Pascal.

Zadatak:

Napraviti aplikaciju kalkulator, aplikacija treba da podrzava osnovne aritmeticke operacije nad brojevima, u zavisnosti od rezultata treba da oboji pozadinu forme crveno, zuto, zeleno za negativan, nulu i pozitivan rezultat respektivno. Ukoliko korisnik ostavi prazna polja prikazati poruku o tome da polja za brojeve moraju da budu popunjena.

 


Početak rada

Program delphi najjednostavnije se pokreće pomoću prečice sa radne površine, ako je prečica postavljena. Drugi način pokretanja je nalazenje prečice u meniju start, Start => Programs => Borland Delphi 7 => Delphi 7.

Kada se pokrene program ekran dobija izgled kao na slici. Polazni ekran ima 8 delova:

1.       Naslovnu liniju – sadrži ikonicu kontrolnog menija programa Delphi, naziv projekta koji se realizuje i tri dugmeta za upravljanje veličinom prozora aplikacije,

2.       Meni liniju – klasična Windows meni linija na kojoj se nalazi 11 opcija koje se aktiviraju klikom misa,

3.       Liniju alata – sadrži najčešće korišćene komande koje se zadaju direktnim klikom miša na odgovarajuću sličicu,

4.       Linija komponenti – sastoji se od više stranica, pri čemu svaka stranica ima svoje komponente,

5.       Prozora za hijerarhijski prikaz komponenti aplikacije (Object TreeView) - se prikazuje hijerarhijsko stablo objekata postavljenih u okviru aplikacije,

6.       Prozora za određivanje osobina objekta i događaja (Object Inspector) -  se nalayi na levoj strani ekrana i služi za podešavanje osobina (Properties) i događaja (Events) objekata koje se formiraju tokom razvoja aplikacije.

7.       Prozora obrasca za dizajniranje - automatski se formira pri pokretanju Delphi-ja i naziva se forma. Forma generički dobija ime Form1 koje se kasnije može promeniti. Ova forma iako prazna poseduje osobine Windows programa: može se premeštati, mogu joj se menjati dimenzije, može se minimizirati, maksimizirati i zatvoriti. Ima i svoju ikonicu koja se dodeljuje pri minimizaciji, ima naslovnu liniju, okvir i radnu površinu. Na radnoj površini se nalazi mreža tačkica koja služi kao pomoć pri postavljanju i poravnavanju komponenti.

8.       Prozora za pisanje programskog koda – ovaj prozor predstavlja editor teksta u koji se unosi programski Pascal kod.

Kreiranje novog projekta

Prazan projekat možemo dobiti na jedan od sledećih načina: pokretanjem programa Delphi ili korišćenjem opcije File => New => Application iz meni linije. Ukoliko želimo da kreiramo konzolnu aplikaciju to postižemo korišćenjem opcije File => New => Other => Console Application.

Pre bilo kog daljeg rada potrebno je snimiti aplikaciju. Snimamo aplikaciju tako što odaberemo opciju File => Save all, prvo dajemo naziv paskal fajla, a onda dajemo naziv projektu, nazivi moraju da se razlikuju. Moj predlog bi bio nazivPrograma za prvi fajl, a za drugi ProjectNazivPrograma.

Komponente

Prilikom kreiranja novog projekta mi dobijemo prozor za formiranje forme, nakon toga trebamo dodati komponente u formi. Najvešćemo najznačajnija svojstva komponenti:

1.       Name (ime) – svojstvo tipa string. Koristi se za pristup datoj komponenti u programskom kodu. Sve komponente istog obrasca (forme) moraju imati različita imena.

2.       Posedovanje komponenata – Aplikacija je vlasnik svih obrazaca (formi) u njoj. Obrasci (forme) su vlasnici svih elemenata (komponenti). Vlasnik komponente nalazi se u svojstvu owner. Broj komponenti kojima je data komponenta vlasnik, nalazi se u svojstvu ComponentCount. Niz komponenata kojima je komponenta vlasnik, nalazi se u svojstvu Components.

3.       Sadržavanje komponenata – Jedna komponenta postaje dete druge komponente kad se umetne u radni prostor te druge komponente. Roditelj komponente predstavlja se svojstvom Parrent. Broj dece neke kontejnerske komponente nalazi se u svojstvu ControlCount elementa. Niz dece predstavlja niz onih komponenata koje data komponenta sadrzi. Nalazi se u svojstvu Controls.

4.       Vidljivost komponenata– Vidljivost komponente kontrolise se svojstvom Visible tipa Boolean. Vrednost True označava da komponentu treba prikazati na ekranu, vrednost False da komponentu ne treba prikazati.

5.       Upotrebljivost komponenti – kontroliše se svojstvom Enabled tipa Boolean. Ako je vrednost True komponenta je upotrebljiva, inače nije upotrebljiva.

6.       Položaj – se određuje svojstvima:

a.       Top(vrh);

b.    Left(levo);
To su koordinate gornjeg levog temena komponente u odnosu na gornji levi ugao radnog prostora roditelja posmatrane komponente.

7.       Veličina -  se određuje svojstvima:

a.       Height(visina);

b.      Width(širina);

8.       Veličina radnog prostora komponente – iskazuje se svojstvima:

a.       ClientHeight  (visina klijenta);

b.      ClientWidth (širina klijenta);

c.       Constraints (ograničenja);

d.      Align (poravnanje);

e.      Anchors (relativan položaj u odnostu na ivice roditelja).

9.       Natpis komponente  - tekst koji se izpisuje na komponentu u formi. Predstavlja se svojstvom Caption (natpis) tipa String. Podrazumevana vrednost natpisa poklapa se sa imenom komponente (Name).

10.   Ctl3D (trodimenzionalna komponenta) – tipa Boolean ima vrednost True ukoliko se komponenta prikazuje za trodimenzionalnim efektima, u suprotnom vrednost False označava prosto dvodimenzionalno iscrtavanje.

11.   ParentCtl3D (trodimenzionalnost roditelja) – tipa Boolean sa vrednošću True označava da komponenta preuzima vrednost svojstva Ctrl3D od svog roditelja. Vrednost False da se broj dimenzija komponente podešava nezavisno od roditelja.

12.   BorderStyle (stil ivica) – moguće vrednosti su:

a.       bsSingle (jednostruka) - označava iscrtavanje okvira čije su ivice jednostruke linije

b.      bsNone (ništa) – označava odsustvo okvira.

13.   BevelKind (vrsta kosina) – određuje da li se oko komponente prikazuju kosine ili ne.

14.   BevelOuter – vrsta spoljašnje kosine.

15.   Bevelnner – unutrašnja kosina.

16.   Cursor – određuje izgled pokazivača miša.

17.   Color – određuje boju komponente.

18.   Font – određjuje osobine teksta koji se prikazuje na komponentu.

  Opis komponeti koje ćemo koristiti u primeru

·         Label (oznaka) - obično se koristi za prikaz nekog statičkog teksta na ekranu. Možemo da menjamo tekst stojstvom Caption.

·         Button (dugme) - prvenstveno se koriste za pokretanje nekih akcija. Ukoliko dva puta kliknemo na dugme Delphi automatski kreira proceduru koja se poziva prilikom klika na to dugme i prikazuje nam editor koda, gde možemo da pisemo kod u zavisnosti šta želimo da uradimo kada kliknemo na neko dugme.

·         EditText (okvir za tekst) – omogućuje unos jednog reda teksta i numeričkih podataka. Ovo je kontejnerska komponenta i sadrži neka svojstva koja se razlikuju u odnosu na klasicne komponente. Ne sadrži svojstvo Caption, umesto toga postoji svojstvo Text. Bitna svojstva za nas su:

o        Text (tekst) – je glavno svojstvo koje predstavlja tekst koji komponenta sadrži. Vrednost može da se menja u toku izvršavanja aplikacije.

o        CharCase (veličina slova) – određuje da li se u tekstu prihvataju mala i velika slova onako kako se unose preko tastature, možemo da stavimo da se svako uneseno slovo automatski konvertuje u malo slovo i obrnuto.

o        PasswordChar (znak za lozinku) – određuje znak koji se na ekranu prikazuje u okviru za tekst kada se unosi lozinka.

·         RadioGroup - grupa radio dugmadi sadrži po nekoliko radio-dugmadi povezanih u nedeljivu i nezavisnu celinu. Unutar svake grupe svakog trenutka može da bude odabrano po jedno dugme. Dugmad unutar grupe vizuelno su povezana pravougaonom linijom koja obuhvata svu dugmad u grupi. Gornja ivica pravougaonika može da sadrži natpis grupe. Sadrži tri bitna svojstva:

o        Items (stavke) – svaka linija teksta predstavlja jedno radio dugme.

o        ItemIndex (indeks stavke) - označava koje je radio dugme u grupi selektovano.

o       


ItemCount – broj radio dugmića u grupi.

 

Rešavanje zadatka

Ubacimo komponente na formu na sledeći tako da forma izleda otprilike ovako:

Komponente na formu možemo ubaciti na dva načina. Jedan način je dvostruki klik na komponentu, u tom slučaju komponenta se stvara na sredini forme, potrebno je promeniti mesto i veličinu komponente. Drugi način je klik na komponentu, pa onda nakon sto je selektovana komponenta kliknemo na formu gde želimo da postavimo komponentu.

Kao što smo rekli, svaka komponenta sadrži svojstvo Name. Preporučljivo je da svi nazivi Labeli počinju sa Lbl_naziv, naziv dugmadi sa Btn_naziv, naziv edit teksta Edt_naziv...

Nakon što imenujemo sve komponente potrebno je dodati funkcionalnost aplikaciji. Dvostrukim klikom na komponentu otvara nam se prozor za pisanje koda. Delphi automatski kreira proceduru koja će se izvršiti kada kliknemo na dugme. Potrebno je samo da unesemo kod J. Da bi smo dalje nastavili sa radom potrebno je da znamo još neke funkcije za konverziju:

 

·         StrToInt(  '845'   ) pretvara string u integer

·         StrToFloat(   '43.23'  ) – pretvara string u realan broj

·         IntToStr(  932  )  - pretvara integer u string

·         FloatToStr( 532.43  ) – pretvara realan broj u string

Nakon toga je potrebno napisati kod funkcije:

 

procedure TForm1.Btn_saberiClick(Sender: TObject);

Var prvi, drugi, rez : Integer;

begin

  prvi := StrToInt(Edt_prvi.  Text);

  drugi := StrToInt(Edt_drugi.Text);

  rez := prvi + drugi;

  Edt_rez.Text := IntToStr(rez);

end;

 

 

Time je prvi deo našeg programa gotov. Sada želimo da modifikujemo program tako da podržava i druge operacije osim sabiranja. Da bi smo to uradili ubacujemo jednu RadioButton komponentu gde ćemo izabrati akciju, komponentu ubacujemo izmedju dugmeta i kontrola za unos drugog broja. Nakon ubacivanja forma bi trebala da izgleda otprilike ovako:


 

Menjamo naziv RadioGroup1 u Operacija i još je potrebno dodati stavke u radio grupi. Dodajemo dugmiće u grupi odabirom svojstva Items i klikom na tri tacke . Nakon toga nam se otvara prozor za unos stavki (dugmica) svaki red teksta predstavljaće po jedno dugme.

 


Nakon što unesemo stavke potrebno je da promenimo tekst dugmeta sa '+' na '=' i da izmenimo kod koji se izvršava. Evo dela koda koji se odnosi na ispitivanje koja je operacija selektovana:

 

if Operacija.ItemIndex = 0 then rez := prvi + drugi

  else if Operacija.ItemIndex = 1 then rez := prvi - drugi

  else if Operacija.ItemIndex = 2 then rez := prvi * drugi

  else if Operacija.ItemIndex = 3 then rez := prvi div drugi;

 

Još samo da obojimo formu u zavisnosti od rezultata, to postižemo sledecim kodom:

if rez < 0 then Form1.Color := clRed

  else if rez = 0 then Form1.Color := clYellow

  else if rez > 0 then Form1.Color := clGreen;

 

Primetimo da naziv svake boje pocinje prefiksom cl. Ukoliko želimo da odštampamo poruku korisniku, na primer ako je ostavio neko prazno polje to postižemo komandom ShowMessage('poruka'). Još bismo mogli da onemogućimo unos teksta u Edit rezultat, to postižemo tako što svojstvo ReadOnly postavimo na True.

Zadatak za vezbu

Kreirati aplikaciju u kojoj se računa idealna težina osobe na osnovu njene visine i težine i daje savet da li osoba treba da se ugoji ili smrsa i za koliko kilograma. Forma treba da sadrži dva dugmeta, prvo je računaj, gde se računa idealna težina i ispisuje poruka, drugo dugme je poništi koje vraća vrednosti komponenti na početno stanje, tj, ukoliko je bio neki tekst u neki od edit-a briše se i tako dalje. Formula za izračunavanje idealne težine je sledeće:

·        Ukuliko je osoba muskog pola idealna težina = visina – 100,

·        Ukoliko je osoba ženskog pola idealna težina = visina – 110.

                   

                   

Нема коментара: