Sair de um único controle em um form
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 :
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.
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
Curtidas 0
Respostas
Brunodsr
13/06/2008
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.
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.
GOSTEI 0
Microbios
13/06/2008
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:
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:
GOSTEI 0
Lucas.corp
13/06/2008
tente com o onchange
GOSTEI 0
Brunodsr
13/06/2008
Ola,
Desculpe o post anterior. Nao tinha entendido.
Vc ja pensou em obrigar o cara a pressionar ENTER para confirmar o campo?
Tipo:
Espero ter ajudado
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
GOSTEI 0
Brunodsr
13/06/2008
Ola,
Desculpe o post anterior. Nao tinha entendido.
Vc ja pensou em obrigar o cara a pressionar ENTER para confirmar o campo?
Tipo:
Espero ter ajudado
if key = #13 then ValidaData;
Desculpe.. Poe isso no keyPress do campo.
GOSTEI 0
Microbios
13/06/2008
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:
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:
GOSTEI 0
Pestana_
13/06/2008
acho que a solução seria esta:
espero ter ajudado!
If (Length(txtDataAtual.Text) = 10) and (txtDataAtual.Text <> ´__/__/____´) then frmDataDevolucao.Close;
espero ter ajudado!
GOSTEI 0
Marco Salles
13/06/2008
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
[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;
GOSTEI 0