Newsgroup: it.comp.appl.access
Titolo: For each Contol in ......???

--------------------------------------------------------------------------<
-- 
Posted from [212.141.54.102] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Ma ho provato anche a chamare direttamante richiamando la SubForm
Uhm... non ho ben capito, allora.
Io sono CERTO che funzioni quanto ho scritto sopra, perchč lo utilizzo
spesso.


per far riferimento ai controlli di una sub devi usare:
me.NomeSubForm.Form.NomeControllo
cmq se imposti:
frm.AllowAdditions = false
frm.AllowDeletions = false
frm.AllowEdits = false
e per le subform
frm.NomeSub.Form.AllowAdditions = false
non ti serve bloccare i controlli, visto che hai bloccato l'intera form!
quindi:
Public Function AllowModifie(frm As Form, Cnd As Boolean)
    With frm
        .AllowAdditions = Cnd
        .AllowDeletions = Cnd
        .AllowEdits = Cnd
    End With
End Function
e da form:
Call AllowModifie(Me, False)
For Each obj in Me.controls 
  if obj.ControlType = acForm call AllowModifie(obj.Form, False)
Next
non ho provato, ma dovrebbe funzionare
-- 
Federico
----------------------------------
Rimuovi paperino. per e-mail
----------------------------------
Tutte le richieste che arrivano
in privato, vengono cestinate.
----------------------------------
Sito Comune di it.comp.appl.access
http://www.sitocomune.com
mailto:
webm...@sitocomune.com
----------------------------------

Gentilissimi Koo e Federico, grazie per la rapidità, ma purtroppo qualcosa è
andato storto:
Forse mi sono spiegato male, vi chiederei di rileggere il post........
Fondamentalmente non ho dubbi su come accedere alle SubForm dalla Pricipale,
ma il mio
caso prevede di modificare i parametri AllowEdits.....ecc... da una 3° form,
quella del Login
quindi ho messo la Funzione Blocca/Sblocca in un Modulo, per questo non
posso
passare Me.NomeSub.Form.Allow.....Ecc., ma devo utilizzare
Forms!Principale.NomeSub.Allow....
Il problema è che non va!!!, se Passo come parametro AS Form il seguente
Forms!Principale
è OK, mi blocca/sblocca la Frm Principale, ma le Sub no, quindi la richiamo
passando
Forms!Principale.NomeSub ma da errore, probabile errore di sintassi?????
In aggiunta, volevo dire che vorrei rendere più elegante il tutto, per
questo chiedevo
lumi sul For .....Each nidificato, per far puntare il ciclo esterno alle
form, quello interno
ai controlli da bloccare.....
Per quel che riguarda l'utilità di bloccare i campi dopo aver impedito
Modifiche
alla Form, è solo estetica, non mi piace che l'utente abbia il cursore
attivo nei campi
che non puo modificare, quindi voglio Bloccarli.....
Scusate la lungaggine, spero di essere stato più chiaro.
Grazie di nuovo Alex.


 Forms!Principale.NomeSub ma da errore, probabile errore di sintassi?????
Hai provato con Me.NomeSub.Locked = True?


non cambia la questione, 
questa in un modulo:
disabilita i controlli della form e di tuttue le sue sub form
Public Function AllowModifie(frm As Form, Cnd As Boolean)
  Dim ctl As Control
  With frm
    .AllowAdditions = Cnd
    .AllowDeletions = Cnd
    .AllowEdits = Cnd
  End With
  For Each ctl In frm.Controls
    Select Case ctl.ControlType
      Case acTextBox
         ctl.Enabled = Cnd
      Case acSubform
        Call AllowModifie(ctl.Form, False)
    End Select
  Next ctl
End Function
questa da dove ti pare:
Call AllowModifie(Forms![nomeForm], False)
naturalmente nomeForm deve essere aperta,
inoltre potresti avere dei problemi con i controlli testo che hanno il
fuoco.


Non posso usare Me.Nomesub.Locked=true, perchè lancio da un modulo.....
In ogni caso parzialmente ho risolto, vale a dire :
Forms![Principale]![Nomesub].Form.Allowedits=False (Questo funziona)
Ma non riesco a discriminare l'oggetto Subform in modo da rendere il tutto
automatico con un unica Function.
Non riconosce con l'oggetto Control  il ControlType=acForm,
forse che debba usare Object .....???


Centrato Federico ......!!!!
Ok per il resto, e in effetti da errore sulle TxtBox perchè hanno lo stato
attivo.
Dove sposto il Focus mentre ciclo i Controlli????(non ho nulla d'altro!!!)
Ciao grazie
Alex....


> Non posso usare Me.Nomesub.Locked=true, perchè lancio da un modulo.....
Non ti seguo. Quell'istruzione la dai proprio da un modulo.
Ovviamente, con il ciclo For Each... dovresti usare una sintassi del tipo:
    oCtl.Locked = true
Dove oCtl è il controllo della collezione me.controls.

 Alex....
premesso che non mi piace per niente quello che stai facendo, come ben
sai ;-)
l'unica cosa che mi viene in mente e mettere su tutte le form e le
subform un controllo testo con lo stesso nome e dimensioni 0:
es.
Nome: txtTabStop
Larghezza: 0
Altezza: 0
Visibile: True
poi prima di ciclare i controlli aggiungi:
frm.txtTabStop.setfocus
dovrebbe funzionare


Ciao Federico.
Poichè hai ragione ancora sulla "Bellezza" dell'opera, mi sento in dovere di
ascoltarti, evito complicazioni
inutili tanto l'utente non può far danni, al massimo gira per le textbox.
In ogni caso mi hai tolto da una imbarazzante situazione, è proprio vero che
molte volte
la soluzione è li e non la vediamo perchè stiamo guardando oltre, mi accorgo
che mi sono perso
in una lacrima......
Grazie Alex


Ciao carissimo Koo, grazie della tua disponibilità.
Ho risolto tutto, ma vorrei spiegarti ciò che intendevo:
Poichè passo il nome della Form da una Form di Login, va da se
che se passo Me.Subform, il tutto è relativo alla Form di Login,
poichè ciò, nel mio caso, è errato, devo riferirmi all'oggetto
Forms.Principale.Subform.Form
e passare così, poi anche con il tuo metodo funziona, ma l'inghippo era la
sintassi del precedente.
Grazie di nuovo, e spero a buon rendere.
Alex.


 Grazie Alex
solo un appunto,
quando rispondi dovresti mantenere tutto o parte del msg precedente.
questo perche' se uno legge solo la risposta capisce di cosa si parla
senza doversi leggere tutto il thread.
naturalmente se il precedente e' troppo lungo, ne mantieni solo le parti
salienti.
dai uno sguardo a quaello che fanno gli altri.
ciao
