Jump to content

Есть проблема с TUniCalendarPanel


alex_v

Recommended Posts

Всем привет!

Помогите понять появившуюся траблу с TUniCalendarPanel.

Данные для календаря хранятся в БД. 

Есть 14 сохраненных ежедневных событий, начиная 19 октября 2020 и заканчивая 1 ноября 2020. Это две полные недели.

Читаю данные и в цикле создаю 14 событий в календаре. В качестве EventID использую первичный ключ из таблицы. IsAllDay = True;
События сформированы, далее они отображаются в календаре. Всё отлично, но... только до даты 25 октября 2020. 

В ячейке за 25 число имеем две отметки: именно за 25 число и тут же подтягивается и ивент за 26 число. И далее, начиная с ячейки за 26 число происходит сдвиг отображения ивентов. Т.е. в ячейке 26 имеем данные от ячейки 27 и т.д. Последняя ячейка - воскресенье 1 ноября - пустая, т.к. она сдвинулась в 31 октября. 

Что это? И как его исправить? 

 

p.s. Не могу понять, как сюда добавить атачмент. Вроде как его нужно заранее закачать. Но куда именно - не нахожу.

 

 

Link to comment
Share on other sites

10 minutes ago, alex_v said:

p.s. Не могу понять, как сюда добавить атачмент. Вроде как его нужно заранее закачать. Но куда именно - не нахожу.

Здравствуйте,

Вы используете триальную версию? 

Link to comment
Share on other sites

И когда перехожу к отображению календаря за ноябрь, то события очищаются и перечитываются из БД и вторая видимая неделя выглядит уже корректно.

CalendarPanel 2.jpg

Link to comment
Share on other sites

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

И это данные ивента за 26 число.

CalendarPanel 3.jpg

Link to comment
Share on other sites

Не понятно - в чем особенность 25 (или 26) октября.

Неужели это связано с  "В последнее воскресенье октября, нoчью в 4 часа, в Украине проводится переход на зимнее время - 2020. B эту ночь 25 октября 2020 г в 4 часа стрелки часов переводят нa час назад"

 

Link to comment
Share on other sites

Вывожу две недели: 19-25 октября и 2-8 ноября.

Т.е. нормально отобразить половину календаря после дня перевода часов - не реально ? 

New Application 4.jpg

New Application 5.jpg

Link to comment
Share on other sites

IsAllDay := True;
E.StartDate := EncodeDate(2020, 10, i);
E.EndDate := EncodeDate(2020, 10, i+1);

Если задавать событие как AllDay без использования TTime, то также глючит.

Link to comment
Share on other sites

  • 3 weeks later...
On 10/1/2020 at 6:53 PM, alex_v said:

Но все равно не понятен "сдвиг на одни сутки" в календаре за Октябрь 2020 начиная с 26 Октября.

Добрый день,

Попробуйте это решение:

procedure TMainForm.UniFormCreate(Sender: TObject);
begin
  with UniCalendarPanel1 do
  begin
    ShowDayView := True;
    ShowWeekView := True;
    ShowMonthView := True;
    ShowNavBar := True;

    JSInterface.JSConfig('defaultView', ['week']);
    JSInterface.JSAddListener('beforerender', 'function(){'+
      '    this.setTimezoneOffset(-180);'+
      '    this.updateTimezoneOffset();'+
      '    this.setView("month");'+
      '}'
    );
  end;

end;

 

  • Like 1
Link to comment
Share on other sites

Да, такой метод устраняет проблему.

И вопрос:

- нужно будет '-180' (3ч) менять на значение, которое будет соответствовать часовому поясу места запуска сервера ? 

  • Like 1
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...