Intercettare evento setfocus




  • di Miglio (utente non iscritto) data: 25/10/2010

    Prova così

    quando entri nel textbox1 diventa gialla e quando esci bianca..


    mandi


     
    Private Sub TextBox1_Enter()
    TextBox11.BackColor = &HC0FFFF
    End Sub
    
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox11.BackColor = &H80000005
    End Sub



  • di Miglio (utente non iscritto) data: 25/10/2010

    Scusami non avevo letto tutto il tuo msg, ma quello purtroppo è l'unico modo che conosco.



    mandi



  • di Albatros54 (utente non iscritto) data: 26/10/2010

    Tempo fa si era presentata una discusione simile ed abbiamo risolto con una classe, pero la classe non presenta l'evento setfocus ma bensi l'evento change.
    ti posto il codice se ti puo essere di aiuto.
    crea una classe e rinominala ctextbox ed incolla il codice postato.
    nella useform incolla il codice initialize postato sotto, fai sapere
    ciao
    albatros54



     
    > Codice  della classe ctextbox <
    Option Explicit
    
    Public WithEvents txt As MSForms.TextBox
    
    
    Private Sub txt_Change()
        Dim Ctrl As MSForms.Control
        For Each Ctrl In UserForm3.Controls
            If TypeName(Ctrl) = "TextBox" Then
                Ctrl.BackColor = &H80000005
            End If
        Next Ctrl
        Me.txt.BackColor = 65535 '&HFFFFC0
        txt.Text = UCase(txt.Text)
    End Sub
    
    > Fine codice classe <
    
    
    > codice da incollare nella userform <
    
    Option Explicit
    
    Dim colTextBox As Collection
    Dim myTxt As cTextbox
    
    Private Sub UserForm_Initialize()
    
       Dim ctl As MSForms.Control
     
        If Not colTextBox Is Nothing Then
            Set colTextBox = Nothing
        End If
        
        Set colTextBox = New Collection
        
        For Each ctl In Me.Controls
            If TypeOf ctl Is MSForms.TextBox Then
                Set myTxt = New cTextbox
                Set myTxt.txt = ctl
                colTextBox.Add myTxt
            End If
        Next
    
    End Sub
    
    
    Private Sub UserForm_Terminate()
        Set myTxt = Nothing
        Set colTextBox = Nothing
    End Sub
    
    > Fine codice userform <



  • di Ricky53 (utente non iscritto) data: 26/10/2010

    Ciao,
    nella macro di albatros poi sostituire il "change" con

    "keydown" e "keyup"

    come nell'esempio che ti invio.

    volendo puoi utilizzare anche
    "mousemove", "mousedown" e "mouseup"
    ma direi che è troppo ...

    ciao da ricky53
     
    Private Sub txt_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        Gestisci_Colore
    End Sub
    
    Private Sub txt_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        Gestisci_Colore
    End Sub
    
    
    Public Sub Gestisci_Colore()
        Dim Ctrl As MSForms.Control
        For Each Ctrl In UserForm1.Controls
            If TypeName(Ctrl) = "TextBox" Then
                Ctrl.BackColor = &H80000005
            End If
        Next Ctrl
        Me.txt.BackColor = 65535
        txt.Text = UCase(txt.Text)
    End Sub
    
    



  • di Ricky53 (utente non iscritto) data: 26/10/2010

    Ciao,
    no, hai verificato bene???
    che prove hai fatto???
    come ti sposti da una "textbox" all'altra???

    quanto to ho inviato funziona proprio come ti occorre!
    per esempio prova a spostarti con il "tab" e vedrai ...
    se poi inserici anche la gestione del "mouse", come ti ho detto, vedrai che basta posizionare il mouse su una textbox e ... cambia il colore, poi con un click puoi scrivere.

    prova e prova e vedrai che ne esci.

    ciao da ricky53




  • di Ricky53 (utente non iscritto) data: 27/10/2010

    Bene.
    buon proseguimento ed alla prossima.

    ciao da ricky53