Diferente de SetFocus

11/09/2004

0

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:


Silvio

Silvio

Responder

Posts

11/09/2004

Fórum Vini

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:
(Screen.ActiveForm.FindComponent(´NomeCampo´) as TWinControl).SetFocus;


Espero ter ajudado,
Vinicius;


Responder

11/09/2004

Silvio

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


Responder

11/09/2004

Fórum Vini

Agora entendi, você pode fazer assim:
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;


Responder

11/09/2004

Sandra

Silvio,

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:


Responder

06/05/2005

Nerdex

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...

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?


Responder

06/05/2005

Andremuller

No on exit antes de fazer a verificação do preenchimento faz o seguinte teste

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


Responder

06/05/2005

Nerdex

No on exit antes de fazer a verificação do preenchimento faz o seguinte teste
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


Valeu André... ficou perfeito: só corrigindo (.Focused)


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar