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


3 participantes

    [Resolvido]Mudar Cor da Borda - Foco - Erro Sub-formulário

    julia-melo
    julia-melo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 72
    Registrado : 02/01/2013

    [Resolvido]Mudar Cor da Borda - Foco - Erro Sub-formulário Empty [Resolvido]Mudar Cor da Borda - Foco - Erro Sub-formulário

    Mensagem  julia-melo 19/2/2014, 20:56

    Pessoal, tenho uma dúvida/problema.

    Eu tenho alguns formulários que ao colocar foco a boda muda de cor, destacando o campo, até aí tudo bem, funciona perfeitamente.

    Testei três métodos, dois deles do mestre Avelino Sampaio:

    Porém dois erros ocorre quando seleciono o foco no em um sub-formulário (Formulário contínuo).

    Primeiro erro:

    • Quando seleciono um campo (Combo e Caixa de Texto) é realçada a coluna inteira, ou seja, por ser ele mesmo só que em linhas diferentes o critério de seleção utiliza o campo como critério e não o foco na linha.

    Segundo erro:

    • Quando clico no formulário principal o foco continua no sub-formulário, mantendo assim o foco no campo.

    Método 1:

    Em um módulo:
    Código:
    Public Const CorAm = 13434879 'Fundo amarelo
    Public Const CorBr = 15856098 'fundo verde
    Public Const CorAz = 16764057 'Fundo azul
    Public Const CorBranco = 16777215 'fundo branco

    Public Function fcor(NomeDoCampo As control, códigoCor As String)
    On Error Resume Next
    If códigoCor = "Am" Then
        NomeDoCampo.BackColor = CorAm
    ElseIf códigoCor = "Br" Then
        NomeDoCampo.BackColor = CorBr
    ElseIf códigoCor = "Az" Then
        NomeDoCampo.BorderColor = CorAz
    ElseIf códigoCor = "Bra" Then
        NomeDoCampo.BackColor = CorBranco
    Else
        MsgBox "CódigoCor = Am - Amarelo  // CódigoCor = Br - verde // CódigoCor = Az - Azul", vbInformation, "Sistema de Vendas"
        NomeDoCampo.BorderColor = Br
    End If
    End Function

    Public Function nomeBar()
    Dim cb As Variant
    For Each cb In CommandBars
        Debug.Print cb.Name
    Next cb
    End Function

    No campo (formulário):
    Código:
    Call fcor(Me!TxtFornecedor, "Az")

    Método 2:

    Em um módulo:
    Código:
    Option Compare Database

    Public Function fncMontaEventos(frm As Form)
    Dim ctl As control
    '-------------------------------------------------------------------------------------------------------
    'Esta função deve ser chamada no evento "ao carregar" do formulário.  Exemplo: call fncMontaEventos(me)
    '-------------------------------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    'Percorre todos os controles do Formulário informado no argumento frm da função
    '------------------------------------------------------------------------------
    For Each ctl In frm.Controls
        Select Case ctl.ControlType
            '-----------------------------------------------------------------------------
            'Escrever as funções somente nos eventos dos controles tipo caixa de texto
            '-----------------------------------------------------------------------------
            Case acTextBox, acComboBox, acListBox 'caixa texto, combobox e listbox
                '----------------------------------------------------------------------------------------------------
                'Monta e escreve função fncPintacampo nos evento "ao receber foco" da caixa de teexto
                'Lembrando que estamos dentro do faço FOR. Significa que todas as caixas de texto receberão a função
                '----------------------------------------------------------------------------------------------------
                If ctl.OnGotFocus = vbNullString Then ctl.OnGotFocus = "=fncPintaCampo([" & ctl.Name & "],1)"  'Cor Amarela
                '--------------------------------------------------------------------------------------
                'Monta e escreve a função fncPintacampo() no evento "ao Perder Foco" da caixa de Texto
                '--------------------------------------------------------------------------------------
                If ctl.OnLostFocus = vbNullString Then ctl.OnLostFocus = "=fncPintaCampo([" & ctl.Name & "],0)" 'Cor Branca
            Case acCommandButton 'botões
        End Select
    Next
    End Function

    Public Function fncPintaCampo(ctl As control, cor As Byte)
    '--------------------------------------------
    'Altera a cor do campo que possui o foco
    'Ao recebr o foco, passa para a cor Amarela
    'Ao perder o foco, passa para a cor branco
    '--------------------------------------------
    ctl.BorderColor = Switch(cor = 0, RGB(127, 127, 127), cor = 1, RGB(100, 142, 213))
    '------------------------------------------------------
    'Ao receber o foco posiciona o cursor no final do texto
    '------------------------------------------------------
    End Function

    Public Function fncPintaBotao(ctl As control, cor As Integer)
    ctl.ForeColor = cor
    ctl.FontBold = IIf(cor = 0, False, True)
    End Function

    No evento ao carregar do formulário:
    Código:
    Call fncMontaEventos(Me)

    Método 3:

    No campo (formulário):

    No evento, ao receber foco:
    Código:
    Me.NomeCliente.BorderColor = RGB(100, 142, 213)
    No evento, ao perder foco:
    Código:
    Me.NomeCliente.BorderColor = RGB(127, 127, 127)

    Tentei de todas as formas além de pesquisar e nada, a coluna continua selecionada.

    Sendo assim, abri o tópico.

    Novamente obrigada.
    Julia
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido]Mudar Cor da Borda - Foco - Erro Sub-formulário Empty Re: [Resolvido]Mudar Cor da Borda - Foco - Erro Sub-formulário

    Mensagem  Marco Messa 20/2/2014, 14:27

    Primeiro erro:

    Quando seleciono um campo (Combo e Caixa de Texto) é realçada a coluna inteira, ou seja, por ser ele mesmo só que em linhas diferentes o critério de seleção utiliza o campo como critério e não o foco na linha.

    Realmente é complicado, porque o nome do botão é o mesmo, porém em linhas diferentes.
    Pra corrigir isso talvez você consiga com um meio técnico alternativo (vulgo gambiarra  Very Happy ) onde ao dar o foco no campo, você pegaria o id dessa linha e passaria pra função que muda a cor, fazendo destacar apenas o campo com esse id.


    Segundo erro:

    Quando clico no formulário principal o foco continua no sub-formulário, mantendo assim o foco no campo.

    Você já tentou colocar algo no evento Ao perder o foco do sub-formulário para retirar a formatação do campo?


    .................................................................................
    Tea with me that I book your face Cool
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    [Resolvido]Mudar Cor da Borda - Foco - Erro Sub-formulário Empty Re: [Resolvido]Mudar Cor da Borda - Foco - Erro Sub-formulário

    Mensagem  Avelino Sampaio 20/2/2014, 14:45

    Olá!

    No exemplo deste meu tutorial eu ofereço uma solução para formulário continuo utilizando o evento "Ao pintar"

    http://www.usandoaccess.com.br/tutoriais/tuto53.asp?id=1#inicio

    Bom estudo!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    julia-melo
    julia-melo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 72
    Registrado : 02/01/2013

    [Resolvido]Mudar Cor da Borda - Foco - Erro Sub-formulário Empty Thanks!

    Mensagem  julia-melo 22/2/2014, 12:51

    Olá Marco/Avelino.

    Ambos me ajudaram muito, eu optei pela sugestão do modelo do Avelino que muda a cor do fundo (BackColor).

    De qualquer forma agradeço a atenção e o apoio de vocês.

    Bjo!
    Julia
    julia-melo
    julia-melo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 72
    Registrado : 02/01/2013

    [Resolvido]Mudar Cor da Borda - Foco - Erro Sub-formulário Empty Resolvido

    Mensagem  julia-melo 22/2/2014, 13:25

    Resolvido!

    Conteúdo patrocinado


    [Resolvido]Mudar Cor da Borda - Foco - Erro Sub-formulário Empty Re: [Resolvido]Mudar Cor da Borda - Foco - Erro Sub-formulário

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 17:44