' Gambas primjer upisavanja u tekstualni file ako postoji, ako ne postoji onda kreira tekstualni file na poziciju(user.home).

'Gambas listbox kontrola(komponenta).
' Dodavanje imena i brojeva telefona, brisanje, izmjena postojećeg upisa, pretraživanje po imenu.
' Gambas writing to a file, Gambas Reading the files are, Gambas create text file, Gambas writing to a listbox, Gambas reading the listbox are.
' Ovo je školski primjer Gambas programa. Hrvatsko sučelje i moj doprinos linux zajednici u Hrvatskoj i svim ljudima dobre volje.

'Ovdje mo žete skinuti pdf: tel-imenik-file
Ovdje mo žete skinuti deb datoteku za linux Ubuntu, Mint:
Telefonski imenik .deb tatoteka



'U nastavku je kod..


Public Sub _new()
End


Public hFile As File



Public Sub Form_Open()

ucitaj

End

Sub ucitaj()


Dim sLine As String

If Exist(User.home & "/tel.txt") Then

lst1.clear

hFile = Open User.home & "/tel.txt" For Input


While Not Eof(hFile)
Line Input #hFile, sLine
lst1.Add(sLine)
Wend




Else

hFile = Open User.home & "/tel.txt" For Create

lst1.clear

hFile = Open User.home & "/tel.txt" For Input

'
While Not Eof(hFile)
Line Input #hFile, sLine
lst1.Add(sLine)
Wend
Endif
hfile.close
txttrazi.SetFocus


End

Public Sub txttrazi_Change()

Dim i As Integer
lst1.mode = Select.multiple
For i = 0 To lst1.List.Count - 1

If Mid(UCase(lst1.List[i]), 1, Len(txttrazi.text)) = UCase(txttrazi.text) Then

lst1[i].selected = True
If Trim(txttrazi.text) = "" Then
lst1[i].selected = False
End If
Else
lst1[i].selected = False

Endif
Next


End








Sub upisi()

Dim hfile As File
Dim i As Integer


hFile = Open User.home & "/tel.txt" For Create
For i = 0 To lst1.count - 1
If lst1.List[i] <> "" Then
Print #hFile, lst1.List[i]
End If
Next

hfile.Close


End


Public Sub Button1_Click()
Dim i As Integer

Dim intQuestion As Integer
Dim broj As Integer
broj = 0

For i = 0 To lst1.Count - 1
If lst1[i].selected = True Then
broj = broj + 1

Endif

Next

If broj < 1 Then
Message("Označite na listi koga želite brisati!")
Return
End If

For i = 0 To lst1.Count - 1
If lst1[i].selected = True Then
intQuestion = Message.Question("Želite obrisati? " & lst1.List[i], "&Da", "&Ne")

Select Case intQuestion
Case 1 'vbyes
lst1[i].text = ""

Case 2

End Select

Endif
Next
upisi
ucitaj
txttrazi.SetFocus
End




Public Sub Button2_Click()


Dim i As Integer
Dim imeduzina As Integer
Dim cijeliupis As String ' cijeli upis da bi mogli označiti poslije
Dim slovo As String ' velika slova u imenu
Dim veliko As String ' cijelo ime
Dim brojrazmaka As Integer
Dim trazenjerazmaka As Integer
Dim ime As String
Dim telefon As String

ime = InputBox("Upis imena:(max 22 znaka) ", "Primjer: Petrović Petar")
If Len(Trim(ime)) > 22 Then
Message("Ime: Max. 22 znaka")
Return
Else If Len(Trim(ime)) < 1 Then
Return
End If

telefon = InputBox("Upis telefona:(max 14 znakova) ", "Primjer: 092 / 303 - 8990 ")
If Len(Trim(telefon)) > 22 Then
Message("Telefon: Max. 14 znakova")
Return
Else If Len(Trim(telefon)) < 1 Then
Return
End If
ime = Trim(ime)
telefon = Trim(telefon)

If Len(Trim(ime)) < 1 And Len(Trim(telefon)) < 1 Then
Message("Niste upisali ime ili broj telefona")



Else

'tekst velika slova
For i = 1 To Len(ime)

slovo = Mid(ime, i, 1)
If slovo = " " Then
brojrazmaka = brojrazmaka + 1

Endif
If brojrazmaka > 1 And slovo = " " Then
slovo = ""
Else
veliko = veliko & slovo
Endif
Next
ime = veliko
veliko = ""


trazenjerazmaka = InStr(ime, " ", 1)
trazenjerazmaka = trazenjerazmaka + 1
' Message.Info(trazenjerazmaka)

For i = 1 To Len(ime)


slovo = Mid(ime, i, 1)
If i = 1 Or i = trazenjerazmaka
veliko = veliko & UCase(slovo)
Else
veliko = veliko & slovo
End If
Next
ime = veliko
'završeno velika slova


imeduzina = Len(Trim(ime)) + Len(Trim(telefon))
If imeduzina > 37 Then imeduzina = 37
cijeliupis = (ime & String(38 - imeduzina, "-") & telefon)


lst1.Add(ime & String(38 - imeduzina, "-") & telefon)


upisi
ucitaj

Endif

End



Public Sub lst1_DblClick()

Dim i As Integer
Dim cijeliupis As String ' cijeli upis da bi mogli označiti poslije
Dim slovo As String ' velika slova u imenu
Dim veliko As String ' cijelo ime
Dim brojrazmaka As Integer
Dim trazenjerazmaka As Integer
Dim ime As String
Dim telefon As String
Dim staroime As String
Dim staritelefon As String
Dim stariupis As String ' stari upis
Dim broj As Integer
Dim imeduzina As Integer

broj = 0

If lst1.count < 1 Then Return

For i = 0 To lst1.Count - 1
If lst1[i].selected = True Then
stariupis = lst1[i].text

Break
Endif

Next

If stariupis = "" Then Return


'-----------------------------------------------------------
'Tražimo ime osobe
For i = 1 To Len(stariupis)


slovo = Mid(stariupis, i, 1)
If slovo = "-" Then
Break
Endif
staroime = staroime & slovo
broj = broj + 1

Next

slovo = ""

'Tražimo broj razmaka
For i = broj + 1 To Len(stariupis)

slovo = Mid(stariupis, i, 1)


If slovo <> "-" Then
Break
End If
brojrazmaka = brojrazmaka + 1


Next
slovo = ""
'Tražimo broj telefona
For i = brojrazmaka + broj + 1 To Len(stariupis)
slovo = Mid(stariupis, i, 1)
staritelefon = staritelefon & slovo
Next



slovo = ""
brojrazmaka = 0
ime = InputBox("Ispravka imena:(max 22 znaka) ", "Primjer: Petrović Petar", staroime)
If Len(Trim(ime)) > 22 Then
Message("Ime: Max. 22 znaka")
txttrazi.SetFocus
Return
Else If Len(Trim(ime)) < 1 Then
txttrazi.SetFocus
Return
End If

'
telefon = InputBox("Ispravka telefona:(max 14 znakova) ", "Primjer: 092 / 303 - 8990 ", staritelefon)
If Len(Trim(telefon)) > 22 Then
Message("Telefon: Max. 14 znakova")
txttrazi.SetFocus
Return
Else If Len(Trim(telefon)) < 1 Then
txttrazi.SetFocus
Return
End If
ime = Trim(ime)
telefon = Trim(telefon)


'
'tekst velika slova
For i = 1 To Len(ime)

slovo = Mid(ime, i, 1)
If slovo = " " Then
brojrazmaka = brojrazmaka + 1

Endif
If brojrazmaka > 1 And slovo = " " Then
slovo = ""
Else
veliko = veliko & slovo
Endif
Next
ime = veliko
veliko = ""


trazenjerazmaka = InStr(ime, " ", 1)
trazenjerazmaka = trazenjerazmaka + 1
' Message.Info(trazenjerazmaka)

For i = 1 To Len(ime)
'
'
slovo = Mid(ime, i, 1)
If i = 1 Or i = trazenjerazmaka
veliko = veliko & UCase(slovo)
Else
veliko = veliko & slovo
End If
Next
ime = veliko
'završeno velika slova
'
'
imeduzina = Len(Trim(ime)) + Len(Trim(telefon))
If imeduzina > 37 Then imeduzina = 37
cijeliupis = (ime & String(38 - imeduzina, "-") & telefon)



'
' Brisanje starog upisa
For i = 0 To lst1.count - 1
' Message(lst1[i].text)

If lst1[i].selected = True Then
lst1[i].text = ""
Break
Endif
Next

lst1.Add(cijeliupis)
upisi
ucitaj




End

Public Sub Form_DblClick()

Message.Info("Autor: http://antun.biz")

End

Public Sub txttrazi_KeyPress()



End
'Kraj programa upisivanje u tekstualni file

'Gambas program (Isti primjer samo baza podataka(database) i Gridview).

'Gambas primjer kreiranja baze podataka na poziciju(user.home).
'Gridview kontrola(komponenta).
'Učitavanje ako već postoji, dodavanje upisa, brisanje upisa, izmjena upisanog.
'Gambas Delete records sqlite, Gambas add records sqlite, Gambas edit records sqlite, Gambas create database sqlite.
'Gambas read database sqlite, Gambas Gridview component, database sqlite school example.

'Ovdje mo žete skinuti pdf: tel-imenik-baza
'Ovdje mo žete skinuti deb datoteku za linux Ubuntu, Mint:
Telefonski imenik .deb tatoteka



'U nastavku je kod..

Private Conn As New Connection
Private Rezultat As Result
Private fil As Integer


Public Sub _new()

End

Public Sub Form_Open()


Dim i As Integer
Dim tablica As Table
Dim Rezultat1 As Result
Dim sql As String

'izgled gridview
GridView1.header = GridView.Horizontal
GridView1.grid = False
GridView1.Rows.count = 0
GridView1.Columns.count = 3
GridView1.Columns[0].text = "ID"
GridView1.Columns[1].text = "Ime"
GridView1.Columns[0].width = 1
GridView1.Columns[1].width = 150
GridView1.Columns[2].text = "Telefon"
GridView1.Columns[2].width = "100"
GridView1.mode = 2
GridView1.border = False
GridView1.sorted = False





If Exist(User.home & "/telefoni.sqlite") Then 'ako baza postoji

Conn = New Connection
Conn.Type = "sqlite"
Conn.Host = User.home
Conn.Name = "telefoni.sqlite"
Try Conn.Open()
If Error Then
Message.Error("Pogreška.")
Conn = Null
Else
Rezultat = Conn.Exec("Select * from imetablice order by ime asc")
GridView1.Rows.Count = Rezultat.Count
otvaranjebaze
txttrazi.SetFocus

End If

'kreiramo bazu podataka ako je nema, telefoni.sqlite
Else


With Conn
.Type = "sqlite"
.host = User.home
.name = ""
End With

Conn.Open
Conn.Databases.Add("telefoni.sqlite")
Conn.Close

'definiranje tablice naziva imetablice
Conn.name = "telefoni.sqlite"
Conn.Open
tablica = Conn.Tables.Add("imetablice")
tablica.Fields.Add("ID", db.Serial)
tablica.Fields.Add("ime", db.string)
tablica.Fields.Add("telefon", db.string)
tablica.PrimaryKey = ["ID"]
tablica.Update

Conn.Commit

'čitanje baze
sql = "select * from imetablice order by ime asc"
Rezultat = Conn.Exec(sql)
GridView1.Rows.Count = Rezultat.Count
otvaranjebaze
Catch
Conn.Rollback
Message.Error(DConv(Error.Text))

End If




End

Public Sub cmdinput_Click()

Dim i As Integer
Dim slovo As String ' velika slova u imenu
Dim veliko As String ' cijelo ime
Dim brojrazmaka As Integer
Dim trazenjerazmaka As Integer
Dim ime As String
Dim telefon As String
Dim varrezultat As Result

ime = InputBox("Upis imena:(max 23 znaka) ", "Primjer: Petrović Petar")
If Len(Trim(ime)) > 23 Then
Message("Ime: Max. 23 znaka" & ", Upisali ste: " & Len(Trim(ime)))
Return
Else If Len(Trim(ime)) < 1 Then
Return
End If

telefon = InputBox("Upis telefona:(max 16 znakova) ", "Primjer: 092/303-8990")
If Len(Trim(telefon)) > 16 Then
Message("Telefon: Max. 16 znakova" & ", Upisali ste: " & Len(Trim(telefon)))
Return
Else If Len(Trim(telefon)) < 1 Then
Return
End If
ime = Trim(ime)
telefon = Trim(telefon)



'tekst velika slova
For i = 1 To Len(ime)

slovo = Mid(ime, i, 1)
If slovo = " " Then
brojrazmaka = brojrazmaka + 1

Endif
If brojrazmaka > 1 And slovo = " " Then
slovo = ""
Else
veliko = veliko & slovo
Endif
Next
ime = veliko
veliko = ""


trazenjerazmaka = InStr(ime, " ", 1)
trazenjerazmaka = trazenjerazmaka + 1
' Message.Info(trazenjerazmaka)

For i = 1 To Len(ime)


slovo = Mid(ime, i, 1)
If i = 1 Or i = trazenjerazmaka
veliko = veliko & UCase(slovo)
Else
veliko = veliko & slovo
End If
Next
ime = veliko
'završeno velika slova

' upisujemo u bazu
varrezultat = Conn.Create("imetablice")
varrezultat["ime"] = ime
varrezultat["telefon"] = telefon
varrezultat.update
Rezultat = Conn.Exec("select * from imetablice order by ime asc")
GridView1.Rows.Count = Rezultat.Count
'obnova gridview
otvaranjebaze
txttrazi.text = ""
txttrazi.setfocus

End



Public Sub Form_Close()

Conn.Close

End



Public Sub otvaranjebaze()
GridView1.Rows.Count = Rezultat.Count
If Rezultat.Count > 0 Then
fil = 0
Rezultat.MoveFirst

Do While Rezultat.Available

GridView1[fil, 0].Text = Str(Rezultat!ID)
GridView1[fil, 1].Text = Str(Rezultat!ime)
GridView1[fil, 2].Text = Str(Rezultat!telefon)


fil = fil + 1
Rezultat.MoveNext()
Loop

Endif

End




Public Sub txttrazi_Change()
'traženje na gridview listi
Dim i As Integer

For i = 0 To GridView1.rows.count - 1

If Mid(UCase(GridView1[i, 1].text), 1, Len(txttrazi.text)) = UCase(txttrazi.text) Then

GridView1.Rows[i].selected = True
If Trim(txttrazi.text) = "" Then
GridView1.Rows[i].selected = False
End If
Else
GridView1.Rows[i].selected = False

Endif
Next

End



Public Sub cmdbrisanje_Click()
Dim res As Result
Dim i As Integer
Dim idstring As String
Dim imestring As String


For i = 0 To GridView1.rows.count - 1
If GridView1.Rows[i].selected = True Then
idstring = GridView1[i, 0].text ' ID
imestring = GridView1[i, 1].text ' ime


If Message.Question("Brisanje upisa: " & imestring, "Da", "Ne") = 1 Then
res = Conn.Edit("imetablice", "ID=" & idstring)
res.Delete
res = Conn.Exec("Select * from imetablice order by ime asc")
Rezultat = res
otvaranjebaze
Endif


Endif

Next
txttrazi.text = ""
txttrazi.SetFocus

End




Public Sub GridView1_DblClick()

Dim i As Integer

Dim slovo As String ' velika slova u imenu
Dim veliko As String ' cijelo ime
Dim brojrazmaka As Integer
Dim trazenjerazmaka As Integer
Dim ime As String
Dim telefon As String
Dim staroime As String
Dim staritelefon As String
Dim id As String
Dim varrezultat As Result



If GridView1.Rows.count < 1 Then Return
For i = 0 To GridView1.rows.count - 1
If GridView1.Rows[i].selected = True Then
id = GridView1[i, 0].text ' ID
staroime = GridView1[i, 1].text ' ime
staritelefon = GridView1[i, 2].text 'telefon
Break
End If
Next



ime = InputBox("Ispravka imena:(max 23 znaka) ", "Primjer: Petrović Petar", staroime)
If Len(Trim(ime)) > 23 Then
Message("Ime: Max. 23 znaka")
txttrazi.SetFocus
Return
Else If Len(Trim(ime)) < 1 Then
txttrazi.SetFocus
Return
End If

'
telefon = InputBox("Ispravka telefona:(max 16 znakova) ", "Primjer: 092/303-8990 ", staritelefon)
If Len(Trim(telefon)) > 16 Then
Message("Telefon: Max. 16 znakova")
txttrazi.SetFocus
Return
Else If Len(Trim(telefon)) < 1 Then
txttrazi.SetFocus
Return
End If
ime = Trim(ime)
telefon = Trim(telefon)



'Da ime i prezime počinju sa velikim slovom
For i = 1 To Len(ime)

slovo = Mid(ime, i, 1)
If slovo = " " Then
brojrazmaka = brojrazmaka + 1

Endif
If brojrazmaka > 1 And slovo = " " Then
slovo = ""
Else
veliko = veliko & slovo
Endif
Next
ime = veliko
veliko = ""


trazenjerazmaka = InStr(ime, " ", 1)
trazenjerazmaka = trazenjerazmaka + 1


For i = 1 To Len(ime)
'
'
slovo = Mid(ime, i, 1)
If i = 1 Or i = trazenjerazmaka
veliko = veliko & UCase(slovo)
Else
veliko = veliko & slovo
End If
Next
ime = veliko

'završeno velika slova
' ' upisujemo u bazu
varrezultat = Conn.edit("imetablice", "ID=" & id)
varrezultat["ime"] = ime
varrezultat["telefon"] = telefon
varrezultat.update
Rezultat = Conn.Exec("select * from imetablice order by ime asc")
GridView1.Rows.Count = Rezultat.Count
'obnova gridview
otvaranjebaze
txttrazi.setfocus
txttrazi.text = ""

End

Public Sub Form_DblClick()

Message.Info("Autor programa: http://antun.biz")

End