Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

imposta Forecolor e Backcolor di casella di testo al passaggio del mouse

  1. #1
    angelo_dima non è in linea Novello
    Buonasera, dopo vari tentativi non riesco a risolvere un problema, vorrei in una form al passaggio del mouse su ogni casella di testo impostare il forecolor e il backcolor della stessa per poi riportarlo al colore precedente quando il mouse si sposta altrove, sono riuscito impostanto l'evento su mouse spostato della casella di testo a impostare i colori ma quando il mouse si sposta altrove non riesco a rimettere il colore che aveva prima perchè non capisco quale sia l'evento del mouse che si sposta lontano dalla casella di testo, spero che sia stato chiaro, saluti a tutti
    angelo

  2. #2
    OsvaldoLaviosa ora è in linea Topo di biblioteca
    Sempre usando l'evento "su mouse", prova a creare una If...Then...Else tale che:
    se BackColor è Colore1, allora cambialo in Colore2
    altrimenti
    fai il contrario.
    Un dubbio che mi viene è che al passaggio del mouse...potrebbe impazzire perchè ha appena cambiato colore, quindi riconosce colore-ultimo e reimposta il primo ecc... Non so, prova.
    ℹ️ Leggi di più su OsvaldoLaviosa ...

  3. #3
    angelo_dima non è in linea Novello
    Infatti è proprio così, si ha un effetto quasi lampeggiante, non riesco a trovare la soluzione
    Grazie

  4. #4
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    E' ovvio perchè continui a cambiarlo anche se non serve, e genera FLICKERING.
    Soluzione:
    Option Compare Database
    Option Explicit
    
    
    Private Const Colore1=vbRed
    Private Const Colore2=vbBlue
    
    Private Sub Corpo_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Me!NomeTuaTextBox.BackColor= Colore2 Then 
               Me!NomeTuaTextBox.BackColor=Colore1
        End If
    End Sub
    
    Private Sub NomeTuaTextBox_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Me!NomeTuaTextBox.BackColor= Colore1 Then 
               Me!NomeTuaTextBox.BackColor=Colore2
        End If    
    End Sub
    
    ℹ️ Leggi di più su @Alex ...

  5. #5
    angelo_dima non è in linea Novello
    Grazie infinite in effetti funziona benissimo la tua soluzione, ma se volessi farlo per tutti i controlli della maschera con un cliclo for next, ho letto qualcosa ma non sono riuscito a implementarla al mio DB
    ancora grazie

  6. #6
    L'avatar di muttley005
    muttley005 non è in linea Topo di biblioteca
    for each myC in me.controls
    next
    
    per ciclare i controlli
    io personalmente sfrutto la proprietà tag per filtrare in base alle esigenze, quindi verifichi per ogni occorrenza del ciclo che tale proprietà soddisfi il tale TAG e applichi quello che ti serve

  7. #7
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Si crea una classe che faccia tutto... con il For each non è sufficiente...!

    Puoi studiare questo banale esempio, ma molto calzante:
    https://masterdrive.it/microsoft-acc...ne-oop-101622/
    ℹ️ Leggi di più su @Alex ...

  8. #8
    angelo_dima non è in linea Novello
    Grazie per il suggerimento ma purtroppo è un po' complicato x me, non riesco ad applicarlo al mio caso, comunque x ora ho risolto con un ciclo for each controls in me.controls su movimento del mouse nel corpo della form su e poi con un evento su movimento mouse per ogni controllo riporto colori iniziali.

  9. #9
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Anatema... hai attivato eventi per ogni controllo e poi li cicli tutti per resettare...?
    Non serve il ciclo... su evento mousemove memorizza anche il Nome del controllo innuna variabile Private a livello di Form, e su MouseMove del corpo vai a resettare il controllo indicato dalla variabile.
    Option Compare Database
    Option Explicit
     
    Private actControl As Access.TextBox
    Private Const Colore1=vbRed
    Private Const Colore2=vbBlue
     
    Private Sub Corpo_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If actControl is Nothing then Exit Sub
        If actControl.BackColor= Colore2 Then 
               actControl.BackColor=Colore1
        End If
        Set actControl=Nothing
    End Sub
     
    Private Sub NomeTuaTextBox_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Me!NomeTuaTextBox.BackColor= Colore1 Then 
               Me!NomeTuaTextBox.BackColor=Colore2
               SET actControl=Me!NomeTuaTextBox
        Else
             Set actControl=Nothing
        End If    
    End Sub
    
    Ovviamente il secondo pezzo di codice da replicare per ogni controllo.
    ℹ️ Leggi di più su @Alex ...

  10. #10
    angelo_dima non è in linea Novello
    grazie mille ora lo proverò come nel tuo consiglio senza il ciclo, io avevo fatto in questo modo con evento su movimento mouse sul corpo per resettare

    Private Sub Corpo_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim ctrl As Control
    For Each ctrl In Me.Controls
    If TypeOf ctrl Is TextBox Then
    If ctrl.BackColor = vbCyan Then
    ctrl.BackColor = vbWhite
    End If
    End If
    Next ctrl
    End Sub

    e su evento mousemove di ogni controllo ho messo questa sub per evidenziare il textbox al passaggio del mouse

    Private Sub ID_IMO_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Me.ID_IMO.BackColor = vbWhite Then
    Me.ID_IMO.BackColor = vbCyan
    End If
    End Sub

    però comunque mi è scomodo ripetere questa sub in ogni controllo, per evitare di ripetere il controllo del colore in ogni textbox per poi cambiarlo vorrei creare una function alla quale passo il nome del me.miatextbox e restituisco il valore del colore da assumere al passaggio del mouse, tipo così:

    miatextbox.backcolor = cambiacolore(miatextbox) ' qualcosa di simile da mettere all'evento mousemove di ogni controllo

    grazie per la pazienza
    ciao

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 4
    Ultimo Post: 16-06-2014, 10:10
  2. Testo a comparsa al passaggio del mouse
    Da ErPiotta nel forum HTML, CSS e JavaScript
    Risposte: 4
    Ultimo Post: 22-04-2013, 15:40
  3. Risposte: 3
    Ultimo Post: 07-06-2012, 19:42
  4. TextBox.BackColor & TextBox.ForeColor
    Da Luca Cannavò nel forum Visual Basic .Net
    Risposte: 16
    Ultimo Post: 22-08-2011, 12:33
  5. Risposte: 1
    Ultimo Post: 31-03-2008, 22:00