Newsgroup: it.comp.lang.visual-basic
Titolo: Variabile che "punta" a una textbox con certe caratteristiche...

Salve a tutti!
Ho bisogno di fare la seguente operazione:
ciclo che scorre tutti gli oggetti di una form e ne controlla una
proprietà (deve prendere in considerazione le sole textbox e
analizzarne il value e l'index).
Quando viene individuata la prima textbox che ha le caratteristiche
richieste, la variabile "MiaTextbox" deve "puntare" (per chi ha
conoscenze dei puntatori del C) a questa TextBox in modo che poi sia
possibile fare
MiaTextBox.SetFocus
E' possibile farlo?
Cosa devo cercarmi per vedere come si fa? 
Grazie!
Ale

 MiaTextBox.SetFocus
Dim X as VB.Control
For Each X in Controls
 If TypeOf X Is VB.TextBox And (altre tue esigenze, tipo index _
    e value) Then X.Setfocus
Next
Non ho provato il codice, ma il sistema funziona di sicuro.
Bye, G. 

Ok, grazie mille!
E se invece di fare x.setFocus all'interno del For Each volessi farlo
alla fine? Come faccio a mantenere il riferimento di x al controllo? Se
faccio "exit for" mi perde il riferimento e non mi permette di fare
SetFocus su x (che è vuoto)
Grazie di nuovo!
Ale


 SetFocus su x
Basta fare prima la setfocus e poi l'exit for ;)
Ciao 

 SetFocus su x (che è vuoto)
Generico:
Per puntare una variabile ad un'oggetto:
1) Si dichiara la variabile del TIPO di quell'oggetto
(es: Dim objTheTextBox as TextBox)
2) Si usa Set per assegnare alla variabile il riferimento all'oggetto
(es: Set objTheTextBox = form.iltextboxdareferenziare)
In ogni caso, dai un occhio alla keyword "Set", e' fondamentale in VB... 

Quanto già detto dagli altri è corretto.
Aggiungo solo che il comando:
Controllo.Setfocus
genera errore se per caso il controllo ha già
il fuoco attivo.
Ti consiglio di utilizzare una delle seguenti
sub che esegue il comando solo se il controllo
non ha già il fuoco:
Public Sub MettiFuocoSu(F As Form, C As Control)
    'Esempio MettiFuocoSu NomeForm, NomeControllo
    Dim NomeForm As String
    Dim NomeControl As String
    Dim NomeAttivo As String
   On Error GoTo MettiFuocoSu_Error
    NomeForm = F.Name
    NomeControl = C.Name
    Dim Conta As Integer
    NomeAttivo = 
F.ActiveControl.Name
    If NomeControl <> NomeAttivo Then
        C.SetFocus
        Exit Sub
    End If
   On Error GoTo 0
   Exit Sub
MettiFuocoSu_Error:
    If Err.Number = 91 Then Exit Sub
    If Err.Number = 5 Then
        Call MsgBox("Errore di SetFocus" _
                    & vbCrLf & "Nome Form:                " & NomeForm _
                    & vbCrLf & "Nome controllo attivo:    " & NomeAttivo _
                    & vbCrLf & "Nome controllo richiesto: " & NomeControl _
                    , vbInformation, App.Title)
        Exit Sub
    End If
    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
MettiFuocoSu of Modulo ModPublic"
End Sub
Public Sub MettiFuocoPiu(F As Form, C As Control)
    'Esempio MettiFuocoPiu NomeForm, NomeControllo(index)
    Dim NomeForm As String
    Dim NomeControl As String
    Dim NomeAttivo As String
    Dim IndexAttivo As Integer
   On Error GoTo MettiFuocoPiu_Error
   DoEvents
    NomeForm = F.Name
    NomeControl = C.Name
    NomeAttivo = 
F.ActiveControl.Name
    IndexAttivo = F.ActiveControl.Index
    If Not (NomeControl = NomeAttivo And IndexAttivo = C.Index) Then
Vai:
        C.SetFocus
        Exit Sub
    End If
   On Error GoTo 0
   Exit Sub
MettiFuocoPiu_Error:
    If Err.Number = 91 Then Exit Sub
    If Err.Number = 343 Then Resume Vai
    If Err.Number = 5 Then
        Call MsgBox("Errore di SetFocus" _
                    & vbCrLf & "Nome Form:                " & NomeForm _
                    & vbCrLf & "Nome controllo attivo:    " & NomeAttivo _
                    & vbCrLf & "Nome controllo richiesto: " & NomeControl _
                    , vbInformation, App.Title)
        Exit Sub
    End If
    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
MettiFuocoSu of Modulo ModPublic"
End Sub
Ciao, Sauro

Grazie a tutti!
Ora provo