Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

Button che cambia colore dopo click e torna colore originale dopo click altro button

  1. #1
    Sarri non è in linea Scolaretto
    buon giorno
    ho una maschera: barra dei pulsanti che apre le mie varie maschere
    questa (maschera) e disposta come sottomaschera nelle diverse maschereFormate cosi: maschera principale sottomaschera dei pulsanti e sottomaschera che gestisco il database cosi per tutte le altre , in modo che premendo il pulsate es. 1 mi apre la maschera 1, sulla maschera 1 ho sempre lasottomaschera dei pulsanti, cosi, premendo il pulsante 2 mi chiude la maschera 1 e mi apre la maschera 2 e via cosi.

    ora, io vorrei che al clik di un pulsante, lo il suo colore cambiasi (per stare a indicarmi che ho cliccato quel pulsante e mi ha aperto la maschera corrente, chiamiamolo colore pulsante attivato per ultimo, che apre la maschera corrente), e nel momento che clicco su di un altropulsante, il primo tornassi a colore originale e quello premuto per ultimo prendesse il colore attivo.

    sono sicuro che da vba ci si puo arrivare, ma non saprei da dove cominciare.

    non so se sono stato chiaro
    grazie

  2. #2
    @Sarri ... non è la prima volta che non posti nella sezione Access.

    Adesso sposto io ma le prossime volte il thred sarà chiuso senza preavviso.
    ℹ️ Leggi di più su AntonioG ...

  3. #3
    OsvaldoLaviosa non è in linea Topo di biblioteca
    Non riesco ad entrare nei dettagli di quello che vuoi fare. Ho fatto alcuni test su alcuni miei pulsanti. Puoi optare per:
    A) sfruttare in VBA la proprietà BackColor del pulsante
    B) sfruttare una di quelle proprietà del pulsante del tipo:
    Colore al click del mouse
    Colore primo piano al click del mouse

    ...però temo che la soluzione B non può ricordare di modificare il colore del "pulsante precedente"...boh...vedi tu!
    ℹ️ Leggi di più su OsvaldoLaviosa ...

  4. #4
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Quale problema trovi a colorare un CommandButton...?
    Devi ovviamente considerare che l'istanza di Form come SubForm può recuperare il Nome della Form_Parent interrogando la proprietà Parent appunto.
    Credo possa bastare una verifica dell'evento Activate della Form e su questo andare a modificare il Pulsante relativo della SubForm.
    Se fossi bravino potresti dichiarare nella SubForm un Oggetto Form(con WithEvents) ed assegnarlo alla Form Parent, da quì imporre la [Event Procedure] su Activate ed in questo modo non andrebbe scritta 1 sola riga di codice nella Form principale, quindi la SubForm diventerebbe sostanzialmente AUTO_Rilevante...

    Attenzione che se hai una MULTIISTANZA della SubForm... sono assolutamente indipendenti... quindi i Button non saranno colorati, ma si colora solo quello che colori nell'istanza...!

    Se devi collegare tutto... devi gestire un TIMER nella SubForm e verificare la Form Attiva.... e da li agire.

    Personalmente mi chiedo perchè non usi i Ribbon, quel metodo è estremamente poco flessibile.
    ℹ️ Leggi di più su @Alex ...

  5. #5
    Sarri non è in linea Scolaretto
    Scusate la tardiva risposta, ho studiato un po.
    le subfom non sono multistanza. e non sono collegate.
    al click di ogni pulsanti si apre una maschera base (form) e 2 subform barra dei pulsanti e altro, e si chide la maschera precedentemente aperta.

    a quanto ho capito mi consigli di fare un modulo di classe e agire sugli eventi gotfocus ->Il colore che voglio, letFocus-> default.value dei pulsanti. e su load della maschera

    ci sto provando ma non sono cosi bravino, magari se mi fai qualche esempio.

    nella classe devo usare let o set?

    Option Compare Database
    Option Explicit
    
    Public WithEvents Cmd As CommandButton
     
    
    Public Property Set cdm(ByVal Nuovocolore As CommandButton)
    
    cdm_lostFocus = [Event Procedure]
    cdm_GotFocus = [Event Procedure]
    
    End Property
    
    Private Sub cdm_lostFocus()
    
    cdm.BackColor = Nuovocolore
    
    End Sub
    
    Private Sub cdm_GotFocus()
    
    cdm.BackColor = Default.Value
    
    End Sub
    

  6. #6
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Hai scritto, forse copiato, 10 righe di codice ma dentro ci sono più errori concettuali che righe scritte...
    In tutte le dichiarazioni c'è un errore che rende impossibile quel codice.

    La dichiarazione del controllo con il parametro nuovocolore ...? È un ogetto commandbutton... Non un colore e poi usi una variabile omonima per assegnare il colore...

    Perché non ti fermi a capire prima di correre... penso che questo approccio sia molto oltre le tue attuali conoscenze...non che sia impossibile ma oggi...

    Giusto per darti uno spunto, la classe corretta potrebbe essere questa(di Default ha il Colore di fondo Rosso su Attivato):
    Option Compare Database
    Option Explicit
    
    Public WithEvents mCmdB         As CommandButton
    Private mOwnBackColor           As Long
    Private mActiveBackColor        As Long
     
    Public Property Let ActiveBackColor(Value As Long)
        mActiveBackColor = Value
    End Property
    Public Property Get ActiveBackColor() As Long
        ActiveBackColor = mActiveBackColor
    End Property
    
    Public Property Get Control() As Access.Control
        Set Control = mCmdB
    End Property
    Public Property Set Control(ByVal Object As Access.CommandButton)
        If TypeOf Object Is CommandButton Then
            Set mCmdB = Object
            mCmdB.OnLostFocus = "[Event Procedure]"
            mCmdB.OnGotFocus = "[Event Procedure]"
            mOwnBackColor = mCmdB.BackColor
        End If
    End Property
    
    Private Sub mCmdB_GotFocus()
        mCmdB.BackColor = mActiveBackColor
    End Sub
    
    Private Sub mCmdB_LostFocus()
        mCmdB.BackColor = mOwnBackColor
    End Sub
    
    Private Sub Class_Initialize()
        mActiveBackColor = vbRed
    End Sub
    Private Sub Class_Terminate()
        Set mCmdB = Nothing
    End Sub
    
    Ora tuttavia manca l'assegnazione di tutte le Istanze di Classe dei singoli controlli in una Collection di classi...
    Prova a studiarci sopra, non è difficile, ma tutt'altro che banale.
    Ultima modifica di @Alex; 01-04-2018 19:26 
    ℹ️ Leggi di più su @Alex ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 1
    Ultimo Post: 14-03-2018, 18:09
  2. [VB.NET] Simulare click pagina web da button
    Da N2O3 nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 24-03-2014, 19:44
  3. Simulare click sx del mouse su un button
    Da Skell nel forum Visual Basic .Net
    Risposte: 6
    Ultimo Post: 27-11-2011, 00:25
  4. Riconoscere il click di un button
    Da degiorgio.francesco nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 09-11-2011, 22:45
  5. Button con doppio click
    Da titanic nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 14-09-2009, 20:02