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

    [Resolvido]Otimização de código usando nomes de campos

    rg3915
    rg3915
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 119
    Registrado : 17/06/2013

    [Resolvido]Otimização de código usando nomes de campos Empty Otimização de código usando nomes de campos

    Mensagem  rg3915 12/7/2013, 04:00

    Talvez o título não tenha ficado bom...
    mas tenho uns campos com o nome
    RotuloEtapa1
    RotuloEtapa2
    RotuloEtapa3
    RotuloEtapa4
    RotuloEtapa5

    Eu queria minimizar estes códigos usando uma lógica de programação minimalista, mais curta, tem como?

    Código:
    Function IndicePaginaAtual() As Integer
    'Verifica a página atual e retorna o índice dela
        IndicePaginaAtual = Me.Guia.Value
    End Function

    Private Sub EtapaAtual()
    'Verifica a página atual e atualiza a etapa

        Const cteCinza = 7899275 'cornsilk 4
       
        Select Case IndicePaginaAtual
            Case 0
                Me.moldEtapa = 1
                Me.RotuloEtapa1.ForeColor = 0
                Me.RotuloEtapa2.ForeColor = cteCinza
                Me.RotuloEtapa3.ForeColor = cteCinza
                Me.RotuloEtapa4.ForeColor = cteCinza
                Me.RotuloEtapa5.ForeColor = cteCinza
            Case 1
                Me.moldEtapa = 1
                Me.RotuloEtapa1.ForeColor = 0
                Me.RotuloEtapa2.ForeColor = cteCinza
                Me.RotuloEtapa3.ForeColor = cteCinza
                Me.RotuloEtapa4.ForeColor = cteCinza
                Me.RotuloEtapa5.ForeColor = cteCinza
            Case 2
                Me.moldEtapa = 2
                Me.RotuloEtapa1.ForeColor = cteCinza
                Me.RotuloEtapa2.ForeColor = 0
                Me.RotuloEtapa3.ForeColor = cteCinza
                Me.RotuloEtapa4.ForeColor = cteCinza
                Me.RotuloEtapa5.ForeColor = cteCinza
            Case 3
                Me.moldEtapa = 2
                Me.RotuloEtapa1.ForeColor = cteCinza
                Me.RotuloEtapa2.ForeColor = 0
                Me.RotuloEtapa3.ForeColor = cteCinza
                Me.RotuloEtapa4.ForeColor = cteCinza
                Me.RotuloEtapa5.ForeColor = cteCinza
            Case 4
                Me.moldEtapa = 3
                Me.RotuloEtapa1.ForeColor = cteCinza
                Me.RotuloEtapa2.ForeColor = cteCinza
                Me.RotuloEtapa3.ForeColor = 0
                Me.RotuloEtapa4.ForeColor = cteCinza
                Me.RotuloEtapa5.ForeColor = cteCinza
            Case 5
                Me.moldEtapa = 3
                Me.RotuloEtapa1.ForeColor = cteCinza
                Me.RotuloEtapa2.ForeColor = cteCinza
                Me.RotuloEtapa3.ForeColor = 0
                Me.RotuloEtapa4.ForeColor = cteCinza
                Me.RotuloEtapa5.ForeColor = cteCinza
            Case 6
                Me.moldEtapa = 4
                Me.RotuloEtapa1.ForeColor = cteCinza
                Me.RotuloEtapa2.ForeColor = cteCinza
                Me.RotuloEtapa3.ForeColor = cteCinza
                Me.RotuloEtapa4.ForeColor = 0
                Me.RotuloEtapa5.ForeColor = cteCinza
            Case 7
                Me.moldEtapa = 4
                Me.RotuloEtapa1.ForeColor = cteCinza
                Me.RotuloEtapa2.ForeColor = cteCinza
                Me.RotuloEtapa3.ForeColor = cteCinza
                Me.RotuloEtapa4.ForeColor = 0
                Me.RotuloEtapa5.ForeColor = cteCinza
            Case 8
                Me.moldEtapa = 5
                Me.RotuloEtapa1.ForeColor = cteCinza
                Me.RotuloEtapa2.ForeColor = cteCinza
                Me.RotuloEtapa3.ForeColor = cteCinza
                Me.RotuloEtapa4.ForeColor = cteCinza
                Me.RotuloEtapa5.ForeColor = 0
        End Select
       
    End Sub
    avatar
    Convidado
    Convidado


    [Resolvido]Otimização de código usando nomes de campos Empty Re: [Resolvido]Otimização de código usando nomes de campos

    Mensagem  Convidado 12/7/2013, 10:58

    Bom dia Regis,

    E se deixar todos os rótulos com a cor cinza e mudar só o necessário??

    Código:
    Select Case IndicePaginaAtual
            Case 0
                Me.moldEtapa = 1
                Me.RotuloEtapa1.ForeColor = 0
            Case 1
                Me.moldEtapa = 1
                Me.RotuloEtapa1.ForeColor = 0
              Case 2
                Me.moldEtapa = 2
                Me.RotuloEtapa2.ForeColor = 0
            Case 3
                Me.moldEtapa = 2
                Me.RotuloEtapa2.ForeColor = 0
            Case 4
                Me.moldEtapa = 3
                Me.RotuloEtapa3.ForeColor = 0
            Case 5
                Me.moldEtapa = 3
                Me.RotuloEtapa3.ForeColor = 0
            Case 6
                Me.moldEtapa = 4
                Me.RotuloEtapa4.ForeColor = 0
            Case 7
                Me.moldEtapa = 4
                Me.RotuloEtapa4.ForeColor = 0
            Case 8
                Me.moldEtapa = 5
                Me.RotuloEtapa5.ForeColor = 0
        End Select


    Nivaldo.
    Julio Lustosa
    Julio Lustosa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 203
    Registrado : 23/02/2011

    [Resolvido]Otimização de código usando nomes de campos Empty Re: [Resolvido]Otimização de código usando nomes de campos

    Mensagem  Julio Lustosa 12/7/2013, 12:06

    No código do Nivaldo, eu só acrescentaria antes da condição Select Case, os rótulos com as suas respectivas cores. Neste caso, todos de cinza.

    Faria isso porque, no caso do usuário mudar alguma seleção que chame novamente a rotina para mudar as cores dos rótulos, pode correr o risco de dois ou mais rótulos ficarem com a mesma cor, e pelo que entendi, você quer que apenas um fica com a cor diferente dos demais quando estiver selecionado.

    Me.RotuloEtapa1.ForeColor = cteCinza
    Me.RotuloEtapa2.ForeColor = cteCinza
    Me.RotuloEtapa3.ForeColor = cteCinza
    Me.RotuloEtapa4.ForeColor = cteCinza
    Me.RotuloEtapa5.ForeColor = cteCinza

    Depois o Select Case faz as alterações sem conflitos.

    Tem outra forma mais rápida, mas precisaria entender melhor a dinâmica do seu código. Quando ele seria acionado... Essas coisa. Teria como usar a função For Each... Next, ou Do While... Loop

    Abraços.
    rg3915
    rg3915
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 119
    Registrado : 17/06/2013

    [Resolvido]Otimização de código usando nomes de campos Empty Re: [Resolvido]Otimização de código usando nomes de campos

    Mensagem  rg3915 14/7/2013, 00:17

    Realmente, usando o código dos 2 colegas, ficou bem melhor, valeu pessoal.
    avatar
    Convidado
    Convidado


    [Resolvido]Otimização de código usando nomes de campos Empty Re: [Resolvido]Otimização de código usando nomes de campos

    Mensagem  Convidado 15/7/2013, 04:01

    Valeu Re´gio,

    Obrigado pelo retorno.

    O fórum agradece.


    Nivaldo.

    Conteúdo patrocinado


    [Resolvido]Otimização de código usando nomes de campos Empty Re: [Resolvido]Otimização de código usando nomes de campos

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/9/2024, 01:28