MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

2 participantes

    Função para mudar cor dos formulários

    avatar
    jmcm
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 13
    Registrado : 27/09/2015

    Função para mudar cor dos formulários Empty Função para mudar cor dos formulários

    Mensagem  jmcm Ter 26 Maio 2020, 4:42 am

    Olá a todos,

    Nos meus formulários mudo a cor do formulário quando o registo está alterado e não guardado. E funciona como esperado.


    O que pretendo é criar uma função pública para que possa usar em todos os formulários e é aí que estou a ter algumas dificuladades.


    Eis como uso agora no form:

    Código:
    Private Sub Form_Timer()

     If Me.Dirty Then
     
     Me.Section(0).BackColor = 11336447
     Me.Section(1).BackColor = 11336447
     Else
     Me.Section(0).BackColor = 14282978
     Me.Section(1).BackColor = 14282978
     End If
     
    End Sub



    A função que criei:

    Código:
    Public Sub FnCorForm(myForm As Form)

     If myForm.Dirty Then
     
     myForm.Section(0).BackColor = 11336447
     myForm.Section(1).BackColor = 11336447
     Else
     myForm.Section(0).BackColor = 14282978
     myForm.Section(1).BackColor = 14282978
     End If
     
    End Sub

    E eis como tento usar no form:

    Código:

    Public Sub Form_Timer()

    FnCorForm (Me)
     
    End Sub

    Na abertura do formulário recebo o erro "Run-time error 13, Type mismatch"

    Antecipadamente grato
    José
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3533
    Registrado : 21/04/2011

    Função para mudar cor dos formulários Empty Re: Função para mudar cor dos formulários

    Mensagem  Marcelo David Ter 26 Maio 2020, 9:57 am

    Bom dia,
    como sugestão, remova o código do evento Timer ou de qualquer:

    Altere sua função para a seguinte:

    Código:
    Public Sub FnCorForm(myForm As Form, Optional Sujo As Boolean = False)

     If Sujo = True Then
           myForm.Section(0).BackColor = 11336447
           myForm.Section(1).BackColor = 11336447
     Else
           myForm.Section(0).BackColor = 14282978
           myForm.Section(1).BackColor = 14282978
     End If
     
    End Sub

    Agora para chamar, no eventos Em sujo:
    FnCorForm Me, True

    Evento: Após atualizar:
    FnCorForm Me


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Clique aqui e conheça o treinamento.
    Função para mudar cor dos formulários Marcel11
    avatar
    jmcm
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 13
    Registrado : 27/09/2015

    Função para mudar cor dos formulários Empty Re: Função para mudar cor dos formulários

    Mensagem  jmcm Ter 26 Maio 2020, 10:20 am

    Olá Marcelo,

    Obrigado pela ajuda, contudo não funciona bem como eu preciso.

    Não posso usar o evento Após atualizar:

    Isto porque preciso de saber imediatamente se existem dados não salvos (mudar imediatamente de cor caso existam alterações ao registo que ainda não tenham sido gravadas).

    Assim usei o on timer Usando a tua adaptação melhorou mas ainda assim não usufruo em pleno da função pois estou a testar 2 vezes se o registo está "sujo"

    Código:
    Public Sub Form_Timer()

        If Me.Dirty Then
            FnCorForm Me, True
        Else
            FnCorForm Me, False
        End If
     
    End Sub
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3533
    Registrado : 21/04/2011

    Função para mudar cor dos formulários Empty Re: Função para mudar cor dos formulários

    Mensagem  Marcelo David Ter 26 Maio 2020, 11:32 am

    Mas o comportamento é justamente esse:
    ao fazer qualquer alteração nos dados a cor
    é alterada.

    O evento após atualizar é necessário apenas
    para marcar que já foi gravada as alterações.

    Você chegou a testar?


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Clique aqui e conheça o treinamento.
    Função para mudar cor dos formulários Marcel11
    avatar
    jmcm
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 13
    Registrado : 27/09/2015

    Função para mudar cor dos formulários Empty Re: Função para mudar cor dos formulários

    Mensagem  jmcm Ter 26 Maio 2020, 12:16 pm

    Sim testei.

    Da tua forma, efectivamente quando existentes dados não guardados o form muda de cor, o que é correcto.

    Mas se pressionar o Escape, as alterações são revertidas mas o form não volta à cor inicial.

    Daí eu estar a usar o on timer pois dessa forma ele forma certinho.

    No evento before update informo se quero ou não guardar as alterações.

    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3533
    Registrado : 21/04/2011

    Função para mudar cor dos formulários Empty Re: Função para mudar cor dos formulários

    Mensagem  Marcelo David Ter 26 Maio 2020, 2:06 pm

    Basta nesse caso, no evento Ao desfazer, voltar as cores iniciais do formulário.
    E manter tudo como sugeri.

    E sim, poderá usar quantos procedimentos forem necessários nos eventos. Basta considerar a ordem
    de cada um.

    Aguardamos.


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Clique aqui e conheça o treinamento.
    Função para mudar cor dos formulários Marcel11

      Data/hora atual: Qua 18 Maio 2022, 4:47 pm