[resolvido] SetFocus relacionada a texto em caixa de texto

Moderador: Avelino Sampaio

wanderleybrasiljr
Mensagens: 7
Registrado em: 03 Nov 2017, 16:40

[resolvido] SetFocus relacionada a texto em caixa de texto

Mensagempor wanderleybrasiljr » 19 Nov 2017, 15:15

Boa tarde,
Preciso que ao terminar de digitar o texto em caixa de texto o foco vá para a caixa de texto relacionada com o texto que foi digitado.
Assim, vou digitar serviços e o próximo campo tem que estar relacionado com o serviço, pois são várias opções e facilita muito se o foco já for para o campo correto a ser preenchido, assim os demais ficam em branco.

Exemplo:
Ao digitar "concreto" ou "concreto estrutural" ou "concreto projetado" ao finalizar a digitação o foco vá para a caixa de texto onde será inserido a resistência do concreto, fck, então após para a caixa de texto onde coloca a quantidade.

Ao digitar "asssentamento" ou "assentamento de tubo" ou "assentamento de tubulacao" ao finalizar a digitação o foco vá para a caixa de texto onde será inserido o diâmetro e material do tubo ou tubulação, então após para a caixa de texto onde coloca a quantidade.

Tenho os campos:
vazao
potencia
fck
altura manometrica
diametro
material
profundidade de
profundidade até
volume
nova/ampliacao

Tentei:

If Me.cboservico.Value = "ASSENTAMENTO" Then
Me.cbodiametro.SetFocus
ElseIf: Me.cboservico.Value = "BOMBA" Then
Me.cbovazao.SetFocus
ElseIf: Me.cboservico.Value = "ESCAVACAO" Then
Me.cboprofundidade.SetFocus
End If

Desta maneira funcionou para o primeiro caso e último, o do meio não reconheceu e seguir a sequência de tabulação do formulário. Preciso que ele reconheça e quando é o caso de ir para um próxima antes de ir para digitação da quantidade eu coloco a condição na própria caixa de texto que já recebeu o foco.

No caso quanto fck receber o foco coloco a condição para a caixa de texto do fck:

Private Sub cbofck_AfterUpdate()
Me.cboquantidade.Requery
Me.cboquantidade.SetFocus
End Sub

Se alguém puder me ajudar.
Agradeço muito.

Obrigado.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


wanderleybrasiljr
Mensagens: 7
Registrado em: 03 Nov 2017, 16:40

Re: SetFocus relacionada a texto em caixa de texto

Mensagempor wanderleybrasiljr » 19 Nov 2017, 23:03

Boa noite,
Consegui desta maneira, está respondendo corretamente. Só precisava agora que reconhecesse a palavra dentro de uma frase, por exemplo "CONCRETO ESTRUTURAL" e não apenas "CONCRETO".

Private Sub cboservico_AfterUpdate()
If Me.cboservico.Value = "ESCAVACAO" Then
Me.cboprofundidade.SetFocus
End If
If Me.cboservico.Value = "CONCRETO" Then
Me.cbofck.SetFocus
End If
If Me.cboservico.Value = "BOMBA" Then
Me.cbovazao.SetFocus
End If
If Me.cboservico.Value = "RESERVATORIO" Then
Me.cbovolume.SetFocus
End If
End Sub

Avatar do usuário
Avelino Sampaio
Mensagens: 1870
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: SetFocus relacionada a texto em caixa de texto

Mensagempor Avelino Sampaio » 20 Nov 2017, 10:40

Wanderley,

acho que fica melhor com o uso do SELECT CASE:

Código:
Select Case Me.cboservico.value
case "ESCAVACAO" : Me.cboprofundidade.SetFocus
case "CONCRETO ESTRUTURAL" : Me.cbofck.SetFocus
case "BOMBA" : Me.cbovazao.SetFocus
case "RESERVATORIO": Me.cbovolume.SetFocus
end Select


Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Avatar do usuário
Avelino Sampaio
Mensagens: 1870
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: SetFocus relacionada a texto em caixa de texto

Mensagempor Avelino Sampaio » 20 Nov 2017, 11:17

Wanderley

outras duas formas de se fazer NESTON:

1ª - passando o nome dos campos para segunda coluna da combobox cboServico, ficando o código reduzido a 1 linha:

Código:
Private Sub cboServico_AfterUpdate()
Me(Me!cboServico.Column(1)).SetFocus
End Sub


2ª - Usando a posição do item selecionado da combobox cboServico. Utilizamo a posição para extrair o valor da matriz de nomes (k):

Código:
Private Sub cboServico_AfterUpdate()
Dim k, strLista$
strLista = "cbovazao,cboFck,cboprofundidade,cboVolume"
k = Split(strLista, ",")
Me(k(Me!cboServico.ListIndex)).SetFocus
End Sub


Segue o exemplo para vc estudar. FrmTeste1 é do primeiro forma e frmTeste2 é o segunda forma.

Aguardamos
Você deve estar registrado e autenticado para ter acesso ao arquivo anexo.
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


wanderleybrasiljr
Mensagens: 7
Registrado em: 03 Nov 2017, 16:40

Re: SetFocus relacionada a texto em caixa de texto

Mensagempor wanderleybrasiljr » 20 Nov 2017, 13:13

Bom dia,
Grato pelo retorno Avelino. Porém não estou conseguindo aplicar o conceito no meu caso.
A combo serviço tem mais de 5 mil valores, dependendo do valor que eu preencho é uma uma informação em determinada coluna da tabela. Todos os valores vem de uma tabela.

Por exemplo:
descrição dos servicos I fck I diametro I material I volume I profundidade
concreto nao estrutural I 15 I I I I
concreto estrutural I 40 I I I I
assentamento de tubo I I 200 I pvc I I
assentamento de tubo I I 400 I ferro fundido I I
reservatorio I I I I 100 I
escavacao mecanica I I I I I 4

Não consegui aplicar o conceito para que ao digitar na cboservico ele reconheça e vá para a caixa de texto correspondente a coluna que deve ser preenchida.

Por exemplo, gortaria que ao dgiitar qualquer coisa com concreto no texto ela reconheça e vá para a caixa cbofck. Vou mudar o tipo de caixa de texto para caixa de combinação e aplicar para que faça.

Me.cboxxxx.Requery
Me.cboxxxx.SetFocus
Me.cboxxxx.Dropdown

Se puder me ajudar seria muito grato.
Abraço.

Avatar do usuário
Avelino Sampaio
Mensagens: 1870
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: SetFocus relacionada a texto em caixa de texto

Mensagempor Avelino Sampaio » 20 Nov 2017, 14:17

Wanderley,

Por exemplo, gortaria que ao dgiitar qualquer coisa com concreto no texto ela reconheça e vá para a caixa cbofck. Vou mudar o tipo de caixa de texto para caixa de combinação e aplicar para que faça.


Experimente então utilizar o LIKE.

Código:
Private Sub cboServico_AfterUpdate()
Select Case True
Case Me.cboServico Like "*ESCAVACAO*": Me.cboProfundidade.SetFocus
Case Me.cboServico Like "*CONCRETO*": Me.cboFck.SetFocus
Case Me.cboServico Like "*BOMBA*": Me.cboVazao.SetFocus
Case Me.cboServico Like "*RESERVATORIO*": Me.cboVolume.SetFocus
End Select
End Sub


Nota: experimente primeiro num dos formulários que ofereci como exemplo. Depois então teste no seu.

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

wanderleybrasiljr
Mensagens: 7
Registrado em: 03 Nov 2017, 16:40

Re: SetFocus relacionada a texto em caixa de texto

Mensagempor wanderleybrasiljr » 20 Nov 2017, 14:37

Boa tarde Avelino,
Agora sim!!!
Funcionou perfeitamente!
Já adaptado e rodando!
Obrigado pelo apoio de sempre e por dividir seu conhecimento conosco!!!

Grande abraço!!!

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Módulos VBA”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 2 visitantes