LOSTFOCUS OU VALIDATE E MENU "NAO DA CERTO!"
Bom dia,
Estou com um problema criei um formulário para cadastros, um dos campos faz uma pesquisa para ver se o código inserido já existe. Ex.: No cadastro de cidades, ao incluir uma nova, tem uma textbox para preencher o código do estado. Inclui 3 campos CodigoDaCidade, CodigoDoEstado, NomeDaCidade. O Codigo da cidade ele preenche automático, sendo assim o primeiro com foco é o código do estado. Ao sair do campo (codigo do estado) ele verifica se o código já está cadastrado na tabela de Estados. Se não exibe uma mensagem dizendo o ocorrido e permanece no campo até que se resolva o problema, caso contrário passa para o próximo campo (nome da cidade). Até aà tudo bem. Mas inclui no menu uma opção para "Pesquisar", caso o usuário não se lembre (visto que o usuário difÃcilmente se lembra) do código a ser utilizado, que abre uma janela com a lista de estados que ele escolhe um e insere a escolhida por ali. Beleza, mas se, eu digito um código inválido no textbox do código do estado, e dou um clique no menu "Pesquisar", ele abre a janela de pesquisa com todos os estados executa todos os comandos dessa janela, e depois, vai para o LostFocus do Textbox, executar os seus comandos, ai exibe a minha mensagem de erro, e no ponto onde ele deveria voltar o foco para o textbox, aparece uma mensagem de erro do VB6 "Run-time erro 5" Inválid procedure call or argument", que eu sei que o erro é por causa que o foco está sendo direcionado para o textbox de um form, sendo que eu carreguei um outro form (localizar estados) modal.
Já com o Validate ao digitar um código inválido (sem acessar o menu) incluindo os exemplos que encontrei no forum (cancel = true) funciona, mas assim até oi LostFoucs, mas quando eu clico no "Menu Pesquisar", executa o LostFocus mas não o Validade.
E agora?
[/c]
A linha Cancel = True é incluÃda neste ponto apenas quando colocado o código no Validade.
Obrigado pelo esclarecimento, já procurei no forum mas não achei nada quanto ao acesso ao menu.
Igor Dimitri
Estou com um problema criei um formulário para cadastros, um dos campos faz uma pesquisa para ver se o código inserido já existe. Ex.: No cadastro de cidades, ao incluir uma nova, tem uma textbox para preencher o código do estado. Inclui 3 campos CodigoDaCidade, CodigoDoEstado, NomeDaCidade. O Codigo da cidade ele preenche automático, sendo assim o primeiro com foco é o código do estado. Ao sair do campo (codigo do estado) ele verifica se o código já está cadastrado na tabela de Estados. Se não exibe uma mensagem dizendo o ocorrido e permanece no campo até que se resolva o problema, caso contrário passa para o próximo campo (nome da cidade). Até aà tudo bem. Mas inclui no menu uma opção para "Pesquisar", caso o usuário não se lembre (visto que o usuário difÃcilmente se lembra) do código a ser utilizado, que abre uma janela com a lista de estados que ele escolhe um e insere a escolhida por ali. Beleza, mas se, eu digito um código inválido no textbox do código do estado, e dou um clique no menu "Pesquisar", ele abre a janela de pesquisa com todos os estados executa todos os comandos dessa janela, e depois, vai para o LostFocus do Textbox, executar os seus comandos, ai exibe a minha mensagem de erro, e no ponto onde ele deveria voltar o foco para o textbox, aparece uma mensagem de erro do VB6 "Run-time erro 5" Inválid procedure call or argument", que eu sei que o erro é por causa que o foco está sendo direcionado para o textbox de um form, sendo que eu carreguei um outro form (localizar estados) modal.
Já com o Validate ao digitar um código inválido (sem acessar o menu) incluindo os exemplos que encontrei no forum (cancel = true) funciona, mas assim até oi LostFoucs, mas quando eu clico no "Menu Pesquisar", executa o LostFocus mas não o Validade.
E agora?
[c]Private Sub txtCodigoDoEstado_LostFocus()
txtCodigoDoEstado.BackColor = CorBranca
menuPesquisar.Enabled = False
If txtCodigoDoEstado.Text <> "" Then
dataEstados.Recordset.FindFirst "CodigoDoEstado =" & txtCodigoDoEstado.Text
If dataEstados.Recordset.NoMatch = True Then
MsgBox "Código incorreto, favor corrigir e tentar novamente!", vbExclamation + vbOKOnly, TituloDasMensagens
txtNomeDoEstado.Text = ""
txtCodigoDoEstado.SetFocus
Cancel = True
Else
txtNomeDoEstado.Text = txtPesquisaNomeDoEstado.Text
End If
Else
txtNomeDoEstado.Text = ""
End If
End Sub
[/c]
A linha Cancel = True é incluÃda neste ponto apenas quando colocado o código no Validade.
Obrigado pelo esclarecimento, já procurei no forum mas não achei nada quanto ao acesso ao menu.
Igor Dimitri
esse menuPesquisar é um botão? você também pode forcar ele , chamando o evento do lostfocus
Olá Cleverson_F, não é um botão, e sim uma opção de menu, criado pelo menu editor do VB6.
Tópico encerrado , respostas não são mais permitidas