Uso do IfThen com datas

Delphi

16/08/2024

Pessoal, estou aqui revisando um código antigo e ao mesmo tempo deixando ele mais enxuto.

if edt1.text = EmptyStr then
  edt1.text := 'Informe valor'
else
  edt1    .Text := 'Valor valido'; 


Podemos trocar o codigo acima por este que tem o mesmo efeito

 edit1.text := IfThen(edt1.text = EmptyStr,'Informe valor','Valor valido');


No meu caso, tenho datas e não achei uma forma de fazer

  if DayOfWeek(Date) = 2 then
    dtpInicio.Date := Date - 2
  else
    dtpInicio.Date := Date;
Renan

Renan

Curtidas 0

Respostas

Arthur Heinrich

Arthur Heinrich

16/08/2024

Você pode construir a sua própria função.

function ifthen_date( condition : boolean; date1, date2 : tdatetime):tdatetime;
begin
  if condition
    then Result:=date1
    else Result:=date2;
end;


Ou, se o seu objetivo é identificar o domingo (início da semana), pode calcular diretamente sem o IF.

  dtpInicio.Date := Date - DayOfWeek(Date);

GOSTEI 0
Renan

Renan

16/08/2024

Olá, Arthur.

Na verdade eu uso esse código para preencher o DateTimePicker, de acordo com o dia da semana.
No caso acima, se for segunda-feira, vou preencher o DateTimePicker com a data de sexta-feira e se for outro dia da semana, o DateTimePicker recebe a data atual.
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

16/08/2024

Pessoal, estou aqui revisando um código antigo e ao mesmo tempo deixando ele mais enxuto.

if edt1.text = EmptyStr then
  edt1.text := 'Informe valor'
else
  edt1    .Text := 'Valor valido'; 


Podemos trocar o codigo acima por este que tem o mesmo efeito

 edit1.text := IfThen(edt1.text = EmptyStr,'Informe valor','Valor valido');


No meu caso, tenho datas e não achei uma forma de fazer

  if DayOfWeek(Date) = 2 then
    dtpInicio.Date := Date - 2
  else
    dtpInicio.Date := Date;


Você pode usar o IfThen também com datas.

Adicione Math na uses.

Teste este código:

dtpInicio.Date := IfThen(DayOfWeek(Date) = 2, Date - 2, Date);
GOSTEI 0
Renan

Renan

16/08/2024

Obrigado, Natanael.
GOSTEI 0
Renan

Renan

16/08/2024

Natanael, seria possível ativar e desativar itens do MainMenu com o ifThen?
A ideia seria reduzir essas 4 linhas em 1 linha.

     if FieldByName('FLUXO_CAIXA').AsString <> 'S' then
        FrmPrincipal.FluxodeCaixa1.Enabled := False
     else
        FrmPrincipal.FluxodeCaixa1.Enabled := True;


tentei assim, mas não funciona

FrmPrincipal.FluxodeCaixa1.Enabled := ifThen(FieldByName('FLUXO_CAIXA').AsString <> 'S', False, True);
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

16/08/2024

Nesse caso, você não precisa usar o IfThen.

Teste assim:

FrmPrincipal.FluxodeCaixa1.Enabled := FieldByName('FLUXO_CAIXA').AsString = 'S';
GOSTEI 0
Renan

Renan

16/08/2024

Nesse caso, você não precisa usar o IfThen.

Teste assim:

FrmPrincipal.FluxodeCaixa1.Enabled := FieldByName('FLUXO_CAIXA').AsString = 'S';


Natanael,

Sim, obrigado pela ajuda. Ficou ótimo.
GOSTEI 0
POSTAR