Scheduler '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' TcxSchedulerControlEvent ...................................................................... .. warning:: |not_supported| .. pas:class:: TcxSchedulerControlEvent TcxSchedulerControlEvent - объекты данного класса являются событиями которые отображаются во фрейме планировщика. .. pas:attribute:: Selected: Boolean Задает является ли данное событие текущим. :rtype: Boolean .. pas:attribute:: IsDataValid: Boolean Для внутреннего использования. :rtype: Boolean .. pas:attribute:: State: Integer Содержит состояние события. Может принимать следующие значения: tlsBusy занят tlsFree свободный tlsOutOfOffice Вне офиса tlsTentative гипотетически :rtype: Integer .. pas:attribute:: Start: TDateTime Свойство задает время и дату старта текущего события. Если свойтво ``AllDayEvent = true``, то свойство ``Start`` игнорируется. Для задания продолжительности события используются свойства ``Duration`` и ``Finish``. :rtype: TDateTime .. pas:attribute:: ResourceID: Integer Идентификатор Ресурса, с которым связано событие. :rtype: Integer .. pas:attribute:: ReminderMinutesBeforeStart: Integer Количество минут до старта события, за которое необходимо начать показывать напоминание о событии. :rtype: Integer .. pas:attribute:: ReminderDate: TDateTime Дата и время напоминания (но можно, как альтернативу, использовать ``ReminderMinutesBeforeStart``). :rtype: TDateTime .. pas:attribute:: Reminder: Boolean Определяет включено или выключено напоминание о событие. :rtype: Boolean .. pas:attribute:: RecurrenceInfo: TcxSchedulerEventRecurrenceInf Класс настройки периодичности. :rtype: TcxSchedulerEventRecurrenceInf .. pas:attribute:: Pattern: TcxSchedulerControlEvent Ссылка на *etPattern* (родительское) событие, если текущее событие входит в последовательность периодических событий. :rtype: TcxSchedulerControlEvent .. pas:attribute:: Message: String Описание события. :rtype: String .. pas:attribute:: LabelColor: Integer Свойство задает цвет события. :rtype: Integer .. pas:attribute:: ID: Variant Метод возвращает уникальный идентификатор события. :rtype: Variant .. pas:attribute:: Finish: TDateTime Задает продолжительность события, аналогично свойство ``Duration`` (Данные свойства взаимно друг на друга влияют). Свойство задает время конца события. :rtype: TDateTime .. pas:attribute:: EventType: TcxEventType Возвращает тип события. Может вернуть следующие значения: etNone Обычное пользовательское не периодическое событие etPattern Пользовательское событие, являющееся шаблоном(родительским) для цепочки повторяющихся событий etOccurrence Событие в цепочке событий порожденных от etPattern события etException Событие удаленное из цепочки повторящихся событий становится типа etException. etCustom пользовательское событие из одной последовательности повторяющихся событий, но с измененными настройками периодичности. :rtype: TcxEventType .. pas:attribute:: Duration: TDateTime Продолжительность события, равноценно свойству ``Finish`` (Данные свойства взаимно друг на друга влияют). :rtype: TDateTime .. pas:attribute:: Caption: String Название события. :rtype: String .. pas:attribute:: AllDayEvent: Boolean Событие длится весь день. :rtype: Boolean .. pas:attribute:: ActualFinish: TDateTime Дата конца последнего события, если событие периодическое, или дата окончания обычного события. :rtype: TDateTime .. pas:attribute:: ActualStart: TDateTime Дата начала события события, если событие периодическое, то первого события. :rtype: TDateTime .. pas:method:: Post() Данный метод следует вызывать если мы хотим сохранить сделанные изменения в событии. .. pas:method:: BeginEditing() Для внутреннего использования. .. pas:method:: RemoveRecurrence() Удаляет у данного объект событий настройки периодичности. И устанавливает ``EventType`` в *etNone*. .. pas:method:: DeleteException() Удаляет все события - исключения и Custom события, если данное событие шаблонное (pattern). .. pas:method:: IsRecurring(): Boolean Возвращает является ли событие периодическим. :rtype: Boolean .. pas:method:: EndEditing() Для внутреннего использования. .. pas:method:: Delete() Удаляет событие. TcxEventType ............... .. pas:class:: TcxEventType Перечисление .. pas:attribute:: etCustom Пользовательское событие из одной последовательности повторяющихся событий, но с измененными настройками периодичности. .. pas:attribute:: etException Событие удаленное из цепочки повторящихся событий становится типа etException. .. pas:attribute:: etOccurrence Событие в цепочке событий порожденных от etPattern события. .. pas:attribute:: etPattern Пользовательское событие, являющееся шаблоном(родительским) для цепочки повторяющихся событий. .. pas:attribute:: etNone Обычное пользовательское не периодическое событие TcxSchedulerOptionsView ...................................................................... .. warning:: |not_supported| .. pas:class:: TcxSchedulerOptionsView TcxSchedulerOptionsView .. pas:attribute:: StartOfWeek: TcxStartOfWeek День начала недели. :rtype: TcxStartOfWeek .. pas:attribute:: WorkDays: TDays Рабочие дни. :rtype: TDays .. pas:attribute:: WorkFinish: TTime Время окончания рабочего дня. :rtype: TTime .. pas:attribute:: WorkStart: TTime Время начала рабочего дня. :rtype: TTime .. code-block:: delphi :caption: Пример S := Scheduler; S.OptionsView.WorkStart := '10:00'; S.OptionsView.WorkDays := [dMonday,dTuesday,dWednesday,dThursday,dFriday,dSaturday]; S.OptionsView.StartOfWeek := swSunday; TcxStartOfWeek ................ .. pas:class:: TcxStartOfWeek Перечисление. День, с которого начинается неделя. .. pas:attribute:: swSaturday .. pas:attribute:: swFriday .. pas:attribute:: swThursday .. pas:attribute:: swMonday .. pas:attribute:: swWednesday .. pas:attribute:: swTuesday .. pas:attribute:: swSunday .. pas:attribute:: swSystem TbtkScheduler ...................................................................... .. warning:: |not_supported| .. pas:class:: TbtkScheduler TbtkScheduler - при добавлении нового события вызывается операция ``OnEventAdd`` - при начале редактирования существующего события вызывается операция ``OnEditEvent`` - при удалении вызывается операция ``OnDeleteEvent``. По умолчанию, диалоговые окна, которые должны показываться при срабатывании этих событий перекрываются и не отображаются, если вызвана операция-тригер. Если же диалоговое окно необходимо показать, то свойству ``IsShowEventEditorForm`` надо присвоить значение **True**. Новое событие можно полностью отредактировать в паскаль операции, без использования диалоговых окон. Для доступа к в вновь создаваемому событию следует использовать поле *CurrentEvent*. Закрепление изменений выполняется методом ``Post`` объекта события, если не выполнен ``Post``, событие не будет добавлено. Но данный метод не завершает текущую транзакцию. В случае, если ``IsShowEventEditorForm = True``, то метод ``Post`` ни в кое случае нельзя вызывать! Перед вызовом ``Post``, если задавались настройки периодичности, необходимо проверять ``GetValidStatus``, и выполнять ``Post`` только в том случае, если ``GetValidStatus`` вернет **rvsValid**. Особенностью использования операции ``OnDeleteEvent``, является то, что если она вызывается, то удалять объект надо явно - ``TcxSchedulerControlEvent.Delete`` .. code-block:: delphi :caption: Пример операции OnEventAdd // создаем периодическое событие которое // будет выполняться в течении 4х рабочих дней, начиная с '04.04.2008 // 18:00:00' продолжительностью 2 часов каждый рабочий день. Scheduler.CurrentEvent.Caption := 'TEST onEventAdd Caption'; Scheduler.CurrentEvent.Location := 'TEST onEventAdd Location'; Scheduler.CurrentEvent.Message := 'TEST onEventAdd Message'; Scheduler.CurrentEvent.Caption := 'TEST onEventAdd'; Scheduler.CurrentEvent.State := tlsFree; Scheduler.CurrentEvent.Start := StrToDateTime('04.04.2008 18:00:00'); Scheduler.CurrentEvent.Duration := StrToTime('2:00:00'); Scheduler.CurrentEvent.LabelColor := clskyblue; Scheduler.CurrentEvent.Reminder := 0; Scheduler.CurrentEvent.EventType := etPattern; if Scheduler.CurrentEvent.RecurrenceInfo <> nil then begin Scheduler.CurrentEvent.RecurrenceInfo.Count := 4; Scheduler.CurrentEvent.RecurrenceInfo.Periodicity := 1; Scheduler.CurrentEvent.RecurrenceInfo.DayType := cxdtWeekDay; Scheduler.CurrentEvent.RecurrenceInfo.Recurrence := cxreDaily; end; if Scheduler.CurrentEvent.RecurrenceInfo.GetValidStatus = 0 then Scheduler.CurrentEvent.Post else ShowMessage('Don''t Valid: ' + IntToStr(Scheduler.CurrentEvent.RecurrenceInfo.GetValidStatus)); //Показать диалог редактировнания события нельзя, так как выполнен Post //scheduler.IsShowEventEditorForm := true; .. code-block:: delphi :caption: Пример операции **onDeleteEvent** // в случае, если данная операция присутствует в выборке, удалять событие надо явно: ShowMessage(Scheduler.CurrentEvent.caption); Scheduler.CurrentEvent.Delete; .. code-block:: delphi :caption: Пример операции **OnEditEvent** // доступ к редактируемому событию через scheduler.SelectedEvents[0] if scheduler.SelectedEventCount > 0 then begin scheduler.SelectedEvents[0].Caption := scheduler.SelectedEvents[0].Caption + ' ScriptEditing'; //scheduler.SelectedEvents[0].Post; scheduler.IsShowEventEditorForm := true; end; .. pas:attribute:: CurrentEvent: TcxSchedulerControlEvent Свойство следует использовать в операциях-тригерах срабатывающих на события ``OnEventAdd``, ``OnEditEvent``, ``OnDeleteEvent``. Причем в операции ``OnEventAdd`` это единственный способ получить доступ к вновь создаваемому событию. В других операциях доступ к событию можно получить через свойство ``SelectedEvents[0]``. :rtype: TcxSchedulerControlEvent .. pas:attribute:: IsShowEventEditorForm: Boolean Свойство следует использовать в операциях-тригерах срабатывающих на события ``OnEventAdd``, ``OnEditEvent``. Установка в свойства в **True**, говорит о том, что после выполнения операции, следует показать диалоговое окно редактирования событий. :rtype: Boolean .. pas:attribute:: OptionsView: TcxSchedulerOptionsView Параметры внешнего вида. :rtype: TcxSchedulerOptionsView .. pas:attribute:: SelectionStart: TDateTime Дата начала выделения на рабочей области планировщика. :rtype: TDateTime .. pas:attribute:: SelectedResource: Variant Идентификатор выделенного ресурса. :rtype: Variant .. pas:attribute:: SelectedEventCount: Integer Количество выделенных событий. :rtype: Integer .. pas:attribute:: SelectedEvents: TcxSchedulerControlEvent Список выделенных элементов с доступом по индексу. :rtype: TcxSchedulerControlEvent .. pas:attribute:: SelectionFinish: TDateTime Дата окончания выделения на рабочей области планировщика. :rtype: TDateTime .. pas:attribute:: DateNavigator: TcxSchedulerDateNavigator Параметры календаря. :rtype: TcxSchedulerDateNavigator .. pas:method:: GoToDate(Date: TDateTime): Boolean Переходит на заданную дату в навигаторе дат и планировщике. :param TDateTime Date: Дата, на которую надо перейти. :rtype: Boolean :returns: True При успешном переходе False В случае ошибки при переходе .. pas:method:: SelectDays(Days: array of TDateTime) Выбирает набор дат в навигаторе дат и планировщике. :param Days: Массив дат. :type Days: array of TDateTime .. pas:method:: SelectDays(StartDay, FinishDay: TDateTime) Выбирает диапазон дат в навигаторе дат и планировщике. :param TDateTime StartDay: Начальная дата. :param TDateTime FinishDay: Конечная дата. .. note:: Если в диапазоне меньше 15 дней, в окне планировщика они отображаются в представлении дней. В противном случае они отображатся в представлении недель. TcxSchedulerEventRecurrenceInfo ...................................................................... .. warning:: |not_supported| .. pas:class:: TcxSchedulerEventRecurrenceInfo Класс определяет настройки периодичности события для повторяющихся событий. Доступ к объекту данного класса можно получить через своство ``RecurrenceInfo`` объета класса :pas:class:`TcxSchedulerControlEvent`. Если данные настройки заданы у события, то функция ``IsRecurring`` вернет **True**. .. pas:attribute:: YearPeriodicity: Integer Задает частоту с которой будет выполнятся события в последовательности событий со свойством ``Recurrence = cxreYearly``. :rtype: Integer .. pas:attribute:: Start: TDateTime Задает дату и время начала последовательности повторяющихся событий. :rtype: TDateTime .. pas:attribute:: Recurrence: TcxRecurrence cxreDaily шаблон периодичности задается на посуточной основе cxreWeekly шаблон периодичности задается на недельной основе cxreMonthly шаблон периодичности задается на ежемесячной основе cxreYearly шаблон периодичности задается на годичной основе Свойство связанно со свойством ``Periodicity``. ``Если Periodicity = 3``, ``Recurrence = cxreDaily``, то событие будет выполнятся каждый третий день. :rtype: TcxRecurrence .. pas:attribute:: Periodicity: Integer Задает частоту с которой будет повторятся данное событие с учетом свойства ``Periodicity``. :rtype: Integer .. pas:attribute:: OccurDays: TDays Задает множество дней недели, в которые будут входить последовательность событий. То есть в данные дни недели будут выполняться данные события. :rtype: TDays .. pas:attribute:: Finish: TDateTime Задает дату конца последовательности повторящихся событий. :rtype: TDateTime .. pas:attribute:: Event: TcxSchedulerControlEvent Свойство является ссылкой на событие которому принадлжит данный шаблон периодичности. :rtype: TcxSchedulerControlEvent .. pas:attribute:: DismissDate: TDateTime Задает дату, когда напоминает было выключено в последний раз. :rtype: TDateTime .. pas:attribute:: DayType: TcxDayType cxdtDay задает каждый n-ый день в месяце cxdtEveryDay задает каждый n-ый день в неделе cxdtWeekDay задает все рабочие дни недели cxdtWeekEndDay задает все выходные дни недели cxdtSunday задает повтор в воскресенье cxdtMonday задает повтор в понедельник cxdtTuesday задает повтор во вторник cxdtWednesday задает повтор в среду cxdtThursday задает повтор в четверг cxdtFriday задает повтор в пятницу cxdtSaturday задает повтор в субботу. :rtype: TcxDayType .. pas:attribute:: DayNumber: Integer Свойство задает номер дня в месяце/рабочей недели. Текущее значение ``DayNumber`` зависит от состояния *DayType*. :rtype: Integer .. pas:attribute:: Count: Integer Возвращает количество событий в цепочке периодических событий. Если ``Count = 0``, то конец цепочки событий определяется свойством ``Finish``. Если ``Count < 0``, то дата окончания цепочки событий не определена, и будет выполняться бесконечно. :rtype: Integer .. pas:method:: Validate() Проверяет корректность настройек повторения события. В случае некорректных насстроек возбуждает исключение. .. pas:method:: GetValidStatus(): Integer Возвращает состояние деталей повторения. :rtype: Integer .. pas:method:: GetEndDate(): TDateTime Задает дату конца последовательности повторящихся событий. :rtype: TDateTime TcxRecurrence .............. .. warning:: |not_supported| .. pas:class:: TcxRecurrence Перечисление .. pas:attribute:: cxreYearly .. pas:attribute:: cxreMonthly .. pas:attribute:: cxreWeekly .. pas:attribute:: cxreDaily TcxDayType ............. .. warning:: |not_supported| .. pas:class:: TcxDayType Перечисление .. pas:attribute:: cxdtSaturday .. pas:attribute:: cxdtFriday .. pas:attribute:: cxdtThursday .. pas:attribute:: cxdtWednesday .. pas:attribute:: cxdtTuesday .. pas:attribute:: cxdtMonday .. pas:attribute:: cxdtSunday .. pas:attribute:: cxdtWeekEndDay .. pas:attribute:: cxdtWeekDay .. pas:attribute:: cxdtEveryDay .. pas:attribute:: cxdtDay TDays ...... .. warning:: |not_supported| .. pas:class:: TDays Перечисление .. pas:attribute:: dSunday .. pas:attribute:: dMonday .. pas:attribute:: dTuesday .. pas:attribute:: dWednesday .. pas:attribute:: dThursday .. pas:attribute:: dFriday .. pas:attribute:: dSaturday TcxSchedulerDateNavigator ...................................................................... .. warning:: |not_supported| .. pas:class:: TcxSchedulerDateNavigator TcxSchedulerDateNavigator .. pas:attribute:: SelectedCount: Integer Количество дней, выделенных в календаре. :rtype: Integer .. pas:attribute:: SelectedList: Array Массив выделенных дат. :rtype: Array .. pas:attribute:: Date: TDateTime Дата выделенная на календаре. Если выделены несколько дат (период), свойство должно иметь значение наименьшей даты в периоде. :rtype: TDateTime .. code-block:: delphi :caption: Пример if Assigned(Scheduler) then begin ShowMessage('Выделенная Дата: ' + FloatToStr(Scheduler.dateNavigator.Date)); ShowMessage('Количество выделенных дней: ' + FloatToStr(Scheduler.dateNavigator.SelectedCount)); res := ''; for i := 0 to Scheduler.dateNavigator.SelectedCount - 1 do Res := Res + ' --> ' + DateToStr(Scheduler.dateNavigator.SelectedList[i]) ; ShowMessage('Все выделенные записи: ' + Res); end; TcxRecurrenceValidStatus .................................................................... .. warning:: |not_supported| .. pas:class:: TcxRecurrenceValidStatus Перечисление .. pas:attribute:: rvsValid Все детали повторения корректны. .. pas:attribute:: rvsReplaceOccurrenceDate Дата, указанная как день в месяце для повторения события или праздника, действительна, но некоторые месяцы не имеют столько дней. В этих случаях событие произойдет в последний день месяца. .. pas:attribute:: rvsInvalidPattern Шаблон повторения некорректен. Например, указан некорректный день, так как ни в одном из месяцев нет столько дней. .. pas:attribute:: rvsInvalidDuration Диапазон повторения некорректен. Например, частота повторения короче длительности пользовательского события.