Option Explicit
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Dim rs22 As ADODB.Recordset
Private sngListViewX As Single
Private sngListViewY As Single
Dim nod As Node
Dim lvwItem As ListItem
Dim lvwItem2 As ListItem
'------------------------------------------------------------
Private Const LVM_FIRST As Long = &H1000
Private Const LVM_HITTEST As Long = (LVM_FIRST + 18)
Private Const LVM_SUBITEMHITTEST As Long = (LVM_FIRST + 57)
Private Const LVHT_ONITEMICON As Long = &H2
Private Const LVHT_ONITEMLABEL As Long = &H4
Private Const LVHT_ONITEMSTATEICON As Long = &H8
Private Const LVHT_ONITEM As Long = (LVHT_ONITEMICON Or _
LVHT_ONITEMLABEL Or _
LVHT_ONITEMSTATEICON)
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Type LVHITTESTINFO
pt As POINTAPI
flags As Long
iItem As Long
iSubItem As Long
End Type
Dim lX As Single, lY As Single
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'--------------------------------------------------------------------
Private Sub listView1_MouseUp(Button As Integer, Shift As _
Integer, X As Single, Y As Single)
Dim HTI As LVHITTESTINFO
With HTI '============================
.pt.X = (lX \ Screen.TwipsPerPixelX)
.pt.Y = (lY \ Screen.TwipsPerPixelY)
.flags = LVHT_ONITEM
End With
Call SendMessage(ListView1.hwnd, LVM_SUBITEMHITTEST, 0, HTI)
Dim lst As ListItem
If (HTI.iItem > -1) Then
Set lst = ListView1.ListItems(HTI.iItem + 1)
lblKliknutoNa.Caption = frmViewer.ListView1.ListItems(HTI.iItem + 1).SubItems(2)
lblKliknutoNa2.Caption = "item " & HTI.iItem + 1 & " i SubItem " & HTI.iSubItem
End If
' =================
sngListViewX = X
sngListViewY = Y
If ListView1.ListItems.Count > 0 Then
If Button = vbRightButton Then
If Not (ListView1.SelectedItem Is Nothing) Then
If Not (ListView1.HitTest(X, Y) Is Nothing) Then
ListView1_Click
PopupMenu popMNU2
Else
End If
End If
popMNU2.Enabled = False
End If
End If
End Sub
Private Sub cmdDodajNovu_Click()
frmDodaj_u_stablo.Show vbModal
End Sub
Private Sub Form_Load() '=======================
Dim SQL As String
SQL = "SELECT DISTINCT kategorija FROM kategorije"
Set con = New ADODB.Connection
con.CursorLocation = adUseClient
con.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\normativi.mdb"
Set rs = New ADODB.Recordset
rs.Open SQL, con, 3, adLockOptimistic
Call FormirajStablo
ListView2.Visible = False
cmdDodajNovu.Top = frmViewer.Height - 1600
cmdUDaljiKat.Top = frmViewer.Height - 1600
TreeView1.Height = frmViewer.Height - 2100
End Sub
'===========================================================
Private Sub FormirajStablo() '======================= create TreeView1 tree
Dim i As Integer
Set nod = TreeView1.Nodes.Add(, , "Recepti", "Baza receptura")
rs.MoveFirst
For i = 0 To rs.RecordCount - 1
With TreeView1.Nodes
'rezultat stavljamo u treeview
Set nod = .Add("Recepti", 4, rs.Fields("kategorija"), rs.Fields("kategorija"))
End With
rs.MoveNext
Next i
rs.Close
Call UcitajStablo
Set nod = Nothing
End Sub
'===========================================================
Private Sub UcitajStablo() '======================= load data into TreeView1
Dim SQL As String
SQL = "SELECT * From kategorije"
rs.Open SQL, con, 3, 4
Dim i As Integer
Dim nodtekst, a, bazni As String
rs.MoveFirst
For i = 0 To rs.RecordCount - 1
With TreeView1.Nodes
bazni = rs.Fields!kategorija
nodtekst = rs.Fields!podkategorija
Set nod = .Add(bazni, 4, nodtekst & " " & a & rs.Fields!Id, nodtekst & " " & a)
End With
rs.MoveNext
Next i
rs.Close
Set nod = Nothing
End Sub
'===========================================================
Private Sub MenuQuit_Click()
Unload Me
End Sub
Private Sub TreeView1_Click() '=======================
With ListView1.ListItems
.Clear
End With
If TreeView1.SelectedItem.Text = "Baza receptura" Then
Exit Sub
ElseIf TreeView1.SelectedItem.Parent.Text = "Baza receptura" Then
Exit Sub
Else
FormirajListView
End If
End Sub
'===========================================================
'===========================================================
Public Sub FormirajListView() '======================= Create ListView1
Dim i As Integer
Dim SQL As String
ListView1.ListItems.Clear
SQL = "SELECT * FROM baza_receptura WHERE pod_kategorija = " & "'" & TreeView1.SelectedItem.Text & "'" & " AND za_zivotinju = " & "'" & TreeView1.SelectedItem.Parent.Text & "' ORDER BY pod_kategorija DESC;"
rs.Open SQL, con, 3, 4
If rs.RecordCount = "0" Then
'MsgBox "Recepture doesn't exist fot this category"
Beep
rs.Close
Exit Sub
Else
Do While Not rs.EOF
Set lvwItem = ListView1.ListItems.Add(1, , rs.Fields!za_zivotinju)
lvwItem.SubItems(1) = rs.Fields!pod_kategorija
lvwItem.SubItems(2) = rs.Fields!nazvanje
lvwItem.SubItems(3) = rs.Fields!komentar
lvwItem.SubItems(4) = rs.Fields!datum
rs.MoveNext
Loop
End If
rs.Close
End Sub
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Private Sub ListView1_Click() '=======================
ListView2.ListItems.Clear
Dim lListItem As ListItem
Dim string2klik As String
Set lListItem = ListView1.HitTest(sngListViewX, sngListViewY)
If (lListItem Is Nothing) Then
Exit Sub 'MsgBox "Niste nista izabrali"
Else
string2klik = lListItem.SubItems(2)
frmViewer.lblPrenos = string2klik
Set rs2 = New ADODB.Recordset
Dim sql2 As String
sql2 = "SELECT * FROM baza_receptura WHERE nazvanje = " & Chr$(34) & string2klik & Chr$(34)
rs2.Open sql2, con, adOpenDynamic, adLockOptimistic
'rs2.MoveFirst '
txtNazvanje.Visible = True
txtNaziv.Text = rs2.Fields(4).Value '>>>DEBUGGER SHOWS EOF ERROR HERE!<<<
txtNaziv.Visible = True
txtKomentar.Text = rs2.Fields(5).Value
txtKomentar.Visible = True
txtRezultat.Text = ""
Dim X As Integer
Dim lvindeks As Integer
lvindeks = 1
For X = 8 To rs2.Fields.Count - 1
'popunjavanje male lv kontrole
If rs2.Fields(X).Value > 0 Then
'Set lvwItem = ListView2.ListItems.Add(1, , rs2.Fields(3))
Set lvwItem2 = ListView2.ListItems.Add(lvindeks)
lvwItem2.SubItems(1) = rs2.Fields(X).Name
lvwItem2.SubItems(2) = CStr(rs2.Fields(X).Value)
'lvwItem2.SubItems(3) = CStr(lvindeks)
lvindeks = lvindeks + 1
Else
End If
Next X
ListView2.Visible = True
rs2.Close
End If
Set lListItem = Nothing
End Sub
Private Sub ListView1_DblClick() '=======================
Call ListView1_Click
Dim lListItem As ListItem
Dim string2klik As String
Set lListItem = ListView1.HitTest(sngListViewX, sngListViewY)
string2klik = lListItem.SubItems(2)
frmViewer.lblPrenos = string2klik
Set rs22 = New ADODB.Recordset
Dim sql2 As String
sql2 = "SELECT * FROM baza_receptura WHERE nazvanje = " & Chr$(34) & string2klik & Chr$(34)
rs22.Open sql2, con, adOpenDynamic, adLockOptimistic
txtNazvanje.Visible = True
txtNaziv.Text = rs22.Fields(4).Value
txtNaziv.Visible = True
txtKomentar.Text = rs22.Fields(5).Value
txtKomentar.Visible = True
txtRezultat.Text = ""
Dim X As Integer
Dim stringic As String
Dim naziv_polja As String
Dim razmak As String
razmak = Chr$(9) & Chr$(9) & Chr$(9)
For X = 8 To rs22.Fields.Count - 1
If rs22.Fields(X).Value > 0 Then
stringic = txtRezultat.Text
txtRezultat.Text = stringic & rs22.Fields(X).Name & razmak & rs22.Fields(X).Value & vbCrLf
Else
End If
Next X
txtRezultat.Visible = True
frmDvaKlika.Show vbModal
rs22.Close
End Sub
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next
If Button = 2 Then
Dim hItem As Long, nod As Node, xRect As RECT, xPop As Integer, yPop As Integer
Set nod = TreeView1.HitTest(X, Y)
hItem = GetTVItemFromNode(TreeView1.hwnd, nod)
If hItem Then
TreeView_GetItemRect TreeView1.hwnd, hItem, xRect, CTrue
xPop = TreeView1.Left + ScaleX(xRect.Left, vbPixels, vbTwips)
yPop = TreeView1.Top + ScaleY(xRect.Bottom, vbPixels, vbTwips)
PopupMenu popMNU, , xPop, yPop
End If
End If
End Sub
Private Sub ListView1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
lX = X
lY = Y
End Sub
Private Sub mnulvPreimenuj_click()
frmNovoIme.Show
End Sub
Private Sub mnulvKopiraj_click() '<============== COPY LV ITEM
Dim con As ADODB.Connection
Dim rs6 As ADODB.Recordset
Dim rs6pom As ADODB.Recordset
Dim i As Integer
Dim SQL6 As String
SQL6 = "SELECT * FROM baza_receptura WHERE nazvanje ='" & CStr(lblKliknutoNa.Caption) & "';"
Set con = New ADODB.Connection
con.CursorLocation = adUseClient
con.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\normativi.mdb"
Set rs6 = New ADODB.Recordset
rs6.Open SQL6, con, adOpenDynamic, adLockOptimistic
Set rs6pom = rs6.Clone
rs6pom.AddNew
For i = 1 To rs6.Fields.Count - 1
rs6pom(i) = rs6(i)
Next i
Dim lenstr As Integer
lenstr = Len(rs6.Fields(4).Value)
Dim kopi_tekst As String
'kopi_tekst = rs6.Fields(4).Value
If InStr(lenstr - 9, rs6.Fields(4).Value, " (copy)", vbTextCompare) = 0 Then
rs6pom.Fields(4).Value = rs6.Fields(4).Value & " (copy)"
rs6pom.Update
rs6pom.Close
Else
MsgBox "ONLY ONE INSTANCE ALLOWED"
End If
rs6.Resync
rs6.Close
Call frmDvaKlika.apdejtujGlavniLV
End Sub
Private Sub mnulvUdaljiti_click() '<============== DELETE LV ITEM
Dim con As ADODB.Connection
Dim rs7 As ADODB.Recordset
Dim SQL7 As String '??
SQL7 = "SELECT * FROM baza_receptura WHERE nazvanje ='" & CStr(lblKliknutoNa.Caption) & "';"
'SQL7 = "DELETE FROM baza_receptura WHERE nazvanje ='" & CStr(lblKliknutoNa.Caption) & "';"
Set con = New ADODB.Connection
con.CursorLocation = adUseClient
con.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\normativi.mdb"
Set rs7 = New ADODB.Recordset
rs7.Open SQL7, con, adOpenDynamic, adLockOptimistic
rs7.Delete
rs7.Resync
rs7.Close
Dim indx As Integer
Dim lvredova As Integer
lvredova = ListView1.ListItems.Count
'For indx = ListView1.ListItems.Count To 1 Step -1
For indx = 1 To lvredova
If indx > lvredova Then Exit For
'
If Trim(ListView1.ListItems(indx).SubItems(2)) = Trim(lblKliknutoNa.Caption) Then
ListView1.ListItems.Remove (indx)
indx = indx - 1
lvredova = lvredova - 1
End If
Next
Call frmDvaKlika.apdejtujGlavniLV
End Sub