1.8.5. Gantt

Описание классов для работы с диаграммой Гантта.

1.8.5.1. TbtkGanttItem

class TbtkGanttItem

Визуальный Элемент диаграммы Гантта.

ID: Integer

Идентификатор. Должен быть уникальным.

Return type:Integer
StartDate: TDateTime

Начало интервала элемента.

Return type:TDateTime
StopDate: TDateTime

Конец интервала элемента.

Return type:TDateTime
Style: TbtkGanttItemStyle

Стиль.

Return type:TbtkGanttItemStyle
Color: TColor

Цвет.

Return type:TColor
FillStyle: TBrushStyle

Шаблон заливки.

Return type:TBrushStyle
Caption: String

Отображаемое наименование.

Return type:String
BorderStyle: TPenStyle

Стиль пера границ.

Return type:TPenStyle
BorderColor: TColor

Цвет границ.

Return type:TColor
CanMove: Boolean

Возможность перемещения.

Return type:Boolean
CanResize: Boolean

Возможность изменения размера.

Return type:Boolean
StartDateLimit: TDateTime

Положение левой границы пунктирного контура.

Return type:TDateTime
StopDateLimit: TDateTime

Положение правой границы пунктирного контура.

Return type:TDateTime
StartDateConstraint: TDateTime

Минимальное положение левой границы (при изменении размера или перемещении).

Return type:TDateTime
StopDateConstraint: TDateTime

Максимальное положение правой границы (при изменении размера или перемещении).

Return type:TDateTime
Selected: Boolean

Выделенность.

Return type:Boolean
Focused: Boolean

Сфокусированность.

Return type:Boolean

1.8.5.2. TbtkGanttItemStyle

class TbtkGanttItemStyle

Перечисление. Стиль отображения элемента диаграммы Гантта.

gisSquare

Прямоугольник с границами и заливкой заданного цвета.

gisPipe

Прямоугольник с заливкой заданного цвета с градиентом.

gisLine

Линия.

gisLineWEnd

Линия, ограниченная с обоих концов вертикальными линиями.

gisSpan

Диапазон (линия со стрелками на концах, направленными вниз).

gisCircle

Круг. Отображается на StartDate.

gisRectangle

Квадрат. Отображается на StartDate.

gisDiamond

Ромб. Отображается на StartDate.

1.8.5.4. TbtkGanttLinkDirection

class TbtkGanttLinkDirection

Перечисление. Способ задания связи между элементами.

Первая часть константы указывает, от какой части первого элемента исходит стрелка (из начала или из конца).

Вторая часть константы указывает то же самое для второго элемента.

asBeginBegin

Соединение начала первого элемента с началом второго.

asBeginEnd

Соединение начала первого элемента с концом второго.

asEndBegin

Соединение конца первого элемента с началом второго.

asEndEnd

Соединение конца первого элемента с концом второго.

1.8.5.5. TbtkVertLineDateDef

class TbtkVertLineDateDef

Вертикальная линия диаграммы Гантта.

Date: String

Дата.

Return type:String
Color: TColor

Цвет.

Return type:TColor
Width: Integer

Толщина в пикселях.

Return type:Integer
Style: TPenStyle

Стиль пера.

Return type:TPenStyle

1.8.5.6. TbtkGanttRegionDef

class TbtkGanttRegionDef

Регион диаграммы Гантта.

FromDate: String

Дата начала.

Return type:String
ToDate: String

Дата конца.

Return type:String
Color: TColor

Цвет.

Return type:TColor
Style: TBrushStyle

Шаблон заливки.

Return type:TBrushStyle

1.8.5.7. TbtkGantt

class TbtkGantt

Скриптовый класс для работы с фреймом диаграммы Гантта TbtkLookUpGanttTreeTabFrame.

Настройка отображения связей между элементами.

Return type:Boolean
Returns:
True
Отображаются только те связи, которые относятся к выделенным записям.
False
Отображаются все связи между элементами

1.8.5.7.1. Интервалы

UpdateScale()

Обновить диаграмму с учетом установленных StartDate и StopDate.

Метод необходимо использовать после изменения значений данных свойств, чтобы они стали заметны визуально.

Пример использования
<pascal>
  Selection.Gantt.StartDate := StrToDate('5.7.2006');
  Selection.Gantt.StopDate := StrToDate('7.7.2006');
  Selection.Gantt.UpdateScale;
</pascal>
StartDate: TDateTime

Дата начала отображаемого интервала диаграммы.

При установке даты меньше, чем MinStartDate, MinStartDate также уменьшается.

Return type:TDateTime

See also

UpdateScale()

StopDate: TDateTime

Дата окончания отображаемого интервала диаграммы.

При установке даты больше, чем MaxStopDate, MaxStopDate также увеличивается.

Return type:TDateTime

See also

UpdateScale()

MinStartDate: TDateTime

Дата начала фактического интервала диаграммы.

При установке даты больше, чем StartDate, StartDate также увеличивается.

Return type:TDateTime

See also

UpdateScale()

New in version Global: 5.3.3.3750

MaxStopDate: TDateTime

Дата окончания фактического интервала диаграммы.

При установке даты меньше, чем StopDate, StopDate также уменьшается.

Return type:TDateTime

See also

UpdateScale()

New in version Global: 5.3.3.3750

CalcDateInterval()

Подобрать отображаемый интервал таким образом, чтобы все элементы отображались на экране.

CalcDateIntervalByActiveScale()

Подобрать отображаемый интервал (масштаб) по активной шкале.

Алгоритм применения масштаба к шкале:
  1. Задать StopDate (StartDate не трогаем)
  2. Если StopDate упёрся в MaxStopDate, двигаем StartDate

1.8.5.7.2. Вертикальные линии

VLines: TbtkVertLineDateDef

Коллекция вертикальных линий.

Return type:TbtkVertLineDateDef
VLinesCount: Integer

Число вертикальных линий.

Return type:Integer
AddVLine(Date: TDateTime; Color: Integer; Style: TPenStyle; Width: Integer): Integer

Добавить вертикальную линию.

Возвращает индекс добавленной линии в коллекции.

Parameters:
  • Date (TDateTime) – временная метка;
  • Color (TColor) – цвет;
  • Style (TPenStyle) – стиль пера;
  • Width (Integer) – толщина в пикселях.
Return type:

Integer

Пример использования
<pascal>
  Selection.ExecOpScript('#AfterOpen');
  i := Selection.Gantt.AddVLine('11.04.2009', $0000FF, psDot, 1);
</pascal>
FindVLineByDate(Date: TDateTime): integer

Найти вертикальную линию по дате. Если линия найдена, возвращается её индекс в коллекции. Если не найдена, возвращается -1.

Parameters:Date (TDateTime) – дата для поиска.
Return type:Integer
DeleteVLine(Index: Integer)

Удалить вертикальную линию по индексу.

Parameters:Index (Integer) – индекс.
Пример использования
<pascal>
  Index := Gantt.FindVLineByDate(StrToDateTime('11.04.2009'));
  Gantt.DeleteVLine(Index);
</pascal>
ClearVLines()

Очистить коллекцию вертикальных линий.

1.8.5.7.3. Регионы

Пример работы с регионами
<pascal>
   i := Gantt.AddRegion('11.04.2009 00:30', '13.04.2009 12:38', $8C1EB2, bsBDiagonal);
   Gantt.DeleteRegion(i);
   i := Gantt.AddRegion('11.04.2009 00:30', '13.04.2009 19:38', $8CAE02, bsBDiagonal);
   Gantt.ClearRegions;
   i := Gantt.AddRegion('11.04.2009 00:30', '13.04.2009 19:38', $0000FF, bsBDiagonal);
   Gantt.Region[Gantt.RegionCount - 1].FromDate := '13.04.2009 00:30';
   Gantt.Region[Gantt.RegionCount - 1].ToDate := '17.04.2009 09:30';
</pascal>
Region: TbtkGanttRegionDef

Коллекция временных регионов.

Return type:TbtkGanttRegionDef
RegionCount: Integer

Количество регионов в коллекции.

Return type:Integer
AddRegion(FromDate, ToDate: String; Color: Integer; Style: TBrushStyle): Integer

Добавить регион на график Гантта.

Возвращает индекс региона в коллекции.

Parameters:
  • FromDate (String) – дата начала;
  • ToDate (String) – дата конца;
  • Color (TColor) – цвет;
  • Style (TBrushStyle) – шаблон заливки.
Return type:

Integer

DeleteRegion(Index: Integer)

Удалить регион из коллекции регионов по индексу.

Parameters:Index (Integer) – индекс региона в коллекции.
ClearRegion()

Очистить коллекцию регионов.

1.8.5.7.4. Выделенная дата

Выделение даты осуществляется двойным щелчком.

ShowSelectedDate: Boolean

Отображение линии для выделенной даты.

Значение по умолчанию: False.

  • True — отображать;
  • False — не отображать.
Return type:Boolean
SelectedDatePenStyle: TPenStyle

Стиль пера линии выделенной даты.

Значение по умолчанию: psDashDot.

Return type:TPenStyle
SelectedDateColor: TColor

Цвет линии выделенной даты.

Значение по умолчанию: clLime (зелёный).

Return type:TColor
SelectedDateTime: TDateTime

Выделенная дата.

Только для чтения.

Return type:TDateTime

1.8.5.7.5. Текущая дата

Текущая дата соответствует значению системного времени.

ShowCurrentDate: Boolean

Отображение линии для текущей даты.

Значение по умолчанию: False.

  • True — отображать;
  • False — не отображать.
Return type:Boolean
CurrentDatePenStyle: TPenStyle

Стиль пера линии текущей даты.

Return type:TPenStyle
CurrentDateColor: TColor

Цвет линии текущей даты.

Return type:TColor

1.8.5.7.6. Раскраска дней

1.8.5.7.6.1. Выходные

RestDays: Set of integer

Множество порядковых номеров дней недели от 1 до 7, которые являются выходными.

Значение по умолчанию: [].

Return type:Set_of_integer
Пример использования
<pascal>
  Selection.Gantt.RestDays := [6, 7]; // Выходные дни — суббота и воскресенье
</pascal>
HighLightRestdays: Boolean

Выделять выходные дни цветом.

Значение по умолчанию: True.

  • True — выделять;
  • False — не выделять.
Return type:Boolean

1.8.5.7.6.2. Рабочие

Рабочие дни перекрывают выходные дни.

WorkDays: Array

Массив рабочих дней в виде конкретных дат.

Return type:Array
Пример использования
<pascal>
  Selection.Gantt.WorkDays := [StrToDate('22.04.2009'), StrToDate('21.04.2009')];
</pascal>

1.8.5.7.6.3. Праздничные

Праздничные дни перекрывают выходные и рабочие дни.

HoliDays: Array

Массив праздничных дней в виде конкретных дат.

Return type:Array
Пример использования
<pascal>
  Selection.Gantt.HoliDays := [StrToDate('24.04.2009'), StrToDate('25.04.2009')];
</pascal>
HighLightHolidays: Boolean

Выделять цветом праздничные дни.

Return type:Boolean

1.8.5.7.7. Выделенные элементы

SelectedItems: TbtkGanttItem

Коллекция выделенных элементов диаграммы. Выделение нескольких элементов проиcходит с помощью левой кнопки мыши при зажатой клавише Ctrl.

Return type:TbtkGanttItem
Count: Integer

Количество выделенных элементов в коллекции SelectedItems.

Return type:Integer
FocusedItem: TbtkGanttItem

Ссылка на последний сфокусированный элемент. Если элемента нет, возвращает nil.

Return type:TbtkGanttItem

1.8.5.7.8. Временная шкала

ScalesSchema: string

Схема шкал, используемая таймлайном.

Присвоение подразумевает, что из схемы будет также взято количество уровней и локаль.

Attention

На данный момент чтение и запись свойства не биективны.

New in version Global: 5.7

Timeline: TbtkTimeline

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

Return type:TbtkTimeline

New in version Global: 5.7

ScaleInfoToYaml(Info: TbtkScaleScriptObject): string

Преобразовать схему шкал в текст в формате Yaml.

Parameters:Info (TbtkScaleScriptObject) – схема шкал.

New in version Global: 5.7

YamlToScaleInfo(Yaml: string): TbtkScaleScriptObject

Преобразовать текст в формате Yaml в схему шкал.

Parameters:Yaml (String) – текст в формате Yaml, содержащий схему.

New in version Global: 5.7

1.8.5.7.9. Вызов диалогов

SelectScaleSchema(out ScaleSchema: TbtkScaleScriptObject): boolean

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

Parameters:ScaleSchema (TbtkScaleScriptObject) – out параметр, в который возвращается шкала
Return type:Boolean
Returns:
True
Если диалог завершился успешно (была нажата кнопка OK)
False
В случае отмены диалога
Пример
<PASCAL>
var
  scale: TbtkScaleScriptObject;
begin
  res := Selection.Gantt.SelectScaleSchema(scale);

  if Res then
    Selection.Gantt.TimeLine.ActiveScale := scale;
end;
</PASCAL>
SelectScaleSchema(out ScaleSchema: string): boolean

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

Parameters:ScaleSchema (string) – out параметр, в который возвращается шкала в формате YAML.
Return type:Boolean
Returns:
True
Если диалог завершился успешно (была нажата кнопка OK)
False
В случае отмены диалога
Пример
<PASCAL>
begin
  scale := '';

  res := Selection.Gantt.SelectScaleSchema(scale);

  if Res then
    Selection.Gantt.TimeLine.ActiveScaleAsYaml := scale;
end;
</PASCAL>
SelectScaleSchema(out ScaleSchema: string; ScalesSchema: string): boolean

Вывести диалог настройки шкалы, позволяющий настроить количество уровней шкалы, единицы измерения времени, интервалы и форматы каждого уровня из схемы форматов, переданной на вход в качестве параметра ScalesSchema.

Parameters:
Return type:

Boolean

Returns:

True

Если диалог завершился успешно (была нажата кнопка OK)

False

В случае отмены диалога

Пример
<PASCAL>
uses Classes
var
  schema: TStringList;
begin
  scale := '';
  schema := TStringList.Create;

  try
    schema.LoadFromFile({имя файла со схемой});
    res := Selection.Gantt.SelectScaleSchema(scale, schema.Text);

    if Res then
      Selection.Gantt.TimeLine.ActiveScaleAsYAML := ;
  finally
    schema.free;
  end;
end;
</PASCAL>
SelectScaleSchema(out ScaleSchema: TbtkScaleScriptObject; ScalesSchema: string): boolean

Вывести диалог настройки шкалы, позволяющий настроить количество уровней шкалы, единицы измерения времени, интервалы и форматы каждого уровня из схемы форматов, переданной на вход в качестве параметра ScalesSchema.

Parameters:
Return type:

Boolean

Returns:

True

Если диалог завершился успешно (была нажата кнопка OK)

False

В случае отмены диалога

Пример
<PASCAL>
uses Classes
var
  schema: TStringList;
  scale: TbtkScaleScriptObject;
begin
  schema := TStringList.Create;

  try
    schema.LoadFromFile({имя файла со схемой});
    res := Selection.Gantt.SelectScaleSchema(scale, schema.Text);

    if Res then
      Selection.Gantt.TimeLine.ActiveScale := scale;
  finally
    schema.free;
  end;
end;
</PASCAL>
SelectScaleZoom(out Zoom: TbtkTimeUnitInfoScriptObject): boolean

Вывести диалог задания визуального интервала.

Parameters:Zoom (TbtkTimeUnitInfoScriptObject) – out параметр, в который возвращается выбранный описатель единицы измерения времени.
Return type:Boolean
Returns:
True
Если диалог завершился успешно (была нажата кнопка OK)
False
В случае отмены диалога
Пример
<PASCAL>
var
  z: TbtkTimeunitInfoScriptObject;
begin
  res := Selection.Gantt.SelectScaleZoom(z);

  if res then
    Selection.Gantt.TimeLine.SetZoom(z)
end;
</PASCAL>
SelectScaleZoom(out Zoom: TbtkTimeUnitInfoScriptObject; DialogElements: array of array of Variant): boolean

Вывести диалог задания визуального интервала.

Parameters:
  • Zoom (TbtkTimeUnitInfoScriptObject) – out параметр, в который возвращается выбранный описатель единицы измерения времени.
  • DialogElements (array of array of Variant) – массив элементов диалога. Представлен в виде массива массивов по 3 элемента, в которых хранятся отображаемое имя элемента, Единица измерения времени и временной интервал соответственно.
Return type:

Boolean

Returns:

True

Если диалог завершился успешно (была нажата кнопка OK)

False

В случае отмены диалога

Пример
<PASCAL>
var
  zoom: TbtkTimeunitInfoScriptObject;
begin
  dialogItems := [['1 day', tuDay, 1], ['1 week', tuWeek, 1], ['1 month', tuMonth, 1], ['1 halfYear', tuHalfYear, 1]];

  res := Selection.Gantt.SelectScaleZoom(zoom, dialogItems);

  if res then
    Selection.Gantt.TimeLine.SetZoom(zoom)
end;
</PASCAL>

1.8.5.7.10. Отмена операций

AcceptChanges: Boolean

Отменить выполняемое действие.

Анализируется на выходе из операций OnItemChanged, OnLinkCreate. Если False, действие отменяется.

Значение по умолчанию: True.

Возможные значения:

  • False — отменить выполнение действия;
  • True — не отменять.
Return type:Boolean

1.8.5.7.11. Отчёт FastReport

CreateReportEx(ReportName: String; ReportVersionDate: TDateTime; Action: TReportViewMode; ShowWizard: Boolean; OpSelectionName: String; StyleFlag: TFormCreationFlags; ParamNames: Array; ParamValues: Array)

Создать отчет FastReport4 на основе шаблона “Diagram Report(*.dgr)”.

Parameters:
  • ReportName (String) – системное имя отчёта. Отчет должен быть формата “Diagram Report(*.dgr)”.
  • ReportVersionDate (TDateTime) – дата, по которой будет найдена актуальная версия отчёта (по умолчанию системная дата).
  • Action (TReportViewMode) – действие после создания отчёта.
  • ShowWizard (Boolean) – отображение мастера настройки отчётов (если указана главная выборка мастера).
  • OpSelectionName (String) – системное имя выборки, операции которой будут отображаться в главном меню окна при модальном просмотре построенного отчёта (по умолчанию подставляется выборка со стандартным набором команд — “Save as” и “Print”).
  • StyleFlag (TFormCreationFlags) – модальность окна просмотра отчёта. Значение fcfMDI работает только для отчетов на основе FastReport 4й версии.
  • ParamNames (Array) –

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

    Обязательные параметры:

    • StartDate, StopDate — диапазон печати диаграммы Гантта, с StartDate по StopDate.

    Дополнительные параметры:

    • ReadOnlyPreview со значением 1 запрещает редактирование построенного отчета из режима предпросмотра.
  • ParamValues (Array) – массив значений параметров отчета, соответствующих AParamNames.

1.8.6. Timeline

1.8.6.1. TbtkTimeUnit

class TbtkTimeUnit

Перечисление. Единица измерения времени.

tuMilliSecond

Миллисекунда.

tuSecond

Секунда.

tuMinute

Минута.

tuHour

Час.

tuDay

День.

tuWeek

Неделя.

tuDecade

Декада.

tuMonth

Месяц.

tuQuarter

Квартал.

tuHalfYear

Полугодие.

tuYear

Год.

tuEra

Эра.

1.8.6.2. TbtkTimeUnitInfoScriptObject

class TbtkTimeUnitInfoScriptObject

Описатель единицы измерения времени.

TimeUnit: TbtkTimeUnit

Единица измерения времени.

Interval: Cardinal

Интервал, с которым выводятся отметки.

1.8.6.3. TbtkScaleLevel

class TbtkScaleLevel

Уровень шкалы.

slBottom

Нижняя.

slMiddle

Средняя.

slTop

Верхняя.

1.8.6.4. TbtkScaleLevelCount

class TbtkScaleLevelCount

Перечисление. Набор видимых уровней шкалы.

slcMiddle

Средний.

slcMiddleBottom

Средний, нижний.

slcMiddleBottomTop

Средний, нижний, верхний.

1.8.6.5. TbtkScaleLevelInfoScriptObject

class TbtkScaleLevelInfoScriptObject

Информация об уровне шкалы.

Level: TbtkScaleLevel

Уровень шкалы.

TimeUnit: TbtkTimeUnit

Единица измерения времени.

Interval: Cardinal

Интервал, с которым выводятся отметки.

Format: string

Формат подписей отметок шкалы.

1.8.6.6. TbtkScaleScriptObject

class TbtkScaleScriptObject

Шкала диаграммы Гантта

Levels[ALevel: TbtkScaleLevel]: TbtkScaleLevelInfoScriptObject

Возвращает указанный уровень шкалы

Parameters:Level (TbtkScaleLevel) – Уровень шкалы
Return type:TbtkScaleLevelInfoScriptObject
BeginUpdate()

Если текущая шкала получена из таймлайна, метод запрещает применение настроек шкалы к таймлайну.

Attention

После выполнения изменений шкалы обязательно вызывайте метод EndUpdate();

Пример
<PASCAL>
  timeline := Selection.Gantt.TimeLine;

  timeline.ActiveScale.BeginUpdate;

  timeline.ActiveScale.Levels[slMiddle].TimeUnit := tuYear;
  timeline.ActiveScale.Levels[slMiddle].Format := 'yyyy "year"';
  timeLine.ActiveScale.Levels[slMiddle].Interval := 5;

  timeline.ActiveScale.EndUpdate;
</PASCAL>
EndUpdate()

Разрешает применение настроек шкалы к таймлайну. Применяет к таймлайну все изменеиня шкалы, сделанные с момента вызова BeginUpdate().

1.8.6.7. TbtkTimeline

class TbtkTimeline

Таймлайн

LevelsCount: TbtkScaleLevelCount

Набор видимых уровней шкалы.

Return type:TbtkScaleLevelCount
ActiveScale: TbtkScaleScriptObject

Текущая Шкала диаграммы Гантта

Return type:TbtkScaleScriptObject
ActiveScaleAsYAML: string

Текущая Шкала диаграммы Гантта в формате Yaml

Return type:string

See also

Свойство дублирует поведение параметра Timeline.Scale.

SetZoom(Zoom: TbtkTimeUnitInfoScriptObject)

Устанавливает отображаемый интервал диаграмы Гантта.

Parameters:Zoom (TbtkTimeUnitInfoScriptObject) – Временной интервал

Логика установки отображаемого интервала такая же, как и у метода CalcDateIntervalByActiveScale():

  1. Задать StopDate (StartDate не трогаем)
  2. Если StopDate уперся в MaxStopDate, двигаем StartDate
LevelsByCount(LevelsCount: TbtkScaleLevelCount): array of TbtkScaleLevel

Возвращает массив уровней, которые соответствуют данному количеству уровней

Parameters:LevelsCount (TbtkScaleLevelCount) – Количество уровней
Return type:array of TbtkScaleLevel