MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Função para mudar cor dos formulários

    avatar
    jmcmendes
    Novato
    Novato

    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  jmcmendes em 26/5/2020, 08:42

    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 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3100
    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 em 26/5/2020, 13:57

    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


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    jmcmendes
    Novato
    Novato

    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  jmcmendes em 26/5/2020, 14:20

    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 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3100
    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 em 26/5/2020, 15:32

    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?


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    jmcmendes
    Novato
    Novato

    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  jmcmendes em 26/5/2020, 16:16

    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 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3100
    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 em 26/5/2020, 18:06

    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.


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)

      Data/hora atual: 5/7/2020, 07:59