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

    [Resolvido]Dois efeitos num mesmo Evento

    avatar
    AMarcos
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 218
    Registrado : 26/07/2016

    [Resolvido]Dois efeitos num mesmo Evento Empty [Resolvido]Dois efeitos num mesmo Evento

    Mensagem  AMarcos em 9/2/2020, 04:38

    Senhores estou colocando dois efeitos em um mesmo Evento (Timer): uma chamada passando (esq pra dir) e imagens piscando:

    Private Sub Form_Load()
    varC = 1
    varD = "direita"
    End Sub

    Private Sub Form_Timer()

    If Me.txt_Chamada.Left = 0 Then
    varD = "direita"
       Me.txt_Chamada = DLookup("Mensagem", "tblMensagens", "Código=" & varC)
       Me.txt_Chamada.Width = Len(Me.txt_Chamada) * Int(80 * 12 / 10) + 1500
           If varC < DMax("Código", "tblMensagens") Then
               varC = varC + 1
           ElseIf varC = DMax("Código", "tblMensagens") Then
               varC = 1
           End If
    ElseIf Me.txt_Chamada.Left + Me.txt_Chamada.Width >= Me.InsideWidth Then
    varD = "esquerda"
    End If

    If varD = "direita" Then
       Me.txt_Chamada.Left = Me.txt_Chamada.Left + 100
    ElseIf varD = "esquerda" Then
       Me.txt_Chamada.Left = Me.txt_Chamada.Left - 100
    End If

           If Me.txt_Date = Date Then
               If Format(Now(), "ss") Mod 2 = 0 Then
                   Me.img_Bda.Visible = True
               Else
                   Me.img_Bda.Visible = False
               End If
    End If
    End Sub


    Acontece que se eu alterar a velocidade de um efeito agindo no intervalo do cronômetro afeta diretamente no outro efeito.

    O ideal seria um interevalo de "50" para a chamada e para as imagens piscando "2000".  Eu deixei no intervalo "1000", porque foi o melhor que eu pude conciliar como os dois efeitos.

    Será que existe alguma adaptação no código ou em algum item da Folha de Propriedades que eu possa fazer para que os efeitos fiquem independentes, cada um realizando seu efeito no seu tempo?

    Att,

    AMarcos
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2458
    Registrado : 22/11/2016

    [Resolvido]Dois efeitos num mesmo Evento Empty Re: [Resolvido]Dois efeitos num mesmo Evento

    Mensagem  DamascenoJr. em 9/2/2020, 15:14

    Basta usar condicionais

    Veja a lógica do código abaixo que vai adicionando uma unidade em caixas de texto distintas em tempos diferentes

    'clicando no botão iniciar
    Private Sub btIniciar_Click()

       'MDC de 0,8 segundo e 2 segundos (800 milisegundos e 2000 milisegundos)
       'é 0,4 segundo (400 milisegundos)

       
       Me.TimerInterval = 400
       'não necessariamente precisaria de um botão para dar início aos eventos
       'poderia ser informado 400 diretamente no cronometro do formulário


    End Sub

    'eventos do cronometro
    Private Sub Form_Timer()

       'variável estática para acumular
       'as passadas do cronômetro

       Static intContador  As Integer
       
       'acumulando uma passada
       intContador = intContador + Me.TimerInterval
       
       '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       '-----------------------------------------------------
       'o evento de intervalo maior deve ser o último evento
       'pois ele zerará o contador
       '-----------------------------------------------------
       '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

       
       'se o valor acumulado divide por 800 então
       If intContador Mod 800 = 0 Then
       
           'evento 1
           Me!txtTexto1.Value = Nz(Me!txtTexto1.Value, 0) + 1
           '...
           
       End If
       
      'se o valor acumulado divide por 2000 então
       If intContador Mod 2000 = 0 Then
       
           'evento 2
           Me!txtTexto2.Value = Nz(Me!txtTexto2.Value, 0) + 1
           '...

           'e zere o contador

           intContador = 0
           
       End If
       
    End Sub


    Última edição por DamascenoJr. em 9/2/2020, 18:42, editado 1 vez(es)


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    AMarcos
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 218
    Registrado : 26/07/2016

    [Resolvido]Dois efeitos num mesmo Evento Empty Re: [Resolvido]Dois efeitos num mesmo Evento

    Mensagem  AMarcos em 9/2/2020, 18:04

    Não vi sinceramente a lógica que eu posso aplicar no meu estudo.  No exemplo são duas caixas de texto e no meu estudo trata de uma caixa de texto que se movimenta pra esquerda e direita e uma imagem que pisca em cima de outra imagem num intervalo de 1000 milisegundos.

    Tentei fazer pelo cálculo do MDC, mesmo assim não tive êxito.

    AMarcos
    Anexos
    [Resolvido]Dois efeitos num mesmo Evento AttachmentAbertura.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (36 Kb) Baixado 6 vez(es)
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2458
    Registrado : 22/11/2016

    [Resolvido]Dois efeitos num mesmo Evento Empty Re: [Resolvido]Dois efeitos num mesmo Evento

    Mensagem  DamascenoJr. em 9/2/2020, 19:00

    AMarcos escreveu:Não vi sinceramente a lógica que eu posso aplicar no meu estudo.
    AMarcos, tratava-se de adaptação. O tempo não permite montar um exemplo idêntico ao seu para anexar.

    Mudei o intervalo do cronômetro para de 1000 para 50 e colei o código abaixo para o evento "No timer".

    Private Sub Form_Timer()

       Static intContador As Integer
       
       intContador = intContador + Me.TimerInterval
       
       If intContador Mod 50 = 0 Then


           If Me.txt_Chamada.Left = 0 Then
           
               varD = "direita"
               Me.txt_Chamada = DLookup("Mensagem", "tblMensagens", "Código=" & varC)
               Me.txt_Chamada.Width = Len(Me.txt_Chamada) * Int(80 * 12 / 10) + 1500
               
               If varC < DMax("Código", "tblMensagens") Then
                   varC = varC + 1
               ElseIf varC = DMax("Código", "tblMensagens") Then
                   varC = 1
               End If
               
           ElseIf Me.txt_Chamada.Left + Me.txt_Chamada.Width >= Me.InsideWidth Then
               varD = "esquerda"
           End If
       
           If varD = "direita" Then
               Me.txt_Chamada.Left = Me.txt_Chamada.Left + 100
           ElseIf varD = "esquerda" Then
               Me.txt_Chamada.Left = Me.txt_Chamada.Left - 100
           End If
           
      End If
       
       If intContador Mod 2000 = 0 Then


           If Me.txt_Date = Date Then
               If Format(Now(), "ss") Mod 2 = 0 Then
                   Me.img_Bda.Visible = True
               Else
                   Me.img_Bda.Visible = False
               End If
           End If
           
          intContador = 0
           
       End If


    End Sub


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    AMarcos
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 218
    Registrado : 26/07/2016

    [Resolvido]Dois efeitos num mesmo Evento Empty Re: [Resolvido]Dois efeitos num mesmo Evento

    Mensagem  AMarcos em 9/2/2020, 19:33

    Resolvidão!!!

    O meu pensamento é que eu deveria substituir todo o código utilizado pelo exemplo.

    Muito obg mestre!
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2458
    Registrado : 22/11/2016

    [Resolvido]Dois efeitos num mesmo Evento Empty Re: [Resolvido]Dois efeitos num mesmo Evento

    Mensagem  DamascenoJr. em 9/2/2020, 20:35

    O fórum agradece o retorno. Sucesso.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

      Data/hora atual: 5/12/2020, 14:39