Topic: DateTimePicker

Ув. Дмитрий!
На форме имеется 2 компонента DateTimePicker (dtpData_vipiski и dtpData_gospitalizatsii) и 1 компонент Edit1 (edDni_prebivaniya).
Это скрипт, который я написал:
procedure NovayaForma_dtpData_vipiski_OnChange (Sender: string);
begin
NovayaForma.edDni_prebivaniya.Value:= DaysBetween(NovayaForma.dtpData_vipiski.DateTime,NovayaForma.dtpData_gospitalizatsii.DateTime);
end;

procedure NovayaForma_dtpData_gospitalizatsii_OnChange (Sender: string);
begin
NovayaForma.edDni_prebivaniya.Value:= DaysBetween(NovayaForma.dtpData_vipiski.DateTime,NovayaForma.dtpData_gospitalizatsii.DateTime);
end;

В норме дата выписки должна быть больше даты госпитализации, т.е. если дата госпитализации - 22.07.2015 то дата выписки должна быть равно или больше, т.е. 22.07.2015, 23.07.2015 и так далее. Короче скрипт работает и всегда показывает положительное число, а надо чтобы она показала отрицательное число если дата выписки меньше дата госпитализации.

Re: DateTimePicker

попробуйте так

procedure NovayaForma_dtpData_vipiski_OnChange (Sender: string);
begin
   NovayaForma.edDni_prebivaniya.Value:= DaysBetween(NovayaForma.dtpData_vipiski.DateTime,NovayaForma.dtpData_gospitalizatsii.DateTime);
   if NovayaForma.dtpData_vipiski.DateTime < NovayaForma.dtpData_gospitalizatsii.DateTime then NovayaForma.edDni_prebivaniya.Value := NovayaForma.edDni_prebivaniya.Value * -1;
end;

procedure NovayaForma_dtpData_gospitalizatsii_OnChange (Sender: string);
begin
   NovayaForma.edDni_prebivaniya.Value:= DaysBetween(NovayaForma.dtpData_vipiski.DateTime,NovayaForma.dtpData_gospitalizatsii.DateTime);
   if NovayaForma.dtpData_vipiski.DateTime < NovayaForma.dtpData_gospitalizatsii.DateTime then NovayaForma.edDni_prebivaniya.Value := NovayaForma.edDni_prebivaniya.Value * -1;
end;
Dmitry.

Re: DateTimePicker

ок, попробую

Re: DateTimePicker

На форме имеется DateTimePicker (dtpData_vipiski). При ставке галочки на него я ввожу дату скажем вчерашнюю или завтрашнюю. Теперь при снятии галочки с него dtpData_vipiski становится не активным но дата остается таким каким я изменил его. Надо чтобы если снять галочку с него то его дата автоматом переключалась на сегодняшний день. Вот мой скрипт:

procedure NovayaForma_dtpData_vipiski_OnChange (Sender: string);
begin
if NovayaForma.dtpData_vipiski.Checked then
begin
    .....
end else
    begin
    NovayaForma.dtpData_vipiski.DateTime.Default:= Format(now);
    end;
end;

Увы не получается, помогите с реализацией.

Re: DateTimePicker

попробуйте так

procedure NovayaForma_dtpData_vipiski_OnChange (Sender: string);
begin
   if NovayaForma.dtpData_vipiski.Checked then
   begin
    .....
   end else
   begin
      NovayaForma.dtpData_vipiski.DateTime := now;
      NovayaForma.dtpData_vipiski.Checked := False;
    end;
end;
Dmitry.

6 (edited by pha1984 2015-07-24 08:29:19)

Re: DateTimePicker

Обратите внимание на следующее

procedure NovayaForma_dtpData_vipiski_OnChange (Sender: string);
begin
   if NovayaForma.dtpData_vipiski.Checked then
   begin
    .....
   end else
   begin
      NovayaForma.dtpData_vipiski.DateTime := now;
      NovayaForma.dtpData_vipiski.Checked := False;
    end;
end;

и это:

procedure NovayaForma_dtpData_vipiski_OnChange (Sender: string);
begin
   if NovayaForma.dtpData_vipiski.Checked = True then
   begin
    .....
   end else
   begin
      NovayaForma.dtpData_vipiski.DateTime := now;
      NovayaForma.dtpData_vipiski.Checked := False;
    end;
end;

Чем они отличаются?
1. if NovayaForma.dtpData_vipiski.Checked = True then
2. if NovayaForma.dtpData_vipiski.Checked then

В обеих случаях вроде скрипт работает без проблем.

Re: DateTimePicker

pha1984
Ничем не отличается, записи идентичны по смыслу.

Dmitry.