Newsgroup: it.comp.lang.visual-basic
Titolo: i controlli con gli oggetti

Ciao sono di nuovo qui!
una domanda semplice semplice.
Quando programmate con gli oggetti i controlli li fate direttamente
nell'oggetto o č meglio scrivere del codice in un modulo.bas o ancora meglio
nella Sub Form_Load?
Cosa viene caricato prima.
Il form_load del form o l'oggetto?
Spero di non aver fatto una domanda stupida
Deborah!

 Cosa viene caricato prima.
Viene caricato l'oggetto. perchè poi deve essere creata l'istanza
dell'oggetto dal form load (se hai deciso di istanziarlo lì...)
bye
-- 
Esistono 10 tipi di persone: chi conosce il binario e chi no.
www.nicolaottomano.it

 Spero di non aver fatto una domanda stupida
Forse non è stupida ma è sicuramente confusa :)
Non ho capito niente :P
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

> Forse non č stupida ma č sicuramente confusa :)
Sono stupida io ma sono tanto stupida quanto cocciuta e spero che questa mia
testardagine non vi snervi. Sono consapevole che alcune volte sono dura
da sopportare. Scusate =((
Il discorso di questo thread in linea di massima segue l'altro ma tramite i
vostri precedenti
aiuti non sono riuscita a togliermi i dubbi, o comunque a capire dove
sbaglio,
allora sto cercando di affrontare il problema in un altro modo.
(Non prendetemi per pazza)
Tutto questo casino perchč devo riuscire a tirare fuori l'anzianitŕ
aziendale dell'utente
tramite la data di assunzione e la data in cui l'utente usa il programma
(sempre se cosi si puň definire)
In un form ho una combobox dove l'utente sceglie il mese e un etichetta dove
si deve scrivere l'anno.
Ho un'altro form ( profilo) dove l'utente scrive la data di assunzione
Ho creato l'oggetto Mese e l'oggetto Anno dentro una classe ed entrambi sono
variabili di tipo integer, mentre in un altra classe ho creato l'oggetto
Anzianitŕ
(chi mi ha letto in precedenza sa che ho iniziato dopo domani a programmare
ad oggetti)
Nell'oggetto Anzianitŕ ho istanziato gli oggetti Mese ed Anno
(spero di aver detto bene)
Cosa succede quando eseguo l'applicativo?
Ho un paio di errori piů che normali. Il primo riguarda l'anno
perchč il valore iniziale nell'etichetta  č "" che equivale ad una stringa
vuota mentre io l'ho dichiarata come Integer
Il secondo č simile perchč la combo ha un valore "iniziale" uguale a -1
Dunque io ho ragionato in questa maniera ed ho messo degli If Then dentro
l'oggetto stesso dove inizializzo le variabili al mese corrente e all'anno
corrente ma qualcosa mi dice che sto sbagliando e allora mi affido a voi.
Il mio dubbio č questo! E' giusto inizializzare le variabili all'interno
della Classe oppure
č meglio scrivere gli If Then nel routine Load del Form? O addirittura č
meglio
scrivere dei moduli a parte?
Sotto vi metto quello che ho scritto ma probabilmente cancellerň tutto e
ricomincerň da capo!
=((
---------------------------------------------------------------------
Public Property Get Anzianitŕ() As Integer
Dim DataAssunzione As Date
Dim DataCheck As Date   '<----Data del controllo
Dim Check As New CCheck
Dim Data As New CDat3
'DataCheck č la data con la quale effettuare il controllo, quando si avvia
il programma dovrebbe andare in automatico sulla data corrente, in un
'secondo momento puň variare
'a seconda se l'utente sta facendo il controllo su mesi precedenti. Questo
'codice richiama gli oggetti Mese ed Anno nella classe Check.
DataCheck = CDate("1" & "/" & Check .Mese & "/" & Check .Anno)
'Il codice qui sotto č errato perchč con una DataCheck al 01/01/04 e una
'data assunzione al 01/02/97  l'anzianitŕ viene 7 anzichč 6---
Anzianitŕ = Year(DataCheck) - Year(Data.Assunzione)
End Property
---------------------------------------------------------------------
Public Property Let Anzianitŕ(ByVal vNewValue As Integer)
mintAnzianitŕ = Anzianitŕ
End Property
--------------------------------------------------------------------
Public Property Get Anno() As String
Anno = frmCheck.txtAnno.Text
If Anno = "" Then
    Anno = Format(Date, "YY")
    frmCheck.txtAnno.Text = AnnoBP
 Else
    Anno = frmCheck.txtAnno.Text
End If
End Property
----------------------------------------------------------------------
Public Property Let Anno(ByVal vNewValue As String)
intAnno = Anno
End Property
---------------------------------------------------------------------
Public Property Get Mese() As Integer
Mese = frmCheck.cboMese.ListIndex
'Quando si avvia il programma, Mese č uguale a -1 quindi lo inizializzo al
'mese corrente
If Mese = -1 Then
    Mese = Format(Date, "m")
    frmCheck.cboMese.ListIndex = Mese - 1
End If
'Se l'utente sceglie il mese di Gennaio
If Mese = 0 Then 'Significa che l'utente o il ciclo ha fatto venir fuori
gennaio
    Mese = 1
End If
End Property
---------------------------------------------------------------------
Public Property Let MeseBP(ByVal vNewValue As Integer)
intMeseBP = MeseBP
End Property
Debby ----)@

 End Property
Anche qui... ListBox per prendere i valori... intMesePB per scriverlo...
Adesso penso di capire cosa sia AnnoPB, ma allora cos'è intAnno?
Non sei per niente coerente nell'uso dei nomi, tra l'altro ho anche il
dubbio che tu non stia usando l'Option Explicit.


 --------------------------------------------------------------------
secondo te vNewValue a cosa serve?
ciaociao

 ha scritto nel messaggio
news:c39ke9$25vbb8$1...@ID-193795.news.uni-berlin.de...



Dove?
Non ci sono risposte al mio post del 08/03/2004 ore 08:59.
Se me lo sono perso io ti chiedo scusa, puoi rimandare il post?
ciaociao

 dubbio che tu non stia usando l'Option Explicit.
:(  Non ti sfugge niente, l'ho appena messo! (Tentando di recuperare i
dischi
MSDN avevo disinstallato tutto e poi reinstallato ma me ne ero dimenticata)
Deborah _____

 ha scritto nel messaggio
news:c3er1i$26rdq6$1...@ID-193795.news.uni-berlin.de...


 Debby
Questo non č il 3d che intendevo. Io parlo di quello iniziato il 04/03/2004
(subject: ItemData o ListIndex?), dove l'ultimo post č mio ed č del
08/03/2004
dacci un occhiata ;-)
ciaociao
P.S. stai piů attenta a come quoti! :-P

 End Property
Tornando a quanto detto sopra:
Public Property Get MeseBP() As Integer
    MeseBP = frmCheck.cboMese.ListIndex + 1
End Property
Public Property Let MeseBP(ByVal vNewValue As Integer)
    frmCheck.cboMese.ListIndex = vNewValue - 1
End Property
Altrimenti che cavolo assegni?
Cos'è intMeseBP?
E il nuovo valore dove va a finire?
E il combo contunua a visualizzare la data vecchia?
E tu imposti un combo di un form diverso dal tuo? Anche questo potrebbe
essere considerato un errore, e spesso lo è.
Non ho ben capito se ti è chiaro l'uso delle property.
Cerco di riassumere brevemente:
In VB6 hai 3 tipi di Property, reggruppabili in 2 gruppi:
1) Assegnazione:
    Property Let per variabili.
    Property Set per oggetti.
2) Lettura
    Property Get per variabili e per oggetti.
Una property è ad es. Text in TextBox1.Text: definisce una proprietà
dell'oggetto, in questo caso il testo della textbox.
Questa è una property di tipo Let/Get perchè può essere scritta (Let: in
vecchio basic usava la sintassi LET A = B per definire le assegnazioni, oggi
basta A = B) e anche letta (Get).
Internamente la Text di una textbox funziona più o meno così:
Private MioTesto As String
Property Let Text(ByVal NuovoTesto As String)
    ' Assegno il nuovo testo con Text1.Text = "Nuovo Testo"
    MioTesto = NuovoTesto
    ' ... codice per il disegno del nuovo testo a video ...
End Property
Property Get Text As String
    ' Restituisco il valore del testo memorizzato
    Text = MioTesto
End Property
Come vedi MioTesto appare a sinistra dell'uguale nella Let e a destra nella
get.
Le property Let hanno sempre un parametro in più che definisce il nuovo
valore: quello che da fuori assegni con Oggetto.Property = NuovoValore.
Nota che per questo motivo quest'ultimo parametro deve avere lo stesso tipo
della properietà Get.
P.S.: occhio al quoting quando posti sul NG!


 E il combo contunua a visualizzare la data vecchia?
Cosi com'è scritta e corretta da te il combo non mi visualizza il mese
corrente. L'IF Then
[
   If Mese = -1 Then
       Mese = Format(Date, "m")
       frmCheck.cboMese.ListIndex = Mese - 1
   End If
]
mi hai detto che era sbagliato cosi l'ho cancellato però ora non so come
fare. La prima cosa
che mi viene in mente è di scrivere qualcosa nell'evento Load del Form...
Sbaglio?
In questo modo inizializzerei il valore della combo al mese corrente no?
Avrei altre domande ma mi fermo qui perchè voglio essere sicura di aver
capito qualcosa!
Notte ragazzi e grazie mille
A volte è difficile farsi capire specie se non si conosce bene di cosa si
vuol parlare, la vostra pazienza
è mostruosa e non so come facciate! Complimenti ma allo stesso tempo grazie
grazie e grazie!
Deborah

 08/03/2004

 Sbaglio?
No, giusto.
Però ti ripeto che se la classe è interna al form non ha senso quello 
che stai facendo.
Ti complichi solamente la vita e rischi, come sta succedendo, di non 
capire un accidente ;)
Riesci a fare uno schemino di com'è questa form e come viene usata la 
classe?
Ciao

 quando vuoi inizializzare il valore.
E se ho capito bene l'inizializzazione va fatta nell'evento Load del Form
Ghghgh....  Io inizializzavo i valori nella Get degli oggetti.
 Wow quanto ho scritto.... Zanna prendimi a piccole dosi che sono
pericolosa!!!
Debby  -----)(@

 pericolosa!!!
Ok, per compito a casa riscriverai gli oggetti CImpiegato, CAliquote,
CDescrizione e CCheck secondo la nuova logica di "scatole chiuse" che come
avrai notato ho tralasciato di correggere :P
Per facilitarti la cosa fai finta che il tuo form non esista nemmeno.


Zanna ho effettuato molti cambiamenti grazie ai tuoi preziosi consigli e
devo dire che
anche se all'apparenza sembra tutto uguale, eseguendo il progetto step by
step si segue
meglio il concetto logico.
Però ho sempre quei dubbi sulla LET delle property e mi chiedo. Posso anche
non
scriverle?
Ti faccio un esempio. L'oggetto Voce1 che segue fa parte della classe
CDescrizioni
e prima della tua spiegazione era come la vedi ossia con una Get (che mi da
risultati giusti :) )
e una Let ( errata seguendo il tuo ragionamento)
La cosa buffa è che la LET l'ho eliminata e nella listview ho sempre i
risultati.
Deduco quindi che non serve?
[CERCO DI RISPONDERMI]
Visto che non capiterà mai che io dica che Voce1 = x  ma al contrario
troverò
sempre il valore di x tramite dei calcoli e poi assegnero il valore di x a
Voce1
la Let in questo caso non mi serve.
Giusto?
Public Property Get Voce1() As Currency
Dim Check As New CCheck
ferie = Check.FerieGodute
OreLavorate = Check.OreLavorate
Dim Aliquota As New CAliquote
  If ferie Then
        [serie di calcoli]
        Voce1 = curValore
     Else
       [altra serie di calcoli]
        Voce1 = curValore
End If
End Property
Public Property Let Voce1(ByVal vNewValue As Currency)
curVoce1 = Voce1
End Property
Debby.....
(oggi mi segnerò - se tutto va bene - la data sul calendario perchè forse ho
capito)

Marg oggi l'ho letta con moolta attenzione e associando
i tuoi aiuti a quelli di Zanna "forse" ho capito i miei errori concettuali
Grazie
Deborah

 la Let in questo caso non mi serve.
Questo devi vederlo tu ;)
Se una property ha solo la Get è ReadOnly, se ha solo la Let è WriteOnly.
A te si incasinava tutto non perchè la Let "non serve", ma perchè l'avevi
implementata con una logica errata, che spero sia chiara nell'altro post.
Ciao

 Per facilitarti la cosa fai finta che il tuo form non esista nemmeno.
Una parola ci provo cercando di seguire il tuo filo logico di scatole
Giapponesi =)
Narita sta a Kyoto come Banzai sta a Deborah :))
Scherzi a parte!
Allora devo fare solo UNA classe che chiameremo CLavoratore
gli oggetti di questa classe saranno
Anzianità
Qualifica
Assunzione
AliquotaBase
FerieGodute
Straordinario
( ce ne sarebbero molte altre ma evito per ora )
--------
Public Property Get Anzianità() As Integer
    Anzianità = YEAR(DataBustaPaga) - YEAR(Assunzione)
    MeseBustaPaga = DateSerial(1, Month(DataBustaPaga), 1)
    MeseAssunzione = DateSerial(1, Month(Assunzione), 1)
        If MeseCheck < MeseAssunzione Then
            Anzianità = Anzianità - 1
        End If
End Property
Public Property Let Anzianità(ByVal vNewValue As Integer)
    Anzianità = vNewValue
End Property
----------
Public Property Get Qualifica() As Integer
Qualifica = intQualifica
End Property
Public Property Let Qualifica(ByVal vNewValue As Integer)
intQualifica= vNewValue
End Property
---------
Public Property Get Assunzione() As Date
Assunzione = datAssunzione
End Property
Public Property Let Assunzione(ByVal vNewValue As Date)
datAssunzione = Format(vNewValue, "dd/mm/yy")
End Property
---------
Public Property Get AliquotaBase() As Currency
Dim intColonna As Integer
Dim intRiga As Integer
Dim curAliquotaBase(0 To 30, 0 To 2) As Currency
  curAliquotaBase(0, 0) = 1
  curAliquotaBase(0, 1) = 2
  curAliquotaBase(0, 2) = 3
  curAliquotaBase(1, 0) = 2
  curAliquotaBase(1, 1) = 4
  curAliquotaBase(1, 2) = 6
  curAliquotaBase(2, 0) = 3
  curAliquotaBase(2, 1) = 6
  curAliquotaBase(2, 2) = 9
...[cut]
intRiga = Anzianità
intColonna = Qualifica
AliquotaBase= curAliquotaBase(intRiga, intColonna)
End Property
---------
[Qui non penso serva la LET visto che a me serve solo tirarle fuori
dall'array
 per poi fare i calcoli]
---------
Public Property Get FerieGodute() As Integer
    FerieGodute = intFerieGodute
End Property
Public Property Let FerieGodute(ByVal vNewValue As Integer)
    intFerieGodute= vNewValue
End Property
---------
Public Property Get Straordinario() As Currency
'Gli straordinari sotto forma di pecunia cambiano a seconda se si è
'goduto di ferie oppure no.
If FerieGodute > 0 Then
  Select Case FerieGodute
    Case Is = 1
        If OreLavorate > .... Then
            [serie di IF THEN ]
            Straordinario = Valore1 * Coeff1 * AliquotaBase
        End If
    Case 2 To 3
        If OreLavorate > .... Then
        [serie di IF THEN ]
        Straordinario = Valore2 *  Coeff2 *  AliquotaBase
        End If
    Case 4 To 30
         If OreLavorate > .... Then
        [serie di IF THEN ]
        Straordinario = Valore3 *  Coeff3 * AliquotaBase
        End If
    End Select
Else
        If OreLavorate > .... Then
            [serie di IF THEN ]
            Straordinario = Valore4 * AliquotaBase
        End If
End If
End Property
Public Property Let Straordinario (ByVal vNewValue As Currency)
curStraordinario = Straordinario
End Property
--------------------------------------------
Zanna la mia scatola Giapponese mi è uscita cosi. Ovviamente vista l'ora non
l'ho trascritta
nel mio progetto perchè se non va bene rischio di non capirci più nulla
dopo.
Odio fare i compiti di Domenica cosi ho preferito farli ora. Tempo impiegato
1 ora 1/2...
Lo so sono lenta ma sfortunatamente mi è ancora difficile pensare cosi.
Ora, nell'eventualità avessi fatto i compiti in maniera giusta mi sorgono
ulteriori dubbi.
E il Mese e l'Anno che fine hanno fatto? Serve creare questi 2 oggetti?
E chi glielo dice a VB che per sapere il numero di giorni di ferie godute
deve vedere se l'utente
ha selezionato i giorni nella cboFerie?
Stessa cosa vale per la Qualifica che dovrebbe variare a seconda della
scelta dell'utente nella
cboQualifica?
Da 0 a 10 pensavi fossi cosi testarda? Spero vivamente di non romperti
troppo e vista la cura con
cui mi aiuti mi raccomando fai con comodo. (Hehehe... l'ansia di diventare
pesante aumenta però
sono stata brava eh!)  :)))
Buon Week End a tutti a Lunedi
Debby ------)@

 cui mi aiuti mi raccomando fai con comodo.
Diciamo che l'inizio non č proprio facile, ma una volta capite le 4 regoline
base si inizia (si *deve* iniziare) a andare via lisci.
Ciao
Io devo fare l'insegnante...
Nessuno conosce chi potrebbe aver bisogno? :P


 Nessuno conosce chi potrebbe aver bisogno? :P
Eccomi quanto vuoi l'ora?
=PP
Grazie Zanna
PS
Quando leggo il tuo nome mi viene in mente il film "Fuga da Alcatraz".. sei
come lui?
Debby -----)@

 come lui?
Non ho presente chi si fa chiamare con quel nome.
Ciao


Non ho presente chi si fa chiamare con quel nome.
Non è quello con la benda!!??
PS
Come fate quando il vostro Newsreader non vi fa vedere più determinate mail?
A me questa
OE me l'ha tolta perchè ormai il thread era vecchio!

 Non è quello con la benda!!??
debby, non è che il film è "1997 fuga da new york" e il protagonista viene
chiamato jena?
:-)
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 :-)
Hihihi.. Vero! Sono rinco non solo con il codice.. comunque č tutta colpa
vostra
se negli ultimi tempi mi sono rincretinita di piů oh!
Tra jena e zanna ce ne passa poi mi lamento se non distinguo un Set da un
Let.
A proposito di Set... mmm... apro un altro thread che č meglio!
Debby!

 Grazie
prego,
se ti sfugge ancora qualcosa noi siamo qua
ciaociao