Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
ciao Luca,
crea questa nuova tabella nella demo:
scrivi questo codice nell'evento su apertura:
Private Sub Report_Open(Cancel As Integer)
If DCount("*", "T_controlli") = 0 Then
Dim ctl As Access.Control
Dim i As Long
For Each ctl In Me.Section(0).Controls
If TypeName(ctl) = "textBox" Or TypeName(ctl) = "label" Or _
TypeName(ctl) = "combobox" Then
DBEngine(0)(0).Execute "insert into t_controlli (nomeControllo,dtop,dleft) values ('" & _
ctl.Name & "'," & ctl.Top & "," & ctl.Left & ")", 128
End If
Next
Set ctl = Nothing
End If
End Sub
la tabella si popola come segue:
sono le posizioni in twip dei controlli del report dai qui salta fuori la posizione zero 225, quindi nessun tentativo casuale.
Anche la distanza è di 495 non è causale, ma può essere reimpostata come ti dicevo in precedenza, analogamente per 225.
Cosa succede quanto lanci il report in anterprima.
imposta un punto di interruzione come vedi qui sotto essendo certo che la finestra di visualizzazione immediata sia visibile ( per questi due aspetti non di do ulteriori indicazioni....)
aprendo nuovamente il report con la tabella aperta, vedi i valore nella finestra immediata relativi al nome del controllo e alla distanza in twip dal top ( scusa il gioco di parole... :-) ):
concentrati ora sul top lbl_nome e lbl_posizione che nella tuo scenario incrementano sempre nella mio demo invece no.
Perché? perché devi aumentare sempre la variabile contenente la proprietà top tranne quando il controllo è nullo o lunghezza 0.
se scorri passo a passo con F8 le istruzioni ad una ad una capisci meglio cosa fa il codice, fallo magari.
Vedrai che quando il ciclo individua l'etichetta lbl_nome sottrae 495 in modo da riportare indietro il valore top per poi aggiungere lo stesso valore, in modo che il controllo posizione, il successivo, sia posizionato esattamente alla stessa distanza del precedente, che in questo caso è nullo.
così' per tutti gli altri, più chiaro così?
Ciao, Sandro.