Professional Documents
Culture Documents
Programiranje IV ALB PRINT
Programiranje IV ALB PRINT
PROGRAMIMI
Për vitin IV të profilit elektroteknik
për teknikë kompjuterike dhe automatikë
Programimi-Delphi
Botues:
MINISTRIA E ARSIMIT DHE SHKENCËS
E REPUBLIKËS SË MAQEDONISË
Rr. Mito Haxhivasilev Jasmin, p.n.
Shkup
Recensentë:
Dr. Ivan Çorbev,
docent në Fakultetin për elektroteknikë dhe teknologji informative
pranë universitetit “Shën Kirili dhe Metodij “ – Shkup
Biljana Pejovska,
Profesoreshë në shkollën e mesme “ Mihajllo Pupin” – Shkup
Daniela Sandeva,
Profesoreshë në shkollën e mesme “ Mihajllo Pupin” – Shkup
004.42(075.3)
ɉȿɌɊȿɋɄȺ, ȳɭɥɢʁɚɧɚ
ɉɪɨɝɪɚɦɢɪɚʃɟ ɡɚ IV ɝɨɞɢɧɚ ɡɚ ɩɪɨɮɢɥɨɬ ɟɥɟɤɬɪɨɬɟɯɧɢɱɚɪ ɡɚ ɤɨɦɩʁɭɬɟɪɫɤɚ
ɬɟɯɧɢɤɚ ɢ ɚɜɬɨɦɚɬɢɤɚ / ȳɭɥɢʁɚɧɚ ɉɟɬɪɟɫɤɚ. - ɋɤɨɩʁɟ: Ɇɢɧɢɫɬɟɪɫɬɜɨ ɡɚ
ɨɛɪɚɡɨɜɚɧɢɟ ɢ ɧɚɭɤɚ ɧɚ Ɋɟɩɭɛɥɢɤɚ Ɇɚɤɟɞɨɧɢʁɚ, 2010. - 186 ɫɬɪ.: ɢɥɭɫɬɪ.; 30 ɫɦ
ISBN 978-608-226-154-6
COBISS.MK-ID 84272138
PËRMBAJTJA
1. BAZA TË PROGRAMIMIT TË ORIENTUAR NË OBJEKTE................................ 7
1.1 Karakteristikat bazë të programeve të bazuar në dritare.................................... 7
1.2. Elementet e hapësirës grafike shfrytëzuese....................................................... 9
1.3. Programe të komanduara nga ngjarje............................................................... 13
1.4. Probleme që zgjidhen me Delphi..................................................................... 16
KAPITULLI 1 (SHKURT)…................................................................................... 17
Pyetje dhe detyra:….....……………………………………….…………………… 18
PARATHËNIE
Motivimi themelor për realizimin e këtij libri është se ky është libër i parë
për lëndën adekuate në shkollat e mesme i cili përfshin materie për të cilën ekziston
interesim më i gjerë, dhe për të cilin ka literaturë të cunguar në gjuhën maqedonase
dhe shqipe.
Qëllimi primar i librit është të përgjigjet në nevojat për realizimin e
programit arsimor të lëndës programimi për vitin e katërt. Kjo kushtëzon që materia
e paraqitur të paraqes përforcim të diturive të fituara në lëndën e programimit në
vitin e dytë dhe tretë.
Në kapitullin e parë janë përpunuar bazat e programimit të orientuar në
objekte. Këtu analizohet hapësira punese e Windows-it dhe DOS-it, ekzekutimi
paralel i më shumë programeve (multitasking) dhe mundësia e punës duke
shfrytëzuar rrjetat.
Kapitulli i dytë përqendrohet në analizën e ekranit të Delphi-it, gjegjësisht
katër komponentët themelore të tij, puna me meny të programit, format si
komponentë kryesore të aplikacionit Delphi dhe mënyra e vendosjes së
komponentëve në formë.
Kapitulli i tretë ka të bëjë me shkrimin e kodit të programit dhe është më
voluminoz. Përshkruhen ngjarjet dhe mënyrat e vendosjes së kodit për ngjarjet.
Gjithashtu, do të mësohen elementet e gjuhës, strukturat programore, modulet
programore, fusha e veprimit të identifikatorit etj. Në të janë përfshirë numri më i
madh i komponentëve, siç janë: komponentët e zgjedhjes, komponentët kontejner,
komponentët për punë me vargje, komponentët për punë me aplikacione
multimediale etj.
Në kapitullin e katërt, i cili përbëhet nga shkrimi i mesazheve (kornizat për
dialog), është dhënë numër më i madh i dritareve dhe mënyrat e shfrytëzimit të
tyre. Ato nxënësit deri tani i kanë hasur vetëm gjatë punës me Windows dhe
aplikacionet e tij.
Kapitulli i pestë i përpunon mënyrat e krijimit të menyve për format.
Vëmendje e veçantë i kushtohet definimit të menysë kryesore si dhe menyve
ndihmëse. Procedurat dhe funksionet në Delphi janë përpunuar në kapitullin e
gjashtë, kapitulli i shtatë i përpunon bazat e të dhënave. Këtu bien ndarjet e bazave
dhe bazat e të dhënave relacionare, mënyra e lidhjes me bazat e të dhënave në
Delphi, mundësitë e shfrytëzimit të magjistarëve, si dhe mundësitë e qasjes
programore deri te të dhënat e bazës së të dhënave.
Numri i madh i fotografive të ekraneve punuese duhet t’ju ndihmojnë
nxënësve më lehtë t’i kuptojnë hapat e ekzekutimit të operacioneve të veçanta në
Delphi. Mund të vijë në dallime më të vogla në pamjen e ekranit në varësi nga
versioni i Delphi i cili do të shfrytëzohet.
KAPITULLI 1
1. BAZAT E PROGRAMIMIT TË
ORIENTUAR NË OBJEKTE
Në këtë kapitull do të mësoni:
- të bëni dallimin mes sistemit operativ DOS dhe WINDOWS;
- të dalloni programin linear nga programi i orientuar në objekte;
- të shpjegoni multitasking-un;
- të sqaroni programimin e orientuar në objekte.
Kjo dritare paraqitet nëse shfrytëzuesi përpiqet të dalë nga programi, kurse
punën në dokument nuk e ka ruajtur. Ky është paralajmërim i fundit për rruajtjen e
punës së mëparshme. Shfrytëzuesi ka në dispozicion tre mundësi prej të cilave
secila zgjidhet me shtypje në njërin prej butonave të treguar.
Dritarja-dialog mund të ketë edhe pamje më të ndërlikuar, e me atë edhe
funksionalitet më të madh, si dritarja në figurën 8.
këto aktivitete, por edhe shumë të tjerë ekzekutohen me shtypjen e butonit përkatës
të telekomandës. Ky shembull i kontrollit të sistemit muzikor paraqet programim të
udhëhequr nga ngjarje. Shfrytëzuesi me shtypjen e butonit aktivizon ngjarje,
sistemi muzikor ndërmerr aksion përkatës, që do të thotë që shfrytëzuesi kontrollon
rrjedhën e ngjarjeve.
Në rrethin tuaj mund të hasni në numër të madh të pajisjeve të cilat janë të
programuara të reagojnë në ngjarje të caktuara.
Në botën e programimit edhe reagimet e kompjuterit mund të jenë shumë të
ndryshme: shtypje të tastit të tastierës, lëvizje të miut, klikim të miut, zgjedhje nga
menyja, lëvizje të dritares nga ana e shfrytëzuesit ose arritja e momentit kohor të
programuar në orën e brendshme të kompjuterit.
Sistemi operativ Windows është i ndjeshëm në ngjarje (i njeh) dhe me
mekanizmat e ngritur të tij reagon në to. Kur Windows “ndjen” ngjarje të caktuar,
ai përpiqet t’i “tregojë” programit për cilën ngjarje bëhet fjalë, duke dërguar
komandë adekuate. Programi aktiv duhet të interpretojë atë komandë, të njohë
ngjarjen për të cilën bëhet fjalë në mesazh dhe pastaj të reagoj në pajtim me atë.
Paketa programore Delphi mundëson shkrimin e programeve të cilat
ekzekutohen vetëm nëse ndodh ngjarje e caktuar. Vetëm nëse shfrytëzuesi shtyp
buton komandues të caktuar ose zgjedh ndonjë operacion, ekzekutohet program i
caktuar në Delphi.
Ngjarjet në programin Delphi mund të aktivizohen me veprim të
shfrytëzuesit, funksione interne, siç janë tajmerët (timer-orë të brendshme) ose nga
faktorë të jashtëm (pranim i mesazhit elektronik). Ekzistojnë shumë ngjarje të cilat
mund të ndodhin në programin aplikativ, i cili duhet të jetë i aftë t’i selektojë
ngjarjet. Aksionet zhvillohen vetëm gjatë ngjarjeve të caktuara.
Ngjarja mund të ndodhë në secilin moment gjatë kohës së punës së
programit. Windows i mundëson programit aplikativ të njohë ngjarjen. Kur
Windows do të njohë ngjarjen, programi ekzekuton kodin e programit që është i
shkruar për atë ngjarje. Problemi me ngjarjet është zgjidhur me bashkëpunim të
mirë mes Windows-it dhe paketës programore Delphi për të cilët mund të thuhet se
punojnë bashkë.
Në Delphi ekzistojnë dy tipe baze të ngjarjeve: ngjarje të cilën e nxit
shfrytëzuesi dhe ngjarja të cilën e ka nxitur sistemi operativ
Ngjarjet të cilat i nxit shfrytëzuesi, u mundësojnë kontroll të drejtimit në të
cilin ekzekutohet programi. Kjo do të thotë se shfrytëzuesi mund të ndërmarrë
veprime specifike kur të dëshirojë, që i jep liri të plotë në kontrollimin e programit.
Me paraqitjen e programimit të orientuar në objekte (POO) lehtësohet
krijimi programeve për Windows. Kjo mënyrë e programimit mundëson krijimin e
komponentëve për shfrytëzim të shumëfishtë në programe aplikative të ndryshme.
Nocione bazë në programimin e orientuar në objekte janë: komponentët, objektet,
metodat, vetitë dhe ngjarjet.
Komponentët janë elemente të vendosur në Delphi për shfrytëzim të
shumëfishtë dhe shfrytëzohen gjatë formimit të objekteve.
Objekti është element bazë në programin Delphi i cili ka veti të veçanta të
cilat i përcaktojnë karakteristikat e tij, metoda të cilat e definojnë sjelljen dhe
mundësitë e tij për njohjen e ngjarjeve në të cilat mund të reagojë.
OBJEKTE
Objektet mund t’i paramendojmë si sende në natyrë. Tek ata vërejmë:
-Veti- si gjatësia, lartësia, ngjyra.
-Ngjarje- si për shembull, ulja e shoferit në automobil.
-Metoda- si punon motori i automobilit.
-Nën objekte- si për shembull, motori që është pjesë përbërëse e automobilit.
Veti të caktuara të objekteve do të varen nga nën-objektet, si shembull, vetitë
ngasëse të automobilit në vartësi nga tipi i motit.
Do të thotë, objektet kanë metodat e tyre, veti, ngjarje. Kanë edhe nën-
objekte nga të cilët trashëgojnë vetitë, metodat dhe ngjarjet. Mund të jenë të
dukshëm ose jo.
VETI
Vetitë më shpesh janë variabla të ndonjë lloji, por mund të jenë edhe
funksione ose procedura, gjegjësisht objekte.
Me ndryshimin e vetive objekt sillen ndryshe.
Vetitë mund të ndërrohen në fazën e përpunimit të ndërfaqes (interfejsit në
Object Inspector) ose në fazën e përmbarimit të aplikacionit (me komandë në
dritaren Unit ).
NGJARJE
Ngjarje janë procedura me emër saktë të përcaktuar, kurse aktivizohen
vetëm atëherë kur vjen në shprehje vetia që e definon ngjarjen. Shembull, nëse
klikojmë në dritare, vjen në shprehje ngjarja Click, kurse nëse aplikojmë klik të
dyfishtë, vjen në shprehje ngjarja DblClick.
Njëkohësisht mund të vijnë në shprehje më tepër ngjarje.
Ngjarjet programohen ashtu që gjatë aktivizimit, aplikacioni tregon
ndërfaqen e tij - dritaret dhe objektet në to. Të gjithë ato presin që shfrytëzuesi të
bëjë diçka, që të mund të shkaktojë reagimin e tyre si përgjigje ndaj veprimit të
shfrytëzuesit. Kjo është normale në të gjitha aplikacionet e Windows-it, kështu që
programimi i tyre mbështetet në programimin e ngjarjeve (të cilat duhet të
ekzekutohen nëse shfrytëzuesi bën diçka).
METODA
Metoda ose veprime më shpesh janë procedura të cilat bëjnë diçka në
objekt. Mund të thirren me komanda në dritaren Unit ose me ndryshim të vetive.
Ata mund të nisin ndonjë ngjarje.
KAPITULLI 1
(SHKURT)
DOS si edhe sistemet operative tjera, komandon me rrjedhën e informatave
mes pjesëve të ndryshme të sistemit kompjuterik. Me DOS punohet duke shkruar
ose zgjedhur komanda të cilat e orientojnë sistemin të kryejë detyrat e dhëna.
Sistemi operativ Windows sjell risi domethënëse siç janë: hapësira punuese
grafike (ndërfaqja grafike), kryerja e më tepër programeve (multitasking) dhe
mundësia e punës të më shumë shfrytëzuesve në rrjetë.
Me paraqitjen e programimit të orientuar në objekte (POO) lehtësohet
krijimi i programeve të Windows-it.
Nocione bazë të programimit të orientuar në objekte janë: komponentët,
objektet, metodat, vetitë dhe ngjarjet.
Objekti është element themelor i programit Delphi i cili ka veti të cilat
përcaktojnë karakteristikat e tij, metodat të cilat definojnë sjelljen e tij dhe mundësi
të njohjes së ngjarjeve në të cilat mund të reagojë.
Metoda është kod programor që përcjell objektin i cili përcakton se si
objekti do t’i përpunojë informacionet dhe si do të reagojë në ngjarjet.
Vetitë janë karakteristika të objektit siç janë, për shembull: madhësia,
vendosja, ngjyra ose fonti i tekstit.
Paketa programore Delphi mundëson shkrimin e programeve të cilat
ekzekutohen, vetëm nëse ndodh ndonjë ngjarje.
Në Delphi ekzistojnë dy lloje bazë të ngjarjeve: ngjarje e shkaktuar nga
shfrytëzuesi dhe ngjarje e shkaktuar nga sistemi operativ.
Delphi është paketë programore e destinuar për krijimin e Windows
aplikacioneve për kompjuter personal.
Programimi i orientuar në objekte është i ngritur në tre parime bazë:
enkapsulimi, të trashëguarit dhe poliformizmi.
KAPITULLI 2
Dritarja e hapësirës punuese të Delphi-it përbëhet nga tre pjesë edhe atë nga:
Shiriti i emrit është linjë emri standard i Windows e cila përmban: ikonë të
programit, emrin e programit Delphi, emrin e projektit- dokumentin dhe tre butona
për kontrollimin e madhësisë së dritares së aplikacionit.
Shiriti Standard:
New – projekt i ri,
Open – hap projekt ekzistues, formë,....
Save – e ruan projektin,
Save all – ruan gjithë datotekat e projektit,
Open project – hap projekt ekzistues,
Add file to project – shton datotekë në projekt,
Remove file from project – largon datotekë nga projekti,
Shiriti Help – qasje në ndihmë,
Help contents – dritare për ndihmë,
Shiriti View – shirit i cili mundëson shfaqjen e programit ose të formës (ky
shirit gjendet ne radhën e dytë majtas),
View Unit –shfaq kodin programor të formës që dizajnohet,
View Form – tregon formën që dizajnohet,
Togle Form/Unit – zëvendëson formë dhe kod,
New Form – formë e re në projekt,
Interpreteri është përkthyes i cili çdo rresht nga kodi burimor e përkthen në
gjuhën e makinës dhe e ekzekuton. Nëse një rresht programor përsëritet më tepër
herë, e njëjta do të analizohet aq herë sa paraqitet dhe do të përkthehet në gjuhën e
makinës gjithashtu aq herë me qëllim që të ekzekutohet. Kjo është arsyeja për të
cilën shfrytëzimi i interpreterit e ngadalëson ekzekutimin e programit. Nga ana
tjetër, interpreteri karakterizohet nga thjeshtësia, për shkak se është e mundur në
moment të zbulohen gabimet eventuale (me debagim) gjatë kohës së ekzekutimit të
programit.
Kompajleri është program i cili çdo urdhër të kodit burimor e analizon dhe
e përkthen në kodin e makinës, e regjistron në datotekë dalëse ekzekutuese. Gjatë
ekzekutimit ekzekutohen instruksionet e përkthyera në kodin e makinës, gjegjësisht
datotekën ekzekutuese. Kjo është arsyeja që programet ekzekutohen më shpejt për
dallim nga kur ekzekutimi shkon përmes interpreterit.
- Pastaj në fushën për emrin e datotekës vendoset emri dhe klikojmë Save.
Kjo datotekë është datotekë e Pascal-it.
end;
end.
Këtë kod programor Delphi e formon automatikisht. Bëhet fjalë për kod në
Pascal. Në emrin e procedurës gjendet e shtuar vetia Name e formës. Në rastin e
parë ajo është Form1, kurse në rastin e dytë Shembulli1.
Edit është komponentë për futjen e tekstit vetën në një rresht. Tekstit të
futur i shoqërohet vetia Text. Me shfrytëzimin e këtij objekti mund të futet ose
lexohet tekst. Nëse në këtë objekt futet numër ai duhet të shndërrohet që të mund të
shfrytëzohet si numër.
Shembulli 4: Të krijohet formë e re në të cilën do të vendosen dy etiketa të
reja, dy kuti Edit dhe dy butona. Vetitë e komponentëve të shfrytëzuar i tregojmë
në tabelën 2.2.
Tekstin që e vendosim në kutinë Edit ruhet në vetinë Text të komponentit.
Ideja e detyrës është që teksti i futur në kutinë e parë ȿdit, të paraqitet në të dytën.
Kodi programor i cili i takon butonit Starto, i ngjarjes klik, është siç vijon:
Shfaq.text:=Fut.text;
Pasi që startohet aplikacioni, duhet të futet emër dhe mbiemër në kutinë
Edit1, dhe pastaj të shtypet në butonin Starto.
KAPITULLI 2
(SHKURT)
Dritarja e sipërfaqes punuese të Delphi-t përbëhet nga katër pjesë edhe atë:
1. Dritarja kryesore (main) që përbëhet nga:
a) shiriti i-emrit;
b) shiriti-meny;
c) shiriti me vegla Toolbars;
d) shiriti me komponentë Component palette.
2. Në anën e majtë të dritares ndodhen:
ɚ) dritarja për tregimin hierarkik të komponentëve të aplikacionit
b) dritare për përcaktimin e vetive dhe ngjarjeve të objekteve në aplikacion -
Object Inspector.
Ai ka dy pjesë:
x Properties (vetitë ose karakteristikat)
x Events (ngjarjet).
3. Pjesa e tretë e hapësirës së Delphi-t është dritare e formularit ose formës
për dizajnimin e aplikacionit ku i vendosim komponentët.
4. Pjesa e katërt e hapësirës së Delphi-t është dritare për shkrimin e kodit
programor. I cili ndodhet pas dizajnuesit të formës.
Opsioni FILE i përmban këto nënopsione:
NEW, NEW APLICATION, NEW FORM, OPEN, OPEN PROJECT, REOPEN
SAVE, SAVE AS, SAVE PROJECT AS, SAVE ALL, CLOSE, CLOSE ALL, PRINT,
EXIT;
Opsioni EDIT i përmban këto nënopsione:
UNDELETE, REDO, CUT, COPY, PASTE, SELECT ALL, ALIGN TO GRID,
BRING TO FRONT, SENT TO BACK, ALIGN, SIZE, SCALE,TAB ORDER, LOCK
CONTROLS;
Opsioni VIEW i përmban këto nënopsione:
PROJECT MANAGER, OBJECT NSPECTOR, ALIGNMENT PALETTE,
UNITS, FORMS, TOOLBARS;
Opsioni PROJECT i përmban këto nënopsione:
ADD TO PROJECT, REMOVE FROM PROJECT, COMPILE PROJECT;
Opsioni RUN i përmban këto nënopsione:
RUN, PROGRAM PAUSE, PROGRAM RESET
Opsioni HELP. Ka komanda për të kërkuar ndihmë.
Interpeteri është përkthyes i cili çdo linjë të kodit burimor e përkthen në gjuhë të
makinës dhe e ekzekuton.
Kompajler është program i cili çdo urdhër nga kodi burimor e analizon dhe e
përkthen në kod të makinës, gjegjësisht, formon program të ekzekutueshëm.
Formulari-forma është komponenti themelore në aplikacionin e Delphi-it.
Vetitë e komponentëve mund të ndërrohen përmes Object Inspector dhe me
shfrytëzimin e kodit programor.
Komponentin e zgjedhur në formular i vendosim me njërën nga mënyrat e
mëposhtme:
- me klik të dyfishtë në komponentë, me çka ajo vendoset në qendër të formës,
- me klikim në komponentë, dhe pastaj me klikim në formë në vendim ku duam ta
sjellim komponentin.
KAPITULLI 3
(shenja & e nënvizon shenjën para së cilës është vendosur dhe lejon butoni të
aktivizohet nga tastiera duke shtypur njëkohësisht butonin Alt+ tastin)
Figura 3.1
Figura 3.2.
Grupi i shenjave
Komentet
Komentet janë shpjegime për lexuesin e programit. Ata përkthyesi i kanë
lënë pas dore. Shkruhen në mes të kllapave të mëdha çifte {i}, ose në mes të
kllapave çifte të përbërë nga dy karaktere (* i *).
Për shembull: {Ky është koment}, (* por edhe ky është koment *).
Identifikuesit
Identifikuesit shërbejnë për shënimin e të gjitha llojeve të elementeve të
programit: variablave, konstantave, llojeve të të dhënave, moduleve, nën
programeve etj. Përbëhen nga shkronja, karaktere, viza e poshtme _, me çka shenja
e pare nuk mund të jetë shifër. Për të kuptuar më lehtë programin, identifikuesit
duhet të jenë emra që do të përshkruajnë objektet që u referohen.
3.3. Të dhënat
Shembull:
Var
Fillimi, Fundi:Integer;
Shenjë: Char;
Diametër, Rreth: Real;
P,Q,R,S,T:Boolean;
Operatorët aritmetik
Ato përdoren për të kryer operacione themelore aritmetike. Për mbledhje +,
shumëzim *, zbritje -. Lloji i rezultatit të këtyre operatorëve është numër i plotë në
qoftë se të dy operantët janë numër i plotë, për ndryshe është real.
Për pjesëtim ekziston operatori /, i cili gjithmonë jep një rezultat të llojit real
dhe operatori div (pjesëtimi i numrave të plotë), në të cilën të dy operantët duhet të
jetë numër i plotë, por edhe rezultati është numër i plotë
Ekziston edhe operatori mod, operantët e të cilit janë numra të plotë, por edhe
rezultati është gjithashtu numër i plotë. Ky operator si rezultat e jep pjesën e mbetur
të pjesëtimit.
Operatorët Relacional
Përdoret për të krahasuar të dhënat numerike dhe llojet e të dhënave për
numërim. Rezultatet e këtyre operatorëve janë True ose False. Këto përfshihen: =,
>, <, <>, <=, > =.
Operatorët Logjik
Operatorët logjik shërbejnë për të kryer operacione logjike mbi të dhënat
logjike dhe japin rezultate logjike. Këtu përfshihen: not, and, or, xor.
Prioriteti i operatorëve
Prioriteti Operatori
Më i lartë not
*,/, div, mod, and
+, -, or, xor
Më i ulët =,<>, <, <=,>, >=
Tabela 3.1.
Shembull:
I: = J + K div L;
A: = S*12.5;
Ndryshorja dhe shprehja duhet të përputhen në lloj.
Figura 3.3.
Tabela e vetive
Objekti Vetia Vlera
Form1 Caption Shebulli1
Label1 Caption Nderimi i ngjyrës së sfondit
Button1 Caption E kuqe
Button2 Caption E kaltër
Button3 Caption E verdhë
Button4 Caption E gjelbër
Button5 Caption Normale
Tabela 3.2.
Zgjidhja:
procedure TForm1.FormClick(Sender: TObject);
var x,y:integer;
begin
x:=random(690);
y:=random(480);
Canvas.Textout(x,y,'PËRSHËNDETJE!');
end;
Ai është nën-objekt i formës dhe shërben për të nxjerrë dhe shkruar tekstin
pas saj. Përfaqëson zëvendësim për urdhrat Read/Write nga Paskali, si edhe disa
urdhra grafik. Metoda TextOut shkruan ndonjë tekst në koordinatat e dhëna.
Detyra 5: Të bëhet aplikacion i ri, e cila do të tregojë dritaren e dytë nëse klikohet
në të parë.
Zgjidhja: Të hapet një aplikacion i ri, të shtohet një formë e re, të programohet
ngjarja klik në Forma1 me urdhrin:
Form2.show.
Forma e re është shtuar me ikonën New form.
Metoda Show e tregon formën e përcaktuar. Aplikacionet të cilat kanë më tepër
dritare, gjatë aktivizimit i inicojnë të gjitha dritaret, por vetëm një është e dukshme
– dritarja fillestare, e cili zakonisht përmban ndërfaqen, kurse dritaret tjera mund të
shfaqet sipas nevojës si përgjigje e ndonjë aksioni të shfrytëzuesit.
Pas njohjes së komponentëve Labela, Edit, Button dhe Timer mund të zgjedhim
probleme me struktura algoritmike lineare të thjeshta. Këto programe kanë vetinë
që çdo komandë të ekzekutohet vetëm një herë gjatë kohës së ekzekutimit të
programit.
Zgjidhje: Duhen dy kuti Edit për të futur numrat dhe një kuti Edit për rezultatin.
Janë të nevojshme tre etiketa dhe dy butona.
Duhet të mendohet për kodin programor të mëposhtëm:
Figura 3.6.
Është e qartë se rezultati nuk është i mirë. Ai është fituar nga unifikimi i
këtyre dy numrave. Programi i trajton numrat e futur si vargjet-string, kurse
operacionin si një unifikim të vargut-stringut (konkatenacion).
Problemi duhet të zgjidhet në kodin programor me vendosjen e duhur të të
dhënave të aplikacionit.
procedure TForm1.Button1Click(Sender: TObject);
Var
a,b,c:real;
begin
a:=StrToFloat(edit1.text);
b:=StrToFloat(edit2.text);
c:=a+b;
edit3.text:=FloatToStr(c);
end;
Detyra 2: Të bëhet program për llogaritjen e shumës, zbritjes, produktit dhe herësit
të dy numrave. Vendosja bëhet përmes dy kutive Edit, gjithashtu edhe rezultati
shfaqet në kutinë e Edit.
Figura 3.7.
Mënyra I:
Procedure TForm1.Button1Click();
Var nr1,nr2,rez:Integer;
Begin
Nr1:=strtoint(edit1.text);
Nr2:=strtoint(edit2.text);
Rez:=nr1+nr2;
Edit3.text:=inttostr(rez);
Label5.caption:=’+’;
End;
Procedure TForm1.Button2Click();
Var nr1,nr2,rez:Integer;
Begin
Nr1:=strtoint(edit1.text);
Nr2:=strtoint(edit2.text);
Rez:=nr1-nr2;
Edit3.text:=inttostr(rez);
Label5.caption:=’-’;
End;
Procedure TForm1.Button3Click();
Var nr1,nr2,rez:Integer;
Begin
Nr1:=strtoint(edit1.text);
Nr2:=strtoint(edit2.text);
Rez:=nr1*nr2;
Edit3.text:=inttostr(rez);
Label5.caption:=’*’;
End;
Procedure TForm1.Button4Click();
Var nr1,nr2,rez:Integer;
Rez:Real;
Begin
Nr1:=strtoint(edit1.text);
Nr2:=strtoint(edit2.text);
Rez:=nr1/*nr2;
Edit3.text:=floattostr(rez);
Label5.caption:=’/’;
End;
Mënyra II:
Për butonat tjerë kodi është shkruar në mënyrë të ngjashme. Për Butonin
"Herësi (/)" duhet të merret parasysh lloji i rezultatit.
Detyra:
3. Të bëhet një program në Delphi për llogaritjen e rezistencës ekuivalente të
rezistorëve të lidhur në seri dhe paralel.
Figura 3.8.
Këto struktura lejojnë kryerjen e kushtëzuar të një ose të asnjë Urdhri nga
grupi i një ose më shumë urdhrave.
Forma e përgjithshme e urdhrit IF ose urdhri për zgjedhjen e dy opsione
If kushti then Urdhri1 else Urdhri2 ose
If kushti then Urdhri1,
ku kushti është një shprehje logjike, Urdhri1 është Urdhri që kryhet në qoftë se
kushti është i plotësuar, kurse Urdhri2 është Urdhri i cili kryhet nëse kushti nuk
është plotësuar.
Shembull: If A> B then C:=A else C: = B;
Forma e përgjithshme e Urdhrit CASE ose Urdhrit për zgjedhje nga më
shumë opsione
Case Shprehja of
VargVlerash: Urdhri;
VargVlerash: Urdhri;
…..
VargVlerash: Urdhri
Else Urdhri;
End;
Figura 9.3.
Kjo kontroll përdoret për të zgjedhur disa vlera kur mund të zgjidhen më
tepër vlera të ndryshme dhe ku asnjëra nuk e përjashton tjetrën. Secila vlerë mund
të zgjidhet ose jo.
Veti:
Checked – Veti e llojit,,krabëz-bullov,, që përcakton nëse Kontrolli është e zgjedhur. Të
mundshme janë dy gjendje True (e zgjedhur) ose False (e pa zgjedhur).
Detyra 1: Të krijohet një formë në të cilën ka Etiketë, kuti Edit, buton për dalje dhe dy
kontrolle Checkbox në të cilin mund të zgjidhen që teksti i futur është bold apo italic.
Figura 10.3.
Figura 3.11.
t1:=form1.Canvas.Pen.Color;
form1.Canvas.Brush.Color:=form1.color;
form1.canvas.pen.color:=form.color;
form1.canvas.Rectangle(200,50,240,100);
form1.Canvas.Brush.Color:=t;
form1.Canvas.Pen.Color:=t1;
end;
end;
Procedure TForm1.CheckBox3Click(Sender: TObject);
var t,t1:tcolor;
begin
if checkbox3.Checked then
begin
form1.canvas.Rectangle(180,60,200,70);
form1.canvas.Rectangle(240,60,260,70);
end
else
begin
t:=form1.Canvas.Brush.Color;
t1:=form1.Canvas.Pen.Color;
form1.Canvas.Brush.Color:=form1.color;
form1.canvas.pen.color:=form.color
form1.canvas.Rectangle(180,60,200,70);
form1.canvas.Rectangle(240,60,260,70);
form1.Canvas.Brush.Color:=t;
form1.Canvas.Pen.Color:=t1;
end;
end;
procedure TForm1.CheckBox4Click(Sender: TObject);
var t,t1:tcolor;
begin
if checkbox4.Checked then
begin
form1.canvas.Rectangle(200,100,210,140);
form1.canvas.Rectangle(230,100,240,140);
end
else
begin
t:=form1.Canvas.Brush.Color;
t1:=form1.Canvas.Pen.Color;
form1.Canvas.Brush.Color:=form1.color;
form1.canvas.pen.color:=form.color
form1.canvas.Rectangle(200,100,210,140);
form1.canvas.Rectangle(230,100,240,140);
form1.Canvas.Brush.Color:=t;
form1.Canvas.Pen.Color:=t1;
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
Figura 3.12.
Detyra 1: Të bëhet një formë në të cilën fjala "Mirdita" ose "Tung" shfaqet në disa
gjuhë. Zgjedhja e gjuhëve është bërë nga komponenti RadioButton. Në formë duhet
të vendoset Kontrolli Edit (me sfond të verdhë dhe shkronja blu) për të shfaqur
përshëndetjen e zgjedhur. Mbi këtë fushë në komponentin Etiketa të shfaqet gjuha e
zgjedhur. Zgjedhja e gjuhëve bëhet nga RadioButton-i, kurse përshëndetja të
shkruhet kur të klikohet butoni komandues me mbishkrimin "Përshëndetje."
Pamja e formës:
Figura 3.13.
Kodi i Programit:
procedure TForm1.Button1Click(Sender: TObject);
begin
if RadioButton1.Checked then
begin
Edit1.Text:= përshëndetje;
Label2.Caption:= 'Maqedonisht';
end;
if RadioButton2.Checked then
begin
Edit1.Text:= 'Hello';
Label2.Caption:= 'Anglisht';
end;
if RadioButton3.Checked then
begin
Edit1.Text:= 'Guten Tag';
Label2.Caption:= 'Gjermanisht';
end;
if RadioButton4.Checked then
begin
Edit1.Text:= 'Bonjour';
Label2.Caption:= 'Frengjisht';
end;
if RadioButton5.Checked then
begin
Edit1.Text:= 'Aloha';
Label2.Caption:= 'Kroatisht';
end;
if RadioButton6.Checked then
begin
Edit1.Text:= 'Përshëndetje';
Label2.Caption:= 'Shqip';
end;
end;
Figura 3.14
Figura 3.15.
Figura 3.16.
5:Begin
edit1.text:='Në formën: -2i,i,3i,...';
Label1.caption:='Imagjinar';
end;
6:Begin
edit1.text:='Në formë a+bi, a-bi';
Label1.caption:='Kompleks';
end;
end; {fundi i Urdhrit Case}
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
application.terminate;
end;
end.
Figura 3.17.
Val (edit1.text,numër,code)
Figura 3.18.
Figura 3.19
0:begin
edit1.setfocus;
edit1.selectall;
end;
1:begin
edit2.setfocus;
edit2.selectall;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
n:real;
gr:integer;
begin
case radiogroup1.itemindex of
0:begin
s:=edit1.text;
val(s,n,gr);
if gr<>0 then
begin
ShowMessage('Nuk janë futur mirë Faradët');
edit1.setfocus;
edit1.SelectAll;
end
else
edit2.text:=floattostr((5/9)*(strtofloat(edit1.text)-32));
end;
1:begin
s:=edit2.text;
val(s,n,gr);
if gr<>0 then
begin
ShowMessage('Nuk janë futur mirë Celsiuzët');
edit2.setfocus;
edit2.SelectAll;
end
else
edit1.text:=floattostr(1.8*(strtofloat(edit2.text))+32);
end;
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
radiogroup1.itemindex:=0 {Kushtet fillestare}
end;
end.
Detyra 4: Të bëhet një program për konvertimin e valutave (Euro – denarë dhe
anasjelltas).
Paraqet një dritare normale Windows-i për listë. Lista përmban një
listë mundësish që mund t’i zgjedh përdoruesi. Nëse lista përmban më shumë
opsione se sa mund të shfaqen, në kuadrin e listës shfaqen shiritat me ashensor. Kjo
komponentë lejon shfaqjen e përmbajtjes në më shumë kolona duke vendosur
vetinë Columns në numrin e dëshiruar të kolonave. Kur kjo kontroll është në
fokus, përdoruesi shtyp ndonjë shkronjë në tastierë dhe opsioni i parë që fillon me
këtë shkronjë bëhet aktual. Ky funksion lejon gjetjen e shpejtë të mundësive të
kërkuara.
ListBox përdoret më shpesh kur të dhënat që duhet të paraqiten paraqesin
një listë, për shembull, emrat e shumë njerëzve ose disa tituj. Përdoruesi mund të
zgjedh opsione të ndara nga një listë që automatikisht regjistrohet si veti adekuate.
Pastaj vlera e vetisë mund të përdoret në programin për marrjen e vendimeve të
caktuara. Komponenti ListBox është e vendosur në fletën me komponentë
standarde.
Detyra 1: Në formular të vendosen tre etiketa, një ListBox dhe një buton.
Etiketa e tretë ka vetitë e mëposhtme: AutoSize = False; WordWrap = True;
Caption =' '
Vetia e parë largon rregullimin automatik të përshkrimit të etiketës përkundër
madhësisë së tekstit. Funksion i dytë lejon paraqitjen e tekstit në më tepër linja.
Prandaj, madhësinë e etiketës duhet të përcaktojmë me dorë.
Figura 3.20.
6: Begin
Label3.caption:= 'Viti i tretë 3 orë'+#13+
'Viti i katërt 3 orë'+#13+
‘Gjithsej 6 orë'
end;
7: Begin
Label3.caption:= 'Viti i tretë 3 orë'+#13+
'Viti i katërt 3 orë'+#13+
‘Gjithsej 6 orë'
end;
8: Begin
Label3.caption:= 'Viti i tretë 3 orë'+#13+
'Viti i tretë 3 orë'+#13+
'Viti i katërt 3 orë'+#13+
‘Gjithsej 9 orë'
end;
9: Begin
Label3.caption:= 'Viti i tretë 3 orë'+#13+
'Viti i katërt 3 orë'+#13+
‘Gjithsej 6 orë'
end;
10:Begin
Label3.caption:= 'Viti i dytë 4 orë'+#13+
'Viti i tretë 3 orë'+#13+
'Viti i katërt 3 orë'+#13+
‘Gjithsej 10 orë'
end;
end;
end;
end.
Në kodin e programit vërehen disa pjesë të stringut që nuk janë përdorur deri
tani: # 13. Kjo është shfaqje e imponuar e tekstit në etiketë, pas kësaj shenje teksti
të vazhdojë në rresht të ri. Numri 13 është KOD ASCII i shenjës për kalim në rresht
të ri. Përndryshe, kalimi në një resht të ri realizohet duke shtypur në tastierë Enter,
me të cilën gjenerohet saktësisht kodi komandues numër 13. Pastaj vërehet se
stringjet e gjata shndërrohen në më të shkurtër, pastaj me ndihmën e operatorit #
(thurje-konkavitetit) shfaqen në kuadrin e një komande.
Figura 3.21.
Figura 3.22.
Edit1.Text:=IntToHex(StrToInt(ListBox1.Items[i]),2);
end;
end.
Në procedurën ListBoxClick (që thirret duke klikuar në ndonjë numër në
listë) përcaktojmë numrin rendor të numrit të përzgjedhur (i:=
ListBox1.ItemIndex;), dhe pastaj e paraqesim prezantimin e tij heksadecimal në
fushën Edit1. Për këtë arsye përdorim funksionin IntToHex i cili transformon
numrin decimal në heksadecimal, si dhe funksioni StrToInt i cili numrin e zgjedhur
nga ListBox (i cili është i tipit String) e shndërron në një numër decimal. Numri 2
në funksion na tregon se numri heksadecimal do të përmbajë minimum 2 shifra.
Figura 3.23.
Figura 3.24.
i:=0; b:=0;
if length(Emri.text)>1 then inc(i);
if length(Mbiemri.text)>1 then inc(i);
if length(Qyteti.text)>1 then inc(i);
val(IParë.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i);end;
val(IDytë.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i);end;
val(ITretë.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i);end;
val(IKatër.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i);end;
val(IPestë.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i);end;
val(IGjashtë.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i);end;
val(IShtatë.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i);end;
val(ITetë.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i);end;
val(INëntë.Text,a,j);
if (j=0) and ((a>1) and (a<6)) then begin b:=b+a;inc(i);end;
val(IDhjetë.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:4:2,s);
if (i=13) and (Suksesi.checked=true) then
Label14.caption:='Suskesi mesatar i nxënësit është:'+s
else Label14.caption:='Nuk janë regjistrime të sakta-Verifikoi!'
end;
end.
3.9.2.Paneli
Përgatitja e formës
Shtojmë një formë të re. Në të vendosim Label1 me mbishkrimin "Rezultatet e
lojës janë:", Label2 do të tregojë pikët përfundimtare dhe Button1 me mbishkrimin
"Fundi i lojës".
Figura 3.25.
Figura 3.26.
Programimi i ngjarjeve
Në Form1 ndryshojmë ngjarjen Button1Click.
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.interval:=0; {ndalja e tajmerit dhe me të edhe heqja e
pikëve}
form1.visible:=false; {fshihet forma e parë}
form2.show; {shfaqet forma e dytë}
end;
var
Form1: TForm1;
sx,sy:integer;
score:integer;
implementation
uses unit2; {shfrytëzohet unit2, njësoj veprohet në Unit2 për
Unit1}
{$R *.DFM}
Label2.caption:=form1.label2.caption;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
sx:=3;
sy:=3;
score:=5000;
end;
procedure TForm1.FormClick(Sender: TObject);
begin
score:=score-1;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
button1.left:=button1.left+sx;
button1.top:=button1.top+sy;
if (button1.left<0) or
((button1.left+button1.width+10)>form1.Width) then
sx:=-sx;
if (button1.top<0) or
((button1.top+button1.height+10)>form1.height) then
sy:=-sy;
score:=score-1;
Label2.caption:=inttostr(score);
end;
….
UrdhriN;
End;
Fjalët WHILE dhe DO janë fjalë të rezervuara. Kushti është një shprehje që
llogaritet para çdo ekzekutimi të komandës ose bllokut të komandave. Vlera e
kushtit mund të jetë e true apo false. Nëse është true ekzekutohen komandat pas
DO, por nëse është false nuk ekzekutohen komandat por ato do kapërcehen.
Shembull:
While N<=10 do
Begin
Write(N:3);
N:=N+1;
End;
Shembull:
K:=0;
Repeat
K:=K+1;
S:=S+k;
Until K>10;
Shembulli 1:
For I:=1 to 5 do
Writeln(I);
Shembulli2:
For Shkronja:=‘A’ to ‘Z’ do
Write(Shkronja);
x Ndryshorja (në shembujt I dhe Shkronja) paraqet numërues të cikleve dhe
kjo duhet të jetë e tipit linear të rregulluar, dhe nuk duhet të jetë një
ndryshore reale.
x Vlera e fillimit dhe vlera përfundimtare e ndryshores mund të jenë konstantë
ose shprehje, por duhet të jetë e llojit të njëjtë me të.
x Këto vlera nuk duhet të ndryshohen në Urdhrin pas fjalës së rezervuar DO.
x Ndryshores automatikisht i caktohet vlera e ardhshme për ciklin e ardhshëm,
në të cilin ekzekutohet Urdhri.
x Nëse ka më shumë urdhra pas DO, atëherë ata vendosen në bllok mes Begin
dhe End.
Shembull:
For ndryshore:=vlera fillestare to vlera përfundimtare do
Begin
Urdhri;
…
Urdhri;
End;
Figura 3.27.
Veti:
Lines (rreshtat) i llojit Tstrings është veti kryesore e cila përmban tekstin në
komponentin Memo,
Allignement – Rrafshimi në skajin e majtë, djathtas apo në qendër,
Counts - përmban numrin e përgjithshëm të linjave të tekstit të shkruar,
Scrollbars (Rrëshqitësi) - Përcakton se cilët rrëshqitës ekzistojnë (horizontal,
vertikal apo të dy),
Names – veti që na lejon vendosjen dhe leximin e emrave të stringjeve. Çdo string-
varg arrihen duke përdorur indeksin e tij - numri rendor. I pari është me indeks 0, i
dyti me indeks 1 dhe kështu me radhë.
Names[Index:Integer]:String;
Tekst –i gjithë teksti nga rreshtat së bashku,
Values – mer ose vendos vlerë të stringut në varg,
Function Add(const:string):Integer; - Shton string në fund të listës,
Figura 3.28
var
Form1: TForm1;
a:array[1..30] of integer;
implementation
{$R *.DFM}
Metoda II:
procedure TForm1.Button1Click(Sender: TObject);
var
max,i,j,n,gr:integer;
s:string;
a:array[1..30] of integer;
begin
max:=0;
for i:=1 to 10 do
a[ i ]:=0;
for i:=0 to 9 do
begin
s:=memo1.lines[ i ];
val(s,n,gr);
j:=i+1;
if gr=0 then a[ j ]:=strtoint(memo1.lines[ i ]);
end;
max:=a [ 1 ];
for i:=1 to 10 do
if a[ i ] > max then max:=a[ i ];
edit1.text:= inttostr(max);
end;
Figura 3.29.
…
var
Form1: TForm1;
a:array[1..30] of integer; {globalna varijabla}
implementation
{$R *.DFM}
Figura 3.30.
Tabela I
Numri i paraqitjes së shkronjës a
Numri i paraqitjes së shkronjës i
Numri i zanoreve
Numri total i shkronjave
PROGRAMI:
program Prog1;
uses
. var
Form1: TForm1;
br:integer;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
recen:string;
begin
If RadioButton1.Checked Then
Begin
For i:=0 To Memo1.Lines.Count-1 Do
Begin
recen:=Memo1.Lines[i];
For j:=1 To Length(recen) Do
If (recen[j]='a') or (recen[j]='A') Then Nr:=Nr+1;
End;
edit1.text:=inttostr(br);
Nr:=0;
End;
If RadioButton2.Checked Then
Begin
For i:=0 To Memo1.Lines.Count-1 Do
Begin
recen:=Memo1.Lines[i];
For j:=1 To Length(recen) Do
If (recen[j]='i') or (recen[j]='I') Then Nr:=Nr+1;
End;
edit1.text:=inttostr(br);
Nr:=0;
End;
If RadioButton3.Checked Then
Begin
For i:=0 To Memo1.Lines.Count-1 Do
Begin
recen:=Memo1.Lines[i];
For j:=1 To Length(recen) Do
If (recen[j]='a') or (recen[j]='A')or (recen[j]='i') or
(recen[j]='I') or (recen[j]='e') or (recen[j]='E')or (recen[j]='o')
or (recen[j]='O')or (recen[j]='u') or (recen[j]='U')
Then Nr:=Nr+1;
End;
edit1.text:=inttostr(br);
Nr:=0;
End;
If RadioButton4.Checked Then
Begin
For i:=0 To Memo1.Lines.Count-1 Do
Begin
recen:=Memo1.Lines[i];
For j:=1 To Length(recen) Do
If ((65<=ord(recen[j]))and (ord(recen[j])<90)) or
((97<=ord(recen[j]))and (ord(recen[j])<122)) Then
Nr:=Nr+1;
End;
edit1.text:=inttostr(br);
Nr:=0;
End;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
Nr:=0;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.SaveToFile('Ushtrimi1.txt');
end;
end.
Figura 3.31.
Procedure Tform1.Button1Click();
Var
I,j,n:Integer;
S,t:String;
Begin
Tabela.Cells[0,0]:=’Shumëzimi’;
For i:=1 to 9 do
Begin
Str(i,s);
Tabela.Cells[0,i]:=s;
Tabela.Cells[i,0]:=s;
End;
For i:=1 to 9 do
For j:=1 to 9 do
Begin
N:=i*j;
Str(n,t);
Tabela.cells[i,j]:=t;
End;
End;
End.
Figura 3.32.
Figura 3.33.
Figura 3.34.
Figura 3.35.
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
application.terminate;
end;
Figura 3.36.
Figura 3.37.
Figura 3.38.
Figura 3.39.
Figura 3:40.
Figura 3.41.
Figura 3.42.
procedure TForm1.FotografiClick(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
begin
fotografi.displayrect:=panel1.clientrect;
end;
KAPITULLI 3
(SHKURT)
x Mënyra I
o Selektohet butoni
o Nga kartela ngjarje (events->Oobject Inspector) zgjidhet ngjarja
OnClick
o Me klik të dyfishtë në fushën djathtas nga ngjarja e zgjedhur, hapet
procedura në të cilën e shkruajmë kodin e programit.
x Mënyra II
o Double-click në butonin komandues Shfaq. Në dritaren e kodit
automatikisht gjenerohet emrin i procedurës dhe emri i objektit, në të cilin
është aktiv ngjarja që do të shkaktoj veprimin e dhënë.
Elemente të gjuhës:
Një grup shenjash, komente, identifikues, fjalë zyrtare dhe direktiva
standarde
Të dhëna:
Numra të plotë, realë, logjik, shenja, konstanta, variabla,...
Strukturat e degëzuara:
Forma e përgjithshme e Urdhrit IF ose për zgjedhje nga dy opsione
Forma e përgjithshme e Urdhrit CASE ose Urdhrit për zgjedhje nga më shumë
opsione Komponentë për zgjedhje:
Kontrolli CheckBox. Kontrolli TCheckBox gjendet në faqen Standard.
Përdoret gjatë zgjidhjes së detyrave, kur është e nevojshme përfshirja apo
përjashtimi i një apo më shumë opsioneve.
Kontrolli RadioButton. Kontrolli RadioButton përdoret për të zgjedhur një
nga disa opsionet e mundshme.
Kontrolli Radiogroup. Radio butonat mund të vendosen në një kuti të
veçantë - RadioGroup. Qëllimi i ekzistencës së RadioGroup është që të
thjeshtësohet grupimi i radio butonave në një vend.
Komponenti ListBox. Paraqet një dritare liste normale në Windows. Lista
përmban një listë mundësish të cilat përdoruesi mund t’i zgjedh.
Komponenti ComboBox. ComboBox është një komponent që kombinon
mundësitë për futjen e tekstit në kutinë Edit dhe zgjedhjen e njërës prej mundësive
të ofruara në ListBox. Komponentët kontejnerë
Komponenti GroupBox. Kjo komponentë nuk ka ndonjë kuptim të veçantë
të pavarur nga komponentët tjerë. Rëndësia e saj është të jetë një kontejner (kuti)
për një grup të komponentëve që janë vendosur atje.
Panel
Bevel (korniza)
Module programesh
Strukturat ciklike
WHILE-DO Urdhri
REPEAT UNTIL Urdhri
FOR Urdhri
FOR-TO-DO (Zmadho deri në)
FOR-DOWNTO-DO (Zvogëlo deri në)
1. Cila ngjarje ndodh nëse klikoni në formën e aplikacionit, dhe cili nëse klikoni
mbi butonin?
2. Në cilat dy mënyra mund të hapet rregullatori i ngjarjeve për ta shkruar kodin e
programit për butonin komandues Button1?
3. Shpjegoni funksionet:
-IntToStr
-StrToFloat.
-StrToInt
-FloatTo Str
4. Cila procedurë do të hapet, nëse shtypni butonin Button1 në formën Form1?
5. Çfarë arrihet me Urdhrin për ndarjen e vlerës?
6. Për të lehtësuar përfshirjen apo përjashtimin e një ose më shumë opsioneve,
përdoret
kontrolla___________________________________________________________
_____
7. Çfarë është Kontrolli Checkbox dhe kur përdoret?
Shkruani një komandë me të cilën do të verifikohet nëse është klikuar në këtë
kontrollë dhe nëse po, të shtypet në Label1 që është e klikuar, dhe nëse nuk
është klikuar, të shtypet në Label1 që nuk është klikuar.
8. Shpjegoni rreshtat e programit:
-StringGrid1.Row:=ComboBox1.itemindex+1;
-Edit1.SetFocus;
-StringGrid1.Cells[0,1]:='1.';
9. Çfarë është Kontrolli RadioButton dhe kur përdoret?
Shkruani një komandë me të cilën do të verifikohet a është klikuar në këtë
kontrollë dhe nëse po, të shty në Label2 që është klikuar, dhe nëse nuk është
klikuar, të shtypet në Label2 që nuk është klikuar.
10. Shpjegoje vetitë:
-Items
-ItemIndex
11. Cila nga këto opsione është pjesë e hapësirës punuese të Delphi-t?
A) Object Projector,
B) Object Inspector,
C) Object Detector.
12. Në cilat mënyra mund të futet teksti në komponentin Memo?
13. A mundet të nderohet çdoherë teksti i futur në komponentin Memo?
14. Si sillet komponenti Memo gjatë futjes së tekstit nëse vetia WordWrap është
vendosur në False?
15. Cila komponentë Delphi lejon shfaqjen e të dhënave në më shumë rreshta dhe
kolona?
16. Cilat objekte shfaqen me komponentin StringGrid?
17. Cili numër tregon indeksin e elementit të parë në një varg 0 apo 1?
18. Në kolonën e tretë, e cila është bosh, shkruaj shkronjën (a, b, c) e cila ndodhet
para Urdhrit për struktura ciklike e është shkruar në anën e majtë, dhe e cila është
shpjeguar me disa nga propozimet në anën e djathtë.
19. Në kolonën e tretë, e cila është bosh, shkruaj shkronjat (a, b, c, d), e cila
ndodhet para propozimit që është shkruar në anën e majtë, dhe që është shpjeguar
me disa nga propozimet në anën e djathtë.
Ⱥ) Properties Ngjarje
B) Events Veti
C) Tools Paletë e komponentëve
D) Component Shirit me vegla
palettɟ
Detyra
KAPITULLI 4
4.1. ShowMessage
Figura 4.1.
4.2. MessageDlg
Figura 4.2
Në rreshtin për titull paraqitet fjala Information. Përveç saj, në rreshtin për
përshkrim mund të paraqiten fjalët e mëposhtme: Warning (shenjë paralajmëruese e
verdhë), Error (ikonë e kuqe me shenjë ndal), Confirmation (pyetësor), Custom
(nuk përmban ikonë).
Figura 4.3.
Figura 4.4.
Figura 4.5.
Figura 4.6.
Figura 4.7.
4.3. Messagedlgpos
Figura 4.8.
Figura 4.9.
Figura 4.10.
SaveDialog1.Execute;
Figura 4.11.
ColorDialog1.Execute;
Figura 4.12.
KAPITULLI 4
(SHKURT)
Dritarja-dialog përdoret për shfaqjen e mesazheve të caktuara gjatë
ekzekutimit të aplikacionit.
Përdoren këto lloje të dritareve-dialog:
- ShowMessage
Ajo përdoret për të shfaqur mesazhe të caktuara gjatë ekzekutimit të
aplikacioneve. Shfaqja e dritares-dialog ndalon ekzekutimin e programit deri në
mbylljen e tij, duke klikuar butonin OK.
- MessageDlg
Kjo dritare-dialog i ngjan të mëparshmes, me atë që përshkrimi në titullin i
takon një grupi të veçantë të përshkrimeve të Windows-it.
Në rreshtin për titull paraqitet fjala Information. Përveç tij, në rreshtin e
përshkrimit mund të paraqiten fjalët e mëposhtme: Warning (shenjë paralajmëruese
e verdhë), Error (ikonë e kuqe me shenjë ndal), Confirmation (pyetësor), Custom
(nuk përmban ikonë).
- Messagedlgpos
Tregon dritaren-dialog me mesazh në ekran në koordinata të caktuara.
Komponentët DIALOGS
OpenDialog lejon përdoruesin të zgjedh datotekën në disk nga ku do të
lexoj.
SaveDialog paraqet dritare-dialogu standarde të Windows-it.
Komanda që aktivizon këtë dritare-dialog është si më poshtë:
SaveDialog1.Execute;
ColorDialog ofron një mënyrë standarde për të zgjedhur ngjyra.
Komanda që aktivizon këtë dritare-dialog është si vijon:
ColorDialog1.Execute;
KAPITULLI 5
5.1. MainMenu
Procedure TForm1.MenuKohaClick(Sender:Tobject);
Begin
Label1.caption:=TimeToStr(time);
End;
Procedure TForm1.MenuDataClick(Sender:Tobject);
Begin
Label1.caption:=DateToStr(Date);
End;
Procedure TForm1.E kuqe1Click();
Begin
Label1.color:=clred;
E kuqe1.enabled:=False;
E gjelbër1.enabled:=True;
E kaltër1.enabled:=True;
End;
Procedure TForm1.E gjelbër1Click();
Begin
Label1.color:=clgreen;
E kuqe1.enabled:=True;
E gjelbër1.enabled:=False;
E kaltër1.enabled:=True;
End;
Procedure TForm1.E
kaltër11Click();
Begin
Label1.color:=clblue;
E kuqe1.enabled:=True;
E gjelbër1.enabled:=True;
E kaltër1.enabled:=False;
End;
Figura 5.1.
Figura 5.1.
Figura 5.2.
Figura 5.3.
begin
memo1.selectAll;
end;
end.
Figura 5.4.
5.2. PopupMenu
Rregullimi
Figura 5.5.
Figura 5.6.
Figura 5.7.
KAPITULLI 5
(SHKURT)
Ushtrime
.
Figura 5.9.
Figura 5.10.
Pjesa kryesore e kodit të programit është si më poshtë:
KAPITULLI 6
6.1. Nën-programet
TitulliINënprogrami
Blloku
;
Mënyra I:
Function Shuma (N:Integer):Integer;
Var
I: Integer;
Begin
Result:=0;
For I:=1 to N do Result:=Result+I;
End;
Çdo funksion në gjuhën Object Pascal ka një ndryshore lokale me emrin
Rezult. Kjo variabël fshehurazi deklaron përkthyes, kurse përdoret për të ruajtur
vlerën të cilën e kthen funksioni. Ndryshores Rezult i ndahet një vlerë në kuadër të
funksionit.
Mënyra II.
Function Shuma (N:Integer):Integer;
Var
I: Integer;
Begin
Shuma:=0;
For I:=1 to N do
Shuma:=Shuma+I;
End;
Vlerën që e rikthen funksioni i jepet ndryshores Shuma. Në trupin e
funksionit duhet të ekzistojë urdhër për dhënien e vlerës emrit të funksionit.
Kjo kontrollë përdoret për të futur ndonjë vlerë numerike mes vlerave
numerike të përcaktuara. Mund të vendoset horizontalisht ose vertikalisht.
Veti:
Kind - tregon se çfarë lloji është rrëshqitësi (horizontal ose vertikal);
Min, Max (Integer) - përcakton vlerat kufitare të cilat mund të paraqiten me
rrëshqitësin;
Position (integer) - përcakton pozitën momentale të rrëshqitësit
Ngjarje:
On Scroll - ndodh kur lëviz rrëshqitësi në ScrollBar.
Figura 6.1.
implementation
{$R *.dfm}
function fact (n:integer):longint;
begin
if n=0 then fact:=1
else fact:=n*fact(n-1);
end;
Procedure TForm1.ScrollBar1Change(Sender:TObject );
Begin
Edit1.text:=IntToStr(fact(ScrollBar1.position));
Label1.Caption:=IntToStr(ScrollBar1.position)+'!=';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
application.terminate;
end;
end.
Shembull 6: Të bëhet një program për konvertim EURO – DEN me ndihmën e
komponentit ScrolBar.
End;
End;
Procedure TForm1.Button1Click(Sender: TObject);
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
If radiobutton1.checked then o:='+';
If radiobutton2.checked then o:='-';
If radiobutton3.checked then o:='*';
If radiobutton4.checked then o:='/';
Operacion(A,B,o,C); {thirrja e procedurës Operacion}
edit4.text:=floattostr(c);
end;
end.
var
i,j,n,gr,min:integer;
s:string;
Fusha:vargu;
nr:byte;
begin
for i:=0 to 9 do
begin
s:=memo1.lines[i];
val(s,n,gr);
j:=i+1;
if gr=0 then a[j]:=strtoint(memo1.lines[i]);
end;
Mëivogël(fusha,10,min,nr); {thirrja e procedurës}
edit1.text:=Inttostr(min);
end;
procedure TForm1.FormActivate(Sender: TObject);
Var i:integer;
begin
for i:=1 to 10 do
a[i]:=0;
end;
end.
Shembull 10: Të bëhet një procedurë që do të formojë dy stringje, njëri vetëm nga
zanoret, kurse tjetri nga bashkëtingëlloret e stringut të dhënë.
Procedure Shkronja(s:string; var zanor, bashkt:string);
var
dol,i:byte;
shkronja, zanor, bashkt:set Of char;
begin
dol:=length(s);
shkronja:=['a'..'z','A'..'Z'];
zanor:=['a','e','i','o','u','A','E','I','O','U'];
bashkt:=shkronja-zanor;
zan:=' ';
bash:=' ';
for i:=1 to dol do
begin
if s[i] in zanor
then
zan:=zan+s[i];
if s[i] in bashkt
then
bash:=bash+s[i];
end;
end;
Figura 2.6
KAPITULLI 6
(SHKURT)
Nënprogramet janë mekanizma për transformimin e strukturave programore
komplekse në pjesë më të vogla logjike. Përpunimet komplekse arrihen me
kombinimin e këtyre nënprogrameve.
Funksionet janë nënprograme të cilat mbi bazën e argumenteve të tyre japin
një rezultat. Rezultati i tillë quhet vlerë e funksionit.
Procedurat janë nënprograme, të cilat në bazë të argumenteve të tyre mund
të japin më tepër rezultate. Këto rezultate janë gjithashtu edhe argumente të
procedurës.
Argumentet në titullin e nënprogramit quhen argumente formale, të cilat
gjatë thirrjes së nënprogramit do të zëvendësohen me argumentet e duhura të
vërteta.
Nënprogramet thirren përmes emrit të tyre në programin kryesor. Prapa
emrit të nënprogramit jepen argumentet e vërteta. Argumentet e vërteta në numër
dhe lloj duhet të përputhen me argumentet formale.
Ka nënprograme që e thirrin vetveten dhe quhen nënprogrme rekursive.
KAPITULLI 7
BAZAT E TË DHËNAVE
Në këtë kapitull nxënësit do të njihen dhe fitojnë njohuri themelore në fushat e
mëposhtme:
- definimi i fushës, regjistrimit (record), tabelës, baza e të dhënave;
- dallimi në mes të bazës së të dhënave me më tepër tabela në datoteka të ndryshme
dhe bazës së të dhënave me më tepër tabela në një datotekë;
- baza e të dhënave në server;
- arkitektura e bazës së të dhënave në DELPHI;
- komponentët e kartelës DATA ACCESS;
- komponentët e kartelës DATA CONTROLS;
- lidhja mes komponentëve të dy kartelave DATA ACCESS dhe DATA
CONTROLS;
- aplikimi i metodave për të shfaqur gjendjen e DataSet;
- aplikimi i metodave për të lëvizur nëpër DataSet;
- përdorimi i komponentit TABLE;
- kërkimi i tabelës;
- përpunimi i bazës së shkurtës të të dhënave në ACCESS;
- përpunimi i ndërfaqes-interface për një bazë të caktuar të të dhënave.
Tabela 7.1.
Tabela 7.2.
Për shembull, në tabelën 7.1. të dhënat kanë të bëjnë me individët, pra entitet
është një person. Në tabelën 7.2., entitet është filmi. Fusha përfaqëson një
karakteristikë të entitetit dhe quhet atribut.
Para se të bëhet baza, duhet të bëhet një analizë e shërbimeve që do të
ofrohen nga sistemi që do të menaxhojë bazën e të dhënave. Duhet të arrihet deri te
të dhënat që do të futen në bazën e të dhënave dhe sistemi për menaxhim me të
dhëna të na mundësojë zgjerimin dhe ndryshimin e tyre.
Baza përbëhet nga disa tabela, mes të cilave janë vendosur relacione të
caktuara. Baza e tillë është quajtur një bazë e të dhënave relacionare.
Në bazë do të figurojnë 2 entitete edhe atë: filma dhe klientë. Prandaj, së
pari duhet të definohen atributet e tyre.
Tek klientët, atribute janë: emri, mbiemri, telefon, e-maili, karta e identitetit
etj.
Te filmat, atribute janë: titulli, zhanri, roli kryesor, formati, viti, gjuha dhe
çmimi.
Menjëherë mund të përcaktohet lloji i fushës dhe tekstuale janë: emri,
mbiemri, adresa, telefoni, e-mail, titulli, zhanri, roli kryesor, formati, gjuha, karta e
identitetit, ndërkohë që numerike janë viti dhe çmimi.
Mund të ndodhë që disa të dhëna në fusha të jenë të njëjta. Që të mos vijë
deri te gabimet e padëshiruara në tabelë shtohet edhe një kolonë me numër
identifikimi. Numrat e identifikimit gjenerohen automatikisht dhe nuk mund të vijë
në caktimin e të njëjtit numër për regjistrime të ndryshme.
Tjetër çka duhet të bëjmë është të lidhim këto dy tabela që të punojë
videotekata/dvdtekata. Puna e saj përfshin huazimin e një filmi një personi - klienti.
Gjatë çdo huazimi duhet të shkruhet klienti, filmi dhe data e huazimit. Gjithashtu,
gjatë kthimit të filmit, ju duhet të shkruani datën e kthimit dhe çmimin që paguhet.
Prandaj është e domosdoshme të krijojmë një tabelë me fusha të cilat do të
përmbajnë këto të dhëna.
Në çdo tabelë duhet të ketë së paku një fushë që do të jenë unike për çdo
regjistrim, gjegjësisht përmbajtja e kësaj fushe nuk do të përsëritet në asnjë
regjistrim. Këto zakonisht janë numra identifikues (të dhëna numerike) apo ndonjë
fushë tjetër vlera e të cilës nuk përsëritet (numri i amzës). Fusha e tillë është quajtur
çelës primar i tabelës.
Çelësi primar siguron që të gjitha regjistrimet nga një tabelë të jenë të
lidhura me regjistrimet nga një tabelë tjetër.
Për lidhjen e tabelave ekzistojnë llojet e mëposhtme të relacioneve:
një në një (One-to-One)(1: 1) – ky është relacioni i përdorur më shpesh. Në
të një rreshti nga tabela e parë mund t’i shoqërohen më tepër rreshta nga tabela e
dytë, por një rreshti nga tabela e dytë mund t’i shoqërohet vetëm një rresht nga
tabela e parë. Një klient mund të bëjë më tepër huazime. E njëjta vlen edhe për
filmat - një film mund të huazohet disa herë.
më tepër në më tepër (n:n) – në këtë relacion një rreshti nga tabela e parë
mund t’i shoqërohen më tepër rreshta të caktuar nga tabela e dytë dhe anasjelltas.
Për shembull,, le të kemi tabelë me klasë dhe profesorë. Pasi që në shumë klasë
ligjërojnë të njëjtit profesorë, shumë regjistrime në tabelën me klasë do të
përmbajnë të njëjtit profesor. Gjithashtu, pasi që një profesor ligjëron në më tepër
klasë, shumë regjistrime në tabelën me profesorë do të përmbajë të njëjtën klasë.
Në shembullin e Dvdtekës, tabelat janë të lidhura përmes fushave
ekuivalente, pra fusha që përmbajnë lloj të njëjtë të të dhënave. Fushat nuk është e
thënë të kenë emra të njëjtë. Zakonisht, lidhja vendoset në mes fushës, e cila është
çelësi primar në njërën tabelë (primare), me fushën nga tabela tjetër (sekondare), e
cili korrespondon me atë të tabelës së parë.
Ky është një atribut, që është i njëjtë me vlerën e çelësit primar nga një tjetër
tabelë. Me ndihmën e tij lidhen tabelat njëra me tjetrën.
Relacionet paraqesin një lidhje në mes të tabelave. Në shumicën e rasteve
lidhen, çelësi primar nga një tabelë me çelësin e jashtëm nga tabela tjetër.
Planifikimi i tabelave
Shikuar teknikisht, duhet vetëm një tabelë për funksionimin e bazës së të dhënave.
Gabim i madh është vendosja e shumë informacion në një tabelë. Në bazat
relacionare të të dhënave mund të punohet me më shumë tabela dhe të vendosen
relacione mes tyre.
Tabela 7.a.
Nëse konsumatori ka ndryshuar adresën, atëherë ajo do të duhet të
ndryshojë në të gjitha transaksionet.
Mënyrë më e mirë është që çdo konsumatori t’i caktojmë numër identifikimi
(ID) - Shifër. Ai do të përfshihet në tabelën konsumatorët, në të cilën do të jenë
emri, adresa dhe numri i telefonit të konsumatorit. Në tabelën për transaksionet, do
të përfshihej gjithashtu numri ID - i konsumatorit si një ndërlidhje me tabelën e
parë, dhe do të përmblidheshin informacionet për transaksionet.
Gabimi i dytë i madh është përpjekja për të krijuar tabelë të veçantë për
secilin raport. Në këtë rast, të dhënat përsëriten në më shumë tabela. Kjo është e
panevojshme, sepse edhe në raportet mund të përfshihen informacione nga më
shumë tabela. Kjo do të thotë se është e mjaftueshme që informacioni të ekzistojnë
vetëm në një tabelë.
Shembulli 2: Në një organizatë duhet të rruhen informacionet për atë se
cilët punëtor kanë kryer kurse të veçanta.
Zgjidhja me një tabelë është si vijon:
Tabela 7.ç.
BDE
Baza e të dhënave
Figura 7.1.
Për qasje korrekte në bazën e të dhënave BDE përdorur alias (alias). Ajo
është një grup i parametrave që përshkruajnë mënyrën e lidhjes me bazën e të
dhënave. Alias i tregon BDE, cilin drajver të përdor dhe ku gjinden në disk
datotekat me bazën e të dhënave.
Numri më i madh i komponentëve për punë me bazën e të dhënave gjinden
në faqet BDE, Data Access dhe DataControl. Komponetet për punë me bazën e të
dhënave mund të ndahet në jo vizuale dhe vizuale. Komponentët jo vizuale sigurojë
qasje në bazën e të dhënave, pra në të dhënat në bazën e të dhënave. Komponentët
vizuale lejojë veprim me të dhënat (pamje, ndryshim...). Komponenti jo vizuale më
shpesh e përdorur është Table. Komponentët vizuale të përdorura më shpesh janë
DBEdit, DBListBox, DBGrid, DBNavigator dhe të tjerë. Për komunikimin e
komponentëve jo vizuale dhe vizuale shfrytëzohet komponenti jo vizuale
DataSource.
Komponentet
vizuale
DataSource
Komponentet
jovizuale
Baza e të
dhënave
Figura 7.2.
Në punën me bazat e të dhënave përdoret termi DataSet. Ajo është një grup i
të dhënave në të cilat mund të arrihet në bazë të informatave të përfshira në bazën e
të dhënave. Të dhënat nga DataSet nuk është e domosdoshme t’i përkasin një
tabele.
Figura 7.3
Figura 7.4.
Figura 7.5.
x Kthehemi në Delfi.
Delphi ofron mundësinë e krijimit të tabelave duke përdorur meny:
-Tools-> Database desktop
-File-New-Table (tip PARADOX),
- Pastaj dizajnohet tabela. Për çdo fushë definohet emri, lloji,
madhësia dhe çelësi.
- Struktura e tabelës rruhet me Save As.
- Tabela plotësohet përmes Delphi Tools-> DatabaseDesktop.
Figura 7.6.
Në opsionin File-> New-> Table krijojmë tabelën. Fusim emrat e fushave, llojin e
tyre, madhësinë dhe çelësin.
Figura 7.7.
Figura 7.8.
Figura 7.9.
Figura 7.10.
Figura 7.11.
Figura 7.12.
Figura 7.13.
Figura 7.14.
Figura 7.15.
Figura 7.16.
Figura 7.17.
Figura 7.18.
Figura 7.19.
Figura 7.20.
Figura 7.21.
Figura 7.22.
Figura 7.23.
8. Në figurë shohim se në dritaret Detail Fields dhe Master Field gjinden vetëm dy
fusha të njëjta. I shënojmë të dy fushat. Mes tyre paraqitet butoni Add, dhe pas
klikimit në të, në dritaren e poshtme Joined Fields paraqiten Shifra_Sh->
Shifra_Sh, që do të thotë se tabelat janë të lidhura sipas fushës Shifra_Sh.
9. Duhet të zgjedhim Generate a main form dhe -> Finish.
Figura 7.24.
Figura 7.25.
Figura 7.26.
Figura 7.27.
Figura 7.28.
Operacion i cili përdoret shpesh kur punojmë me baza të të dhënave është shfaqja
e të dhënat që plotësojnë kushte të caktuara. Ky operacion është quajtur filtrim.
Shembullin e filtrimit mund ta shpjegojmë tek tabelat në bazën e të dhënave
për nxënësit. Le të jenë në një tabelë emrat e nxënësve të një klase, të dhënat bazë
dhe notat e tyre. Për raportin në nivel të shkollës kërkohen të dhëna për numrin e
nxënësve me sukses pozitiv, sukses negativ dhe numri i mungesave me arsye dhe
pa arsye. Për të mundësuar marrjen e DataSet vetëm me të dhënat e kërkuara
përdoret filtrimi.
Për komponentin Table në ObjectInspector ekzistojnë dy veti: Filtered dhe
Filter të cilat mundësojnë shfaqen e të dhënave të dëshiruara nga tabela. Vetia
Filtered përcakton nëse tabela është e filtruar apo jo. Nëse vetia ka vlerën Trues,
tabela do të filtrohet. Kriteri me të cilin bëhet filtrimi jepet në vetinë Filter. Vlera e
kësaj vetie përbëhet nga emri i fushës, operatori logjik dhe vlera. Gjatë filtrimit
vlejnë rregullat e mëposhtme:
1. Emrat dhe fushat e operatorëve logjik mund të përshkruhen me shkronja të
vogla dhe të mëdha.
2. Kur filtrohet tekst, vetia FilterOptions definon nëse do t’u kushtojmë
kujdes shkronjave të vogla dhe të mëdha.
Filtri mund të ketë pamjen e mëposhtme:
Emri= 'Naim'
Mbiemri= 'Frashëri' and VitiL> '1 / 1 / 68 '
Mbiemri= 'FRASHËRI' AND VITI_L> '1 / 1 / 68 '
Filtri i parë mundëson shfaqjen e të gjitha regjistrimeve të cilët në fushën Emri
kanë vlerën Naim. Dy shembujt e tjerë për rezultat kanë vlerë të njëjtë, derisa në
vetinë FilterOptions nuk kërkohet që shkronjat e vogla dhe të mëdha të dallohen.
Në tabelën e mëposhtme tregohen shprehje logjike që mund të përdoren
gjatë filtrimit.
Operatori Kuptimi
> Më i madh se
< Më i vogël se
= I barabartë
<> I ndryshëm
<= Më i vogël ose i barabartë
>= Më i madh ose i barabartë
() Përdoret për ndryshimin e radhitjes së ekzekutimit
{} Përdoret për regjistrimin e emrave të fushave të cilat
përmbajnë boshllëqe
AND,OR,NO Operatorë logjik
T
Shembull filtrimi
1. Të startohet aplikacion i ri dhe në formë të vendoset komponenti Table.
Vetia Active vendoset në vlerën True. DatabaseName e vendosim në alias
Biblioteka. Nga Baza e të dhënave zgjedhim emrin TableName Libra.
2. E vendosim komponentin DataSource në formë. Vetinë e saj DataSet e
vendosim në vlerën DataSource1.
Figura 7.29.
Figura 7.30.
Figura 7.31.
Deri tek të dhënat e tabelës mund të arrihen edhe nga programi. Kur komponenti
Table është krijuar dhe tabela është e hapur, aktiv është vetëm një regjistrim i tabelës.
Qasja është e mundur vetëm në fushat e regjistrimit aktiv. Pas hapjes së tabelës aktiv
është vetëm regjistrimi i parë. Kalimi në tjetrin, të mëparshmin, të parin apo të fundit
kryhet me ndihmën e metodave Next, Prior, First ose Last.
Për të treguar lëvizjen nëpër tabelë duke përdorur kodin e programit, e
formojmë aplikacionin i cila nga tabela e të dhënave Shkrimtarët do të shfaq
përmbajtjet e fushave të regjistrimeve të cilave u qasemi me metodat e cekura.
Forma e ka formën e treguar në figurën 7.32.
Figura 7.32.
Për çdo buton është definuar ngjarje OnClick kodet programore të të cilave janë
paraqitur në listingun e mëposhtëm.
Figura 7.33.
Figura 7.34.
DBMbiemri.Text:=Table1.Fields[2].Value;
DBViti.Text:=Table1.Fields[3].Value;
DBShteti.Text:=Table1.Fields[4].Value;
if (table1.eof) or (table1.Bof) then
Ifundit.text:='Nuk ka më regjistrime';
end;
Procedure TForm1.Button2Click(Sender: TObject);
begin
application.terminate;
end;
end.
Rreshti i programit Table1.MoveBy(n); mundëson kërcimin në regjistrimin
e larguar për N regjistrime nga ai momental. Nëse N është me parashenjë negative,
lëvizja bëhet kah regjistrimi i parë.
Rreshti tjetër i programit përmban Urdhrin e mëposhtëm:
if (table1.eof) or (table1.Bof) then
Ifundit.text:='Nuk ka më regjistrime';
ku përdoren vetitë Bof dhe Eof që mundësojnë kontrollin e aktivizimit të
regjistrimit të parë ose të fundit të tabelës. Vetitë Bof dhe Eof kanë vlerë True nëse
regjistrimi momental është i pari, gjegjësisht i fundit.
Figura 7.35.
Figura 7.36.
Figura 7.37.
Figura 7.38.
Figura 7.39.
Urdhrat
s:=Emri1.text;
Table1.Locate('Emri',s,O);
na mundësojnë të gjejmë regjistrimin, fusha e së cilës ndryshohet, në bazë të vlerës
së dhënë për Emri në kontrollin Edit. Pastaj aplikohet metoda Edit dhe jepet
përmbajtja e re në fushën e cila duhet të ndryshohet.
table1.edit;
table1.Fields[1].value:='Stiven';
Figura 7.40.
Figura 7.41.
FieldByName('Shifra_Sh').AsInteger:=22;
FieldByName('Emri').AsString:='Ndre';
FieldByName('Mbiemri').AsString:='Mjeda';
FieldByName('Viti_L').AsString:='1866';
FieldByName('Shteti').AsString:='Shqipëri';
end;
t:=inputBox('KUJDES','A doni të funi regjistrim?','Jo');
if t='Po'
then Table1.Post else Table1.Cancel;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
table1.open;
end;
Në këtë kod programor vërejmë një mënyrë të re për t`ju qasur tabelës, si
dhe fushave të tabelës. Ajo mundësohet duke përdorur komandën:
With Table1 do.
Figura 7.42.
Figura 7.43.
KAPITULLI 7
(SHKURT)
Me grupimin e të dhënave të përafërta në forma të përshtatshme për
përdorim, rezultojnë bazat e të dhënave. Karakteristikat bazë të bazave të të
dhënave relacionale është se informacionet janë ndarë në grupe logjike të të
dhënave të cilat janë të vendosura në tabela. Tabelat janë objekte themelore të
bazave të të dhënave relacionale.
Sasia më e vogël e informacionit në tabelë është një fushë - kolonë.
Shuma e të gjitha fushave në një rresht të tabelës është quajtur një
regjistrim.
Që të lidhen tabelat në bazën e të dhënave, tabela referente patjetër të ketë
çelës primar. Kjo është një fushë (ose grup i fushave) që përcakton në mënyrë
unike çdo regjistrim në tabelë. Dy regjistrime në tabelë nuk mund të kenë të njëjtën
vlerë në fushën e çelësit primar. Çelësi primar siguron që të gjitha regjistrimet
nga njëra tabelë të jetë të lidhur me të dhënat nga një tabelë tjetër. Në tabelën
sekondare fusha me të cilën realizohet lidhja, quhet çelës i jashtëm dhe nuk është e
thënë të përmbajnë një vlerë të vetme.
Indeksi është fushë që përdoret për renditjen logjike të regjistrimeve në
tabelë.
Që të lejojë qasje në bazat e të dhënave, Delphi përdor teknologjinë BDE
(Borland Database Engine). Ajo është një grup i programeve shërbyese që lejojnë
qasje në baza të ndryshme të të dhënave.
Të gjitha versionet e Delphi-t kanë një driver i cili mbështet qasjen në bazat
e të dhënave Paradox dhe dBase.
Për qasje korrekte deri në bazën e të dhënave BDE përdorur alias (alias).
Ajo është një grup i parametrave që përshkruan mënyrat e lidhjes me bazën e të
dhënave. Alias i tregon BDE cilin drajver të përdor dhe ku gjendet datoteka në disk
me bazën e të dhënave.
Komponentët për punë me bazat e të dhënave mund të ndahet në jo vizuale
dhe vizuale.
Filtrimi i të dhënave
Operacion që shpesh përdoret gjatë punës me bazat e të dhënave është
shfaqja e të dhënat që i plotësojnë kushtet e caktuara.
Përpunimi i tabelave nga programi
Deri tek të dhënat në tabelë mund të arrihet edhe nga programi. Kur
komponenti Table është krijuar dhe tabela është e hapur, aktiv vetëm një regjistrim
në tabelë. Qasja është e mundur vetëm në fushat e regjistrimit aktiv. Pas hapjes së
tabelës aktiv është vetëm regjistrimi i parë. Kalimi në të ardhshmin, të mëparshmin,
të parin apo të fundit kryhet duke përdorur metodat Next, Prior, First ose Last.
Në Delphi ekziston mundësia q; drejtpërdrejt të kemi qasje deri në regjistrim
përmes fushave dhe vlerave të fushave (një ose më shumë fusha). Për këtë qëllim
përdoret metoda Locate.
Për të ndryshuar fushën në regjistrimin e tabelës, është e nevojshme së pari
të vendoset kursori në regjistrimin fushat e të cilit duam t’i ndryshojmë, dhe pastaj
të thirret metoda për ndryshim Edit.
Nëse duam të fusim regjistrim të ri në tabelë, atëherë duhet të përdorim
metodën Insert.
Në punën me bazat e të dhënave shpesh është e nevojshme fshihen
regjistrime të caktuara nga tabela aktive. Për këtë qëllim përdoret metoda Delete.
Përgjigjet
Kapitulli 1
1. Rreshti komandues është tipar i sistemit operativ DOS, kurse dritarja dhe
tavolina punuese (desktopi) janë tipare të sistemit operativ Windows.
2. Hapësira punuese e Windowsit karakterizohet me ikona, kurse DOS-i me urdhra.
3. Sistem shumë-funksional (multitasking).
4. Hap programor vizual dhe Kod.
5. Që sistemin mund ta shfrytëzojnë të njëjtën kohë disa përdorues.
6. Inkapsulim, trashëgimi dhe poliformizëm.
7. Veti.
8. Metodë.
Kapitulli 2
Detyra
Kapitulli 3
1. procedure TForm1.FormCreate, procedure TForm1.Button1Click.
2. Përmes kartelës ngjarje (events -> ObjectInspector), zgjidhet ngjarja OnClick ose
me klikim të dyfishtë në butonin komandues.
-IntToStr (konvertimi nga numër i plotë në string-tekst), StrToFloat (konverton
tekst-string në numër decimal), StrToInt (konverton tekst-string në numër të plotë),
FloatToStr (konvertim nga numri decimal në string)
3. procedure Tform1.Button1Click (Sender: TObject);
4. Ndryshorja: = shprehja;
ku Ndryshorja është vend në memorie në të cilën vendoset rezultati, kurse Shprehja
është shprehja vlera e së cilës llogaritet.
5. CheckBox.
6. Kontrolli TCheckBox gjendet në faqen Standard. Përdoret gjatë zgjidhjes së
detyrave kur është e nevojshme të përfshihen ose përjashtohen një apo më shumë
opsione.
7. If checkBox1.checked then
Label1.caption:=’E klikuar’
else
Label1.caption:=’Nuk është e klikuar’
8. Shpjegoni rreshtat e programit:
-StringGrid1.Row:=ComboBox1.itemindex+1;- Numri i rreshtave të komponentit
StringGrid do të jetë i barabartë me numrin e të dhënave në komponentin
ComboBox.
-Edit1.SetFocus;- fokusin e vendos në komponentin Edit1.
-StringGrid1.Cells[0,1]:= 1.';- Në celulën e rreshtit 0 dhe kolonës 1 shkruan "1".
9. Kontrolli RadioButton përdoret për të zgjedhur një nga disa opsione të
mundshme.
If radiobutton1.checked then
Label1.caption:=’ ’E klikuar’
else
Label1.caption:=’ Nuk është e klikuar’
10. –Items – mundëson të definohet, të lexohet dhe ndryshojë lista e mbishkrimeve
dhe numrin e radiobutonave të cilët ndodhen në kuadër të RadioGroup,
-ItemIndex - specifikon indeksin e Butonit aktualisht aktiv, në kuadër të
RadioGroup. Butoni i pare ka indeksin 0. Nëse asnjë buton nuk është zgjedhur,
indeksi është -1.
11. B)
12. Përmes vetisë Lines, në mënyrë ekzekutive direkt në komponentin, rruajtje nga
datoteka.
13. Jo.
14. Me vetinë pamundësohet shfaqja e tekstit në më shumë rreshta.
15. Komponenti StringGrid.
16. Përmbajtja e celulave është përcaktuar si e dhënë shenjë, por në çdo celulë, në
përjashtim të tekstit, mund të shoqërohet cilido objekt që ekziston në Delphi.
17. "0"
18.
ɚ) For do C Struktura përsëritje me kusht në
mbarim të ciklit,
b) While do B Struktura përsëritje me kusht në
fillim të ciklit,
c) Repeat – - Struktura përsëritje me kalim të
until rreshtit të caktuar të programit
Ⱥ Struktura përsëritje me numërim të
cikleve
19.
ɚ) Properties B Ngjarje
b) Events Ⱥ Veti
c) Tools D Paleta e komponentëve
ç) Component C Shiriti me vegla
palettɟ
Detyra
1. Procedure TForm1.Button4Click();
Var nr1,nr2,nr3,nr4,nr5:Integer;
Rez:Real;
Begin
Nr1:=strtoint(edit1.text);Nr2:=strtoint(edit2.text);
Nr3:=strtoint(edit3.text);Nr4:=strtoint(edit4.text);
Nr5:=strtoint(edit5.text);
Rez:=(nr1 + nr2+nr3+nr4+nr5)/5;
Edit6.text:=floattostr(rez);
End;
2. procedure TForm1.Button1Click(Sender: TObject);
var a:integer;
begin
a:=strtoint(edit1.text);
if a=1 then form1.Color:=clblue;
if a=2 then form1.Color:=clyellow;
if a=3 then form1.Color:=clpink;
end;
3. Procedure TForm1.Button4Click();
Var nr1,nr2,rez:Integer;
Begin
Nr1:=strtoint(edit1.text);
Nr2:=strtoint(edit2.text);
If nr1>nr2 then rez:=nr1 else rez:=nr2;
Edit3.text:=inttostr(rez);
4. End;
5. procedure TShembulli5.satTimer(Sender: TObject);
begin
Koha.text:=timetostr(time);
Koha.color:=claqua;
Data.text:=datetostr(date);
Data.color:=clyellow;
end;
6.
8.
procedure TForm1.Button1Click(Sender: TObject);
Var dd,md,gd,dr,mr,gr,d,m,g:integer;
Begin
dd:=strtoint(edit1.text);md:=strtoint(edit2.text);
d:=strtoint(edit3.text);
dr:=strtoint(edit4.text);mr:=strtoint(edit5.text);
gr:=strtoint(edit6.text);
if dd<dr then
begin
dd:=dd+30;
md:=md-1;
end;
d:=dd-dr;
if md<mr then
begin
md:=md+12;
gd:=gd-1;
end;
m:=md-mr;
g:=gd-gr;
edit7.text:=inttostr(d); edit7.text:=inttostr(m); edit7.text:=inttostr(g);
end;
8. Të bëhet një program i cili do të punojë si një quiz me 6 pyetje. Për çdo pyetje
duhet të ofrohet nga 4 përgjigje (opsione), prej të cilave vetëm njëra është e saktë.
Së fundi në formën e dytë të tregohen pikët e fituara dhe nota e fituar.
9. Në formë vendosen 3 etiketa, 1 buton, 3 timer
Veti: vetia caption e etiketave te vendosen në tre numra të ndryshëm.
Tajmerët të vendosen në intervale të ndryshme.
Ngjarje: button.click, timer1,2,3. timer
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.enabled:=false;
timer2.enabled:=false;
timer3.enabled:=false; {i bllokojmë të gjithë tre tajmerët}
if (label1.caption= label2.caption)and (label1.caption= label3.caption)
then { nëse caption e të tre etiketave është e njëjtë atëherë kemi mesazh }
if messagebox(0,'You are our new lucky winner! Do you want to play
again?','congratulations',mb_yesno)=mryes then {nëse klikohet yes
atëherë përsëri startohen tajerët për të vazhduar loja }
begin
form1.show;
timer1.enabled:=true;
timer2.enabled:=true;
timer3.enabled:=true;
end
else { nëse klikohet në NO mbyllet aplikacioni}
application.Terminate
else
form1.show;
timer1.enabled:=true;
timer2.enabled:=true;
timer3.enabled:=true;
{ nëse të tre numrat nuk janë të njëjtë loja vazhdon, tajerët aktivizohen }
end;
Kapitulli 4.
Kapitulli 6.
1. a)
2. c)
3. c)
4. Globale janë ndryshoret që definohen në programin kryesor,
5. Gjatë thirrjes së nënprogramit argumente quhen argumente reale.
6. Nënprogramet paraqesin pjesë programore të pavarura që kanë të dhënat e tre
hyrëse dhe japin rezultate dalëse.
7. Argumentet në fillimin e nënprogramit quhen argumente formale.
8. Variablat lokale deklarohen në nënprogram.
9. function Shumz(br1, br2: integer): integer;
var Result: integer;
begin
Result:= br1 * br2;
Shumz:= Result
end;
procedure TForm1.Button1Click(Sender: TObject);
Var a,b,rezultat:Integer;
Begin
a:=strtoint(edit1.text);
b:=strtoint(edit2.text);
Rezultat:=shumz(a,b);
edit3.text:=inttostr(rezultat);
end;
end.
10. function fact (n:integer):longint;
begin
if n=0 then fact:=1
else fact:=n*fact(n-1);
end;
Procedure TForm1.ScrollBar1Change(Sender:TObject );
Begin
Edit1.text:=IntToStr(fact(ScrollBar1.position));
Label1.Caption:=IntToStr(ScrollBar1.position)+'!=';
end;
11.
function suman (n:integer):longint;
begin
if n=1 then suman:=1
else suman:=n+suman(n-1);
end;
Procedure TForm1.ScrollBar1Change(Sender:TObject );
Begin
Edit1.text:=IntToStr(suman(ScrollBar1.position));
Label1.Caption:=IntToStr(ScrollBar1.position)+'=';
end;
12.
function far (cel:integer):real;
begin
far:=1.8*cel+32
end;
Kapitulli 7
Literatura
-Miodrag Stojanoviq: Informatika dhe llogaritja
-Laslo Kraus: Fusha programuese Delphi 7
-Gjorgji Jovançevski:Teknologjia informative (për vitin e parë të arsimit të mesëm)
-Dragan Andonov, Cane Kotevski: bazat e Softverit
-Marko Cantu: Mastering Delphi 4
-Niklaus Wirth: Doracak i Pascal-it
-Adresa nga Interneti:
-http://vojo.milanovic.org/
-http://www.hkbu.edu.hk/~bba_ism/ISM2110/index.htm (Pascal Programming)
-http://www.tutorijali.org/delphi.php
-Marko Shvaljek: Borland Delphi (libër në internet)