Como criar um campo para inserção de hora, que somente os digitos valido seja digitados ? [DELPHI]

Delphi

13/09/2018

Boa tarde a todos

Bom eu venho desenvolvendo um sistema em delphi, e me deparo com a seguinte questão.
Como faço para com que o campo hora somente receba os valores validos de hora
e o mesmo com o campo data.

Espero ter sido claro
Agradeço desde ja.
Doni

Doni

Curtidas 0

Respostas

Felipe Morais

Felipe Morais

13/09/2018

Doni,

O Delphi possui validações de data e hora (unit SysUtils) nas seguintes funções:

TryStrToDate
TryStrToTime
TryStrToDateTime


Use-as para validar os seus campos. Espero ter ajudado.
GOSTEI 0
Doni

Doni

13/09/2018

Mas com eu evito que ele digite 25:00 por exemplo
eu queria restringir ele a somente ao valores validos para hora (00:00 a 23:59)

seria possivel isso ?
talvez com algum outro componente?
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

13/09/2018

Criei esta função:

function TForm1.ValidValue(ValorCampo: string): ttime;
begin
 try
   Result:=StrToTime(ValorCampo);
  except
   Result:=StrToTime('00:00:00');
 end;
end;


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
Edit1.Text:=TimeToStr(ValidValue(Edit1.Text));

end;
end;
GOSTEI 0
Doni

Doni

13/09/2018

Criei esta função:<br />
<br />
<br />
function TForm1.ValidValue(ValorCampo: string): ttime;<br />
begin<br />
 try<br />
   Result:=StrToTime(ValorCampo);<br />
  except<br />
   Result:=StrToTime(''00:00:00'');<br />
 end;<br />
end;<br />
<br />
<br />
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);<br />
begin<br />
if key = #13 then<br />
begin<br />
Edit1.Text:=TimeToStr(ValidValue(Edit1.Text));<br />
<br />
end;<br />
end;<br />
<br />
<br />
<br />


o que essa codição com #13 faria ?
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

13/09/2018

Doni, esta condição está dentro Edit1KeyPress

Significa que ao pressionar uma tecla ele executar algo.
No caso eu valido no onkey press do button "Enter" =13

Você pode chamar a função ao sair do campo também.
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

13/09/2018

Doni, esta condição está dentro Edit1KeyPress

Significa que ao pressionar uma tecla ele executar algo.
No caso eu valido no onkey press do button "Enter" =13

Você pode chamar a função ao sair do campo também.
GOSTEI 0
Doni

Doni

13/09/2018

a sim, mas nesse caso a validação da hora só aconteceria após o usuário apertar o enter ou sair do campo;

esse é o único modo ? Esta pensado em algo do tipo, o usuário não conseguir digitar, não aparecendo na tela.

Isso seria no caso em tempo de execução, estou ceto ?
É um meio mais complicado, ou inviável ?

GOSTEI 0
Raimundo Pereira

Raimundo Pereira

13/09/2018

Você pode verificar duas casas da esquerda se for maior que 24.
Use a função copy para copiar o conteúdo do campo e validar ao ser preenchido pelo usuário
GOSTEI 0
POSTAR