Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana...

28
1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma je poznata po programskim jezicima kao što su Pascal, C, C++... Ustvari, Delphi je objektni Pascal, dakle proširen na 32-bitne sisteme. Delphi je dobio ime prema legendarnom grčkom proročištu, a i njegov zaštitni znak je upravo grčki hram. Još jedna osobina vezana za ovo je da svakom exe file-u automatski daje ikonu baklje. Delphi je vrlo moćan alat, izuzetno jasan i matematički definisan.. Svaka akcija u Windows-u se moţe napraviti u Delphiju, tako da se jedan celi operativni sistem moţe napraviti u Delphiju. Štaviše, sam Delphi je napravljen u Delphiju. TakoĎe je i kompletan alat. Naime, moguće je manipulisati bazama podataka, SQL-om, HTML-om, game driverima i sl. Njegova najznačajnija osobina je kompatibilnost. Sam programer moţe kreirati nove komponente i tako prilagoditi Delphi samom sebi. RAD U Delphiju Pri startovanju Delphija otvara se radno okruţenje kao na slici. Delphi okruţenje se sastoji od sledećih delova: - glavnog menija i traka sa alatima - palete komponenti (Component palette) - Form Designer (dizajner forme) - Code Editor (editor programa) - Object Inspector (inspektor objekata) - Code Explorer (istraţivač programa) - Project Manager (administrator projekta) PROJEKTI Dok se piše Delphi aplikacija dosta toga se dešava u pozadini. Grupa projekata se koristi za administriranje grupom projekata pisanih na Delphiju, koji zajedno formiraju kompletan softverski proizvod. Delphi upravlja projektima koristeći nekoliko datoteka za podršku. Kada prvi put kreirate projekt, Delphi će kreirati najmanje četiri datoteke (podrazumeva se tipična Delphi GUI aplikacija): - Izvorni kod projekta. - Junit glavne forme. - Resursna datoteka glavne forme. - Resursna datoteka projekta

Transcript of Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana...

Page 1: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

1 prof Ljiljana Jovičin Blagojević

UVOD

Delphi je proizvod firme Borland danas poznate kao Inprise Ova firma je poznata po programskim

jezicima kao što su Pascal C C++ Ustvari Delphi je objektni Pascal dakle proširen na 32-bitne sisteme

Delphi je dobio ime prema legendarnom grčkom proročištu a i njegov zaštitni znak je upravo grčki

hram Još jedna osobina vezana za ovo je da svakom exe file-u automatski daje ikonu baklje

Delphi je vrlo moćan alat izuzetno jasan i matematički definisan Svaka akcija u Windows-u se moţe

napraviti u Delphiju tako da se jedan celi operativni sistem moţe napraviti u Delphiju Štaviše sam Delphi

je napravljen u Delphiju

TakoĎe je i kompletan alat Naime moguće je manipulisati bazama podataka SQL-om HTML-om

game driverima i sl

Njegova najznačajnija osobina je kompatibilnost Sam programer moţe kreirati nove komponente i tako

prilagoditi Delphi samom sebi

RAD U Delphiju

Pri startovanju Delphija otvara se radno okruţenje kao na slici

Delphi okruţenje se sastoji od sledećih delova

- glavnog menija i traka sa alatima

- palete komponenti (Component palette)

- Form Designer (dizajner forme)

- Code Editor (editor programa)

- Object Inspector (inspektor objekata)

- Code Explorer (istraţivač programa)

- Project Manager (administrator projekta)

PROJEKTI

Dok se piše Delphi aplikacija dosta toga se dešava u pozadini Grupa projekata se koristi za administriranje

grupom projekata pisanih na Delphiju koji zajedno formiraju kompletan softverski proizvod

Delphi upravlja projektima koristeći nekoliko datoteka za podršku

Kada prvi put kreirate projekt Delphi će kreirati najmanje četiri datoteke

(podrazumeva se tipična Delphi GUI aplikacija)

- Izvorni kod projekta

- Junit glavne forme

- Resursna datoteka glavne forme

- Resursna datoteka projekta

2 prof Ljiljana Jovičin Blagojević

Tipovi datoteka koji se koriste u Delphiju

Nastavak Opis

pos pas-Izvorni kod jezika Object Pascal Za svaki junit stoji jedna ovakva datoteka kao i bilo

koja datoteka izvornog koda koju dodajete projektu

dfm Datoteka forme Ova datoteka je u stvari skrivena binarna resursna datoteka (res) Ona

predstavlja opis forme i svih njenih komponenti Svaka forma ima svoju dfm datoteku

dsk Datoteka radne površine projekta Ova datoteka čuva podatke o načinu na koji se prikazuje

radna površina nakon poslednjeg zapisivanja (odnosno zat varanja) projekta

dof Datoteka opcija projekta Ova datoteka sadrţi opcije projekta koje su definisane u dijalogu

Project Options

exe Finalni izvršni programcfgKonfiguraciona datoteka projekta Ova datoteka primarno sadrţi

trenutno odabrane opcije prevodioca i programa za povezivanje koje se odnose na tekući

projekt

dcu Prevedena binarna objektna datoteka Ove datoteke kreira prevodilac u toku prevoĎenja vaših

Object Pascal junita

dpr Izvorni kod projekta

res Prevedena binarna resursna datoteka

Zadatak

1 Kreirajte nov Folder na disku

2 Otvorite Delphi

3 File-New Application (na ekranu se pojavljuje prazna forma)

4 File-Save All i upišite naziv Junita i naziv projekta

5 Odaberite opciju Project- Build Test

6 File-Close All

7 PronaĎite svoj Folder i primetićete nekoliko datoteka (obično 8)

OBJEKTI

Objekti su ustvari suština Delphija Nema Delphija bez objekata Naime sve što vidite u Delphiju i sa čime

radite su objekti

Tako recimo čim otvorite Delphi dobijate prvi i glavni objekt sa kojim

ćete raditi a to je Form Form je ustvari prozor na koji se stavljaju ostali

objekti Naravno Delphi ne bi bio to što jeste da se objektima ne moţe

manipulisati Vrlo vaţna odlika objekata je nasljeĎivanje Naime kad god

se jedan objekat stavi na drugi ( npr Label na Form ) ovaj prvi

postaje dete ( engl Child ) a drugi roditelj ( engl Parent ) te će po toj

logici prvi objekt naslediti neke osobine od drugog ( npr boju font )

Vaţno je napomenuti da broj dete objekata uopšte nije ograničen za jedan roditelj objekt To dopušta

itekako veliku slobodu programeru

Kao i sve u Delphiju programer moţe sam stvarati objekte po svom nahoĎenju i svojim ţeljama

Najvaţnije na kraju za svaki objekt vezane su njegove osobine ( engl Properties ) Pomoću njih se

manipuliše objektima

Osobine se menjaju na dva načina

Onaj koji se prvi nauči je pomoću Object Inspectora To je prozor koji se nalazi sa leve

strane i uvijek je otvoren On sadrţi osobine svih objekata koje trenutno programer koristi ali

je samo jedna vidljiva i to ona koja je pod fokusom ( na koju je kliknuto mišem ) Tako

recimo Form kao glavni objekt sadrţi sledeće osobine

3 prof Ljiljana Jovičin Blagojević

Action Izaberete neku proceduru koja će biti obavljena pri otvaranju prozora

ActiveControl Pokazuje objekat koji je aktivan nakon otvaranja prozora

Align Prijanjanje uz neku od ivica ekrana

Anchors Pokazuje kako je objekat vezan za roditelj objekat

AutoScroll OdreĎuje da li će se automatski pojaviti scrollbarovi ako je to potrebno

AutoSize OdreĎuje da li će objekt tako prilagoditi veličinu da nema slobodnog prostora

BiDiMode Pravac objekata

BorderIcons Ikone poput minimize maximize close

BorderStyle OdreĎuje stil prozora ( npr Sizeable - moguće je mijenjati veličinu u radu )

BorderWidth Širina okvira

Caption Naslov ( npr u ovom prozoru je naslov Programiranje Osobine )

ClientHeight Visina korisnog dela prozora

ClientWidth Širina korisnog dela prozora

Color Boja

Constraints Ograničenja ( npr visine )

Ctl3D OdreĎuje da li će objekat biti 3D renderisan

Cursor OdreĎuje kakav će kursor biti iznad objekta

DefaultMonitor OdreĎuje koji objekat će biti glavni

DockSite OdreĎuje da li je objekat vezan

DragKind OdreĎuje vrstu povlačenja objekta

DragMode OdreĎuje način povlačenja objekta

Enabled Pokazuje da li je objekat ţiv

Font OdreĎuje font na objektu

FormStyle Stil prozora ( npr MDIChild - prozor unutar drugog prozora )

Height Visina objekta ( dimenzija po y-osi )

HelpContext Dio Help file koji će biti prikazan po pritisku na Whats this

HelpFile OdreĎuje koji file sluţi kao Help file

Hint Tekst koji se nalazi u ţutom okviru koji sluţi kao objašnjenje

HorzScrollBar OdreĎuje osobine horizontalnog scrollbara

Icon Ikona u gornjem lijevom uglu prozora

KeyPreview OdreĎuje da li će objekat reagovati na tastaturu prije aktivne kontrole

Left Udaljenost objekta od lijeve strane roditelj objekta ( ovdje ekrana )

4 prof Ljiljana Jovičin Blagojević

Menu Pokazuje na meni tog prozora

Name Ime objekta ( automatski je Form1 ali se moţe mijenjati )

ObjectMenuItem Pokazuje na jedan dio menija

OldCreateOrder OdreĎuje kreiranje i uništavanje objekta

ParentBiDiMode NasljeĎivanje BiDiMode

ParentFont NasljeĎivanje fonta

PixelsPerInch Broj tačaka po inču

PopupMenu OdreĎuje popup meni za objekat

Position OdreĎuje poziciju prozora ( npr ScreenCentar - uvijek u centru ekrana )

PrintScale Skala za printanje

Scaled Skaliranje

ShowHint OdreĎuje da li će Hint biti prikazan

Tag Brojna oznaka objekta

Top Udaljenost objekta od gornje strane roditelj objekta ( ovde ekrana )

UseDockManager OdreĎuje korištenje dock managera pri pomeranju prozora

VertScrollBar OdreĎuje osobine vertikalnog scrollbara

Visible Pokazuje da li je objekat vidljiv

Width OdreĎuje širinu objekta ( dimenzija po x-osi )

WindowMenu OdreĎuje meni ako je FormStyle MDIForm

WindowState Stanje prozora ( npr Maximized - starta se maximizovan )

Naravno nisu iste osobine za sve objekte ali je princip isti

Drugi način menjanja osobina je menjanje u radu Ovo je programerski način Naime dok program radi

programer nema mogućnost menjati osobine pomoću Object Inspectora

Tako recimo ako hoćemo da u toku rada programa prozor ( npr Form1 ) promeni visinu ( koja je

iznosila npr 375 ) na 400 treba da ukucamo kod u Junitu npr

Form1Height = 400

Dakle prvo upisujemo ime objekta pa stavljamo tačku Delphi je

toliko razvijen da će automatski izbaciti listu osobina pa se lako

moţe izabrati Height ( visina )

Poznavatelji Pascal-a prepoznaju ovde standardni način

dodeljivanja vrednosti promjenljivoj

Vaţno je napomenuti da ovaj kod moţemo kucati samo kao deo neke procedure Dvostrukim klikom na

objekat automatski ulazimo u kod za objekat-Junit Delphi će postaviti kursor za unos naredbe tačno na

mesto gde treba da se nalazi

5 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte nov projekat i dajte mu ime

2 Dizajnirejte formu na sledeći način

Promenite ime forme Form1 u Naslovna - u Object Inspector-u u polje Caption ukucajte novo ime

(pogledajte automatsku promenu u kodu Junit-a)

Promenite boju pozadine forme- u Object Inspector-u u polje Color izaberite boju

Promenite dimenzije forme - u Object Inspector-u u polje With i Height unesite brojeve po ţelji

3 Sačuvajte projekat u svoj folder i pogledajte šta se desilo

KOMPONENTE

Delphi sadrţi spektar komponenti koje su podeljene u odvojene kategorije

Standardne komponente uključuju TButton TEdit TListBox TMemo TMainMenu TScrollBar

TPopupMenu TCheckBox TRadioButton TRadioGroup TGroupBox TPanel TActionList

Komponente se postavljaju na formu aktiviranjem ikone iz Palete komponenti Posle postavke osobine

komponenti se mogu menjati pomoću Object Inspector-a Svaka komponenta u Delphiju treba da ima naziv

(Name) koji mora biti jedinstven

Dva svojstva koja se često koriste za prilago|avanje korisničkog interfejsa su svojstva Color i Font Postoji

nekoliko svojstava koja su vezana za boju Svojstvo Color se obično odnosi na boju pozadine komponente

TakoĎe postoji svojstvo Color za fontove i mnoge druge grafičke elemente Osim standarnih ponuĎenih

boja korisnik moţe dodeliti druge boje Postoji mnogo načina i evo dva

- Tip svojstva je TColor i ako znate engleske reči onda ih navedite (npr clBlue clSilver clRed i dr)

- Tip svojstva TColor naznačite brojem RGB inteziteta ($00FF0000-plava $0000FF00-zelena i dr)

Mnoge komponente imaju takoĎe svojstva ParentColor i ParentFont koja označavaju da li komponenta

treba da koristi boju i font roditeljske komponente koja je obično formular

KOMPONENTE TEKSTA

Komponenta Edit omogućava korisniku da unese jednu liniju teksta poravnatoj u levo

Za tekst se mogu koristiti i komponente Label i StaticText ali se one obično koriste za nepromenljivi tekst

kao i za izlaz koji generiše program Promene se vrše karakteristikom Caption

Komponenta MaskEdit je Edit komponenta kojoj je dodat filter za

unos teksta Ona naznačava da li karakter treba da bude prikazan

malim velikim slovima ciframa i sl Npr za unos datuma se koristi

poseban format (032198) i ova kontrola definiše tu vrstu unosa

Karakteristika EditMask kontroliše masku koja se koristi Kada se

aktivira polje Value u Object Inspector-u otvara se dijalog prozor

(Input MaskEditor) koji omogućava da izaberete jednu od ponuĎenih

maski ili da kreirate svoju

Komponenta Memo dozvoljava unos više linija teksta ali omogućava samo jedan font za ceo tekst

Karakteristika Lines iz Object Inspector-a omogućava snimanje sadrţaja teksta sa diska i na disk

6 prof Ljiljana Jovičin Blagojević

Karakteristika ScrollBars je jedinstvena za komponentu Memo i omogućuje trake za pomeranje

Komponenta RichText ne spade u grupu standardnih kotrola omogućava unos velike količine teksta sa

promenljivim fontovima poravnanjima pasusa i sl

Karakteristike za edit kontrole

Opcija Odnosi se na Opis Karakteristike

AutoSelectEdit MaskEdit Kada je podešeno na True tekst u okviru edit kontrole

će automatski biti označen kada korisnik pritiskom na

taster Tab preĎe na kontrolu Generička vrednost True

AutoSizeEdit MaskEdit Kada je podešeno na True edit kontrola će automatski

promeniti veličinu kada se fontedit kontrole promeni U

suprotnom edit kontrola ne menja veličinu prilikom

promene veličine fonta Generička vrednost True

CharCaseEdit MaskEdit OdreĎuje da li će edit kontrola prikazivati velika slova

(ecUpperCase) mala slova (ecLowerCase) ili normalan

tekst (ecNormal) Generička vrednost ecNormal

HideScrollBars RichEdit Kada je podešena na True trake za pomeranje će biti

prikazane ukoliko je to potrebno u protivnom će biti

skrivene Kada je podešena na False trake za pomeranje

će biti prikazane na osnovu vrednosti karakteristike

ScrollBars

HideSelection Edit Memo RichEdit Kada je podešeno na True tekst koji je označen neće

biti prikazan kao označen prilikom prelaska korisnika

na narednu kontrolu pritiskom na taster Tab Generička

vrednost False

Lines Memo RichEdit Tekst koji se sadrĎi u komponenti Lines je slučaj klase

TStrings

MaxLength sve Definiše maksimalan broj karaktera koje će komponenta

moći da sadrţi Ukoliko je vrednost 0 moţe se uneti

neograničena duţina teksta (ograničena samo zahtevima

sistema) Kada je podešena na bilo koju vrednost

različitu od nule broj karaktera je ograničen zadatom

vrednosti Generička vrednost 0

OEMConvert Edit Memo Podesite ovu karakteristiku na True kada tekst koji se

unosi sadrţi naziv datoteke Generička vrednost False

PasswordChar Edit MaskEdit Kada je ova karakteristika podešena na vrednost

različitu od ASCII 0 tekst koji unosite će biti prikazan

korišćenjem definisanih karaktera Tekst u okviru edit

kontrole neće biti izmenjenGenerička vrednost 0

PlainText RichEdit Kada je podešena na True RTF (Rich Text Format)

datoteke će biti prikazane kao običan tekst bez

formatiranja karaktera i paragrafa

Text Edit MaskEdit Sadrţi tekst u okviru komponente

WantReturns Memo RichEdit Kada je podešena na True komponenta zadrţava

karakter za kraj reda i novu liniju koju korisnik unosi u

edit kontrolu pritiskom na taster Enter Kada je

podešena na False karakteri za kraj reda i novu liniju

ulaze u formu ali se ne postavljaju u okviru edit

kontrole Generička vrednost True

WantTabs Memo RichEdit Kada je podešena na True kada korisnik pritisne taster

Tab u edit kontrolu se upisuje karakter tab Kada je

postavljen na False tab karakteri prelaze na formu

7 prof Ljiljana Jovičin Blagojević

Zadatak

1 Otvorite predhodni projekat

2 Iz Palete komponenti izaberite komponentu Label1 (slovo A) i kreirajte na formu

3 Promenite osobine u Object Inspector-u

Ukucajte tekst po ţelji (polje Caption)

Promenite boju pozadine Label1 u ljubičasto (Color)

Promenite vrstu veliičinu i boju slova (Font)

4 Postavite još neke kontrole za tekst i uočite razlike

5 Sačuvajte izmene u projektu

6 Pogledajte kod komponenti (dodat je automatski u class TForm)

KOMPONENTA Panel

Često će vam se dogoditi da imate komponente koje su postavljene u okviru drugih komponenti

Komponenta Panel se obično koristi kao kontejner za druge komponente Da biste odabrali grupu

komponenti u okviru panela treba da drţite pritisnut taster ltCtrlgt dok prevlačite mišem kako bi odabrali

komponentu Paneli se obično koriste za naslove i delove teksta koje treba nagltzle i BorderWidth

KOMPONENTE Button

Komponente Button karakterišu osobine ModalResult Default Cansel i Enabled Button su principu

simulira klik miša pa moţe da zatvara Form aktivira aplikaciju i sl

Zadatak

1 Otvorite nov projekat

2 Odaberite komponentu Panel u okviru Palete komponenti i postavite je na formu koristeći metod

prevlačenja Proširite je tako da zauzme veći deo forme

3 Sada odaberite komponentu Button i postavite šest dugmadi na

formu

4 Izmenite osobine komponenti po ţelji

8 prof Ljiljana Jovičin Blagojević

JUNIT

Pascal juniti

Programiranje je više od kucanja programskog koda Pre svega programiranje je kombinacija planiranja

zadatka za programiranje a zatim kucanja koda koji će izvršavati taj zadatak Kod koji kucate se upisuje u

tekst datoteku Prevodilac uzima ovu datoteku i prevodi je u mašinski kod koji računar moţe da razume

Tekst datoteka koju Delphi prevodi u mašinski kod se zove junit (unit)

Tipovi junita

Delphijeve GUI aplikacije će sadrţati najmanje dva junita

Izvorni junit projekta sadrţi izvorni kod projekta Juniti izvornog koda programa imaju nastavak

DPR

Drugi tip junita koji Delphijeve GUI aplikacije sadrţe je junit glavne forme Junit forme i njegov

naziv ukazuju na junit izvornog koda koji mu je pridruţen Ovaj tip junita ima nastavak PAS Ovaj

tip junita ćete u većini slučajeva koristiti u Vašim Delphi programima Delphijeve GUI aplikacije

uvek imaju jedan junit forme (za glavnu formu) ali takoĎe mogu imati jednu ili više dodatnih

junita formi

Sadržaj junita Delphi juniti moraju pratiti unapred definisan format Junit mora biti napisan u unapred definisanom formatu

da bi prevodilac mogao da čita junit i prevodi kod junita

Juniti Delphi projekta sadrţe ključnu reč program iza kog sledi naziv junita i kod blok koji se nalazi izmeĎu

ključnih reči begin i end

Izvorni junit projekta za generički Delphijev projekt izgleda

Izvorni kod projekta za generički Delphijev project

01 program Project1

02

03 uses

04 Forms

05 Unit1 in Unit1pas Form1

06

07 $R RES

08

09 begin

10 ApplicationInitialize

11 ApplicationCreateForm(TForm1 Form1)

12 ApplicationRun

13 end

U liniji 1 ključna reč program identifikuje junit kao glavni izvorni junit programa

Moţete videti da se naziv junita Project1 nalazi iza ključne reči program (Delphi daje projektu generikči

naziv sve dok ne snimite projekt pod nazivom koji ima bolje značenje) Počev od linije 3 vidite deo koji je

identifikovan ključnom reči uses

Iza ključne reči uses se nalaze nazivi junita koje navedeni junit traţi da bi mogao da bude preveden Spisak

se završava znakom tačka-zarez

U liniji 7 moţete videti direktivu prevodiocu koja pokazuje Delphiju da uključi odgovarajuću resursnu

datoteku

Linija 9 sadrţi ključnu reč begin a linija 13 sadrţi ključnu reč end Zapazite da poslednja ključna reč end u

okviru junita iza sebe ima tačku (Junit moţe sadrţati više blokova koda označenih sa begin i end ali samo

jedan krajnji end iskaz)

Kod u okviru linija 10 11 i 12 je kod koji inicijalizuje aplikaciju kreirajući glavnu formu aplikacije

odnosno startuje aplikaciju

9 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte još jedan osnovni junit (FileNew) i pogledajte kod

Dvostrukim klikom na formu Delphi će prikazati nov junit u editor koda (Code Editor)

Prazan Pascal junit

01 unit Unit2

02

03 interface

04

05 implementation

06

07 end

Ovaj junit ima dve slične stvari sa junitom koji je predhodno

prikazan Prvo junit počinje ključnom reči unit iza koje sledi

naziv junita Unit2 (opet generički naziv koji kreira Delphi

Ključna reč end pojavljuje na kraju oba listinga

Kod u okviru praznog listinga se razlikuje od predhodnog po tome što sadrţi delove pod nazivom interface

i implementation Junit koji nije glavni izvorni junit programa mora sadrţati deo interface i deo

implementation Prazan Listing se razlikuje od predhodnog i po tome što nema iskaz begin Glavni junit programa mora

imati oba iskaza begin i end ali izvorni junit jedini moţe sadrţati poslednji iskaz end

Odeljak interface

Ova ključna reč označava početak odeljka za interfejs u okviru junita

Odeljak interface je odeljak junita u okviru kog se deklarišu identifikatori koje navedeni junit izvozi

Identifikator za izvoz predstavlja identifikator kome mogu pristupiti drugi juniti u okviru projekta

Većina junita će sadrţati kod koji ostali juniti koriste Moţe se reći da odeljak za interfejs sadrţi listu stavki

u okviru junita koje ostali juniti mogu da koriste Odeljak za intrerfejs počinje ključnom reči interface a

završava se ključnom reči implementation

Odeljak implementation

Odeljak za implementaciju junita je odeljak koji sadrţi aktuelni kod junita Odeljak za implementaciju

počinje ključnom reči implementation a završava se ključnom reči sledećeg junita

Kljućne reči u junitu

Ključna reč const

Junit opciono moţe sadrţati jedan ili više odeljaka const Odeljak const je odreĎen ključnom reči const

Odeljak const opisuje listu promenljivih koje su poznate kao konstante

Konstanta je identifikator koji se ne moţe menjati Npr

const

DefaultWidth = 400

DefaultHeight = 200

Description = Something really cool

Ključna reč type

Ključna reč type se koristi da deklariše nove tipove koje će koristiti program

Ključna reč var

Ključna reč var se koristi da deklariše odeljak koda u kom se deklarišu promenljive

Promenljive treba da budu deklarisane pre nego što se koriste Promenljive treba da deklarišete u posebnom

odeljku koda koji je naznačen ključnom reči var Npr

10 prof Ljiljana Jovičin Blagojević

var

X Integer variable X declared as an integer variable

Y Integer variable Y declared as an integer variable

Najčešće deklaracije promenljivih su Integer RealChar Word Boolean i dr

Često korišćeni operatori

Operator Opis Primer Matemati~ki operatori + sabiranje x =y + z

- oduzimanje x = y - z

mnoţenje x = y z

deljenje realnog broja x = y 314

div celobrojno deljenje x = y div 10

= dodeljivanje x =10

And logičko i if (x=1) and (y=2) then

= jednako if (x=10) then

ltgt nije jednako if (xltgt10) then

lt manje je od if (xlt10) then

lt= veće ili jednako if (xlt=) then

Zadatak Kreirati aplikaciju koja će aktiviranjem labele ispisivati tekst po ţelji u crvenoj boji veličine 20

1 Na otvorenu formu dodajte labelu (Label1)

2 Aktivirajte kod labele (dvostruki klik na labelu) i ukucajte naredbu

Label1Caption=Dobar dan Hvala sto ste kliknuli na mene (као на слици )

3 Startujte program (Run) i kliknite na labelu (pojaviće se uneti tekst) Vratite se u reţim rada

4 Podesite veličinu i boju slova font Color-Red i Size-20 Unesite kod ispod predhodnog

Label1FontSize=20

Label1FontColor=clRed

5 Startujte program

6 Sačuvajte ga pod imenom KlikNaLabelu

11 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će ispisati pozdravnu poruku bdquoDobar danldquo kada se klikne na taster (Botton)

koji je dodat na formu

- Podesiti za taster sledeća svojstva Caption-Klik na dugme u Inspector ObjektuEvants dogaĎaj

OnClick

U nazivu procedure treba da piše

procedure TForm1Button1Click

procedure imeformeimedugmetaClick

Junit treba da je sledećeg izgleda

Zadatak Kreirati aplikaciju za unos podataka kao na slici

Na formi imamo pet labela

Label1 label2 i label3 sadrţe svojstvo

caption svojstvo caption label4 je

prazno (ljubičasta-color) što znači da ova

labela ne prikazuje nikakav tekst Da bi se

videla boja labele koja je različita od boje

forme mora se svojstvo transparent

postaviti na FALSE Ako je ovo svojstvo

postavljeno na TRUE veličina labele se

prilagoĎava njenom sadrţaju Label 5 ne

sadrţi nikakav tekst (caption je prazno) a

boja labele je ista kao i forma pa se ta

labela ni ne vidi po pokretanju programa

Ona je tu da prihvati spoji i prikaţe tekst

koji se unese u edit polja Kod kojim se

ovo radi je

procedure TForm1Button2Click(Sender TObject)

begin

label5Caption=Učenik +edit1Text+ +edit2Text+ ide u +edit3Text+ razred

end

Ova naredba znači da smo svojstvo caption label5 promenili u toku izvršavanja programa Stringovi koji su

navedeni u naredbi će se uvek prikazivati takvi sadrţaj edit polja zavisi od onoga što unesemo putem

tastature u odreĎeno edit polje Znak + izmeĎu stringova nadovezuje stringove jedan za drugim pa tako ako

ţelimo razmak moramo ga posebno navesti

Pritiskom na dugme na kojem piše BRIŠI treba poništiti sve što je unešeno i što je prikazano u label5 Kod

koji se ovo radi je

procedure TForm1Button1Click(Sender TObject)

begin

edit1text=

edit2Text=

edit3Text=

label5Caption=

end

Label5

Tekst koji je

unešen u edit1 razmak Tekst koji je

unešen u edit2

Tekst koji je

unešen u edit3

Label1

Label2

Label4

Label5

Button2

Label3

12 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju gde se boja forme menja kada se miš postavi na formu i skloni sa forme

LbPoruka se ne vidi po pokretanju programa nego tek kada se prikaţe poruka i drugačije je boje od forme

Klikom na dugme se ispisuje bdquoZdravo svimaldquo na traţenom jeziku (Hola Mundo na španskom)

Za svaku vrstu komponenata uključujući i obrazce (forme) postoji odreĎeni spisak dogaĎaja koji mogu da

im se dogode Oni su nabrojani u Object Inspector-u na stranici Events ili

dvostruki klik na komponentu pa će Delphi sam dodeliti ime rukovaoca koje

se sastoji od imena komponente i imena dogaĎaja za koji se pravi rukovalac

U zadatku se traţi da se boja forme menja kada se miš postavi na nju i kada se

skloni sa nje Znači u pitanju su dva različita dogaĎaja DogaĎaj

OnMouseEnter nastaje kada se miš postavi na komponentu a dogaĎaj

OnMouseLeave kada se miš skloni sa komponente Kod kojim postiţemo

promenu boje forme u zavisnosti od poloţaja miša bi mogao biti

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

ImeKomponenteSvojstvo=Vrednost

Npr Forma1color znači da komponenti koja se zove Forma1 menjamo boju Vrednost svojstva

dodeljujemo koristeći znak za dodelu vrednosti =

Boje u Delphi-ju mogu da se navode imenom ispred koje stoji prefiks cl (clRed clGreen) ili zadavanjem

boje putem osmocifrenog heksadecimalnog broja (cifre od 0 do 9 i slova od A do F) sa znakom $ ispred

broja (sve nule je crna boja sve F je bela boja)

Svojstvo Caption predstavlja natpis na nekoj komponenti odnosno tekst koji se prikazuje u toj komponenti

Naredba Label1Caption=rsquoZDRAVOrsquo znači da će se u label1 prikazati tekst ZDRAVO

Promena imena fonta u ComicSans u labeli lbPoruka lbporukaFontName=Comic Sans MS

Promena veličine fonta u labeli lbPoruka lbporukaFontSize=50

Promena boje fonta u labeli lbPoruka lbporukaFontColor=clpurple

Promena natpisa u labeli lbPoruka lbPorukacaption=ZDRAVO SVIMA

Promena vidljivosti labele lbPoruka lbPoruka transparent=false

Ceo kod za ovu veţbu

Kada se miš nalazi na

formi boja je roza

Kada se miš skloni sa

forme boja je plava

13 prof Ljiljana Jovičin Blagojević

unit UProbni

interface uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls Buttons ExtCtrls

type

Tforma1 = class(TForm)

lbPoruka TLabel

Label2 TLabel

Button1 TButton

Button2 TButton

Button3 TButton

procedure FormMouseEnter(Sender TObject)

procedure FormMouseLeave(Sender TObject)

procedure Button2Click(Sender TObject)

procedure Button3Click(Sender TObject)

procedure Button1Click(Sender TObject)

private

Private declarations

end

var

forma1 Tforma1

implementation

$R dfm

procedure Tforma1Button1Click(Sender TObject)

begin

lbporukaFontSize=30

lbporukaFontName=forte

lbporukaFontColor=clmaroon

lbPorukacaption=Hola Mundo

lbPoruka transparent=false

end

procedure Tforma1Button2Click(Sender TObject)

begin

lbporukaFontSize=50

lbporukaFontName=Ravie

lbporukaFontColor=clpurple

lbPorukacaption=ZDRAVO SVIMA

lbPoruka transparent=false

end

procedure Tforma1Button3Click(Sender TObject)

begin

close

end

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

end

Ovo je sam Delphi napravio

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 2: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

2 prof Ljiljana Jovičin Blagojević

Tipovi datoteka koji se koriste u Delphiju

Nastavak Opis

pos pas-Izvorni kod jezika Object Pascal Za svaki junit stoji jedna ovakva datoteka kao i bilo

koja datoteka izvornog koda koju dodajete projektu

dfm Datoteka forme Ova datoteka je u stvari skrivena binarna resursna datoteka (res) Ona

predstavlja opis forme i svih njenih komponenti Svaka forma ima svoju dfm datoteku

dsk Datoteka radne površine projekta Ova datoteka čuva podatke o načinu na koji se prikazuje

radna površina nakon poslednjeg zapisivanja (odnosno zat varanja) projekta

dof Datoteka opcija projekta Ova datoteka sadrţi opcije projekta koje su definisane u dijalogu

Project Options

exe Finalni izvršni programcfgKonfiguraciona datoteka projekta Ova datoteka primarno sadrţi

trenutno odabrane opcije prevodioca i programa za povezivanje koje se odnose na tekući

projekt

dcu Prevedena binarna objektna datoteka Ove datoteke kreira prevodilac u toku prevoĎenja vaših

Object Pascal junita

dpr Izvorni kod projekta

res Prevedena binarna resursna datoteka

Zadatak

1 Kreirajte nov Folder na disku

2 Otvorite Delphi

3 File-New Application (na ekranu se pojavljuje prazna forma)

4 File-Save All i upišite naziv Junita i naziv projekta

5 Odaberite opciju Project- Build Test

6 File-Close All

7 PronaĎite svoj Folder i primetićete nekoliko datoteka (obično 8)

OBJEKTI

Objekti su ustvari suština Delphija Nema Delphija bez objekata Naime sve što vidite u Delphiju i sa čime

radite su objekti

Tako recimo čim otvorite Delphi dobijate prvi i glavni objekt sa kojim

ćete raditi a to je Form Form je ustvari prozor na koji se stavljaju ostali

objekti Naravno Delphi ne bi bio to što jeste da se objektima ne moţe

manipulisati Vrlo vaţna odlika objekata je nasljeĎivanje Naime kad god

se jedan objekat stavi na drugi ( npr Label na Form ) ovaj prvi

postaje dete ( engl Child ) a drugi roditelj ( engl Parent ) te će po toj

logici prvi objekt naslediti neke osobine od drugog ( npr boju font )

Vaţno je napomenuti da broj dete objekata uopšte nije ograničen za jedan roditelj objekt To dopušta

itekako veliku slobodu programeru

Kao i sve u Delphiju programer moţe sam stvarati objekte po svom nahoĎenju i svojim ţeljama

Najvaţnije na kraju za svaki objekt vezane su njegove osobine ( engl Properties ) Pomoću njih se

manipuliše objektima

Osobine se menjaju na dva načina

Onaj koji se prvi nauči je pomoću Object Inspectora To je prozor koji se nalazi sa leve

strane i uvijek je otvoren On sadrţi osobine svih objekata koje trenutno programer koristi ali

je samo jedna vidljiva i to ona koja je pod fokusom ( na koju je kliknuto mišem ) Tako

recimo Form kao glavni objekt sadrţi sledeće osobine

3 prof Ljiljana Jovičin Blagojević

Action Izaberete neku proceduru koja će biti obavljena pri otvaranju prozora

ActiveControl Pokazuje objekat koji je aktivan nakon otvaranja prozora

Align Prijanjanje uz neku od ivica ekrana

Anchors Pokazuje kako je objekat vezan za roditelj objekat

AutoScroll OdreĎuje da li će se automatski pojaviti scrollbarovi ako je to potrebno

AutoSize OdreĎuje da li će objekt tako prilagoditi veličinu da nema slobodnog prostora

BiDiMode Pravac objekata

BorderIcons Ikone poput minimize maximize close

BorderStyle OdreĎuje stil prozora ( npr Sizeable - moguće je mijenjati veličinu u radu )

BorderWidth Širina okvira

Caption Naslov ( npr u ovom prozoru je naslov Programiranje Osobine )

ClientHeight Visina korisnog dela prozora

ClientWidth Širina korisnog dela prozora

Color Boja

Constraints Ograničenja ( npr visine )

Ctl3D OdreĎuje da li će objekat biti 3D renderisan

Cursor OdreĎuje kakav će kursor biti iznad objekta

DefaultMonitor OdreĎuje koji objekat će biti glavni

DockSite OdreĎuje da li je objekat vezan

DragKind OdreĎuje vrstu povlačenja objekta

DragMode OdreĎuje način povlačenja objekta

Enabled Pokazuje da li je objekat ţiv

Font OdreĎuje font na objektu

FormStyle Stil prozora ( npr MDIChild - prozor unutar drugog prozora )

Height Visina objekta ( dimenzija po y-osi )

HelpContext Dio Help file koji će biti prikazan po pritisku na Whats this

HelpFile OdreĎuje koji file sluţi kao Help file

Hint Tekst koji se nalazi u ţutom okviru koji sluţi kao objašnjenje

HorzScrollBar OdreĎuje osobine horizontalnog scrollbara

Icon Ikona u gornjem lijevom uglu prozora

KeyPreview OdreĎuje da li će objekat reagovati na tastaturu prije aktivne kontrole

Left Udaljenost objekta od lijeve strane roditelj objekta ( ovdje ekrana )

4 prof Ljiljana Jovičin Blagojević

Menu Pokazuje na meni tog prozora

Name Ime objekta ( automatski je Form1 ali se moţe mijenjati )

ObjectMenuItem Pokazuje na jedan dio menija

OldCreateOrder OdreĎuje kreiranje i uništavanje objekta

ParentBiDiMode NasljeĎivanje BiDiMode

ParentFont NasljeĎivanje fonta

PixelsPerInch Broj tačaka po inču

PopupMenu OdreĎuje popup meni za objekat

Position OdreĎuje poziciju prozora ( npr ScreenCentar - uvijek u centru ekrana )

PrintScale Skala za printanje

Scaled Skaliranje

ShowHint OdreĎuje da li će Hint biti prikazan

Tag Brojna oznaka objekta

Top Udaljenost objekta od gornje strane roditelj objekta ( ovde ekrana )

UseDockManager OdreĎuje korištenje dock managera pri pomeranju prozora

VertScrollBar OdreĎuje osobine vertikalnog scrollbara

Visible Pokazuje da li je objekat vidljiv

Width OdreĎuje širinu objekta ( dimenzija po x-osi )

WindowMenu OdreĎuje meni ako je FormStyle MDIForm

WindowState Stanje prozora ( npr Maximized - starta se maximizovan )

Naravno nisu iste osobine za sve objekte ali je princip isti

Drugi način menjanja osobina je menjanje u radu Ovo je programerski način Naime dok program radi

programer nema mogućnost menjati osobine pomoću Object Inspectora

Tako recimo ako hoćemo da u toku rada programa prozor ( npr Form1 ) promeni visinu ( koja je

iznosila npr 375 ) na 400 treba da ukucamo kod u Junitu npr

Form1Height = 400

Dakle prvo upisujemo ime objekta pa stavljamo tačku Delphi je

toliko razvijen da će automatski izbaciti listu osobina pa se lako

moţe izabrati Height ( visina )

Poznavatelji Pascal-a prepoznaju ovde standardni način

dodeljivanja vrednosti promjenljivoj

Vaţno je napomenuti da ovaj kod moţemo kucati samo kao deo neke procedure Dvostrukim klikom na

objekat automatski ulazimo u kod za objekat-Junit Delphi će postaviti kursor za unos naredbe tačno na

mesto gde treba da se nalazi

5 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte nov projekat i dajte mu ime

2 Dizajnirejte formu na sledeći način

Promenite ime forme Form1 u Naslovna - u Object Inspector-u u polje Caption ukucajte novo ime

(pogledajte automatsku promenu u kodu Junit-a)

Promenite boju pozadine forme- u Object Inspector-u u polje Color izaberite boju

Promenite dimenzije forme - u Object Inspector-u u polje With i Height unesite brojeve po ţelji

3 Sačuvajte projekat u svoj folder i pogledajte šta se desilo

KOMPONENTE

Delphi sadrţi spektar komponenti koje su podeljene u odvojene kategorije

Standardne komponente uključuju TButton TEdit TListBox TMemo TMainMenu TScrollBar

TPopupMenu TCheckBox TRadioButton TRadioGroup TGroupBox TPanel TActionList

Komponente se postavljaju na formu aktiviranjem ikone iz Palete komponenti Posle postavke osobine

komponenti se mogu menjati pomoću Object Inspector-a Svaka komponenta u Delphiju treba da ima naziv

(Name) koji mora biti jedinstven

Dva svojstva koja se često koriste za prilago|avanje korisničkog interfejsa su svojstva Color i Font Postoji

nekoliko svojstava koja su vezana za boju Svojstvo Color se obično odnosi na boju pozadine komponente

TakoĎe postoji svojstvo Color za fontove i mnoge druge grafičke elemente Osim standarnih ponuĎenih

boja korisnik moţe dodeliti druge boje Postoji mnogo načina i evo dva

- Tip svojstva je TColor i ako znate engleske reči onda ih navedite (npr clBlue clSilver clRed i dr)

- Tip svojstva TColor naznačite brojem RGB inteziteta ($00FF0000-plava $0000FF00-zelena i dr)

Mnoge komponente imaju takoĎe svojstva ParentColor i ParentFont koja označavaju da li komponenta

treba da koristi boju i font roditeljske komponente koja je obično formular

KOMPONENTE TEKSTA

Komponenta Edit omogućava korisniku da unese jednu liniju teksta poravnatoj u levo

Za tekst se mogu koristiti i komponente Label i StaticText ali se one obično koriste za nepromenljivi tekst

kao i za izlaz koji generiše program Promene se vrše karakteristikom Caption

Komponenta MaskEdit je Edit komponenta kojoj je dodat filter za

unos teksta Ona naznačava da li karakter treba da bude prikazan

malim velikim slovima ciframa i sl Npr za unos datuma se koristi

poseban format (032198) i ova kontrola definiše tu vrstu unosa

Karakteristika EditMask kontroliše masku koja se koristi Kada se

aktivira polje Value u Object Inspector-u otvara se dijalog prozor

(Input MaskEditor) koji omogućava da izaberete jednu od ponuĎenih

maski ili da kreirate svoju

Komponenta Memo dozvoljava unos više linija teksta ali omogućava samo jedan font za ceo tekst

Karakteristika Lines iz Object Inspector-a omogućava snimanje sadrţaja teksta sa diska i na disk

6 prof Ljiljana Jovičin Blagojević

Karakteristika ScrollBars je jedinstvena za komponentu Memo i omogućuje trake za pomeranje

Komponenta RichText ne spade u grupu standardnih kotrola omogućava unos velike količine teksta sa

promenljivim fontovima poravnanjima pasusa i sl

Karakteristike za edit kontrole

Opcija Odnosi se na Opis Karakteristike

AutoSelectEdit MaskEdit Kada je podešeno na True tekst u okviru edit kontrole

će automatski biti označen kada korisnik pritiskom na

taster Tab preĎe na kontrolu Generička vrednost True

AutoSizeEdit MaskEdit Kada je podešeno na True edit kontrola će automatski

promeniti veličinu kada se fontedit kontrole promeni U

suprotnom edit kontrola ne menja veličinu prilikom

promene veličine fonta Generička vrednost True

CharCaseEdit MaskEdit OdreĎuje da li će edit kontrola prikazivati velika slova

(ecUpperCase) mala slova (ecLowerCase) ili normalan

tekst (ecNormal) Generička vrednost ecNormal

HideScrollBars RichEdit Kada je podešena na True trake za pomeranje će biti

prikazane ukoliko je to potrebno u protivnom će biti

skrivene Kada je podešena na False trake za pomeranje

će biti prikazane na osnovu vrednosti karakteristike

ScrollBars

HideSelection Edit Memo RichEdit Kada je podešeno na True tekst koji je označen neće

biti prikazan kao označen prilikom prelaska korisnika

na narednu kontrolu pritiskom na taster Tab Generička

vrednost False

Lines Memo RichEdit Tekst koji se sadrĎi u komponenti Lines je slučaj klase

TStrings

MaxLength sve Definiše maksimalan broj karaktera koje će komponenta

moći da sadrţi Ukoliko je vrednost 0 moţe se uneti

neograničena duţina teksta (ograničena samo zahtevima

sistema) Kada je podešena na bilo koju vrednost

različitu od nule broj karaktera je ograničen zadatom

vrednosti Generička vrednost 0

OEMConvert Edit Memo Podesite ovu karakteristiku na True kada tekst koji se

unosi sadrţi naziv datoteke Generička vrednost False

PasswordChar Edit MaskEdit Kada je ova karakteristika podešena na vrednost

različitu od ASCII 0 tekst koji unosite će biti prikazan

korišćenjem definisanih karaktera Tekst u okviru edit

kontrole neće biti izmenjenGenerička vrednost 0

PlainText RichEdit Kada je podešena na True RTF (Rich Text Format)

datoteke će biti prikazane kao običan tekst bez

formatiranja karaktera i paragrafa

Text Edit MaskEdit Sadrţi tekst u okviru komponente

WantReturns Memo RichEdit Kada je podešena na True komponenta zadrţava

karakter za kraj reda i novu liniju koju korisnik unosi u

edit kontrolu pritiskom na taster Enter Kada je

podešena na False karakteri za kraj reda i novu liniju

ulaze u formu ali se ne postavljaju u okviru edit

kontrole Generička vrednost True

WantTabs Memo RichEdit Kada je podešena na True kada korisnik pritisne taster

Tab u edit kontrolu se upisuje karakter tab Kada je

postavljen na False tab karakteri prelaze na formu

7 prof Ljiljana Jovičin Blagojević

Zadatak

1 Otvorite predhodni projekat

2 Iz Palete komponenti izaberite komponentu Label1 (slovo A) i kreirajte na formu

3 Promenite osobine u Object Inspector-u

Ukucajte tekst po ţelji (polje Caption)

Promenite boju pozadine Label1 u ljubičasto (Color)

Promenite vrstu veliičinu i boju slova (Font)

4 Postavite još neke kontrole za tekst i uočite razlike

5 Sačuvajte izmene u projektu

6 Pogledajte kod komponenti (dodat je automatski u class TForm)

KOMPONENTA Panel

Često će vam se dogoditi da imate komponente koje su postavljene u okviru drugih komponenti

Komponenta Panel se obično koristi kao kontejner za druge komponente Da biste odabrali grupu

komponenti u okviru panela treba da drţite pritisnut taster ltCtrlgt dok prevlačite mišem kako bi odabrali

komponentu Paneli se obično koriste za naslove i delove teksta koje treba nagltzle i BorderWidth

KOMPONENTE Button

Komponente Button karakterišu osobine ModalResult Default Cansel i Enabled Button su principu

simulira klik miša pa moţe da zatvara Form aktivira aplikaciju i sl

Zadatak

1 Otvorite nov projekat

2 Odaberite komponentu Panel u okviru Palete komponenti i postavite je na formu koristeći metod

prevlačenja Proširite je tako da zauzme veći deo forme

3 Sada odaberite komponentu Button i postavite šest dugmadi na

formu

4 Izmenite osobine komponenti po ţelji

8 prof Ljiljana Jovičin Blagojević

JUNIT

Pascal juniti

Programiranje je više od kucanja programskog koda Pre svega programiranje je kombinacija planiranja

zadatka za programiranje a zatim kucanja koda koji će izvršavati taj zadatak Kod koji kucate se upisuje u

tekst datoteku Prevodilac uzima ovu datoteku i prevodi je u mašinski kod koji računar moţe da razume

Tekst datoteka koju Delphi prevodi u mašinski kod se zove junit (unit)

Tipovi junita

Delphijeve GUI aplikacije će sadrţati najmanje dva junita

Izvorni junit projekta sadrţi izvorni kod projekta Juniti izvornog koda programa imaju nastavak

DPR

Drugi tip junita koji Delphijeve GUI aplikacije sadrţe je junit glavne forme Junit forme i njegov

naziv ukazuju na junit izvornog koda koji mu je pridruţen Ovaj tip junita ima nastavak PAS Ovaj

tip junita ćete u većini slučajeva koristiti u Vašim Delphi programima Delphijeve GUI aplikacije

uvek imaju jedan junit forme (za glavnu formu) ali takoĎe mogu imati jednu ili više dodatnih

junita formi

Sadržaj junita Delphi juniti moraju pratiti unapred definisan format Junit mora biti napisan u unapred definisanom formatu

da bi prevodilac mogao da čita junit i prevodi kod junita

Juniti Delphi projekta sadrţe ključnu reč program iza kog sledi naziv junita i kod blok koji se nalazi izmeĎu

ključnih reči begin i end

Izvorni junit projekta za generički Delphijev projekt izgleda

Izvorni kod projekta za generički Delphijev project

01 program Project1

02

03 uses

04 Forms

05 Unit1 in Unit1pas Form1

06

07 $R RES

08

09 begin

10 ApplicationInitialize

11 ApplicationCreateForm(TForm1 Form1)

12 ApplicationRun

13 end

U liniji 1 ključna reč program identifikuje junit kao glavni izvorni junit programa

Moţete videti da se naziv junita Project1 nalazi iza ključne reči program (Delphi daje projektu generikči

naziv sve dok ne snimite projekt pod nazivom koji ima bolje značenje) Počev od linije 3 vidite deo koji je

identifikovan ključnom reči uses

Iza ključne reči uses se nalaze nazivi junita koje navedeni junit traţi da bi mogao da bude preveden Spisak

se završava znakom tačka-zarez

U liniji 7 moţete videti direktivu prevodiocu koja pokazuje Delphiju da uključi odgovarajuću resursnu

datoteku

Linija 9 sadrţi ključnu reč begin a linija 13 sadrţi ključnu reč end Zapazite da poslednja ključna reč end u

okviru junita iza sebe ima tačku (Junit moţe sadrţati više blokova koda označenih sa begin i end ali samo

jedan krajnji end iskaz)

Kod u okviru linija 10 11 i 12 je kod koji inicijalizuje aplikaciju kreirajući glavnu formu aplikacije

odnosno startuje aplikaciju

9 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte još jedan osnovni junit (FileNew) i pogledajte kod

Dvostrukim klikom na formu Delphi će prikazati nov junit u editor koda (Code Editor)

Prazan Pascal junit

01 unit Unit2

02

03 interface

04

05 implementation

06

07 end

Ovaj junit ima dve slične stvari sa junitom koji je predhodno

prikazan Prvo junit počinje ključnom reči unit iza koje sledi

naziv junita Unit2 (opet generički naziv koji kreira Delphi

Ključna reč end pojavljuje na kraju oba listinga

Kod u okviru praznog listinga se razlikuje od predhodnog po tome što sadrţi delove pod nazivom interface

i implementation Junit koji nije glavni izvorni junit programa mora sadrţati deo interface i deo

implementation Prazan Listing se razlikuje od predhodnog i po tome što nema iskaz begin Glavni junit programa mora

imati oba iskaza begin i end ali izvorni junit jedini moţe sadrţati poslednji iskaz end

Odeljak interface

Ova ključna reč označava početak odeljka za interfejs u okviru junita

Odeljak interface je odeljak junita u okviru kog se deklarišu identifikatori koje navedeni junit izvozi

Identifikator za izvoz predstavlja identifikator kome mogu pristupiti drugi juniti u okviru projekta

Većina junita će sadrţati kod koji ostali juniti koriste Moţe se reći da odeljak za interfejs sadrţi listu stavki

u okviru junita koje ostali juniti mogu da koriste Odeljak za intrerfejs počinje ključnom reči interface a

završava se ključnom reči implementation

Odeljak implementation

Odeljak za implementaciju junita je odeljak koji sadrţi aktuelni kod junita Odeljak za implementaciju

počinje ključnom reči implementation a završava se ključnom reči sledećeg junita

Kljućne reči u junitu

Ključna reč const

Junit opciono moţe sadrţati jedan ili više odeljaka const Odeljak const je odreĎen ključnom reči const

Odeljak const opisuje listu promenljivih koje su poznate kao konstante

Konstanta je identifikator koji se ne moţe menjati Npr

const

DefaultWidth = 400

DefaultHeight = 200

Description = Something really cool

Ključna reč type

Ključna reč type se koristi da deklariše nove tipove koje će koristiti program

Ključna reč var

Ključna reč var se koristi da deklariše odeljak koda u kom se deklarišu promenljive

Promenljive treba da budu deklarisane pre nego što se koriste Promenljive treba da deklarišete u posebnom

odeljku koda koji je naznačen ključnom reči var Npr

10 prof Ljiljana Jovičin Blagojević

var

X Integer variable X declared as an integer variable

Y Integer variable Y declared as an integer variable

Najčešće deklaracije promenljivih su Integer RealChar Word Boolean i dr

Često korišćeni operatori

Operator Opis Primer Matemati~ki operatori + sabiranje x =y + z

- oduzimanje x = y - z

mnoţenje x = y z

deljenje realnog broja x = y 314

div celobrojno deljenje x = y div 10

= dodeljivanje x =10

And logičko i if (x=1) and (y=2) then

= jednako if (x=10) then

ltgt nije jednako if (xltgt10) then

lt manje je od if (xlt10) then

lt= veće ili jednako if (xlt=) then

Zadatak Kreirati aplikaciju koja će aktiviranjem labele ispisivati tekst po ţelji u crvenoj boji veličine 20

1 Na otvorenu formu dodajte labelu (Label1)

2 Aktivirajte kod labele (dvostruki klik na labelu) i ukucajte naredbu

Label1Caption=Dobar dan Hvala sto ste kliknuli na mene (као на слици )

3 Startujte program (Run) i kliknite na labelu (pojaviće se uneti tekst) Vratite se u reţim rada

4 Podesite veličinu i boju slova font Color-Red i Size-20 Unesite kod ispod predhodnog

Label1FontSize=20

Label1FontColor=clRed

5 Startujte program

6 Sačuvajte ga pod imenom KlikNaLabelu

11 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će ispisati pozdravnu poruku bdquoDobar danldquo kada se klikne na taster (Botton)

koji je dodat na formu

- Podesiti za taster sledeća svojstva Caption-Klik na dugme u Inspector ObjektuEvants dogaĎaj

OnClick

U nazivu procedure treba da piše

procedure TForm1Button1Click

procedure imeformeimedugmetaClick

Junit treba da je sledećeg izgleda

Zadatak Kreirati aplikaciju za unos podataka kao na slici

Na formi imamo pet labela

Label1 label2 i label3 sadrţe svojstvo

caption svojstvo caption label4 je

prazno (ljubičasta-color) što znači da ova

labela ne prikazuje nikakav tekst Da bi se

videla boja labele koja je različita od boje

forme mora se svojstvo transparent

postaviti na FALSE Ako je ovo svojstvo

postavljeno na TRUE veličina labele se

prilagoĎava njenom sadrţaju Label 5 ne

sadrţi nikakav tekst (caption je prazno) a

boja labele je ista kao i forma pa se ta

labela ni ne vidi po pokretanju programa

Ona je tu da prihvati spoji i prikaţe tekst

koji se unese u edit polja Kod kojim se

ovo radi je

procedure TForm1Button2Click(Sender TObject)

begin

label5Caption=Učenik +edit1Text+ +edit2Text+ ide u +edit3Text+ razred

end

Ova naredba znači da smo svojstvo caption label5 promenili u toku izvršavanja programa Stringovi koji su

navedeni u naredbi će se uvek prikazivati takvi sadrţaj edit polja zavisi od onoga što unesemo putem

tastature u odreĎeno edit polje Znak + izmeĎu stringova nadovezuje stringove jedan za drugim pa tako ako

ţelimo razmak moramo ga posebno navesti

Pritiskom na dugme na kojem piše BRIŠI treba poništiti sve što je unešeno i što je prikazano u label5 Kod

koji se ovo radi je

procedure TForm1Button1Click(Sender TObject)

begin

edit1text=

edit2Text=

edit3Text=

label5Caption=

end

Label5

Tekst koji je

unešen u edit1 razmak Tekst koji je

unešen u edit2

Tekst koji je

unešen u edit3

Label1

Label2

Label4

Label5

Button2

Label3

12 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju gde se boja forme menja kada se miš postavi na formu i skloni sa forme

LbPoruka se ne vidi po pokretanju programa nego tek kada se prikaţe poruka i drugačije je boje od forme

Klikom na dugme se ispisuje bdquoZdravo svimaldquo na traţenom jeziku (Hola Mundo na španskom)

Za svaku vrstu komponenata uključujući i obrazce (forme) postoji odreĎeni spisak dogaĎaja koji mogu da

im se dogode Oni su nabrojani u Object Inspector-u na stranici Events ili

dvostruki klik na komponentu pa će Delphi sam dodeliti ime rukovaoca koje

se sastoji od imena komponente i imena dogaĎaja za koji se pravi rukovalac

U zadatku se traţi da se boja forme menja kada se miš postavi na nju i kada se

skloni sa nje Znači u pitanju su dva različita dogaĎaja DogaĎaj

OnMouseEnter nastaje kada se miš postavi na komponentu a dogaĎaj

OnMouseLeave kada se miš skloni sa komponente Kod kojim postiţemo

promenu boje forme u zavisnosti od poloţaja miša bi mogao biti

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

ImeKomponenteSvojstvo=Vrednost

Npr Forma1color znači da komponenti koja se zove Forma1 menjamo boju Vrednost svojstva

dodeljujemo koristeći znak za dodelu vrednosti =

Boje u Delphi-ju mogu da se navode imenom ispred koje stoji prefiks cl (clRed clGreen) ili zadavanjem

boje putem osmocifrenog heksadecimalnog broja (cifre od 0 do 9 i slova od A do F) sa znakom $ ispred

broja (sve nule je crna boja sve F je bela boja)

Svojstvo Caption predstavlja natpis na nekoj komponenti odnosno tekst koji se prikazuje u toj komponenti

Naredba Label1Caption=rsquoZDRAVOrsquo znači da će se u label1 prikazati tekst ZDRAVO

Promena imena fonta u ComicSans u labeli lbPoruka lbporukaFontName=Comic Sans MS

Promena veličine fonta u labeli lbPoruka lbporukaFontSize=50

Promena boje fonta u labeli lbPoruka lbporukaFontColor=clpurple

Promena natpisa u labeli lbPoruka lbPorukacaption=ZDRAVO SVIMA

Promena vidljivosti labele lbPoruka lbPoruka transparent=false

Ceo kod za ovu veţbu

Kada se miš nalazi na

formi boja je roza

Kada se miš skloni sa

forme boja je plava

13 prof Ljiljana Jovičin Blagojević

unit UProbni

interface uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls Buttons ExtCtrls

type

Tforma1 = class(TForm)

lbPoruka TLabel

Label2 TLabel

Button1 TButton

Button2 TButton

Button3 TButton

procedure FormMouseEnter(Sender TObject)

procedure FormMouseLeave(Sender TObject)

procedure Button2Click(Sender TObject)

procedure Button3Click(Sender TObject)

procedure Button1Click(Sender TObject)

private

Private declarations

end

var

forma1 Tforma1

implementation

$R dfm

procedure Tforma1Button1Click(Sender TObject)

begin

lbporukaFontSize=30

lbporukaFontName=forte

lbporukaFontColor=clmaroon

lbPorukacaption=Hola Mundo

lbPoruka transparent=false

end

procedure Tforma1Button2Click(Sender TObject)

begin

lbporukaFontSize=50

lbporukaFontName=Ravie

lbporukaFontColor=clpurple

lbPorukacaption=ZDRAVO SVIMA

lbPoruka transparent=false

end

procedure Tforma1Button3Click(Sender TObject)

begin

close

end

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

end

Ovo je sam Delphi napravio

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 3: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

3 prof Ljiljana Jovičin Blagojević

Action Izaberete neku proceduru koja će biti obavljena pri otvaranju prozora

ActiveControl Pokazuje objekat koji je aktivan nakon otvaranja prozora

Align Prijanjanje uz neku od ivica ekrana

Anchors Pokazuje kako je objekat vezan za roditelj objekat

AutoScroll OdreĎuje da li će se automatski pojaviti scrollbarovi ako je to potrebno

AutoSize OdreĎuje da li će objekt tako prilagoditi veličinu da nema slobodnog prostora

BiDiMode Pravac objekata

BorderIcons Ikone poput minimize maximize close

BorderStyle OdreĎuje stil prozora ( npr Sizeable - moguće je mijenjati veličinu u radu )

BorderWidth Širina okvira

Caption Naslov ( npr u ovom prozoru je naslov Programiranje Osobine )

ClientHeight Visina korisnog dela prozora

ClientWidth Širina korisnog dela prozora

Color Boja

Constraints Ograničenja ( npr visine )

Ctl3D OdreĎuje da li će objekat biti 3D renderisan

Cursor OdreĎuje kakav će kursor biti iznad objekta

DefaultMonitor OdreĎuje koji objekat će biti glavni

DockSite OdreĎuje da li je objekat vezan

DragKind OdreĎuje vrstu povlačenja objekta

DragMode OdreĎuje način povlačenja objekta

Enabled Pokazuje da li je objekat ţiv

Font OdreĎuje font na objektu

FormStyle Stil prozora ( npr MDIChild - prozor unutar drugog prozora )

Height Visina objekta ( dimenzija po y-osi )

HelpContext Dio Help file koji će biti prikazan po pritisku na Whats this

HelpFile OdreĎuje koji file sluţi kao Help file

Hint Tekst koji se nalazi u ţutom okviru koji sluţi kao objašnjenje

HorzScrollBar OdreĎuje osobine horizontalnog scrollbara

Icon Ikona u gornjem lijevom uglu prozora

KeyPreview OdreĎuje da li će objekat reagovati na tastaturu prije aktivne kontrole

Left Udaljenost objekta od lijeve strane roditelj objekta ( ovdje ekrana )

4 prof Ljiljana Jovičin Blagojević

Menu Pokazuje na meni tog prozora

Name Ime objekta ( automatski je Form1 ali se moţe mijenjati )

ObjectMenuItem Pokazuje na jedan dio menija

OldCreateOrder OdreĎuje kreiranje i uništavanje objekta

ParentBiDiMode NasljeĎivanje BiDiMode

ParentFont NasljeĎivanje fonta

PixelsPerInch Broj tačaka po inču

PopupMenu OdreĎuje popup meni za objekat

Position OdreĎuje poziciju prozora ( npr ScreenCentar - uvijek u centru ekrana )

PrintScale Skala za printanje

Scaled Skaliranje

ShowHint OdreĎuje da li će Hint biti prikazan

Tag Brojna oznaka objekta

Top Udaljenost objekta od gornje strane roditelj objekta ( ovde ekrana )

UseDockManager OdreĎuje korištenje dock managera pri pomeranju prozora

VertScrollBar OdreĎuje osobine vertikalnog scrollbara

Visible Pokazuje da li je objekat vidljiv

Width OdreĎuje širinu objekta ( dimenzija po x-osi )

WindowMenu OdreĎuje meni ako je FormStyle MDIForm

WindowState Stanje prozora ( npr Maximized - starta se maximizovan )

Naravno nisu iste osobine za sve objekte ali je princip isti

Drugi način menjanja osobina je menjanje u radu Ovo je programerski način Naime dok program radi

programer nema mogućnost menjati osobine pomoću Object Inspectora

Tako recimo ako hoćemo da u toku rada programa prozor ( npr Form1 ) promeni visinu ( koja je

iznosila npr 375 ) na 400 treba da ukucamo kod u Junitu npr

Form1Height = 400

Dakle prvo upisujemo ime objekta pa stavljamo tačku Delphi je

toliko razvijen da će automatski izbaciti listu osobina pa se lako

moţe izabrati Height ( visina )

Poznavatelji Pascal-a prepoznaju ovde standardni način

dodeljivanja vrednosti promjenljivoj

Vaţno je napomenuti da ovaj kod moţemo kucati samo kao deo neke procedure Dvostrukim klikom na

objekat automatski ulazimo u kod za objekat-Junit Delphi će postaviti kursor za unos naredbe tačno na

mesto gde treba da se nalazi

5 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte nov projekat i dajte mu ime

2 Dizajnirejte formu na sledeći način

Promenite ime forme Form1 u Naslovna - u Object Inspector-u u polje Caption ukucajte novo ime

(pogledajte automatsku promenu u kodu Junit-a)

Promenite boju pozadine forme- u Object Inspector-u u polje Color izaberite boju

Promenite dimenzije forme - u Object Inspector-u u polje With i Height unesite brojeve po ţelji

3 Sačuvajte projekat u svoj folder i pogledajte šta se desilo

KOMPONENTE

Delphi sadrţi spektar komponenti koje su podeljene u odvojene kategorije

Standardne komponente uključuju TButton TEdit TListBox TMemo TMainMenu TScrollBar

TPopupMenu TCheckBox TRadioButton TRadioGroup TGroupBox TPanel TActionList

Komponente se postavljaju na formu aktiviranjem ikone iz Palete komponenti Posle postavke osobine

komponenti se mogu menjati pomoću Object Inspector-a Svaka komponenta u Delphiju treba da ima naziv

(Name) koji mora biti jedinstven

Dva svojstva koja se često koriste za prilago|avanje korisničkog interfejsa su svojstva Color i Font Postoji

nekoliko svojstava koja su vezana za boju Svojstvo Color se obično odnosi na boju pozadine komponente

TakoĎe postoji svojstvo Color za fontove i mnoge druge grafičke elemente Osim standarnih ponuĎenih

boja korisnik moţe dodeliti druge boje Postoji mnogo načina i evo dva

- Tip svojstva je TColor i ako znate engleske reči onda ih navedite (npr clBlue clSilver clRed i dr)

- Tip svojstva TColor naznačite brojem RGB inteziteta ($00FF0000-plava $0000FF00-zelena i dr)

Mnoge komponente imaju takoĎe svojstva ParentColor i ParentFont koja označavaju da li komponenta

treba da koristi boju i font roditeljske komponente koja je obično formular

KOMPONENTE TEKSTA

Komponenta Edit omogućava korisniku da unese jednu liniju teksta poravnatoj u levo

Za tekst se mogu koristiti i komponente Label i StaticText ali se one obično koriste za nepromenljivi tekst

kao i za izlaz koji generiše program Promene se vrše karakteristikom Caption

Komponenta MaskEdit je Edit komponenta kojoj je dodat filter za

unos teksta Ona naznačava da li karakter treba da bude prikazan

malim velikim slovima ciframa i sl Npr za unos datuma se koristi

poseban format (032198) i ova kontrola definiše tu vrstu unosa

Karakteristika EditMask kontroliše masku koja se koristi Kada se

aktivira polje Value u Object Inspector-u otvara se dijalog prozor

(Input MaskEditor) koji omogućava da izaberete jednu od ponuĎenih

maski ili da kreirate svoju

Komponenta Memo dozvoljava unos više linija teksta ali omogućava samo jedan font za ceo tekst

Karakteristika Lines iz Object Inspector-a omogućava snimanje sadrţaja teksta sa diska i na disk

6 prof Ljiljana Jovičin Blagojević

Karakteristika ScrollBars je jedinstvena za komponentu Memo i omogućuje trake za pomeranje

Komponenta RichText ne spade u grupu standardnih kotrola omogućava unos velike količine teksta sa

promenljivim fontovima poravnanjima pasusa i sl

Karakteristike za edit kontrole

Opcija Odnosi se na Opis Karakteristike

AutoSelectEdit MaskEdit Kada je podešeno na True tekst u okviru edit kontrole

će automatski biti označen kada korisnik pritiskom na

taster Tab preĎe na kontrolu Generička vrednost True

AutoSizeEdit MaskEdit Kada je podešeno na True edit kontrola će automatski

promeniti veličinu kada se fontedit kontrole promeni U

suprotnom edit kontrola ne menja veličinu prilikom

promene veličine fonta Generička vrednost True

CharCaseEdit MaskEdit OdreĎuje da li će edit kontrola prikazivati velika slova

(ecUpperCase) mala slova (ecLowerCase) ili normalan

tekst (ecNormal) Generička vrednost ecNormal

HideScrollBars RichEdit Kada je podešena na True trake za pomeranje će biti

prikazane ukoliko je to potrebno u protivnom će biti

skrivene Kada je podešena na False trake za pomeranje

će biti prikazane na osnovu vrednosti karakteristike

ScrollBars

HideSelection Edit Memo RichEdit Kada je podešeno na True tekst koji je označen neće

biti prikazan kao označen prilikom prelaska korisnika

na narednu kontrolu pritiskom na taster Tab Generička

vrednost False

Lines Memo RichEdit Tekst koji se sadrĎi u komponenti Lines je slučaj klase

TStrings

MaxLength sve Definiše maksimalan broj karaktera koje će komponenta

moći da sadrţi Ukoliko je vrednost 0 moţe se uneti

neograničena duţina teksta (ograničena samo zahtevima

sistema) Kada je podešena na bilo koju vrednost

različitu od nule broj karaktera je ograničen zadatom

vrednosti Generička vrednost 0

OEMConvert Edit Memo Podesite ovu karakteristiku na True kada tekst koji se

unosi sadrţi naziv datoteke Generička vrednost False

PasswordChar Edit MaskEdit Kada je ova karakteristika podešena na vrednost

različitu od ASCII 0 tekst koji unosite će biti prikazan

korišćenjem definisanih karaktera Tekst u okviru edit

kontrole neće biti izmenjenGenerička vrednost 0

PlainText RichEdit Kada je podešena na True RTF (Rich Text Format)

datoteke će biti prikazane kao običan tekst bez

formatiranja karaktera i paragrafa

Text Edit MaskEdit Sadrţi tekst u okviru komponente

WantReturns Memo RichEdit Kada je podešena na True komponenta zadrţava

karakter za kraj reda i novu liniju koju korisnik unosi u

edit kontrolu pritiskom na taster Enter Kada je

podešena na False karakteri za kraj reda i novu liniju

ulaze u formu ali se ne postavljaju u okviru edit

kontrole Generička vrednost True

WantTabs Memo RichEdit Kada je podešena na True kada korisnik pritisne taster

Tab u edit kontrolu se upisuje karakter tab Kada je

postavljen na False tab karakteri prelaze na formu

7 prof Ljiljana Jovičin Blagojević

Zadatak

1 Otvorite predhodni projekat

2 Iz Palete komponenti izaberite komponentu Label1 (slovo A) i kreirajte na formu

3 Promenite osobine u Object Inspector-u

Ukucajte tekst po ţelji (polje Caption)

Promenite boju pozadine Label1 u ljubičasto (Color)

Promenite vrstu veliičinu i boju slova (Font)

4 Postavite još neke kontrole za tekst i uočite razlike

5 Sačuvajte izmene u projektu

6 Pogledajte kod komponenti (dodat je automatski u class TForm)

KOMPONENTA Panel

Često će vam se dogoditi da imate komponente koje su postavljene u okviru drugih komponenti

Komponenta Panel se obično koristi kao kontejner za druge komponente Da biste odabrali grupu

komponenti u okviru panela treba da drţite pritisnut taster ltCtrlgt dok prevlačite mišem kako bi odabrali

komponentu Paneli se obično koriste za naslove i delove teksta koje treba nagltzle i BorderWidth

KOMPONENTE Button

Komponente Button karakterišu osobine ModalResult Default Cansel i Enabled Button su principu

simulira klik miša pa moţe da zatvara Form aktivira aplikaciju i sl

Zadatak

1 Otvorite nov projekat

2 Odaberite komponentu Panel u okviru Palete komponenti i postavite je na formu koristeći metod

prevlačenja Proširite je tako da zauzme veći deo forme

3 Sada odaberite komponentu Button i postavite šest dugmadi na

formu

4 Izmenite osobine komponenti po ţelji

8 prof Ljiljana Jovičin Blagojević

JUNIT

Pascal juniti

Programiranje je više od kucanja programskog koda Pre svega programiranje je kombinacija planiranja

zadatka za programiranje a zatim kucanja koda koji će izvršavati taj zadatak Kod koji kucate se upisuje u

tekst datoteku Prevodilac uzima ovu datoteku i prevodi je u mašinski kod koji računar moţe da razume

Tekst datoteka koju Delphi prevodi u mašinski kod se zove junit (unit)

Tipovi junita

Delphijeve GUI aplikacije će sadrţati najmanje dva junita

Izvorni junit projekta sadrţi izvorni kod projekta Juniti izvornog koda programa imaju nastavak

DPR

Drugi tip junita koji Delphijeve GUI aplikacije sadrţe je junit glavne forme Junit forme i njegov

naziv ukazuju na junit izvornog koda koji mu je pridruţen Ovaj tip junita ima nastavak PAS Ovaj

tip junita ćete u većini slučajeva koristiti u Vašim Delphi programima Delphijeve GUI aplikacije

uvek imaju jedan junit forme (za glavnu formu) ali takoĎe mogu imati jednu ili više dodatnih

junita formi

Sadržaj junita Delphi juniti moraju pratiti unapred definisan format Junit mora biti napisan u unapred definisanom formatu

da bi prevodilac mogao da čita junit i prevodi kod junita

Juniti Delphi projekta sadrţe ključnu reč program iza kog sledi naziv junita i kod blok koji se nalazi izmeĎu

ključnih reči begin i end

Izvorni junit projekta za generički Delphijev projekt izgleda

Izvorni kod projekta za generički Delphijev project

01 program Project1

02

03 uses

04 Forms

05 Unit1 in Unit1pas Form1

06

07 $R RES

08

09 begin

10 ApplicationInitialize

11 ApplicationCreateForm(TForm1 Form1)

12 ApplicationRun

13 end

U liniji 1 ključna reč program identifikuje junit kao glavni izvorni junit programa

Moţete videti da se naziv junita Project1 nalazi iza ključne reči program (Delphi daje projektu generikči

naziv sve dok ne snimite projekt pod nazivom koji ima bolje značenje) Počev od linije 3 vidite deo koji je

identifikovan ključnom reči uses

Iza ključne reči uses se nalaze nazivi junita koje navedeni junit traţi da bi mogao da bude preveden Spisak

se završava znakom tačka-zarez

U liniji 7 moţete videti direktivu prevodiocu koja pokazuje Delphiju da uključi odgovarajuću resursnu

datoteku

Linija 9 sadrţi ključnu reč begin a linija 13 sadrţi ključnu reč end Zapazite da poslednja ključna reč end u

okviru junita iza sebe ima tačku (Junit moţe sadrţati više blokova koda označenih sa begin i end ali samo

jedan krajnji end iskaz)

Kod u okviru linija 10 11 i 12 je kod koji inicijalizuje aplikaciju kreirajući glavnu formu aplikacije

odnosno startuje aplikaciju

9 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte još jedan osnovni junit (FileNew) i pogledajte kod

Dvostrukim klikom na formu Delphi će prikazati nov junit u editor koda (Code Editor)

Prazan Pascal junit

01 unit Unit2

02

03 interface

04

05 implementation

06

07 end

Ovaj junit ima dve slične stvari sa junitom koji je predhodno

prikazan Prvo junit počinje ključnom reči unit iza koje sledi

naziv junita Unit2 (opet generički naziv koji kreira Delphi

Ključna reč end pojavljuje na kraju oba listinga

Kod u okviru praznog listinga se razlikuje od predhodnog po tome što sadrţi delove pod nazivom interface

i implementation Junit koji nije glavni izvorni junit programa mora sadrţati deo interface i deo

implementation Prazan Listing se razlikuje od predhodnog i po tome što nema iskaz begin Glavni junit programa mora

imati oba iskaza begin i end ali izvorni junit jedini moţe sadrţati poslednji iskaz end

Odeljak interface

Ova ključna reč označava početak odeljka za interfejs u okviru junita

Odeljak interface je odeljak junita u okviru kog se deklarišu identifikatori koje navedeni junit izvozi

Identifikator za izvoz predstavlja identifikator kome mogu pristupiti drugi juniti u okviru projekta

Većina junita će sadrţati kod koji ostali juniti koriste Moţe se reći da odeljak za interfejs sadrţi listu stavki

u okviru junita koje ostali juniti mogu da koriste Odeljak za intrerfejs počinje ključnom reči interface a

završava se ključnom reči implementation

Odeljak implementation

Odeljak za implementaciju junita je odeljak koji sadrţi aktuelni kod junita Odeljak za implementaciju

počinje ključnom reči implementation a završava se ključnom reči sledećeg junita

Kljućne reči u junitu

Ključna reč const

Junit opciono moţe sadrţati jedan ili više odeljaka const Odeljak const je odreĎen ključnom reči const

Odeljak const opisuje listu promenljivih koje su poznate kao konstante

Konstanta je identifikator koji se ne moţe menjati Npr

const

DefaultWidth = 400

DefaultHeight = 200

Description = Something really cool

Ključna reč type

Ključna reč type se koristi da deklariše nove tipove koje će koristiti program

Ključna reč var

Ključna reč var se koristi da deklariše odeljak koda u kom se deklarišu promenljive

Promenljive treba da budu deklarisane pre nego što se koriste Promenljive treba da deklarišete u posebnom

odeljku koda koji je naznačen ključnom reči var Npr

10 prof Ljiljana Jovičin Blagojević

var

X Integer variable X declared as an integer variable

Y Integer variable Y declared as an integer variable

Najčešće deklaracije promenljivih su Integer RealChar Word Boolean i dr

Često korišćeni operatori

Operator Opis Primer Matemati~ki operatori + sabiranje x =y + z

- oduzimanje x = y - z

mnoţenje x = y z

deljenje realnog broja x = y 314

div celobrojno deljenje x = y div 10

= dodeljivanje x =10

And logičko i if (x=1) and (y=2) then

= jednako if (x=10) then

ltgt nije jednako if (xltgt10) then

lt manje je od if (xlt10) then

lt= veće ili jednako if (xlt=) then

Zadatak Kreirati aplikaciju koja će aktiviranjem labele ispisivati tekst po ţelji u crvenoj boji veličine 20

1 Na otvorenu formu dodajte labelu (Label1)

2 Aktivirajte kod labele (dvostruki klik na labelu) i ukucajte naredbu

Label1Caption=Dobar dan Hvala sto ste kliknuli na mene (као на слици )

3 Startujte program (Run) i kliknite na labelu (pojaviće se uneti tekst) Vratite se u reţim rada

4 Podesite veličinu i boju slova font Color-Red i Size-20 Unesite kod ispod predhodnog

Label1FontSize=20

Label1FontColor=clRed

5 Startujte program

6 Sačuvajte ga pod imenom KlikNaLabelu

11 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će ispisati pozdravnu poruku bdquoDobar danldquo kada se klikne na taster (Botton)

koji je dodat na formu

- Podesiti za taster sledeća svojstva Caption-Klik na dugme u Inspector ObjektuEvants dogaĎaj

OnClick

U nazivu procedure treba da piše

procedure TForm1Button1Click

procedure imeformeimedugmetaClick

Junit treba da je sledećeg izgleda

Zadatak Kreirati aplikaciju za unos podataka kao na slici

Na formi imamo pet labela

Label1 label2 i label3 sadrţe svojstvo

caption svojstvo caption label4 je

prazno (ljubičasta-color) što znači da ova

labela ne prikazuje nikakav tekst Da bi se

videla boja labele koja je različita od boje

forme mora se svojstvo transparent

postaviti na FALSE Ako je ovo svojstvo

postavljeno na TRUE veličina labele se

prilagoĎava njenom sadrţaju Label 5 ne

sadrţi nikakav tekst (caption je prazno) a

boja labele je ista kao i forma pa se ta

labela ni ne vidi po pokretanju programa

Ona je tu da prihvati spoji i prikaţe tekst

koji se unese u edit polja Kod kojim se

ovo radi je

procedure TForm1Button2Click(Sender TObject)

begin

label5Caption=Učenik +edit1Text+ +edit2Text+ ide u +edit3Text+ razred

end

Ova naredba znači da smo svojstvo caption label5 promenili u toku izvršavanja programa Stringovi koji su

navedeni u naredbi će se uvek prikazivati takvi sadrţaj edit polja zavisi od onoga što unesemo putem

tastature u odreĎeno edit polje Znak + izmeĎu stringova nadovezuje stringove jedan za drugim pa tako ako

ţelimo razmak moramo ga posebno navesti

Pritiskom na dugme na kojem piše BRIŠI treba poništiti sve što je unešeno i što je prikazano u label5 Kod

koji se ovo radi je

procedure TForm1Button1Click(Sender TObject)

begin

edit1text=

edit2Text=

edit3Text=

label5Caption=

end

Label5

Tekst koji je

unešen u edit1 razmak Tekst koji je

unešen u edit2

Tekst koji je

unešen u edit3

Label1

Label2

Label4

Label5

Button2

Label3

12 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju gde se boja forme menja kada se miš postavi na formu i skloni sa forme

LbPoruka se ne vidi po pokretanju programa nego tek kada se prikaţe poruka i drugačije je boje od forme

Klikom na dugme se ispisuje bdquoZdravo svimaldquo na traţenom jeziku (Hola Mundo na španskom)

Za svaku vrstu komponenata uključujući i obrazce (forme) postoji odreĎeni spisak dogaĎaja koji mogu da

im se dogode Oni su nabrojani u Object Inspector-u na stranici Events ili

dvostruki klik na komponentu pa će Delphi sam dodeliti ime rukovaoca koje

se sastoji od imena komponente i imena dogaĎaja za koji se pravi rukovalac

U zadatku se traţi da se boja forme menja kada se miš postavi na nju i kada se

skloni sa nje Znači u pitanju su dva različita dogaĎaja DogaĎaj

OnMouseEnter nastaje kada se miš postavi na komponentu a dogaĎaj

OnMouseLeave kada se miš skloni sa komponente Kod kojim postiţemo

promenu boje forme u zavisnosti od poloţaja miša bi mogao biti

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

ImeKomponenteSvojstvo=Vrednost

Npr Forma1color znači da komponenti koja se zove Forma1 menjamo boju Vrednost svojstva

dodeljujemo koristeći znak za dodelu vrednosti =

Boje u Delphi-ju mogu da se navode imenom ispred koje stoji prefiks cl (clRed clGreen) ili zadavanjem

boje putem osmocifrenog heksadecimalnog broja (cifre od 0 do 9 i slova od A do F) sa znakom $ ispred

broja (sve nule je crna boja sve F je bela boja)

Svojstvo Caption predstavlja natpis na nekoj komponenti odnosno tekst koji se prikazuje u toj komponenti

Naredba Label1Caption=rsquoZDRAVOrsquo znači da će se u label1 prikazati tekst ZDRAVO

Promena imena fonta u ComicSans u labeli lbPoruka lbporukaFontName=Comic Sans MS

Promena veličine fonta u labeli lbPoruka lbporukaFontSize=50

Promena boje fonta u labeli lbPoruka lbporukaFontColor=clpurple

Promena natpisa u labeli lbPoruka lbPorukacaption=ZDRAVO SVIMA

Promena vidljivosti labele lbPoruka lbPoruka transparent=false

Ceo kod za ovu veţbu

Kada se miš nalazi na

formi boja je roza

Kada se miš skloni sa

forme boja je plava

13 prof Ljiljana Jovičin Blagojević

unit UProbni

interface uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls Buttons ExtCtrls

type

Tforma1 = class(TForm)

lbPoruka TLabel

Label2 TLabel

Button1 TButton

Button2 TButton

Button3 TButton

procedure FormMouseEnter(Sender TObject)

procedure FormMouseLeave(Sender TObject)

procedure Button2Click(Sender TObject)

procedure Button3Click(Sender TObject)

procedure Button1Click(Sender TObject)

private

Private declarations

end

var

forma1 Tforma1

implementation

$R dfm

procedure Tforma1Button1Click(Sender TObject)

begin

lbporukaFontSize=30

lbporukaFontName=forte

lbporukaFontColor=clmaroon

lbPorukacaption=Hola Mundo

lbPoruka transparent=false

end

procedure Tforma1Button2Click(Sender TObject)

begin

lbporukaFontSize=50

lbporukaFontName=Ravie

lbporukaFontColor=clpurple

lbPorukacaption=ZDRAVO SVIMA

lbPoruka transparent=false

end

procedure Tforma1Button3Click(Sender TObject)

begin

close

end

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

end

Ovo je sam Delphi napravio

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 4: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

4 prof Ljiljana Jovičin Blagojević

Menu Pokazuje na meni tog prozora

Name Ime objekta ( automatski je Form1 ali se moţe mijenjati )

ObjectMenuItem Pokazuje na jedan dio menija

OldCreateOrder OdreĎuje kreiranje i uništavanje objekta

ParentBiDiMode NasljeĎivanje BiDiMode

ParentFont NasljeĎivanje fonta

PixelsPerInch Broj tačaka po inču

PopupMenu OdreĎuje popup meni za objekat

Position OdreĎuje poziciju prozora ( npr ScreenCentar - uvijek u centru ekrana )

PrintScale Skala za printanje

Scaled Skaliranje

ShowHint OdreĎuje da li će Hint biti prikazan

Tag Brojna oznaka objekta

Top Udaljenost objekta od gornje strane roditelj objekta ( ovde ekrana )

UseDockManager OdreĎuje korištenje dock managera pri pomeranju prozora

VertScrollBar OdreĎuje osobine vertikalnog scrollbara

Visible Pokazuje da li je objekat vidljiv

Width OdreĎuje širinu objekta ( dimenzija po x-osi )

WindowMenu OdreĎuje meni ako je FormStyle MDIForm

WindowState Stanje prozora ( npr Maximized - starta se maximizovan )

Naravno nisu iste osobine za sve objekte ali je princip isti

Drugi način menjanja osobina je menjanje u radu Ovo je programerski način Naime dok program radi

programer nema mogućnost menjati osobine pomoću Object Inspectora

Tako recimo ako hoćemo da u toku rada programa prozor ( npr Form1 ) promeni visinu ( koja je

iznosila npr 375 ) na 400 treba da ukucamo kod u Junitu npr

Form1Height = 400

Dakle prvo upisujemo ime objekta pa stavljamo tačku Delphi je

toliko razvijen da će automatski izbaciti listu osobina pa se lako

moţe izabrati Height ( visina )

Poznavatelji Pascal-a prepoznaju ovde standardni način

dodeljivanja vrednosti promjenljivoj

Vaţno je napomenuti da ovaj kod moţemo kucati samo kao deo neke procedure Dvostrukim klikom na

objekat automatski ulazimo u kod za objekat-Junit Delphi će postaviti kursor za unos naredbe tačno na

mesto gde treba da se nalazi

5 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte nov projekat i dajte mu ime

2 Dizajnirejte formu na sledeći način

Promenite ime forme Form1 u Naslovna - u Object Inspector-u u polje Caption ukucajte novo ime

(pogledajte automatsku promenu u kodu Junit-a)

Promenite boju pozadine forme- u Object Inspector-u u polje Color izaberite boju

Promenite dimenzije forme - u Object Inspector-u u polje With i Height unesite brojeve po ţelji

3 Sačuvajte projekat u svoj folder i pogledajte šta se desilo

KOMPONENTE

Delphi sadrţi spektar komponenti koje su podeljene u odvojene kategorije

Standardne komponente uključuju TButton TEdit TListBox TMemo TMainMenu TScrollBar

TPopupMenu TCheckBox TRadioButton TRadioGroup TGroupBox TPanel TActionList

Komponente se postavljaju na formu aktiviranjem ikone iz Palete komponenti Posle postavke osobine

komponenti se mogu menjati pomoću Object Inspector-a Svaka komponenta u Delphiju treba da ima naziv

(Name) koji mora biti jedinstven

Dva svojstva koja se često koriste za prilago|avanje korisničkog interfejsa su svojstva Color i Font Postoji

nekoliko svojstava koja su vezana za boju Svojstvo Color se obično odnosi na boju pozadine komponente

TakoĎe postoji svojstvo Color za fontove i mnoge druge grafičke elemente Osim standarnih ponuĎenih

boja korisnik moţe dodeliti druge boje Postoji mnogo načina i evo dva

- Tip svojstva je TColor i ako znate engleske reči onda ih navedite (npr clBlue clSilver clRed i dr)

- Tip svojstva TColor naznačite brojem RGB inteziteta ($00FF0000-plava $0000FF00-zelena i dr)

Mnoge komponente imaju takoĎe svojstva ParentColor i ParentFont koja označavaju da li komponenta

treba da koristi boju i font roditeljske komponente koja je obično formular

KOMPONENTE TEKSTA

Komponenta Edit omogućava korisniku da unese jednu liniju teksta poravnatoj u levo

Za tekst se mogu koristiti i komponente Label i StaticText ali se one obično koriste za nepromenljivi tekst

kao i za izlaz koji generiše program Promene se vrše karakteristikom Caption

Komponenta MaskEdit je Edit komponenta kojoj je dodat filter za

unos teksta Ona naznačava da li karakter treba da bude prikazan

malim velikim slovima ciframa i sl Npr za unos datuma se koristi

poseban format (032198) i ova kontrola definiše tu vrstu unosa

Karakteristika EditMask kontroliše masku koja se koristi Kada se

aktivira polje Value u Object Inspector-u otvara se dijalog prozor

(Input MaskEditor) koji omogućava da izaberete jednu od ponuĎenih

maski ili da kreirate svoju

Komponenta Memo dozvoljava unos više linija teksta ali omogućava samo jedan font za ceo tekst

Karakteristika Lines iz Object Inspector-a omogućava snimanje sadrţaja teksta sa diska i na disk

6 prof Ljiljana Jovičin Blagojević

Karakteristika ScrollBars je jedinstvena za komponentu Memo i omogućuje trake za pomeranje

Komponenta RichText ne spade u grupu standardnih kotrola omogućava unos velike količine teksta sa

promenljivim fontovima poravnanjima pasusa i sl

Karakteristike za edit kontrole

Opcija Odnosi se na Opis Karakteristike

AutoSelectEdit MaskEdit Kada je podešeno na True tekst u okviru edit kontrole

će automatski biti označen kada korisnik pritiskom na

taster Tab preĎe na kontrolu Generička vrednost True

AutoSizeEdit MaskEdit Kada je podešeno na True edit kontrola će automatski

promeniti veličinu kada se fontedit kontrole promeni U

suprotnom edit kontrola ne menja veličinu prilikom

promene veličine fonta Generička vrednost True

CharCaseEdit MaskEdit OdreĎuje da li će edit kontrola prikazivati velika slova

(ecUpperCase) mala slova (ecLowerCase) ili normalan

tekst (ecNormal) Generička vrednost ecNormal

HideScrollBars RichEdit Kada je podešena na True trake za pomeranje će biti

prikazane ukoliko je to potrebno u protivnom će biti

skrivene Kada je podešena na False trake za pomeranje

će biti prikazane na osnovu vrednosti karakteristike

ScrollBars

HideSelection Edit Memo RichEdit Kada je podešeno na True tekst koji je označen neće

biti prikazan kao označen prilikom prelaska korisnika

na narednu kontrolu pritiskom na taster Tab Generička

vrednost False

Lines Memo RichEdit Tekst koji se sadrĎi u komponenti Lines je slučaj klase

TStrings

MaxLength sve Definiše maksimalan broj karaktera koje će komponenta

moći da sadrţi Ukoliko je vrednost 0 moţe se uneti

neograničena duţina teksta (ograničena samo zahtevima

sistema) Kada je podešena na bilo koju vrednost

različitu od nule broj karaktera je ograničen zadatom

vrednosti Generička vrednost 0

OEMConvert Edit Memo Podesite ovu karakteristiku na True kada tekst koji se

unosi sadrţi naziv datoteke Generička vrednost False

PasswordChar Edit MaskEdit Kada je ova karakteristika podešena na vrednost

različitu od ASCII 0 tekst koji unosite će biti prikazan

korišćenjem definisanih karaktera Tekst u okviru edit

kontrole neće biti izmenjenGenerička vrednost 0

PlainText RichEdit Kada je podešena na True RTF (Rich Text Format)

datoteke će biti prikazane kao običan tekst bez

formatiranja karaktera i paragrafa

Text Edit MaskEdit Sadrţi tekst u okviru komponente

WantReturns Memo RichEdit Kada je podešena na True komponenta zadrţava

karakter za kraj reda i novu liniju koju korisnik unosi u

edit kontrolu pritiskom na taster Enter Kada je

podešena na False karakteri za kraj reda i novu liniju

ulaze u formu ali se ne postavljaju u okviru edit

kontrole Generička vrednost True

WantTabs Memo RichEdit Kada je podešena na True kada korisnik pritisne taster

Tab u edit kontrolu se upisuje karakter tab Kada je

postavljen na False tab karakteri prelaze na formu

7 prof Ljiljana Jovičin Blagojević

Zadatak

1 Otvorite predhodni projekat

2 Iz Palete komponenti izaberite komponentu Label1 (slovo A) i kreirajte na formu

3 Promenite osobine u Object Inspector-u

Ukucajte tekst po ţelji (polje Caption)

Promenite boju pozadine Label1 u ljubičasto (Color)

Promenite vrstu veliičinu i boju slova (Font)

4 Postavite još neke kontrole za tekst i uočite razlike

5 Sačuvajte izmene u projektu

6 Pogledajte kod komponenti (dodat je automatski u class TForm)

KOMPONENTA Panel

Često će vam se dogoditi da imate komponente koje su postavljene u okviru drugih komponenti

Komponenta Panel se obično koristi kao kontejner za druge komponente Da biste odabrali grupu

komponenti u okviru panela treba da drţite pritisnut taster ltCtrlgt dok prevlačite mišem kako bi odabrali

komponentu Paneli se obično koriste za naslove i delove teksta koje treba nagltzle i BorderWidth

KOMPONENTE Button

Komponente Button karakterišu osobine ModalResult Default Cansel i Enabled Button su principu

simulira klik miša pa moţe da zatvara Form aktivira aplikaciju i sl

Zadatak

1 Otvorite nov projekat

2 Odaberite komponentu Panel u okviru Palete komponenti i postavite je na formu koristeći metod

prevlačenja Proširite je tako da zauzme veći deo forme

3 Sada odaberite komponentu Button i postavite šest dugmadi na

formu

4 Izmenite osobine komponenti po ţelji

8 prof Ljiljana Jovičin Blagojević

JUNIT

Pascal juniti

Programiranje je više od kucanja programskog koda Pre svega programiranje je kombinacija planiranja

zadatka za programiranje a zatim kucanja koda koji će izvršavati taj zadatak Kod koji kucate se upisuje u

tekst datoteku Prevodilac uzima ovu datoteku i prevodi je u mašinski kod koji računar moţe da razume

Tekst datoteka koju Delphi prevodi u mašinski kod se zove junit (unit)

Tipovi junita

Delphijeve GUI aplikacije će sadrţati najmanje dva junita

Izvorni junit projekta sadrţi izvorni kod projekta Juniti izvornog koda programa imaju nastavak

DPR

Drugi tip junita koji Delphijeve GUI aplikacije sadrţe je junit glavne forme Junit forme i njegov

naziv ukazuju na junit izvornog koda koji mu je pridruţen Ovaj tip junita ima nastavak PAS Ovaj

tip junita ćete u većini slučajeva koristiti u Vašim Delphi programima Delphijeve GUI aplikacije

uvek imaju jedan junit forme (za glavnu formu) ali takoĎe mogu imati jednu ili više dodatnih

junita formi

Sadržaj junita Delphi juniti moraju pratiti unapred definisan format Junit mora biti napisan u unapred definisanom formatu

da bi prevodilac mogao da čita junit i prevodi kod junita

Juniti Delphi projekta sadrţe ključnu reč program iza kog sledi naziv junita i kod blok koji se nalazi izmeĎu

ključnih reči begin i end

Izvorni junit projekta za generički Delphijev projekt izgleda

Izvorni kod projekta za generički Delphijev project

01 program Project1

02

03 uses

04 Forms

05 Unit1 in Unit1pas Form1

06

07 $R RES

08

09 begin

10 ApplicationInitialize

11 ApplicationCreateForm(TForm1 Form1)

12 ApplicationRun

13 end

U liniji 1 ključna reč program identifikuje junit kao glavni izvorni junit programa

Moţete videti da se naziv junita Project1 nalazi iza ključne reči program (Delphi daje projektu generikči

naziv sve dok ne snimite projekt pod nazivom koji ima bolje značenje) Počev od linije 3 vidite deo koji je

identifikovan ključnom reči uses

Iza ključne reči uses se nalaze nazivi junita koje navedeni junit traţi da bi mogao da bude preveden Spisak

se završava znakom tačka-zarez

U liniji 7 moţete videti direktivu prevodiocu koja pokazuje Delphiju da uključi odgovarajuću resursnu

datoteku

Linija 9 sadrţi ključnu reč begin a linija 13 sadrţi ključnu reč end Zapazite da poslednja ključna reč end u

okviru junita iza sebe ima tačku (Junit moţe sadrţati više blokova koda označenih sa begin i end ali samo

jedan krajnji end iskaz)

Kod u okviru linija 10 11 i 12 je kod koji inicijalizuje aplikaciju kreirajući glavnu formu aplikacije

odnosno startuje aplikaciju

9 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte još jedan osnovni junit (FileNew) i pogledajte kod

Dvostrukim klikom na formu Delphi će prikazati nov junit u editor koda (Code Editor)

Prazan Pascal junit

01 unit Unit2

02

03 interface

04

05 implementation

06

07 end

Ovaj junit ima dve slične stvari sa junitom koji je predhodno

prikazan Prvo junit počinje ključnom reči unit iza koje sledi

naziv junita Unit2 (opet generički naziv koji kreira Delphi

Ključna reč end pojavljuje na kraju oba listinga

Kod u okviru praznog listinga se razlikuje od predhodnog po tome što sadrţi delove pod nazivom interface

i implementation Junit koji nije glavni izvorni junit programa mora sadrţati deo interface i deo

implementation Prazan Listing se razlikuje od predhodnog i po tome što nema iskaz begin Glavni junit programa mora

imati oba iskaza begin i end ali izvorni junit jedini moţe sadrţati poslednji iskaz end

Odeljak interface

Ova ključna reč označava početak odeljka za interfejs u okviru junita

Odeljak interface je odeljak junita u okviru kog se deklarišu identifikatori koje navedeni junit izvozi

Identifikator za izvoz predstavlja identifikator kome mogu pristupiti drugi juniti u okviru projekta

Većina junita će sadrţati kod koji ostali juniti koriste Moţe se reći da odeljak za interfejs sadrţi listu stavki

u okviru junita koje ostali juniti mogu da koriste Odeljak za intrerfejs počinje ključnom reči interface a

završava se ključnom reči implementation

Odeljak implementation

Odeljak za implementaciju junita je odeljak koji sadrţi aktuelni kod junita Odeljak za implementaciju

počinje ključnom reči implementation a završava se ključnom reči sledećeg junita

Kljućne reči u junitu

Ključna reč const

Junit opciono moţe sadrţati jedan ili više odeljaka const Odeljak const je odreĎen ključnom reči const

Odeljak const opisuje listu promenljivih koje su poznate kao konstante

Konstanta je identifikator koji se ne moţe menjati Npr

const

DefaultWidth = 400

DefaultHeight = 200

Description = Something really cool

Ključna reč type

Ključna reč type se koristi da deklariše nove tipove koje će koristiti program

Ključna reč var

Ključna reč var se koristi da deklariše odeljak koda u kom se deklarišu promenljive

Promenljive treba da budu deklarisane pre nego što se koriste Promenljive treba da deklarišete u posebnom

odeljku koda koji je naznačen ključnom reči var Npr

10 prof Ljiljana Jovičin Blagojević

var

X Integer variable X declared as an integer variable

Y Integer variable Y declared as an integer variable

Najčešće deklaracije promenljivih su Integer RealChar Word Boolean i dr

Često korišćeni operatori

Operator Opis Primer Matemati~ki operatori + sabiranje x =y + z

- oduzimanje x = y - z

mnoţenje x = y z

deljenje realnog broja x = y 314

div celobrojno deljenje x = y div 10

= dodeljivanje x =10

And logičko i if (x=1) and (y=2) then

= jednako if (x=10) then

ltgt nije jednako if (xltgt10) then

lt manje je od if (xlt10) then

lt= veće ili jednako if (xlt=) then

Zadatak Kreirati aplikaciju koja će aktiviranjem labele ispisivati tekst po ţelji u crvenoj boji veličine 20

1 Na otvorenu formu dodajte labelu (Label1)

2 Aktivirajte kod labele (dvostruki klik na labelu) i ukucajte naredbu

Label1Caption=Dobar dan Hvala sto ste kliknuli na mene (као на слици )

3 Startujte program (Run) i kliknite na labelu (pojaviće se uneti tekst) Vratite se u reţim rada

4 Podesite veličinu i boju slova font Color-Red i Size-20 Unesite kod ispod predhodnog

Label1FontSize=20

Label1FontColor=clRed

5 Startujte program

6 Sačuvajte ga pod imenom KlikNaLabelu

11 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će ispisati pozdravnu poruku bdquoDobar danldquo kada se klikne na taster (Botton)

koji je dodat na formu

- Podesiti za taster sledeća svojstva Caption-Klik na dugme u Inspector ObjektuEvants dogaĎaj

OnClick

U nazivu procedure treba da piše

procedure TForm1Button1Click

procedure imeformeimedugmetaClick

Junit treba da je sledećeg izgleda

Zadatak Kreirati aplikaciju za unos podataka kao na slici

Na formi imamo pet labela

Label1 label2 i label3 sadrţe svojstvo

caption svojstvo caption label4 je

prazno (ljubičasta-color) što znači da ova

labela ne prikazuje nikakav tekst Da bi se

videla boja labele koja je različita od boje

forme mora se svojstvo transparent

postaviti na FALSE Ako je ovo svojstvo

postavljeno na TRUE veličina labele se

prilagoĎava njenom sadrţaju Label 5 ne

sadrţi nikakav tekst (caption je prazno) a

boja labele je ista kao i forma pa se ta

labela ni ne vidi po pokretanju programa

Ona je tu da prihvati spoji i prikaţe tekst

koji se unese u edit polja Kod kojim se

ovo radi je

procedure TForm1Button2Click(Sender TObject)

begin

label5Caption=Učenik +edit1Text+ +edit2Text+ ide u +edit3Text+ razred

end

Ova naredba znači da smo svojstvo caption label5 promenili u toku izvršavanja programa Stringovi koji su

navedeni u naredbi će se uvek prikazivati takvi sadrţaj edit polja zavisi od onoga što unesemo putem

tastature u odreĎeno edit polje Znak + izmeĎu stringova nadovezuje stringove jedan za drugim pa tako ako

ţelimo razmak moramo ga posebno navesti

Pritiskom na dugme na kojem piše BRIŠI treba poništiti sve što je unešeno i što je prikazano u label5 Kod

koji se ovo radi je

procedure TForm1Button1Click(Sender TObject)

begin

edit1text=

edit2Text=

edit3Text=

label5Caption=

end

Label5

Tekst koji je

unešen u edit1 razmak Tekst koji je

unešen u edit2

Tekst koji je

unešen u edit3

Label1

Label2

Label4

Label5

Button2

Label3

12 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju gde se boja forme menja kada se miš postavi na formu i skloni sa forme

LbPoruka se ne vidi po pokretanju programa nego tek kada se prikaţe poruka i drugačije je boje od forme

Klikom na dugme se ispisuje bdquoZdravo svimaldquo na traţenom jeziku (Hola Mundo na španskom)

Za svaku vrstu komponenata uključujući i obrazce (forme) postoji odreĎeni spisak dogaĎaja koji mogu da

im se dogode Oni su nabrojani u Object Inspector-u na stranici Events ili

dvostruki klik na komponentu pa će Delphi sam dodeliti ime rukovaoca koje

se sastoji od imena komponente i imena dogaĎaja za koji se pravi rukovalac

U zadatku se traţi da se boja forme menja kada se miš postavi na nju i kada se

skloni sa nje Znači u pitanju su dva različita dogaĎaja DogaĎaj

OnMouseEnter nastaje kada se miš postavi na komponentu a dogaĎaj

OnMouseLeave kada se miš skloni sa komponente Kod kojim postiţemo

promenu boje forme u zavisnosti od poloţaja miša bi mogao biti

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

ImeKomponenteSvojstvo=Vrednost

Npr Forma1color znači da komponenti koja se zove Forma1 menjamo boju Vrednost svojstva

dodeljujemo koristeći znak za dodelu vrednosti =

Boje u Delphi-ju mogu da se navode imenom ispred koje stoji prefiks cl (clRed clGreen) ili zadavanjem

boje putem osmocifrenog heksadecimalnog broja (cifre od 0 do 9 i slova od A do F) sa znakom $ ispred

broja (sve nule je crna boja sve F je bela boja)

Svojstvo Caption predstavlja natpis na nekoj komponenti odnosno tekst koji se prikazuje u toj komponenti

Naredba Label1Caption=rsquoZDRAVOrsquo znači da će se u label1 prikazati tekst ZDRAVO

Promena imena fonta u ComicSans u labeli lbPoruka lbporukaFontName=Comic Sans MS

Promena veličine fonta u labeli lbPoruka lbporukaFontSize=50

Promena boje fonta u labeli lbPoruka lbporukaFontColor=clpurple

Promena natpisa u labeli lbPoruka lbPorukacaption=ZDRAVO SVIMA

Promena vidljivosti labele lbPoruka lbPoruka transparent=false

Ceo kod za ovu veţbu

Kada se miš nalazi na

formi boja je roza

Kada se miš skloni sa

forme boja je plava

13 prof Ljiljana Jovičin Blagojević

unit UProbni

interface uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls Buttons ExtCtrls

type

Tforma1 = class(TForm)

lbPoruka TLabel

Label2 TLabel

Button1 TButton

Button2 TButton

Button3 TButton

procedure FormMouseEnter(Sender TObject)

procedure FormMouseLeave(Sender TObject)

procedure Button2Click(Sender TObject)

procedure Button3Click(Sender TObject)

procedure Button1Click(Sender TObject)

private

Private declarations

end

var

forma1 Tforma1

implementation

$R dfm

procedure Tforma1Button1Click(Sender TObject)

begin

lbporukaFontSize=30

lbporukaFontName=forte

lbporukaFontColor=clmaroon

lbPorukacaption=Hola Mundo

lbPoruka transparent=false

end

procedure Tforma1Button2Click(Sender TObject)

begin

lbporukaFontSize=50

lbporukaFontName=Ravie

lbporukaFontColor=clpurple

lbPorukacaption=ZDRAVO SVIMA

lbPoruka transparent=false

end

procedure Tforma1Button3Click(Sender TObject)

begin

close

end

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

end

Ovo je sam Delphi napravio

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 5: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

5 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte nov projekat i dajte mu ime

2 Dizajnirejte formu na sledeći način

Promenite ime forme Form1 u Naslovna - u Object Inspector-u u polje Caption ukucajte novo ime

(pogledajte automatsku promenu u kodu Junit-a)

Promenite boju pozadine forme- u Object Inspector-u u polje Color izaberite boju

Promenite dimenzije forme - u Object Inspector-u u polje With i Height unesite brojeve po ţelji

3 Sačuvajte projekat u svoj folder i pogledajte šta se desilo

KOMPONENTE

Delphi sadrţi spektar komponenti koje su podeljene u odvojene kategorije

Standardne komponente uključuju TButton TEdit TListBox TMemo TMainMenu TScrollBar

TPopupMenu TCheckBox TRadioButton TRadioGroup TGroupBox TPanel TActionList

Komponente se postavljaju na formu aktiviranjem ikone iz Palete komponenti Posle postavke osobine

komponenti se mogu menjati pomoću Object Inspector-a Svaka komponenta u Delphiju treba da ima naziv

(Name) koji mora biti jedinstven

Dva svojstva koja se često koriste za prilago|avanje korisničkog interfejsa su svojstva Color i Font Postoji

nekoliko svojstava koja su vezana za boju Svojstvo Color se obično odnosi na boju pozadine komponente

TakoĎe postoji svojstvo Color za fontove i mnoge druge grafičke elemente Osim standarnih ponuĎenih

boja korisnik moţe dodeliti druge boje Postoji mnogo načina i evo dva

- Tip svojstva je TColor i ako znate engleske reči onda ih navedite (npr clBlue clSilver clRed i dr)

- Tip svojstva TColor naznačite brojem RGB inteziteta ($00FF0000-plava $0000FF00-zelena i dr)

Mnoge komponente imaju takoĎe svojstva ParentColor i ParentFont koja označavaju da li komponenta

treba da koristi boju i font roditeljske komponente koja je obično formular

KOMPONENTE TEKSTA

Komponenta Edit omogućava korisniku da unese jednu liniju teksta poravnatoj u levo

Za tekst se mogu koristiti i komponente Label i StaticText ali se one obično koriste za nepromenljivi tekst

kao i za izlaz koji generiše program Promene se vrše karakteristikom Caption

Komponenta MaskEdit je Edit komponenta kojoj je dodat filter za

unos teksta Ona naznačava da li karakter treba da bude prikazan

malim velikim slovima ciframa i sl Npr za unos datuma se koristi

poseban format (032198) i ova kontrola definiše tu vrstu unosa

Karakteristika EditMask kontroliše masku koja se koristi Kada se

aktivira polje Value u Object Inspector-u otvara se dijalog prozor

(Input MaskEditor) koji omogućava da izaberete jednu od ponuĎenih

maski ili da kreirate svoju

Komponenta Memo dozvoljava unos više linija teksta ali omogućava samo jedan font za ceo tekst

Karakteristika Lines iz Object Inspector-a omogućava snimanje sadrţaja teksta sa diska i na disk

6 prof Ljiljana Jovičin Blagojević

Karakteristika ScrollBars je jedinstvena za komponentu Memo i omogućuje trake za pomeranje

Komponenta RichText ne spade u grupu standardnih kotrola omogućava unos velike količine teksta sa

promenljivim fontovima poravnanjima pasusa i sl

Karakteristike za edit kontrole

Opcija Odnosi se na Opis Karakteristike

AutoSelectEdit MaskEdit Kada je podešeno na True tekst u okviru edit kontrole

će automatski biti označen kada korisnik pritiskom na

taster Tab preĎe na kontrolu Generička vrednost True

AutoSizeEdit MaskEdit Kada je podešeno na True edit kontrola će automatski

promeniti veličinu kada se fontedit kontrole promeni U

suprotnom edit kontrola ne menja veličinu prilikom

promene veličine fonta Generička vrednost True

CharCaseEdit MaskEdit OdreĎuje da li će edit kontrola prikazivati velika slova

(ecUpperCase) mala slova (ecLowerCase) ili normalan

tekst (ecNormal) Generička vrednost ecNormal

HideScrollBars RichEdit Kada je podešena na True trake za pomeranje će biti

prikazane ukoliko je to potrebno u protivnom će biti

skrivene Kada je podešena na False trake za pomeranje

će biti prikazane na osnovu vrednosti karakteristike

ScrollBars

HideSelection Edit Memo RichEdit Kada je podešeno na True tekst koji je označen neće

biti prikazan kao označen prilikom prelaska korisnika

na narednu kontrolu pritiskom na taster Tab Generička

vrednost False

Lines Memo RichEdit Tekst koji se sadrĎi u komponenti Lines je slučaj klase

TStrings

MaxLength sve Definiše maksimalan broj karaktera koje će komponenta

moći da sadrţi Ukoliko je vrednost 0 moţe se uneti

neograničena duţina teksta (ograničena samo zahtevima

sistema) Kada je podešena na bilo koju vrednost

različitu od nule broj karaktera je ograničen zadatom

vrednosti Generička vrednost 0

OEMConvert Edit Memo Podesite ovu karakteristiku na True kada tekst koji se

unosi sadrţi naziv datoteke Generička vrednost False

PasswordChar Edit MaskEdit Kada je ova karakteristika podešena na vrednost

različitu od ASCII 0 tekst koji unosite će biti prikazan

korišćenjem definisanih karaktera Tekst u okviru edit

kontrole neće biti izmenjenGenerička vrednost 0

PlainText RichEdit Kada je podešena na True RTF (Rich Text Format)

datoteke će biti prikazane kao običan tekst bez

formatiranja karaktera i paragrafa

Text Edit MaskEdit Sadrţi tekst u okviru komponente

WantReturns Memo RichEdit Kada je podešena na True komponenta zadrţava

karakter za kraj reda i novu liniju koju korisnik unosi u

edit kontrolu pritiskom na taster Enter Kada je

podešena na False karakteri za kraj reda i novu liniju

ulaze u formu ali se ne postavljaju u okviru edit

kontrole Generička vrednost True

WantTabs Memo RichEdit Kada je podešena na True kada korisnik pritisne taster

Tab u edit kontrolu se upisuje karakter tab Kada je

postavljen na False tab karakteri prelaze na formu

7 prof Ljiljana Jovičin Blagojević

Zadatak

1 Otvorite predhodni projekat

2 Iz Palete komponenti izaberite komponentu Label1 (slovo A) i kreirajte na formu

3 Promenite osobine u Object Inspector-u

Ukucajte tekst po ţelji (polje Caption)

Promenite boju pozadine Label1 u ljubičasto (Color)

Promenite vrstu veliičinu i boju slova (Font)

4 Postavite još neke kontrole za tekst i uočite razlike

5 Sačuvajte izmene u projektu

6 Pogledajte kod komponenti (dodat je automatski u class TForm)

KOMPONENTA Panel

Često će vam se dogoditi da imate komponente koje su postavljene u okviru drugih komponenti

Komponenta Panel se obično koristi kao kontejner za druge komponente Da biste odabrali grupu

komponenti u okviru panela treba da drţite pritisnut taster ltCtrlgt dok prevlačite mišem kako bi odabrali

komponentu Paneli se obično koriste za naslove i delove teksta koje treba nagltzle i BorderWidth

KOMPONENTE Button

Komponente Button karakterišu osobine ModalResult Default Cansel i Enabled Button su principu

simulira klik miša pa moţe da zatvara Form aktivira aplikaciju i sl

Zadatak

1 Otvorite nov projekat

2 Odaberite komponentu Panel u okviru Palete komponenti i postavite je na formu koristeći metod

prevlačenja Proširite je tako da zauzme veći deo forme

3 Sada odaberite komponentu Button i postavite šest dugmadi na

formu

4 Izmenite osobine komponenti po ţelji

8 prof Ljiljana Jovičin Blagojević

JUNIT

Pascal juniti

Programiranje je više od kucanja programskog koda Pre svega programiranje je kombinacija planiranja

zadatka za programiranje a zatim kucanja koda koji će izvršavati taj zadatak Kod koji kucate se upisuje u

tekst datoteku Prevodilac uzima ovu datoteku i prevodi je u mašinski kod koji računar moţe da razume

Tekst datoteka koju Delphi prevodi u mašinski kod se zove junit (unit)

Tipovi junita

Delphijeve GUI aplikacije će sadrţati najmanje dva junita

Izvorni junit projekta sadrţi izvorni kod projekta Juniti izvornog koda programa imaju nastavak

DPR

Drugi tip junita koji Delphijeve GUI aplikacije sadrţe je junit glavne forme Junit forme i njegov

naziv ukazuju na junit izvornog koda koji mu je pridruţen Ovaj tip junita ima nastavak PAS Ovaj

tip junita ćete u većini slučajeva koristiti u Vašim Delphi programima Delphijeve GUI aplikacije

uvek imaju jedan junit forme (za glavnu formu) ali takoĎe mogu imati jednu ili više dodatnih

junita formi

Sadržaj junita Delphi juniti moraju pratiti unapred definisan format Junit mora biti napisan u unapred definisanom formatu

da bi prevodilac mogao da čita junit i prevodi kod junita

Juniti Delphi projekta sadrţe ključnu reč program iza kog sledi naziv junita i kod blok koji se nalazi izmeĎu

ključnih reči begin i end

Izvorni junit projekta za generički Delphijev projekt izgleda

Izvorni kod projekta za generički Delphijev project

01 program Project1

02

03 uses

04 Forms

05 Unit1 in Unit1pas Form1

06

07 $R RES

08

09 begin

10 ApplicationInitialize

11 ApplicationCreateForm(TForm1 Form1)

12 ApplicationRun

13 end

U liniji 1 ključna reč program identifikuje junit kao glavni izvorni junit programa

Moţete videti da se naziv junita Project1 nalazi iza ključne reči program (Delphi daje projektu generikči

naziv sve dok ne snimite projekt pod nazivom koji ima bolje značenje) Počev od linije 3 vidite deo koji je

identifikovan ključnom reči uses

Iza ključne reči uses se nalaze nazivi junita koje navedeni junit traţi da bi mogao da bude preveden Spisak

se završava znakom tačka-zarez

U liniji 7 moţete videti direktivu prevodiocu koja pokazuje Delphiju da uključi odgovarajuću resursnu

datoteku

Linija 9 sadrţi ključnu reč begin a linija 13 sadrţi ključnu reč end Zapazite da poslednja ključna reč end u

okviru junita iza sebe ima tačku (Junit moţe sadrţati više blokova koda označenih sa begin i end ali samo

jedan krajnji end iskaz)

Kod u okviru linija 10 11 i 12 je kod koji inicijalizuje aplikaciju kreirajući glavnu formu aplikacije

odnosno startuje aplikaciju

9 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte još jedan osnovni junit (FileNew) i pogledajte kod

Dvostrukim klikom na formu Delphi će prikazati nov junit u editor koda (Code Editor)

Prazan Pascal junit

01 unit Unit2

02

03 interface

04

05 implementation

06

07 end

Ovaj junit ima dve slične stvari sa junitom koji je predhodno

prikazan Prvo junit počinje ključnom reči unit iza koje sledi

naziv junita Unit2 (opet generički naziv koji kreira Delphi

Ključna reč end pojavljuje na kraju oba listinga

Kod u okviru praznog listinga se razlikuje od predhodnog po tome što sadrţi delove pod nazivom interface

i implementation Junit koji nije glavni izvorni junit programa mora sadrţati deo interface i deo

implementation Prazan Listing se razlikuje od predhodnog i po tome što nema iskaz begin Glavni junit programa mora

imati oba iskaza begin i end ali izvorni junit jedini moţe sadrţati poslednji iskaz end

Odeljak interface

Ova ključna reč označava početak odeljka za interfejs u okviru junita

Odeljak interface je odeljak junita u okviru kog se deklarišu identifikatori koje navedeni junit izvozi

Identifikator za izvoz predstavlja identifikator kome mogu pristupiti drugi juniti u okviru projekta

Većina junita će sadrţati kod koji ostali juniti koriste Moţe se reći da odeljak za interfejs sadrţi listu stavki

u okviru junita koje ostali juniti mogu da koriste Odeljak za intrerfejs počinje ključnom reči interface a

završava se ključnom reči implementation

Odeljak implementation

Odeljak za implementaciju junita je odeljak koji sadrţi aktuelni kod junita Odeljak za implementaciju

počinje ključnom reči implementation a završava se ključnom reči sledećeg junita

Kljućne reči u junitu

Ključna reč const

Junit opciono moţe sadrţati jedan ili više odeljaka const Odeljak const je odreĎen ključnom reči const

Odeljak const opisuje listu promenljivih koje su poznate kao konstante

Konstanta je identifikator koji se ne moţe menjati Npr

const

DefaultWidth = 400

DefaultHeight = 200

Description = Something really cool

Ključna reč type

Ključna reč type se koristi da deklariše nove tipove koje će koristiti program

Ključna reč var

Ključna reč var se koristi da deklariše odeljak koda u kom se deklarišu promenljive

Promenljive treba da budu deklarisane pre nego što se koriste Promenljive treba da deklarišete u posebnom

odeljku koda koji je naznačen ključnom reči var Npr

10 prof Ljiljana Jovičin Blagojević

var

X Integer variable X declared as an integer variable

Y Integer variable Y declared as an integer variable

Najčešće deklaracije promenljivih su Integer RealChar Word Boolean i dr

Često korišćeni operatori

Operator Opis Primer Matemati~ki operatori + sabiranje x =y + z

- oduzimanje x = y - z

mnoţenje x = y z

deljenje realnog broja x = y 314

div celobrojno deljenje x = y div 10

= dodeljivanje x =10

And logičko i if (x=1) and (y=2) then

= jednako if (x=10) then

ltgt nije jednako if (xltgt10) then

lt manje je od if (xlt10) then

lt= veće ili jednako if (xlt=) then

Zadatak Kreirati aplikaciju koja će aktiviranjem labele ispisivati tekst po ţelji u crvenoj boji veličine 20

1 Na otvorenu formu dodajte labelu (Label1)

2 Aktivirajte kod labele (dvostruki klik na labelu) i ukucajte naredbu

Label1Caption=Dobar dan Hvala sto ste kliknuli na mene (као на слици )

3 Startujte program (Run) i kliknite na labelu (pojaviće se uneti tekst) Vratite se u reţim rada

4 Podesite veličinu i boju slova font Color-Red i Size-20 Unesite kod ispod predhodnog

Label1FontSize=20

Label1FontColor=clRed

5 Startujte program

6 Sačuvajte ga pod imenom KlikNaLabelu

11 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će ispisati pozdravnu poruku bdquoDobar danldquo kada se klikne na taster (Botton)

koji je dodat na formu

- Podesiti za taster sledeća svojstva Caption-Klik na dugme u Inspector ObjektuEvants dogaĎaj

OnClick

U nazivu procedure treba da piše

procedure TForm1Button1Click

procedure imeformeimedugmetaClick

Junit treba da je sledećeg izgleda

Zadatak Kreirati aplikaciju za unos podataka kao na slici

Na formi imamo pet labela

Label1 label2 i label3 sadrţe svojstvo

caption svojstvo caption label4 je

prazno (ljubičasta-color) što znači da ova

labela ne prikazuje nikakav tekst Da bi se

videla boja labele koja je različita od boje

forme mora se svojstvo transparent

postaviti na FALSE Ako je ovo svojstvo

postavljeno na TRUE veličina labele se

prilagoĎava njenom sadrţaju Label 5 ne

sadrţi nikakav tekst (caption je prazno) a

boja labele je ista kao i forma pa se ta

labela ni ne vidi po pokretanju programa

Ona je tu da prihvati spoji i prikaţe tekst

koji se unese u edit polja Kod kojim se

ovo radi je

procedure TForm1Button2Click(Sender TObject)

begin

label5Caption=Učenik +edit1Text+ +edit2Text+ ide u +edit3Text+ razred

end

Ova naredba znači da smo svojstvo caption label5 promenili u toku izvršavanja programa Stringovi koji su

navedeni u naredbi će se uvek prikazivati takvi sadrţaj edit polja zavisi od onoga što unesemo putem

tastature u odreĎeno edit polje Znak + izmeĎu stringova nadovezuje stringove jedan za drugim pa tako ako

ţelimo razmak moramo ga posebno navesti

Pritiskom na dugme na kojem piše BRIŠI treba poništiti sve što je unešeno i što je prikazano u label5 Kod

koji se ovo radi je

procedure TForm1Button1Click(Sender TObject)

begin

edit1text=

edit2Text=

edit3Text=

label5Caption=

end

Label5

Tekst koji je

unešen u edit1 razmak Tekst koji je

unešen u edit2

Tekst koji je

unešen u edit3

Label1

Label2

Label4

Label5

Button2

Label3

12 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju gde se boja forme menja kada se miš postavi na formu i skloni sa forme

LbPoruka se ne vidi po pokretanju programa nego tek kada se prikaţe poruka i drugačije je boje od forme

Klikom na dugme se ispisuje bdquoZdravo svimaldquo na traţenom jeziku (Hola Mundo na španskom)

Za svaku vrstu komponenata uključujući i obrazce (forme) postoji odreĎeni spisak dogaĎaja koji mogu da

im se dogode Oni su nabrojani u Object Inspector-u na stranici Events ili

dvostruki klik na komponentu pa će Delphi sam dodeliti ime rukovaoca koje

se sastoji od imena komponente i imena dogaĎaja za koji se pravi rukovalac

U zadatku se traţi da se boja forme menja kada se miš postavi na nju i kada se

skloni sa nje Znači u pitanju su dva različita dogaĎaja DogaĎaj

OnMouseEnter nastaje kada se miš postavi na komponentu a dogaĎaj

OnMouseLeave kada se miš skloni sa komponente Kod kojim postiţemo

promenu boje forme u zavisnosti od poloţaja miša bi mogao biti

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

ImeKomponenteSvojstvo=Vrednost

Npr Forma1color znači da komponenti koja se zove Forma1 menjamo boju Vrednost svojstva

dodeljujemo koristeći znak za dodelu vrednosti =

Boje u Delphi-ju mogu da se navode imenom ispred koje stoji prefiks cl (clRed clGreen) ili zadavanjem

boje putem osmocifrenog heksadecimalnog broja (cifre od 0 do 9 i slova od A do F) sa znakom $ ispred

broja (sve nule je crna boja sve F je bela boja)

Svojstvo Caption predstavlja natpis na nekoj komponenti odnosno tekst koji se prikazuje u toj komponenti

Naredba Label1Caption=rsquoZDRAVOrsquo znači da će se u label1 prikazati tekst ZDRAVO

Promena imena fonta u ComicSans u labeli lbPoruka lbporukaFontName=Comic Sans MS

Promena veličine fonta u labeli lbPoruka lbporukaFontSize=50

Promena boje fonta u labeli lbPoruka lbporukaFontColor=clpurple

Promena natpisa u labeli lbPoruka lbPorukacaption=ZDRAVO SVIMA

Promena vidljivosti labele lbPoruka lbPoruka transparent=false

Ceo kod za ovu veţbu

Kada se miš nalazi na

formi boja je roza

Kada se miš skloni sa

forme boja je plava

13 prof Ljiljana Jovičin Blagojević

unit UProbni

interface uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls Buttons ExtCtrls

type

Tforma1 = class(TForm)

lbPoruka TLabel

Label2 TLabel

Button1 TButton

Button2 TButton

Button3 TButton

procedure FormMouseEnter(Sender TObject)

procedure FormMouseLeave(Sender TObject)

procedure Button2Click(Sender TObject)

procedure Button3Click(Sender TObject)

procedure Button1Click(Sender TObject)

private

Private declarations

end

var

forma1 Tforma1

implementation

$R dfm

procedure Tforma1Button1Click(Sender TObject)

begin

lbporukaFontSize=30

lbporukaFontName=forte

lbporukaFontColor=clmaroon

lbPorukacaption=Hola Mundo

lbPoruka transparent=false

end

procedure Tforma1Button2Click(Sender TObject)

begin

lbporukaFontSize=50

lbporukaFontName=Ravie

lbporukaFontColor=clpurple

lbPorukacaption=ZDRAVO SVIMA

lbPoruka transparent=false

end

procedure Tforma1Button3Click(Sender TObject)

begin

close

end

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

end

Ovo je sam Delphi napravio

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 6: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

6 prof Ljiljana Jovičin Blagojević

Karakteristika ScrollBars je jedinstvena za komponentu Memo i omogućuje trake za pomeranje

Komponenta RichText ne spade u grupu standardnih kotrola omogućava unos velike količine teksta sa

promenljivim fontovima poravnanjima pasusa i sl

Karakteristike za edit kontrole

Opcija Odnosi se na Opis Karakteristike

AutoSelectEdit MaskEdit Kada je podešeno na True tekst u okviru edit kontrole

će automatski biti označen kada korisnik pritiskom na

taster Tab preĎe na kontrolu Generička vrednost True

AutoSizeEdit MaskEdit Kada je podešeno na True edit kontrola će automatski

promeniti veličinu kada se fontedit kontrole promeni U

suprotnom edit kontrola ne menja veličinu prilikom

promene veličine fonta Generička vrednost True

CharCaseEdit MaskEdit OdreĎuje da li će edit kontrola prikazivati velika slova

(ecUpperCase) mala slova (ecLowerCase) ili normalan

tekst (ecNormal) Generička vrednost ecNormal

HideScrollBars RichEdit Kada je podešena na True trake za pomeranje će biti

prikazane ukoliko je to potrebno u protivnom će biti

skrivene Kada je podešena na False trake za pomeranje

će biti prikazane na osnovu vrednosti karakteristike

ScrollBars

HideSelection Edit Memo RichEdit Kada je podešeno na True tekst koji je označen neće

biti prikazan kao označen prilikom prelaska korisnika

na narednu kontrolu pritiskom na taster Tab Generička

vrednost False

Lines Memo RichEdit Tekst koji se sadrĎi u komponenti Lines je slučaj klase

TStrings

MaxLength sve Definiše maksimalan broj karaktera koje će komponenta

moći da sadrţi Ukoliko je vrednost 0 moţe se uneti

neograničena duţina teksta (ograničena samo zahtevima

sistema) Kada je podešena na bilo koju vrednost

različitu od nule broj karaktera je ograničen zadatom

vrednosti Generička vrednost 0

OEMConvert Edit Memo Podesite ovu karakteristiku na True kada tekst koji se

unosi sadrţi naziv datoteke Generička vrednost False

PasswordChar Edit MaskEdit Kada je ova karakteristika podešena na vrednost

različitu od ASCII 0 tekst koji unosite će biti prikazan

korišćenjem definisanih karaktera Tekst u okviru edit

kontrole neće biti izmenjenGenerička vrednost 0

PlainText RichEdit Kada je podešena na True RTF (Rich Text Format)

datoteke će biti prikazane kao običan tekst bez

formatiranja karaktera i paragrafa

Text Edit MaskEdit Sadrţi tekst u okviru komponente

WantReturns Memo RichEdit Kada je podešena na True komponenta zadrţava

karakter za kraj reda i novu liniju koju korisnik unosi u

edit kontrolu pritiskom na taster Enter Kada je

podešena na False karakteri za kraj reda i novu liniju

ulaze u formu ali se ne postavljaju u okviru edit

kontrole Generička vrednost True

WantTabs Memo RichEdit Kada je podešena na True kada korisnik pritisne taster

Tab u edit kontrolu se upisuje karakter tab Kada je

postavljen na False tab karakteri prelaze na formu

7 prof Ljiljana Jovičin Blagojević

Zadatak

1 Otvorite predhodni projekat

2 Iz Palete komponenti izaberite komponentu Label1 (slovo A) i kreirajte na formu

3 Promenite osobine u Object Inspector-u

Ukucajte tekst po ţelji (polje Caption)

Promenite boju pozadine Label1 u ljubičasto (Color)

Promenite vrstu veliičinu i boju slova (Font)

4 Postavite još neke kontrole za tekst i uočite razlike

5 Sačuvajte izmene u projektu

6 Pogledajte kod komponenti (dodat je automatski u class TForm)

KOMPONENTA Panel

Često će vam se dogoditi da imate komponente koje su postavljene u okviru drugih komponenti

Komponenta Panel se obično koristi kao kontejner za druge komponente Da biste odabrali grupu

komponenti u okviru panela treba da drţite pritisnut taster ltCtrlgt dok prevlačite mišem kako bi odabrali

komponentu Paneli se obično koriste za naslove i delove teksta koje treba nagltzle i BorderWidth

KOMPONENTE Button

Komponente Button karakterišu osobine ModalResult Default Cansel i Enabled Button su principu

simulira klik miša pa moţe da zatvara Form aktivira aplikaciju i sl

Zadatak

1 Otvorite nov projekat

2 Odaberite komponentu Panel u okviru Palete komponenti i postavite je na formu koristeći metod

prevlačenja Proširite je tako da zauzme veći deo forme

3 Sada odaberite komponentu Button i postavite šest dugmadi na

formu

4 Izmenite osobine komponenti po ţelji

8 prof Ljiljana Jovičin Blagojević

JUNIT

Pascal juniti

Programiranje je više od kucanja programskog koda Pre svega programiranje je kombinacija planiranja

zadatka za programiranje a zatim kucanja koda koji će izvršavati taj zadatak Kod koji kucate se upisuje u

tekst datoteku Prevodilac uzima ovu datoteku i prevodi je u mašinski kod koji računar moţe da razume

Tekst datoteka koju Delphi prevodi u mašinski kod se zove junit (unit)

Tipovi junita

Delphijeve GUI aplikacije će sadrţati najmanje dva junita

Izvorni junit projekta sadrţi izvorni kod projekta Juniti izvornog koda programa imaju nastavak

DPR

Drugi tip junita koji Delphijeve GUI aplikacije sadrţe je junit glavne forme Junit forme i njegov

naziv ukazuju na junit izvornog koda koji mu je pridruţen Ovaj tip junita ima nastavak PAS Ovaj

tip junita ćete u većini slučajeva koristiti u Vašim Delphi programima Delphijeve GUI aplikacije

uvek imaju jedan junit forme (za glavnu formu) ali takoĎe mogu imati jednu ili više dodatnih

junita formi

Sadržaj junita Delphi juniti moraju pratiti unapred definisan format Junit mora biti napisan u unapred definisanom formatu

da bi prevodilac mogao da čita junit i prevodi kod junita

Juniti Delphi projekta sadrţe ključnu reč program iza kog sledi naziv junita i kod blok koji se nalazi izmeĎu

ključnih reči begin i end

Izvorni junit projekta za generički Delphijev projekt izgleda

Izvorni kod projekta za generički Delphijev project

01 program Project1

02

03 uses

04 Forms

05 Unit1 in Unit1pas Form1

06

07 $R RES

08

09 begin

10 ApplicationInitialize

11 ApplicationCreateForm(TForm1 Form1)

12 ApplicationRun

13 end

U liniji 1 ključna reč program identifikuje junit kao glavni izvorni junit programa

Moţete videti da se naziv junita Project1 nalazi iza ključne reči program (Delphi daje projektu generikči

naziv sve dok ne snimite projekt pod nazivom koji ima bolje značenje) Počev od linije 3 vidite deo koji je

identifikovan ključnom reči uses

Iza ključne reči uses se nalaze nazivi junita koje navedeni junit traţi da bi mogao da bude preveden Spisak

se završava znakom tačka-zarez

U liniji 7 moţete videti direktivu prevodiocu koja pokazuje Delphiju da uključi odgovarajuću resursnu

datoteku

Linija 9 sadrţi ključnu reč begin a linija 13 sadrţi ključnu reč end Zapazite da poslednja ključna reč end u

okviru junita iza sebe ima tačku (Junit moţe sadrţati više blokova koda označenih sa begin i end ali samo

jedan krajnji end iskaz)

Kod u okviru linija 10 11 i 12 je kod koji inicijalizuje aplikaciju kreirajući glavnu formu aplikacije

odnosno startuje aplikaciju

9 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte još jedan osnovni junit (FileNew) i pogledajte kod

Dvostrukim klikom na formu Delphi će prikazati nov junit u editor koda (Code Editor)

Prazan Pascal junit

01 unit Unit2

02

03 interface

04

05 implementation

06

07 end

Ovaj junit ima dve slične stvari sa junitom koji je predhodno

prikazan Prvo junit počinje ključnom reči unit iza koje sledi

naziv junita Unit2 (opet generički naziv koji kreira Delphi

Ključna reč end pojavljuje na kraju oba listinga

Kod u okviru praznog listinga se razlikuje od predhodnog po tome što sadrţi delove pod nazivom interface

i implementation Junit koji nije glavni izvorni junit programa mora sadrţati deo interface i deo

implementation Prazan Listing se razlikuje od predhodnog i po tome što nema iskaz begin Glavni junit programa mora

imati oba iskaza begin i end ali izvorni junit jedini moţe sadrţati poslednji iskaz end

Odeljak interface

Ova ključna reč označava početak odeljka za interfejs u okviru junita

Odeljak interface je odeljak junita u okviru kog se deklarišu identifikatori koje navedeni junit izvozi

Identifikator za izvoz predstavlja identifikator kome mogu pristupiti drugi juniti u okviru projekta

Većina junita će sadrţati kod koji ostali juniti koriste Moţe se reći da odeljak za interfejs sadrţi listu stavki

u okviru junita koje ostali juniti mogu da koriste Odeljak za intrerfejs počinje ključnom reči interface a

završava se ključnom reči implementation

Odeljak implementation

Odeljak za implementaciju junita je odeljak koji sadrţi aktuelni kod junita Odeljak za implementaciju

počinje ključnom reči implementation a završava se ključnom reči sledećeg junita

Kljućne reči u junitu

Ključna reč const

Junit opciono moţe sadrţati jedan ili više odeljaka const Odeljak const je odreĎen ključnom reči const

Odeljak const opisuje listu promenljivih koje su poznate kao konstante

Konstanta je identifikator koji se ne moţe menjati Npr

const

DefaultWidth = 400

DefaultHeight = 200

Description = Something really cool

Ključna reč type

Ključna reč type se koristi da deklariše nove tipove koje će koristiti program

Ključna reč var

Ključna reč var se koristi da deklariše odeljak koda u kom se deklarišu promenljive

Promenljive treba da budu deklarisane pre nego što se koriste Promenljive treba da deklarišete u posebnom

odeljku koda koji je naznačen ključnom reči var Npr

10 prof Ljiljana Jovičin Blagojević

var

X Integer variable X declared as an integer variable

Y Integer variable Y declared as an integer variable

Najčešće deklaracije promenljivih su Integer RealChar Word Boolean i dr

Često korišćeni operatori

Operator Opis Primer Matemati~ki operatori + sabiranje x =y + z

- oduzimanje x = y - z

mnoţenje x = y z

deljenje realnog broja x = y 314

div celobrojno deljenje x = y div 10

= dodeljivanje x =10

And logičko i if (x=1) and (y=2) then

= jednako if (x=10) then

ltgt nije jednako if (xltgt10) then

lt manje je od if (xlt10) then

lt= veće ili jednako if (xlt=) then

Zadatak Kreirati aplikaciju koja će aktiviranjem labele ispisivati tekst po ţelji u crvenoj boji veličine 20

1 Na otvorenu formu dodajte labelu (Label1)

2 Aktivirajte kod labele (dvostruki klik na labelu) i ukucajte naredbu

Label1Caption=Dobar dan Hvala sto ste kliknuli na mene (као на слици )

3 Startujte program (Run) i kliknite na labelu (pojaviće se uneti tekst) Vratite se u reţim rada

4 Podesite veličinu i boju slova font Color-Red i Size-20 Unesite kod ispod predhodnog

Label1FontSize=20

Label1FontColor=clRed

5 Startujte program

6 Sačuvajte ga pod imenom KlikNaLabelu

11 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će ispisati pozdravnu poruku bdquoDobar danldquo kada se klikne na taster (Botton)

koji je dodat na formu

- Podesiti za taster sledeća svojstva Caption-Klik na dugme u Inspector ObjektuEvants dogaĎaj

OnClick

U nazivu procedure treba da piše

procedure TForm1Button1Click

procedure imeformeimedugmetaClick

Junit treba da je sledećeg izgleda

Zadatak Kreirati aplikaciju za unos podataka kao na slici

Na formi imamo pet labela

Label1 label2 i label3 sadrţe svojstvo

caption svojstvo caption label4 je

prazno (ljubičasta-color) što znači da ova

labela ne prikazuje nikakav tekst Da bi se

videla boja labele koja je različita od boje

forme mora se svojstvo transparent

postaviti na FALSE Ako je ovo svojstvo

postavljeno na TRUE veličina labele se

prilagoĎava njenom sadrţaju Label 5 ne

sadrţi nikakav tekst (caption je prazno) a

boja labele je ista kao i forma pa se ta

labela ni ne vidi po pokretanju programa

Ona je tu da prihvati spoji i prikaţe tekst

koji se unese u edit polja Kod kojim se

ovo radi je

procedure TForm1Button2Click(Sender TObject)

begin

label5Caption=Učenik +edit1Text+ +edit2Text+ ide u +edit3Text+ razred

end

Ova naredba znači da smo svojstvo caption label5 promenili u toku izvršavanja programa Stringovi koji su

navedeni u naredbi će se uvek prikazivati takvi sadrţaj edit polja zavisi od onoga što unesemo putem

tastature u odreĎeno edit polje Znak + izmeĎu stringova nadovezuje stringove jedan za drugim pa tako ako

ţelimo razmak moramo ga posebno navesti

Pritiskom na dugme na kojem piše BRIŠI treba poništiti sve što je unešeno i što je prikazano u label5 Kod

koji se ovo radi je

procedure TForm1Button1Click(Sender TObject)

begin

edit1text=

edit2Text=

edit3Text=

label5Caption=

end

Label5

Tekst koji je

unešen u edit1 razmak Tekst koji je

unešen u edit2

Tekst koji je

unešen u edit3

Label1

Label2

Label4

Label5

Button2

Label3

12 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju gde se boja forme menja kada se miš postavi na formu i skloni sa forme

LbPoruka se ne vidi po pokretanju programa nego tek kada se prikaţe poruka i drugačije je boje od forme

Klikom na dugme se ispisuje bdquoZdravo svimaldquo na traţenom jeziku (Hola Mundo na španskom)

Za svaku vrstu komponenata uključujući i obrazce (forme) postoji odreĎeni spisak dogaĎaja koji mogu da

im se dogode Oni su nabrojani u Object Inspector-u na stranici Events ili

dvostruki klik na komponentu pa će Delphi sam dodeliti ime rukovaoca koje

se sastoji od imena komponente i imena dogaĎaja za koji se pravi rukovalac

U zadatku se traţi da se boja forme menja kada se miš postavi na nju i kada se

skloni sa nje Znači u pitanju su dva različita dogaĎaja DogaĎaj

OnMouseEnter nastaje kada se miš postavi na komponentu a dogaĎaj

OnMouseLeave kada se miš skloni sa komponente Kod kojim postiţemo

promenu boje forme u zavisnosti od poloţaja miša bi mogao biti

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

ImeKomponenteSvojstvo=Vrednost

Npr Forma1color znači da komponenti koja se zove Forma1 menjamo boju Vrednost svojstva

dodeljujemo koristeći znak za dodelu vrednosti =

Boje u Delphi-ju mogu da se navode imenom ispred koje stoji prefiks cl (clRed clGreen) ili zadavanjem

boje putem osmocifrenog heksadecimalnog broja (cifre od 0 do 9 i slova od A do F) sa znakom $ ispred

broja (sve nule je crna boja sve F je bela boja)

Svojstvo Caption predstavlja natpis na nekoj komponenti odnosno tekst koji se prikazuje u toj komponenti

Naredba Label1Caption=rsquoZDRAVOrsquo znači da će se u label1 prikazati tekst ZDRAVO

Promena imena fonta u ComicSans u labeli lbPoruka lbporukaFontName=Comic Sans MS

Promena veličine fonta u labeli lbPoruka lbporukaFontSize=50

Promena boje fonta u labeli lbPoruka lbporukaFontColor=clpurple

Promena natpisa u labeli lbPoruka lbPorukacaption=ZDRAVO SVIMA

Promena vidljivosti labele lbPoruka lbPoruka transparent=false

Ceo kod za ovu veţbu

Kada se miš nalazi na

formi boja je roza

Kada se miš skloni sa

forme boja je plava

13 prof Ljiljana Jovičin Blagojević

unit UProbni

interface uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls Buttons ExtCtrls

type

Tforma1 = class(TForm)

lbPoruka TLabel

Label2 TLabel

Button1 TButton

Button2 TButton

Button3 TButton

procedure FormMouseEnter(Sender TObject)

procedure FormMouseLeave(Sender TObject)

procedure Button2Click(Sender TObject)

procedure Button3Click(Sender TObject)

procedure Button1Click(Sender TObject)

private

Private declarations

end

var

forma1 Tforma1

implementation

$R dfm

procedure Tforma1Button1Click(Sender TObject)

begin

lbporukaFontSize=30

lbporukaFontName=forte

lbporukaFontColor=clmaroon

lbPorukacaption=Hola Mundo

lbPoruka transparent=false

end

procedure Tforma1Button2Click(Sender TObject)

begin

lbporukaFontSize=50

lbporukaFontName=Ravie

lbporukaFontColor=clpurple

lbPorukacaption=ZDRAVO SVIMA

lbPoruka transparent=false

end

procedure Tforma1Button3Click(Sender TObject)

begin

close

end

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

end

Ovo je sam Delphi napravio

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 7: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

7 prof Ljiljana Jovičin Blagojević

Zadatak

1 Otvorite predhodni projekat

2 Iz Palete komponenti izaberite komponentu Label1 (slovo A) i kreirajte na formu

3 Promenite osobine u Object Inspector-u

Ukucajte tekst po ţelji (polje Caption)

Promenite boju pozadine Label1 u ljubičasto (Color)

Promenite vrstu veliičinu i boju slova (Font)

4 Postavite još neke kontrole za tekst i uočite razlike

5 Sačuvajte izmene u projektu

6 Pogledajte kod komponenti (dodat je automatski u class TForm)

KOMPONENTA Panel

Često će vam se dogoditi da imate komponente koje su postavljene u okviru drugih komponenti

Komponenta Panel se obično koristi kao kontejner za druge komponente Da biste odabrali grupu

komponenti u okviru panela treba da drţite pritisnut taster ltCtrlgt dok prevlačite mišem kako bi odabrali

komponentu Paneli se obično koriste za naslove i delove teksta koje treba nagltzle i BorderWidth

KOMPONENTE Button

Komponente Button karakterišu osobine ModalResult Default Cansel i Enabled Button su principu

simulira klik miša pa moţe da zatvara Form aktivira aplikaciju i sl

Zadatak

1 Otvorite nov projekat

2 Odaberite komponentu Panel u okviru Palete komponenti i postavite je na formu koristeći metod

prevlačenja Proširite je tako da zauzme veći deo forme

3 Sada odaberite komponentu Button i postavite šest dugmadi na

formu

4 Izmenite osobine komponenti po ţelji

8 prof Ljiljana Jovičin Blagojević

JUNIT

Pascal juniti

Programiranje je više od kucanja programskog koda Pre svega programiranje je kombinacija planiranja

zadatka za programiranje a zatim kucanja koda koji će izvršavati taj zadatak Kod koji kucate se upisuje u

tekst datoteku Prevodilac uzima ovu datoteku i prevodi je u mašinski kod koji računar moţe da razume

Tekst datoteka koju Delphi prevodi u mašinski kod se zove junit (unit)

Tipovi junita

Delphijeve GUI aplikacije će sadrţati najmanje dva junita

Izvorni junit projekta sadrţi izvorni kod projekta Juniti izvornog koda programa imaju nastavak

DPR

Drugi tip junita koji Delphijeve GUI aplikacije sadrţe je junit glavne forme Junit forme i njegov

naziv ukazuju na junit izvornog koda koji mu je pridruţen Ovaj tip junita ima nastavak PAS Ovaj

tip junita ćete u većini slučajeva koristiti u Vašim Delphi programima Delphijeve GUI aplikacije

uvek imaju jedan junit forme (za glavnu formu) ali takoĎe mogu imati jednu ili više dodatnih

junita formi

Sadržaj junita Delphi juniti moraju pratiti unapred definisan format Junit mora biti napisan u unapred definisanom formatu

da bi prevodilac mogao da čita junit i prevodi kod junita

Juniti Delphi projekta sadrţe ključnu reč program iza kog sledi naziv junita i kod blok koji se nalazi izmeĎu

ključnih reči begin i end

Izvorni junit projekta za generički Delphijev projekt izgleda

Izvorni kod projekta za generički Delphijev project

01 program Project1

02

03 uses

04 Forms

05 Unit1 in Unit1pas Form1

06

07 $R RES

08

09 begin

10 ApplicationInitialize

11 ApplicationCreateForm(TForm1 Form1)

12 ApplicationRun

13 end

U liniji 1 ključna reč program identifikuje junit kao glavni izvorni junit programa

Moţete videti da se naziv junita Project1 nalazi iza ključne reči program (Delphi daje projektu generikči

naziv sve dok ne snimite projekt pod nazivom koji ima bolje značenje) Počev od linije 3 vidite deo koji je

identifikovan ključnom reči uses

Iza ključne reči uses se nalaze nazivi junita koje navedeni junit traţi da bi mogao da bude preveden Spisak

se završava znakom tačka-zarez

U liniji 7 moţete videti direktivu prevodiocu koja pokazuje Delphiju da uključi odgovarajuću resursnu

datoteku

Linija 9 sadrţi ključnu reč begin a linija 13 sadrţi ključnu reč end Zapazite da poslednja ključna reč end u

okviru junita iza sebe ima tačku (Junit moţe sadrţati više blokova koda označenih sa begin i end ali samo

jedan krajnji end iskaz)

Kod u okviru linija 10 11 i 12 je kod koji inicijalizuje aplikaciju kreirajući glavnu formu aplikacije

odnosno startuje aplikaciju

9 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte još jedan osnovni junit (FileNew) i pogledajte kod

Dvostrukim klikom na formu Delphi će prikazati nov junit u editor koda (Code Editor)

Prazan Pascal junit

01 unit Unit2

02

03 interface

04

05 implementation

06

07 end

Ovaj junit ima dve slične stvari sa junitom koji je predhodno

prikazan Prvo junit počinje ključnom reči unit iza koje sledi

naziv junita Unit2 (opet generički naziv koji kreira Delphi

Ključna reč end pojavljuje na kraju oba listinga

Kod u okviru praznog listinga se razlikuje od predhodnog po tome što sadrţi delove pod nazivom interface

i implementation Junit koji nije glavni izvorni junit programa mora sadrţati deo interface i deo

implementation Prazan Listing se razlikuje od predhodnog i po tome što nema iskaz begin Glavni junit programa mora

imati oba iskaza begin i end ali izvorni junit jedini moţe sadrţati poslednji iskaz end

Odeljak interface

Ova ključna reč označava početak odeljka za interfejs u okviru junita

Odeljak interface je odeljak junita u okviru kog se deklarišu identifikatori koje navedeni junit izvozi

Identifikator za izvoz predstavlja identifikator kome mogu pristupiti drugi juniti u okviru projekta

Većina junita će sadrţati kod koji ostali juniti koriste Moţe se reći da odeljak za interfejs sadrţi listu stavki

u okviru junita koje ostali juniti mogu da koriste Odeljak za intrerfejs počinje ključnom reči interface a

završava se ključnom reči implementation

Odeljak implementation

Odeljak za implementaciju junita je odeljak koji sadrţi aktuelni kod junita Odeljak za implementaciju

počinje ključnom reči implementation a završava se ključnom reči sledećeg junita

Kljućne reči u junitu

Ključna reč const

Junit opciono moţe sadrţati jedan ili više odeljaka const Odeljak const je odreĎen ključnom reči const

Odeljak const opisuje listu promenljivih koje su poznate kao konstante

Konstanta je identifikator koji se ne moţe menjati Npr

const

DefaultWidth = 400

DefaultHeight = 200

Description = Something really cool

Ključna reč type

Ključna reč type se koristi da deklariše nove tipove koje će koristiti program

Ključna reč var

Ključna reč var se koristi da deklariše odeljak koda u kom se deklarišu promenljive

Promenljive treba da budu deklarisane pre nego što se koriste Promenljive treba da deklarišete u posebnom

odeljku koda koji je naznačen ključnom reči var Npr

10 prof Ljiljana Jovičin Blagojević

var

X Integer variable X declared as an integer variable

Y Integer variable Y declared as an integer variable

Najčešće deklaracije promenljivih su Integer RealChar Word Boolean i dr

Često korišćeni operatori

Operator Opis Primer Matemati~ki operatori + sabiranje x =y + z

- oduzimanje x = y - z

mnoţenje x = y z

deljenje realnog broja x = y 314

div celobrojno deljenje x = y div 10

= dodeljivanje x =10

And logičko i if (x=1) and (y=2) then

= jednako if (x=10) then

ltgt nije jednako if (xltgt10) then

lt manje je od if (xlt10) then

lt= veće ili jednako if (xlt=) then

Zadatak Kreirati aplikaciju koja će aktiviranjem labele ispisivati tekst po ţelji u crvenoj boji veličine 20

1 Na otvorenu formu dodajte labelu (Label1)

2 Aktivirajte kod labele (dvostruki klik na labelu) i ukucajte naredbu

Label1Caption=Dobar dan Hvala sto ste kliknuli na mene (као на слици )

3 Startujte program (Run) i kliknite na labelu (pojaviće se uneti tekst) Vratite se u reţim rada

4 Podesite veličinu i boju slova font Color-Red i Size-20 Unesite kod ispod predhodnog

Label1FontSize=20

Label1FontColor=clRed

5 Startujte program

6 Sačuvajte ga pod imenom KlikNaLabelu

11 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će ispisati pozdravnu poruku bdquoDobar danldquo kada se klikne na taster (Botton)

koji je dodat na formu

- Podesiti za taster sledeća svojstva Caption-Klik na dugme u Inspector ObjektuEvants dogaĎaj

OnClick

U nazivu procedure treba da piše

procedure TForm1Button1Click

procedure imeformeimedugmetaClick

Junit treba da je sledećeg izgleda

Zadatak Kreirati aplikaciju za unos podataka kao na slici

Na formi imamo pet labela

Label1 label2 i label3 sadrţe svojstvo

caption svojstvo caption label4 je

prazno (ljubičasta-color) što znači da ova

labela ne prikazuje nikakav tekst Da bi se

videla boja labele koja je različita od boje

forme mora se svojstvo transparent

postaviti na FALSE Ako je ovo svojstvo

postavljeno na TRUE veličina labele se

prilagoĎava njenom sadrţaju Label 5 ne

sadrţi nikakav tekst (caption je prazno) a

boja labele je ista kao i forma pa se ta

labela ni ne vidi po pokretanju programa

Ona je tu da prihvati spoji i prikaţe tekst

koji se unese u edit polja Kod kojim se

ovo radi je

procedure TForm1Button2Click(Sender TObject)

begin

label5Caption=Učenik +edit1Text+ +edit2Text+ ide u +edit3Text+ razred

end

Ova naredba znači da smo svojstvo caption label5 promenili u toku izvršavanja programa Stringovi koji su

navedeni u naredbi će se uvek prikazivati takvi sadrţaj edit polja zavisi od onoga što unesemo putem

tastature u odreĎeno edit polje Znak + izmeĎu stringova nadovezuje stringove jedan za drugim pa tako ako

ţelimo razmak moramo ga posebno navesti

Pritiskom na dugme na kojem piše BRIŠI treba poništiti sve što je unešeno i što je prikazano u label5 Kod

koji se ovo radi je

procedure TForm1Button1Click(Sender TObject)

begin

edit1text=

edit2Text=

edit3Text=

label5Caption=

end

Label5

Tekst koji je

unešen u edit1 razmak Tekst koji je

unešen u edit2

Tekst koji je

unešen u edit3

Label1

Label2

Label4

Label5

Button2

Label3

12 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju gde se boja forme menja kada se miš postavi na formu i skloni sa forme

LbPoruka se ne vidi po pokretanju programa nego tek kada se prikaţe poruka i drugačije je boje od forme

Klikom na dugme se ispisuje bdquoZdravo svimaldquo na traţenom jeziku (Hola Mundo na španskom)

Za svaku vrstu komponenata uključujući i obrazce (forme) postoji odreĎeni spisak dogaĎaja koji mogu da

im se dogode Oni su nabrojani u Object Inspector-u na stranici Events ili

dvostruki klik na komponentu pa će Delphi sam dodeliti ime rukovaoca koje

se sastoji od imena komponente i imena dogaĎaja za koji se pravi rukovalac

U zadatku se traţi da se boja forme menja kada se miš postavi na nju i kada se

skloni sa nje Znači u pitanju su dva različita dogaĎaja DogaĎaj

OnMouseEnter nastaje kada se miš postavi na komponentu a dogaĎaj

OnMouseLeave kada se miš skloni sa komponente Kod kojim postiţemo

promenu boje forme u zavisnosti od poloţaja miša bi mogao biti

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

ImeKomponenteSvojstvo=Vrednost

Npr Forma1color znači da komponenti koja se zove Forma1 menjamo boju Vrednost svojstva

dodeljujemo koristeći znak za dodelu vrednosti =

Boje u Delphi-ju mogu da se navode imenom ispred koje stoji prefiks cl (clRed clGreen) ili zadavanjem

boje putem osmocifrenog heksadecimalnog broja (cifre od 0 do 9 i slova od A do F) sa znakom $ ispred

broja (sve nule je crna boja sve F je bela boja)

Svojstvo Caption predstavlja natpis na nekoj komponenti odnosno tekst koji se prikazuje u toj komponenti

Naredba Label1Caption=rsquoZDRAVOrsquo znači da će se u label1 prikazati tekst ZDRAVO

Promena imena fonta u ComicSans u labeli lbPoruka lbporukaFontName=Comic Sans MS

Promena veličine fonta u labeli lbPoruka lbporukaFontSize=50

Promena boje fonta u labeli lbPoruka lbporukaFontColor=clpurple

Promena natpisa u labeli lbPoruka lbPorukacaption=ZDRAVO SVIMA

Promena vidljivosti labele lbPoruka lbPoruka transparent=false

Ceo kod za ovu veţbu

Kada se miš nalazi na

formi boja je roza

Kada se miš skloni sa

forme boja je plava

13 prof Ljiljana Jovičin Blagojević

unit UProbni

interface uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls Buttons ExtCtrls

type

Tforma1 = class(TForm)

lbPoruka TLabel

Label2 TLabel

Button1 TButton

Button2 TButton

Button3 TButton

procedure FormMouseEnter(Sender TObject)

procedure FormMouseLeave(Sender TObject)

procedure Button2Click(Sender TObject)

procedure Button3Click(Sender TObject)

procedure Button1Click(Sender TObject)

private

Private declarations

end

var

forma1 Tforma1

implementation

$R dfm

procedure Tforma1Button1Click(Sender TObject)

begin

lbporukaFontSize=30

lbporukaFontName=forte

lbporukaFontColor=clmaroon

lbPorukacaption=Hola Mundo

lbPoruka transparent=false

end

procedure Tforma1Button2Click(Sender TObject)

begin

lbporukaFontSize=50

lbporukaFontName=Ravie

lbporukaFontColor=clpurple

lbPorukacaption=ZDRAVO SVIMA

lbPoruka transparent=false

end

procedure Tforma1Button3Click(Sender TObject)

begin

close

end

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

end

Ovo je sam Delphi napravio

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 8: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

8 prof Ljiljana Jovičin Blagojević

JUNIT

Pascal juniti

Programiranje je više od kucanja programskog koda Pre svega programiranje je kombinacija planiranja

zadatka za programiranje a zatim kucanja koda koji će izvršavati taj zadatak Kod koji kucate se upisuje u

tekst datoteku Prevodilac uzima ovu datoteku i prevodi je u mašinski kod koji računar moţe da razume

Tekst datoteka koju Delphi prevodi u mašinski kod se zove junit (unit)

Tipovi junita

Delphijeve GUI aplikacije će sadrţati najmanje dva junita

Izvorni junit projekta sadrţi izvorni kod projekta Juniti izvornog koda programa imaju nastavak

DPR

Drugi tip junita koji Delphijeve GUI aplikacije sadrţe je junit glavne forme Junit forme i njegov

naziv ukazuju na junit izvornog koda koji mu je pridruţen Ovaj tip junita ima nastavak PAS Ovaj

tip junita ćete u većini slučajeva koristiti u Vašim Delphi programima Delphijeve GUI aplikacije

uvek imaju jedan junit forme (za glavnu formu) ali takoĎe mogu imati jednu ili više dodatnih

junita formi

Sadržaj junita Delphi juniti moraju pratiti unapred definisan format Junit mora biti napisan u unapred definisanom formatu

da bi prevodilac mogao da čita junit i prevodi kod junita

Juniti Delphi projekta sadrţe ključnu reč program iza kog sledi naziv junita i kod blok koji se nalazi izmeĎu

ključnih reči begin i end

Izvorni junit projekta za generički Delphijev projekt izgleda

Izvorni kod projekta za generički Delphijev project

01 program Project1

02

03 uses

04 Forms

05 Unit1 in Unit1pas Form1

06

07 $R RES

08

09 begin

10 ApplicationInitialize

11 ApplicationCreateForm(TForm1 Form1)

12 ApplicationRun

13 end

U liniji 1 ključna reč program identifikuje junit kao glavni izvorni junit programa

Moţete videti da se naziv junita Project1 nalazi iza ključne reči program (Delphi daje projektu generikči

naziv sve dok ne snimite projekt pod nazivom koji ima bolje značenje) Počev od linije 3 vidite deo koji je

identifikovan ključnom reči uses

Iza ključne reči uses se nalaze nazivi junita koje navedeni junit traţi da bi mogao da bude preveden Spisak

se završava znakom tačka-zarez

U liniji 7 moţete videti direktivu prevodiocu koja pokazuje Delphiju da uključi odgovarajuću resursnu

datoteku

Linija 9 sadrţi ključnu reč begin a linija 13 sadrţi ključnu reč end Zapazite da poslednja ključna reč end u

okviru junita iza sebe ima tačku (Junit moţe sadrţati više blokova koda označenih sa begin i end ali samo

jedan krajnji end iskaz)

Kod u okviru linija 10 11 i 12 je kod koji inicijalizuje aplikaciju kreirajući glavnu formu aplikacije

odnosno startuje aplikaciju

9 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte još jedan osnovni junit (FileNew) i pogledajte kod

Dvostrukim klikom na formu Delphi će prikazati nov junit u editor koda (Code Editor)

Prazan Pascal junit

01 unit Unit2

02

03 interface

04

05 implementation

06

07 end

Ovaj junit ima dve slične stvari sa junitom koji je predhodno

prikazan Prvo junit počinje ključnom reči unit iza koje sledi

naziv junita Unit2 (opet generički naziv koji kreira Delphi

Ključna reč end pojavljuje na kraju oba listinga

Kod u okviru praznog listinga se razlikuje od predhodnog po tome što sadrţi delove pod nazivom interface

i implementation Junit koji nije glavni izvorni junit programa mora sadrţati deo interface i deo

implementation Prazan Listing se razlikuje od predhodnog i po tome što nema iskaz begin Glavni junit programa mora

imati oba iskaza begin i end ali izvorni junit jedini moţe sadrţati poslednji iskaz end

Odeljak interface

Ova ključna reč označava početak odeljka za interfejs u okviru junita

Odeljak interface je odeljak junita u okviru kog se deklarišu identifikatori koje navedeni junit izvozi

Identifikator za izvoz predstavlja identifikator kome mogu pristupiti drugi juniti u okviru projekta

Većina junita će sadrţati kod koji ostali juniti koriste Moţe se reći da odeljak za interfejs sadrţi listu stavki

u okviru junita koje ostali juniti mogu da koriste Odeljak za intrerfejs počinje ključnom reči interface a

završava se ključnom reči implementation

Odeljak implementation

Odeljak za implementaciju junita je odeljak koji sadrţi aktuelni kod junita Odeljak za implementaciju

počinje ključnom reči implementation a završava se ključnom reči sledećeg junita

Kljućne reči u junitu

Ključna reč const

Junit opciono moţe sadrţati jedan ili više odeljaka const Odeljak const je odreĎen ključnom reči const

Odeljak const opisuje listu promenljivih koje su poznate kao konstante

Konstanta je identifikator koji se ne moţe menjati Npr

const

DefaultWidth = 400

DefaultHeight = 200

Description = Something really cool

Ključna reč type

Ključna reč type se koristi da deklariše nove tipove koje će koristiti program

Ključna reč var

Ključna reč var se koristi da deklariše odeljak koda u kom se deklarišu promenljive

Promenljive treba da budu deklarisane pre nego što se koriste Promenljive treba da deklarišete u posebnom

odeljku koda koji je naznačen ključnom reči var Npr

10 prof Ljiljana Jovičin Blagojević

var

X Integer variable X declared as an integer variable

Y Integer variable Y declared as an integer variable

Najčešće deklaracije promenljivih su Integer RealChar Word Boolean i dr

Često korišćeni operatori

Operator Opis Primer Matemati~ki operatori + sabiranje x =y + z

- oduzimanje x = y - z

mnoţenje x = y z

deljenje realnog broja x = y 314

div celobrojno deljenje x = y div 10

= dodeljivanje x =10

And logičko i if (x=1) and (y=2) then

= jednako if (x=10) then

ltgt nije jednako if (xltgt10) then

lt manje je od if (xlt10) then

lt= veće ili jednako if (xlt=) then

Zadatak Kreirati aplikaciju koja će aktiviranjem labele ispisivati tekst po ţelji u crvenoj boji veličine 20

1 Na otvorenu formu dodajte labelu (Label1)

2 Aktivirajte kod labele (dvostruki klik na labelu) i ukucajte naredbu

Label1Caption=Dobar dan Hvala sto ste kliknuli na mene (као на слици )

3 Startujte program (Run) i kliknite na labelu (pojaviće se uneti tekst) Vratite se u reţim rada

4 Podesite veličinu i boju slova font Color-Red i Size-20 Unesite kod ispod predhodnog

Label1FontSize=20

Label1FontColor=clRed

5 Startujte program

6 Sačuvajte ga pod imenom KlikNaLabelu

11 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će ispisati pozdravnu poruku bdquoDobar danldquo kada se klikne na taster (Botton)

koji je dodat na formu

- Podesiti za taster sledeća svojstva Caption-Klik na dugme u Inspector ObjektuEvants dogaĎaj

OnClick

U nazivu procedure treba da piše

procedure TForm1Button1Click

procedure imeformeimedugmetaClick

Junit treba da je sledećeg izgleda

Zadatak Kreirati aplikaciju za unos podataka kao na slici

Na formi imamo pet labela

Label1 label2 i label3 sadrţe svojstvo

caption svojstvo caption label4 je

prazno (ljubičasta-color) što znači da ova

labela ne prikazuje nikakav tekst Da bi se

videla boja labele koja je različita od boje

forme mora se svojstvo transparent

postaviti na FALSE Ako je ovo svojstvo

postavljeno na TRUE veličina labele se

prilagoĎava njenom sadrţaju Label 5 ne

sadrţi nikakav tekst (caption je prazno) a

boja labele je ista kao i forma pa se ta

labela ni ne vidi po pokretanju programa

Ona je tu da prihvati spoji i prikaţe tekst

koji se unese u edit polja Kod kojim se

ovo radi je

procedure TForm1Button2Click(Sender TObject)

begin

label5Caption=Učenik +edit1Text+ +edit2Text+ ide u +edit3Text+ razred

end

Ova naredba znači da smo svojstvo caption label5 promenili u toku izvršavanja programa Stringovi koji su

navedeni u naredbi će se uvek prikazivati takvi sadrţaj edit polja zavisi od onoga što unesemo putem

tastature u odreĎeno edit polje Znak + izmeĎu stringova nadovezuje stringove jedan za drugim pa tako ako

ţelimo razmak moramo ga posebno navesti

Pritiskom na dugme na kojem piše BRIŠI treba poništiti sve što je unešeno i što je prikazano u label5 Kod

koji se ovo radi je

procedure TForm1Button1Click(Sender TObject)

begin

edit1text=

edit2Text=

edit3Text=

label5Caption=

end

Label5

Tekst koji je

unešen u edit1 razmak Tekst koji je

unešen u edit2

Tekst koji je

unešen u edit3

Label1

Label2

Label4

Label5

Button2

Label3

12 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju gde se boja forme menja kada se miš postavi na formu i skloni sa forme

LbPoruka se ne vidi po pokretanju programa nego tek kada se prikaţe poruka i drugačije je boje od forme

Klikom na dugme se ispisuje bdquoZdravo svimaldquo na traţenom jeziku (Hola Mundo na španskom)

Za svaku vrstu komponenata uključujući i obrazce (forme) postoji odreĎeni spisak dogaĎaja koji mogu da

im se dogode Oni su nabrojani u Object Inspector-u na stranici Events ili

dvostruki klik na komponentu pa će Delphi sam dodeliti ime rukovaoca koje

se sastoji od imena komponente i imena dogaĎaja za koji se pravi rukovalac

U zadatku se traţi da se boja forme menja kada se miš postavi na nju i kada se

skloni sa nje Znači u pitanju su dva različita dogaĎaja DogaĎaj

OnMouseEnter nastaje kada se miš postavi na komponentu a dogaĎaj

OnMouseLeave kada se miš skloni sa komponente Kod kojim postiţemo

promenu boje forme u zavisnosti od poloţaja miša bi mogao biti

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

ImeKomponenteSvojstvo=Vrednost

Npr Forma1color znači da komponenti koja se zove Forma1 menjamo boju Vrednost svojstva

dodeljujemo koristeći znak za dodelu vrednosti =

Boje u Delphi-ju mogu da se navode imenom ispred koje stoji prefiks cl (clRed clGreen) ili zadavanjem

boje putem osmocifrenog heksadecimalnog broja (cifre od 0 do 9 i slova od A do F) sa znakom $ ispred

broja (sve nule je crna boja sve F je bela boja)

Svojstvo Caption predstavlja natpis na nekoj komponenti odnosno tekst koji se prikazuje u toj komponenti

Naredba Label1Caption=rsquoZDRAVOrsquo znači da će se u label1 prikazati tekst ZDRAVO

Promena imena fonta u ComicSans u labeli lbPoruka lbporukaFontName=Comic Sans MS

Promena veličine fonta u labeli lbPoruka lbporukaFontSize=50

Promena boje fonta u labeli lbPoruka lbporukaFontColor=clpurple

Promena natpisa u labeli lbPoruka lbPorukacaption=ZDRAVO SVIMA

Promena vidljivosti labele lbPoruka lbPoruka transparent=false

Ceo kod za ovu veţbu

Kada se miš nalazi na

formi boja je roza

Kada se miš skloni sa

forme boja je plava

13 prof Ljiljana Jovičin Blagojević

unit UProbni

interface uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls Buttons ExtCtrls

type

Tforma1 = class(TForm)

lbPoruka TLabel

Label2 TLabel

Button1 TButton

Button2 TButton

Button3 TButton

procedure FormMouseEnter(Sender TObject)

procedure FormMouseLeave(Sender TObject)

procedure Button2Click(Sender TObject)

procedure Button3Click(Sender TObject)

procedure Button1Click(Sender TObject)

private

Private declarations

end

var

forma1 Tforma1

implementation

$R dfm

procedure Tforma1Button1Click(Sender TObject)

begin

lbporukaFontSize=30

lbporukaFontName=forte

lbporukaFontColor=clmaroon

lbPorukacaption=Hola Mundo

lbPoruka transparent=false

end

procedure Tforma1Button2Click(Sender TObject)

begin

lbporukaFontSize=50

lbporukaFontName=Ravie

lbporukaFontColor=clpurple

lbPorukacaption=ZDRAVO SVIMA

lbPoruka transparent=false

end

procedure Tforma1Button3Click(Sender TObject)

begin

close

end

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

end

Ovo je sam Delphi napravio

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 9: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

9 prof Ljiljana Jovičin Blagojević

Zadatak

1 Kreirajte još jedan osnovni junit (FileNew) i pogledajte kod

Dvostrukim klikom na formu Delphi će prikazati nov junit u editor koda (Code Editor)

Prazan Pascal junit

01 unit Unit2

02

03 interface

04

05 implementation

06

07 end

Ovaj junit ima dve slične stvari sa junitom koji je predhodno

prikazan Prvo junit počinje ključnom reči unit iza koje sledi

naziv junita Unit2 (opet generički naziv koji kreira Delphi

Ključna reč end pojavljuje na kraju oba listinga

Kod u okviru praznog listinga se razlikuje od predhodnog po tome što sadrţi delove pod nazivom interface

i implementation Junit koji nije glavni izvorni junit programa mora sadrţati deo interface i deo

implementation Prazan Listing se razlikuje od predhodnog i po tome što nema iskaz begin Glavni junit programa mora

imati oba iskaza begin i end ali izvorni junit jedini moţe sadrţati poslednji iskaz end

Odeljak interface

Ova ključna reč označava početak odeljka za interfejs u okviru junita

Odeljak interface je odeljak junita u okviru kog se deklarišu identifikatori koje navedeni junit izvozi

Identifikator za izvoz predstavlja identifikator kome mogu pristupiti drugi juniti u okviru projekta

Većina junita će sadrţati kod koji ostali juniti koriste Moţe se reći da odeljak za interfejs sadrţi listu stavki

u okviru junita koje ostali juniti mogu da koriste Odeljak za intrerfejs počinje ključnom reči interface a

završava se ključnom reči implementation

Odeljak implementation

Odeljak za implementaciju junita je odeljak koji sadrţi aktuelni kod junita Odeljak za implementaciju

počinje ključnom reči implementation a završava se ključnom reči sledećeg junita

Kljućne reči u junitu

Ključna reč const

Junit opciono moţe sadrţati jedan ili više odeljaka const Odeljak const je odreĎen ključnom reči const

Odeljak const opisuje listu promenljivih koje su poznate kao konstante

Konstanta je identifikator koji se ne moţe menjati Npr

const

DefaultWidth = 400

DefaultHeight = 200

Description = Something really cool

Ključna reč type

Ključna reč type se koristi da deklariše nove tipove koje će koristiti program

Ključna reč var

Ključna reč var se koristi da deklariše odeljak koda u kom se deklarišu promenljive

Promenljive treba da budu deklarisane pre nego što se koriste Promenljive treba da deklarišete u posebnom

odeljku koda koji je naznačen ključnom reči var Npr

10 prof Ljiljana Jovičin Blagojević

var

X Integer variable X declared as an integer variable

Y Integer variable Y declared as an integer variable

Najčešće deklaracije promenljivih su Integer RealChar Word Boolean i dr

Često korišćeni operatori

Operator Opis Primer Matemati~ki operatori + sabiranje x =y + z

- oduzimanje x = y - z

mnoţenje x = y z

deljenje realnog broja x = y 314

div celobrojno deljenje x = y div 10

= dodeljivanje x =10

And logičko i if (x=1) and (y=2) then

= jednako if (x=10) then

ltgt nije jednako if (xltgt10) then

lt manje je od if (xlt10) then

lt= veće ili jednako if (xlt=) then

Zadatak Kreirati aplikaciju koja će aktiviranjem labele ispisivati tekst po ţelji u crvenoj boji veličine 20

1 Na otvorenu formu dodajte labelu (Label1)

2 Aktivirajte kod labele (dvostruki klik na labelu) i ukucajte naredbu

Label1Caption=Dobar dan Hvala sto ste kliknuli na mene (као на слици )

3 Startujte program (Run) i kliknite na labelu (pojaviće se uneti tekst) Vratite se u reţim rada

4 Podesite veličinu i boju slova font Color-Red i Size-20 Unesite kod ispod predhodnog

Label1FontSize=20

Label1FontColor=clRed

5 Startujte program

6 Sačuvajte ga pod imenom KlikNaLabelu

11 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će ispisati pozdravnu poruku bdquoDobar danldquo kada se klikne na taster (Botton)

koji je dodat na formu

- Podesiti za taster sledeća svojstva Caption-Klik na dugme u Inspector ObjektuEvants dogaĎaj

OnClick

U nazivu procedure treba da piše

procedure TForm1Button1Click

procedure imeformeimedugmetaClick

Junit treba da je sledećeg izgleda

Zadatak Kreirati aplikaciju za unos podataka kao na slici

Na formi imamo pet labela

Label1 label2 i label3 sadrţe svojstvo

caption svojstvo caption label4 je

prazno (ljubičasta-color) što znači da ova

labela ne prikazuje nikakav tekst Da bi se

videla boja labele koja je različita od boje

forme mora se svojstvo transparent

postaviti na FALSE Ako je ovo svojstvo

postavljeno na TRUE veličina labele se

prilagoĎava njenom sadrţaju Label 5 ne

sadrţi nikakav tekst (caption je prazno) a

boja labele je ista kao i forma pa se ta

labela ni ne vidi po pokretanju programa

Ona je tu da prihvati spoji i prikaţe tekst

koji se unese u edit polja Kod kojim se

ovo radi je

procedure TForm1Button2Click(Sender TObject)

begin

label5Caption=Učenik +edit1Text+ +edit2Text+ ide u +edit3Text+ razred

end

Ova naredba znači da smo svojstvo caption label5 promenili u toku izvršavanja programa Stringovi koji su

navedeni u naredbi će se uvek prikazivati takvi sadrţaj edit polja zavisi od onoga što unesemo putem

tastature u odreĎeno edit polje Znak + izmeĎu stringova nadovezuje stringove jedan za drugim pa tako ako

ţelimo razmak moramo ga posebno navesti

Pritiskom na dugme na kojem piše BRIŠI treba poništiti sve što je unešeno i što je prikazano u label5 Kod

koji se ovo radi je

procedure TForm1Button1Click(Sender TObject)

begin

edit1text=

edit2Text=

edit3Text=

label5Caption=

end

Label5

Tekst koji je

unešen u edit1 razmak Tekst koji je

unešen u edit2

Tekst koji je

unešen u edit3

Label1

Label2

Label4

Label5

Button2

Label3

12 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju gde se boja forme menja kada se miš postavi na formu i skloni sa forme

LbPoruka se ne vidi po pokretanju programa nego tek kada se prikaţe poruka i drugačije je boje od forme

Klikom na dugme se ispisuje bdquoZdravo svimaldquo na traţenom jeziku (Hola Mundo na španskom)

Za svaku vrstu komponenata uključujući i obrazce (forme) postoji odreĎeni spisak dogaĎaja koji mogu da

im se dogode Oni su nabrojani u Object Inspector-u na stranici Events ili

dvostruki klik na komponentu pa će Delphi sam dodeliti ime rukovaoca koje

se sastoji od imena komponente i imena dogaĎaja za koji se pravi rukovalac

U zadatku se traţi da se boja forme menja kada se miš postavi na nju i kada se

skloni sa nje Znači u pitanju su dva različita dogaĎaja DogaĎaj

OnMouseEnter nastaje kada se miš postavi na komponentu a dogaĎaj

OnMouseLeave kada se miš skloni sa komponente Kod kojim postiţemo

promenu boje forme u zavisnosti od poloţaja miša bi mogao biti

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

ImeKomponenteSvojstvo=Vrednost

Npr Forma1color znači da komponenti koja se zove Forma1 menjamo boju Vrednost svojstva

dodeljujemo koristeći znak za dodelu vrednosti =

Boje u Delphi-ju mogu da se navode imenom ispred koje stoji prefiks cl (clRed clGreen) ili zadavanjem

boje putem osmocifrenog heksadecimalnog broja (cifre od 0 do 9 i slova od A do F) sa znakom $ ispred

broja (sve nule je crna boja sve F je bela boja)

Svojstvo Caption predstavlja natpis na nekoj komponenti odnosno tekst koji se prikazuje u toj komponenti

Naredba Label1Caption=rsquoZDRAVOrsquo znači da će se u label1 prikazati tekst ZDRAVO

Promena imena fonta u ComicSans u labeli lbPoruka lbporukaFontName=Comic Sans MS

Promena veličine fonta u labeli lbPoruka lbporukaFontSize=50

Promena boje fonta u labeli lbPoruka lbporukaFontColor=clpurple

Promena natpisa u labeli lbPoruka lbPorukacaption=ZDRAVO SVIMA

Promena vidljivosti labele lbPoruka lbPoruka transparent=false

Ceo kod za ovu veţbu

Kada se miš nalazi na

formi boja je roza

Kada se miš skloni sa

forme boja je plava

13 prof Ljiljana Jovičin Blagojević

unit UProbni

interface uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls Buttons ExtCtrls

type

Tforma1 = class(TForm)

lbPoruka TLabel

Label2 TLabel

Button1 TButton

Button2 TButton

Button3 TButton

procedure FormMouseEnter(Sender TObject)

procedure FormMouseLeave(Sender TObject)

procedure Button2Click(Sender TObject)

procedure Button3Click(Sender TObject)

procedure Button1Click(Sender TObject)

private

Private declarations

end

var

forma1 Tforma1

implementation

$R dfm

procedure Tforma1Button1Click(Sender TObject)

begin

lbporukaFontSize=30

lbporukaFontName=forte

lbporukaFontColor=clmaroon

lbPorukacaption=Hola Mundo

lbPoruka transparent=false

end

procedure Tforma1Button2Click(Sender TObject)

begin

lbporukaFontSize=50

lbporukaFontName=Ravie

lbporukaFontColor=clpurple

lbPorukacaption=ZDRAVO SVIMA

lbPoruka transparent=false

end

procedure Tforma1Button3Click(Sender TObject)

begin

close

end

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

end

Ovo je sam Delphi napravio

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 10: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

10 prof Ljiljana Jovičin Blagojević

var

X Integer variable X declared as an integer variable

Y Integer variable Y declared as an integer variable

Najčešće deklaracije promenljivih su Integer RealChar Word Boolean i dr

Često korišćeni operatori

Operator Opis Primer Matemati~ki operatori + sabiranje x =y + z

- oduzimanje x = y - z

mnoţenje x = y z

deljenje realnog broja x = y 314

div celobrojno deljenje x = y div 10

= dodeljivanje x =10

And logičko i if (x=1) and (y=2) then

= jednako if (x=10) then

ltgt nije jednako if (xltgt10) then

lt manje je od if (xlt10) then

lt= veće ili jednako if (xlt=) then

Zadatak Kreirati aplikaciju koja će aktiviranjem labele ispisivati tekst po ţelji u crvenoj boji veličine 20

1 Na otvorenu formu dodajte labelu (Label1)

2 Aktivirajte kod labele (dvostruki klik na labelu) i ukucajte naredbu

Label1Caption=Dobar dan Hvala sto ste kliknuli na mene (као на слици )

3 Startujte program (Run) i kliknite na labelu (pojaviće se uneti tekst) Vratite se u reţim rada

4 Podesite veličinu i boju slova font Color-Red i Size-20 Unesite kod ispod predhodnog

Label1FontSize=20

Label1FontColor=clRed

5 Startujte program

6 Sačuvajte ga pod imenom KlikNaLabelu

11 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će ispisati pozdravnu poruku bdquoDobar danldquo kada se klikne na taster (Botton)

koji je dodat na formu

- Podesiti za taster sledeća svojstva Caption-Klik na dugme u Inspector ObjektuEvants dogaĎaj

OnClick

U nazivu procedure treba da piše

procedure TForm1Button1Click

procedure imeformeimedugmetaClick

Junit treba da je sledećeg izgleda

Zadatak Kreirati aplikaciju za unos podataka kao na slici

Na formi imamo pet labela

Label1 label2 i label3 sadrţe svojstvo

caption svojstvo caption label4 je

prazno (ljubičasta-color) što znači da ova

labela ne prikazuje nikakav tekst Da bi se

videla boja labele koja je različita od boje

forme mora se svojstvo transparent

postaviti na FALSE Ako je ovo svojstvo

postavljeno na TRUE veličina labele se

prilagoĎava njenom sadrţaju Label 5 ne

sadrţi nikakav tekst (caption je prazno) a

boja labele je ista kao i forma pa se ta

labela ni ne vidi po pokretanju programa

Ona je tu da prihvati spoji i prikaţe tekst

koji se unese u edit polja Kod kojim se

ovo radi je

procedure TForm1Button2Click(Sender TObject)

begin

label5Caption=Učenik +edit1Text+ +edit2Text+ ide u +edit3Text+ razred

end

Ova naredba znači da smo svojstvo caption label5 promenili u toku izvršavanja programa Stringovi koji su

navedeni u naredbi će se uvek prikazivati takvi sadrţaj edit polja zavisi od onoga što unesemo putem

tastature u odreĎeno edit polje Znak + izmeĎu stringova nadovezuje stringove jedan za drugim pa tako ako

ţelimo razmak moramo ga posebno navesti

Pritiskom na dugme na kojem piše BRIŠI treba poništiti sve što je unešeno i što je prikazano u label5 Kod

koji se ovo radi je

procedure TForm1Button1Click(Sender TObject)

begin

edit1text=

edit2Text=

edit3Text=

label5Caption=

end

Label5

Tekst koji je

unešen u edit1 razmak Tekst koji je

unešen u edit2

Tekst koji je

unešen u edit3

Label1

Label2

Label4

Label5

Button2

Label3

12 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju gde se boja forme menja kada se miš postavi na formu i skloni sa forme

LbPoruka se ne vidi po pokretanju programa nego tek kada se prikaţe poruka i drugačije je boje od forme

Klikom na dugme se ispisuje bdquoZdravo svimaldquo na traţenom jeziku (Hola Mundo na španskom)

Za svaku vrstu komponenata uključujući i obrazce (forme) postoji odreĎeni spisak dogaĎaja koji mogu da

im se dogode Oni su nabrojani u Object Inspector-u na stranici Events ili

dvostruki klik na komponentu pa će Delphi sam dodeliti ime rukovaoca koje

se sastoji od imena komponente i imena dogaĎaja za koji se pravi rukovalac

U zadatku se traţi da se boja forme menja kada se miš postavi na nju i kada se

skloni sa nje Znači u pitanju su dva različita dogaĎaja DogaĎaj

OnMouseEnter nastaje kada se miš postavi na komponentu a dogaĎaj

OnMouseLeave kada se miš skloni sa komponente Kod kojim postiţemo

promenu boje forme u zavisnosti od poloţaja miša bi mogao biti

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

ImeKomponenteSvojstvo=Vrednost

Npr Forma1color znači da komponenti koja se zove Forma1 menjamo boju Vrednost svojstva

dodeljujemo koristeći znak za dodelu vrednosti =

Boje u Delphi-ju mogu da se navode imenom ispred koje stoji prefiks cl (clRed clGreen) ili zadavanjem

boje putem osmocifrenog heksadecimalnog broja (cifre od 0 do 9 i slova od A do F) sa znakom $ ispred

broja (sve nule je crna boja sve F je bela boja)

Svojstvo Caption predstavlja natpis na nekoj komponenti odnosno tekst koji se prikazuje u toj komponenti

Naredba Label1Caption=rsquoZDRAVOrsquo znači da će se u label1 prikazati tekst ZDRAVO

Promena imena fonta u ComicSans u labeli lbPoruka lbporukaFontName=Comic Sans MS

Promena veličine fonta u labeli lbPoruka lbporukaFontSize=50

Promena boje fonta u labeli lbPoruka lbporukaFontColor=clpurple

Promena natpisa u labeli lbPoruka lbPorukacaption=ZDRAVO SVIMA

Promena vidljivosti labele lbPoruka lbPoruka transparent=false

Ceo kod za ovu veţbu

Kada se miš nalazi na

formi boja je roza

Kada se miš skloni sa

forme boja je plava

13 prof Ljiljana Jovičin Blagojević

unit UProbni

interface uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls Buttons ExtCtrls

type

Tforma1 = class(TForm)

lbPoruka TLabel

Label2 TLabel

Button1 TButton

Button2 TButton

Button3 TButton

procedure FormMouseEnter(Sender TObject)

procedure FormMouseLeave(Sender TObject)

procedure Button2Click(Sender TObject)

procedure Button3Click(Sender TObject)

procedure Button1Click(Sender TObject)

private

Private declarations

end

var

forma1 Tforma1

implementation

$R dfm

procedure Tforma1Button1Click(Sender TObject)

begin

lbporukaFontSize=30

lbporukaFontName=forte

lbporukaFontColor=clmaroon

lbPorukacaption=Hola Mundo

lbPoruka transparent=false

end

procedure Tforma1Button2Click(Sender TObject)

begin

lbporukaFontSize=50

lbporukaFontName=Ravie

lbporukaFontColor=clpurple

lbPorukacaption=ZDRAVO SVIMA

lbPoruka transparent=false

end

procedure Tforma1Button3Click(Sender TObject)

begin

close

end

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

end

Ovo je sam Delphi napravio

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 11: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

11 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će ispisati pozdravnu poruku bdquoDobar danldquo kada se klikne na taster (Botton)

koji je dodat na formu

- Podesiti za taster sledeća svojstva Caption-Klik na dugme u Inspector ObjektuEvants dogaĎaj

OnClick

U nazivu procedure treba da piše

procedure TForm1Button1Click

procedure imeformeimedugmetaClick

Junit treba da je sledećeg izgleda

Zadatak Kreirati aplikaciju za unos podataka kao na slici

Na formi imamo pet labela

Label1 label2 i label3 sadrţe svojstvo

caption svojstvo caption label4 je

prazno (ljubičasta-color) što znači da ova

labela ne prikazuje nikakav tekst Da bi se

videla boja labele koja je različita od boje

forme mora se svojstvo transparent

postaviti na FALSE Ako je ovo svojstvo

postavljeno na TRUE veličina labele se

prilagoĎava njenom sadrţaju Label 5 ne

sadrţi nikakav tekst (caption je prazno) a

boja labele je ista kao i forma pa se ta

labela ni ne vidi po pokretanju programa

Ona je tu da prihvati spoji i prikaţe tekst

koji se unese u edit polja Kod kojim se

ovo radi je

procedure TForm1Button2Click(Sender TObject)

begin

label5Caption=Učenik +edit1Text+ +edit2Text+ ide u +edit3Text+ razred

end

Ova naredba znači da smo svojstvo caption label5 promenili u toku izvršavanja programa Stringovi koji su

navedeni u naredbi će se uvek prikazivati takvi sadrţaj edit polja zavisi od onoga što unesemo putem

tastature u odreĎeno edit polje Znak + izmeĎu stringova nadovezuje stringove jedan za drugim pa tako ako

ţelimo razmak moramo ga posebno navesti

Pritiskom na dugme na kojem piše BRIŠI treba poništiti sve što je unešeno i što je prikazano u label5 Kod

koji se ovo radi je

procedure TForm1Button1Click(Sender TObject)

begin

edit1text=

edit2Text=

edit3Text=

label5Caption=

end

Label5

Tekst koji je

unešen u edit1 razmak Tekst koji je

unešen u edit2

Tekst koji je

unešen u edit3

Label1

Label2

Label4

Label5

Button2

Label3

12 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju gde se boja forme menja kada se miš postavi na formu i skloni sa forme

LbPoruka se ne vidi po pokretanju programa nego tek kada se prikaţe poruka i drugačije je boje od forme

Klikom na dugme se ispisuje bdquoZdravo svimaldquo na traţenom jeziku (Hola Mundo na španskom)

Za svaku vrstu komponenata uključujući i obrazce (forme) postoji odreĎeni spisak dogaĎaja koji mogu da

im se dogode Oni su nabrojani u Object Inspector-u na stranici Events ili

dvostruki klik na komponentu pa će Delphi sam dodeliti ime rukovaoca koje

se sastoji od imena komponente i imena dogaĎaja za koji se pravi rukovalac

U zadatku se traţi da se boja forme menja kada se miš postavi na nju i kada se

skloni sa nje Znači u pitanju su dva različita dogaĎaja DogaĎaj

OnMouseEnter nastaje kada se miš postavi na komponentu a dogaĎaj

OnMouseLeave kada se miš skloni sa komponente Kod kojim postiţemo

promenu boje forme u zavisnosti od poloţaja miša bi mogao biti

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

ImeKomponenteSvojstvo=Vrednost

Npr Forma1color znači da komponenti koja se zove Forma1 menjamo boju Vrednost svojstva

dodeljujemo koristeći znak za dodelu vrednosti =

Boje u Delphi-ju mogu da se navode imenom ispred koje stoji prefiks cl (clRed clGreen) ili zadavanjem

boje putem osmocifrenog heksadecimalnog broja (cifre od 0 do 9 i slova od A do F) sa znakom $ ispred

broja (sve nule je crna boja sve F je bela boja)

Svojstvo Caption predstavlja natpis na nekoj komponenti odnosno tekst koji se prikazuje u toj komponenti

Naredba Label1Caption=rsquoZDRAVOrsquo znači da će se u label1 prikazati tekst ZDRAVO

Promena imena fonta u ComicSans u labeli lbPoruka lbporukaFontName=Comic Sans MS

Promena veličine fonta u labeli lbPoruka lbporukaFontSize=50

Promena boje fonta u labeli lbPoruka lbporukaFontColor=clpurple

Promena natpisa u labeli lbPoruka lbPorukacaption=ZDRAVO SVIMA

Promena vidljivosti labele lbPoruka lbPoruka transparent=false

Ceo kod za ovu veţbu

Kada se miš nalazi na

formi boja je roza

Kada se miš skloni sa

forme boja je plava

13 prof Ljiljana Jovičin Blagojević

unit UProbni

interface uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls Buttons ExtCtrls

type

Tforma1 = class(TForm)

lbPoruka TLabel

Label2 TLabel

Button1 TButton

Button2 TButton

Button3 TButton

procedure FormMouseEnter(Sender TObject)

procedure FormMouseLeave(Sender TObject)

procedure Button2Click(Sender TObject)

procedure Button3Click(Sender TObject)

procedure Button1Click(Sender TObject)

private

Private declarations

end

var

forma1 Tforma1

implementation

$R dfm

procedure Tforma1Button1Click(Sender TObject)

begin

lbporukaFontSize=30

lbporukaFontName=forte

lbporukaFontColor=clmaroon

lbPorukacaption=Hola Mundo

lbPoruka transparent=false

end

procedure Tforma1Button2Click(Sender TObject)

begin

lbporukaFontSize=50

lbporukaFontName=Ravie

lbporukaFontColor=clpurple

lbPorukacaption=ZDRAVO SVIMA

lbPoruka transparent=false

end

procedure Tforma1Button3Click(Sender TObject)

begin

close

end

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

end

Ovo je sam Delphi napravio

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 12: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

12 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju gde se boja forme menja kada se miš postavi na formu i skloni sa forme

LbPoruka se ne vidi po pokretanju programa nego tek kada se prikaţe poruka i drugačije je boje od forme

Klikom na dugme se ispisuje bdquoZdravo svimaldquo na traţenom jeziku (Hola Mundo na španskom)

Za svaku vrstu komponenata uključujući i obrazce (forme) postoji odreĎeni spisak dogaĎaja koji mogu da

im se dogode Oni su nabrojani u Object Inspector-u na stranici Events ili

dvostruki klik na komponentu pa će Delphi sam dodeliti ime rukovaoca koje

se sastoji od imena komponente i imena dogaĎaja za koji se pravi rukovalac

U zadatku se traţi da se boja forme menja kada se miš postavi na nju i kada se

skloni sa nje Znači u pitanju su dva različita dogaĎaja DogaĎaj

OnMouseEnter nastaje kada se miš postavi na komponentu a dogaĎaj

OnMouseLeave kada se miš skloni sa komponente Kod kojim postiţemo

promenu boje forme u zavisnosti od poloţaja miša bi mogao biti

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

ImeKomponenteSvojstvo=Vrednost

Npr Forma1color znači da komponenti koja se zove Forma1 menjamo boju Vrednost svojstva

dodeljujemo koristeći znak za dodelu vrednosti =

Boje u Delphi-ju mogu da se navode imenom ispred koje stoji prefiks cl (clRed clGreen) ili zadavanjem

boje putem osmocifrenog heksadecimalnog broja (cifre od 0 do 9 i slova od A do F) sa znakom $ ispred

broja (sve nule je crna boja sve F je bela boja)

Svojstvo Caption predstavlja natpis na nekoj komponenti odnosno tekst koji se prikazuje u toj komponenti

Naredba Label1Caption=rsquoZDRAVOrsquo znači da će se u label1 prikazati tekst ZDRAVO

Promena imena fonta u ComicSans u labeli lbPoruka lbporukaFontName=Comic Sans MS

Promena veličine fonta u labeli lbPoruka lbporukaFontSize=50

Promena boje fonta u labeli lbPoruka lbporukaFontColor=clpurple

Promena natpisa u labeli lbPoruka lbPorukacaption=ZDRAVO SVIMA

Promena vidljivosti labele lbPoruka lbPoruka transparent=false

Ceo kod za ovu veţbu

Kada se miš nalazi na

formi boja je roza

Kada se miš skloni sa

forme boja je plava

13 prof Ljiljana Jovičin Blagojević

unit UProbni

interface uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls Buttons ExtCtrls

type

Tforma1 = class(TForm)

lbPoruka TLabel

Label2 TLabel

Button1 TButton

Button2 TButton

Button3 TButton

procedure FormMouseEnter(Sender TObject)

procedure FormMouseLeave(Sender TObject)

procedure Button2Click(Sender TObject)

procedure Button3Click(Sender TObject)

procedure Button1Click(Sender TObject)

private

Private declarations

end

var

forma1 Tforma1

implementation

$R dfm

procedure Tforma1Button1Click(Sender TObject)

begin

lbporukaFontSize=30

lbporukaFontName=forte

lbporukaFontColor=clmaroon

lbPorukacaption=Hola Mundo

lbPoruka transparent=false

end

procedure Tforma1Button2Click(Sender TObject)

begin

lbporukaFontSize=50

lbporukaFontName=Ravie

lbporukaFontColor=clpurple

lbPorukacaption=ZDRAVO SVIMA

lbPoruka transparent=false

end

procedure Tforma1Button3Click(Sender TObject)

begin

close

end

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

end

Ovo je sam Delphi napravio

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 13: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

13 prof Ljiljana Jovičin Blagojević

unit UProbni

interface uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls Buttons ExtCtrls

type

Tforma1 = class(TForm)

lbPoruka TLabel

Label2 TLabel

Button1 TButton

Button2 TButton

Button3 TButton

procedure FormMouseEnter(Sender TObject)

procedure FormMouseLeave(Sender TObject)

procedure Button2Click(Sender TObject)

procedure Button3Click(Sender TObject)

procedure Button1Click(Sender TObject)

private

Private declarations

end

var

forma1 Tforma1

implementation

$R dfm

procedure Tforma1Button1Click(Sender TObject)

begin

lbporukaFontSize=30

lbporukaFontName=forte

lbporukaFontColor=clmaroon

lbPorukacaption=Hola Mundo

lbPoruka transparent=false

end

procedure Tforma1Button2Click(Sender TObject)

begin

lbporukaFontSize=50

lbporukaFontName=Ravie

lbporukaFontColor=clpurple

lbPorukacaption=ZDRAVO SVIMA

lbPoruka transparent=false

end

procedure Tforma1Button3Click(Sender TObject)

begin

close

end

procedure Tforma1FormMouseEnter(Sender TObject)

begin

forma1color=$8283fa

end

procedure Tforma1FormMouseLeave(Sender TObject)

begin

forma1color=$cf9900

end

end

Ovo je sam Delphi napravio

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 14: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

14 prof Ljiljana Jovičin Blagojević

Zadatak Napisati program kojim se menja boja pozadine forme Na formi postaviti tri tastera sa

nazivima crvena plava i zelena Pritiskom na odgovarajuć taster menja se boja forme Postaviti

labelu sa nazivom ldquoPromena pozadine formerdquo Formi dati naziv Primer1

procedure TForm1Button1Click(Sender TObject)

begin

Form1Color = clRed

end

procedure TForm1Button2Click(Sender TObject)

begin

Form1Color = clBlue

end

procedure TForm1Button4Click(Sender TObject)

begin

Form1Color = clGreen

end

Zadatak Kreirati aplikaviju koja će sabirati dva uneta broja

1 Promenite svojstva forme Name-gtAritmetika Caption-gtKalkulator

2 Dodajte na formu 3 Edit-a

Name-gtprvibroj drugibroj i rezultat Caption-gt00 i prazno polje

3 Ispred Edit-a kreirajte tri Label-e sa osobinama

Name-gtporuka1 poruka2 porukarezultat Caption-gtprvi sabirak drugi sabirak i zbir

4 Kreirati jedan Baton Captio-gt+ Name-gtZbir U Inspektor objektu odaberite karticu

EventsOnClik Pojaviće se kod

5 U kodu deklarišite promenljive kao Real i unesite kod za sabiranje

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 15: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

15 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunavati zapreminu i površinu piramide

Uputstvo

- Kreirati šest Label-a četiri Edit-a i dva Buttons-a kao na slici

- U Proceduru za Button1 uneti kod

procedure TForm1Button1Click(Sender TObject)

var

iinteger

asdhbvhampreal

begin

a=strtofloat(edit1Text)

s=strtofloat(edit2Text)

b=sqr(a)

h=sqrt(sqr(s)-sqr(d2))

v=bh3

m=2aha

ha=sqrt(ss-(a2)(a2))

p=b+m

edit3Text=floattostr(v)

edit4Text=floattostr(p)

end

- U Proceduru za Button2 uneti kod

procedure TForm1Button2Click(Sender TObject)

begin

close

end

Zadatakza vežbu Kreirati aplikaciju za oduzimanje i mnoţenje kao na slici

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 16: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

16 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja sadrţi Edit kontrolu i dugme(Button) i koja

Koja obezbeĎuje da se u toku kreiranja forme obriše sav sadrţaj Edit kontrole a boja forme postavi na

ţuto

U slučaju dvostrukog klika na Edit kontrolu ispisuje u Edit kontroli poruku Napravili ste dvostruki

klik

Ispisuje hint(savet) za Edit kontrolu klikni 2 puta

Zatvara formu klikom na dugme (Caption Kraj)

Procedure TForm1FormCreate(Sender TObject)

begin

Edit1Text=

Form1Color=clYellow

end

procedure TForm1Edit1DblClick(Sender TObject)

begin

Edit1Text=Napravili ste DblClick

end

procedure TForm1btKrajClick(Sender TObject)

begin

Close

end

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 17: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

17 prof Ljiljana Jovičin Blagojević

ISCRTAVANJE FIGURA U Delphiju

Da bismo nacrtali bilo koju figure moramo znati koordinate početne i krajnje tačke poziciju tačaka i naredbe za

linije i krive

Koordinata početne leve-gornje tačke je (00) a naredba za iscrtavanje linije je u okviru procedure ili funkcije

Npr

convasLineTo(xy)

convasMoveTo (xy)

Zadatak Kreirati aplikaciju koja će aktiviranjem tastera ltCRTAJgt nacrtati kocku sledećeg izgleda

1 Kreirati taster Button ltCRTAJgt i u njegovoj proceduri uneti kod da bi se nacrtao kvadrat

2 Sačuvati projekat i pokrenuti aplikaciju

3 Dodati kod za iscrtavanje celokupne kocke

Zadatak Kreirati aplikaciju koja će iscrtati trougao aktiviranjem tastera ltISCRTAVANJE

TROUGLAgt

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 18: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

18 prof Ljiljana Jovičin Blagojević

GRANANJA I CIKLUSI

Kao i u Pascalu i Delphi ima razgranate i ciklične strukture

Razgranata struktura je oblika

IF THENELSE

Petlja je skup naredbi koje se ponavljaju do ili za vreme ispunjenja nekog uslova Svaki kod ispisan

kao primer za neku od 3 petlje ne stoji sam već kao do neke procedure

FOR

For petlja je najpoznatija petlja ali ne uvek i najbolja U ovoj petlji programer definiše broj ponavljanja i

radnje koje se vrše za vreme tog ponavljanja Primer da se širina i visina menjaju za 10 i to 3 puta

for i = 1 to 3 do

begin Form1Width = Form1Width + 10

Form1Height = Form1Height + 10

end

Dakle ako se izvršava više naredbi koristi se beginend blok

REPEAT Repeatuntil petlja se koristi ako broj ponavljanja nije apsolutan To u praksi znači da će se nešto

ponavljati dok se odreĎeni uslov ne ispuni Primer prozor ( Form1 ) menja širinu za 1 dok ona ne preĎe

vrednost od 600

repeat Form1Width = Form1Width + 1

until Form1Widht = 600

Lako se zaključuje da će se radnja obaviti bar jednom

Čak i ako se vrši više radnji beginend blok nije potreban

WHILE

Kao i Repeat petlja i While se koristi ako broj ponavljanja nije apsolutan MeĎutim razlika je u tome što

se ponavljanje vrši dok je uslov ispunjen Primer prozor ( Form1 ) povećava širinu dok god je ona manja od

600

while Form1Width lt 600 do

Form1Width = Form1Widht + 1

Ovde se radnja ne]e izvršiti nijednom ukoliko je širina već veća od 600

Ukoliko se vrši više radnji koristi se kao i kod for petlje beginend blok

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 19: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

19 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju koja će izračunati kvadratnu jednačinu sledećeg izgleda

Uputstvo

Na formu dodajemo 3Edit polja za unos koeficijenata jednaina i 2 Edit polja za re[enja Svojstva Name su

Pode[ena redomkoefA koefB koefC Edx1 и Edx2

Dodati taster za aktiviranje re[enja SvojstvoCaption podesiti na Resi jednacinu

Dadoti 7 Labela sa svojstvom Caption kao na slici

Labeli iznad re[enja je pode[eno svojstvo Name u poruka

Svojstvo Button1 je u kodu

Zadatak

Kreirati aplikaciju u kojoj se računa idealna teţina osobe na

osnovu njene visine i daje savet da li osoba treba da se ugoji i

smrša i za koliko Forma aplikacije treba da izgleda kao na slici

Kada se unesu svi traţeni podaci u edit polja pritiskom na dugme

računaj se menja boja labele u kojoj se prikazuje idealna teţina i

prikazuje se savet da li osoba treba da se ugoji i koliko da li treba

da oslabi i koliko ili ima idealnu teţinu

var

Form1 TForm1

implementation

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 20: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

20 prof Ljiljana Jovičin Blagojević

$R dfm

procedure TForm1Button1Click(Sender TObject)

var vtitinteger

begin

if edit1Text= then begin

showmessage(niste uneli visinu molim unesite)

edit1SetFocus

end

else

begin

if edit2Text= then begin

showmessage(niste uneli teţinu molim unesite)

edit2SetFocus

end

else

begin

if edit3Text= then begin showmessage(niste uneli pol molim unesite)

edit3SetFocus end else if (edit3Text ltgtm) and (edit3Textltgtţ) then

begin showmessage(niste uneli dobar pol ponovite)

edit3SelectAll edit3SetFocusend else

begin

v=strtoint(edit1Text)

t=strtoint(edit2Text)

if (v lt120) or (vgt280) then

begin showmessage(visna mora biti izmeĎu 120 i 180)

edit1SelectAll edit1SetFocus

end

else

begin

if edit3Text=m then it=v-100 else it = v-110

label10Caption=SAVET

lbporukaColor= $0088DD9B

lbPorukaCaption=vaša idealna teţina je + floattostr(it)+ kg

if itgtt then lbSavetCaption=treba da se ugojite +inttostr(it-t)+ kg

else if itltt then lbSavetCaption=treba da oslabite +inttostr(t-it)+ kg

else lbSavetCaption=VI IMATE IDEALNU TEŢINU

end end end end

end

procedure TForm1Button2Click(Sender TObject)

begin

edit1Text=

edit2Text=

edit3Text=

lbPorukaCaption=

lbporukacolor=$0087C0E7

lbSavetCaption=

label10caption=

end

procedure TForm1Button3Click(Sender TObject)

begin

close

end

end

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 21: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

21 prof Ljiljana Jovičin Blagojević

Zadatak

Kreirati aplikaciju koja računa konačnu ocenu na osnovu unetih

bodova iz pismenog dela ispita usmenog i seminara Forma

aplikacije treba da izgleda kao na slici1 Ocenjivenje je u

zavisnosti od zbira bodova (npr lt7 ocena1 lt12 ocena2 itd) Ako

se ne unesu dobro podaci program izdaje tekst (npr bdquoNisi dobro

uneo podatkeldquo)

var

Form1 TForm1

implementation

$R dfm

procedure TForm1Button1Click(Sender TObject)

begin

if edit1Text= then begin showmessage(morate uneti ime)

edit1SetFocusend

else

begin

button3Enabled=true

LABEL4Caption=PISMENI

LABEL5Caption=USMENI

LABEL7Caption=SEMINARSKI

EDPISMENIVisible=TRUE

EDUSMENIVisible=TRUE

EDSEMINARVisible=TRUE

BUTTON2Visible=TRUE

LABEL3Caption=UNESI SVOJE BODOVE

end

end

procedure TForm1Button2Click(Sender TObject)

VAR PUSUKOINTEGER

begin

button3Enabled=false

if EDPISMENIText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ PISMENOG)

EDPISMENISetFocus END ELSE

if EDUSMENIText= THEN BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ USMENOG)

EDUSMENISetFocus END ELSE

if EDSEMINARText= then BEGIN SHOWMESSAGE(NISTE UNELI BODOVE IZ

SEMINARSKOG)

EDSEMINARSetFocus END ELSE

BEGIN

P=STRTOINT(EDPISMENIText)

U=STRTOINT(EDUSMENIText)

S=STRTOINT(EDSEMINARText)

if (plt0) or (pgt10) or (ult0) or (ugt10) or (slt0) or (sgt10)

then showmessage(bodovi moraju biti izmedju 0 i 10) else

begin

if (Plt2) OR (Ult2) OR (Slt2) then BEGIN O=1UK=0END

ELSE

BEGIN

UK=P+U+S

if UKlt7 then O=1 ELSE

if UKlt 12 then O=2 ELSE

1

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 22: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

22 prof Ljiljana Jovičin Blagojević

if UKlt18 then O=3 ELSE

if UKlt 24 then O=4 ELSE

O=5

END

LABEL2Caption=DOBIJENA OCENA

LABEL8Caption=EDIT1Text+ IMA UKUPNO +INTTOSTR(UK)+ BODOVA

EDOCENAVisible=TRUE

EDOCENAText=INTTOSTR(O)

edit1ReadOnly=true

button1Enabled=false

end

end

END

procedure TForm1Button3Click(Sender TObject)

begin

edit1Text=

edit1SetFocus

edpismeniVisible=false

edusmeniVisible=false

edseminarVisible=false

label8Caption=

edocenaVisible=false

LABEL4Caption=

LABEL5Caption=

LABEL7Caption=

BUTTON2Visible=false

LABEL3Caption=

end

procedure TForm1Button4Click(Sender TObject)

begin

close

end

end

KOMPONENTA CheckBox

Komponenta CheckBox se koristi za izbor proizvoljnog broja od ponuĎenih stavki Grafički ova

komponenta je Predstavljena sa kvadratom i tekstom pored njega Kvadrat moţe da bude prazan

ili da sadrţi X Prazan kvadrat označava da stavka nije odabrana U toku izvršavanja aplikacije

korisnik moţe da promeni stanje komponente klikom na nju Natpis pored kvadratića se podešava

preko svojstva Caption

Zadatak1 Kreirati aplikacije sa 3 CheckBox-a Label1 i Edit1 sa tekstom kao na slici

Aktiviranjem CheckBox se menjaju veličina boja i ispis teksta

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 23: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

23 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikaciju koja će za unite vrednosti stepena Celzijusa pretvoriti u Farenhajt i obrnuto

Checkbox1- menja veličinu slova 25-10

Checkbox2- menja tekst Dobar dan

Checkbox3- menja boju crvena-zelena

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 24: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

24 prof Ljiljana Jovičin Blagojević

Zadatak

Napraviti aplikacu koja računa ukupnu cenu troška u zavisnosti od izabranih dodatnih sadrţaja

procedure TForm1Button1Click(Sender TObject)

begin

lbUkupnoCaption=100

if checkbox1Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbbazenCaption)

if checkbox2Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbklimaCaption))

if checkbox3Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbtvCaption))

if checkbox4Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbsaunaCaption)

if checkbox5Checked then

lbUkupnoCaption=inttostr(strtoint(lbukupnoCaption)+strtoint(lbterCaption))

end

procedure TForm1Button2Click(Sender TObject)

begin

close

end

end

KOMPONENTA RadioButton

RadioButton se koristi za izbor jedne od više ponuĎenih stavki Grafički ova komponenta ima krug-ček

sa natpisom pored Prazan krug označava stavku koja nije aktivna U toku izvršavanja aplikacije korisnik

moţe

menjati stanje komponente Natpis pored kruţića se podešavaju preko svojstva Caption Stanje komponente

se podešavaju pomoću logičkog tipa (moţe imati vrednost True i False) pri čemu samo jedno radon dugme

moţe biti odabrano (čekirano)

Zadatak2 Kreirati aplikaciju RadioGrup1 sa 7

Radiobuttons kao na slici i Label1

Prilikom aktiviranja Radiobuttons-a u labeli se ispisuju

dani u nedelji

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 25: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

25 prof Ljiljana Jovičin Blagojević

Zadatak Kreirati aplikaciju za izračunavanje +- kao na slici

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 26: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

26 prof Ljiljana Jovičin Blagojević

Zadaci za vežbu

1 1 Kreirati aplikaciju koja će menjati

tekst Svoje ime-gtnadimak

veličinu slova 15-gt30

boje crvena-gtţuta

2 2 Kreirati aplikaciju koja će čekiranjem RadioButtons (12) menjati imena meseca u godini

3 3 Kreirati aplikaciju koja će čekiranjem RadioButtons-a (2) izračunavati površinu i zapreminu

pravougaonika

COMPONENTA Memo

Komponenta Memo je namenjena za rad sa tekstom sa više linija teksta Linije teksta su indeksirane i

moţe im se pristupiti sa Memo1Lines[0] Memo1Lines[1] Memo1Lines[i]

Memo1Lines [Memo1LinesCount[i]-1]

Zadatak Napisati program kojim se vrše unos članova niza od 10 elemenata pomoću Memo komponente

(krem pozadina sa plavim brojevima) Na formi definiši odgovarajuće

Edit polje (ţuta pozadina sa plavim brojevima) za prikaz največeg člana

niza Traţenje najvećeg člana niza počni pritiskom na tater Pronadji

Formi dati naziv Primer8 Izgled forme rešenja ovog zadataka prikazan

je na slici Forma koristi standardne

komponente Label Edit i Button kao i komponentu Memo u koju se

unose članovi niza

Glavni deo koda ovog programa je sledeći

procedure TForm1Ponisti(Sender TObject)

Var i integer

begin

For i=1 To 100 Do

a[i]=0

end

procedure TForm1Button1Click(Sender TObject)

Var

maxijngr integer

s string

begin

For i=0 To 9 Do

Begin

s=Memo1Lines[i]

Val(sngr) j=i+1

If gr = 0 Then a[j]=StrToInt(Memo1Lines[i])

End

max=a[1]

For i=1 To 10 Do

If a[i] gt max Then max=a[i]

Edit1Text=IntToStr(max)

end

end

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 27: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

27 prof Ljiljana Jovičin Blagojević

COMPONENTE ListBox i ComboBox

Komponente ListBox i ComboBox se često koriste Komponenta ListBox predstavlja standardni Windows

okvir za listu koja predstavlja listu za izbor opcija koje korisnik moţe odabrati

Dijalog prouor ToolBarEditor sadrţi dva okvira za liste Okvir za listu na levoj

strani je običan okvir za listu prikazuje grupe dugmadi koje moţete odabrati Okvir

za listu na desnoj strani je korisnički definisan okvir za listu pokazuje dugmad koja

će se pojaviti na traci sa alatima kao i tekst opisa funkcije koju dugme izvršava

Kombo okviri su specijalizovani okviri za liste Ustvari kombo okvir je

kombinacija okvira za listu i edit kontrole Korisnik moţe odabrati opciju sa liste odnosno upisati vrednost

u deo za editovanje Kada korisnik odabere opciju sa liste opcija se postavlja u edit kontrolu Postoje tri

različita tipa kombo okvira Tip kombo okvira je odreĎen karakteristikom Style

Zadatak Napisati program kojim se konvertuju sledeći decimalni brojevi u heks-a 12 14 123 512

1023 2111 4780 i 27500 Date brojeve upisati u ListBox

komponentu (boja pozadine clCream a boja brojeva plava) Na formi

definisati odgovarajuće Edit polje (ţuta pozadina sa plavim

brojevima) za prikaz dobijenog heks-a broja Iznad ovog polja u

komponenti Label napiši Heksa a iznad ListBox komponente napiši

decimalni Izgled forme rešenja ovog zadataka prikazan je na donjoj

slici

Forma koristi novu komponentu ListBox koja sadrţi niz stavki u

našem primeru brojeva i omuguće da se izabere jedna (a moţe i više

stavki) Prtitskom na svojstvo Items otvoriće se ekran String List

Editor pomoću kojeg upišemo članove te liste što je prikazano na

donjoj slici

Glavni deo koda ovog programa je sledeći

procedure TForm1ListBox1Click(Sender TObject)

Var

iinteger

begin

i=ListBox1ItemIndex

Edit1Text =IntToHex(StrToInt(ListBox1Items[i])2)

end

end

Glavne karakteristike ovog programa

U proceduri ListBox1Click (koja se poziva klikom na neki broj u listi) odredimo redni broj

pozvanog broja (i=ListBox1ItemIndex) a zatim prikaţemo njegovu heksa prezentaciju u

polju Edit1 Za to koristimo funkciju IntToHex koja pretvara celi broj u heksadecimalni kao i

funkciju StrToInt koja odabrani broj iz ListBox-a (koji je string) pretvori u ceo broj

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a

Page 28: Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana Jovičin Blagojević UVOD Delphi je proizvod firme Borland, danas poznate kao Inprise. Ova firma

28 prof Ljiljana Jovičin Blagojević

Zadatak

Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a