Newsgroup: it.comp.lang.visual-basic
Titolo: Verificare elemento di matrice caricato

Salve a tutti.
Come posso verificare se un elemento di una matrice di Label è
effettivamente stato caricato o no, senza che VB dia errore per elemento non
caricato?
Es. ho la matrice Label() ed ho caricato solo le (0), (3), (4) Durante
l'esecuzione del prg sono state cancellate delle Label.Per verificare se c'è
ancora la Label(2) come faccio?
Grazie!
Giorgio

> GiorgioF:

Intercetti l'errore... oppure mantieni un vettore booleano che
ti informi sullo stato del controllo... oppure fai un ciclo
fra tutti i controlli alla ricerca di uno che abbia il nome di
quello sul quale vuoi informazioni...
--
Ciao.
Maurizio
--------
?SPQR(C)
 X

Prova ad usare una Function che ti ritorni un boolean in cui non fai altro
che cercare di accedere alla label in questione (intercetti l'errore) e
ritorni True o False a seconda che tutto sia andato bene.
Prova così:
Private Function ExistLabel(byval TestLabel as Label)
    On Error Resume Next
    Dim lbl as Label
    Set lbl = TestLabel
    if lbl Is Nothing then
        ExistLabel = False
    Else
        ExistLabel = True
    End If
    Set lbl = Nothing
End Function
Nel tuo programma poi la usi passandogli la label che vuoi controllare (Es.
ExistLabel(Label_Vector(2))
Ciao
--
________________________________
Raffaele Tripodo
E-Mail:              
raff...@conmet.it
MSN Messenger: 
px...@hotmail.com
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

ancora la Label(2) come faccio?
E' un po' brutto cancellare gli elementi di mezzo di una matrice di
controlli.
Piuttosto lasciali e settali (ad. es.) come invisibili, oppure sposta in su
tutti gli elementi sotto e poi elimina solo l'ultimo.
Cosě ti eviti un mucchio di casini.
Ciao

 Nel tuo programma poi la usi passandogli la label che vuoi
controllare (Es. ExistLabel(Label_Vector(2))
Forse ho capito male ma... come fai a passare una label che
non esiste?


Dato che si tratta di un vettore, sei solo tu che sai che non esiste un dato
elemento, ma per VB basta che sia definito il vettore (a dire il vero è una
specie di collection).
Es. Supponiamo che tu abbia un vettore di label chiamato Lbl_Vect con gli
elementi 0, 1, 3
Tu puoi scrivere nel codice Lbl_Vect(2).Caption = "ciao" e il VB non ti dà
errore fino a che non esegue l'istruzione, ma in compilazione è tutto OK.
A questo punto puoi usare la funzione ExistLabel passandogli Lbl_Vect(0) (e
ritorna True) e Lbl_Vect(2) (e ritorna False).


 A questo punto puoi usare la funzione ExistLabel passandogli
Lbl_Vect(0) (e ritorna True) e Lbl_Vect(2) (e ritorna False).
Probabilmente ci sono differenze fra VB4 e verss succ. perche'
in VB4 quel codice restituisce sempre lo stesso risultato, che
esista o meno la label. E non va in errore. E non e` strano,
visto che in VB4 mancano, per es., le proprieta` LBound,
Count, ecc.
Io, per ottenere lo stesso risultato, ho dovuto fare cosi`:
Option Explicit
Private Sub Command1_Click()
  Debug.Print ExistsLabel(Label1(0))
  Debug.Print ExistsLabel(Label1(1))'MANCA
  Debug.Print ExistsLabel(Label1(2))
End Sub
Function ExistsLabel(TestLabel As VB.Label) As Boolean
  On Error Resume Next
  ' Dato che 0 e` il valore minimo dell'indice:
  Let ExistsLabel = TestLabel.Index + 1
End Function
Output:
Vero
Falso
Vero
