Topic: Что не так со скриптом

Надо, чтобы в таблице окрашивались просроченные дни, но скрипт упорно выдаёт ошибку на строке

if StrToDate(MainFrm.tablegrid3.Cells[2, vrow]) < Now - 1 then

Что не так то?

procedure MainFrm_TableGrid3_OnChange(Sender: string);
var
  vrow, vcolumn: integer;
begin
  for vrow := 0 to MainFrm.tablegrid3.RowCount - 1 do
  begin
    if StrToDate(MainFrm.tablegrid3.Cells[2, vrow]) < Now - 1 then
    begin
      for vcolumn := 0 to MainFrm.tablegrid3.Columns.Count - 1 do
      begin
        MainFrm.tablegrid3.Cell[vcolumn, vrow].TextColor := clRed;
      end;
    end;
  end;

  MainFrm.TableGrid3.Columns[0].Header.Multiline := True; // enables multiline header in the specified column
  MainFrm.TableGrid3.Columns[3].Header.Multiline := True;
  MainFrm.TableGrid3.HeaderSize := 36; // sets the height of the header
  MainFrm.TableGrid3.BestFitColumns(bfBoth); // automatically adjusts the column width based on cell contents and column names
end;

последние 4 строки можно не смотреть.

Re: Что не так со скриптом

Всё вопрос снимаю. Не знаю что это было, просто удалил sqlite.db и начал тестировать по новой, и всё заработало.

Re: Что не так со скриптом

StrToDate может выдавать ошибку, если содержимое ячейки по каким-то причинам не является датой. Рекомендую добавить проверку:

...
if ValidDate(MainFrm.tablegrid3.Cells[2, vrow]) and (StrToDate(MainFrm.tablegrid3.Cells[2, vrow]) < Now - 1) then
...
Визуальное программирование: блог и телеграм-канал.

Re: Что не так со скриптом

k245 wrote:

StrToDate может выдавать ошибку, если содержимое ячейки по каким-то причинам не является датой. Рекомендую добавить проверку:

...
if ValidDate(MainFrm.tablegrid3.Cells[2, vrow]) and (StrToDate(MainFrm.tablegrid3.Cells[2, vrow]) < Now - 1) then
...

Да нет. Как выяснилось в другом. Я взял шаблон от sparrow с его проекта CustomCalendar и оказалось, что работать можно только с датой календаря, окрашивать или еще что то. А вот другие даты по мнению скрипта не является датой. Он об этом так и пишет. Я это случайно выяснил, пока не решил окрасить именно дату из календаря.

Re: Что не так со скриптом

Мне нравятся ваши выводы и заключения.
Хотя в другой ветке вы только три дня назад написали

Мне нравится. но я пока в скриптах ноль.

Дата а еще и время существует в множестве форматов и я могу использовать в своем коде ту,
что мне удобней в данной процедуре календаря.
К тому же ваш вопрос касается работы с таблицей. А календарь связан только формированием
фильтров для таблицы в моих примерах. Раскрашивайте таблицы как вам хочется..


Константин прав на счет дат.

Re: Что не так со скриптом

sparrow wrote:

Мне нравятся ваши выводы и заключения.
Хотя в другой ветке вы только три дня назад написали

Мне нравится. но я пока в скриптах ноль.

Дата а еще и время существует в множестве форматов и я могу использовать в своем коде ту,
что мне удобней в данной процедуре календаря.
К тому же ваш вопрос касается работы с таблицей. А календарь связан только формированием
фильтров для таблицы в моих примерах. Раскрашивайте таблицы как вам хочется..


Константин прав на счет дат.

Я и сейчас не отказываюсь от слов, что я в скриптах ноль. Но я учусь на чужих примерах и читаю документацию. С вашим проектом я разобрался и теперь с окрашиванием других дат вопросов нет. Теперь я пытаюсь к дате прибавить дни, но всё безрезультатно. И ошибок нет и дни не прибавляет. Может для кого то это легко, ну а я уже третий час мучаюсь. А Ваш проект я взял потому что в нём есть та самая фишка которая мне нужна и которую я вряд ли бы сам осилил.

Re: Что не так со скриптом

На счет учебы - это хорошо.

На счет окрашивания таблиц, таких примеров на форуме очень много. И в учебных материалах Константина тоже есть.
Учебные материала Констанина настоятельно рекомендуется к обучению.

Что касается дат:
Если дата в формате TDateTime что используется при работе с компонентами  и функциями программы,
то прибавить и отнять день очень просто  + 1 или -1. Странно что ошибок нет. Может до этого оператора не доходит дело?

Re: Что не так со скриптом

Может я проект приложу. Я не буду просить написать за меня код. Но вы люди опытные, просто посмотрите в том ли я направлении копаю