'...javne konstante definisane u nekom modulu...
Code:
Public Const gc_EDITED = 1
Public Const gc_UNKNOWN = 2
Public Const gc_DELETED = 4
Public Const gc_LOADED = 8
Public Const gc_NEW = 16
Public Const gc_SAVED = 32
'******* Klasa IKorisnik *****************
'
' Instancing: 2 - PublicNotCreatable
'
'************************************
Option Explicit
'...svojstva...
Public Key As String '...unikatni identifikator klase (moze npr. Timer u momentu izrade)...
Public Tag As String
Public ItemData As Long
Public Vlasnik As IKorisnici
Private mlEdMod As Long '...edit mod u kojem se nalazi (gc_NEW,gc_LOADED,gc_EDITED,gc_DELETED)...
Private msIme As String
Private msPrezime As String
Private mlKorID As Long '...ID korisnika u bazi podataka - kolona primarnog kljuca u tabeli Korisnici...
' javne metode za citanje i pisanje svojstava
'
Public Property Get EdMod() As Long
EdMod = mlEdMod
End Property
Public Property Let EdMod(Value As Long)
mlEdMod = Value
End Property
Public Property Get Ime() As String
Ime = msIme
End Property
Public Property Let Ime(Value As String)
msIme = Value
mlEdMod = mlEdMod And gc_EDITED
End Property
Public Property Get Prezime() As String
Prezime = msPrezime
End Property
Public Property Let Prezime(Value As String)
msPrezime = Prezime
mlEdMod = mlEdMod And gc_EDITED
End Property
Public Property Get KorID() As Long
KorID = mlKorID
End Property
Public Property Let KorID(Value As Long)
mlKorID = Value
mlEdMod = mlEdMod And gc_EDITED
End Property
Public Function LoadData(KorID As Long) As Boolean
On Error GoTo errhndl
'...(kod za ucitavanje podataka o korisniku iz baze u modulne promenljive msIme, msPrezime, mlKorID)...
mlEdMod = gc_LOADED
LoadData = True
Exit Function
errhndl:
'...(kod za obradu greske)...
End Function
Public Function SaveData() As Boolean
On Error GoTo errhndl
'...(kod za proveru podataka u modulnim promenljivima i snimanje u bazu)...
mlEdMod = gc_SAVED
SaveData = True
Exit Function
errhndl:
'...(kod za obradu greske)...
End Function
'******* Klasa IKorisnici ****************
'
' Instancing: 5 - Mulitiuse
'
'***********************************
Option Explicit
'...svojstva...
Public Key As String
Public Tag As String
Public ItemData As Long
Public Edited As Boolean '...da li je nesto iz kolekcije editovano...
Private moColl As New Collection
Public TekuciKorisnik As IKorisnik
Public Sub Clear()
Dim lCnt As Long
With moColl
For lCnt = .Count To 1 Step -1
.Remove lCnt
Next lCnt
End With
End Sub
Public Function Count() As Long
Count = moColl.Count
End Function
'...za ovu f-ju se mora podesiti u Tools-->Procedure attributes--->ProcedureID na (Default) da bi ispravno radila...
'
Public Function Item(ByVal Index As Variant) As IKorisnik
On Error GoTo errhndl
Set TekuciKorisnik = Nothing
Set TekuciKorisnik = moColl.Item(Index)
Set Item = TekuciKorisnik
Exit Function
errhndl:
'...(kod za obradu greske)...
End Function
'...za ovu f-ju se mora podesiti u Tools-->Procedure attributes--->ProcedureID na -4...
'...i cekirati opciju Hide this member da bi ispravno radila...
'
Public Function NewEnum() As IUnknown
Set NewEnum = moColl.[_NewEnum]
End Function
Public Function Remove(ByVal Index As Variant)
Dim oKor As IKorisnik
On Error Resume Next
'...prvo se proveri sta se to trazi za brisanje iz kolekcije...
Set oKor = moColl.Item(Index)
If oKor Is Nothing Then Exit Function
moColl.Remove (Index)
End Function
Public Function Add(Optional oObj As IKorisnik, Optional Ime As String, Optional Prezime As String, Optional KorID As Long) As IKorisnik
Static lKey As Long
On Error GoTo errhndl
If oObj Is Nothing Then
'...init...
Set TekuciKorisnik = Nothing
Set TekuciKorisnik = New IKorisnik
With TekuciKorisnik
.Ime = Ime
.Prezime = Prezime
.KorID = KorID
Set .Vlasnik = Me
End With
Else
'...init...
Set TekuciKorisnik = Nothing
Set TekuciKorisnik = oObj
End If
'...sada TekuciKorisnik ubacujem u kolekciju...
With TekuciKorisnik
lKey = lKey - 1
.Key = "" & lKey
moColl.Add TekuciKorisnik, .Key
Set .Vlasnik = Me
End With
'...kraj, vracam kroz Add referencu ka CurFiskArt...
Set Add = TekuciKorisnik
Exit Function
errhndl:
'...(kod za obradu greske)...
End Function
Private Sub Class_Terminate()
If Not (moColl Is Nothing) Then Clear: Set moColl = Nothing
End Sub
Public Function SaveData() As Boolean
Dim oKor As IKorisnik
If moColl.Count = 0 Then
SaveData = True
Exit Function
End If
For Each oKor In moColl
If Not oKor.SaveData() Then Exit Function
Next oKor
SaveData = True
End Function
' posto klasa IKorisnik ima svojstvo PublicNotCreatable
' pomocu ove metode se moze instancirati objekat te klase
' tj. objekat klase IKorisnik se moze napraviti samo pomocu objekta klase IKorisnici
' ako se klasa IKorisnik setuje na Mulitiuse ova metoda nije neophodna
'
Public Function NoviKorisnik() As IKorisnik
Dim oObj As New IKorisnik
Set oObj.Vlasnik = Me
Set NoviKorisnik = oObj
End Function
[Ovu poruku je menjao Aleksandar Ružičić dana 11.07.2007. u 21:23 GMT+1]