Diferente de SetFocus
Bom pessoal eu tenho uma Função Global que tem a finalidade de veirificar se o campo foi preenchido ou não. só que para funcionar perfeitamente no final quando ela me retorna a Mensagem ´Preencha este Campo´ então o cursor passa para o campo seguinte, o que não poderia fazer para que funione qual comando devo utilizar para que o cursor fique no campo até que seja preenchido. se eu utilizar o Comando o Nomecampo.setfocus; ai não funcionaria minha função global
Desde já agradeço a todos
:wink:
Desde já agradeço a todos
:wink:
Silvio
Curtidas 0
Respostas
Fórum Vini
11/09/2004
Olá,
eu não entendi bem o seu problema, mas se for para usar o SetFocus em uma função global, pode usar esse código:
Espero ter ajudado,
Vinicius;
eu não entendi bem o seu problema, mas se for para usar o SetFocus em uma função global, pode usar esse código:
(Screen.ActiveForm.FindComponent(´NomeCampo´) as TWinControl).SetFocus;
Espero ter ajudado,
Vinicius;
GOSTEI 0
Silvio
11/09/2004
Bom Vinicius é quase isso eu vou colocar a função aqui, ela e pequena:
Function CampoObrigatorio(Campo: String) : String;
begin
If Campo = ´´ Then
Begin
Messagedlg(´Atenção!!! Campo de Preenchimento Obrigatorio´, terror, [mbok],0);
<AQUI Q TÁ O X DA QUESTÃO>?
end;
end;
em todos os Campos do Meu Formulario no evento onexit eu chamo a função
....
CampoObrigatorio(RazaoSocial.Text) ou
CampoObrigatorio(CNPJ.Text)......
se caso a condição for verdadeira ele aparece a mensagem e deve ficar com o cursor no Campo e não mudar para o seguinte.
Valeu Novamente
Function CampoObrigatorio(Campo: String) : String;
begin
If Campo = ´´ Then
Begin
Messagedlg(´Atenção!!! Campo de Preenchimento Obrigatorio´, terror, [mbok],0);
<AQUI Q TÁ O X DA QUESTÃO>?
end;
end;
em todos os Campos do Meu Formulario no evento onexit eu chamo a função
....
CampoObrigatorio(RazaoSocial.Text) ou
CampoObrigatorio(CNPJ.Text)......
se caso a condição for verdadeira ele aparece a mensagem e deve ficar com o cursor no Campo e não mudar para o seguinte.
Valeu Novamente
GOSTEI 0
Fórum Vini
11/09/2004
Agora entendi, você pode fazer assim:
E usá-la assim:
Lembrando que a função retorna um Booleano, caso você precise de saber se o campo está válido ou não.
Espero ter ajudado,
Vinicius;
Function CampoObrigatorio(Campo: TEdit) : Boolean; begin Result:= True; If Campo.Text = ´´ Then begin Messagedlg(´Atenção!!! Campo de Preenchimento Obrigatorio´, terror, [mbok],0); Campo.SetFocus; Result:= False; end; end;
E usá-la assim:
CampoObrigatorio(RazaoSocial)
Lembrando que a função retorna um Booleano, caso você precise de saber se o campo está válido ou não.
Espero ter ajudado,
Vinicius;
GOSTEI 0
Sandra
11/09/2004
Silvio,
Uma outra idéia. :idea:
Reformule o código da sua função para:
Explicando:
1-Criar uma variável para guardar o último componente que tinha o foco;
2-Faça com que sua aplicação não reconheça qual componente estará com o foco;
3-Depois, recuperar onde o foco se encontrava.
Para ver o artigo completo, procure por [b:edac6d1e23]Cuidados ao usar o OnExit (Parte I)[/b:edac6d1e23] e [b:edac6d1e23]Cuidados ao usar o OnExit (Parte II)[/b:edac6d1e23] na seção de Dicas do [url=http://www.elivaldo.com.br]Sebastião Elivaldo Ribeiro[/url].
Boa sorte! :wink:
Uma outra idéia. :idea:
Reformule o código da sua função para:
Function CampoObrigatorio(Campo: String) : String; var Ctrl: TWinControl; begin If Campo = ´´ Then Begin Messagedlg(´Atenção!!! Campo de Preenchimento Obrigatorio´, terror, [mbok],0); Ctrl := ActiveControl; ActiveControl := nil; PostMessage(TWinControl(Ctrl).Handle, WM_SETFOCUS, 0, 0); TWinControl(Ctrl).SetFocus; end; end;
Explicando:
1-Criar uma variável para guardar o último componente que tinha o foco;
2-Faça com que sua aplicação não reconheça qual componente estará com o foco;
3-Depois, recuperar onde o foco se encontrava.
Para ver o artigo completo, procure por [b:edac6d1e23]Cuidados ao usar o OnExit (Parte I)[/b:edac6d1e23] e [b:edac6d1e23]Cuidados ao usar o OnExit (Parte II)[/b:edac6d1e23] na seção de Dicas do [url=http://www.elivaldo.com.br]Sebastião Elivaldo Ribeiro[/url].
Boa sorte! :wink:
GOSTEI 0
Nerdex
11/09/2004
Olá Sandra e todo mundo... Olha nas minhas aplicações sempre efetuava as verificações no mometo que o usuário vai postar... mas nos casos de valores de CPF, CNPJ, Insc. Estadual e E-Mail achei interessante esta metodologia por vc demonstrada... mesmo pq realizo testes de validação à estes Edits.
Minha dúvida é o seguinte: tenho um botão com a finalidade de cancelar a inserção ou edição no cadastro, sendo assim como poderei ´desativar´ o reconhecimento ao evento OnExit caso o usuário não queira mais realizar o cadastro... e campos em branco, naturalmente, ficaram existindo. Sabe-se que se eu for clicar em algum botão ou outro objeto, o evento OnExit será desnecessariamete gerado neste caso... pelo Edit ´
Eu tentei cancelar o foco... mas não tem lógica alguma, pois o OnExit do Edit é executado antes do OnClick do botão Cancelar...
Enfim... como vc providenciou um cancelamento de cadastro embasado nesta metodologia da dica do Elivaldo?
Minha dúvida é o seguinte: tenho um botão com a finalidade de cancelar a inserção ou edição no cadastro, sendo assim como poderei ´desativar´ o reconhecimento ao evento OnExit caso o usuário não queira mais realizar o cadastro... e campos em branco, naturalmente, ficaram existindo. Sabe-se que se eu for clicar em algum botão ou outro objeto, o evento OnExit será desnecessariamete gerado neste caso... pelo Edit ´
Eu tentei cancelar o foco... mas não tem lógica alguma, pois o OnExit do Edit é executado antes do OnClick do botão Cancelar...
procedure TForm1.ButCancelaClick(Sender: TObject); begin ActiveControl := nil; QryBanco.Cancel; ... end;
Enfim... como vc providenciou um cancelamento de cadastro embasado nesta metodologia da dica do Elivaldo?
GOSTEI 0
Andremuller
11/09/2004
No on exit antes de fazer a verificação do preenchimento faz o seguinte teste
então quando o usuário estiver saindo do edit para cancelar o registro ele não vai verificar o preenchimento
if not ButtonCancel.Focuse then (...)
então quando o usuário estiver saindo do edit para cancelar o registro ele não vai verificar o preenchimento
GOSTEI 0
Nerdex
11/09/2004
No on exit antes de fazer a verificação do preenchimento faz o seguinte teste
então quando o usuário estiver saindo do edit para cancelar o registro ele não vai verificar o preenchimento
if not ButtonCancel.Focuse then (...)
Valeu André... ficou perfeito: só corrigindo (.Focused)
GOSTEI 0