Diferente de SetFocus
11/09/2004
0
Desde já agradeço a todos
:wink:
Silvio
Posts
11/09/2004
Fórum Vini
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;
11/09/2004
Silvio
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
11/09/2004
Fórum Vini
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;
11/09/2004
Sandra
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:
06/05/2005
Nerdex
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?
06/05/2005
Andremuller
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
06/05/2005
Nerdex
if not ButtonCancel.Focuse then (...)
Valeu André... ficou perfeito: só corrigindo (.Focused)
Clique aqui para fazer login e interagir na Comunidade :)