L
LuigiB
Guest
ciao Xabio , benvenuto.
Un saluto a tutti continuiamo l'argomento che abbiamo iniziato.
Come avrete capito stiamo costruendo 3 componenti (l'archivio , l'estrazione , l'estratto)
la cui interazione da noi gestita attraverso il codice del nostro script
ci consentira per esempio di scrivere in output la griglia delle estrazioni di un determianto range.
Come vedete lo scopo finaale di questa guida è molto semplice : scrivere la griglia delle estrazioni a video
però nello stesso tempo consente di capire concetti che una volta appresi possono essere usati con profitto.
Nello scorso post avevamo gia costruito lo scheletro della classe Archivio
e avevamo detto che era quel componente che ci doveva fornire le estrazioni
che noi chiedevamo col nostro codice.
Prima di passare alal scrittura del codice della classe archivio dobbiamo creare lo scheletro per le altre
classi che dobbiamo ancora costruire.
La classe archivio ci fornira una collection di oggetti ESTRAZIONE , quindi dobbiamo costruire
questa classe , dalle immagini postate si vedono le proprietà che ho impostato .
Poi dovremo costruire anche la classe ESTRATTO
Attraverso il wizard ripetete i passi che abbiamo gia visto.
Non è difficile per ora no ?
benissimo ora appena finito di creare le 3 classi dovemmo iniziare a scrivere il codice per
gestirne le funzionalita.
Ogni classe molto volgarmete è come se fosse un progetto a se stante , solo
che essendo un componente ha metodi e proprietà che fgli servono per comunicare con l'esterno.
dobbiamo fare un passo indietro , per lvorare con gli oggetti bisogna saper usare le COLLECTION
una Collection è un contenitore che serve per immagazzinare oggetti , come se fosse uno scatolone
dove uno butta dentro le cose.
per inserire un oggetto in una collection (che anche lei è una classe questa volta fornita dal sistema )
si usa il metodo add
Ogni oggetto inserito si puo recuperare attraverso un indice come se fosse una array , se ad esempio
la collection contiene 4 oggetti si potrebbe usare un indice da 1 a 4 per richiedere l'oggetto voluto.
Volendo l'oggetto si puo richiedere anche tramite una chiave infatti in fase di inserimento
all'oggetto che vine inserito nello scatolone collection puo essere associata una chiave
ciò è opzionale però due oggetti con la stessa chiave non possono
coesistere , infatti un successivo metodo ADD che usa una chiave gia usata darebbe errore.
una collection puo essere ciclata con il ciclo For each che serve appunto per scorrere
tutti gli elementi contenuti nella collection
per capire meglio tutti i concetti creaiamo una semplicissima classe che non c'entra
con quanto gia fatto , percio apriamo una nuova finestra di script e creiamo la classe Persona
che serve per un banale esempio
Potete copiare anche direttamente il codice sotto , lo scopo è vedere come funzinano le classi
e le collection.
Studiate questo script sotto perche solo quando mi confermerete di aver capito potremo proseguire
caricare immagini
Un saluto a tutti continuiamo l'argomento che abbiamo iniziato.
Come avrete capito stiamo costruendo 3 componenti (l'archivio , l'estrazione , l'estratto)
la cui interazione da noi gestita attraverso il codice del nostro script
ci consentira per esempio di scrivere in output la griglia delle estrazioni di un determianto range.
Come vedete lo scopo finaale di questa guida è molto semplice : scrivere la griglia delle estrazioni a video
però nello stesso tempo consente di capire concetti che una volta appresi possono essere usati con profitto.
Nello scorso post avevamo gia costruito lo scheletro della classe Archivio
e avevamo detto che era quel componente che ci doveva fornire le estrazioni
che noi chiedevamo col nostro codice.
Prima di passare alal scrittura del codice della classe archivio dobbiamo creare lo scheletro per le altre
classi che dobbiamo ancora costruire.
La classe archivio ci fornira una collection di oggetti ESTRAZIONE , quindi dobbiamo costruire
questa classe , dalle immagini postate si vedono le proprietà che ho impostato .
Poi dovremo costruire anche la classe ESTRATTO
Attraverso il wizard ripetete i passi che abbiamo gia visto.
Non è difficile per ora no ?
benissimo ora appena finito di creare le 3 classi dovemmo iniziare a scrivere il codice per
gestirne le funzionalita.
Ogni classe molto volgarmete è come se fosse un progetto a se stante , solo
che essendo un componente ha metodi e proprietà che fgli servono per comunicare con l'esterno.
dobbiamo fare un passo indietro , per lvorare con gli oggetti bisogna saper usare le COLLECTION
una Collection è un contenitore che serve per immagazzinare oggetti , come se fosse uno scatolone
dove uno butta dentro le cose.
per inserire un oggetto in una collection (che anche lei è una classe questa volta fornita dal sistema )
si usa il metodo add
Ogni oggetto inserito si puo recuperare attraverso un indice come se fosse una array , se ad esempio
la collection contiene 4 oggetti si potrebbe usare un indice da 1 a 4 per richiedere l'oggetto voluto.
Volendo l'oggetto si puo richiedere anche tramite una chiave infatti in fase di inserimento
all'oggetto che vine inserito nello scatolone collection puo essere associata una chiave
ciò è opzionale però due oggetti con la stessa chiave non possono
coesistere , infatti un successivo metodo ADD che usa una chiave gia usata darebbe errore.
una collection puo essere ciclata con il ciclo For each che serve appunto per scorrere
tutti gli elementi contenuti nella collection
per capire meglio tutti i concetti creaiamo una semplicissima classe che non c'entra
con quanto gia fatto , percio apriamo una nuova finestra di script e creiamo la classe Persona
che serve per un banale esempio
Potete copiare anche direttamente il codice sotto , lo scopo è vedere come funzinano le classi
e le collection.
Studiate questo script sotto perche solo quando mi confermerete di aver capito potremo proseguire
caricare immagini
Codice:
Option Explicit
Class clsPersona
Private m_Nome
Private m_Cognome
Public Property Get Nome
Nome = m_Nome
End Property
Public Property Let Nome(NewValue)
m_Nome = NewValue
End Property
Public Property Get Cognome
Cognome = m_Cognome
End Property
Public Property Let Cognome(NewValue)
m_Cognome = NewValue
End Property
Function Nominativo
' questo metodo restituisce l concatenazione di nome e cognome
Nominativo = m_Nome & " " & m_Cognome
End Function
End Class
Sub Main
Dim coll ' variabile collection
Dim clsP ' variabile classe persona
Dim k
' istanzio la collecrion
Set coll = GetNewCollection
' aggiungo 3 nominativi alla collection
Call AddItemColl(coll,"Antonio","Verdi")
Call AddItemColl(coll,"Giuseppe","Bianchi")
Call AddItemColl(coll,"Mario","Rossi")
' dato che stiamo passando lo stesso nominativo ci sara un errore
' è fatto apposta per dimostrarlo
Call AddItemColl(coll,"Mario","Rossi")
' ciclo gli elementi della collection e stampo a video il nominativo con for each
For Each clsP In coll
' uso il Metodo Nominativo della classe clsPersona per ottenere la stringa da stampare a video
Call Scrivi(clsP.Nominativo)
Next
Call Scrivi
Call Scrivi
' ciclo gli elementi della collection e stampo a video il nominativo con for next
For k =1 To coll.count
' notare l'uso dellla parola chiave Set che serve per valorizzare l'oggetto clsP
Set clsP = coll(k)
' uso il Metodo Nominativo della classe clsPersona per ottenere la stringa da stampare a video
Call Scrivi(clsP.Nominativo)
Next
Call Scrivi
Call Scrivi
' richiama un oggetto specifico contenuto nella collection attraverso la sua chiave (che era la concatenazione di nomecognome)
' notare l'uso dellla parola chiave Set che serve per valorizzare l'oggetto clsP
Set clsP = coll("MarioRossi")
Call Scrivi (clsP.Nominativo)
End Sub
Sub AddItemColl(coll,sNome,sCognome)
On Error Resume Next
Dim clsP ' variabile classe persona
' istanzio la classe persona
Set clsP = New clsPersona
' ne imposto le proprieta
clsP.Nome = sNome
clsP.Cognome = sCognome
' aggiungo la classe alla collection , notare che la concatenazione di nome e cognome è usata come chiave
' percio due nominativi uguali non si possono inserire
Call coll.Add(clsP,sNome & sCognome)
' si puo insereire un oggetto anche senza passare la chiave
'Call coll.Add(clsP )
If Err <> 0 Then
' in caso di errore mostra il messaggio
MsgBox Err.description
End If
End Sub
Ultima modifica di un moderatore: