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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar