Topic: Дата рождения

Ув. Дмитрий. вот скрипт.


procedure Form1_TableGrid1_OnChange (Sender: string);
var
   i, c: integer;
   sCell4: string;
begin
    c := Form1.TableGrid1.RowCount - 1;
    for i := 0 to c do
        begin
              sCell4 := Form1.TableGrid1.Cells[4,i]; //Дата рождения в 4 колонке грида
              if ValidDate(sCell4) then
               begin
                 if (DaysBetween(Now, StrToDate(sCell4)) = 0) then
                     begin
                              Form1.TableGrid1.Cell[4,i].Color := clGreen;
                     end else
                     begin
                             Form1.TableGrid1.Cell[4,i].Color := clWindow;
                     end;
                end;
         end;
end;

Например дата рождения 03.12.2000, сегодня 03.12.2015. Дата становится зеленым при и 03.12.2015 и 04.12.2015. В остальные цвет становится clWindow.
1. Как это исправить?
2. Надо чтобы за день до даты рождения цвет была желтым а в день рождения была зеленым.
Помогите пожалуйста.

Re: Дата рождения

Ув. Дмитрий. Ответьте на вышестоящий вопрос пожалуйста.

Re: Дата рождения

К сожалению это не вопрос, а просьба реализовать данный функционал за вас, на такие просьбы я не могу отвечать быстро, т.к. это занимает много времени и занимаюсь этим в последнюю очередь.


фунция DaysBetween возвращает разницу в днях с учетом года, т.е. применение этой функции здесь бесмысленно, т.к. она вернет ноль только в случае, если две даты будут равны.


Думаю в этом случае необходимо применять функции EncodeDate и DecodeDate чтобы делать сравнения без учета года.

Dmitry.

Re: Дата рождения

можете дать пример использования EncodeDate и DecodeDate?

Re: Дата рождения

http://www.delphibasics.ru/EncodeDate.php
http://www.delphibasics.ru/DecodeDate.php

Dmitry.

Re: Дата рождения

Проект с примером:

Post's attachments

Attachment icon Employees - DateOfBirth highlight.zip 25.44 kb, 448 downloads since 2015-12-04 

Dmitry.

Re: Дата рождения

спс, очень помогли