Newsgroup: it.comp.appl.access
Titolo: Lista Controlli di un Oggetto

Vi disturbo ancora.
Vorrei creare una lista dei controlli presenti in un Oggetto,
ho seguito l'esempio presente nell'Help di Access, ma mi da un errore.
Sub ContainerObjectX()
    Dim dbsNorthwind As Database
    Dim ctrCiclo As Container
    Dim prpCiclo As Property
    Set dbsNorthwind = OpenDatabase("Northwind.mdb")
    With dbsNorthwind
        ' Enumera l'insieme Containers.
        For Each ctrCiclo In .Containers
            Debug.Print "Properties di " _
                & ctrCiclo.Name & " container"
            ' Enumera l'insieme Properties di ogni
            ' oggetto Container.
            For Each prpCiclo In ctrCiclo.Properties <-----------ERRORE
                Debug.Print "  " & prpCiclo.Name _
                    & " = " prpCiclo
            Next prpCiclo
        Next ctrCiclo
        .Close
    End With
End SubLavorando su una Form (es Maschera1)si può semplificarein modo da
scorrere tutti gli oggetti?Grazie, buona giornata a tutto l'NG.Paolo

 ha scritto nel messaggio news:44f14f96$0$30245$4faf...@reader1.news.tin.it...

Immagino ti riferisca a form chiuse; se è così prova con:
http://support.microsoft.com/kb/124344/
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio
news:ecrokh$vhh$1...@area.cu.mi.it...

l'esempio l'ho già visto, con codice rienpio una casella di riepilogo
con la lista degli oggetti del database (es lista delle maschera)
e da questa volevo creare un'altra lista con i controlli (es della maschera
scelta).
Mi perdo nell'estrazione dei controlli.
Grazie comunque del consiglio.
Ciao
Paolo

Paolo Dal Bosco ha scritto:

Non ho capito forse...
Dim frm ad Access.Form
dim ctl as Access.Controls
Dim prp As Access.Property
Dim dbs As Database,ctr As Container, doc As Document
Set dbs = CurrentDb
' Restituisce il riferimento al contenitore Forms.
Set ctr = dbs.Containers!Forms
' Elenca insieme Documents del contenitore Forms.
For Each doc In ctr.Documents
   Set frm=doc
   For each ctl in frm
       For each prp in ctl.properties
          Debug.print 
ctl.name
 & " prp(" & prp.Name & ")= " & prp.value
       Next prp
   Next ctl
Next doc
Intendevi questo...?
Non sono certo che l'iterazione su Documents restituisca un'oggetto
Access.Form
ma eventualmente con il Nome puoi usarlo come Pointer, il problema
nasce se è chiuso
che, nel tuo caso potrebbe essere necessario averla aperta....
Altrimenti non ho capito bene
@Alex

 ha scritto nel messaggio
news:1156674526.1...@h48g2000cwc.googlegroups.com...


Non ho capito forse...


Intendevi questo...?


@Alex
---------------------
intendevo proprio questo, è che mi dà un errore
--> Dim prp As Access.Property
e dice: Errore di compilazione
           Tipo definito dall'utente non definito
contorto, ma dice proprio così
ed io qui mi fermo, conosco poco e male  gli oggetti.
Grazie per l'attenzione
Accendo anche l'altro pc e guardo-ascolto il GP
Paolo

 Paolo
Ma a me restituisce errore su: ctl.Properties
"impossibile trovare il metodo o il membro dei dati"
Ora sono due le perplessità:
1 - come ha fatto access a capire il mio handicap, pur avendo una scrivania in legno;
2 - è probabile che non sia quello il modo.
Ora per la prima contatterò il Supporto MS; per la seconda ci penserà Alessando. A meno che non voglia dipanare la matassa per 
entrambi le perplessità...
Ciao.
-- 
Sergio MAZZA 



Ciao Paolo.
Allora ne codice che ti ho suggerito ho inserito 2 errori abbastanza
evidenti, dovuti
al non aver letto l'Help uno e di sbadataggine l'altro:
1°    dim ctl as Access.Controls
        è ovviamente errato definire un'oggetto come collection,
quindi va tolta al "s"
       e diventa
                           dim ctl as Access.Control
2°    Errore di concetto dovuto al fatto che la classe Propety non è
membro di Access
       ma di DAO..., quindi
ERRATO   -----> Dim prp As Access.Property
CORRETTO -----> Dim prp As DAO.Property
Ora da me questo codice funziona :
Private Sub Form_Load()
   On Error Resume Next
   Dim frm As Access.Form
   Dim ctl As Access.Control
   Dim prp As DAO.Property
   Dim dbs As Database, ctr As Container, doc As Document
   Set dbs = CurrentDb
   ' Restituisce il riferimento al contenitore Forms.
   Set ctr = dbs.Containers!Forms
   ' Elenca insieme Documents del contenitore Forms.
   Set dbs = CurrentDb
   ' Restituisce il riferimento al contenitore Forms.
   Set ctr = dbs.Containers!Forms
   ' Elenca insieme Documents del contenitore Forms.
   For Each doc In ctr.Documents
      Debug.Print "FORM = " & doc.Name & vbNewLine
      Set frm = Forms(doc.Name)
      For Each ctl In frm.Controls
         Debug.Print "----CONTROL = " & ctl.Name & vbNewLine
          For Each prp In ctl.Properties
             Debug.Print "--------Property = " & prp.Name & " = " &
prp.Value & vbNewLine
          Next prp
      Next ctl
   Next doc
End Sub
Bada alla gestione errori, ci sono proprietà che sono ReadOnly e solo
in casi particolari vengono esposte, quindi se non metti On Error
Resume Next devi scendere nel dettaglio
per discriminare gli errori....
@Alex

 ha scritto nel messaggio
news:ecs443$c0g$1...@area.cu.mi.it...

VI RINGRAZIO.
speriamo in bene.
Paolo

 ha scritto nel messaggio
news:1156683111.6...@h48g2000cwc.googlegroups.com...


Ciao Paolo.










End Sub

@Alex
-----------------------------
gira, gira :-), ok per gli errori,.
Non so se è giusto ma non mi da la lista di tutti i controlli,
ma solo dell'ultima casella di testo inserita come tempo:
----CONTROL = Etichetta26, naturalmente nella maschera c'è
molto altro ( non è che la finestra immediata mi fa vedere solo una parte?
Mille grazie
Paolo

 ha scritto nel messaggio
news:1156683111.6...@h48g2000cwc.googlegroups.com...


Ciao Paolo.










End Sub

@Alex
-------------------
funziona egregiamente, mi dà piu' di quello che pensavo.
(ho imparato anche che la finestra immediata puo' contenere solo un
tot numero di righe, dopo il GP per mia curiosità le conto)
mille, mille grazie.
Paolo

 tot numero di righe, dopo il GP per mia curiosità le conto)
199
Ancora grazie.
Paolo

 Paolo
Ehehehehe all'inizio(qualche anno fà) anch'io mi ero preso un'abbaglio
con la finestra immediata......(mai più) ora quando devo Debuggare in
modo serio
invio tutto ad un LOG_FILE....!
Ciao
@Alex

 [--CUT--]

Si sono quelle, ma c'è un sistema per fare il Clean Automatico
anche...!
In ogni caso volevo dirti che quella routine è carente nel caso di
SubForm
e di SubForm di SubForm.....!
Credo tu abbia capito cosa intendo..., va modificata in modo da
renderla ricorsiva
sull'oggetto Form, in quanto una SubForm viene vista come acSubForm ma
non è
altro che una form, quindi strutturando bene la Funzione, che andrebbe
divisa in 2 parti
a questo punto in ricorsione passi la SubForm come oggetto Form e
riesci ad accedere
anche a qualsiasi proprietà dei controlli degli oggetti inseriti in
elementi inferiori...!
E' la stessa tecnica che abbiamo usato nel ReportEditor che è
pubblicato nel mio sito
serve un pò di attenzione, ma è il massimo....!
Ciao
@Alex

 ha scritto nel messaggio
news:1156698758....@h48g2000cwc.googlegroups.com...






Ciao
@Alex
-----------------------------------------
scusami per il ritardo nella risposta ma son tornado addesso da messa.
comunque, non complichiamo le cose, al momento l'aiuto che mo hai dato
è stato più che esauriente, più che utile...
se riesco a fare quello che ho in mente poi te lo invio.
ne approffitto, anche in questo NG ci sono persone che usano indirizzi email
non validi,
se controlli il thread "campo progressivo con raggruppamento"  del 24/08 il
sig simo alias
va...@virgilio.it
 non esiste, potevo dargli una mano, invece nisba.
Grazie ancora.
Ciao
Paolo

 Paolo
@ALex