Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana...
Transcript of Delphi je proizvod firme Borland, danas poznate kao Inprise · PDF file1 prof. Ljiljana...
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
28 prof Ljiljana Jovičin Blagojević
Zadatak
Izvršiti konverziju decimalnog broju u binarni pomoću Combo Box-a