Продолжаем разбор темы “Органайзер в Delphi”. Рассмотрим свойства визуального компонента из библиотеки JVCL – TjvTFDays, а свойств, как оказалось довольно-таки много.
Первая вводная статья на эту тему касалась краткого обзора компонентов для разработчиков, которые доступны сегодня в Сети.
Во-первых, что предоставляет нам компонент.
TjvTFDays используется для отображения списка событий на день, либо пользовательской сетки событий. Для работы с компонентом необходим минимум один невизуальный компонент – TJvTFScheduleManager свойства и события которого мы рассмотрим несколько позднее.
После того как компонент TjvTFDays окажется на форме Вашего приложения он примет следующий вид:
В таком виде мы не можем добавить на сетку новое событие, т.к. не настроены необходимые свойства компонента. Именно этим (настройкой свойств TjvTFDays) мы и займемся.
Начнем с самых простых свойств компонента.
Свойство Color – задает цвет прорисовки области, в которой будут в дальнейшем располагаться все запланированные события.
Демонстрация свойства представлена на рисунке ниже. Цвет выбран – красный.
Свойство TJvTFDaysCols – коллекция колонок сетки событий. Каждый элемент коллекции содержит следующие свойства:
GroupTitle: string – заголовок группы (игнорируется если заданы другие свойства элемента)
SchedDate: TDate – дата расписания
SchedName: string – название расписания
Width: integer – ширина колонки (если задана 1 колонка, то ширина автоматически становится максимально возможной)
На рисунке ниже представлен вид компонента с одной и двумя колонками:
Свойство ColTitleStyle – задаёт стиль отображения заголовков колонок. Может принимать одно из следующих значений (внешний вд загововков в зависимости от значения свойства смотрите на рисунках:
ctsSingleClip – простое отсечение текста по обоим краям
ctsSingleEllipsis – замена “лишнего” текста справа на “…”
ctsMultiClip – перенос части текста на новую строку и отсечение “лишнего” справа
ctsMultiEllipsis – перенос части теста на новую строку и замена “лишнего” на “…”
ctsHide – скрытие всего текста колонки в случае, если он не умещается в 1 строку
ctsRotated – аналогично свойству ctsSingleClip, в случае, если не задано свойство TitleRotate (см. ниже) иначе разворачивает заголовки на заданный угол
Свойство DateFormat – задает формат отображения даты. Значение по умолчанию ddddd. Может принимать следующие значения:
dd – отображение только дня недели, например, 20
ddd – отображение сокращенного названия дня недели, например, Чт
dddd – отображение полного названия дня недели, например, четверг
ddddd – отображение даты в формате dd.mm.yyyy, например, 12.01.2010
dddddd – отображение даты в формате dd MM yyyy, например 12 Январь 2010 г.
Свойство DefColWidth – ширина колонки по умолчанию. Ширина колонок автоматически изменяется по мере добавления/удаления колонок.
Свойство DitheredBackground – указывает будет ли фон компонента сглаживаться или нет. На рисунке ниже представлены два компонента: у левого свойство содержит True, у правого – False.
Свойство DotNetHighlighting – указывает будет ли подсвечиваться рамка компонента. На рисунке ниже представлен компонент со свойством равным True (обратите внимание на прорисовку рамки компонента):
Свойства FancyRowHdrAttr –набор свойств, отвечающих за прорисовку боковых строк списка (со временем). Можно настроить следующие свойства:
Color: TColor – задний фон
Hr2400: boolean – если True, то время будет отображаться в 24-х часовом формате.
MajorFont: TFont – настройки шрифта для отображения часов.
MinorFont: TFont – настройки шрифта для отображения минут.
OnlyShow00Minutes: boolean – если True, то в минутах отображаются только 00, если False, то минуты отображаются в зависимости от настроенной градуировки (по умолчанию 00 и 30 минут)
TickColor: TColor – цвет разделителей времени.
На рисунке ниже представлен компонент с измененными свойствами FancyRowHdrAttr:
Свойство Granularity – градуировка графика. По умолчанию равно 30 минутам. На рисунке ниже представлена градуировка по 15 минут
Свойство GridEndTime – время на котором заканчивается прорисовка сетки. Задается в формате hh:mm:ss. На рисунке ниже представлена сетка, заканчивающаяся в 02:00:00
Свойство GridLineColor – цвет отрисовки линий сетки.
Свойство GridStartTime – по аналогии со свойством GridEndTime, задает время с которого начинается сетка, также задается в формате hh:mm:ss
Свойство Grouping – определяет способ группировки столбцов. Может принимать одно из следующих значений:
grNone – без группировки
grDate – группировка по дате. Здесь важно отметить, что колонки в случае группировки по дате должны следовать в коллекции по порядку, т.е. как на рисунке – сначала две колонки на 20-е число, затем на 19 или наоборот. Если колонки расположены не по порядку – группировка не происходит.
grResource – группировка по заголовку (первые две колонки имеют одно и тоже название)
grCustom – смешанная группировка
Свойства HdrAttr – группа свойств заголовка компонента. В этой группе определяются свойства для заголовков не выделенных столбцов. Значение свойств не распространяются на заголовки групп.
Для заголовка можно определить следующие свойства:
Color:TColor — цвет заголовка
Font:TFont – настройки шрифта
Frame3D: boolean – определяет будет ли рамка заголовков рельефной
FrameColor: TColor – цвет рамки
ParentColor: boolean – определяет будет ли использоваться настройка шрифта родительского компонента
TitleRotation: integer – поворот заголовка. Используется, если свойство ColTitleStyle имеет значение ctsRotated.
Демонстрация вышеперечисленных свойств представлена на рисунке ниже.
Как видно по рисунку – первые два столбца неактивны, следовательно на них распространяются свойства из HdrAttr, также видно, что заголовок группы остается неизменным. Для настройки активных столбцов сетки следует использовать свойство SelHdrAttr.
Свойства MinColWidth и MinRowHeight – определяют минимальную ширину и высоту столбца и строки сетки.
Свойства PrimeTime – группа свойств для настройки рабочего времени (прайм-тайма). Определяются следующие свойства:
Color: TColor – цвет сетки для прайм-тайма
EndTime: TTime – время окончания прайм-тайма (по умолчанию 17:00:00)
StartTime: TTime – время начала прайм-тайма (по умолчанию 08:00:00)
Вид сетки с настройками прайм-тайма по умолчанию представлен на рисунке ниже:
Свойство RowHdrType – задает внешний вид шкалы времени. Может принимать следующие значения:
rhFancy – “модный” вид. Установка по-умолчанию
rgGrid – табличная форма (см. рисунок)
Свойства RowHdrWidth, RowHdrHeight – определяет ширину и высоту столбца времени.
Свойство ScheduleManager – определяет менеджер расписания по которому будет выстраиваться сетка.
Свойство SelCellAttr – определяет внешний вид выделенной ячейки в сетке расписания. Используются следующие свойства:
Color: TColor – цвет выделенной ячейки
FrameWidth: integer – толщина рамки выделения
Style – стиль выделения. Может принимать следующие значения:
scsSolid – сплошная рамка (по умолчанию)
scsCombo – комбинированное выделение (scsSolid+scsFrame)
scsFrame – выделение рамкой
Свойства SelFancyRowHdrAttr – аналогично свойствам из FancyRowHdrAttr (см. выше), но применяются к заголовкам выделенной строки
Свойства GroupHdr и SelGroupHdr – свойства для отрисовки заголовка группы в невыбранном и выбранном состояниях соответственно. Определяются следующие свойства:
Color: TColor – цвет заголовка
Font: TFont – настройки шрифта заголовка
Frame3D: boolean – определяет будет ли рамка заголовка рельефной (True) или нет (False)
FrameColor: TColor – цвет рамки
ParentColor: boolean – определяет будет ли использоваться настройка шрифта родительского компонента
TitleRotation: integer – поворот заголовка
Вид заголовка группы с настроенными свойствами представлен на рисунке:
Свойство TimeBlocks – коллекция блоков времени. Смысл этих блоков примерно тот же, что и у колонок, о за одним исключением – если определяется блок времени, то остальные строки, идущие за ним в сетке становятся неактивными. Например, на рисунке ниже компонент TjvTFDays содержит три временных блока – все строки ниже блоков не выделяются кликом мышки:
Для каждого блока можно определить следующие свойства:
AllowAppts: boolean – разрешить размещение новых событий в рамках блока.
Length: integer – количество строк сетки, охватываемых одним блоком (по умолчанию 1)
Name: string – имя блока
Title: string – заголовок блока
Для настройки внешнего вида блоков времени необходимо использовать группу свойств TimeBlockProps.
Свойство TimeFormat – определяет отображение времени. Может принимать следующие значения:
t – отображение времени в формате hh:mm, например, 12:10
tt – отображение времени с секундами в формате hh:mm:ss, например 12:10:00
Свойство Weekend – определяет дни недели, которые будут считаться выходными (по умолчанию это суббота и воскресенье)
Свойство WeekendColor – определяет цвет всей сетки, когда дата соответствует выходному дню.
Вот, пожалуй, тот набор свойств компонента TjvTFDays, которые мы можем использовать без предварительного разбора методов и событий компонента. Как можно заметить, в этой статье я не рассказал о свойствах, которые определяют вид событий на сетке. К этим свойствам мы ещё вернемся, когда будем разбирать пример использования компонента. Вообще, когда речь заходит о свойствах, определяющих внешний вид компонента (как в этой статье) то у меня в последнее время возникает мысль о том, что не помешала бы небольшая видеосъемка того как работают те или иные свойства в запущенном приложении, но, как это часто бывает — лень снимать :) Может когда и найду подходящую программку для записи видео и чего-нибудь наснимаю.

Сердечное приветствие всем. У меня проблема, если у кого-то есть идея, что делать в следующем случае. Компонент JvTFDays библиотеки JEDI (JVCL). он ведет себя по-разному, когда компилируется в Delphi 7 и когда он компилируется в Delphi XE Мне нужно, чтобы он выглядел так, как он ведет себя с Delphi 7, я не могу найти параметр.
Delhi7:
Приложение 2019-03-23 at 00-20-06.png 117.26KB 0 скачиваний
Мне нужны встречи, чтобы быть полным, а не вырезать.
Спасибо за вашу помощь.
Сердечное приветствие всем. У меня проблема, если у кого-то есть идея, что делать в следующем случае. Компонент JvTFDays библиотеки JEDI (JVCL). он ведет себя по-разному, когда компилируется в Delphi 7 и когда он компилируется в Delphi XE Мне нужно, чтобы он выглядел так, как он ведет себя с Delphi 7, я не могу найти параметр.
Мне нужны встречи, чтобы быть полным, а не вырезать.
Спасибо за вашу помощь.