LOSTFOCUS OU VALIDATE E MENU "NAO DA CERTO!"

USUARIO.EXCLUIDOS 12/09/2006 11:43:29
#170859
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]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
CLEVERSON.F 12/09/2006 23:22:03
#171080
esse menuPesquisar é um botão? você também pode forcar ele , chamando o evento do lostfocus
USUARIO.EXCLUIDOS 13/09/2006 13:53:34
#171211
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