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:
Segundo erro:
Método 1:
Em um módulo:
No campo (formulário):
Método 2:
Em um módulo:
No evento ao carregar do formulário:
Método 3:
No campo (formulário):
No evento, ao receber foco:
Tentei de todas as formas além de pesquisar e nada, a coluna continua selecionada.
Sendo assim, abri o tópico.
Novamente obrigada.
Julia
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)
- 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