News in version
TreeGrid Gantt chart SpreadSheet Examples Documentation Download Development Licensing Prices References Contacts Buy Try it free
Documentation
Search in documentation
TreeGrid versions compatibility

Changes log (txt file) Using custom CSS from 13.3 to 14.0 Upgrading from 9.3 to 10.0 Upgrading from 5.9 to 6.0

Using in JavaScript frameworks

Angular Ember Express React Svelte Vue Other frameworks NodeJS server SalesForce LWC

Creating grid

Simple examples Basic information Creating grid Deleting grid Reloading grid Rendering grid Accessing grid by API

Data & communication
Data communication with server

Communication types AJAX communication AJAX SOAP envelope Submit communication Directly included data Data from JavaScript Cross domain / local load by JSONP Sessions (AJAX) Server response (AJAX) Synchronous communication (AJAX) Caching (AJAX) API (AJAX)

Download data

Settings for data download Layout XML structure Data XML structure

Upload data

Settings for data upload API for upload XML structure sent to server

Changing data from server

XML structure of download changes XML structure of request for a cell Synchronizing data with server

Input / output data formats

Complete list of tags Internal XML format Short XML format Extra short XML format DTD XML format JSON format

Cells
Cell basics

Cell type Cell format Dynamic format Dynamic type Cell value Reading / writing attributes by API Cell HTML Cell default Range or more values in one cell Cell with link URL Cell hint Cell tooltip / title Cell popup menu

Cell editing and changing values

Cell editability Dynamic editing Locking Defaults list Suggest list (auto complete) Tags input Changing cell value Mass cell change Clearing cells Editing cells Controlling <input> tag by JavaScript Input validation and restrictions Side checkbox Cell selecting

Calculations - cell formulas

Basics Formulas Mathematical functions Aggregate functions Special functions for actions Custom functions

Calculations - editable cell formulas

Basics Suggest list (auto complete) Defined names Actions for choosing cells Conditional functions Lookup functions Cell reference functions Logical functions Informational functions Mathematical functions Trigonometry functions Rounding numbers Number conversions String functions Date functions Summary functions Custom functions

Cell side buttons

Introduction Right side Button Left side Icon

Cell spanning

Column span Row span Dynamic spanning

Cell style and color

Basic grid style Sizing and scaling - responsive design Dynamic cell style attributes Cell CSS class Cell background color Dynamic cell border Cell HTML style Row color alteration Cell mouse cursor

Editable cell images

Insert image Edit image

Cell types
Automatic type - Auto String - Text, Lines & Pass
Number - Int & Float

Format Localization

Date and time - Date

Format Calendar component Dates dialog Localization

List & combo - Enum & Radio

Introduction Definition Related lists Enum specific Radio specific

Checkbox - Bool
Action button - Button

Introduction Basic clickable button Switch button Radio / tab button Menu button Combo switch button Combo radio / tab button Special Space rows with buttons

Panel with more buttons - Panel

Definition Standard fast panel Custom panel

HTML and special types

Html type EHtml type (editable) Icon type Abs type List type Editable Link type Editable Img type DropCols type Upload File type

Columns

Column basics Column index Column visibility Column visibility menu Column selecting Column tree Auto column tree Column position and moving Column adding and copying Column deleting Column width Column API

Rows
Row basics

Rows by functionality Rows by position Row name Row id Row index

Default rows

Description Example of default rows Example of changing default row Attributes

Row tree

Tree attributes Actions & API for expand / collapse

Row identification

Setting row id attribute Row id attribute in tree Row id created from cell values API for row ids

Row visibility
Row adding and copying

Five ways of adding rows to grid Adding and copying restrictions Adding new empty rows Copying existing rows

Row deleting Row moving and dragging Row selecting Row height Row API Space rows
Features
Sorting rows

Sort settings Controlling sort position Comparing strings Sorting actions Sorting API

Grouping rows to tree

Group settings Creating groups Comparing strings Created group rows <D Group='1'/> User interface to choose grouping Grouping actions and API

Filtering rows

Filter settings Comparing strings User interface to choose filter Filter actions and API

Searching in rows and cells

Search settings User interface for search Search actions and API

Printing grid

Print settings Choosing items to print Page size Print API

Print / export to PDF

Introduction Client side settings Printing options Client side API Server side API Data sent from client to server

Export to Excel or CSV

Introduction and export types Basic settings Styling export XLSX export Gantt export CSV export Old XLS / XHTML export Export API Communication with server Client export Server export

Import from Excel

Basic settings Sheets manipulation

Copy & paste rows via clipboard

Copy & paste permissions Copying to clipboard Pasting from clipboard

Master - detail grids

Introduction External master - detail grids Nested master - detail grids Synchronizing grids Other attributes for master - detail

Pivot tables

Pivot attributes & API Pivot formulas

External objects (custom JavaScript objects) Undo & Redo
Gantt and bar chart
Gantt objects

Gantt objects list Display settings Edit settings

Main bar

Definition of main bar and plans Main bar as Task Edit settings Main bar content and side html Tip on mouse hover Vertical position and height Style specific attributes API to manipulate Main bars Actions Side text (deprecated) Real Flow (deprecated)

Run bar

GanttRun Definition Extended definition Run bar as Task Edit settings Save format Selecting Run boxes Run box content and side html Tip on mouse hover Box identification Vertical position and height Style specific attributes Overlaid (Error) boxes Containers for more boxes Dragging - moving and resizing API to manipulate Run boxes Actions Run special formulas

Summary task

Main for Main Main for Run Editable Main Editable Run

Gantt icons - Flag & Point

Flag - icon with text Point - math points

Gantt display objects

Header - column captions Cell and column Background Vertical movable Line Mark & Progress line

Gantt zoom

Zoom options Chart size limits Zoom selection Paging in Gantt chart

Dependency, constraints & schedule

Introduction Data units Defining dependencies Dependency colors and shapes Changing dependencies Correcting dependencies Scheduling algorithm Project date constraints Task date constraints Critical path - Slack (Float)

Gantt calendars

Global base calendar Local calendar Calendar list Calendars dialog Other settings

Gantt resources

Resources list Resources assign Resources filter Resources calculations Availability chart Resource usage chart Generated resource usage chart

Gantt popup menu Gantt API
Line and XY points charts

Charts in grid cells Chart JSON definition Base chart settings Basic attributes Size Axis and caption Individual chart lines Data sources Visual settings API for standalone usage

Paging in large grids
Paging root rows

Paging types and attributes Auto adding root pages API for paging

Pager components

Side pager Side pager type Pages Side pager type Gantt Side pager type Custom Pager with navigation buttons & edit Pager as list of page indexes

Paging in tree

ChildPaging - load / render on expand MaxChildren - limit children count ChildParts - load / render on scroll

Paging columns

Paging types and attributes Auto adding column pages API for column paging

Server paging

Server paging for root rows Server communication in root paging Root paging in very large tables Server paging in tree Server communication in tree paging XML Request for Data in root paging XML Download Data in root paging XML Request for root Page / children XML Download root Page / children API for server paging

TreeGrid DLL/SO for server paging

Introduction Compatibility with TreeGrid control Using TreeGrid server DLL/SO ASP.NET C# ASP.NET VB PHP JSP Java TreeGrid server concepts Function reference Calculations

JSON menus and dialogs
JSON menu description JSON menu definition example
Menu settings

Base attributes Visual settings Key navigation Behavior Size and scroll

Menu item settings

Base attributes Clickable item Inactive caption Collapsible sub level Popup sub menu Columns Bool item Enum item Edit item

Custom menu in JavaScript

Show custom menu Custom menu position Custom menu advanced settings Custom menu JavaScript events Custom menu JavaScript methods

Calendar dialog Custom calendar & JavaScript events Custom dialog in JavaScript
Global grid settings
Grid size and scroll

Default behavior Maximize grid height and width Update size according to the content Let a user to control the grid size Widths of individual sections Other scrolling attributes and API

Media rules - responsive design
Languages

Language & regional setup (Text.xml) Translate texts dynamically Change language

Grid cursor - Focus & hover

Focused cell and row Focused cell range Move and copy focused cells Filling cell values by dragging Tabulator navigation Key navigation Cursor look - focus & hover

Selecting rows, cells and columns

Selecting base Selecting rows Selecting cells Selecting columns

Global settings

Status messages Configuration menus Configuration menu - options Configuration menu - columns Configuration menu - print / PDF Configuration menu - export Default toolbar Useful API function Help file

Animations

Animations base Row animations Column animations Cell animations Animations for undo / redo Animations for server side changes Dialog animations

Grid configuration in cookies
Mouse & key events & actions

List of event handler types TreeGrid mouse events Mouse event names Key and mouse button prefixes Touch event names Event targets Assigning event actions / callbacks Event action parameters Action name suffix Calling actions from JavaScript Creating custom actions Focused vs. Actual cell TreeGrid key events JavaScript API events

Mouse API event TreeGrid files
Debugging and testing

Debug window Automated testing

Run bar

TreeGrid documentation

Run is the most complex bar in TreeGrid Gantt that displays one or more individual boxes in one cell.
It can be used as replacement of the main bar with many extended features.
Or it can be used to create any other bar chart, not only Gantt.
In cell with Run there can be also shown other Gantt objects like flag, main bar, milestone or point.

Definition

Defining the individual boxes and their features

The Run is defined by GanttRun (list of individual boxes) and eventually by GanttRunStart (start date).
The run can be defined by one start date and list of durations and types of the individual boxes. The boxes are separated directly one by one, but it supports also empty type for space between boxes.
Or the run can be defined by start dates of individual boxes and their durations or end dates. In this case the empty boxes are automatically added between the boxes.
If the run boxes override each other, they are marked as error and shown in red.
The individual run boxes can have different duration, shape, color, caption and tooltip.

To let the whole run bar dependencies and resources, set Run into GanttTask, to have individual boxes dependencies and resources, add Box into GanttTask.
new 6.1 upd 13.0 <C> <cell> string[ ][ ]

GanttRun

Gantt source - column name or exact value
Definition of individual Run boxes.
If the boxes have not specified Start date, they are displayed from GanttRunStart one by one, without any space.
Array definition
The definition of boxes is separated by semicolon, the individual items in the box definition are separated by comma.
The semicolon and comma must not be present in any item text in the range. Or must be escaped by GanttRunEscape.
It is possible to change the separators by adding them both on start, e.g. "&*3*End*Start&20*Box&&20*Box" uses & as box and * as item separator. To be sure that the separator cannot be included in the run data, you can use any Unicode character as separator, e.g. "&#xF001;&#xF000;3&#xF000;End&#xF000;Start&#xF001;20&#xF000;Box&#xF001;&#xF001;20&#xF000;Box" uses &#xF001; as box and &#xF000; as item separator.
To specify the separator for new boxes in empty run, define them in GanttRunNewStart.
Do not fill any useless white characters (spaces) in the definition!

The one box definition is: Duration,Type,Text,Class,Tip,Id,Group,State,Top,Height,...Must have set also GanttRunStart as the start of the whole run
OR Start,Duration,Type,Text,Class,Tip,Id,Group,State,Top,Height,...(new 6.2) Does not support Empty and Nbsp and joined boxes
OR Start,End,Type,Text,Class,Tip,Id,Group,State,Top,Height,...(new 6.2) Does not support Empty and Nbsp and joined boxes and number data units
All the fields are optional, e.g. "3,End,Start;;5;;3,Solid,End" is the same as "3,End,Start,,;0,Empty,,,;5,Box,,,;0,Empty,,,;3,Solid,End,,"
JSON definition (since 10.0)
The GanttRun can be defined also in JSON format, in this case the string must start by these two characters (without spaces): [{
If you define TreeGrid data in JSON format, the GanttRun value is string that contains data in JSON format, it is not embedded JSON object.
The parameter names are case sensitive, but there can be used two variants "Start" or "TextLeft" (first letter uppercase, other lowercase) or "start" or "textleft" (all letters lowercase).
Save is done always as first letter uppercase "Start" or "TextLeft".
White spaces inside definition are permitted, except the first two characters must be [{.
All the parameters are optional, e.g. {} is empty separating box, {Duration:xxx} is standard box.
To use JSON definition for new boxes in empty run, define the GanttRunNewStart in the JSON format, e.g. GanttRunNewStart="[{Duration:'0.0001'}]".
If used custom attributes in the JSON definition, their names must be listed in GanttRunCustom array.
The JSON definition is slower to parse and save than the Array definition.

The run definition is: run = "[{ Param1_1:"value1", Param1_2:"value2", ... } , { Param2_1:"value2", Param2_2:"value2", ...}, { ... }, ... ]"
For example: GanttRun="[{ Start:'1/1/2010', End:'1/8/2010', Type:'Box', Text:'my box' }, {Start:'1/10/2010',Duration:10} , {}, {Duration:5}]"
The attribute name can be with or without double quotes / apostrophes, the attribute value must be in double quotes or apostrophes. The quotation type when saving the JSON back is controlled by 4.bit of GanttRunSave.
Summary definition (since 9.1)
GanttRun boxes can be defined also by child main bars (every run box by one main bar with Start, End, Duration and other attributes).
For more information see Editable Run bar as summary of child Main bars.
The Summary definition is slower to parse and save than the Array and JSON definition.
GanttRun definition items
new 6.2 ? date

Start

Start date of the task, if used, the GanttRunStart is ignored. Use Start date if the tasks are not continuous. Between tasks will be automatically added the Empty boxes.
The Start can be count of milliseconds or date string in English format (M/d/yyyy HH:mm:ss or d.M.yyyy HH:mm:ss or yyyy-MM-dd HH:mm:ss).
Does not support types Empty and Nbsp and joined boxes.
new 6.2 0 date

End

End date of the task, used instead of Duration. Use End date if you know the start and end dates instead of duration.
The End can be date string in English format (M/d/yyyy HH:mm:ss or d.M.yyyy HH:mm:ss or yyyy-MM-dd HH:mm:ss).
Due internal implementation the End cannot be count of milliseconds to not confuse with Duration.
The End can be the exact end date or the last data unit, according to setting GanttLastUnit.
It is not possible to use it with number data units like GanttDataUnits='1'.
0 int

Duration

Duration of the box in GanttDataUnits or in milliseconds, without excluded dates, used instead of End date. Use Duration if you know duration and not end date.
The empty space (Type=Empty) can have negative duration for overlaid adjacent boxes, these error boxes are displayed in red.
upd 7.0 1 int

Type

Feature of the box, default value is Box if positive Duration is set or Empty if Duration is not set or is negative.
Since 7.0 also the Duration + only one comma is shortcut for Empty box.
For example "1;2,;3;;5" is shortcut to "1,Box;2,Empty;3,Box;0,Empty;5,Box"
Case insensitive keyword, must not contain any spaces. The type is saved back always lowercase.

BoxNormal box. Can be moved or resized by mouse dragging, depending on other settings.
Can be also moved automatically when other box is resized or moved, depending on other settings.
To permit moving box from its adjacent sibling, there must be defined Empty space between them (with Duration=0).
The Empty space is automatically created when the box is defined by its Start date.
 
SolidCan be moved, but cannot be resized.
 
LeftFixed left - its start cannot be changed, it can be only resized on right side and cannot be moved.
 
RightFixed right - its end cannot be changed, it can be only resized on left side and cannot be moved.
 
FixedFixed both - it cannot be moved or resized.
 
Milestone(new 7.0) Zero duration object. Movable, not resizable. Does not show any Text.
Text can be custom icon file, Class can be custom icon file for hover.
 
Stop(new 7.0) Fixed milestone. Zero duration object, not movable, not resizable. Does not show Text.
Text can be custom icon file, Class can be custom icon file for hover.
 
EmptyEmpty space between boxes, it is not interactive. Can have also set Duration=0, to only separate adjacent boxes, to let them move separately.
Can be automatically shrunk or enlarged when other box is moved or resized, depending on other settings.
Two adjacent empty spaces are automatically merged together.
The Empty box is rendered only if set GanttRunEmpty='1' and the box has set Text or Class attribute.
Cannot be used when Start is set for the boxes
 
NbspSpace between boxes to join them. But default it is not breakable, not resizable and not interactive.
To have interactive Nbsp set GanttRunNbspHover. To permit breaking or resizing it set Nbsp keyword to GanttRunResize, GanttRunMove or GanttRunAdjust.
Can be placed only between two boxes to join them. When there is adjacent Empty space, the Nbsp is automatically removed.
Cannot be used when Start is set for the boxes.
 
BoundIf placed as the first box or the only box, it is not resizable, not movable fixed start box and is displayed before the run start date. It is not possible to move boxes before or on the fixed start.
If placed as the last box, it is not resizable, not movable fixed end box and is displayed after the run end date. It is not possible to move boxes after or on the fixed end.
If placed anywhere else, it is fixed not deletable box. It cannot be moved outside the row. If all the boxes outside this box are deleted, they cannot be created again, as the Bound becomes fixed start or end.
 
EndIf placed as the first box, it is not resizable, but movable start box and is displayed before the start date. When moving box before or on the start, the start is automatically moved before it.
If placed as the last box, it is not resizable, but movable end box and is displayed after the run end date. When moving box after or on the end, the end is automatically moved after it.
It should not be placed anywhere else. The run cannot contain only End boxes, in this case they are deleted. To create End boxes in empty run, add them to GanttRunNewStart, e.g. as "2,end,Start;;0.0001,box;;2,end,End"
 
Edge(new 13.0) Left or right edge of Run Container. Has sense only if it has set the Container attribute.
It is hidden box used to let the container to have empty space on its edges and to let to resize the container by dragging.
Must be placed as the first or the last box in its container. Must not be joined with other boxes.
2 string

Text

Caption displayed on the box, it can contain also these special strings:
%d - replaces it by Duration displayed as date formatted by GanttRunFormat.
%n - replaces it by Duration displayed as integer formatted by GanttRunFormat.
For Milestone and Stop it is not text, but custom icon file url (like Test/MyIcon.gif). Remember, the icon is shifted left by 8px (the CSS GxGanttMilestone width/2).
The Text can be set also dynamically by OnGetGanttRunText API event.
chg 10.0 3 string

Class

CSS class used for the box. This class can predefine the shape and color of the box.
There are predefined 17 classes for all basic background colors: Aqua, Black, Blue, Fuchsia, Gray, Green, Lime, Maroon, Navy, Olive, Orange, Purple, Red, Silver, Teal, White, Yellow. The 10 underlined colors are defined also for milestones and dependency lines.
(Since 10.0) There is one predefined black and white class Group for various purposes, e.g. grouped rows.
There are special classes: None (since 9.3) - no border, no padding, no margin, no background (in FastGantt replaced by Void), Void (since 10.0) - transparent border, no background, Html (since 10.0) - no background
For custom classes you need to define CSS classes GxGanttXXXIn and GxGanttXXXOut, where XXX is the Class used here and the Gx is style prefix. The Out class defines border, the In class background and font.
For custom class in FastGantt='1' are both the custom ...In and ...Out classes set to the same tag, for FastGantt='1' these classes must not change padding, margin and border-width.
For Milestone and Stop it is (since 10.0) custom CSS class for milestone, but only if not defined or empty Text property. It can be the same 17 color names as for the box, but only 10 colors are different (the underlined ones).
For custom classes you need to define CSS class GxGanttXXXMilestone, where XXX is the Class used here and the Gx is style prefix.
For Milestone and Stop, if defined Text, it is not CSS class, but custom icon file url (like Test/MyIcon.gif) shown on mouse hover. Remember, the icon is shifted left by 8px (the CSS GxGanttMilestone width/2). Can be used instead of GanttHoverIcons.
The Class can be set also dynamically by OnGetGanttRunClass API event.
Note, the custom classes are shared between Run and Main bar.
4 string

Tip

Tooltip displayed when mouse hovers the box. The final tip content is controlled by GanttRunTip.
new 7.0 5 string

Id

Unique identification of the box (at least in its group), can be used in API methods (e.g GetGanttRunBox) to find the box.
The id can be also automatically generated, see the Run box id.
If the box can have assigned dependencies (GanttTask contains "Box"), the box should have set its id and the id should not be a number to not collide with main bar plan.
The State and Manual are changed only for box with Id set or generated. The Id must be set also to support dependencies for the box.
new 7.0 6 string

Group

Identification of the group of boxes, more boxes can belong to the same group.
If set, it is used for the box identification with the Id part. For dependencies it is used as Group$Id.
Boxes with the same Group value can be managed (changed, moved or deleted) together. See also GanttRunGroupHover.
new 7.0 chg 10.0 7 string

State

State of the box. It is filled automatically after any change for the box. It is filled only for boxes with Id set.
It can be a list of case insensitive flags separated by plus (e.g. "moved+resized+changed") or a number bit array (e.g. 224 for the moved+resized+changed).
For API it is always number. For upload it can be string or number according to the GanttRunStates.
1disabled(since 10.0) box is colored gray and its dependencies are inactive. If set GanttEditDisabled='0', the box cannot be changed by a user.
Used only if the GanttTask contains 'Box'. To define disabled for the whole run use GanttRunDisabled=1 instead.
2locked(since 10.0) box cannot be moved when correcting dependencies. If set GanttEditDisabled='0', the box cannot be changed by a user.
Used only if the GanttTask contains 'Box'. To define locked for the whole run use GanttRunDisabled=2 instead. Ignored when calculating critical path.
4selected(since 10.0) box is marked and the group of all selected boxes can be moved, copied or deleted together. How the boxes can be selected is controlled by GanttRunSelect.
8addedbox is newly created or moved from another row or grid. Set only if GanttRunStates=1.
16deletedbox is deleted or moved to another row or grid. Set only if GanttRunStates=1.
Note, the deleted boxes are not accessible by API GetGanttRunBox, they are accessible only by GetGanttRun(...).Deleted array.
32movedbox is moved inside its row. If some box is moved from one row to another, it will get deleted flag in source row and added flag in destination row. Set only if GanttRunStates=1.
64resizedbox has changed its duration. Set only if GanttRunStates=1.
128changedbox has changed any other its attribute than its place. Set only if GanttRunStates=1.
new 8.1 8 int

Top

Vertical position of the box, in pixels. It can be set also dynamically by OnGetGanttRunRect API event. Default box position is set by GanttRunTop.
new 8.1 9 int

Height

Inner height of the box, in pixels. It can be set also dynamically by OnGetGanttRunRect API event. Default box height is set by GanttRunHeight.
new 10.0 10 date

Manual

Manual start date of the box. Used as minimal start date when correcting dependencies, the box is never moved before this date when correcting dependencies.
Used only if the GanttTask contains 'Box'. To define manual date for the whole Run use GanttRunManual instead.
Used only if set GanttRunManualChange > 0.
It is changed to box start or end date whenever the box is manually moved or resized by a user or by API, but only when the box has set its Id and set GanttManualChange > 1.
The side of the manual constraint is set by GanttManualSide, default is left side.
new 10.0 11 float

Complete

Percent completion of the box. Number 0 - 100.
Used only if the GanttTask contains 'Box'. To define completed state for the whole run use GanttRunComplete instead.
See also GanttRoundComplete to round the completed state to some units.
new 10.0 12 string

Resources

Resources assigned to the box. The format is the same as GanttResources, except the resource separator (;) is replaced by # to not collide with the default box separator.
Used only if the GanttTask contains 'Box'. To define resources for the whole run use GanttRunResources instead.
new 10.0 13 string

TextLeft

Html text displayed on left side of the bar. Right aligned.
The text can be set also dynamically by OnGetGanttRunSideText API event.
new 10.0 14 string

TextRight

Html text displayed on right side of the bar. Left aligned.
The text can be set also dynamically by OnGetGanttRunSideText API event.
new 13.0 15 string

Containers

The containers the box belongs to. They are dot (.) separated. For API it is JavaScript array of the containers.
The container contains all boxes in the row they have listed the container id in their Containers attribute.
The container is not defined anywhere else, its level and CSS class is specified by the first box Containers where it is defined.
The container is displayed under its boxes. The container can be moved, copied or deleted - the action affects all its boxes, similarly to actions with joined or selected boxes.
The container gets CSS class as GxGanttContainerLX, where X is the container level (its position in the Containers in its first box, from 1).
The container gets also CSS class as GxGanttContainerID, where X is the container id (its id in the Containers). If the container id contains '#', the part after the '#' is removed from the CSS class name. To use the same CSS class for more containers.
16 - 19

[Reserved]

The Run can contain any custom attributes. Place the custom attributes from 20th position to not violate the future TreeGrid attributes.
new 12.1 <C> string

GanttRunEscape

[""]
For Array definition. Set it to one character to escape run separators by it. If set, the GanttRunItems item in array definition can contain the separators escaped by the GanttRunEscape character.
For example, if GanttRunEscape="\", the run can be e.g. GanttRun="5/12/2008,2,,A\;B\;C;5/16/2008,2,,X\,Y\,Z;5/22/2008,2,,Q\\R\\S".
Setting it can slightly slow down the run processing!
new 10.0 <C> string[ ]

GanttRunCustom

For JSON definition. List of box custom attribute names, comma separated.
Used for GanttRun JSON format definition.
Used also for GetGanttRunBox / SetGanttRunBox to get / set the custom attributes.
In GetGanttRun / SetGanttRun the custom attributes are placed from 20th position in the box.

Extended definition

Optional definition for the whole run bar

new 6.1 upd 7.0 <C> <cell> string

GanttRunStart

Gantt source - column name or exact value
Start date of the Run boxes, usually column name, but can be also date string (M/d/yyyy hh:mm:ss) or count of milliseconds.
Used only if the GanttRun does not contain Start dates, but only boxes durations.
Its presence also changed default saving format, see GanttRunSave.
(Since 7.0) If the cells in this column are empty, they are filled on start and also updated automatically according to GanttRun.
(Since 7.0) When its value is changed by user, the GanttRun is modified according to the GanttRunAdjustStart settings.
new 7.0 <C> <cell> string

GanttRunEnd

Gantt source - column name only
Actual computed end date of the GanttRun.
It is just support column, it should not contain any values in its cells on start.
It is filled on start and also updated automatically according to GanttRun.
When its value is increased by user, the last GanttRun box is increased accordingly.
When its value is decreased by user, the last GanttRun box is decreased accordingly. It also deletes the last boxes if needed.
new 7.0 <C> <cell> float

GanttRunDuration

Gantt source - column name only
Actual computed duration (in GanttDataUnits, in workdays) of the GanttRun.
It is just support column, it should not contain any values in its cells on start.
It is filled on start and also updated automatically according to GanttRun.
When its value is increased by user, the last GanttRun box is increased accordingly.
When its value is decreased by user, the last GanttRun box is decreased accordingly. It also deletes the last boxes if needed.

Task

Run bar as Gantt task attributes
Defined here only if the GanttTask contains 'Run'. For 'Box' defined in Box definition.
Run bar as task can have also dependencies and resources.

new 7.0 <C> <cell> float

GanttRunComplete

Gantt source - column name only
Actual percentage complete of the task, of all GanttRun boxes together.
Used only if the GanttTask contains 'Run'. To define completion state for individual boxes use box Complete.
new 10.0 <C> int

GanttRoundComplete

[0]
If the percentage complete will be rounded to specified units (1 - GanttUnits, 2 - GanttDataUnits) when entering it by SetGanttRunPercent.
Affects Main bar and Run. See also GanttExcludeComplete to round the percentage complete to workdays.
Setting it also restricts to have boxes incomplete by very small amount (due not precise setting of the percentage complete).
Note, there is no Run keyword in the name.
new 10.0 <C> <cell> string

GanttRunManual

Gantt source - column name or exact value
Manual start date of the run bar, can be column name or direct value.
Used only if the GanttTask contains 'Run'. For individual boxes the manual is set by Manual instead.
Used as minimal start date when correcting dependencies, the task is never moved before this date when correcting dependencies.
It is changed to run bar start date whenever the run bar is manually moved or resized by a user or by API.
It is controlled by GanttRunManualChange, by default it is switched off.
new 10.0 <C> int

GanttRunManualChange

[0]
How the GanttRunManual or Manual will be used and changed when moved or resized the task.
Note the default value 0 differs from GanttManualChange, where is 2.
0 - Never displayed, changed, used.
1 - Displayed and used, but never automatically changed.
2 - Changes box Manual if the GanttTask contains Box. If the GanttTask does not contains Box, it changes GanttRunManual if defined as column.
3 - Changes box Manual if the GanttTask contains Box. If the GanttTask does not contains Box, it changes GanttRunManual also when defined as attribute.
4 - Like 3 and if empty it is set to the task start or end date.
new 10.0 <C> bool

GanttManualSide

[2]
Where the GanttManual lock will be placed and used. 0 - bar left side (start), 1 - bar right side (end), 2 - like GanttDirection, 3 - opposite to GanttDirection.
Note, there is no Run keyword in the name, it is used also for all main bar plans.
new 10.0 <C> <cell> int

GanttRunDisabled

Gantt source - column name or exact value
If the run bar is disabled or locked. For individual boxes the disabled state is set by State instead.
Used only if the GanttTask contains 'Run'.
0None.
1Disabled. Disabled bar is colored gray and its dependencies are inactive. If set GanttEditDisabled='0', it cannot be changed by a user.
2Locked. Locked bar cannot be moved when correcting dependencies. If set GanttEditDisabled='0', it cannot be changed by a user. Ignored when calculating critical path.
new 10.0 <C> bool

GanttEditDisabled

[0]
If the disabled or locked bar can be moved, resized, changed and dependencies can be attached to it by a user.
Note, there is no Run keyword in the name.
new 10.0 API method object

DisableGanttRun

(TRow row, string col, int disable, int index)
Disables, locks or enables the run bar or run box. Run bar is set when GanttTask contains "Run", run box is set when GanttTask contains "Box".
For run bar sets the GanttRunDisable value, for run box sets the State values disabled and locked.
index is box index in the run. It is ignored when set run bar.
disable = 0 - enable / unlock, 1 - disable, 2 - lock

Edit

Special attributes for editing run bar

renamed 6.0 upd 13.0 <C> <cell> string[ ]

GanttEdit

["all"]
Which Gantt objects can be edited / moved / changed / deleted / added by user. Comma separated list of flag names, case insensitive.
It does not affect editing values in the source cells - use standard attributes like CanEdit to restrict source cell editing.
RunRun bars can be created, deleted and modified directly in Gantt chart. Since 10.0 individual actions for whole run can be set by RunMove, RunResize (resize+split), RunNew (add+delete), RunComplete, RunText (run text, type, tip, class), RunState (disable, lock, select).
(new 13.0) Action for run container can be set by RunContainer
The Run can be more controlled by its attributes for moving and resizing.
For editing other Gantt objects see GanttEdit full description.
new 7.0 upd 10.0 <C> int

GanttRunMilestones

[1]
If creating Run milestones and zero width boxes by users is permitted. Note, it differs from main bar GanttMilestones attribute.
0 - neither milestones nor zero width boxes can be created. All not empty zero width boxes are removed.
1 - only milestones can be created. All not empty zero width boxes are shown as milestones, even if they don't have type Milestone or Stop.
2 - (since 10.0) only zero width boxes can be created. All not empty zero width boxes are shown as boxes, even if they have type Milestone or Stop.
3 - (since 10.0) both milestones and zero width boxes can be created. If the not empty box has zero width, but not type Milestone or Stop, it is shown as box.
new 7.0 <C> int

GanttRunGroupHover

[1]
If mouse hovers a box with Group attribute set, it can highlight all other boxes with the same Group value.
0 - never
1 - only in the same row
2 - in the whole grid (can be slow)
3 - in the whole grid, only editable Gantt cells (GanttEdit='run')
new 11.0 <C> int

GanttRunJoinedHover

[0]
How many boxes will be hovered when they are joined.
0 - only the one box under mouse
1 - all joined boxes, except joined by nbsp
2 - all joined boxes, including joined by nbsp, see also GanttRunNbspHover
new 11.0 <C> int

GanttRunNbspHover

[0]
If and how the Nbsp type box can be hovered and interactive.
0 - no, the Nbsp is not interactive.
1 - only the Nbsp box
2 - adjacent boxes (see GanttRunJoinedHover), but not the Nbsp boxes. The Nbsp box is still interactive and can control the other boxes.
3 - adjacent boxes (see GanttRunJoinedHover), including all Nbsp boxes
new 10.0 upd 16.0 <C> int

GanttRunJoined

[0]
How the joined boxes are handled, bit array. For 0 the joined boxes are not handled together.
Note, dragging joined boxes is controlled by Single/Next/Prev/Nbsp flags in GanttRunMove.
1. bit&1the joined boxes are deleted together.
2. bit&2the joined boxes are disabled or locked together.
3. bit&4the joined boxes are selected together.
4. bit&8the joined boxes are changed together (type, class).
5. bit&16the joined boxes are edited together (text, tip).
6. bit&32(new 16.0) the joined boxes are corrected (scheduled) together.
new 11.0 <C> int

GanttRunJoinedNbsp

[255]
Which actions in GanttRunJoined are used also for boxes joined by Nbsp box type. Bit array, the same as in GanttRunJoined.
Note, the bits in GanttRunJoined set to 0 are ignored in GanttRunJoinedNbsp.
For example GanttRunJoined=5 and GanttRunJoinedNbsp=1 means that joined boxes including joined by Nbsp are deleted together, but selected are only boxes not joined by Nbsp; other actions are done only for one box.
new 6.1 <C> int

GanttResizeDelete

[1]
If the Main and Run bars can be deleted by resizing them to zero width.
If set GanttRunMilestones=2, the box can be deleted by resizing it to negative width.
0 - the box cannot be deleted by resizing. Both the run box and the main bar can be resized to one unit width.
1 - if the box is resized to zero width, it is deleted.
2 - if the box is resized to zero width, it shows confirm message and is deleted if confirmed, otherwise original state is restored.
new 9.0 <C> int

GanttResizeBeforeMove

[2]
If resizing the Main and Run bars is accessible even if another object is above the bar.
For 0 it moves the object above, for 1 it resizes the bar under, for 2 it resizes the bar only under icon (e.g. flag, point, milestone or constraint), otherwise it moves the bar above.
new 15.1 <C> int

GanttRunMinResize

[0]
If set, the run box narrower than this value cannot be resized by dragging.

Save

Saving run changes back to string sent to server

new 6.2 chg 10.0 upd 16.0 <C> <cell> string

GanttRunSave

[0]
Type of GanttRun box attribute structure for save. It affects both Array and JSON definition. Bit array.

1. and, 2. bit, &3
0"Duration,Type,Text,Class,Tip" if defined GanttRunStart column or "Start,End,Type,Text,Class,Tip" if not
1"Duration,Type,Text,Class,Tip" (since 10.0 if not defined GanttRunStart it saves the first box with Start and the others without Start)
2"Start,Duration,Type,Text,Class,Tip"
3"Start,End,Type,Text,Class,Tip"
3. bit, &4 (new 7.0)
Use short format. Values 4 - 7 are similar to values 0 - 3, but use the short format.
Omits box type as default, empty type without duration as completely empty, empty type with duration as duration with comma
For example "1,Box;2,Empty;3,Box;0,Empty;5,Box" is written as "1;2,;3;;5"
4. bit &8 (new 10.0)   For JSON format only.
If set, uses strict JSON format, all names and values double quoted.
If not set, name is not quoted, and values are quoted in apostrophes, to not require replacing the double quotes by \" when including to cell values.
5. bit &16 (new 16.0)
Save boxes after Nbsp box with Start if set value 0, 2 or 3 to the first two bits.
Saved run always uses the same separators and definition (Array/JSON) as the originally defined run.
To specify the separators or JSON definition for empty run you can set only the separators as the empty Run value, e.g. run = "[{" for the JSON definition,
or set the separators in GanttRunNewStart, e.g. set GanttRunNewStart="[{Duration:1,Type:'Box'}]" to use JSON definition for new runs.
new 7.0 chg 10.0 <C> int

GanttRunStates

[2]
If and how will be the State of the run set. Fills changes only for boxes with Id set.
The deleted boxes are saved to the end as box with type '-' and empty duration and without start/end date items.
0Sets only disabled, locked and selected states as lowercase flags, separated by +.
1Like 0 and sets also added, deleted, moved, resized and changed states as lowercase flags, separated by +.
2Like 1 and clears also the added, deleted, moved, resized and changed states after successful update to server.
3Reserved
4Sets only disabled, locked and selected states as a bit array number (e.g. 7 for all the three states).
5Like 4 and sets also added, deleted, moved, resized and changed states as a bit array number (e.g. 224 for moved+resized+changed).
6Like 5 and clears also the added, deleted, moved, resized and changed states after successful update to server.
7Reserved
(Since 10.0) The default value changed from 1 to 2.

Select

Selecting individual boxes and do actions with more boxes

The selected run box is marked selected keyword in its State item of the GanttRun.
new 10.0 <C> int

GanttRunSelect

[0]
0 - no selection possible
1 - always one box at a time
2 - one box at a time, can be unselected
3 - more boxes in one row
4 - more boxes in more rows, but they are handled per row only
5 - more boxes in more rows, they are handled all together
new 11.0 <C> bool

GanttRunClearSelected

[0]
If set to 1, clears the whole selection after every action that manipulates selected boxes.
It does not affect dragging boxes, here use GanttRunMove Clear flag instead.
new 13.1 <C> string

GanttRunContainersSelect

If and which containers will be selected instead of inner run boxes. Selected container has always all its run boxes selected. It can be:
- nothing / empty string (default) as no container. No container will be marked as selected, only its boxes.
- * as all containers and boxes. Every container that has all its boxes selected is marked selected. Also all its inner boxes and containers.
- ^ as top containers or boxes. Only containers with all boxes selected are marked selected. If the container is marked as selected, no its inner container or box is marked selected.
- a number from 1 as container level. Only containers on given level can be selected. Not any boxes or other containers.
- a string as container class. Only containers of given class can be selected. Not any boxes or other containers.
new 11.0 upd 13.0 API event bool

OnGanttRunSelect

(TGrid grid, TRow row, string col, object run, int index, bool select, object source)
Called before the box is selected or unselected. Called for every box being selected or unselected.
row, col is the Gantt cell, the run is the whole run object used in GetGanttRun / SetGanttRun methods.
index is the box index inside run, can be used also to get the box object by GetGanttRunBox method.
select is true to be selected, false to be unselected.
source can be:null - if all boxes in grid are selected or unselected.
box - (as returned from GetGanttRunBox), as the source (e.g. clicked) box to select or unselect.
There can be more boxes selected if joined with the other boxes, all these boxes will get the same source box.
array - [r1,x1,y1,r2,x2,y2,col] as the selected rectangle, r is the row object, x, y are coordinates in pixels inside the cell [r,col]
array - [rows,d1,d2,col] (new 13.0) as the selected range, rows is array of the rows, d1 and d2 are dates to select runs between
Return true to not change the selection state.
new 12.0 API event bool

OnSelectGanttRunRect

(TGrid grid, TRow r1, int x1, int y1, TRow r2, int x2, int y2)
Called after rectangle to select run boxes is created by a user, before the run boxes are selected.
r1, x1, y1 is top left corner, r2, x2, y2 is bottom right corner.
Return true to suppress the boxes selection.
new 14.0 API event bool

OnCanSelectGanttRun

(TGrid grid, TRow row, string col, object run, int index, bool select, string container)
Called to internally check if the run box or container can be selected or unselected. Used especially to more control selecting containers than by GanttRunContainerSelect.
For correct behavior the GanttRunContainerSelect should be set to something. Note setting it to "*" or "^" still affects some selecting.
row, col is the Gantt cell, the run is the whole run object used in GetGanttRun / SetGanttRun methods.
index is the box index inside run, can be used also to get the box object by GetGanttRunBox method.
select can be true to permit selecting the run box, false to permit unselecting the run box or null to display selection of the box or container.
container is full container name, including the postfix. It is filled only when checking if to display this container selected if all its boxes are selected.
Return true to permit selection, false to restrict selection, null to apply default criteria by GanttRunContainerSelect.

For example to select single boxes and also containers named "P":
Grids.OnCanSelectGanttRun = function(G,row,col,run,i,sel,cont){
if(cont) return cont.indexOf("P")>=0; // Displays selection only of containers "P", for other containers not
if(!run[i][15]) return true; // Permits selection of single boxes in all ways
if(("#"+run[i][15].join("#")+"#").indexOf("#P#")>=0) return sel!=null; // Permits selection of containers "P", but does not display selected boxes inside them
return false; // Restricts selection of all other containers than "P"
}
new 10.0 API method bool

SelectGanttRunBox

(object box, bool select)
Selects or unselects given box. Shows changes in the cell. If the box does not exist or cannot be selected, returns false, otherwise true, see GanttRunSelect.
If the box has set neither Index nor Id, it selects or unselects all boxes in the box Row.
If the box is null, it selects or unselects all boxes in grid.
select = 1 selects the box, 0 unselects the box, null inverts the box selection.
Changes the box State attribute, adds or removes selected flag.
new 10.0 API method bool

SelectGanttRunRect

(TRow r1, int x1, int y1, TRow r2, int x2, int y2, bool select = 1)
Selects or unselects all boxes in given rectangle.
r1, x1, y1 is top left corner, r2, x2, y2 is bottom right corner. The box is affected if it is at least partially in the area.
select = 1 selects the box, 0 unselects the box.
Returns true if some box was changed.
new 13.0 API method bool

SelectGanttRunRange

(TRow[] rows, int d1, int d2, bool select = 1)
Selects or unselects all boxes in given rows in date range d1, d2.
The box is affected if it is at least partially in the range.
select = 1 selects the box, 0 unselects the box.
Returns true if some box was changed.
new 10.0 API method object[ ]

GetGanttRunSelectedBoxes

(TRow row, string col)
Returns array of all selected boxes in the row.
If the row is null, returns all selected boxes in the whole grid.
new 10.0 API method object[ ]

GetGanttRunSelectedCount

(TRow row, string col)
Returns count of selected boxes in the row.
If the row is null, returns count of all selected boxes in the whole grid.
It is much faster than GetGanttRunSelectedBoxes.
new 13.1 API method bool

SelectGanttRunContainer

(TRow row, string col, string container, bool select)
Selects or unselects all boxes in given container in given cell.
The box is affected if it is at least partially in the range.
select = 1 selects all the boxes in the container, 0 unselects all the boxes in the container, null selects the boxes if at least one box in the container is unselected, otherwise unselects all the boxes.
Returns true if some box was changed.
new 13.1 API method bool

IsGanttRunContainerSelected

(TRow row, string col, string container)
Returns true if all the boxes in the container are selected.

Text

Run box HTML content and side HTML

new 10.0 upd 14.0 <C> <cell> string

GanttRunHtml

["*Text*"]
Html shown inside every run box. By default it shows the Run box Text value.
It can also show values from other cells in row, set by *col* where col is the column name.
It can show also the specials:
*Text* - the box Text, *RunText* - (new 7.0) the run text GanttRunText
*TextInside* - (new 14.0) always the box Text, *TextLeft* - (new 14.0) always the box TextLeft, *TextRight* - (new 14.0) always the box TextRight, *Tip* - (new 14.0) always the box Tip
*Index* - the box index (from 1, excluding empty boxes)
*Start* - start date of the box, *End* - end date of the box, *Duration* - length of the run in GanttRunFormat or in GanttDataUnits.
*StartAll* - start date of the whole bar, *EndAll* - end date of the whole bar, *DurationAll* - length of the whole bar in GanttRunFormat or in GanttDataUnits,
*Resources* - actual resources assigned to the bar, *1* - *14* - exact value of the box in GanttRun, e.g. *7* shows the State or *10* shows the Manual.
Example: "*Index*. <b>*Text*</b> (*Duration* days)"
new 8.1 upd 16.0 API event string

OnGetGanttRunText

(TGrid grid, TRow row, string col, object run, int index, string text, int width, int left, int maxwidth, string[ ] cls, bool export)
Called to get the Run box text (Text) to render it. It can return any HTML code or text or the text parameter.
run is the parsed Run object (like got from GetGanttRun), the index is the box index inside the run array.
text is original text to be rendered, return it to avoid changes.
width (new 9.0) is actual width of the box outer tag in pixels.
left (new 10.0) is left position of the run box inside the Gantt cell (or in horizontal Gantt page), in pixels. Can be later changed by OnGetGanttRunRect.
maxwidth (new 10.0) is actual width of the Gantt cell (or horizontal Gantt page), in pixels.
cls (new 11.0) contains CSS classes to be set to the bar. Items of the array are intended to change in this handler to specify the CSS classes for the bar.
export (new 16.0) is set when called during export to xlsx.
[RunClass, OutClass, InClass, TextClass] - RunClass is the actual run Class value. It is the only item preset in this array and the only partial class.
OutClass - full css class(es) added to the outer box. InClass - full css class(es) added to the inner box, TextClass - full css class(es) added inside incomplete bar.
Can be used instead of OnGetGanttRunClass for boxes, but not for milestones.
new 10.0 <C> <cell> string

GanttRunHtmlLeft

["*Text*"]
Html text displayed on left side of the box. Right aligned. By default it shows the Run box TextLeft value.
It can contain the same special settings like GanttRunHtml, except the *Text* shows the TextLeft.
new 10.0 <C> <cell> int

GanttRunHtmlLeftEdge

[0]
Where the GanttLeftSide text will be displayed
0 - before the first box, 1 - before every box, 2 - inside every box next to right edge, 3 - centered inside every box, 4 - centered in every box, but left side to milestone.
new 10.0 <C> <cell> string

GanttRunHtmlLeftClass

CSS class used to display the side text.
There are predefined 17 classes for all basic background colors: Aqua, Black, Blue, Fuchsia, Gray, Green, Lime, Maroon, Navy, Olive, Orange, Purple, Red, Silver, Teal, White, Yellow. The 10 underlined colors are defined also for milestones and dependency lines.
There is also predefined class None for HTML without any formatting, especially without padding.
For custom classes you need to define CSS class GxGanttHtmlXXX, where XXX is the value set to this attribute and Gx is the style prefix.
new 10.0 <C> <cell> string

GanttRunHtmlRight

["*Text*" / "*Text* *Resources*"]
Html text displayed on right side of the box. Left aligned. By default it shows the Run box TextRight value.
It can contain the same special settings like GanttRunHtml, except the *Text* shows the TextRight.
Due backward compatibility the default value for GattTask='Run' is the *Text* plus value GanttRunResources if set, otherwise it is only *Text*.
new 10.0 <C> <cell> int

GanttRunHtmlRightEdge

[0]
Where the GanttRightSide text will be displayed
0 - after the last box, 1 - after every box, 2 - inside every box next to left edge, 3 - centered inside every box, 4 - centered in every box, but right side to milestone.
new 10.0 <C> <cell> string

GanttRunHtmlRightClass

CSS class used to display the side text.
There are predefined 17 classes for all basic background colors: Aqua, Black, Blue, Fuchsia, Gray, Green, Lime, Maroon, Navy, Olive, Orange, Purple, Red, Silver, Teal, White, Yellow. The 10 underlined colors are defined also for milestones and dependency lines.
There is also predefined class None for HTML without any formatting, especially without padding.
For custom classes you need to define CSS class GxGanttHtmlXXX, where XXX is the value set to this attribute and Gx is the style prefix.
new 10.0 <C> <cell> int

GanttRunHtmlShift

[0]
Vertical shift in pixels of the Left and Right side Html inside cell. Negative top, positive bottom.
It is possible to use it to display some text also above the box.
new 10.0 <C> int

GanttRunShowHtml

[1]
If the side html (GanttRunHtmlLeft and GanttRunHtmlRight) will be displayed in chart.
For 0 the side html will be hidden.
For 1 the side html by GanttRunHtmlLeft and GanttRunHtmlRight is ignored and is shown only the box TextLeft / TextRight.
For 2 the side html will be shown, but the chart will not resize to show them.
For 3 the side html will be shown and the chart will resize to show them if required, like for the other Gantt objects. Can remarkably slow down large charts!
new 10.0 upd 16.0 API event string

OnGetGanttRunSideText

(TGrid grid, TRow row, string col, object run, int index, string text, int width, int side, int[] rect, bool export)
Called to get the Run box side text (TextLeft and TextRight) to render it. It can return any HTML code or text or the text parameter.
run the parsed Run object (like got from GetGanttRun), the index is the box index inside the run array.
text is original text to be rendered, return it to avoid changes.
width actual width of the box outer tag in pixels.
side which text to be returned, 1 - TextLeft (left side), 2 - TextRight (right side). For left and right side is called only if some side text is defined for the box.
rect (new 13.0) is array of 4 integer [left,top,width,height] as position of the box or milestone. The handler cannot modify them. The width is empty string for milestone.
export (new 16.0) is set when exporting to xlsx.
For left side is the text placed to right aligned div with width 2000px, so if the returned text is HTML div, it should have set appropriate margin-left to be positioned right side.
new 10.0 <C> <cell> string

GanttRunHtmlDateFormat

Date format for GanttRunHtml specials *Start*, *End*, *StartAll*, *EndAll*, *10* (Manual)
new 6.1 <C> <cell> string

GanttRunFormat

Date or number format string (like for Type Date or Int) to display box duration in the box text (Text).
new 7.0 <C> <cell> string

GanttRunText

Gantt source - column name or exact value
Information for the whole run, can be displayed inside or outside box or as box tooltip.

Tip

HTML shown on mouse hover the bar

new 6.4 upd 10.0 <C> <cell> string

GanttRunTip

["*Text*"]
Tip shown on mouse hover the box. It can contain HTML code. By default it shows the Run box Tip value.
It can contain the same special settings like GanttRunHtml, except the *Text* shows the Tip.
To dynamically generate the tip text use OnGanttTip API event.
new 6.4 <C> <cell> string

GanttRunTipDateFormat

Date format to display Start and End of the run in GanttRunTip *Start* and *End*.
It is the same format as for Date type.

Box id

Unique identification of run boxes
The run box id is defined by the Id and optionally by Group

new 10.0 <C> int

GanttRunIds

[1]
How will be assigned id to the Run boxes
0 - never
1 - to new boxes, only when the row has set GanttRunSummary or defined OnGanttRunBoxChanged API event (the only option before 10.0).
2 - to all new and copied boxes, does not check the existing ids. The newly generated ids should have different format than existing ids.
3 - to all new, copied and not assigned boxes, ensures the ids are unique among all existing ids.
You can also dynamically generate the ids in OnGanttRunBoxNew or OnGanttRunBoxChanged API event.
new 10.0 <C> string

GanttRunIdPrefix

["new"]
A string added in front of generated id for run boxes
new 10.0 <C> string

GanttRunIdPostfix

[""]
A string added after generated id for run boxes
new 10.0 <C> string

GanttRunIdChars

[""]
Specify characters the run box id is generated from.
Set it to e.g. "abcdefghijklmnopqrstuvwxyz0123456789" to have alphanumeric ids.
If not defined (default), the id is created as number from 1
new 10.0 <C> int

GanttRunNumberId

[0]
Do not add this amount of characters from GanttRunIdChars to start of the id.
For example set GanttRunNumberId='1' GanttRunIdChars='0123456789' to have number ids, to not start the id with zero.
new 10.0 <C> string

GanttRunLastId

[""]
Specify to start generating the ids after this id. For example set it to 999 and the first generated id will be 1000.

Position

Vertical position and height of the whole run bar
Individual boxes can be also positioned by Top and Height

new 9.0 upd 10.0 <C> <cell> int

GanttRunHeight

Sets default inner height in pixels of all run boxes in the cell. Height of individual boxes can be set by box Height.
Default value is calculated according to the box content, except FastGantt='1'. Minimal default value is read from actual TreeGrid CSS style, usually 9 pixels.
Since 10.0 it can be set for individual cells too.
new 10.0 <C> <cell> int

GanttRunTop

Sets default top in pixels of all run boxes in the cell. The Top attribute of the GanttRun.
Top position of milestone is calculated as (GanttRunHeight - milestoneheight) + GanttRunTop, where milestoneheight is defined in style Grid.css.
new 10.0 <C> <cell> int

GanttRunLevels

If set, specifies vertical level height in pixels where the new or dragged boxes can be placed.
For example, if set GanttRunLevels='20' and GanttRunTop='5', the boxes can be created at position 5, 25, 45, 65, ...
new 9.3 <C> int

GanttRunMinWidth

[1]
Minimal width of the run box in pixels to render it. Useful to speed up rendering for many small boxes in high zoom levels.
Boxes smaller than this value in actual zoom level will not be rendered, if distance to the previous box is smaller than this value.
If set to 0, it renders all boxes. If set to 1, it renders all boxes at least partially visible.
new 10.0 <C> int

GanttRunBoxMinWidth

[5]
Minimal width of the rendered run box in pixels.
If the box is rendered, because it fulfils GanttRunMinWidth condition, it is rendered at least GanttRunBoxMinWidth pixels wide.
new 10.0 <C> int

GanttRunBoxMinType

[1]
Where will be the GanttRunBoxMinWidth applied. Bit array.
1. bit&1For rendering boxes
2. bit&2For GanttRunErrorsShift - for moving overlaid boxes
3. bit&4For dependency lines (only for Run Box as GanttTask)
new 10.0 <C> string

GanttRunBoxMinAlign

["center"]
Alignment of the box that is rendered wider or narrower than its duration. Case insensitive.
Can be left to start on correct start date, right to end on correct end date and center to be centered on between correct start and end dates.
For API it is a number, 0 - center, 1 - left, 2 - right.
new 10.0 <C> int

GanttMilestoneTopMin

[0]
Minimal top position of milestones in Gantt. No keyword Run in the name!
Useful to set to permit or restrict negative milestone position if the milestone is higher than bars.
new 9.3 chg 10.0 upd 16.0 API event void

OnGetGanttRunRect

(TGrid grid, TRow row, string col, object run, int index, int[ ] Rect, int type)
Called to modify the Run box position and size. Since 10.0 it is called also for Milestone and Stop types.
run is the parsed Run object (like got from GetGanttRun), the index is the box index inside the run array.
Rect is array of 4 integers [left,top,width,height]. The handler can modify them to change the box rectangle.
The top and height are 0 when called during box dragging (Slide). Since 10.0 they are 0 also when called when calculating vertical position for GanttRunErrorsShift.
(Since 10.0) The width is empty string for milestone. Don't modify the width for milestone.
The values are in pixels and are affected by FastGantt and by CSS class used.
(since 13.0) type is 0 for render, 1 for errors shift, 2 for render dependency, 3 for box dragging (slide), 4 (since 14.1) for box rectangle selecting, 5 (since 16.0) for export
new 10.0 upd 16.0 API event void

OnGetGanttRunSideRect

(TGrid grid, TRow row, string col, object run, int index, int[ ] Pos, int[ ] Rect, int side, bool export)
Called to modify the Run side text position.
run is the parsed Run object (like got from GetGanttRun), the index is the box index inside the run array.
Pos is array of 2 integers [left,top] as position of the side text in pixels. Handler can modify them to move the side text. For left side text is the left value about Rect[0] - 2000.
Rect is array of 4 integer [left,top,width,height] as position of the box or milestone. The handler cannot modify them. The width is empty string for milestone.
side is 1 for left side text, 2 for right side text.
export (since 16.0) is set when exporting to xlsx.

Style

Specific attributes for run styling
Every box can have set its individual CSS class by Class

chg 10.0 <Cfg> bool

FastGantt

[0]
If set to 1, it renders Run boxes simplified, only by one <div> tag per box.
The Run style looks slightly worse, but the chart is three times smaller and therefore much faster to display and change, especially for rows with many run boxes.
Since 10.0 it can be enabled for all browsers. After change of browser zoom, the Gantt chart is automatically re-rendered.
new 10.0 <C> bool

GanttAdjacentBars

[0]
By default the adjacent Main and Run boxes have few pixels between for just visual effect. If set GanttAdjacentBars='1', the adjacent boxes have no visible space between them.
Note, there is no Run keyword in the name.
new 10.0 <C> bool

GanttRunEmpty

[0]
0Empty boxes are never rendered.
1Empty boxes are rendered if they have set Class or Text or they are dynamically generated. It was default value prior 10.0.
new 10.0 <C> <cell> string

GanttRunClass

Predefined CSS custom class for all boxes, if they don't have set their Class property.
There are predefined 17 classes for all basic background colors: Aqua, Black, Blue, Fuchsia, Gray, Green, Lime, Maroon, Navy, Olive, Orange, Purple, Red, Silver, Teal, White, Yellow. The 10 underlined colors are defined also for milestones and dependency lines.
(Since 10.0) There is one predefined black and white class Group for various purposes, e.g. grouped rows.
There are special classes: None (since 9.3) - no border, no padding, no margin, no background (in FastGantt replaced by Void), Void (since 10.0) - transparent border, no background, Html (since 10.0) - no background
For custom classes you need to define CSS classes GxGanttXXXIn and GxGanttXXXOut, where XXX is the Class used here and the Gx is style prefix. The Out class defines border, the In class background and font.
For custom class in FastGantt='1' are both the custom ...In and ...Out classes set to the same tag, for FastGantt='1' these classes must not change padding, margin and border-width.
For Milestone and Stop it is (since 10.0) custom CSS class for milestone, but only if not defined or empty Text property. It can be the same 17 color names as for the box, but only 10 colors are different (the underlined ones).
For custom classes you need to define CSS class GxGanttXXXMilestone, where XXX is the Class used here and the Gx is style prefix.
The Class can be set also dynamically by OnGetGanttRunClass API event.
Note, the custom classes are shared between Run and Main bar.
new 9.3 API event string

OnGetGanttRunClass

(TGrid grid, TRow row, string col, object run, int index, string cls)
Called to get the Run box class (the suffix). The original class will be GxFGanttRunXXX for FastGantt and GxGanttRunXXXOut plus GxGanttRunXXXIn.
run is the parsed Run object (like got from GetGanttRun), the index is the box index inside the run array.
Return predefined cls or new CSS class suffix. For possible values see GanttRunClass or Class property.
See also OnGetGanttRunText that can also modify the box css class.

Overlaid (Error) boxes

Handling and coloring overlaid boxes

If two boxes overlaid each other, the second box is marked as Error box, with default red color.
To let the boxes overlay as Error boxes when moving, copying, adding or resizing box set GanttRunAdjust="Error,...." or similar Adjust attribute.
new 8.1 <C> <cell> bool

GanttRunErrors

[1]
If the overlaid boxes will be marked as error boxes in red.
new 10.0 chg 13.0 <C> <cell> int

GanttRunErrorsShift

[0]
If the overlaid boxes and containers will be shifted down by given amount of pixels, to be all the boxes visible.
If set to positive value, it sets the top of the box or container as top of the previous overlaid box or container plus the shift.
If set to negative value, it sets the top of the box or container as bottom of the previous overlaid box or container minus the shift (= plus as positive).
Row height is automatically updated to show all the bars except is set GanttBottom = ""
new 13.0 <C> bool

GanttRunErrorsShiftVisible

[0]
If set, shifts only actually visible boxes and containers.
new 6.2 chg 7.0 <C> <cell> string[ ]

GanttRunError

["Sort"]
How will be the error boxes handled. Comma separated list of flag keywords, case insensitive.
SortThe boxes will be sorted by their start positions, after any change. Sorts errors also on start. It is default value since 7.0.
Merge(new 7.0) The overlaid boxes will be merged to one (the first box will be resized to the duration of all the boxes and the rest boxes will be deleted).
It merges only boxes of type Box and Solid. All other boxes are still marked as error. The Merge always does Sort too.

Container

Containers for more boxes

New 13.0. The containers are defined in boxes by GanttRun 15th item Containers.
Container permission is controlled by GanttEdit, values Run or RunContainer.
Dragging containers can be more controlled by GanttRunAdjust values Containers...
new 13.0 upd 16.0 API event object

OnGetGanttRunContainer

(TGrid grid, TRow row, string col, object run, string id, int[] Rect, string class, int first, int last, int type, string text)
Called to modify rendered or calculated container in given cell and run. id is the id of the container.
Rect is container size and position in the Gantt cell in pixels, an array [left,top,width,height]. It is possible to modify it.
class is container CSS class, it is the container without #suffix. The container gets CSS class as GxGanttContainerCLASS.
first is index of the first box in the container, last is index of the last box in the container.
type is time of call, 0 - called for render, 1 - called to get size for errors shift, 5 - (since 16.0) called for export to xlsx.
text (since 16.0) is the container html or label to be shown in the container.
It can return array as [class,html] - class is new class value, html is html content to render inside the container.
new 13.0 upd 13.1 API method object

GetGanttRunContainers

(TRow row, string col, int display = 0)
Returns all run containers in the Gantt cell. It fills all their extents, sizes and relations. It iterates the run, so it is slower.
Also every box gets filled its own extents and sizes like container. The method can be used also to get these information for boxes only, even if no container is used.
Returns nested arrays of the containers according to their relations.
The main array contains the root containers and single box containers. It contains also attribute All as references to all the containers by their ids.
Every container has these attributes:
id - id of the container. The standard containers have at least one child, their id is the container name. The box containers have no child and their id is "#"+box index in run.
Parent - reference to parent container, [0],[1],[2],... - child containers,
Ids - child containers by their ids, length - count of child containers.
Start, End, Duration - Horizontal size and position of the container in ms in data. It is in work time from the run start.
Left, Right, Width - Horizontal size and position of the container in pixels as displayed in cell relative to the Gantt cell left side. Filled only if set display = 1.
Top, Bottom, Height - Vertical size and position of the container in pixels in cell relative to the Gantt cell top side. Calls OnGetGanttRunRect only if set display = 1.
Selected (new 13.1) - If all the boxes in the container are selected.
new 13.0 API method int[]

GetGanttRunContainerBoxes

(TRow row, string col, string container)
Returns all box indexes in the row that are in given container. If no box is in the container, returns empty array.
new 13.0 API method string

GetUniqueGanttRunContainer

(TRow row, string col, string container)
Changes and returns the container id to be unique within the Gantt cell. It adds the #X, where X is a number from 1.
new 13.0 API event string

OnGetUniqueGanttRunContainer

(TGrid grid, TRow row, string col, string container)
Called when the container already exists in the Gantt cell. Return new unique container name. Or return null to add the #X to the container name.
new 13.0 API method int

AddGanttRunContainer

(TRow row, string col, int index, string container, int level = null, bool unique = 0)
Adds new container to box index. Adds it as the last container to the box Containers or to position given by level. If there is a container defined on given level, it and the rest are shifted next.
Returns count of changed boxes. If set unique, makes the container unique by GetUniqueGanttRunContainer.
new 13.0 API method int

ChangeGanttRunContainer

(TRow row, string col, string container, string newcontainer, bool unique = 0)
Changes the container to the newcontainer in all boxes.
Returns count of changed boxes. If set unique, makes the newcontainer unique by GetUniqueGanttRunContainer.
new 13.0 API method int

DelGanttRunContainer

(TRow row, string col, string container, int delete, string adjust, bool nodisabled)
Deletes the container from boxes or deletes all boxes in the container.
delete = 0 - deletes the container from boxes, preserves the container levels.
= 1 - deletes the container from boxes, shifts the next containers in the box Containers.
= 2 - deletes all the boxes that have the container in their Containers.
= 3 - deletes all the boxes and moves other boxes according to the adjust (like GanttRunAdjust).
If set nodisabled, does not delete disabled and locked boxes.
Returns count of changed boxes.
new 13.0 API method int

DisableGanttRunContainer

(TRow row, string col, string container, int disable)
Disable, locks or enables all boxes in the container. disable = 0 - enable, 1 - disable, 2 - lock.
Returns count of changed boxes.
new 13.0 API event bool

OnGanttRunContainerChange

(TGrid grid, TRow row, string col, object run, int index, string[] newcontainer, string[] oldcontainer, TRow source)
Called before the run box index changes its container.
oldcontainer is the original containers value, as JavaScript array. newcontainer is the new containers value, as JavaScript array.
source row is set when the containers are changed due dragging box, it is original row where the box was placed, can be the same as row.
Return true to discard the change. Or modify the newcontainer array and return false.
new 13.0 <Actions>

DeleteGanttRunContainerOnly

Attached to OnCtrlClickGantt event
Deletes the container under mouse cursor from all its boxes. The boxes are not deleted.
It fails if there is no run container under mouse cursor.
new 13.0 <Actions>

DeleteGanttRunContainer

Not attached to any event
Deletes all run boxes in the container under mouse cursor.
It fails if there is no run container under mouse cursor.
new 13.0 <Actions>

AddGanttRunContainer

Not attached to any event
Shows popup menu defined by GanttRunContainers. Adds the chosen container as the last container to the box under mouse cursor. It fails if there is no run box under mouse cursor.
new 13.0 <Actions>

ChooseGanttRunContainer

Not attached to any event
Shows popup menu defined by GanttRunContainers. Changes the container under mouse cursor to the chosen container. It fails if there is no run container under mouse cursor.
new 13.0 <Actions>

SelectGanttRunContainer

Attached to OnDblClickGantt event
Selects the GanttRun container or its boxes depending on GanttRunContainersSelect.
new 13.0 <C> <cell> string[*]

GanttRunContainers

List of available containers for actions AddGanttRunContainer and ChooseGanttRunContainer.
It can be first character separated list or JSON menu.
The container name can contain level as suffix, separated by dot, e.g. "|C1.0|C2.1|C3.2", if level defined, the container is added only on given level and can be changed only on the same level.
If the JSON menu has attribute Include:1, the Items are included directly to the GanttMenu on the place instead of the ChooseGanttRunContainer / AddGanttRunContainer item.
new 13.0 <C> int

GanttRunContainersResize

[1]
If the containers can be resized by users.
0 - no.
1 - yes, if the containers has Edge type boxes.
2 - all, adds the Edge type boxes if the container does have them.
new 13.0 <C> int

GanttRunContainersDelete

[1]
If the empty containers will be deleted.
0 - not implemented yet, never, empty container will get Edge type boxes on its edges.
1 - only containers without any Edge type box. If container has only one Edge type box, the second one is added next to the first one and the container will have zero width.
2 - only containers with none or one Empty type box will be deleted.
3 - always, either if it has Edge type boxes.
new 16.0 <C> bool

GanttRunContainersLabel

[0]
If set, shows container id (or container html generated by OnGetGanttRunContainer) on the top of the container. Reserves one line for the label.
new 16.0 <C> string[*]

GanttRunContainersLabels

List of labels for containers ids, first character separated, as "|id1|label1|id2|label2|id3...".
The labels are displayed in containers and in popup menus instead of container ids.
new 13.0 <C> <cell> int

GanttRunContainerTop

Sets default top in pixels of all the most outer run containers in the cell.
It affects only containers with no box having set its Height and if no GanttRunTop is set and the container is not shifted due overlay.
If not set (default), the run boxes are shown on the same position, regardless on how many containers they are placed in.

Moving and resizing

The run boxes are independent on each other, they can be resizes or moved individually or together and also it is possible to change their position.
new 6.1 upd 13.0 <C> <cell> string[ ]

GanttRunResize

["Resize"]
Which boxes can be resized. Comma separated list of flag keywords, case insensitive.
emptyWhen set nothing, resizing is restricted.
ResizeOnly resizable boxes can be resized.
Nbsp(new 11.0) The nbsp boxes can be resized. Only if set GanttRunNbspHover.
Container(new 13.0) Run containers can be resized. If resized, places Edge type boxes on its side(s). Only if set GanttRunContainersResize
AllAll boxes, including solid boxes and containers can be resized.

There are also attributes read when dragging with appropriate shift key: GanttRunResizeCtrl, GanttRunResizeAlt, GanttRunResizeShift
Since 7.0 there are move actions for other mouse buttons (Right and Middle) as the last suffix: GanttRunResizeRight, GanttRunResizeCtrlRight, GanttRunResizeAltRight, GanttRunResizeShiftRight, GanttRunResizeMiddle, GanttRunResizeCtrlMiddle, GanttRunResizeAltMiddle, GanttRunResizeShiftMiddle.

Since 7.0 for touch screens (iPad) are available events for count of fingers on pad, GanttRunResize1, GanttRunResize2, GanttRunResize3, ..., but because by default in Defaults.xml is the ResizeGanttRun action attached only to OnDrag2Gantt event, these prefixes are ignored. To use them, you need to attach the ResizeGanttRun to appropriate OnDragXGantt event, but it should not be attached to the same events as MoveGanttRun or change the value of <Actions GanttSizeTouch>.
new 6.1 upd 11.0 <C> <cell> string[ ]

GanttRunMove

["Slide"]
How the boxes can be moved. Comma separated list of flag keywords, case insensitive. Affects source cell when moving between cells.
emptyWhen set nothing, moving is restricted.
SlideThe box can be shifted left or right, but cannot change the box order except GanttRunAdjust contains Error flag. The box cannot be moved outside the row.
(since 10.0) If set also Move, Copy or Remove, it stops sliding and starts the action, if mouse cursor moves outside the actual row. It is preferred to dragging dependency.
MoveThe moved box will be replaced by empty space.
CopyThe moved box will stay on the same position and is duplicated to the new position.
RemoveThe moved box will be removed and next boxes will be shifted according to GanttRunAdjustRemove.

By default the fixed boxes and boxes joined with fixed boxes cannot be moved.
AllPermits moving also fixed boxes (Fixed, Left, Right, Stop). Bound boxes and locked and disabled boxes are never moved.

By default all joined boxes (boxes without Empty box between them) are moved together.
SingleOnly one box will be moved from joined boxes. If set with Nbsp, the joined boxes can be split only on Nbsp box. Since 11.0 it can be used also with Slide.
Next(new 11.0) Only the box and next (right) boxes will be moved from joined boxes. If set with Nbsp, the joined boxes can be split only on Nbsp box.
Prev(new 11.0) Only the box and previous (left) boxes will be moved from joined boxes. If set with Nbsp, the joined boxes can be split only on Nbsp box.
Nbsp(new 11.0) Boxes joined directly will be moved together, but boxes joined by Nbsp will be split.

The next flags can be used only with Move, Copy or Remove, but not with Slide.
Selected(new 10.0) All selected boxes in row will be moved, if the one dragged box is selected.
The selected boxes are placed to destination as adjacent, with zero space between them. But if set also Entire, they are placed with the original spaces between them.
If set GanttRunSelect = 5, it moves all selected boxes in grid to the one destination row. It places them as adjacent in order by rows, the dragged box row always as first. If set also Entire, it preserves the boxes start dates.
If the selected box is joined with another not selected box, this box is moved too. It is affected by Single, Next, Prev and Nbsp settings.
SelectedSingle(new 11.0) Like Selected, but it always moves only the selected boxes (for joined boxes). It is not affected by Single, Next, Prev and Nbsp settings.
Clear(new 10.0) Clears the box selected state after drop. For Copy it clears only destination selection. See also GanttRunClearSelected for other actions. Note the exception, it affects the destination cell.
GroupAll boxes in row in the same group as the dragged box will be moved.
The boxes are placed to destination as adjacent, with zero space between them. But if set also Entire, they are placed with the original spaces between them.
If the box in group is joined with another box from different group, this box is moved too. It is affected by Single, Next, Prev and Nbsp settings.
GroupSingle(new 11.0) Like Group, but it always moves only the boxes in the same group (for joined boxes). It is not affected by Single, Next, Prev and Nbsp settings.
Entire(new 10.0) All boxes in row will be moved. (Since 11.0) It is affected by Single, Next, Prev and Nbsp settings.
If set Selected, SelectedSingle, Group or GroupSingle, it is applied only if dragged selected or group boxes, for other boxes is ignored.

Mouse(new 11.0) If set, preserves the position where the box was caught by mouse. If set, start drop position will be on the box start. If not set, start drop position will be on mouse position.
Vert(new 11.0) If set, permits moving the box only in vertical direction. The box drop position will not be rounded to GanttUnits.

Since 16.0 there are move actions for Container and box types (Box, Solid, Nbsp, ...) like GanttRunMoveContainer or GanttRunMoveBox, ...

There are also attributes used when dragging with appropriate shift key: GanttRunMoveCtrl, GanttRunMoveAlt, GanttRunMoveShift.

Since 7.0 there are move actions for other mouse buttons (Right and Middle) as the last suffix: GanttRunMoveRight, GanttRunMoveCtrlRight, GanttRunMoveAltRight, GanttRunMoveShiftRight, GanttRunMoveMiddle, GanttRunMoveCtrlMiddle, GanttRunMoveAltMiddle, GanttRunMoveShiftMiddle.

Since 7.0 for touch screens (iPad) are available events for count of fingers on pad, GanttRunMove1, GanttRunMove2, GanttRunMove3, ..., but because by default in Defaults.xml is the MoveGanttRun action attached only to OnDrag1Gantt and OnDrag3Gantt events, only the 1 and 3 prefixes are used. To use the other prefixes, you need to attach the MoveGanttRun to appropriate OnDragXGantt event, but it should not be attached to the same events as ResizeGanttRun or change the value of <Actions GanttSizeTouch>.
new 6.1 <C> <cell> string[ ]

GanttRunAdjust

["Shift"]
How will be moved next or previous boxes when moving some box. Comma separated list of flag keywords, case insensitive. Affects destination cell when moving between cells.
The order of applying Shift / Shrink / Slip / Resize / Move / Error is set by order of the flag keywords in the GanttRunAdjust. Only one flag from Shift / Shrink / Slip should be used.

emptyWhen set nothing, the box will be moved within surrounding empty space only.
ShiftThe box will be moved or resized within surrounding empty space and if required, the next or previous boxes will be shifted and their empty spaces preserved.
ShrinkThe box will be moved or resized within surrounding empty space and if required, the next or previous boxes will be shifted and their empty spaces shrunk.
SlipThe next or previous boxes will be shifted, all empty spaces will be preserved, including the adjacent. If there is fixed box, all the boxes will be moved next to the fixed box.
 
ErrorThe moved box can be moved or resized even if there is no room for it. It permits more boxes on the same place. In this case the boxes can be marked as error boxes or vertically shifted. See also GanttRunError.
Note, for GanttRunMove = Slide it is the only option that can change box order in the cell.
If it is the only option in the GanttRunAdjust, it permits moving and dropping the boxes freely, without affecting other boxes.
 
AllAlso fixed boxes (except Bound) will be shifted if required, for Shift / Shrink / Slip
Nbsp(new 10.0) The Nbsp boxes can be automatically resized like Empty boxes, but they are not automatically deleted.
SingleFor joined box the Shift works as Slip and for empty restricts moving.
(since 10.0) If set with Error, it permits moving also joined box, by adding Empty or (if set Nbsp) Nbsp between them. (deleted 11.0) use GanttRunMove Single instead.

The next flags can be used only with GanttRunMove = Move, Copy or Remove, but not with Slide.
AppendWhen dragged to box edge, attaches it to the box without space as adjacent - the boxes will be joined.
Permits dropping between joined boxes. Cannot drop into Nbsp type box.
AppendNbsp(new 11.0) When dragged to box edge, attaches it to the box with zero length Nbsp type box as adjacent - the boxes will be joined by Nbsp.
When dragged to Nbsp box, splits or replaces the Nbsp box by the dragged box. Does not permit dropping between boxes joined without Nbsp, except if set also Append.
If set both Append and AppendNbsp, it adds always the Nbsp box when joining the boxes.
Between(new 10.0) When dragged to box, it places the source box left or right (nearer edge) next to the destination box or joined boxes, according to other adjust settings. Cannot be used with Error.
Inside(new 9.0) Restrict moving boxes outside the existing boxes (before the first and after the last box).
 
ResizeThe moved box will be resized if there is no room for it.
ResizeNbsp(new 11.0) The Nbsp boxes and Empty boxes (for GanttRunMove = Entire) between the moved boxes will be resized if there is no room for the moved boxes.
MoveThe moved box will be moved left if there is no room for it (also shifting boxes on left side by Shift/Shrink/Slip will be permitted).
Zoom(new 7.0) When copying/moving between grids, the box will preserve its width on screen and its duration will be changed by zoom ratio of the grids.
NoRound(new 11.0) If set, the position of boxes dropped to empty space will not be rounded to GanttDragUnits.
 
Containers(new 13.0) The box gets Containers value according to the drop position. It is possible to use OnGanttRunDrop to set the containers manually (see also methods GetGanttRunContainers() and GetGanttXY()), in this case the flag Containers must not be present.
ContainersDelete(new 13.0) Only with Containers. Removes the parent containers from dropped boxes or containers.
ContainersUnique(new 13.0) Only with Containers. If dropped boxes contain containers already present in the row, the containers will be made unique by adding #X, where X is the number from 1.
ContainersLevels(new 13.0) Only with Containers. Preserves the container level of nesting.
ContainersMerge(new 13.0) Only with Containers + ContainersLevels The dropped containers are removed if dropped to container with the same or higher level.

There are also attributes read when dragging with appropriate shift key and for specific GanttRunMove / GanttRunResize actions:
GanttRunAdjustCtrl, GanttRunAdjustAlt, GanttRunAdjustShift
GanttRunAdjustResize, GanttRunAdjustResizeCtrl, GanttRunAdjustResizeAlt, GanttRunAdjustResizeShift
GanttRunAdjustSlide, GanttRunAdjustSlideCtrl, GanttRunAdjustSlideAlt, GanttRunAdjustSlideShift
GanttRunAdjustMove, GanttRunAdjustMoveCtrl, GanttRunAdjustMoveAlt, GanttRunAdjustMoveShift
GanttRunAdjustCopy, GanttRunAdjustCopyCtrl, GanttRunAdjustCopyAlt, GanttRunAdjustCopyShift
GanttRunAdjustRemove, GanttRunAdjustRemoveCtrl, GanttRunAdjustRemoveAlt, GanttRunAdjustRemoveShift
If the exact attribute is not set, the universal one is used, e.g. the attributes are read in this order: GanttRunAdjustMoveCtrlRight, GanttRunAdjustMove, GanttRunAdjustCtrlRight, GanttRunAdjust.

Since 7.0 there are adjust actions for other mouse buttons (Right and Middle) as the last suffix like GanttRunAdjustRight, GanttRunAdjustCtrlRight, GanttRunAdjustResizeRight, GanttRunAdjustResizeCtrlRight, ...

Since 7.0 for touch screens (iPad) are available events for count of fingers on pad, GanttRunAdjust1, GanttRunAdjust2, GanttRunAdjust3, GanttRunAdjustResize1, GanttRunAdjustResize2, ..., but not all the prefixes are used by default, for more information see the touch postfixes for GanttRunResize and GanttRunMove.
new 7.0 <C> <cell> string[ ]

GanttRunAdjustStart

["Slip"]
Adjust settings used when changed GanttRunStart value.
The supported keywords are empty, Shift, Shrink, Slip, All, Single.
For their meaning see GanttRunAdjust.
new 7.0 <C> <cell> string[ ]

GanttRunAdjustCorrect

["Slip"]
Adjust settings used when moving run during correcting dependencies. Used also when moving GanttSummary children.
The run never resizes during correcting, it means that its duration and also difference between end and start will not change.
The moving is done by trying to move the first box and the last box independently according to the Adjust setting and if the changes differ, the smaller change is applied.
The supported keywords are empty, Shift, Shrink, Slip, All, Single. For their meaning see GanttRunAdjust.
Used only when GanttTask contains "Run". For "Box" use GanttRunCorrectBox.
new 10.0 <C> int

GanttRunCorrectBox

[0]
How will be moved individual Run boxes when correcting dependencies and GanttTask contains "Box", 0 - the boxes will be moved independently on the others, the boxes can overlay as Error boxes.
1 - the boxes will be moved independently on the others, but the boxes cannot overlay - if the boxes overlay, the other boxes are moved.
2 - the boxes cannot change their order, if the box is moved, all other boxes in its way are moved too. Empty spaces are not preserved. Like Adjust Shrink. Note, here the wrong box order can cause the dependencies cannot be corrected.
new 7.0 chg 10.0 <C> bool

GanttRunCorrectFixed

[1]
Used when correcting dependencies. For 1 it will check the run box moving possibility (fixed boxes) like any other constraints.
Since 10.0 the default value is 1.
Set it to 0 if you use long runs without fixed boxes and the whole run is Gantt task, just to speed up the correcting.
new 11.0 <C> int

GanttRunDragObject

[1]
If and how will be shown the dragged box(es) under mouse cursor. It is ignored if set <Cfg ShowDrag='0'/>
0 - show nothing.
1 - show all the boxes in one line, without spaces, overlay and side texts.
2 - behaves like 3 if set Entire in GanttRunMove, otherwise behaves like 1.
3 - show all the boxes in one line including side texts, preserving spaces and overlay.
4 - show all the boxes in more lines according to their vertical positions, including side texts. Preserves spaces and overlay.
If the boxes are placed in more rows, they are also vertically shifted, according to the row heights.
new 6.1 upd 7.0 <C> <cell> string[ ][ ]

GanttRunNew

[1,Box]
One or more boxes that will be created when adding new box to the run, by dragging empty space.
It has the same format as GanttRun.
If it contains more boxes, the last one will be resized by a user while adding the boxes by dragging.
Set it to empty string to forbid adding new boxes.
There are also attributes read when dragging with appropriate shift key: GanttRunNewCtrl, GanttRunNewAlt, GanttRunNewShift.
Since 7.0 there are also attributes for other mouse buttons (Right and Middle) as the last suffix: GanttRunNewRight, GanttRunNewCtrlRight, GanttRunNewAltRight, GanttRunNewShiftRight, GanttRunNewMiddle, GanttRunNewCtrlMiddle, GanttRunNewAltMiddle, GanttRunNewShiftMiddle.
Since 7.0 for touch screens (iPad) are available events for count of fingers on pad, GanttRunNew1, GanttRunNew2, GanttRunNew3, ..., but because by default in Defaults.xml is the NewGanttRun action attached only to OnDrag3Gantt event, these prefixes are ignored. To use them, you need to attach the NewGanttRun to appropriate OnDragXGantt event.
new 6.1 upd 7.0 <C> <cell> string[ ][ ]

GanttRunNewStart

[1,Box]
Setting GanttRunNew when adding new box to the empty run, by dragging empty space.
It can also specify the separators and / or JSON definition for the new Run, e.g. set GanttRunNewStart="[{Duration:1,Type:'Box'}]" to use JSON definition for new runs.
It can contain also some start or end box.
For more information see GanttRunNew.
new 6.1 upd 11.0 <C> <cell> string[ ][ ]

GanttRunTypes

[ ]
List of predefined box types and other attributes to be set to actual box, selected from popup menu.
Used to let a user to change the type, class and other attributes of clicked box from popup menu.
(Since 11.0) It is possible to change also boxes individual state, e.g. to disable all selected boxes or select all boxes in the same group.
Set the State attribute of the boxes as "x+y", where the x is the bit value to set and y the bit value to reset. For example "1+3" sets the disabled/locked state to 1 and does not affect other states.
(Since 11.0) It is possible to change all box attributes except Width and Id. To change State attribute, set it as number (bit array), not as string, see GetGanttRunBox, State attribute.
There are two possible formats:
Array definition
It has the same format as full GanttRun Array definition, except there is the item name (shown in menu) instead of duration as the first item and there are no start/end items.
The menu will be shown as sub menu of the main Gantt menu ChooseGanttRunType item.
The empty values are ignored and not set to the changed box. To clear the attribute, set the value to one space string.
For example: "type1,,,Red;type2,,,Blue;type3,solid,xxx,White"
JSON definition (since 11.0)
It can be also JSON menu, where the individual boxes are defined in Box attribute, with the first parameter ignored. The JSON menu format must start with '{' character.
The menu will be shown as sub menu of the main Gantt menu ChooseGanttRun...Type item.
The Box attribute can be string in GanttRun Array definition, first character separated (as the item, the width is always empty), or string with GanttRun JSON definition or object with GanttRun JSON definition.
For example:'{Menu:1, Items:[{Text:"type1",Box:",,,Red"},{Text:"type2",Box:",,,Blue"},{Text:"type3",Box:",solid,xxx,White"}]}'
The root menu items can have defined different text per source action: TextBox (one), TextRow (in row), TextSelected (selected), TextGroup (row group), TextGroupAll (group) and TextContainer (container).
Or define one Text attribute for all the sources the same. If no Text or specific source Text... attribute is defined, the item is not shown! These texts can contain string "%d" to be replaced by the box count in the source.
If the menu has attribute Include:1, the Items are included directly to the GanttMenu on the place instead of the ChooseGanttRun...Type item.
The menu items can contain also submenus or levels to display this menu in more menus or levels. In unlimited nesting.
For example:'{Include:1,Items:[{Text:"Set box type",Items:[{Name:"box",Box:{Type:"Box"}},{Name:"solid",Box:{Type:"Solid"}}]},{Text:"Set box class",Items:[{Name:"red",Box:{Class:"Red"}},{Name:"blue",Box:{Class:"Blue"}}]}]}'
new 9.1 API event int

OnDragGanttRun

(TGrid grid, TRow row, string col, int index, bool start, int new, int old, int change, int dir, object XY, string keyprefix, int clientX, int clientY)
Called during dragging Run box inside row (for moving box as Slide and for any resizing).
It is called only for GanttRunMove='Slide' and for resizing.
row, col is the Gantt cell.
index is RunIndex of the dragged box inside its source cell.
start is 1 for first loop, 0 for all next loops.
new is new date (as count of milliseconds since 1/1/1970). It is start date of the box for dir==1 or 3 or it is end date for the box for dir==2.
old is original date (as count of milliseconds since 1/1/1970). It is start date of the box for dir==1 or 3 or it is end date for the box for dir==2.
change is actual change of the box edge (old minus new, but in workdays).
dir is dragging direction, 1 left edge (resize), 2 right edge (resize), 3 both edges (move). It controls also the edge specified by new and old.
XY is the dragged Gantt object returned by GetGanttXY.
keyprefix is prefix of shift keys: "Ctrl", "Alt", "Shift" and also mouse button "Right" or "Middle". The key is before the mouse, e.g. keyprefix='CtrlRight'.
clientX, clientY is mouse position on page.
Return null for normal behavior
Return 0 to suppress the last change
Return false to cancel dragging and restore original state
Return true to finish dragging and save this last change
Return integer as new change (in workdays).
new 12.1 API event bool

OnEndDragGanttRun

(TGrid grid, TRow row, string col, int index, object run, int type, int dir, object XY, string keyprefix, int clientX, int clientY)
Called after dragging Run box inside row finished (for moving box as Slide and for any resizing).
It is called only for GanttRunMove='Slide' and for resizing.
row, col is the Gantt cell.
index is RunIndex of the dragged box inside its source cell.
run is the modified run object (like returned by GetGanttRun) to be set to the cell.
type is 0 for normal change of existing box, 1 the box will be deleted, 2 the box was created new.
dir is dragging direction, 1 left edge (resize), 2 right edge (resize), 3 both edges (move).
XY is the dragged Gantt object returned by GetGanttXY.
keyprefix is prefix of shift keys: "Ctrl", "Alt", "Shift" and also mouse button "Right" or "Middle". The key is before the mouse, e.g. keyprefix='CtrlRight'.
clientX, clientY is mouse position on page.
Return true to cancel the change.
new 6.1 chg 10.0 upd 13.0 API event int

OnGanttRunDrop

(TGrid grid,TRow row,string col,bool drop,object src,int index,string keyprefix,int x,int y,TGrid togrid,TRow torow,string tocol,int cellx,bool accept, int celly, string[] containers)
Called during dragging and also when the dragged run box(es) is dropped (distinguished by drop value). It is called also when it is dropped outside any grid.
It is called only for GanttRunMove='Move/Copy/Remove'
grid, row, col is source cell from that is dragged.
drop is false when called during dragging to check if the box can be dropped and true when the box is being dropped. Since 9.1 it is false for start and 0 for next loops.
src is parsed run that is dragged - two dimensional array of the dragged boxes. It is possible to modify this array in the event handler, e.g. change containers ([15]) of the dropped boxes.
index is RunIndex of the dragged box inside its source cell (not in src), if more boxes are dragged together, this is index of the one that was caught by mouse.
keyprefix is prefix of shift keys: "Ctrl", "Alt", "Shift" and (since 7.0) also mouse button "Right" or "Middle". The key is before the mouse, e.g. keyprefix='CtrlRight' x, y is mouse position in page in time of drop, in pixels.
togrid, torow, tocol is destination cell to that is dropped. It can be null if dropped outside any grid.
cellx is drop position inside the destination cell, in pixels.
accept (since 8.0) is actual state, if the box can be dropped here.
celly (new 12.1) is vertical drop position inside the destination cell, in pixels.
containers (new 13.0) is array of source containers, the first one the dragged one and the next are its parent containers. It is null if only boxes are dragged.
Return false to suppress drop, true to permit drop or null to use actual accept state.
(Since 10.0) Or return integer as new position of the drop (cellx). It also sets accept to true.
(Since 11.0) Or return empty string "" to immediately finish the dragging. Only for drop != true. After that, the OnGanttRunDrop is called again with drop = true to get the final result for the drop action.
new 16.4 API method bool

DragGanttRunByMouse

(object tag, Event event, string run, TRow row, string html = null)
Starts dragging run box or run boxes from external source like it is dragged from the grid itself.
tag is HTML tag to be dragged. It is not modified by this function. It is used to get its position, class and innerHTML.
event is standard HTML MouseEvent, the function used its clientX and clientY for placing the ghost object. It is usually mousedown or mousemove event.
run is string or JSON object of the run box(es) that are created in destination grid on drop.
row is a row in source grid that gets the temporary run that is dragged. This row is usually defined in fixed section (Head/Foot) with Visible=0, CanHide=0, NoUpload=1. The Gantt cells attributes for run draggin like GanttRunMove in this row control the run dragging.
html is html to filled into ghost object. If not set, the tag.innerHTML is used.
Returns true for success and false for error.
The function creates temporary GanttRun from the run in Gantt cell in the row. Next it starts dragging the temporary run box(es) from the row to the final destination.
When dropped, the temporary run box(es) is moved to the destination. Or if drop cancelled, nothing is done - the temporary boxes remain in the row and are overwritten on the next drag.
The function creates ghost object under mouse cursor with content of the tag or html.

API

Controlling run boxes by JavaScript
Some other API methods and events are also listed in individual features above in this document

new 6.1 chg 7.0 upd 10.0 API method object

GetGanttRun

(TRow row, string col, string run = null, string start = null)
Returns parsed GanttRun value for given Gantt cell.
Returned object is two dimensional array with the parsed boxes in format: [[duration,type,text,class,tip,id,group,...], [duration,type,text,class,tip,id,group,...], ... ]
If the boxes are not joined, every even item is Empty type box.
The duration (first item) is in pixels milliseconds and without excluded parts. The type (second item) is always set. In 7.0 the duration units were changed from pixels to milliseconds.
It contains also property Start as left position (in milliseconds from the first date in Gantt and without excluded parts) from the cell left edge. Regardless on the first box is start End/Bound type or not.
It contains also property Deleted as array of actually deleted boxes in random order.
(Since 10.0) It contains also properties StartDate and EndDate as the first and last date of the run in milliseconds. These properties are not used by SetGanttRun.
(Since 10.0) If set run parameter, it parses given run string instead of string from GanttRun, start is used as run start date if the run contains only durations.
new 6.1 chg 7.0 API method void

SetGanttRun

(TRow row, string col, object run)
Writes parsed GanttRun into the Run source cell value for given Gantt cell.
The run must be the object returned from GetGanttRun! Never create new run object!
You can get the run object by GetGanttRun, modify its individual boxes and / or Start property and set it back by SetGanttRun. Never create new run object!
The run object is destroyed by the call, it cannot be used later. Use GetGanttRun to get it again.
In 7.0 the duration units were changed from pixels to milliseconds.
new 7.0 chg 10.0 upd 13.0 API method object

GetGanttRunBox

(TRow row, string col, int index) or (TRow row, string col, string id, string group=null)
Returns given box from the Gantt Run cell. Returns null if there is no such box. The col is the Gantt cell.
The box can be identified by number index or by string id, optionally with string group. The id can be number, but must be in string type variable.
Returns object with these properties:
int Index - index of the box inside its Run
int Start - start date in milliseconds
int End - end date in milliseconds, it is affected also by GanttLastUnit value
int Duration - box duration in milliseconds, without excluded dates.
int Left - left side position in chart in pixels, including excluded dates and is affected by zoom
int Width - width of the box in chart in pixels, including excluded dates and is affected by zoom
int Top - (new 8.1) vertical position in row, in pixels, it returns the Top attribute of GanttRun, it does not measure anything
int Height - (new 8.1) height of the box, in pixels, it returns the Height attribute of GanttRun, it does not measure anything
string Type, string Text, string Class, string Tip, string Id, string Group - attributes set for the box
int State - a bit array number of box states (since 10.0) changed from string to number.
1 - disabled, 2 locked, 4 selected, 8 added, 16 deleted, 32 moved, 64 resized, 128 changed.
string Manual, int Complete, string Resources, string TextLeft, string TextRight - (all new 10.0) attributes set for the box
string[] Containers - (new 13.0) array of containers the box is included in.
int Disabled - (new 10.0) disabled state of the box, 0 - no, 1 disabled, 2 locked. Cannot be set by SetGanttRunBox, use State instead.
bool Selected - (new 10.0) if the box is selected. Cannot be set by SetGanttRunBox, use State instead.
TRow Row, string Col - parameters given to the function
object[] Data - (new 7.1) raw box data array (always starting by Width) for access also custom box attributes. Cannot be set by SetGanttRunBox, use SetGanttRun instead.
Since 10.0 the returned object contains also custom attributes defined in GanttRunCustom, they can be also changed by SetGanttRun.
To get a box on given position in pixels, use GetGanttXY and call GetGanttRunBox with the RunIndex returned in object by GetGanttXY.
new 7.0 chg 9.3 API method int

SetGanttRunBox

(object box, string adjust = "", bool test = 0, int minduration = null)
Changes given box. Shows changes in the cell.
Returns 0 if the box does not exist, 1 if the box cannot be changed due adjust, 2 if the box is changed or can be changed.
The box must have set the Row + Index or Id (+Row+Group) attribute to identify it.
adjust is the way how other boxes will be moved when the box position or size is changed, comma separated list of keywords, see GanttRunAdjust.
Since 9.3 the adjust is tested more preciously. If it change cannot be done exactly, it applies the change only when set adjust = Resize or Move, according to these flags.
(Since 9.3) minduration is minimal duration of the box in milliseconds, if applied adjust = Resize. If not set, it is used duration of one GanttUnits.
To change box size you should set only some position attributes: Start+End or Start+Length or End+Length or Left+Width.
If you have box got by GetGanttRunBox and you want to change the Left or Width, you must null its Start, End and Duration attributes. Use null assignment, not delete.
If you have box got by GetGanttRunBox and you want to change the Duration, you must null its Start or End attributes (but not both).
(Since 8.0) For test = 1 does not modify the run, just tests possibility of the change due adjust.
new 7.0 chg 8.0 API method bool

AddGanttRunBox

(object box, string adjust = "", string id = null, string group = null, bool test = 0)
Adds the box to the run. If set id and group, adds it before the box with the given id+group or id as number index. If no such box, adds it to the end.
The box must have set at least Row attribute.
Returns 0 if the box does not exist, 1 if the box cannot be added due adjust, 2 if the box is added or can be added.
(Since 8.0) If the box has set Left or Start attribute and no id is passed, the box is placed and sorted to given position, like the box is dragged.
(Since 8.0) For test = 1 does not modify the run, just tests possibility of the adding due adjust.
new 7.0 upd 9.0 API method bool

DelGanttRunBox

(object box, bool remove, string adjust)
Deletes given box. Shows changes in the cell. If the box does not exist, returns false, otherwise true.
The box must have set the Index or Id (Group) attribute to identify it.
If set remove (since 9.0) it shifts all the next boxes to the left. The adjust controls how the rest of boxes will be moved, default is "slip".
Remember, if you are deleting more boxes found by FindGanttRunBoxes, you must iterate the array from end, to not break down the box indexes!
new 7.0 API method object

ScrollToGanttRunBox

(object box, int type = 0)
Scrolls the box into view.
The box must have set the Index or Id (Group) attribute to identify it.
type is 0 for the smallest scroll, 1 to show the box centered, 2 to show the box on the left.
new 7.0 API method object

GetGanttRunBoxTag

(object box)
Returns outer HTML tag of the given box.
The box must have set the Index or Id (Group) attribute to identify it.
It can be used to mark the box by changing its className or inline style or its firstChild className or inline style.
It should not be used to change box position or size.
new 7.0 upd 10.0 API method object[ ]

FindGanttRunBoxes

(object box, int type = 0, string attrs = "...")
Searches grid for boxes with the same attributes as the given box.
Returns array of the objects, the objects are the same as from GetGanttRunBox method.
attrs (since 10.0) is a list of run box attribute names that are searched for, comma separated. Default value is "Id,Group,Type,Text,Class,Tip".
If the box contains Row property, searches only within this row.
type&1 = 1 - without not expanded children, type&2 = 2 - include hidden rows,
type&4 = 4 - case insensitive search, type&8 = 8 - returns also boxes that contain given string(s)
type&16=16 - searches only editable runs (GanttEdit='run')
type&32=32 - (new 10.0) if set box.Row, searches in all children of the row, otherwise ignored.
new 16.4 API method bool

AddGanttRun

(TRow row, string col, string run)
Adds given run as standard array or JSON string or JSON object definition of GanttRun to the actual GanttRun definition in the row Gantt cell. It adds the run after the existing GanttRun.
The run must have the same format (array definition with the same separators / JSON string / object) as the GanttRun already in the row.
Returns true on success or false for incompatible formats or on other errors.
new 7.0 chg 10.0 API event bool

OnGanttRunBoxChanged

(TGrid grid, object box, object old, int change)
Called after change in any Run box, before the changes are displayed. It is called only when set GanttRunStates="1" (deleted 10.0)
It is called only for box with Id set. In other cases use OnGanttChange / OnGanttChanged events.
The box is actual box settings like returned by GetGanttRunBox. The box is null for deleted box. It has already set its new State.
The old is original box settings before change. The old is null for added box. For deleted box it has set State="deleted", otherwise the original state.
The change (since 10.0) is bit array of the changes done in the box - &1 - changed, &2 - moved, &4 - resized, &8 - created, &16 - deleted.
When box is moved from one row to another, the event is called twice, first for adding the box to new row and next for deleting the box from old row.
When box is deleted, it is often changed to Type="empty" (or "nbsp" if it has joined boxes on both sides), thus OnGanttRunChanged is called for the box change, not for the box delete. The empty and nbsp boxes can be automatically removed later without OnGanttRunBoxChanged call.
If defined this event, all newly created boxes (except bounds and empty) get generated new id "new"+temp index.
Return true if you changed some parameter in box to save the change.
new 7.0 API event bool

OnGanttRunBoxNew

(TGrid grid, object box, bool copy)
Called after new box was created by dragging or the box was copied by dragging with GanttRunMove='Copy'.
copy is 1 if the box was copied, 0 if it was created new. The copied box has still its original Id (duplicate), so you should change it here.
If defined OnGanttRunBoxChanged, this event is called before OnGanttRunBoxChanged and the new box has already set its id "newXXX".
The box is actual box settings like returned by GetGanttRunBox.
Return true if you changed some parameter in box to save the change.

Actions

Interactive run bar

new 7.0 <Actions>

MoveGanttRun

Attached to OnDragGantt, cannot be attached anywhere else
Moves one run box by mouse dragging according to GanttRunMove and GanttRunAdjust settings.
Fails, if mouse is not above run box or the run box is fixed.
new 7.0 <Actions>

ResizeGanttRun

Attached to OnDragGantt, cannot be attached anywhere else
Moves one run box by mouse dragging according to GanttRunResize and GanttRunAdjust settings.
Fails, if mouse is not above run box edge or the run box is solid or its edge is fixed.
new 7.0 upd 10.0 <Actions>

CreateGanttRun

Not attached to any event, can be attached to OnDragGantt
Creates new run box by mouse dragging according to GanttRunNew, GanttRunResize and GanttRunAdjust settings.
Fails, if run box cannot be created here.
Since 10.0 it is not attached to OnDragGantt, it was replaced by CreateGanttBar.
new 10.0 <Actions>

CreateGanttBar

Attached to OnDragGantt, cannot be attached anywhere else
Creates new main or run bar. It creates the one that can be created. It chooses the bar to create according to the y axis.
If more new bars can be created on actual position, it chooses them in this order: main, main1, main2, ..., mainX, run
new 6.1 upd 10.0 <Actions>

DeleteGanttRun

Attached to OnCtrlClickGantt event
Deletes one run box under mouse cursor.
It fails if there is no run box under mouse cursor.
Since 10.0 it is attached to OnCtrlClickGantt event.
new 15.0 <Actions>

RemoveGanttRun

Not attached to any event
Deletes one run box under mouse cursor.
It firsts resizes the box to 0 according to the GanttRunAdjust and next deletes it.
It fails if there is no run box under mouse cursor.
new 7.0 <Actions>

DeleteGanttRunGroup

Not attached to any event
Deletes all boxes in actual row that have the same Group value as the box under mouse cursor .
new 15.0 <Actions>

RemoveGanttRunGroup

Not attached to any event
Deletes all boxes in actual row that have the same Group value as the box under mouse cursor .
It firsts resizes the boxes to 0 according to the GanttRunAdjust and next deletes them.
new 7.0 <Actions>

DeleteGanttRunGroupAll

Not attached to any event
Deletes all boxes in the whole grid that have the same Group value as the box under mouse cursor.
new 7.0 <Actions>

RemoveGanttRunGroupAll

Not attached to any event
Deletes all boxes in the whole grid that have the same Group value as the box under mouse cursor.
It firsts resizes the boxes to 0 according to the GanttRunAdjust and next deletes them.
new 7.0 <Actions>

DeleteGanttRunSelected

Not attached to any event
Deletes all selected boxes in actual or focused row. Or in the whole grid if set GanttRunSelect = 5.
new 7.0 <Actions>

RemoveGanttRunSelected

Not attached to any event
Deletes all selected boxes in actual or focused row. Or in the whole grid if set GanttRunSelect = 5.
It firsts resizes the boxes to 0 according to the GanttRunAdjust and next deletes them.
new 7.0 <Actions>

DeleteGanttRunAll ...FA

Not attached to any event
Deletes all boxes in actual or focused row.
new 10.0 <Actions>

DisableGanttRun

Not attached to any event
Disables or enables Run bar or box if it is under mouse cursor. Chooses according to the GanttTask.
It fails if there is no Run box under mouse cursor or Run is not a Gantt task.
new 10.0 <Actions>

LockGanttRun

Not attached to any event
Locks or unlocks Run bar or box if it is under mouse cursor. Chooses according to the GanttTask.
It fails if there is no Run box under mouse cursor or Run is not a Gantt task.
new 10.0 <Actions>

SelectGanttRun

Attached to OnDblClickGantt event
Inverts selection state of box under mouse cursor.
It fails if there is no run box under mouse cursor or its selection state cannot be changed, see GanttRunSelect.
new 10.0 <Actions>

SelectGanttRunRect

Attached to OnCtrlDragGantt event, can be attached only to On...Drag... events
Selects all boxes in the rectangle created by dragging.
new 13.0 <Actions>

SelectGanttRunRange

Attached to OnCtrlDragGanttHeader event, can be attached only to On...Drag... events
Selects all boxes in all selected or focused rows in the date range created by dragging.
new 10.0 <Actions>

DeselectGanttRunAll

Not attached to any event
Deselects all run boxes in grid.
new 6.1 <Actions>

EditGanttRun

Attached to OnDblClickGantt event
Lets a user to edit text shown on the run box under mouse cursor.
new 6.1 <Actions>

EditGanttRunTip

Not attached to any event
Lets a user to edit text shown as tooltip for the run box under mouse cursor.
new 6.1 <Actions>

ChooseGanttRunType

Not attached to any event
Lets a user to choose type of the run box under mouse cursor. The possible run types are defined by GanttRunTypes.
new 7.0 <Actions>

ChooseGanttRunGroupType

Not attached to any event
Lets a user to choose type of all boxes in the actual row with the same Group value as the box under mouse cursor. The possible run types are defined by GanttRunTypes.
new 7.0 <Actions>

ChooseGanttRunGroupAllType

Not attached to any event
Lets a user to choose type of all boxes in the whole grid with the same Group value as the box under mouse cursor. The possible run types are defined by GanttRunTypes.
new 10.0 <Actions>

ChooseGanttRunSelectedType

Not attached to any event
Lets a user to choose type of all selected boxes as the box under mouse cursor. The possible run types are defined by GanttRunTypes.
new 11.0 <Actions>

ChooseGanttRunRowType

Not attached to any event
Lets a user to choose type of all boxes in the actual row. The possible run types are defined by GanttRunTypes.
new 11.0 <Actions>

JoinSelectedGanttRun

Not attached to any event
Joins all adjacent selected boxes or selected boxes separated only by Empty boxes.
It replaces all Empty boxes between selected boxes by Nbsp boxes.
new 11.0 <Actions>

SplitJoinedGanttRun

Not attached to any event
Splits all boxes joined by nbsp to the actual box or its joined boxes.
It replaces all Nbsp boxes between the joined boxes by Empty boxes.
new 11.0 <Actions>

JoinAdjacentGanttRun

Not attached to any event
Joins all adjacent boxes to the actual box. It deletes all the zero length Empty boxes.
new 11.0 <Actions>

SplitAdjacentGanttRun

Not attached to any event
Splits all boxes directly joined to the actual box or its joined boxes.
It adds Empty boxes between the joined boxes.
new 7.0 <Actions>

SetGanttRunPercent

Attached to OnCtrlRightClickGantt event
Changes % of completed to position under mouse cursor.
It fails if mouse is not above Run bar.
new 7.0 <Actions>

EditGanttRunPercent

Attached to OnShiftRightClickGantt event
Lets a user to edit percentage completion of the run set by GanttRunComplete.
new 7.0 <Actions>

EditGanttRunText

Not attached to any even
Lets a user to edit the text for whole task in GanttRunText.
chg 10.0 <Actions>

NewGanttMilestone

Attached to OnDblClickGantt event
Adds new start milestone or run milestone. It creates the one that can be created. It chooses the bar to create according to the y axis.
If more new bars can be created on actual position, it chooses them in this order: main, main1, main2, ..., mainX, run
Before 10.0 its functionality was the same as NewGanttStartMilestone.
new 7.0 upd 10.0 <Actions>

NewGanttRunMilestone

Not attached to any event
Adds new Run box with zero duration and type Milestone. There can be more milestones defined by Run in one cell.
Since 10.0 it is not attached to OnDblClickGantt event, it is replaced by NewGanttMilestone.
new 7.0 <Actions>

NewGanttRunStop

Not attached to any event
Adds new Run box with zero duration and type Stop (not movable milestone). There can be more milestones defined by Run in one cell.
new 10.0 <Actions>

SplitGanttRun

Attached to OnShiftClickGantt event
Splits run box under mouse cursor on actual position to two boxes.

Formulas

new 6.2 formula int

ganttrunstart

(string ganttcol)
Calculates start date (in milliseconds) of one Run.
ganttcol - column showing the Gantt chart, it should contain the Run bars.
new 6.2 formula int

ganttrunend

(string ganttcol)
Calculates end date (in milliseconds) of one Run.
ganttcol - column showing the Gantt chart, it should contain the Run bars.
new 7.0 formula int

ganttrunduration

(string ganttcol)
Calculates duration of the run, without empty spaces and start/end boxes.
Returns value in GanttDataUnits.
ganttcol - column showing the Gantt chart, it should contain the Run bars.