Visual basic

6.2 ARRAYS SHUMËDIMENSIONALE
 
Deri tani ne kemi parё array me njё dimension, e cila ёshtё e pёrdorshme kur
kemi tё bёjmё vetёm me njё tip tё dhёnash. Por shumё shpesh do tё jetё i
nevojshёm pёrdorimi i array me dy ose mё shumё dimensione. Arrays tё cilat
pёrdorin mё shumё se njё dimension quhen array shumёdimesionale.
 
6.2.1 Arrays me dy dimensione    
Arrays dy dimensionale janё arrays tё cilat kanё vlera nё dy dimensione tё
pёrfytyruara si rreshta dhe kollona, ose e thёnё ndryshe si array tё arrays. Nё Fig.
6. 2 tregohet njё array e quajtur Numri me dimesione 6 rreshta dhe 8 kollona. Pёr Page 164 of 239
 
tё deklaruar njё array dy dimensionale nё Visual Basic, veprohet nё tё njёjtёn
mёnyrё si me array me njё dimension, por nё vend tё njё vlere do tё kemi dy
vlera: vlera e parё i pёrket rreshtit dhe vlera e dytё i pёrket kollonёs.   
Dim sngNumri(5, 7) As Single
      0  1  2  3  4  5  6  7
   0                         
   1                         
Numri  2            55             
   3                         
   5                         
Fig. 6. 2 Arrays dy dimensionale.
Pёr tё ruajtur njё vlerё nё array nevoiten dy vlera: vlera pёr rreshtin dhe vlera pёr
kollonёn. Pёr shembull shikoni se si vlera 55 ruhet nё array nё rreshtin e 2 dhe nё
kollonёn e 3.
  sngNumri(2, 3) = 55
Shumё e pёrdorshme me array dy dimensionale ёshtё nested loop. Nё vazhdim
nested loop pёrdoret pёr ti dhёnё mundёsinё pёrdorusit tё fusi tё gjitha vlerat e
elementёve tё array.  
        Dim intRresht As Integer
        Dim intKollon As Integer
        Dim sngEmri(5, 7) As Single
        Dim intNum As Integer
 
        For intRresht = 0 To 5
            For intKollon = 0 To 7
                intNum = CInt(InputBox("Fusni noten"))
                sngEmri(intRresht, intKollon) = intNum
            Next intKollon
  Next intRresht  
   
Ndёrsa kodi nё vazhdim shfaq tё gjithё elementёt e array sngEmri. Nё tё njёjtёn
forёm qё krijuam me butonin Searching, shtoni njё buton dhe emёrojeni Array.
Shtoni gjithashtu nё forёm njё list box dhe emёrojeni lstOutput. Pёr butonin Array
shkruani tё dy kodet: kodin e mёsipёrm dhe kodin e mёposhtёm.  
        For intRresht = 0 To 5
            For intKollon = 0 To 7 Page 165 of 239
 
                lstOutput.Items.Add(sngEmri(intRresht, intKollon).ToString)
            Next intKollon
  Next intRresht
Nё tё njёjtёn mёnyrё si deklaruam array me njё dimension, tё cilat i quajtёm
initialization array , ne mund tё deklarojmё dhe array me dy dimensione. Nё kёtё
mёnyrё deklarimi array do tё ketё formёn e njё matrice, ku secili element ndahet
me presje me elementin tjetёr dhe secili rresht vendoset nё kllapa dhe ndahet me
presje me rreshtin tjetёr.   
Dim intNumer(,) As Integer = {{10, 20, 30}, {40, 50, 60}, {70, 80, 90}}
 
6.2.2 Arrays tre dhe mё shumё dimensionale
Arrays me tre dimensione janё disi mё tё vёshtira pёr tu imagjinuar, ndёrsa
mёnyra e deklarimit ёshtё e njёjtё me array me njё ose dy dimensione.  
Dim intKarrike(9, 11, 14) As Integer     
Pёr tё imagjinuar arrays me tre dimensione mendojeni veten nё njё sallё
kinemaje, ku janё 15 rreshta dhe 12 kollona nё njё seksion. Gjithsej janё 10
seksione. Nё vazhdim jepet njё pёrmbledhje pёr array me njё, dy dhe tre
dimensione.  
 
 
Fig. 6. 3 Array njё dimensionale.
 
Fig. 6. 4 Array dy dimensionale.
 Page 166 of 239
 
 
Fig. 6. 5 Array tre dimensionale.
Siç thamё dhe mё lart njё array mund tё ketё njё, dy, tre apo shumё dimensione.
Pёr tё pёrfytyruar array me dy dimensione ёshtё kollaj, po ashtu dhe me tre
dimensione pёrfytyrojeni nё formёn e njё kubi, por me katёr apo mё shumё
dimensione ёshtё disi e vёshtirё tё pёrfytyrohet. Shpesh ato janё tё nevojshme nё
programim si pёr shembull nёse duam tё krijojmё njё program pёr tё gjithё
universitetet e Evropёs, do tё ishte njё ide e mirё pёrdorimi i njё array me katёr
dimensione. Dimensioni i parё prezanton shtetin, dimensioni i dytё prezanton
universitetet nё secilin shtet, dimensioni e tretё prezanton fakultetet nё secilin
universitet dhe dimensioni i katёrt prezanton departamentet nё secilin fakultet.
Programet tё cilёt pёrdorin array shumёdimensionale kёrkojnё njё kujdes tё
veçantё nga programusi dhe shpesh ata nёse kanё mundёsi pёlqejnё ta shmangin
pёrdorimin e tyre.  
 
6.3 RANDOM NUMBERS
 
Aplikimet nё kompjuter si lojrat apo stimulimet shpesh kёrkojnё random
numbers. Por Visual Basic siguron pёr ne tools pёr tё gjeneruar random numbers.
Random class ka metoda qё gjenerojnё random numbers shumё thjeshtё.  
  Private rand As New Random Page 167 of 239
 
Metoda Random.Next kthen numrin nё vazhdim tё seris, pёr tё cilin nёse nuk do
tё pёrdorim parametёr ndodhet ndёrmjet 0 dhe 2.147.486.647.  
  Dim N As Integer = rand.Next()
Ju mund tё gjeneroni njё numёr duke pёrcaktuar limitin e sipёrm. Nё kodin nё
vazhdim vlera e N ёshtё ndёrmjet 0 dhe 99.  
  N = rand.Next(100)
Kini parasysh se random numbers nuk ёshtё e thёnё tё fillojnё nё zero, pasi ju
mund tё shtoni ose tё hiqni vlera dhe kёshtu pёrcaktoni tё tjerё kufi pёr tё. Nё
vazhdim N ёshtё ndёrmjet -50 dhe +49.
  N = rand.Next(100) - 50        
Klasa random ka njё metodё Rando.NextDouble qё kthen njё random floating
numёr ndёrmjet 0.0 dhe 1.0 (1.0 nuk pёrfshihet).  
  Dim D As Double = rand.NextDouble()
Nёse ju doni njё tjetёr kufi pёr numrin, ju mund ta shumёzoni me njё numёr pёr ta
sjellё nё kufitё e dёshiruar. Nёse pёr shembull duam tё jemi nё kufitё nga 0.0 nё
50
  D = rand.NextDouble() * 50.0
Ose nёse duam tё jemi nё kufitё nga 10 nё 60.
  D = (rand.NextDouble() * 50.0) + 10
 
6.4 SUB PROCEDURES DHE FUNKSIONET ME ARRAYS  
 
Ju mund tё kaloni arrays si argumente tё Sub procedurs ose tё kёtheni
arrays nga funksioni. Gjatё programimit shpesh lind nevoja pёr tё shkruar Sub
procedures ose funksione qё marrin tё dhёna nga arrays. Pёr shembull ju mund tё
shkruani njё proçedur pёr tё ruajtur tё dhёnat nё array, shfaq pёrmbajtjen e array
dhe mbleth ose llogarit mesataren e vlerave nё array. Tё tilla proçedura pranojnё
njё array si argument.  
Kush ёshtё qёllimi i pёrdorimit tё sub procedures? Page 168 of 239
 
Imagjinoni njё aplikim ku ju keni disa Text Boxes nё forёm. Ne duam qё kёto
Text Boxes tё marrin vetёm vlerat  qё ne dёshirojmё, pёr shembull ne nuk duam
qё nё Text Box pёr emrin pёrdorusi tё fusi njё vlerё numerike. Nёse pёrdorusi do
tё fusi njё vlerё numerike nё njё Text Box tё tillё, njё mesazh i cili tё tregojё se
kjo ёshtё gabim do tё shfaqet. Pёr kёtё programusi duhet tё shkruaj njё proçedurё,
por nё aplikimin ton ne kemi shumё Text Boxes qё na nevoitet i njёjti kod. Nё
vend tё shkruajm tё njёjtin kod, ne na nevoitet tё shkruajmё njё sub procedure ose
njё funksion dhe mund ti pёrdorim sa herё na nevoiten, duke j’u referuar vetёm
emrit tё tyre. Megjithёse sub procedures dhe funksionet duken sikur kryejnё tё
njёjtat funksione, nё tё vёrtetё ato ndryshojnё nga njёra – tjetra. Funksionet
kёthejnё njё vlerё, ndёrsa Sub procedures jo.    
Krijoni njё aplikim dhe vendosni njё text  box nё tё, i cili pёrdoret nga pёrdorusi
pёr tё shkruajtur emrin. Ju duhet tё shkruani njё kod ku tё siguroheni se pёrdorusi
futi tё dhёnat nё tё. Shtoni njё buton nё forёm dhe shkruani kodin nё vazhdim.  
        Dim TextBoxData As String
 
        TextBoxData = Trim(TextBox1.Text)
 
        If TextBoxData = "" Then
            MsgBox("Ju lutemi, fusni emrin tuaj.")
  End If   
Run programin dhe testoje atё. Mos fusni asnjё vlerё nё text box dhe kliko mbi
butonin Testo. Vini re se mesazhi ku ju tregon ju se duhet tё fusni emrin nё text
box shfaqet. Por nёse do tё na duhet tё testojmё dhe text boxes tё tjerё nuk ёshtё
njё ide e mirё tё shkruajmё pёr çdo text box tё njёjtin kod. Kjo jo vetёm do tё
ishte njё humbje kohe, por imagjinoni se si kjo do ta komplikonte kodin tonё nё
programe shumё tё gjata.  
Pёr tё realizuar kёtё na nevoitet njё sub procedure, e cila nuk duhet vendosur
brenda proçedurёs sё butonit. Ajo duhet tё jetё jashtё saj, por brenda klasёs.
Vendoseni kursorin jashtё proçedurёs pёr butonin, por para End Class dhe type:
Private Sub ErrorCheck()   
Klikoni mbi enter dhe Visual Basic automatikisht do tё shtojё End Sub. Cut kodin
e mёsipёrm tё butonit Testo dhe shtoje ndёmjet rreshtit tё parё dhe tё fundit. Ju
krijuat njё sub procedure.  
Por si ta pёrdorim kёtё sub procedure? Page 169 of 239
 
Tani qё ne e krijuam kёtё sub procedure na duhet qё ta pёrdorim atё. Pёr kёtё ne
duhet ti tregojmё Visual Basic qё ta ekzekutojё kёtё proçedurё. Kjo arrihet
lehtёsisht duke ju referuar emrit tё saj. Nё vend tё kodit qё kishim mё parё pёr
butonin Test vendosini:
ErrorCheck()   
Run programin dhe testoni butonin Test. Mesazhi i shfaqur nё MessageBox duhet
tё jetё i njёjtё me atё qё shfaqej fillimisht pёr butonin Test. Zakonisht programusit
pёlqejnё tё shtojnё Call pёrpara fjalisё sё mёsipёrme. Kjo nuk ka ndonjё funksion
nё kod, por vetёm ёshtё mё e lehtё nga pёrdorusi pёr tu kuptuar. Provojeni kёtё nё
kodin e sapo krijuar dhe vini re se programi compile. Pёr ta kuptuar mё mirё
funksionin e saj shtoni dhe njё, dy apo disa butona nё forёm dhe pёrdoreni sub
procedure vetёm duke ju referuar emrit. Mё poshtё po japim kodin e plotё pёr
kёtё sub procedure dhe pёr butonit Test.
Public Class Form1
 
    Private Sub Button1_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles Button1.Click
 
        ErrorCheck()
 
    End Sub
 
    Private Sub ErrorCheck()
 
        Dim TextBoxData As String
 
        TextBoxData = Trim(TextBox1.Text)
 
        If TextBoxData = "" Then
            MsgBox("Ju lutemi, fusni emrin tuaj.")
        End If
    End Sub
End Class
    
6.4.1 Pёrdorimi i parametrave nё Sub procedures
Shto dy text boxes nё tё njёjtёn forёm qё pёrdorёm dhe mё lart. Vendos vlerat pёr
text boxin e parё Name: txtNumriPare dhe pёr text boxin e dytё Name:
txtNumriDyte. Dy text boxes do ti japin mundёsinё pёrdorusit tё fusi dy numra
dhe shyma e tyre do tё shfaqet nё MessageBox. Shto njё buton nё forёm dhe
vendos vlerёn Text: Pergjigja. Type kodin e mёposhtёm jashtё proçedurёs sё
butonit Pergjigja, por brenda klasёs.  Page 170 of 239
 
    Private Sub MblidhNumrat ()
        Dim numriPare As Integer
        Dim numriDyte As Integer
        Dim pergjigja As Integer
 
        numriPare = CInt(Val(txtNumriPare.Text))
        numriDyte = CInt(Val(txtNumriDyte.Text))
 
        pergjigja = numriPare + numriDyte
 
        MsgBox("Totali eshte: " & pergjigja)
End Sub   
Referohuni sipas emrit kёsaj sub procedure, nё tё njёjtёn mёnyrё si nё shembullin
e mёsipёrm. Run programin  dhe fusni nga njё numёr pёr secilin text box. Vereni
pёrgjigjen nё MessageBox.  
  Call MblidhNumrat()
Cut dy rreshtat e parё tё deklarimit tё variablave dhe kodin pёrkatёs pёr to, dhe
shtoji nё kodin pёr butonin Pergjigja. Kodi juaj duhet tё duket njёsoj me:
    Private Sub Button2_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles Button2.Click
 
        Dim numriPare As Integer
        Dim numriDyte As Integer
 
        numriPare = CInt(Val(txtNumriPare.Text))
        numriDyte = CInt(Val(txtNumriDyte.Text))
 
        Call MblidhNumrat()
    End Sub
 
    Private Sub MblidhNumrat()
 
        Dim pergjigja As Integer
 
        pergjigja = numriPare + numriDyte
 
        MsgBox("Totali eshte: " & pergjigja)
    End Sub
Vini re se  variablat numriPare dhe numriDyte janё tё nёnvizuara, pasi Sub
MblidhNumrat() proçedurё nuk ka asnjё informacion se ç’farё janё kёto variabla. Page 171 of 239
 
Vini re se ato deklarohen jashtё kёsaj proçedure. Pёr kёtё ne duhet ti tregojmё
kёsaj proçedeure rreth tyre. Kjo realizohet duke pёrdorur parameters.  
Ndrysho Private Sub MblidhNumrat() nё:
Private Sub MblidhNumrat(numriPare As Integer, numriDyte As Integer)
Vini re se kur ju klikoni diku tjetёr, automatikisht Visual Basic shton:
(ByVal numriPare As Integer, ByVal numriDyte As Integer)
Ne do ta shpjegojmё nё vazhdim termin ByVal, por tani le tё pёrqёndrohemi tek
parametrat. Qёllimi jonё ёshtё tё shtojmё dy variablat numriPare dhe numriDyte,
pra kushdo qoftё vlera e variablave, ajo do tё dёrgohet nё sub procedure.
Vini re se pas kёsaj fjalia Call MblidhNumrat() ёshtё e nёnvizuar, ndryshoje atё
nё:
Call MblidhNumrat(numriPare, numriDyte)   
Mbani mend se kur sub procedure merr vlerat nga variabla ato quhen parametёrs,
ndёrsa kur dёrgon vlerat e variablave ato quhen arguments. Gjithashtu nuk ёshtё e
thёnё qё variablat pёr proçedurёn pёr butonin tё kenё tё njёjtin emёr me
parametrat pёr sub MblidhNumrat. Variabla e parё e proçedurёs sё butonit do tё
korespondojё me parametrin e parё tё sub MblidhNumrat. Nryshoni variablat pёr
proçedurёn e butonit dhe vini re se programi compilet dhe funksionon nё rregull.
Megjithatё kodi pёr tё qenё mё i kollajshёm pёr tu lexuar, ёshtё mirё qё variablat
dhe parametrat tё korespondojnё.  
 
6.4.2 ByVal dhe ByRef
ByVal ёshtё shkurtimi i fjalёs By Value, e cila nёnkupton qё ju po kaloni njё
kopjo tё variablёs nё sub procedure. E thёnё mё thjesht nёse ndryshohet vlera e
parametrit (kopjos), vlera e variablёs (origjinali) nuk ndryshon.
ByRef ёshtё e kundёrta e ByVal, nёse vlera e parametrit (kopjos) ndryshon dhe
vlera e variablёs (origjinali) ndryshon. ByRef ёshtё shkurtimi i fjalёs By
Reference.
Nё aplikimin e mёsipёrm shtoni njё buton dhe vendosni vlerёn pёr Name:
ByVal_ByRef. Kliko dy herё mbi butonin ByVal_ByRef dhe type kodin e
mёposhtёm.
        Dim Numri As Integer Page 172 of 239
 
 
        Numri = 2008
        Call Rritje(Numri)
 
        MsgBox(Numri)    
Jashtё proçedurёs sё butonit ByVal_ByRef, por brenda klasёs type kodin:
    Private Sub Rritje(ByVal Numri As Integer)
        Numri = Numri + 1
    End Sub
Run programin dhe vereni output nё MessageBox. Pse vlera e saj ёshtё 2008? A
nuk duhet tё jetё vlera e variablёs 2009, pasi ne po i shtojmё 1?
Vini re se ne po pёrdorim ByVal, pra nёse ndryshohet vlera e kopjos vlera e
origjinalit nuk ndryshohet. Ndryshoni atё nё ByRef dhe run programin. Vini re se
vlera nё MessageBox do tё shfaqet 2009, pasi nёse ndryshohet vlera e kopjos
ndryshohet dhe vlera e origjinalit.  
Nёse keni ndonjё problem me kodin e mёsipёrm, nё vazhdim po japim kodin e
plotё pёr butonin ByVal_ByRef dhe proçedurёn Private sub Rritje. Gjithashtu nё
fig po japim dhe formёn pёr kёtё aplikim.  
    Private Sub Button3_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button3.Click
 
        Dim Numri As Integer
 
        Numri = 2008
        Call Rritje(Numri)
 
        MsgBox(Numri)
    End Sub
 
    Private Sub Rritje(ByVal Numri As Integer)
        Numri = Numri + 1
    End Sub
 
 
 
 Page 173 of 239
 
Fig. 6. 6 Forma e aplikimit.
 
    
6.4.3 Krijimi i Funksionit
Njё funksion ёshtё shumё i ngjashёm me sub procedures. Pasi funksioni krijohet
ai mund tё pёrdoret sa herё nevoitet. Siç e kemi thёnё dhe mё parё ndryshimi
ndёrmjet njё funksioni dhe njё sub procedure ёshtё se funksioni kthen njё vlerё,
ndёrsa sub procedure jo. Nёse do i referohemi sub MblidhNumrat, ajo nuk ka
ndonjё vlerё, ajo nuk ёshtё e barabartё me asgjё, ajo tregon vetёm emrin i sub
procedure.
Njё funksion ёshtё ndryshe, ai ka njё vlerё, ai ёshtё i barabartё me diçka. Krijimi i
njё funksioni ёshtё pothuajse i njёjtё me njё sub procedure, vetёm se tё Sub
vendoset Function dhe shtohet As e ndjekur nga data type.  
  Private Function ErrorCheck () As Boolean
    Fjali ( ose fjalite)
End Function      
Shto njё buton dhe njё text box nё tё njёnjtёn forёm. Vendos vlerёn e butonit Text
nё Funksion dhe vlerёn e text box Name nё txtFunksioni. Kliko dy herё mbi
butonin Funksion dhe shkruaj kodin e mёposhtёm, i cili duhet tё jetё jashtё
proçedurёs sё kёtij butoni. Page 174 of 239
 
    Private Function CheckError() As Boolean
 
        Dim textBox As String
 
        textBox = Trim(txtFunksioni.Text)
 
        If textBox = "" Then
 
            MsgBox("Blank Text Box detected")
 
            CheckError = True
 
        End If
 
     End Function
Ky kod ёshtё i ngjashёm me atё tё sub CheckError, pёrveç se ka dhe fjalin:
    CheckError = True
CheckError ёshtё njё variabёl, nё kёtё rast ёshtё njё variabёl boolen. Pra nёse nuk
ka ndonjё vlerё nё text box vlera e variablёs CheckError vendoset True. Por si
dhe nё rastin e sub procedure, ky kod nuk tregon gjё nёse ne nuk e thёrrasim atё.
Type kodin e mёposhtёm brenda proçedurёs sё butonit Funksion. Kjo fjali thёrret
funksionin CheckError() dhe vendos vlerёn e tij nё variablёn IsError.   
Dim IsError As Boolean = CheckError()
Pas kёsaj ne mund ta testojmё kёtё variabёl, nёse nuk kemi ndonjё vlerё nё text
box kjo variabёl do tё jetё True dhe nёse kemi vlerё nё text box variabla IsError
do tё jetё Fall.  
        If IsError = True Then
 
            Exit Sub
        Else
 
            MsgBox("IsError = False")
 
  End If
Run programin dhe testojeni atё pёr tё dy rastet: kur nё text box nuk ka ndonjё
vlerё dhe kur nё text box ka vlerё. Vёreni mesazhin nё MessageBox pёr tё dy
rastet. Pra si pёrfundim themi se funksioni kёthen njё vlerё tё cilёn e vendosim nё
njё variabёl “IsError” dhe kёtё variabёl e testojmё. Nё vazhdim po japim kodin e
plotё pёr funksionin CheckError dhe pёr butonin Funksion. Page 175 of 239
 
    Private Sub Button4_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button4.Click
 
        Dim IsError As Boolean = CheckError()
 
        If IsError = True Then
 
            Exit Sub
        Else
 
            MsgBox("IsError = False")
 
        End If
 
    End Sub
 
    Private Function CheckError() As Boolean
 
        Dim textBox As String
 
        textBox = Trim(txtFunksioni.Text)
 
        If textBox = "" Then
 
            MsgBox("Texti nuk ka asnje vlere.")
 
            CheckError = True
 
        End If
 
End Function
 
6.4.4 Pёrdorimi Parametrave me Funksionet  
Nё tё njёjtёn forёm vendosni njё buton dhe dy text boxes. Pёr butonin vendosni
vlerёn pёr Text nё “Pergjigja Funksion” dhe pёr text boxes vendos Name
pёrkatёsisht nё txtNum1 dhe txtNum2. Kliko dy herё mbi butonin dhe type kodin
jashtё proçedurёs.
    Private Function MblithDyNumrat(ByVal numri1 As Integer, _
                    ByVal numri2 As Integer) As Integer
 
        Dim pergjigja As Integer
 
        pergjigja = numri1 + numri2 Page 176 of 239
 
 
        'MblithDyNumrat = pergjigja   'Edhe kjo fjali punon
        Return pergjigja
 
     End Function
Emri i funksionit ёshtё MblithDyNumrat, i cili kthen njё numёr Integer.
Gjithashtu dhe dy parametrat janё integer. Kodi i funksionit mbledh ç’farё gjendet
nё dy variablat dhe e kalon nё variablёn pergjigja. Pas kёsaj ç’farё gjendet nё
variablёn pergjigja kalohet nё emrin e funksionit. Kjo arrihet nё dy mёnyra:
MblithDyNumrat = pergjigja e cila ёshtё e kollajshme pёr tu kuptuar dhe nё
Return pergjigja e cila ёshtё mё shumё e pёrdorshme. Megjithatё tё dy mёnyrat
funksionojnё nё rregull.  
Brenda proçedurёs sё butonit type kodin:
        Dim num1 As Integer
        Dim num2 As Integer
        Dim result As Integer
 
        num1 = CInt(txtNumri1.Text)
        num2 = CInt(txtNumri2.Text)
 
        result = MblithDyNumrat(num1, num2)
 
        If result = 0 Then
            MsgBox("Provojeni perseri ")
        Else
            MsgBox("Pergjigja eshte " & result)
  End If    
Fillimi i kodit ёshtё i njojtur pёr ju. Fjalia nё tё cilёn ne i tregojmё programit tё
ekzekutojё funksionin ёshtё:  
  result = MblithDyNumrat(num1, num2)  
Nё kёtё fjali vlera qё ndodhet nё MblithDyNmrat vendoset nё variablёn result.
Me fjalitё nё vazhdim ju tashmё jeni familjarizuar dhe nuk duhet tё keni asnjё
vёshtirёsi. Run programin dhe tesojeni duke futur dy numra nё secilin text box
dhe mesazhin nё Message Box. Testojni pёrsёri programin duke type 0 nё tё dyja
text boxes dhe vёreni ndryshimin me mesazhin e parё.  
 Page 177 of 239
 
6.4.5 VB Modules  
Subs dhe Functions punojnё nё rregull kur ato vendosen brenda rreshtave “Public
Class Form1” dhe “End Class”. Jashtё formёs sё klasёs ato nuk funksionojnё. Por
kodi i tyre i vendosur brenda klasёs ёshtё disi konfjuz pёr lexusin, kёshtu qё njё
metodё e mirё ndarja e kёtij kodi dhe vendosja e tij diku tjetёr. Kjo mёnyrё quhet
Modules dhe jo vetёm lehtёson tё kuptuarit e kodit, por mundёson pёrdorimin e
tij dhe nё projekte tё tjera.  
Krijo njё projekt dhe shto njё buton nё tё. Pёr tё shtuar njё Module kliko Project
nga menu bar dhe kliko Add Modules. Nё tё njёjtёn mёnyrё si emёrohen dhe
projektet nё Visual Basic, vendosini njё emёr Modulit, nё rastin tonё
verifikoModule1.vb. Klikoni mbi butonin Add dhe vini re se nё ekran do tё shfqet
njё forёm e zakonshme pёr tё shkruar kodin. Vini re se Moduli me tё njёjtin emёr
ёshtё shtuar nё Solution Explorer. Plotёsojeni kodin siç tregohet nё vazhdim.  
Module verifikoModule1
 
    Private Sub MblithNumrat(ByVal num1 As Integer)
        Dim pergjigja As Integer
 
        pergjigja = num1 + 25
        MsgBox(pergjigja)
 
    End Sub
 
End Module  
Kliko mbi Form1.vb[Design] nё krye tё windows dhe kliko dy herё mbi butonin,
tё cilit mund tja ndёrroni emrin nё Sub_Module. Type kodin e mёposhtёm.  
  Call MblithNumrat(15)          
Vini re se pasi klikoni diku tjetёr MblithNumrat nёnvizohet me njё vijё blu, e cila
tregon se diçka ёshtё gabim me kodin tonё. Nёse vendosni mousin mbi tё vini re
se njё mesazh shfaqet ku thotё se nuk e njeh atё. Vini re fjalin:  
  Private Sub MblithNumrat(ByVal num1 As Integer)
Deklarimi Private tregon se MblithNumrat mund tё shihet vetёm brenda Modules,
por jo jashtё saj. Ndryshoni Private me Public dhe vini re se nёnvizimi pёr
MblithNumrat nuk ekziston mё. Tani kodi pёr modulin duhet tё duket si:
Module verifikoModule1
 
    Public Sub MblithNumrat(ByVal num1 As Integer) Page 178 of 239
 
        Dim pergjigja As Integer
 
        pergjigja = num1 + 25
        MsgBox(pergjigja)
 
    End Sub
 
End Module
Run programin dhe kliko butonin. Ju duhet tё merrni njё mesazh me vlerёn 40.
Stop Debugging.
Kliko nё verifikoModule1.vb nё krye tё window dhe type kodin pёr funksionin
me emrin VerifikoKodin. Type kodin pёr funksionin duke e krahasuar me kodin e
mёposhtёm, pasi nё vazhdim pёr tju ndihmuar ju po japim tё gjithё kodin qё
ndodhet nё Module.
     Module verifikoModule1
 
    Public Sub MblithNumrat(ByVal num1 As Integer)
        Dim pergjigja As Integer
 
        pergjigja = num1 + 25
        MsgBox(pergjigja)
 
    End Sub
 
    Public Function VerifikoKodin(ByVal kodi As String) As String
 
        kodi = StrConv(kodi, VbStrConv.Uppercase)
 
        Return kodi
 
    End Function
 
End Module
E vetmja e re nё kёtё kod ёshtё fjalia nё vazhdim. Vini re se kur e type kёtё fjali
pasi type VbStrConv. njё listё shfaqet me disa vlera. Klikoni dy herё mbi
Uppercase dhe ajo do ta sjellё atё si nё fjalinё e mёposhtёme. Vlerat e tjera tё
listёs kanё funksione tё ndryshme, ndёrsa vlera qё ne zgjodhёm konverton nё
shkronja kapitale.         
  kodi = StrConv(kodi, VbStrConv.Uppercase) Page 179 of 239
 
Zgjith pёrsёri formёn dhe shto nё tё njё buton dhe vendos vlerёn pёr Text nё
Funksion. Shto dhe njё text box dhe vendos vlerёn pёr Text nё “gjergji”. Kliko dy
herё mbi butonin dhe shkruaj kodin.  
    Private Sub Button2_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button2.Click
 
        Dim kerkoKodin As String
        Dim konvertoKodin As String
 
        kerkoKodin = Trim(TextBox1.Text)
 
        konvertoKodin = VerifikoKodin(kerkoKodin)
 
        TextBox1.Text = konvertoKodin
 
     End Sub   
Nё kodin e mёsipёrm pёrdoren dy variabla: kerkoKodin dhe konvertoKodin.
Variabla kerkoKodin pёrdoret pёr tё mbajtur tekstin qё ndodhet nё text box, nё
rastin tonё mban emrin gjergji. Variabla tjetёr konvertoKodin pёrdoret pёr tё
ruajtur vlerёn e cila merret nga funksioni VerifikoKodin. Nё rastin tonё kjo
variabёl ёshtё “Gjergji” Mё pas kjo vlerё kalohet nё text box. Run programin dhe
kliko butonin. Vini re se “gjergji” i cili ndodhet fillimisht nё text box konvertohet
nё “GJERGJI”.
Siç dhe ju e keni vёnё re kur type kodin pёr VbStrConv.Uppercase kur ju type
pikёn njё listё shfaqet. Nё kёtё listё janё disa komanda, por mё tё pёrdorshmet
janё Uppercase, Lowercase dhe Propercase. Ne e shpjeguam mё sipёr Uppercase,
ndёrsa Lowercase kryen tё njёjtin rol me Uppercase por konverton string nё
shkronja tё vogla. Propercase konverton nё shkronja kapitale vetёm shkronjat e
para tё tё gjitha fjalёve. Kjo ёshtё e rёndёsishme sidomos pёr adresa. Supozojmё
se kemi adresёn:
    20 bulevardi vlore skele
Objekti VbStrConv.Propercase do ta konvertoj atё nё:
    20 Bulevardi Vlore Skele    
 
 
 Page 180 of 239
 
Ushtrime dhe Problema
 
6.1  Shkruaj fjalitё pёr deklarimin e arrays:
a)  intNumer njё array me 50 integers
b)  strQytetet njё array me 5 qytete
c)  decPagesa njё array me 127.34, 50.54, 245.65 dhe 177.75
6.2  Gjeni ku qёndron gabimi pёr kodin e mёposhtёm?
    Dim intNumra(4) As Integer = { 10, 20, 30}
6.3  Sa elementё janё nё arrays:
a)  Dim intNumer(6, 7) As Integers
b)  Dim intNumer(76, 77) As Integers
c)  Dim intNumer(176, 177) As Integers
6.4  Cila prej fjalive tё mёposhtёme pёrcakton numrin e elementёve nё array?
a)  Number Elements
b)  Length
c)  Elements
d)  Size
6.5  Shkruaj njё kod i cili tё gjej vlerat mё tё vogla nё array dhe njё kod i cili tё
gjej vlerat mё tё mёdhaja:  
    Dim intNumra (5) As Integer = {  10, 20, 30, 40, 60, 70}
6.6  Shkruaj njё kod i cili tё llogarisi mesataren e elementёve tё array
    Dim intNumra (5) As Integer = {  10, 20, 30, 40, 60, 70}  
6.7  Ku qёndron ndryshimi ndёrmjet ByVal dhe ByRef?
6.8  Ku qёndron ndryshimi ndёrmjet funksionit dhe sub procedure? Page 181 of 239
 
 
KAPITULLI 7
 
MENUS
 
Visual Basic ju lejon ju tё krijoni njё sistem menu pёr çdo aplikim. Ne do
tё mёsojmё si tё shtojmё kёto menu tё cilat janё shumё tё pёrdorshme jo
vetёm gjatё programimit, por edhe pёr vetё Visual Basic, si pёr shembull:
File, Edit, View, Project, Help etj. Pothuajse gjatё gjithё kohёs qё ju
pёrdorni kompiuterin ju pёdorni kёto menu dhe studimi i tyre nё kёtё
kapitull do tju ndihmojё ju nё tё kuptuarin se si ato funksionojnё.   
 
7.1 OPEN MENU
 
Njё sistem menu ёshtё njё grumbullim i komandave i organizuar nё njё ose disa
drop down menus. Njё menu designer ju lejon ju tё krijoni njё mёnyrё vizuale tё
menu system pёr çdo forёm nё njё aplikim. Njё sistem menu ёshtё i ndёrtuar me
kontrollet nё MainMenu.  Realizimi i njё sistem menuje nuk ёshtё shumё i
vёshtirё, por mё parё le tё sigurohemi se kotrolli MainMenu gjendet nё Toolbox.
Shikoni me kujdes grupin e emrave nёn Menus & Toolbars e cila gjendet nё
Toolbox. Nёse MainMenu nuk gjendet nё Toolbox, kliko me butonin djathtas tё
mousit mbi Menus & Toolbars. Zgjidh opsionin Choose Items dhe prisni pak pasi
nevoitet njё periudhё kohe pёr tё sjellё Choose Toolbox Items nё ekran. Kёrkoni
MainMenu dhe klikoni nё katrorin nё krah tё saj. Ju duhet tё merrni tё njёjtёn
forёm me Fig. 7. 1. Klikoni butonin OK. Vini re se tani MainMenu duhet tё jetё
nёn Menus & Toolbars. Para se ju tё mёsoni si tё pёrdorni sistemin menu, ju
duhet tё mёsoni rreth disa prej komandave nё sistemin menu. Menu names ёshtё
emri qё secila drop down menu ka si: File, Edit, Help. . . .Nёse pёrdorusi klikon
mbi emrin e ndonjёrёs prej tyre ajo menu aktivizohet. Menu command ёshtё
komanda qё çdo menu ka. Pёrdorusi mund ta zgjedh atё duke klikuar mbi tёm ose
duke futur shortcut key. Shortcut key ёshtё njё kombinim butonsh nga keybord, i
cili shkakton qё komanda tё ekzekutohet. Pёr shembull zakonisht ctrl+C pёrdoret
pёr tё kopjuar, apo ctrl+S pёrdoret pёr tё ruajtur materialin etj. Submenu janё
disa prej komandave nё menu. Nёse hapni ndonjё prej menuve si File, Edit, Help Page 182 of 239
 
ju do tё vini re se nё krah tё disa emrave janё disa shigjeta me drejtim djathtas,
nёse vendosni mousin mbi to do tё shfaqen emrat pёr submenu.   
Fig. 7. 1 Shtimi i MainMenu nё Toolbox.
 
 
7.1.1 Shtimi i menuve nё VB  
Krijo njё program tё ri dhe klikoni dy herё mbi MainMenu nёn Toolbox. Kur ju e
bёni kёtё do tё shfaqet njё drejtkёndёsh nё krye tё formёs dhe nё fund tё saj do tё
shafaqet MainMenu1. Klikoni mbi drejtkёndёshin e shfaqur nё krye tё formёs dhe
vini re se si dy drejtkёndёsha tё tjerё krijohen si nё Fig. 7. 2. Type “&File” nё
kёtё menu. Shenja”&” pёrpara fjalёs “File” pёrdoret pёr tё krijuar njё shortcut.
Kur programi ёshtё duke run nё vend ju tё klikoni me mouse mbi File, ju mund tё
shtypni nё tё njёjtёn kohё “alt” + “F” dhe menuja do tё shfaqet.  
Type “&New” nё drejtkёndёshin qё ndodhet nёn File dhe vini re se dy
drejtkёndёsha tё tjerё krijohen kur ju klikoni nё tё.  Shtoni Open dhe Save nё
menu nё tё njёjtёn mёnyrё si mё lart. Forma do tё duket si nё Fig. 7. 3.
 
 
 Page 183 of 239
 
Fig. 7. 2 Shtimi i njё tjetёr Menuje nё forёm.
 
 
Fig. 7. 3 Nё menu File janё shtuar New, Open dhe Save.
 Page 184 of 239
 
 
Nё drejtkёndёshin i cili ndodhet poshtё “Save” kliko shenjёn “-“, e cila do tё
krijojё njё ndarje me pjesёn e sipёrme. Tani type “&Exit” nё drejtkёndёshin e
mёposhtёm. Ju duhet tё merrni tё njёjtёn forёm si nё figurёn e mёposhtme.  
Fig. 7. 4 New, Open, Save dhe Exit.
 
   
7.1.2 Shtimi i kodit pёr menut
Ju mund tё klikoni dy herё mbi emrin e ndonjёrёs prej fjalёve nё menu, si pёr
shembull nё Exit, por mos e bёni kёtё. Ne do tё shohim njё mёnyrё tjetёr si ta
bёjmё kёtё. Shtypni butonin F7 dhe shihni se kodi do tё shfaqet pёr ju. Nё drop
down list “Form1” qё shfaqet nё krahun e majtё vini re se tregohen shumё emra.
Pёr shembull MainItem6 is for Exit, por ёshtё e pamundur tё kuptohet se cili nga
kontrollet ёshtё. Le tё shkojmё mbrapa duke shtypur “shift” + “F7”.  
Klikoni mbi Exit dhe vendosni vlerёn e Name nё Properties nё mnuExit. Tani
klikoni pёrsёri butonin F7 dhe klikoni mbi shigjetёn pёr te shfaqur drop down list.
Vini re se emri ka ndryshuar nga MainItem6 nё mnuExit.  
Klikoni mbi tё dhe pastaj klikoni mbi shigjetёn qё ndodhet nё krahun e djathtё pёr
tё shfaqur njё drop down list. Objektet e shfaqura nё kёtё listё quhen Event.
Klikoni mbi Click dhe vini re se duhet tё shfaqet kodi si mё poshtё. Pёr ju rreshti Page 185 of 239
 
i kodit tё parё do tё shfaqet nё njё rresht i gjithё, por ne po e ndajmё atё nё dy
vetёm pёr arsy se duam ta shfaqim brenda faqes.    
Public Class Form1
 
    Private Sub mnuExit_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles mnuExit.Click
 
    End Sub
End Class      
Ju do tё shtoni vetёm njё rresht kod brenda saj, tё cilin ju e keni pёrdorur shumё herё dhe
nuk keni asnjё problem pёr ta kuptuar. Pasi tё shtoni kodin e mёposhtёm run programin
dhe klikoni mbi File dhe pastaj mbi Exit.  
Me.Close()
7.1.3 Shtimi i njё sub menuje
Shumё shpesh menut nё windows nё krah tё djathtё kanё njё shigjetё, nё tё cilёn
nёse mousi vendoset sipёr saj tё tjera menu hapen. Kёto lloj menush quhen sub
menu. Pёr tё krijuar njё sub menu veprohet pak a shumё nё tё njёjtёn mёnyrё si
dhe me menut. Kliko nё New nё tё njёjtin aplikim dhe nё drejtkёndёshin e
shfaqur djathtas ku shkruhet “Type Here” type New Project. Nё drejtkёndёshin
poshtё saj type New File dhe vini re se ajo ç’farё ju shihni duhet tё jetё si nё Fig.
7. 5. Run programin dhe testoni sub menus. Natyrisht pёrveç Exit, asnjё prej
komandave tё tjerё nuk punon pasi ne nuk kemi shkruajtur ndonjё kod pёr to. Ne
tashmё kemi plotёsuar njё menu, pak a shumё si ato tё cilat ne shohim gjatё gjithё
kohёs nё windows.    
Fig. 7. 5 Forma pёr sub menu.
 Page 186 of 239
 
Tashmё ju jeni tё aftё tё shtoni menu dhe sub menus nё forёm, kёshtu qё ne po i
tregojmё se si menut e tjera duhet tё duken.  
Shto main menut:
1)  &Edit  
2)  &View
Nё Edit Menu shto:
a)  &Undo
b)  Cu&t
c)  &Copy
d)  &Paste
Nё View Menu shto:
a)  View Textboxes
b)  View Labels  
c)  View Images
Ndryshoni Name property nё diçka tё pёrafёrtёt me funksionin e çdo menuje, nё
tё njёjtёn mёnyrё siç bёtё me Exit. Mos harroni parashtesёn mnu, si pёr shembull
mnuNew dhe kёshtu me radhё.  
 
7.1. 4 Kodi pёr Open File
Deri tani ne nuk kemi shkruar kod pёr ndonjё prej menuve, pra ato nuk kryjnё
asnjё funksion. Nёse do e shprehnim me fjalё tё tjera do tё thoshim se Edit>Copy
kopjon tekstin ose Edit>Paste kalon njё tekst nё pozicionin qё ne zgjedhim. Siç ju
e pёrdorni pothujse gjithё kohёn qё ju pёrdorni kompiuterin, nёse klikoni mbi
menun File dhe mbi Open njё dialog box do tё shfaqet, prej nga ju mund tё
klikoni nё filen e dёshiruar dhe tё klikoni Open. File e klikuar do tё hapet. Le ta
shohim kёtё se si realizohet nё aplikimin pёr menut tona.
Shtoni dy text boxes nё forёm dhe vendosni Multiline property nё True, e cila
gjendet nёn Properties.  Type pёr TextBox1 “Flamurtari eshte skuadra e futbollit e
qytetit te Vlores”, e cila do tё shfaqet nё disa rreshta. Shikoni me kujdes nё
Toolbox dhe gjeni OpenFileDialog1, kliko dy herё mbi tё. Vini re se ajo
vendoset ngjitur me MainMenu1, ndёrsa asnjё kontroll nuk shfaqet nё forёm.
Kliko mbi OpenFileDialog1 dhe ndrysho Name nё openFD.  Page 187 of 239
 
Le tё shkruajmё kodin pёr file Open. Kliko F7 dhe nё listёn drop down kliko
mnuOpen. Nё krahun tjetёr tё listёs drop down kliko mbi Click. Kodi i shfaqur
duhet tё jetё i njёjtё me kodin e mёposhtёm.  
    Private Sub mnuOpen_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles mnuOpen.Click
 
    End Sub    
Type midis dy rreshtave kodin dhe run programin. Njё tjetёr mёnyrё pёr tё run
programin ёshtё duke klikuar F5. Kliko File dhe pastaj Open, njё dialog box
shfaqet. Vini re se ne mund tё klikojmё mbi çdo file qё gjendet nё kompiuterin
tonё, por akoma nuk mund ti hapim ato.  
    openFD.ShowDialog()
Por ne mund dhe tё caktojmё nёpёrmjet kodit direktorin fillestare. Nё vazhdim
jepet i gjithё kodi, por vini re se vetёm njё fjali ёshtё shtuar. Run pёrsёri
programin dhe vini re se direktoria fillestare do tё jetё: “C:\”. Ju mund ta
ndryshoni kёtё nё njё tjetёr direktori.
    Private Sub mnuOpen_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles mnuOpen.Click
 
        openFD.InitialDirectory = "C:\"
        openFD.ShowDialog()
    End Sub
Vini re se kur dialog box shfaqet nё krye tё windows tregohet emri Open. Pra
nёse ne nuk i japim ndonjё vlerё Visual Basic atumatikisht vendos Open. Por nёse
ne duam tё vendosim njё vlerё si pёr shembull: Open Text File, kjo arrihet si mё
poshtё.
    Private Sub mnuOpen_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles mnuOpen.Click
 
        openFD.InitialDirectory = "C:\"
        openFD.Title = "Open Text File"
        openFD.ShowDialog()
    End Sub  
 Page 188 of 239
 
7.1.5 Open file
Nё shumicёn e dialog boxes tregohet njё listё file qё mund tё hapet. Pёr  shembull
pёr tё hapur text file njё prapashtesё “.txt” nevoitet. Plotёsoni kodin si mё poshtё
dhe run programin.
        openFD.InitialDirectory = "C:\"
        openFD.Title = "Open Text File"
        openFD.Filter = "Text Files|*.txt"
  openFD.ShowDialog()   
Pёr tё kujtuar se me ç’farё file kemi tё bёjmё nё fjalin qё sapo shtuam mund tё
shtojmё si mё poshtё. Run programin dhe ç’farё ju do tё shihni duhet tё jetё si nё
Fig. 7. 6.  
  openFD.Filter = "Text Files(*.txt)|*.txt"  
 
Fig. 7. 6 Forma pёr text file.
 
Por ne mund tё shtojmё dhe njё tjetёr filtёr. Pёr tё shfaqur file text file dhe
Microsoft Word Document, fjalin qё shtuam mё sipёr mund ta zёvendёsojmё me
fjalin:
  openFD.Filter = "Text Files|*.txt|Word Files|*.doc" Page 189 of 239
 
Ose pёr tё shtuar opsionin “(.doc)” qё tё shfaqet si dhe nё rastin e njё text file,
fjalia e mёsipёrme do tё jetё:
  openFD.Filter = "Text Files|*.txt|Word Files(*.doc)|*.doc"
Open dialog box ka njё property qё kthen emrin e file qё zgjidhet, e cila quhet
FileName.
  openFD.FileName   
Kjo ёshtё njё property qё kthen njё vlerё string, pra ju duhet ta vendosni kёtё
vlerё nё njё variabёl.
  Dim strFileName As String  
  strFileName = openFD.FileName
Vlera nё strFileName do tё mbaj emrin e file sё zgjedhur. Pra ndroshojeni kodin
nё kodin e mёposhtёm.  
        Dim strFileName As String
 
        openFD.InitialDirectory = "C:\"     
        openFD.Title = "Open Text File"               
        openFD.Filter = "Text Files(*.txt)|*.txt"                
        openFD.ShowDialog()                                      
        strFileName = openFD.FileName
 
  MsgBox(strFileName)
Run programin, kliko Open, zgjidh njё file me prapashtesёn “.txt” dhe kliko
Open. Vini re se nё MessageBox do tё shfaqet emri i file. Sipas file qё unё
zgjodha ju duhet tё shihni diçka tё ngjashme me Fig. 7. 7.
 
 
 
 
 
 
 Page 190 of 239
 
Fig. 7. 7 Shfaqja e emrit tё file.
 
   
7.2 SAVE MENU
 
Save Dialog Box funksionon nё tё njёjtёn mёnyrё si dhe Open Dialog Box,
megjithatё ju nuk mund tё pёrdorni tё njёjtin kontrol. Nёse kёrkoni me kujdes nё
Toolbox do tё gjeni njё kontroll tё quajtur SaveFileDialog. Kliko dy herё mbi tё
dhe vini re se ngjitur me openFD krijohet saveFD, por anjё kontroll nuk shtohet
nё forёm. Nё tё njёjtёn mёnyrё si ndryshuat Name property pёr open file
ndryshoni save property nё saveFD. Kliko mbi butonin F7 nё keybord pёr tё
sjellё nё ekran kodin e programit, ose pёrdor mёnyra tё tjera qё ju tashmё i njihni.
Kliko nё shigjetёn nё krye tё windows dhe kliko mbi mnuSave. Kliko nё krahun
tjetёr dhe kliko mbi objektin Click. Ju duhet tё shihni nё ekran njё kodё tё
ngjashёm me kodin e mёposhtёm, me tё vetmin ndyshim se ne po e ndajmё nё dy
pjesё rreshtin e parё pёr arsye se ёshtё shumё i gjatё pёr kёtё faqe.
    Private Sub mnuSave_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles mnuSave.Click
 
 
    End Sub  
Tani veproni nё tё njёjtёn mёnyrё si me kodin pёr Open file dhe shtoni: Page 191 of 239
 
  saveFD.ShowDialog()
  Initial Directory
  Title
  Filter
  File Name  
Ju duhet ta shkruani kodin e mёsipёrm pa ndonjё ndihmё, pasi ёshtё shumё i
ngjashёm me kodin pёr Open file. Megjithatё nё fig po japim se ç’farё ju duhet tё
shihni kur programi tё run dhe nё vazhdim kodin e plotё pёr proçedurёn pёr Save
file.  
Fig. 7. 8 Run mode pёr Save file.
 
 
    Private Sub mnuSave_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles mnuSave.Click
 
        Dim strFileName As String
 
        saveFD.InitialDirectory = "C:\"                    
        saveFD.Title = "Save Text File"                    
        saveFD.Filter = "Text Files(*.txt)|*.txt"            Page 192 of 239
 
        'saveFD.Filter = "Text Files|*.txt|Word Files|*.doc"
        saveFD.ShowDialog()                                
        strFileName = saveFD.FileName                      
 
        MsgBox(strFileName)                              
 
End Sub
Kini parasysh se kur programi ёshtё nё run mode, ashtu si Open file dhe Save file
kur klikohet nuk ruan gjё, pasi ju akoma nuk keni shtuar ndonjё kod pёr ta bёrё
kёtё.  
7.3 COPY, PASTE, CUT, UNDO MENU
 
Nё tё njёjtёn mёnyrё si thёrritёt mnuOpen ose mnuSave, thёrrisni mnuCopy dhe
mnuPaste. Type kodin pёr mnuCopy dhe mnuPaste si mё poshtё:
    Private Sub mnuCopy_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles mnuCopy.Click
 
        TextBox1.Copy()
    End Sub
 
    Private Sub mnuPaste_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles mnuPaste.Click
 
        TextBox2.Paste()
    End Sub
Vini re se nё proçedurёn sub mnuCopy ne kemi shkruar vetёm kodin
TextBox1.Copy(), i cili kopjon tekstin qё ndodhet nё text box 1 dhe e ruan atё nё
clipboard. Nё proçedurёn sub mnuPaste kodi TextBox2.Paste() ne po themi ç’farё
ёshtё nё clipboard kaloje nё text box 2. Run programin, nёse nuk ёshtё i zgjedhur
teksti nё text box 1, zgjidhe atё, kliko nё menun Edit dhe kliko Copy. Kliko nё
text box 2 dhe pastaj kliko nё Paste. Cfarё ju duhet tё shihni ёshtё si nё Fig. 7. 9.
Ç’farё ju realizuat me kodin e mёsipёrm ёshtё se fjalin qё ndodhej nё text box 1
“Flamurtari eshte skuadra e futbollit e qytetit te Vlores” e vendosёt nё text box 2.
Vini re se fjalia ndodhet gjithashtu dhe nё text box 1.  
Shtoni kodin pёr Cut menu dhe testojeni atё. Ju duhet tё shihni nё ekran si nё Fig.
7. 10, pra text box 1 ёshtё i boshatisur dhe text box 2 ka fjalin: “Flamurtari eshte
skuadra e futbollit e qytetit tё Vlorёs”  
        TextBox1.Cut()    Page 193 of 239
 
 
Fig. 7. 9 Copy dhe Paste Menu.
 
 
Fig. 7. 10 Cut Menu.
 Page 194 of 239
 
Pёr Undo Menu shkruaj kodin e mёposhtёm dhe testoje atё duke zgjedhur tekstin
nё text box 1 dhe duke klikuar Cut. Teksti do tё zhduket nga text box 1. Tani
kliko Undo dhe vini re se teksti kthehet pёrsёri nё text box 1.   
        TextBox1.Undo()
 
7.4 VIEW TEXTBOXES MENU
 
Shto kodin e mёposhtёm pёr View Textboxes.
    Private Sub mnuTextboxes_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles mnuTextboxes.Click
 
        TextBox1.Visible = False
        TextBox2.Visible = False
     End Sub
Run programin dhe kliko View dhe pastaj View Textbox. Vini re se tё dy text
boxet do tё zhduken nga forma. Pra pёr ta fshehur njё kontroll ju thjesht e
vendosni atё nё False. Nёse ju e doni atё pёrsёri nё forёm ju duhet ta vendosni atё
nё True. Por a mund tё harrihet kjo duke e klikuar atё? Ështё pak a shumё si njё
çelёs dritash i cili kthehet On dhe Off. Pra kur View Textbox tё klikohet
fillimisht kontrolli do tё fshihet dhe kur ajo tё klikohet pёrsёri kontrolli tё kthehet
pёrsёri nё forёm.  
Shikoni kodin nё vazhdim se si View Textbox kthehet On dhe Off.  
mnuTextboxes.Checked = Not mnuTextboxes.Checked      
Nё krahun e majtё kontrolli vendoset nё property Checked, ndёrsa krahu i djathtё
e vendos atё nё tё kundёrtёn e asaj qё ndodhet nё krahun e majtё. Run programin
dhe testo se si shenja pёrpara View Textbox shfaqet dhe zhduket sa herё ju
klikoni mbi tё. Vini re se shenja pёrpara View Textbox nuk korespondon me
fshehjen dhe shfaqen e text bexes. Ju duhet ta kuptoni se pёr tё arritur atё nevoitet
njё fjali If. Kjo realizohet sipas kodit tё mёposhtёm.  
    Private Sub mnuTextboxes_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles mnuTextboxes.Click
 
        If mnuTextboxes.Checked = True Then
            TextBox1.Visible = True
            TextBox2.Visible = True
        Else Page 195 of 239
 
            TextBox1.Visible = False
            TextBox2.Visible = False
        End If
        mnuTextboxes.Checked = Not mnuTextboxes.Checked
End Sub
Fjalia If kontrollon Checked property: nёse ajo ёshtё True i kthen text boxes nё
forёm dhe nёse ёshtё False text boxes do tё jenё tё fshehura. Nёse e keni vёnё re
kur programi run tё dy text boxes shfaqen. Nёse ju doni qё fillimisht ato tё jenё tё
fshehura klikoni mbi text box 1 nё design form dhe vendosni Visibility qё
ndodhet nё Properties, nё False. Kryeni tё njёjtat veprime dhe pёr text box 2 dhe
run programin.  
 
 7.5 VIEW IMAGES MENU
 
Nuk ёshtё e vёshtirё tё insert njё fotografi nё formёn tonё, ne e kemi bёrё kёtё
dhe mё parё. Megjithatё le ti rifreskojmё veprimet, pasi mё poshtё ne do tё insert
njё fotografi dhe me kod.  
Kliko dy herё nё PictureBox dhe njё drejtkёndёsh do tё krijohet nё formёn tuaj.
Nё Properties kliko nё Image dhe nё katrorin e vogёl me tre pika. Kliko nё Local
resource dhe nё Import. Zgjidhni njё fotografi qё ju e keni tё ruajtur nё
kompiuterin tuaj, si pёr shemubull unё zgjodha stemёn e Flamurtarit. Ju duhet tё
merrni diçka tё ngjashme me Fig. 7. 11. Kliko OK dhe fotografi do tё shfaqet
brenda drejtkёndёshit tё formёs. Nёse nuk do tё jetё nё pёrmasa tё njёjta me
drejtkёndёshin kliko SizeModule qё ndodhet nёn Properties dhe kliko nё
AutoSize.   
 
 
 
 
 
 
 
 Page 196 of 239
 
Fig. 7. 11 Import fotografi.
 
 
Tani le tё insert njё fotografi me View Menu. Sillni nё forёm kodin pёr
proçedurёn sub mnuImage_Click dhe type kodin si mё poshtё.
    Private Sub mnuImage_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles mnuImage.Click
 
        openFD.InitialDirectory = "C:\"
        openFD.Title = "Open an Image"
        openFD.Filter = "jpegs|*.jpg|gifs|*.gif|Bitmaps|*.bmp"
        Dim DidWork As Integer = openFD.ShowDialog()
    End Sub
Run programin, kliko nё View Image dhe ju duhet tё shihni nё ekran diçka tё
ngjashme me Fig. 7. 12.  
 
 
 
 Page 197 of 239
 
Fig. 7. 12 View Images menu.
 
 
Por akom ju nuk mund tё insert njё fotografi nё Picture Box, pёr tё realizuar kёtё
nevoitet kodi i mёposhtёm, ku siç dhe ju e kuptoni duhet tё pёrdoret fjalia If.  
        If DidWork <> Windows.Forms.DialogResult.Cancel Then
            strFileName = openFD.FileName
            PictureBox1.Image = Image.FromFile(strFileName)
            openFD.Reset()
  End If  
Vini re se ajo çfarё ne po themi nё rreshtin e dytё ёshtё: hap njё file dhe vendose
nё njё variabёl strFileName. Duke qenё se na nevoitet kjo variabёl duhet dhe
deklaruar si:
    Dim strFileName As String
Nё fjalinё tjetёr, pra nё rreshtin e tretё po loadim file qё zgjodhёm nё PictureBox.
Vini re rreshtin para End If. Pёr ta kuptuar mё mirё kodin e kёtij rreshti kthejeni si
koment dhe run programin. Kur ju zgjidhni njё fotografi pёr ta load, çdo gjё
funksionon nё rregull, por kur ju doni tё load njё tjetёr fotografi nё PictureBox
ngelet fotografia e parё. Kodi openFD.Reset() do tё rregullojё kёtё problem, pra
do tё risjelli direktorin e fillimit nё open file dialog box. Page 198 of 239
 
Mё poshtё po japim kodin e plotё pёr mnuImage.  
    Private Sub mnuImage_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles mnuImage.Click
 
        Dim strFileName As String
 
        openFD.InitialDirectory = "C:\"
        openFD.Title = "Open an Image"
        openFD.Filter = "jpegs|*.jpg|gifs|*.gif|Bitmaps|*.bmp"
        Dim DidWork As Integer = openFD.ShowDialog()
 
        If DidWork <> Windows.Forms.DialogResult.Cancel Then
            strFileName = openFD.FileName
            PictureBox1.Image = Image.FromFile(strFileName)
            openFD.Reset()
        End If
 
     End Sub   
 
Aplikimi Menu
Tani qё ju mёsuat si tё krijoni menut dhe si tё shkruani kodin pёr to, pёr tё fituar
ekzperien le tё krijojmё njё projekt me emrin Aplikimi Menu. Ne do tu
orientojmё nё çdo etapё tё projektit dhe gjithashtu do tё japim dhe kodin pёr
secilёn prej kontrolleve.   
Etapa 1: Krijoni tre files: File, Color dhe Help. Ndrysho Text property pёr
formёn nё Aplikimi Menu. Krijoni menun Exit e cila do tё shfaqet poshtё menus
File. Vendosni Name property pёrkatёsisht nё mnuFile dhe mnuFileExit. Krijoni
nёn menun Ngjyrat: Kuqe, Jeshile, Blu dhe Zeze. Vendosni Name property pёr
menun Ngjyrat nё mnuColor ose nё njё emёr tjetёr qё ju dёshironi si pёr
shembull mnuNgjyrat. Vendosni pёrkatёsist Name property nё: mnuColorRed,
mnuColorGreen, mnuColorBlue dhe mnuColorBlack. Pёr menun Help vendos
propety nё mnuHelp dhe nёn tё krijo menun About. Vendos property pёr tё nё
mnuHelpAbout. Shtoni nё forёm njё label me Name propery lblMesazhi dhe
vendos Text property nё “Welcom to Vlora”.  
Etapa 2: Type kodin e mёposhtёm pёr secilin kontroll dhe testoni programin.  
  Public Class Form1
 
    Private Sub mnuFileExit_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles mnuFileExit.Click Page 199 of 239
 
 
        'Mbyll windows
        Me.Close()
    End Sub
 
    Private Sub mnuColorRed_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles mnuColorRed.Click
 
        'Vendos njyren e kuqe
        lblMessage.ForeColor = Color.Red
    End Sub
 
    Private Sub mnuColorGreen_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles mnuColorGreen.Click
 
        'Vendos njyren e jeshile
        lblMessage.ForeColor = Color.Green
    End Sub
 
    Private Sub mnuColorBlue_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles mnuColorBlue.Click
 
        'Vendos njyren e blu
        lblMessage.ForeColor = Color.Blue
    End Sub
 
    Private Sub mnuColorBlck_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles mnuColorBlck.Click
 
        'Vendos njyren e zeze
        lblMessage.ForeColor = Color.Black
    End Sub
 
    Private Sub mnuColorVisible_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles mnuColorVisible.Click
 
        'Vendos label visible ose jo visible
        If mnuColorVisible.Checked = True Then
            lblMessage.Visible = False
            mnuColorVisible.Checked = False
        Else
            lblMessage.Visible = True
            mnuColorVisible.Checked = True
        End If
    End Sub
 Page 200 of 239
 
    Private Sub mnuHelpAbout_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles mnuHelpAbout.Click
 
        'Tregon nje window
        MessageBox.Show("Menu System Demo" & vbCrLf & _
                    "Menuja help me Visual Basic 2005")
    End Sub
End Class
 
7.6 MANIPULIMI I STRINGS
 
Krijo njё projekt tё ri dhe shto nё forёm dy text boxes dhe njё buton. Nё text box
1 vendos Text property “flamurtari”. Kliko dy herё mbi text box 1 dhe type kodin:
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles TextBox1.TextChanged
 
        Dim strUpper As String
 
        strUpper = TextBox1.Text
        TextBox2.Text = strUpper.ToUpper()
    End Sub  
Nё kёtё kod nё rreshtin e dytё ne po theme se ç’farё ndodhet nё TextBox1
vendoset nё njё variabёl tё deklaruar si string. Mё pas nёpёrmjet metodёs tё
ofruar nga Visual Basic ToUpper text konvertohet nё shkronja kapitale. Sё
fundmi ç’farё ndodhet nё variablёn strUpper vendoset nё TextBox2. Run
programin dhe ajo ç’farё ju duhet tё shihni nё ekran duhet tё jetё si Fig. 7. 13.   
 
 
 
 
 
 
 
  Page 201 of 239
 
Fig. 7. 13 Metoda ToUpper.
 
 
Shtoni njё buton dhe njё text box, pёr tё cilёn vendosni Name property nё
txtEmri. Kliko dy herё mbi butonin dhe shto kodin. Run programin dhe kliko mbi
butonin pёrkatёs pa shkruajtur ndonjё karakter nё text box.  
        Dim emri As String
 
        emri = txtEmri.Text
 
        If emri = "" Then
 
            MsgBox("Ju lutem fusni emrin ne text box")
            Exit Sub
 
  End If
Nёse pёrdorusi nё vend tё type ndonjё karakter type njё hapёsirё boshe fjalitё e
mёsipёrme nuk do tё gjejnё ndonjё gabim, pasi nё variabёl do tё kalohet njё vlerё.
Si mund ta rregullojmё kёtё?
Kjo arrihet nёpёrmjet metodёs Trim e cila ofrohet nga Visual Basic. Funksioni i
kёsaj metode nuk ёshtё gjё tjetёr veçse tё lёvizi tё gjitha hapёsirat nga njё string.
Pёr shembull supozojmё se kemi njё string “ Vlora” (vini re hapёsirёn nё fillim tё Page 202 of 239
 
string), metoda Trim do tё na japi njё string “Vlora”. Pёrdorimi i saj nё Visual
Basic ka disa mёnyra, por ne po japim atё mё tё thjeshtёn pёr tu mbajtur mend.
Supozojmё se nё njё program kemi njё text box me Name property txtEmri dhe
njё variabёl emri.    
    emri = Trim(txtEmri.Text)   
Nё kёtё moment njё tjetёr pyetje qё mund tё lindi ёshtё: Po si mund tё testojmё
njё string pёr vlerat numerike? Pёr kёtё pёrdoret Chars property. Por mё parё le
tё rifreskojmё Char pasi ato kanё ndryshim me njёra tjetrёn.
Char ёshtё njё tip variable e cila mund tё mbajё çdo herё vetёm njё karakter. Vini
re mёnyrёn e deklarimit tё mёposhtme.  
  Dim njeKarakter As Char
Variabla njeKarakter mund tё ruajё njё karakter si:
  njeKarakter = “a”
  Ose mund ta shkruajmё nё rresht si:
  Dim njeKarakter As Char = “a”
Ne mund tё shkruajmё dhe njё fjalё nё string por nё variabёl pёrsёri do tё ruhet
vetёm shkronja e parё. Si nё shembullin e mёposhtёm do tё ruhet vetёm shkronja
e parё qё ёshtё a.  
  Dim njeKarakter As Char = “altin”  
Chars ёshtё njё metodё pёr tipin e variablave string. Kjo ёshtё dhe diferenca me
Char pasi ajo ёshtё njё variabёl. Chars funksionon si:
  emri = emri.Chars(i)   
Klikoni dy herё mbi butonin dhe type kodin e mёposhtёm. Ju nuk duhet tё keni
probleme me tё kuptuarin e kodit pasi ai ёshtё i njojtur pёr ju. Run programin dhe
testojeni atё.  
        Dim njeKarakter As Char
        Dim emri As String
        Dim i As Integer
        Dim gjatesiaTekstit As Integer
 
        emri = Trim(txtChars.Text)
        gjatesiaTekstit = emri.Length
        MsgBox("Numri i karaktereve eshte: " & gjatesiaTekstit) Page 203 of 239
 
 
        For i = 0 To gjatesiaTekstit - 1
            njeKarakter = emri.Chars(i)
            MsgBox(njeKarakter)
  Next i
 
7.7 PROJEKTI AXHENSI TURISTIKE  
 
Nё kёtё projekt ju do tё ndёrtoni njё aplikim pёr njё axhensi turistike, e cila ofron
tre oferta pёr pushime: Romё, Rimini dhe Venecia.  
Romё: Axhensia turistike ofron pushime nё Romё me cmimin bazё 1000 dollarё
personi pёr 10 ditё. Duke qenё se Roma ёshtё njё qytet shumё i lashtё dhe me
histori mjaft tё vjetёr, axhensia ofron pёr tursitёt qё dёshirojnё persona qё do ti
udhёzojnё dhe do ti shoqёrojnё gjatё udhёtimit tё tyre nё qytet. Cmimi pёr kёtё
lloj shёrbimi ёshtё 300 pёr person pёr person.  
Rimini: Njё tjetёr ofertё e axhensis ёshtё pushime nё Rimini pёr tre ditё me
vetёm 400 dollarё pёr person. Pёr turistёt qё dёshirojnё ka ofertё speciale me 80
dollarё nё ditё, ku punonjёs tё hotelit do ti shoqёrojnё turistёt gjatё aktiviteteve
sportive duke u mbajtur paisjet e tyre dhe bagazhet. Njё tjetёr ofertё ёshtё edhe
akomodimi i tyre nё dhoma lluksoze tё hotelit me 150 dollarё nё natё shtesё.  
Venecia: Oferta e fundit e axhensisё turistike ёshtё pesё ditё pushimi nё Venecia.
Cmimi bazё do tё jetё 700 dollarё personi dhe njё ofertё me 50 dollarё personi,
pёr ata persona tё cilёt dёshirojnё tё marrin me qira disa nga paisjet e ofruara nga
hoteli si: motorra uji, varka apo paisje tё tjera.  
Axhensia ofron njё ulje prej 10 pёrqind pёr grupet mbi 5 persona, por axhensia
kёrkon njё depozit 50 pёrqind nёse ju do tё dёshironi tё rezervoni njё prej
paketave.            
Etapa 1: Krijoni njё projekt me emrin Axhensi Udhetaresh. Ju deri tani keni
ndёrtuar aplikime me njё forёm, por nё kёtё projekt do tё keni tё bёni me katёr
forma. Nёse ju nuk keni vёshtirёsi me aplikimet me njё forёm, nuk do tё keni
asnjё problem dhe me aplikimet me shumё forma, pasi secila forёm funksionon
njёsoj si njё forёm e vetme. Pёr tё krijuar njё forёm ёshtё fare kollaj duke klikuar
mbi Projekct nё properties windosws dhe duke klikuar mbi Add Windows
Form. Kur pёrdorni shumё forma nё njё projekt, ju duhet tё vendosni Option
Strict On nё Project Properties Windows. Mundet ajo tё jetё e vendosur On,
megjithatё sigurohuni pёr kёtё duke klikuar djathtas kur mouse tё jetё i Page 204 of 239
 
vendosur mbi emrin e projektit Axhensi Udhetaresh, qё ndodhet nёn Solution
Explorer. Zgjidh Properties nga lista e shfaqur, kliko Compile nё krahun e majtё
dhe nё kutin pёr Option Strict zgjidh On. Ju duhet tё shihni nё ekran Fig. 7. 14.
Mbylleni Project Properties window.   
 
Fig. 7. 14 Kthimi On nё Option strict.
 
 
Etapa 2: Vendos Name property nё frmMain dhe vendos kontrollet si nё Fig. 7.
15. Name properties pёr label qё do tё pёrdoren nё kod janё: lblPaketa,
lblPjesemarresit, lblCmimiParaUljes, lblUlja, lblTotal dhe lblDepozit. Shtoni njё
MainMenu dhe krijoni tre menu file: File, Paketa dhe Help. Pёr File shtoni Reset
dhe Exit, tё cilat do tё shёrbejnё pёr tё pastruar formёn pёr Axhensinё Turistike.
Pёr Paketa shtoni Rome, Rimini dhe Venecia, tre paketa qё ofrohen nga axhensia
pёr udhёtimet turistike nё Itali. Sё fundmi pёr Help shtoni About, qё do tё shfaqi
njё mesazh. Referohuni dhe Fig. 7. 15 pёr tё parё se si menut do tё duken nё
forёm.        
 
 
 Page 205 of 239
 
Fig. 7. 15 frmMain Axhensi Turistike.
 
 
Nё kodin pёr formёn frmMain, proçedura krijon njё objekt frmRome dhe e shfaq
atё.
        Dim romeForm As New frmRome
 
        'Tregon paketen e formes per ne Rome
   romeForm.ShowDialog()
Kodi vazhdon duke treguar çmimin pёr kёtё paketё. E njёjta ide pёrsёritet pёr tё
tre paketat. Nё vazhdim po japim kodin e plotё pёr formёn frmMain.  
Public Class frmMain
 
    Private Sub mnuFileReset_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles mnuFileReset.Click
 
        'Reset formen
        lblPaketa.Text = String.Empty
        lblPjesemarresit.Text = String.Empty
        lblCmimParaUljes.Text = String.Empty
        lblUlja.Text = String.Empty
        lblTotal.Text = String.Empty
        lblDepozit.Text = String.Empty
 Page 206 of 239
 
        'Pastron variablat global
        g_strPaketa = String.Empty
        g_intPjesemarresit = CStr(0)
        g_decTotal = 0
    End Sub
 
    Private Sub mnuPaketaRome_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles mnuPaketaRome.Click
 
        'Llogarit dhe shfaq koston per paketen ne Rome
        Dim romeForm As New frmRome
 
        'Tregon paketen e formes per ne Rome
        romeForm.ShowDialog()
        'Shfaq koston dhe depoziten e kerkuar
        TregonCmimin()
    End Sub
 
    Private Sub mnuPaketaRimini_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles mnuPaketaRimini.Click
 
        'Llogarit dhe shfaq koston per paketen ne Rimini
        Dim riminiForm As New frmRimini
 
        'Tregon paketen e formes per ne Rome
        riminiForm.ShowDialog()
        'Shfaq koston dhe depoziten e kerkuar
        TregonCmimin()
    End Sub
 
    Private Sub mnuPaketaVenecia_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles mnuPaketaVenecia.Click
 
        'Llogarit dhe shfaq koston per paketen ne Rome
        Dim veneciaForm As New frmVenecia
 
        'Tregon paketen e formes per ne Rome
        veneciaForm.ShowDialog()
        'Shfaq koston dhe depoziten e kerkuar
        TregonCmimin()
    End Sub
 
    Private Sub mnuHelpAbout_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles mnuHelpAbout.Click
 
        'Shfaq About box Page 207 of 239
 
        MessageBox.Show("Cmimi per " & "Axhensin Turistike", "About")
    End Sub
 
    Private Sub TregonCmimin()
 
        'Llogarit dhe shfaq uljen (nese ka), pagesen totale,
        'dhe depoziten e kerkuar
        Dim decUlja As Decimal          'Ulja
        Dim decTotal As Decimal         'Cmimi Total
        Dim decDeposit As Decimal       'Deposita e kerkuar
 
        'Llogarit uljen nese ka ulje
        decUlja = CalcDiscout(CInt(g_intPjesemarresit), g_decTotal)
        'Llogarit cmimin total
        decTotal = g_decTotal - decUlja
        'Llogarit depoziten e kerkuar
        decDeposit = CalcDeposit(decTotal)
 
        'Shfaq te dhenat
        lblPaketa.Text = g_strPaketa
 
        lblPjesemarresit.Text = g_intPjesemarresit.ToString
        lblCmimParaUljes.Text = FormatCurrency(g_decTotal)
        lblUlja.Text = FormatCurrency(decUlja)
        lblTotal.Text = FormatCurrency(decTotal)
        lblDepozit.Text = FormatCurrency(decDeposit)
    End Sub
 
    Private Sub mnuFileExit_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles mnuFileExit.Click
 
        'Mbyll windows
        Me.Close()
    End Sub
End Class
Etapa 3: Shtoni njё forёm nё projektin tuaj dhe vendosni Name property
frmRome. Vendosni kontrollet si nё Fig. 7. 16, ku Name property pёr text boxes
janё: txtUdhezime dhe txtJoUdhezime dhe pёr label janё: lblPjesemarres,
lblCmimBaze, lblUdhezime dhe lblTotal. Vendosni Name  property pёr tre
butonat e formёs si: btnLlogarit, btnReset dhe btnMbyll. Nё vazhdim jepet kodi
pёr frmRome. Shkruani kodin dhe ju mbaruat dhe me formёn e paketёs pёr Romё.  
 
  Page 208 of 239
 
Fig. 7. 16 frmRome.
 
 
Public Class frmRome
 
    'Kjo forem llogarit cmimin per per paketen e Romes
    '------------------------------------------------------
 
    'Deklaron variablat class-level
    Const decBazeRoma As Decimal = 1000     'Cmimi baze
    Const decUdhezimRoma As Decimal = 300   'Cmimi per udhezimet
 
    Private Sub btnLlogarit_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles btnLlogarit.Click
 
        'Llogarit dhe shfaq cmimin total per informacionin
        Dim intNumUdhezime As Integer
        Dim intNumJoUdhezime As Integer
        Dim decCmimBaze As Decimal
        Dim decCmimUdhezim As Decimal
 
        'Merr numrin e fillestarve dhe avancuarve
        intNumUdhezime = CInt(txtUdhezime.Text)
        intNumJoUdhezime = CInt(txtJoUdhezime.Text)
 
        'Llogarit numrin e pjesemarresve
        g_intPjesemarresit = CStr(intNumUdhezime + intNumJoUdhezime)
 
        'Llogarit cmimin baze Page 209 of 239
 
        decCmimBaze = CDec(decBazeRoma * CDbl(g_intPjesemarresit))
 
        'Llogarit cmimin per udhezimet
        decCmimUdhezim = intNumUdhezime * decUdhezimRoma
 
        'Llogarit cmimin total
        g_decTotal = decCmimBaze + decCmimUdhezim
 
        'Shfaq te dhenat e kesaj forme
        lblPjesemarresit.Text = g_intPjesemarresit.ToString
        lblCmimBaze.Text = FormatCurrency(decCmimBaze)
        lblUdhezime.Text = FormatCurrency(decCmimUdhezim)
        lblTotal.Text = FormatCurrency(g_decTotal)
 
        'Vendos emrin e paketes
        g_strPaketa = "Roma"
    End Sub
 
    Private Sub btnReset_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles btnReset.Click
 
        'Pastron te gjitha fushat
        txtUdhezime.Clear()
        txtJoUdhezime.Clear()
        lblPjesemarresit.Text = String.Empty
        lblCmimBaze.Text = String.Empty
        lblUdhezime.Text = String.Empty
        lblTotal.Text = String.Empty
 
        'Pastron variablat global
        g_strPaketa = String.Empty
        g_intPjesemarresit = CStr(0)
        g_decTotal = 0
 
        'Kthen kursorin
        txtUdhezime.Focus()
    End Sub
 
    Private Sub txtJoUdhezime_Validating(ByVal sender As Object, _
    ByVal e As System.ComponentModel.CancelEventArgs) Handles txtJoUdhezime.Validating
 
        'txtAvancuar duhet te mbaje nje pozitiv numer
        If Not IsPositive(txtJoUdhezime.Text) Then
            'Shfaq mesazhin per gabimin
            MessageBox.Show("Ju lutem fusni nje numer pozitiv ", "Gabim")
            'Zgjidh permbajtjen e txtAvancuar dhe vendos kursorin Page 210 of 239
 
            txtJoUdhezime.SelectAll()
            txtJoUdhezime.Focus()
            e.Cancel = True
        Else
            e.Cancel = False
        End If
    End Sub
 
    Private Sub txtUdhezime_Validating(ByVal sender As Object, _
    ByVal e As System.ComponentModel.CancelEventArgs) Handles txtUdhezime.Validating
 
        'txtFillestar duhet te mbaje nje pozitiv numer
        If Not IsPositive(txtUdhezime.Text) Then
            'Shfaq mesazhin per gabimin
            MessageBox.Show("Ju lutem fusni nje numer pozitiv ", "Gabim")
            'Zgjidh permbajtjen e txtFillestar dhe vendos kursorin
            txtUdhezime.SelectAll()
            txtUdhezime.Focus()
            e.Cancel = True
        Else
            e.Cancel = False
        End If
    End Sub
 
    Private Sub btnMbyll_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles btnMbyll.Click
 
        'Mbyll window
        Me.Close()
    End Sub
End Class
Etapa 4: Shtoni njё forёm tё re dhe quheni frmRimini. Vendosni kontrollet duke
ju referuar Fig. 7. 17. Name property pёr text boxes janё: txtZakonshem dhe
txtLuks dhe pёr label janё: lblPjesemarres, lblCmimBaze, lblBagazh dhe
lblTotal. Vendosni Name  property pёr tre butonat e formёs: btnLlogarit,
btnReset dhe btnMbyll. Mё poshtё jepet kodi pёr frmRimini.   
 
 
 
 
   Page 211 of 239
 
Fig. 7. 17 frmRimini.
 
 
Public Class frmRimini
 
    'Kjo forem llogarit cmimin per paketen e Riminit
    '----------------------------------------------------
 
    'Deklaron variablat class-level
    Const decCMIM_RIMINI As Decimal = 400
    Const decCMIM_SHTES As Decimal = 80
    Const decCMIMI_LUKS As Decimal = 150
 
    Private Sub btnLlogarit_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles btnLlogarit.Click
 
        'Llogarit dhe shfaq cmimin total per informacionin
        Dim intNumeron As Integer
        Dim intLluks As Integer
        Dim decCmimBaze As Decimal
        Dim decCmimBagazh As Decimal
 
        'Merr numrat ne secilin pozicion
        intNumeron = CInt(txtZakonshem.Text)
        intLluks = CInt(txtLuks.Text)
 Page 212 of 239
 
        'Llogarit numrin e njerezve  
        g_intPjesemarresit = CStr(intNumeron + intLluks)
 
        'Llogarit cmimin baze
        decCmimBaze = CDec(decCMIM_RIMINI * CDbl(g_intPjesemarresit))
 
        'Llogarit cmimin e bagazhit
        decCmimBagazh = (intNumeron * decCMIM_SHTES) + (intLluks * decCMIMI_LUKS)
        'Llogarit cmimin total
        g_decTotal = decCmimBaze + decCmimBagazh
 
        'Shfaq te dhenat ne kete forem
        lblPjesemarresit.Text = g_intPjesemarresit.ToString()
        lblCmimiBaze.Text = FormatCurrency(decCmimBaze)
        lblBagazh.Text = FormatCurrency(decCmimBagazh)
        lblTotal.Text = FormatCurrency(g_decTotal)
 
        'Vendos emrin ne pakete
        g_strPaketa = "Rimini"
    End Sub
 
    Private Sub bnReset_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles bnReset.Click
 
        'Pastron te gjitha fushat
        txtZakonshem.Clear()
        txtLuks.Clear()
        lblPjesemarresit.Text = String.Empty
        lblCmimiBaze.Text = String.Empty
        lblBagazh.Text = String.Empty
        lblTotal.Text = String.Empty
 
        'Pastron variablat global
        g_strPaketa = String.Empty
        g_intPjesemarresit = CStr(0)
        g_decTotal = 0
 
        'Kthen kursorin
        txtZakonshem.Focus()
    End Sub
 
    Private Sub txtLuks_Validating(ByVal sender As Object, _
    ByVal e As System.ComponentModel.CancelEventArgs) Handles txtLuks.Validating
 
        'txtLuks duhet te mbaje nje pozitiv numer
        If Not IsPositive(txtLuks.Text) Then Page 213 of 239
 
            'Shfaq mesazhin per gabimin
            MessageBox.Show("Ju lutem fusni nje numer pozitiv ", "Gabim")
            'Zgjidh permbajtjen e txtLuks dhe vendos kursorin
            txtLuks.SelectAll()
            txtLuks.Focus()
            e.Cancel = True
        Else
            e.Cancel = False
        End If
    End Sub
 
    Private Sub txtWildernessLodge_Validating(ByVal sender As Object, _
    ByVal e As System.ComponentModel.CancelEventArgs) Handles txtZakonshem.Validating
 
        'txtWildernessLodge duhet te mbaje nje pozitiv numer
        If Not IsPositive(txtZakonshem.Text) Then
            'Shfaq mesazhin per gabimin
            MessageBox.Show("Ju lutem fusni nje numer pozitiv ", "Gabim")
            'Zgjidh permbajtjen e txtWildernessLodge dhe vendos kursorin
            txtZakonshem.SelectAll()
            txtZakonshem.Focus()
            e.Cancel = True
        Else
            e.Cancel = False
        End If
    End Sub
 
    Private Sub btnClose_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles btnClose.Click
 
        'Mbyll formen
        Me.Close()
    End Sub
End Class
 
Etapa 5: Shtoni njё forёm tё re dhe quheni frmVenecia. Vendosni kontrollet duke
ju referuar Fig. 7. 18. Name property pёr text boxes janё: txtQira dhe txtJoQira
dhe pёr label janё: lblPjesemarres, lblCmimBaze, lblCmimiQiras dhe lblTotal.
Vendosni Name  property pёr tre butonat e formёs: btnLlogarit, btnReset dhe
btnMbyll. Mё poshtё jepet kodi pёr frmRimini.   
 
 Page 214 of 239
 
   
Fig. 7. 18 frmVenecia.
 
 
Public Class frmVenecia
 
    'Kjo forem llogarit cmimin per ne Venecia
    '----------------------------------------------
 
    'Deklaron variablat class-level
    Const decCMIM_VENECIA As Decimal = 700
    Const decCMIM_QIRA As Decimal = 50
 
    Private Sub btnLlogarit_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles btnLlogarit.Click
 
        'Llogarit dhe shfaq cmimin total per informacionin
        Dim intQira As Integer
        Dim intJoQira As Integer
        Dim decCmimBaze As Decimal
        Dim decCmimQira As Decimal
 
        'Merr numrat ne secilin pozicion
        intQira = CInt(txtQira.Text)
        intJoQira = CInt(txtJoQira.Text) Page 215 of 239
 
 
        'Llogarit numrin e pjesemarresve  
        g_intPjesemarresit = CStr(intQira + intJoQira)
 
        'Llogarit cmimin baze
        decCmimBaze = CDec(decCMIM_VENECIA * CDbl(g_intPjesemarresit))
 
        'Llogarit cmimin e qirase
        decCmimQira = intQira * decCMIM_QIRA
        'Llogarit cmimin total
        g_decTotal = decCmimBaze + decCmimQira
 
        'Shfaq te dhenat ne kete forem
        lblPjesemarresit.Text = g_intPjesemarresit.ToString()
        lblCmimiBase.Text = FormatCurrency(decCmimBaze)
        lblCmimiQiras.Text = FormatCurrency(decCmimQira)
        lblTotal.Text = FormatCurrency(g_decTotal)
 
        'Vendos emrin ne pakete
        g_strPaketa = "Venecia"
    End Sub
 
    Private Sub btnReset_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles btnReset.Click
 
        'Pastron te gjitha fushat
        txtQira.Clear()
        txtJoQira.Clear()
        lblPjesemarresit.Text = String.Empty
        lblCmimiBase.Text = String.Empty
        lblCmimiQiras.Text = String.Empty
        lblTotal.Text = String.Empty
 
        'Pastron variablat global
        g_strPaketa = String.Empty
        g_intPjesemarresit = CStr(0)
        g_decTotal = 0
 
        'Kthen kursorin
        txtQira.Focus()
    End Sub
 
    Private Sub txtJoQira_Validating(ByVal sender As Object, _
    ByVal e As System.ComponentModel.CancelEventArgs) Handles txtJoQira.Validating
 
        'txtJoQira duhet te mbaje nje pozitiv numer Page 216 of 239
 
        If Not IsPositive(txtJoQira.Text) Then
            'Shfaq mesazhin per gabimin
            MessageBox.Show("Ju lutem fusni nje numer pozitiv ", "Gabim")
            'Zgjidh permbajtjen e txtJoQira dhe vendos kursorin
            txtJoQira.SelectAll()
            txtJoQira.Focus()
            e.Cancel = True
        Else
            e.Cancel = False
        End If
    End Sub
 
    Private Sub txtQira_Validating(ByVal sender As Object, _
    ByVal e As System.ComponentModel.CancelEventArgs) Handles txtQira.Validating
 
        'txtQira duhet te mbaje nje pozitiv numer
        If Not IsPositive(txtQira.Text) Then
            'Shfaq mesazhin per gabimin
            MessageBox.Show("Ju lutem fusni nje numer pozitiv ", "Gabim")
            'Zgjidh permbajtjen e txtQira dhe vendos kursorin
            txtQira.SelectAll()
            txtQira.Focus()
            e.Cancel = True
        Else
            e.Cancel = False
        End If
    End Sub
 
    Private Sub btnMbyll_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles btnMbyll.Click
 
        'Mbyll formen
        Me.Close()
    End Sub
End Class
 
Etapa 6: Shtoni njё Module duke klikuar Project dhe Add Module. Quheni atё
CmimFavorizus.vb dhe type kodin.
Module CmimFavorizus
 
    'Kodi per module
    '------------------------------------------
 
    'Perqindja e kerkuar per depoziten Page 217 of 239
 
    Private Const decDEPOSIT_PERQIND As Decimal = 0.5D
 
    'Minumumi i personave pjesemarres per ulje  
    'perpara uljes
    Private Const intMIN_ULJE As Decimal = 5
    Private Const decULJE_PERQIND As Decimal = 0.1D
 
    'Deklaron variablat global
    Public g_strPaketa As String             'Emri i paketes
    Public g_intPjesemarresit As String      'Numri pjesemarresve
    Public g_decTotal As Decimal             'Cmimi total
 
    Public Function CalcDiscout(ByVal intNumPeople As Integer, _
        ByVal decSubtotal As Decimal) As Decimal
 
        'Ky funksion kthen uljen, nese ka
        '--------------------------------------
 
        If (intNumPeople >= intMIN_ULJE) Then
            Return decSubtotal * decULJE_PERQIND
        Else
            Return 0
        End If
    End Function
 
    Public Function CalcDeposit(ByVal decPackageCharges As Decimal) As Decimal
 
        'Ky funksion kthen depoziten e kerkuar
        Return decPackageCharges * decDEPOSIT_PERQIND
    End Function
 
    Public Function IsPositive(ByVal strArg As String) As Boolean
 
        'Ky funksion pranon nje string argument dhe e kthen ate True
        'nese string permban nje pozitiv numer, ndryshe e kthen False
        If IsNumeric(strArg) Then
            If CDbl(strArg) >= 0 Then
                Return True
            End If
        End If
        Return False
    End Function
 
End Module
 Page 218 of 239
 
Etapa 7: Run programin dhe nёse shfaqen ndonjё gabim referohuni pёrsёri nё
pjesёt ku tregohet se ka gabime. Pasi tё keni rregulluar gabimet programi duhet tё
compilet nё rregull. Ju sapo keni pёrfunduar njё program nga jeta e pёrditshme, i
cili nuk ёshtё dhe aq i thjeshtё pёr tu ndёrtuar.  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Page 219 of 239
 
Ushtrime dhe Problema
 
7.1  Çfarё ndodh nёse ju vendosni Checked property pёr MenuItem nё True?
Po nёse e vendosni nё False?
7.2  Njё forёm pёrdor kёtё fjali pёr tё mbyllur metodёn?
a)  Form.Close()
b)  Me.Close()
c)  Close(Me)
d)  ThisForm.Close()
7.3  Nёse njё sistem menu ka njё komand Cut nё menun Edit, kush do tё jetё emri i
kontrollit pёr menun?  
a)  mnuEditCut
b)  mnuEdit
c)  mnuCutEdit
d)  mnuCut
7.4  Shkruani kodin pёr View Labels, ku mё parё duhet tё shtoni dy Label nё
forёm. Kёto Labels duhet tё kthehen On dhe Off nё tё njёjtёn kohё me text
boxes.  
7.5  Gjeni gabimin nё fjalinё e mёposhtme.
Dim emri As frmemri
Emri.ShowDialog()
7.6  Shpjegoni pёr kodin e mёposhtёm kush do tё jetё vlera nё variablёn emri
nёse nё run mode pёrdorusi fut njё hapёsirё boshe “ “. Po nёse pёrdorusi
nuk type asnjё karakter “” cila do tё jetё vlera e variablёs.   
7.7  Kush do tё jetё karakteri qё do tё mbajё variabla emri?
    Dim njeString As String
    Dim njeKarakter As Char
    njeString = “flamurtari”
    njeKarakter = njeString.Char(6)     
7.8  Duke ju referuar kodit pёr projektin e Axhensis Turistike gjeni gabin nё
kodin e formёs frmRome tё mёposhtёm. Si mendoni kodi i mёposhtёm do Page 220 of 239
 
tё copilet apo jo? Nёse do tё compilet çfarё vlere do tё ketё variabla
intNumJoUdhezime
        'Merr numrin e fillestarve dhe avancuarve
        intNumUdhezime = CInt(txtUdhezime.Text)
  intNumJoUdhezime = CInt(txtUdhezime.Text)
7.9  Duke ju referuar projektit tё Axhensis Turistike kush do tё jetё vlera e
funksionit tё mёposhtёm nёse vlera e variablёs intNumPeople = 3? Nёse
do tu nevoitet ta rishikoni nё program kёtё funksion, ai gjendet nё Module
CmimFavorizus.    
    Public Function CalcDiscout(ByVal intNumPeople As Integer, _
        ByVal decSubtotal As Decimal) As Decimal
 
        'Ky funksion kthen uljen, nese ka
        '--------------------------------------
 
        If (intNumPeople >= intMIN_ULJE) Then
            Return decSubtotal * decULJE_PERQIND
        Else
            Return 0
        End If
     End FunctionPage 221 of 239
 
 
KAPITULLI 8
 
DATABASES
 
Shumica e bizneseve nё ditёt e sotme ruajnё tё dhёnat e kompanisё nё
databases. Visual Basic e bёnё mё tё lehtё pёr tё parё dhe modifikuar
databases, tё cilat janё krijuar me Microsoft Access, Microsoft SQL dhe tё
tjera. Nё kёtё kapitull ju do tё mёsoni konceptet bazё tё database si dhe
shfaqjen e tabelave database nё kontrollin DataGridView. Ky kapitull do tё
pёrfundojё me njё projekt, i cili do tё tregojё si tё shfaqen tё dhёnat e
database nё list boxes, text boxes, labels dhe combo boxes.     
 
8.1 Ç’FARË ËSHTË NJË DATABASE?
 
Njё database ёshtё njё bashkim i njё apo mё shumё tabelave.  Kёto tabela
mbajnё tё dhёna tё njё ideje tё caktuar, si pёr shembull njё tabel mund tё mbajё
informacion pёr punёtorёt e njё kompanie si numёr telefoni, emai etj. Njё tabelё
tjetёr mund tё mbajё informacion rreth pagesёs sё punёtorёve dhe kёshtu mund tё
kemi disa tabela sipas kёrkesave tё secilёs kompani. Shikoni nё Fig. 8. 1 tabelёn
database tё quajtur Departamente, e cila pёrmban informacion rreth
departamenteve tё njё kompanie. Secili rresht i tabelёs korespondon nё njё
departament, tё cilёt quhen record. Kollonat tё quajtura dept_id, dept_emri dhe
num_punetor quhen fields. Çdo tabelё ka njё design, e cila tregon pёr çdo kollon
emrin, tipin e tё dhёnave dhe madhёsin. Nё Fig. 8. 2 tregohet design pёr tabelёn
Departamente. Vini re kollonёn e parё nё Fig. 8. 1 dept_id. Duke qenё se ajo
identifikon çdo departament ajo ёshtё e vetme dhe quhet primary key. Nё kёtё
tabel primary key ёshtё njё kollon, por mund tё jetё dhe dy ose mё shumё
kollona. Ështё e qart se nё tabelёn Departamente do tё ekzistoj vetёm njё dept_id
i quajtur primary key. Por nё njё tabel tjetёr Punёtorёt, mund tё ekzistojё asnjё,
njё apo shumё dept_id. Nё rastin kur ekziston tё paktёn njё dept_id nё tabelёn
Punёtorёt ai quhet foreign key. Nёse do e pёrmblidhnim me njё fjali ç’farё thamё
mё lartё mund tё thoshim: Database ёshtё njё grumbullim tё dhёnash qё janё
tё organizuara nё tabela, rreshta dhe kollona.    Page 222 of 239
 
Fig. 8. 1 Tabela Departamente
dept_id  dept_emri  num_punetor
1  zyre punes  20
2  Llogaria  15
3  Compiuter  7
4  Research  30
    
Fig. 8. 2 Tabela Departamente design.
Field  Type  Madhesia
dept_id  Integer  -32,768 ne 32,767
dep_emri  Text  30 char
num_punetor  Integer  -32,768 ne 32,767
 
8.1.1 Microsoft Access Data Types
Ju do tё mёsoni si tё pёrdorni tabelat databases tё krijuara nga Microsoft Access.
Kur ju tё pёrdorni Visual Basic pёr tё lexuar tё dhёnat, ju duhet tё zgjidhni
variablat koresponduse ndёrmjet Microsoft Access dhe Visual Basic. Shikoni Fig.
8. 3.   
Fig. 8. 3 Krahasimi i Microsoft Access types me Visual Basic types.
Access  Vissul Basic
Auto Number  Long
Data Type  Data, Data Time
Byte  Byte
Currency   Decimal
Integer  Long Integer
Single  Single
Text  String
Yes/No  Boolean
 
8.1.2 Dizenjimi i Tabelave Database  
Njё skemё database ёshtё njё dizenjim i tabelave, kollonave dhe mardhёnie
ndёrmjet tabelave. Pёr ta kuptuar mё mirё le tё marrim njё shembull. Supozoni se
ju doni tё ruani tё dhёnat pёr anёtarёt e njё shoqate. Le tё supozojmё se ju doni tё
ruani emrin, mbiemrin, numrin e telefonit, e-mail dhe takimet e anёtarёve tё
shoqatёs. Fig. 8. 4 tregon njё dizenjim tё mundshёm. Vini re se pёr zgjedhjen e
madhёsis sё tё dhёnave ju ёshtё mirё tё zgjidhni njё madhёsi disi mё tё madhe,
pasi ju nuk do tё donit qё fields tё vepronin jasht hapёsirёs sё caktuar prej jush.  Page 223 of 239
 
Fig. 8. 4 Tabela pёr anёtarёt e shoqatёs.
Emri  Tipi  Madhesia
emri  Text  20
mbiemri  Text  20
telefon  Text  15
e-mail  Text  10
telefon  Byte  1
 
8.2 KRIJIMI I DATABASE NË VB
 
Visual Basic nё mёnyrё tё thjeshtё bёn tё mundur shfaqjen e databases nё
Window dhe Web. Nё kёtё kapitull ju do tё mёsoni si ti shfaqni tё dhёnat nё
Window dhe nё kapitullin tjetёr do tё mёsoni si ti shfaqni tё dhёnat nё Web.  
Pёr tё lidhur tabelat database me formёn nё programin tonё, Visual Basic pёrdor
njё teknikё tё quajtur data binding. Kontrollet specifike qё sigurojnё kёtё lidhje
quhen component, ndёrsa software qё realizon kёtё proçes quhet wizard.  
Nё Fig. 8. 5 tregohen tё dhёnat qё mund tё lёvizin nga tabelat database nё njё
aplikim dhe ansjelltas. Nё vazhdim jepet shpjegimi pёr secilin prej blloqeve. Vini
re se shigjetat tregojn nё tё dy drejtimet, e cila tregon se tё dhёnat mund tё lёvizin
nё tё dy krahёt.   
  Data source ёshtё zakonisht njё database, por mund tё pёrfshi njё file
text, Excel, tё dhёna nё  XML ose shёrbime nё Web.  
  Biding source mban tё dhёnat e database si: emrin, pozicionin, user
name, pasword dhe informacione tё tjera qё nevoiten pёr lidhjen.  
  Table adapter tёrheq tё dhёnat prej njё ose disa databases dhe i kalon ato
nё programin tonё. Table adapter ka aftёsin tё zgjedhi disa ose tё gjithё
rreshtat e tabelёs, tё shtoj rreshta tё rinj, tё fshij rreshta ose tё modifikoj
rreshtat ekzistus. Pёr tё realizuar kёtё pёrdoret gjuha e quajtur Structured
Query Language (SQL), e cila pothuajse ёshtё e pёrdorshme nga tё
gjitha databases.
  Dataset ёshtё njё kopjo e tё dhёnave tё marra nga tabelat database. Table
adapter tёrheq tё dhёnat dhe kёto tё dhёna kopjohen nё dataset. Programi
jonё mund ti modifikoj rreshtat nё dataset, tё shtoj rreshta tё rinj ose tё
fshij rreshta. E rёndёsishme ёshtё se kёto ndryshime ndodhin vetёm nё
dataset dhe jo nё database, vetёm nёse ne do i tregojmё table adapter tё
bёj kёto ndryshime nё database, ndyshimet psqyrohen dhe nё database. Page 224 of 239
 
Dataset mund tё marri tё dhёna nga njё ose disa data source dhe nga njё
apo mё shumё tabela database.   
    
 
Fig. 8. 5 Tё dhёnat lёvizin nga data source nё aplikim.
Le tё shohim njё shembull tё thjesht se si mund tё pёrdoret Wizard pёr tё krijuar
njё program i cili lexon tё dhёnat nga database dhe na lejon ne ti pёrdorim ato.
Para se ju tё filloni krijimin e projektit, le tё krijojmё njё database, ta ruajm atё nё
njё file qё mё vonё tё mund ta pёrdorim. Nё Microsoft Ofice gjeni programin
Microsoft Office Access dhe hapeni atё. Nё pamje tё parё ky program ёshtё
shumё i ngjashёm me Exel, kёshtu qё ju nuk duhet tё keni ndonjё problem pёr tё
krijuar tabelёn e mёposhtme. Kini kujdes kur ta ruani kёtё file, emri qё ju
dёshironi ti jepni duhet tё mbarojё me .mdb. Ne e kemi ruajtur me emrin
8.2_Libri Adresave.mdb. Kur ky program tё hapet kollonat do tё shfaqen me
emrin Field1 e kёshtu me radhё. Ju tashmё e kuptoni kёtё pasi ne thamё se pёr
tabelat nё database, kollonat quhen field. Emrin e field ndryshojeni duke klikuar
djathtas nё mous dhe duke zgjedhur opsionin Rename. Pasi tё keni vendosur
fields: Emri, Mbiemri, Adresa, Telefoni dhe e-mail vendosni vlerat sipas tabelёs
sё mёposhtme ose nёse dёshironi mund ti ndryshoni ato me persona tё tjerё tё
familjes ose tё shoqёrisё suaj. Ju mund ta keni vёnё re, se nё krahun e majtё
gjendet njё file me emrin Tabela1, ose ju mund t’ja kishit ndёrruar emrin kur ju
ruajtёt punёn tuaj. Nё rastin tonё kjo nuk ka rёndёsi pasi ne po pёrdorim vetёm
njё tabelё, kёshtu qё nuk ekziston mundёsia qё ti ngatёrrojmё ato. Siç e
shpjeguam qё nё fillim tё kёtij kapitulli ju mund tё krijoni mё shumё se njё tabel
database.      
Table1
ID  Emri  Mbiemri Adresa Telefoni  e-mail
1 Gjergji  Shaska  Rr. 31  20-4251  gshaska@oakland.edu
2 Dritan  Lena  Rr. 32  20-4252  dlena@procredit.al
3 Erion  Kisi  Rr. 33  20-4253  ekisi@yahoo.com
4 Eno  Bushi  Rr. 34  20-4254  ebushi@hotmail.com
5 Geron  Brati  Rr. 35  20-4255  gbrati@mail.com
6 Arjan  Lamaj  Rr. 36  20-4256  alamaj@yahoo.com
7 Taulant Shaska  Rr. 37  20-4257  tshaska@mail.com
8 Edmon  Arizaj  Rr. 38  20-4258  earizaj@hotmail.com Page 225 of 239
 
Table1
ID  Emri  Mbiemri Adresa Telefoni  e-mail
9 Ilir  Xhomaqi Rr. 39  20-4259  ixhomaqi@yahoo.com
10 Vrano  Xhomaqi Rr. 40  20-4260  vxhomaqi@mail.com
 
 Krijoni njё projekt tё ri dhe quheni atё Libri Adresave. Ngjitur me Solution
Explorer ndodhet Data Source, kliko mbi tё. Nё krahun e djathtё tё ekranit do tё
hapet njё window Data Source dhe nё tё do tё gjendet njё link me ngjyrё blu ku
thuhet Add New Data source,shiko Fig. 8. 6.  
Fig. 8. 6 Add New Data Source
 
 Pёr tё shtuar njё data source kliko nё tё dhe duhet tё shihni nё ekran Error!
Reference source not found..  
Fig. 8. 7 Local Database File.
 Page 226 of 239
 
Ju doni tё lidheni me Local Database file, kёshtu qё klikoni mbi tё dhe klikoni
Next. Klikoni nё New Conection dhe nё window qё shfaqet kliko Change. Kliko
mbi Microsoft Access Database File (OLE DB) dhe pasi tё zgjidhni filen e
ruajtur nё kompiuterin tuaj duhet tё shihni nё ekran Fig. 8. 8. Kliko OK, kliko
Next dhe njё mesazh ju shfaqet, kliko Yes. Pastaj kliko Next dhe nё window qё
shfaqet kliko nё shenjat “+” pёr tё hapur tё gjithё objektet. Pasi tё gjithё objektet
tё jenё tё hapur kliko nё katrorin Tables, vini re se tё gjithё objektet janё
zgjedhur si nё Fig 8.9.
 
Fig. 8. 8 Add Connection forёm.
 
 
 
 
 
 
 Page 227 of 239
 
Fig. 8. 9 Data Source Configuration Wizard.
 
 
Kliko Finish dhe nёse ju po pёrdorni tё njёjtёn database me tonёn ju duhet tё
shikoni nё ekran diçka tё ngjashme me Fig. 8. 10.
Fig. 8. 10 Vendosja e dataset nё projektin tonё.
 Page 228 of 239
 
Ju vutё re se gjatё proçesit tё transferimit tё tё dhёnave nga database nё datset, njё
fjali pyetёse ju kёrkoi se cilin prej objekteve ju doni tё trasferoni nё dataset ( ju i
zgjodhёt tё gjithё). Por ju mund tё zgjedhnit tё kopjonit nё dataset njё, disa ose tё
gjithё objektet e tabelёs sё database. Kjo arrihet duke klikuar nё atё objekt qё ju
doni tё transferoni, megjithatё nё rastin tonё ne duam tё transferojmё tё gjitha
objektet e tabelёs. Pёr kёtё nё vend qё tё klikoni mbi secilin prej tyre mёnyra mё
e thjeshtё ёshtё tё klikoni nё katrorin Tables. Ajo ç’farё ju sapo realizuat ёshtё se
tё dhёnat e tabelёs sё njё database i transferuat nё programin tuaj, pra nё data set.
Tani qё ju i keni tё dhёnat nё program ju mund ti pёrdorni ato.  
Pёr tё shtuar njё field nё forёm, nёse nuk e mbani mend se ç’farё field ёshtё
kthehuni mbrapa dhe rifreskojeni atё, field ёshtё njё kollonё, kliko mbi njё  prej
objekteve nё dataset dhe duke e mbajtur krahun e majtё tё mousit tё shtypur
tёrhiqeni dhe vendoseni mbi forёm dhe aty leshojeni. Pra pёr tё shtuar objektin e
parё ID, klikoni mbi tё dhe mbajeni mousin majtas tё shtypur, dhe tёrhiqeni atё
mbi forёm.  
Nё momentin qё ju lini butonin e mousit mbi forёm vini re se si nё forёm krijohet
njё text box dhe njё label. Kjo tregohet nё Fig. 8. 11. Run programin duke klikuar
F5 ose nё mёnyrat e tjera qё ju tashmё jeni familjarizuar me to. Vini re ç’farё
shfaqet dhe ndaloni programin sё runuri.
Fig. 8. 11 Label dhe text box nё forёm.
 Page 229 of 239
 
Nё tё njёjtёn mёnyrё njёra pas tjetrёs ju mund tё vendosni tё gjitha objektet e
dataset nё forёm. Vini re se ato janё tё vendosura nё mёnyrё shumё tё çrregullt
dhe nё vend qё tё mundoheni tё rregulloni secilёn prej tyre, njё mёnyrё e shpejtё
pёr ti vendosur nё njё paraqitje vёrtet tё rregull ёshtё kjo. Kliko me krahun e
majtё tё mouse mbi labelёn e parё, Emri, mbani tё shtypur ctrl dhe klikoni mbi tё
gjitha label. Kliko nё Format nё krye tё windows, kliko Align>Left. Tё gjitha
label vendosen nё tё njёjtёn renditje nё lidhje me labelёn ID. Kliko pёrsёri nё
Format dhe kliko Vertical Spacing>Make Equal. Label rediten me tё njёjtёn
distancё vertikale me njёra – tjetrёn. Veproni nё tё njёjtёn mёnyrё me text boxes.
Ç’farё ju duhet tё shihni ёshtё si nё Fig. 8. 12.  
Run programin dhe vini re se si informacionet e formёs do tё plotёsohen sipas tё
dhёnave qё ёshtё plotёsuar dataset. Nё Fig. 8. 13 tregohet se si informacioni pёr
Gjergjin plotёsohet me: ID, Emrin, Mbiemrin, Adresa, Telefoni dhe e-mail. Vini
re butonat nё krye tё formёs tё cilёt i japin mundёsi pёrdorusit tё lёvizi para ose
mbrapa nё rreshtat e tabelёs database. Numri i rreshtit i cili mbush informacionin
pёr formёn dhe numri maksimal i rreshtave jepen nё krye tё formёs.    
Ndaloni sё runuri aplikimin dhe save projektin. Tani qё ju mёsuat se si tё
transferoni tё dhёnat nga database nё dataset ёshtё momenti qё ju dhe tё mёsoni
se si tё shtoni apo tё hiqni rreshta nga dataset. Kini parasysh se ndryshimi i tё
dhёnave nё dataset nuk do tё ndryshoj tё dhёnat nё database, pёrveç se rastit kur
ju i tregoni table adapter tё ndryshoj tё dhёnat.  
 
 
 
 
 
 
 
 
 
 
 Page 230 of 239
 
Fig. 8. 12 Forma e aplikimit e pёrfunduar.
 
 
Fig. 8. 13 Aplikimi duke runur.
 
 Page 231 of 239
 
Pёr tё fituar mё tepёr eksperiencё me tranferimin e tё dhёnave tё tabelave tё
databases, le tё krijojmё dhe njё program tjetёr ku do tё mёsojmё se si tё shtojmё
ose tё heqim rreshta nё dataset. Nё kёtё projekt ne na nevoitet filimishtё tё
krijojmё njё tabelё database si tabela e mёposhtme.  
Table1
ID  Emri  Mbiemri Ore_Plota Data_Fillimit  Rroga
1 Gjergji Shaska  Po  07/15/2008  $100,000.00
2 Dritan  Lena  Po  12/02/2007  %90,000.00
3 Ilir  Xhomaqi Jo  11/08/1993  %70,000.00
4 Eno  Bushi  Po  06/12/2005  %80,000.00
5 Olsi  Durolli  Po  02/24/2006  %60,00.00
 
Krijo njё projekt tё ri dhe quheni RrogatPunetorve. Vendos Text property pёr
Form1 nё “Rrogat e Punetoreve” dhe ruajeni projektin. Nё Tolbox kliko dhe
mbaje mousin tё shypur mbi DataGridView, duke e mbajtur mousin tё shtypur
tёrhiqeni dhe lёshojeni mbi forёm. Ju duhet tё shihni Fig. 8. 14 nё ekranin tuaj.  
Fig. 8. 14 Vendosja e DataGridView nё forёm.
 
 Page 232 of 239
 
Nё fund tё window tё shfaqur kliko mbi Dock in parent container dhe grid do tё
mbushi komplet formёn. Kliko mbi shigjetёn qё tregon posht nё krah tё Choose
Data Source (Fig. 8. 15) dhe kliko mbi Add Project Data Source.  
Fig. 8. 15 Add Project Data Source
 
Zgjith Database dhe kliko Next. Nё tё njёjtёn mёnyrё si dhe nё projektin e
mёparshёm tё kёtij kapitulli kliko New Connection, dhe ndiq tё gjitha veprimet si
nё projektin e parё. Ç’farё ju duhet tё shihni pasi ti ndiqni me kujdes tё gjitha
veprimet ёshtё Fig. 8. 16. Pёr tё parё saktёsishtё tё njёjtёn forёm me tonёn ju
mund tu nevoitet tё zmadhoni formёn deri sa ta pёrshtasni me tabelёn.    
Fig. 8. 16 Kontrolli DataGridView.
 Page 233 of 239
 
 
Ruani projektin dhe klikoni mbi F5 pёr ta runur atё. Ju duhet tё shihni Fig 8.17.
Fig. 8. 17 Aplikimi duke runur.
 
 
Klikoni mbi kollonёn Mbiemri dhe vini re se si rreshtat renditen sipas Sorting.
Ne e kemi shpjeguar mё parё se si sorting funksionon duke u bazuar nё tabelёn
ASCII (shikoni Apendix I). Klikoni pёrsёri mbi kollonёn Mbiemri dhe vini re se
rreshtat vendosen nё mёnyrё tё anasjelltё, pra rreshti i parё do tё jetё i fundit dhe
anasjelltas.  
Lёvize kursorin nё kufirin midis dy kollonave deri sa kursori tё kthehet
horizontalisht, mbani tё shtypur mousin djathtas dhe lёvizeni majtas apo djathtas.
Vini re se gjerёsia e kollonёs ndryshon.  
Klikoni nё njё prej ndarjeve mbi anёn e majtё tё tabelёs, jashtё kollonёs ID, vini
re se i gjithё rreshti do tё vendoset nё ngjyrёn blu. Klikoni Delete dhe vini re se
ky rresht u fshi nga tabela.  
Klikoni mbi rreshtin e fundit, atje ku gjendet njё yll. I gjithё rreshti do tё vendoset
nё ngjyrёn blu. Tani ju mund tё vendosni informacion pёr secilёn kollon. Nё
dataset pёrdorusi mund tё shtojё rreshta, tё heqi rreshta ose tё kryjё veprime tё
tjera me to dhe kёto ndryshime nuk reflektohen nё database. Pёr tu siguruar pёr Page 234 of 239
 
kёtё ndaloni programin dhe run atё pёrsёri. Vini re se tabela ёshtё e pandryshuar.
Ndaloni programin sё runuri.        
 
8.3 STRUCTURED QUERY LANGUAGE
 
Structured Query Language (SQL) ёshtё njё gjuhё e cila pёrdoret pёr tё punuar
me databases. Fillimisht ajo u pёrdor nga IBM nё 1970, por shumё shpejt ajo u
adoptua nga pothuajse çdo software pёr databases. SQL konsiston nё disa fjalё
bazё tё cilat pёrdoren pёr tё ndёrtuar fjali tё njojtura si queries, tё cilat i japin
komandёn  database pёr ti ekzekutuar. Por kini parasysh se megjithse SQL ёshtё
njё gjuhё programimi, ju nuk e pёrdorni atё pёr tё shkruajtur aplikime, pasi ajo
pёrdoret vetёm pёr tё bashkpunuar me database. Pёr tё shkruajtur aplikime ju keni
nevoj pёr njё gjuhё si Visual Basic.    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Page 235 of 239
 
 
Ushtrime dhe Problema
 
8.1  Krijoni njё tabel nё programin Mcrosoft Access me fields: emri, mbiemri, ditёlindja,
vendlindja dhe profesioni, pёr 5 prej shokёve/shoqeve tuaj. Transeroni tё dhёnat nё njё
projekt tё quajtur: Informacion dhe shfaqini ato nё formёn e kёtij projekti.  
8.2  Pёr tё njёjtёn tabelё qё krijuat nё problemёn 6.1, krijoni njё program duke pёrdorur
DataGridView. Run programin dhe shto dhe tre rreshta tё tjerё nё dataset. Page 236 of 239
 
Appendix I           
Logical Operators
Operatori Not
Kur kushti ёshtё False operatori Not e kthen atё True dhe e anasjellta kur kushti ёshtё False  
operatori Not e kthen atё True.
 
Truth Table
Condition  Not Condition
True  False
False  True
 
Operatori And
Operatori And ёshtё True vetёm kur tё dy kushtet janё True, nё tё gjithё rastet e tjerё ёshtё False.
 
 
Truth Table
Condition1  Condition2  Condition1 And Condition2
True  True  True
True  False  False
False  True  False
False  False  False
 
Operatori Or
Operatori Or kthehet True kur tё paktёn njё prej prej kushteve ёshtё True. Nё tё kundёrt ёshtё
False.
 Page 237 of 239
 
Truth Table
Condition1  Condition2  Condition1 Or Condition2
True  True  True
True  False  True
False  True  True
False  False  False
Operatori Xor
Operatori Xor kthehet True kur njёri prej kushteve ёshtё True, por jo tё dy True ose tё dy False.
Truth Table
Condition1  Condition2  Condition1 Xor Condition2
True  True  False
True  False  True
False  True  True
False  False  False Page 238 of 239
 
Appendix II        
ASCII Table
American Standard Code for Information Interchange (ASCII), shqiptohet æski ёshtё
pёrcaktimi i karaktereve bazuar nё alfabetin Anglisht. ASCII prezanton tekstin nё kompjuter,
paisjet e komunikimit dhe paisjeve tё tjera qё punojnё me text.  
Historikisht, ASCII u zhvillua nga kodet telegrafike dhe pёrdorimi i parё i tijё ishte seven-bit i
krijuar nga Bell. Zyrtarisht puna pёr ASCII filloj nё 6 Tetor 1960 dhe standarti i parё u puplikua
nё 1963, u rishqyrtua pёrsёri nё 1967, dhe botimi mё i plotё u botua nё vitin 1986.   
ASCII pёrfshin pёrcaktimin pёr 128 karaktere, 33 janё tё paprintushёm, 94 janё tё printushёm
dhe hapёsira boshe. Karakteret ASCII pёrdoren nё ditёt e sotme nё tё gjithё kompiuterat.
 
Konvertimi Hex nё Decimal
    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F.
0  000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015
1  016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031
2  032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047
3  048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063
4  064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079
5  080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095
6  096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111
7  112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
8  128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
9  144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
A  160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
B  176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
C  192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
D  208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
E  224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
F  240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
 
 
 
 
 Page 239 of 239
 
ASCII Table
  

Make a Free Website with Yola.