Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 TFDTable строки с датой прошедшего от текушего времени заграсить цветом  [new]
varbambia
Member

Откуда:
Сообщений: 11
Помогите, я новичек немогу никак понять как сделать.

вот подсказали только как одну строку закрасить:

procedure TForm2.StringGridBindSourcetable1DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
..
      if(ARow in [1])then
   begin
    //tStringGrid(sender).Canvas.Brush.Color := clRed;
    tStringGrid(sender).Canvas.Brush.Color := clRed;
    tStringGrid(sender).Canvas.Font.Color :=clGreen;
    tStringGrid(sender).Canvas.FillRect(Rect);
   end;



https://123c.ru/files/sqlite db.zip

Сообщение было отредактировано: 23 ноя 21, 23:46
23 ноя 21, 23:45    [22399985]     Ответить | Цитировать Сообщить модератору
 Re: TFDTable строки с датой прошедшего от текушего времени заграсить цветом  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 828
varbambia,
Поменяйте окраску по условию "красить первый ряд"
if(ARow in [1])then

на
if (StrToDate (tStringGrid(sender).Cells[11,ARow]) < now()) then

/в предположении что дата у Вас в 12-й колонке/
24 ноя 21, 00:13    [22399986]     Ответить | Цитировать Сообщить модератору
 Re: TFDTable строки с датой прошедшего от текушего времени заграсить цветом  [new]
varbambia
Member

Откуда:
Сообщений: 11
Victor Cookin,

что то не робит таблица вот так выглядит

https://i.postimg.cc/63mcB5Zc/1.png

Первая колонка это время



procedure TForm1.StringGridBindSourcetable1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var Dt: TDateTime;
begin

if (StrToDate (tStringGrid(sender).Cells[0,ARow]) < now()) then
tStringGrid(sender).Canvas.Brush.Color := clRed;
tStringGrid(sender).Canvas.Font.Color :=clGreen;
tStringGrid(sender).Canvas.FillRect(Rect);
end;

end.


пишет "время" is not walid date
24 ноя 21, 10:47    [22400080]     Ответить | Цитировать Сообщить модератору
 Re: TFDTable строки с датой прошедшего от текушего времени заграсить цветом  [new]
s62
Member

Откуда: Жуковский
Сообщений: 1504
varbambia,

у вас этот код выполняется для всех ячеек, в том числе для ячеек в самой первой строке (заголовков).
24 ноя 21, 10:55    [22400083]     Ответить | Цитировать Сообщить модератору
 Re: TFDTable строки с датой прошедшего от текушего времени заграсить цветом  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 828
varbambia, и про begin ... end не забывайте.

procedure TForm1.StringGridBindSourcetable1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var Dt: TDateTime;
begin
if ARow > 0 then
if (StrToDate (tStringGrid(sender).Cells[0,ARow]) < now()) then
[b]begin[/b]
  tStringGrid(sender).Canvas.Brush.Color := clRed;
  tStringGrid(sender).Canvas.Font.Color :=clGreen;
  tStringGrid(sender).Canvas.FillRect(Rect);
[b]end;[/b]
end;
24 ноя 21, 17:07    [22400300]     Ответить | Цитировать Сообщить модератору
 Re: TFDTable строки с датой прошедшего от текушего времени заграсить цветом  [new]
varbambia
Member

Откуда:
Сообщений: 11
Victor Cookin,

спасибо, щас др ошибка

https://i.postimg.cc/13KGKhPy/12.png

22.11.2021 22:51:00 is not walid date
что ему ненравится?

я так понял он строку неможет в дату перевести? У меня столбец время имеет тип datetime изначально туда строку невписать

Сообщение было отредактировано: 25 ноя 21, 08:10
25 ноя 21, 08:07    [22400481]     Ответить | Цитировать Сообщить модератору
 Re: TFDTable строки с датой прошедшего от текушего времени заграсить цветом  [new]
varbambia
Member

Откуда:
Сообщений: 11
varbambia,

получилось вот так сменил StrToDate на StrToDateTime. так как фильтр и по времени тоже нужен.
Но щас текст тоже закрашен его невидно.

добавил tStringGrid(sender).Canvas.TextOut(Rect.Left+1,Rect.Top+1, tStringGrid(sender).Cells[ACol, ARow]);
все робит

всем спасибо

Сообщение было отредактировано: 25 ноя 21, 08:24
25 ноя 21, 08:21    [22400484]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить