Sair de um único controle em um form

13/06/2008

0

Olá galera!

Estou com uma dúvida boba e não sei como sair dela.
Tenho apenas um MaskEdit num form para entrada de data e gostaria de, após inserir essa data, o form fosse fechado. Testei no evento onKeyPress com o código :

If Length(txtDataAtual.Text) = 10 then
frmDataDevolucao.Close;

Mas o form é automaticamente fechado porque o maskedit mesmo sem valor nenhum, contém 10 espaços na máscara ´__/__/____´.

Como resolver isso?!

Obrigado.


Microbios

Microbios

Responder

Posts

13/06/2008

Brunodsr

Usa o onExit.

1. Valida se a data é válida;
2. Caso nao seja, informa ao usuario e mantem o foco no campo;
3. Caso a data seja valida, fecha o form.

Espero ter ajudado.


Responder

13/06/2008

Microbios

obrigado brunodsr, porém...

o onexit é disparado quando o controle PERDE o foco e no caso só há um controle no formulário, portanto ao terminar de preencher a data o foco permanece no controle, não há perda do foco. O que eu quero é exatamente isso: sair validando a data e fechando o form, com um só controle no form sem a passagem de foco pra outro contorle.

:wink:


Responder

13/06/2008

Lucas.corp

tente com o onchange


Responder

13/06/2008

Brunodsr

Ola,

Desculpe o post anterior. Nao tinha entendido.

Vc ja pensou em obrigar o cara a pressionar ENTER para confirmar o campo?

Tipo:
  if key = #13 then
    ValidaData;


Espero ter ajudado


Responder

13/06/2008

Brunodsr

Ola, Desculpe o post anterior. Nao tinha entendido. Vc ja pensou em obrigar o cara a pressionar ENTER para confirmar o campo? Tipo:
  if key = #13 then
    ValidaData;
Espero ter ajudado


Desculpe.. Poe isso no keyPress do campo.


Responder

13/06/2008

Microbios

brunodsr;

O código que você citou seria o mais apropriado se eu não usasse um código em meu MDI que faz a troca do TAB por ENTER em toda a aplicação. Não sei por qual motivo, esse código [b:0722808d36]if key = #13 then [/b:0722808d36] no evento onkeypress não funciona. :lol: Qualquer outra tecla que eu testo, funciona. Menos o Enter. Vou continuar tentando achar uma solução. Por enquanto agradeço às sugestões dadas. :wink:


Responder

14/06/2008

Pestana_

acho que a solução seria esta:
If (Length(txtDataAtual.Text) = 10) and (txtDataAtual.Text <> ´__/__/____´) then 
  frmDataDevolucao.Close;



espero ter ajudado!


Responder

14/06/2008

Marco Salles

usando a Maskara :

[b:d6ae2c3074]!99/99/9999;1;_[/b:d6ae2c3074]

a a Propriedade [u:d6ae2c3074]EditText[/u:d6ae2c3074], ao Inves do [u:d6ae2c3074]Text [/u:d6ae2c3074]

No evento [b:d6ae2c3074]OnChage[/b:d6ae2c3074] Anterior

procedure TForm2.txtDataAtualChange(Sender: TObject);
var
 data:TDateTime ;
begin
if trystrtodate(txtDataAtual.EditText,data) then
 close;
end;



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