Delphi
Zadatak 1.
Kreirati aplikaciju u kojoj e se menjati boja obrasca kao odgovor na tri dogaaja:
-
label1.font.color := clblue;
Dodati dugme za zatvaranje aplikacije (Close).
Zadatak 4.
Kreirati aplikaciju koja klikom na dugme ispisuje neku informaciju u dijalog prozoru. Takoe dodati dugme za
zatvaranje aplikacije.
Natpisi dugmia:
Button1: Hello
Button2: Close
Programski kod (pritiskom na dugme Hello):
MessageDlg(Zdravo svima!,mtInformation,[mbOk],0)
Zadatak 5.
Kreirati aplikaciju u kojoj se tekst u labeli proizvoljno poravnava.
Na obrazac postaviti jednu labelu i 4 dugmeta. Labelu ostaviti praznu, a natpise dugmia postaviti redom:
Levo, Centrirano, Desno, Kraj.
Dugmie programirati na sledei nain:
Label1.Alignment := taLeftJustify;
Label1.Alignment := taRightJustify;
Label1.Alignment := taCenter;
Kada se pokrene aplikacija, u labelu uneti proizvoljan tekst i primeniti opcije dugmia.
Zadatak 6. Kalkulator
Kreirati aplikaciju koja obavlja funkcije kalkulatora.
pBr := StrToInt(Edit1.text);
dBr := StrToInt(Edit2.text);
rez := pBr + dBr;
Edit3.Text:=IntToStr(rez)
end;
Ostali dugmii se programiraju analogno, s tim da se za deljenje moe koristiti operacija DIV ili, ukoliko se
koristi operacija /, potrebno je koristiti funkcije StrToFloat i FloatToStr.
Dugmiima osobinu ShowHint postaviti na TRUE i u osobine Hint napisati odgovarajui tekst: sabiranje,
oduzimanje, mnoenje, deljenje.
Zadatak 7.
Napisati aplikaciju koja uitava katete pravouglog trougla a i b i izraunava i prikazuje hipotenuzu c, oba otra
ugla i njegovu povrinu.
Edit polja nazvati redom: katetaA, katetaB, hipotenuzaC, povrsinaP, ugaoAlfa, ugaoBeta.
Programski kod za dugme Izraunaj:
procedure TForm1.Button1Click(Sender: TObject);
const
Pi = 3.141592;
var
a,b,c,P,alfa,beta : real;
begin
a := StrToFloat(katetaA.Text);
b := StrToFloat(katetaB.Text);
c := sqrt(sqr(a) + sqr(b));
P := a*b/2;
alfa := arctan(a/b)*180/Pi;
beta := arctan(b/a)*180/Pi;
hipotenuzaC.text := FloatTostr(c);
povrsinaP.text := FloatTostr(P);
ugaoAlfa.text := FloatTostr(alfa);
ugaoBeta.text := FloatTostr(beta);
end;
Zadatak 8.
Napisati aplikaciju koja rauna povrinu i zapreminu pravilne etvorostrane piramide, ako su joj poznate
osnovna ivica a i bona ivica s.
Ubaciti jo jednu labelu (Label4) i izbrisati joj Caption. U njoj e biti ispisan najmanji uneti broj.
Programski kod za dugme Izracunaj:
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,min: integer;
begin
a:=StrToInt(edit1.text);
b:=StrToInt(edit2.text);
c:=StrToInt(edit3.text);
min:=a;
if b<min then min:=b;
if c<min then min:=c;
Label4.Caption:='Najmanji broj je '+IntToStr(min);
end;
Primer izvrenog programa:
Zadatak 10.
Reiti kvadratnu jednainu ax2 + bx +c =0 na sledei nain:
D<0 -> Nema realnih reenja;
D=0 -> Ima dva jednaka realna reenja x=-b/(2*a);
D>0 -> Ima dva razliita realna reenja x1=(-b+sqrt(D)/(2*a)) i x2=(-b-sqrt(D)/(2*a)).
Programski kod za dugme Izracunaj:
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,D,x,x1,x2:real;
begin
a:= StrToFloat(Edit1.text);
b:= StrToFloat(Edit2.text);
c:= StrToFloat(Edit3.text);
D:=b*b-4*a*c;
if D<0 then
ShowMessage('Nema realnih resenja')
else
if D=0 then
begin
x:=-b/(2*a);
ShowMessage('Ima dva jednaka resenja koja iznose ' + FloatToStr(x))
end
else
begin
5
x1:=(-b+sqrt(D))/(2*a);
x2:=(-b-sqrt(D))/(2*a);
ShowMessage('x1=' + FloatToStr(x1) + #13+
'x2=' + FloatToStr(x2));
end;
end;
Zadatak 11. CheckBox
Na obrazac postaviti 7 CheckBox-ova, za svaki dan u sedmici po jedan, pod nazivima: Prvi dan, Drugi dan,...
Sedmi dan. Postaviti i labele kao sto je prikazano na donjoj slici. Kada se klikne na CheckBox iji je naziv Prvi
dan, u istom redu treba da se pojavi naziv prvog dana u sedmici (Ponedeljak) i tip dana: radni ili neradni.
Kada se CheckBox iskljui, naziv i tip dana treba da nestanu.
Analogno programirati i za ostale dane u sedmici.
Na poetku, aplikacija moe ovako izgledati:
procedure TForm1.CheckBox1Click(Sender:
TObject);
begin
if CheckBox1. checked then
begin
Label3.caption:='Ponedeljak';
Label10.caption:='radni';
end
else
begin
Label3.caption:='';
Label10.caption:='';
end
end;
Da biste znali koja je koja labela, dok ne dovrite pogramiranje ostavite nazive (Caption) labela nepromenjene.
Kada aplikacija bude kreirana, izbriite sve nazive labelama od 3 do 16.
Primer izvrenog programa:
First object je GroupBox i u njemu se nalaze RadioButtons. Position i Second object su RadioGroup.
Odabirom po jedne stavke iz svakog odeljka, ispisuje se reenica u labeli ispod.
Programski kod za dugme ChangeText:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
phrase:string;
begin
for i:=0 to GroupBox1.ControlCount-1 do
9
Na obrascu sa desne strane postavljen je Panel, na kom je stavljen RadioGroup1 (iji je Caption Boja panela),
zatim jedan ScrollBar i RadioGroup2 (iji je Caption Poravnavanje panela). Osobina panela Align je na
poetku postavljena na alRight, a osobina Visible na False, to panel ini nevidljivim u momentu kada se
pokrene aplikacija.
CheckBox Podeavanja omoguava prikazivanje i sakrivanje panela.
Kada se unese visina u centimetrima u prvo edit polje, korisnik iz ComboBox-a bira pol (ena/mukarac) i
potom se idealna teina upisuje u drugo edit polje. Visina se izrauvana po obrascu:
Za ene: visina 110;
Za mukarce: visina 100.
Ostale funkcije u zadatku su oigledne i ne zahtevaju dodatno objanjenje.
Ceo programski kod zadatka:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
panel1.visible:=CheckBox1.Checked;
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
case RadioGroup1.ItemIndex of
0:form1.Color:=clbtnface;
1:form1.Color:=clblue;
2:form1.Color:=clyellow;
end;
10
end;
procedure TForm1.RadioGroup2Click(Sender: TObject);
begin
case RadioGroup2.ItemIndex of
0:panel1.Align:=alleft;
1:panel1.Align:=alright;
end;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if edit1.Text<>'0' then
if ComboBox1.ItemIndex=0 then
Edit2.Text:= inttostr(strtoint(edit1.text) - 100)
else Edit2.Text:= inttostr(strtoint(edit1.text) - 110) ;
end;
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
Edit1.Font.Size:=ScrollBar1.Position;
ComboBox1.Font.Size:=ScrollBar1.Position;
Edit2.Font.Size:=ScrollBar1.Position;
label4.Caption:= 'Velicina slova: '+ inttostr(ScrollBar1.Position);
end;
11
Edit polja za Ime, Prezime i Grad nazvana su redom (osobina Name): ime, prezime, grad. CheckBox je nazvan
Uspeh. Edit polja u koja se unose ocene nazvana su rednim brojevima od prvi do cetrnaesti.
Postavljena je jo jedna labela (label18) iji je caption u poetku prazan, a u koju se kasnije ispisuje prosek
uenika.
Programski kod dugmeta Izraunaj:
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,i,j: integer;
c:real;
s:string;
begin
i:=0; b:=0;
if length(ime.text)>1 then inc(i);
if length(prezime.text)>1 then inc(i);
if length(grad.text)>1 then inc(i);
val(prvi.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
val(drugi.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
val(treci.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
val(cetvrti.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
val(peti.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
val(sesti.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
val(sedmi.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
12
val(osmi.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
val(deveti.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
val(deseti.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
val(jedanaesti.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
val(dvanaesti.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
val(trinaesti.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
val(cetrnaesti.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i) end;
c:=b/(i-3);
Str(c:5:2,s);
if (i=17) and (uspeh.checked) then
label18.Caption:='Srednja ocena ucenika je ' + s
else
label18.Caption:='Pogresno uneti podaci!'
end;
Primer izgleda aplikacije nakon izvravanja:
13
Na obrazac postaviti Memo komponentu i otkucati sadraj u osobini Lines. Takoe postaviti 2 labele, 2
CheckBox-a i 3 radio dugmia. Imena (Name) CheckBox-ova i radio dugmia su identina kao njihovi nazivi
(Caption).
Izgled aplikacije:
Na obrazac dodati jo jedno dugme Pronai i edit polje u koje e se upisati tekst koji elimo da obeleimo.
Klikom na dugme Pronai u tekstu e se obeleiti prvo pojavljivanje stringa koji je zadat u edit polju.
Svojstvo Memo komponente Hide Selection postaviti na false.
Kod dugmeta Pronai:
procedure TForm1.pronadjiClick(Sender: TObject);
var
k:integer;
begin
k:=Pos(edit1.Text,memo1.text);
if k>0 then
begin
memo1.SelStart:=k-1;
memo1.SelLength:=Length(edit1.text);
end
else
ShowMessage('Takav tekst ne postoji!')
end;
Dodati na obrazac i dugme Zameni i edit polje u kom e se uneti tekst kojim elimo da zamenimo tekst iz
prvog edit polja. Dakle, sada aplikacija izgleda ovako:
14
Dugme Zameni isprogramirati tako da kada kliknemo na njega izvri se prepravka Memo teksta na taj nain da
se string iz prve edit komponente zameni stringom navedenim u drugoj edit komponenti.
Programski kod dugmeta Zameni:
procedure TForm1.zameniClick(Sender: TObject);
var
k:integer;
s:string;
begin
s:=memo1.Text;
k:=Pos(edit1.Text,s);
while k>0 do
begin
Delete(s,k,Length(edit1.text));
Insert(edit2.Text,s,k);
k:=Pos(edit1.Text,s);
end;
memo1.Text:=s;
end;
Proiriti obrazac sa jo 3 dugmeta, za levo, desno i centrirano poravnanje.
Kod dugmeta Levo:
procedure TForm1.levoClick(Sender: TObject);
begin
memo1.Alignment:=taLeftJustify;
end;
Desno i Sredina programirati analogno (Desno: taRightJustify, Sredina: taCenter).
Dodati jo 2 dugmeta za odabir boje fonta i pozadine. Da bi to bilo omogueno, na obrazac postaviti
komponentu ColorDialog iz palete Dialogs.
Konani izgled aplikacije:
15
begin
for i:=0 to StringGrid1.ColCount-1 do
for j:=0 to StringGrid1.RowCount-1 do
StringGrid1.cells[i,j]:='*'
end;
Zadatak 22. StringGrid ureeni parovi
Kreirati aplikaciju koja ispisuje ureene parove kolone i vrste elije u svim poljima tabele.
Na obrazac postaviti komponentu StringGrid i jedno dugme sa natpisom Ispisi.
Klikom na dugme, tabela dobija sledei izgled:
17
18
Pre aktiviranja dugmia, neophodno je uneti eljeni broj kolona i redova, kao i koordinate figure Top.
Dugme Formatiraj ima istu ulogu i isti programski kod kao u prethodnom zadatku.
Edit polja za koordainate Top-a nazvati redom TopKolona i TopVrsta.
Programski kod dugmeta Napadni:
procedure TForm1.NapadniClick(Sender: TObject);
var
i,j,col,row:integer;
begin
col:=StrToInt(TopKolona.text);
row:=StrToInt(TopVrsta.text);
for i:=1 to StringGrid1.ColCount-1 do
for j:=1 to StringGrid1.RowCount-1 do
if (col=i) or (row=j) then
StringGrid1.Cells[i,j]:='*'
end;
Primer izgleda izvrene aplikacije nakon pravilnog unoenja podataka i klika na oba dugmeta:
20
21