Newsgroup: it.comp.appl.access
Titolo: Vettore dei controlli

Mi servirebbe di poter richiamare i controlli di una
maschera in modo vettoriale, cioe' poter scrivere qualcosa
come:
me.Controlli(i).proprieta'
in modo da poter asseg
esiste un'organizzazione predefinita dei controlli in forma
vettoriale, secondo l'ordine di tabulazione o qualunque
altro ordine?
il barbi


Beh, puoi usare l'insieme Controls
Private Sub Form_Load()
   Dim ctl as Control
   For Each ctl in Me.Controls
      [...codice...]
   Next ctl
End Sub
Io lo uso per impostare delle propietą comuni sui controlli.
Ciao
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto nel messaggio
news:wnqsa.54128$K35.1...@news2.tin.it...

Credo che usi male la parola "vettore".
Per quanto riguarda il ciclare attraverso le proprietà di uno o più
controlli di una maschera ti riporto un esempio tratto dalla guida in linea:
Da questo esempio e leggendo anche "Properties" nella guida potrai ottenere
quello che cerchi.
Nella routine riportata di seguito, la proprietà Properties viene utilizzata
per stampare tutte le proprietà associate ai controlli di una maschera nella
finestra Debug. Per eseguire questo codice, inserire un pulsante di comando
chiamato cmdElencaProprietà in una maschera e incollare il codice riportato
di seguito nella sezione Dichiarazioni della maschera. Fare clic sul
pulsante di comando per stampare l'elenco delle proprietà nella finestra
Debug.
Sub cmdElencaProprietà_Click()
 ElencaPropControlli Me
End Sub
Sub ElencaPropControlli(frm As Form)
 Dim ctl As Control, prp As Property
 On Error GoTo prop_err
 For Each ctl In frm.Controls
  Debug.Print ctl.Properties("Nome")
  For Each prp In ctl.Properties
   Debug.Print vbTab & prp.Name & " = " & prp.Value
  Next prp
 Next ctl
prop_bye:
 Exit Sub
prop_err:
 If Err = 2187 Then
  Debug.Print vbTab & prp.Name & " = Disponibile solo in fase di
strutturazione."
Resume Next
 Else
  Debug.Print vbTab & prp.Name & " = Si è verificato un errore: " & Err
  Resume Next
 End If
End Sub
Ciao, Carlo

 ha scritto nel messaggio
news:wnqsa.54128$K35.1...@news2.tin.it...

Forse intendi array di controlli.Se cosģ in access non puoi creare degli
array di controlli
come faresti che so in VB perņ ci sono degli accorgimenti per fare una cosa
simile.
Cerca nei vecchi post "Array di controlli"  e troverai sicuramente qualcosa.
Ciao
Giuseppe

 ha scritto nel messaggio
news:wnqsa.54128$K35.1...@news2.tin.it...

Access al contrario di VB non consente in modo nativo
l'utilizzo Matrici di Controlli, ma c'è la possibilità di semplificarsi
la vita.
1)Sfruttare l'oggetto Controls di Maschera, ma ti limita notevolmente
    se la tua Form dovesse avere differenti tipologie di Controlli
    e le azioni da compiere fossero differenti, non solo per tipologia...!
    In questo caso servirebbe un sacco di codice di discriminazione,
    oppure ricorrere alla proprietà TAG dei controlli in modo da renderli
    raggruppati secondo il contenuto della Proprietà TAG.
Es:
    Din Ctl As Control
    For each Ctl in Me.Controls
        If ctl.TAG="1" Then
            'Azione 1
        ElseIf ctl.Tag="2" Then
            'Azione 2
        End if
    Next
2)Io sinceramente utilizzavo la soluzione precedente, ma in alcuni casi
    è conveniente valutare questa:
    Chiamo i controlli interessati al Loop in modo UGUALE+Progressivo:
    Controllo1
    Controllo2
    Controllo3
    ................
    Dim x as Integer
    For x=1 to Num
        Me.Controls("Controllo" & cstr(x)).Enabled=False
    Next
L'esempio è puramente indicativo, è solo per farti capire la semplicità
della cosa.
In questo modo hai la possibilità di raggruppare i controlli e usare la
proprietà
TAG che ritengo preziosissima per altre cose........!
Ciao
@Alex.


guarda che sono 40 anni che si usa la parola "vettore" nel
senso di "tabella monodimensionale", a partire dal Fortran e
dal Cobol, che tu naturalmente non sei tenuto a
conoscere...:-))
il barbi


si' pero' sei costretto a chiamare i controlli con nomi non
mnemonici, che per me e' uno svantaggio... In sostanza mi
confermi che non c'e' un ordinamento predefinito dei
controlli in un vettore (o array, visto che la dizione
"vettore" non e' molto popolare...:-))
il barbi

 ha scritto nel messaggio
news:Wkxsa.57573$K35.1...@news2.tin.it...

In VB o VBA non si parla di vettori ma di array o matrici. D'altra parte
anche il Fortran usa allo stesso modo gli array.
Un vettore Fortran (array di rango 1) e' definito da una istruzione
  tipo, dimension(N)    :: A
dove tipo rappresenta il tipo dati primitivo dell' array (real, integer,
character, logical, complex) con N costante intera  esprimente il numero di
componenti del vettore.
Anche il linguaggio C usa i Vettori nel senso di una variabile strutturata
formata da più elementi.
In Access, volendo usare il senso del vettore Cobol, si parla di TABELLE.
Infatti queste sono costituite da due dimensioni: LE RIGHE e LE COLONNE.
Ma tornando ad Access, che è quello che ti interessa, e per essere più
preciso, direttamente dalla guida:
In Visual Basic, è possibile dichiarare matrici che includono fino a 60
dimensioni. L'istruzione seguente dichiara, ad esempio, una matrice a due
dimensioni, ovvero 5 per 10.
Dim sngMulti(1 To 5, 1 To 10) As Single
Il primo argomento rappresenta le righe e il secondo le colonne.
VBA, inoltre utilizza le Matrici di Parametri (vedi).
Inoltre esiste la funzione ARRAY che in VBA restituisce un valore Variant
che contiene una Matrice.
Tutte queste cosine sono ben chiare nella guida di ACCESS.
Se leggevi il post successivo avevi già la risposta.
Ciao, Carlo


non prendertela, era solo una precisazione nazionalistica
:-)) nel linguaggio informatico in italiano "array" si
dice(va) "vettore"
il barbi

 ha scritto nel messaggio
news:LULsa.60910$K35.1...@news2.tin.it...

Se hai capito che Array e Vettore sono sinonimi ti sbagli.
La traduzione di Array è ordinamento, schiera, elemento con più strutture o
dimensioni.
Il vettore negli array potrebbe essere visto come quella struttura che in un
punto preciso del reticolo (a volte bi o tridimensionale) porta sulle sue
spalle i due o tre valori del punto.
E' la direzione Nord-Sud o quella Est-Ovest di una griglia.
E' la casella di un cruciverba o le coordinate di una battaglia navale.
Indica (due, tre o più valori) che identificano in modo univoco un punto in
una griglia, in una tabella in un Array appunto.
Comunque colgo l'occasione per dire che tutti i paesi seri, come la Francia,
la Germania o l'America stessa, obbligano i costruttori di software alla
traduzione nella lingua nazionale. Solo noi non abbiamo una legislazione in
merito.
Peccato perché così fatichiamo più dei nostri colleghi francesi o tedeschi.
Ciao, Carlo


infatti non siamo un paese serio... te ne accorgi da come ci
suonano buffe a volte le traduzioni dei manuali, proprio
perche' a noi non viene in mente di tradurre molti
termini...
basta dire che solo da noi il "mouse" si dice ancora
"mouse"...:-)
il barbi


mi e' venuto in mente che questa soluzione mi potrebbe andar
bene per la necessita' che ho di definire dei gruppi di
controlli, in modo da poter assegnare velocemente a un
gruppo una certa proprieta'. Ma e' proprio questo lo scopo
della proprieta' TAG?
il barbi

 ha scritto nel messaggio
news:rpeta.41479$3M4.1...@news1.tin.it...

Lo scopo della proprietą TAG č come per le Form la Proprietą OPENARGS....!
Chi puņ dire quale sia lo scopo, ognuno la usa come meglio ritiene......!
Se per te, e per me in questo caso, č utile a questo benvenga.
@Alex