Newsgroup: it.comp.appl.access
Titolo: Sapere se il controllo ha una certa proprietà

Ciao a tutti.
Vorrei ciclare tutti i controlli di una maschera per vedere che "Ordine di
Spostamento" hanno (TabIndex). Uso questo codice:
        For Each Controls In Me
                Debug.Print Controls.Name & " " & Controls.TabIndex
        Next
Ovviamente dà errore (438) sui controlli che non hanno la proprietà TabIndex
(ad esempio le etichette). Vorrei non utilizzare la gestione errori. La
TabIndex ce l'hanno un sacco di tipi di controllo quindi trovo un po'
scomodo utilizzare il ControlType. Non c'è un modo di sapere se un controllo
ha quella proprietà?
Grazie
Ciao
Silvio

 ha scritto nel messaggio 
news:42a95...@x-privat.org...

Non vedo perchè non utilizzire la proprietà Type o meglio ControlType così:
Dim aa As Control
For Each aa In Me.Controls
                If aa.ControlType <> 100 Then
                Debug.Print aa.Name & " " & aa.TabIndex
                End If
        Next
Ciao, Carlo 

 wrote in message
news:42a95...@x-privat.org

Alternativa al suggerimento di Carlo
è usare la gestione errori.
On Error Goto Err_Check
dim ctl as Acces.Control
For Each ctl In Me
      Debug.Print ctl.Name & " " & ctl.TabIndex
Next
Exit Sub/Function
Err_Check:
   If err.Number=438 then resume next
End Sub/Function
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Grazie!!!
In effetti non avevo pensato di usare il ControlType per *escludere* i
controlli che non hanno la TabIndex!
Mi sembra un'ottima idea. Verifico che siano soltanto le etichette
(acLabel=100) a non averla (lo scriverò qui) e uso questa soluzione.
Ancora grazie.
Ciao
Silvio

 End Sub/Function
Grazie.
Ci avevo pensato ma visto che la routine è piuttosto complessa, preferirei 
non utilizzare la gestione errori. Credo che seguirò il consiglio di Carlo.
Grazie ancora.
Ciao
Silvio 


OK, la TabIndex NON si applica a acImage, acLabel, acLine, acPage, 
acPageBreak, acRectangle.
Ancora grazie a tutti.
Ciao
Silvio 

 Silvio
Volevo segnalarti che la proprietą in questione non si applica a
tutti gli oggetti, ma vedo che ti sei accorto in autonomia.
Personalmente non usare la gestione errori a maggior ragione
in una Routine complessa č un metodo molto discutibile, ma
non voglio insistere.
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

 non voglio insistere.
Non so, a me non piace molto...per esempio, io ho un caso del genere:
On Error GoTo Errore
    If MioControllo.TabIndex = 2 Then
         Set ControlloDaOrdinare = MioControllo
    End If
Uscita:
    Exit Sub
Errore:
    If Err.Number = 438 Then
        Resume Next
    Else
        MsgBox Err.Description
        Resume Uscita
    End If
In questo caso, se c'è l'errore, la Resume Next mi rimanda comunque alla
riga
"Set ControlloDaOrdinare = MioControllo"
e non è quello che voglio.
Ovviamente si potrebbe usare qualche trucchetto tipo
    If MioControllo.TabIndex <> 2 Then
        'fai niente
    Else
         Set ControlloDaOrdinare = MioControllo
    End If
...ma non so neanche se funzioni. Oppure con un Resume a un'etichetta di
riga...
Insomma, siccome la routine è già piuttosto complessa...preferisco evitare.
Comunque grazie.
Ciao
Silvio

 ha scritto nel messaggio
news:42a9d...@x-privat.org...

Secondo me ti sbagli.
Fai una prova su quanto hai affermato.
Il Resume Next come dice la parola stessa passa all'istruzione successiva
altrimenti andrebbe in LOOP....!!!!
Ovvio che il Resume Next va usato con criterio e solo quando si ha
la certezza o la possibilità di discriminare un errore(che mi pare il tuo
caso).
In ogni caso a prescindere da questa tua necessità contingente l'uso della
Gestione Errori è fondamentale, supponi di avere un Bugs nella tua Routine
complessa(sappi anche che le Routine complesse si spezzano in routine
semplici
decisamente gestibili con meno problemi) da dove parti per
trovarlo....!!!!!!
Questa è la mia personale opinione di struttura del codice.
