43:
How do I add Start/End columns

METHOD OCX_Exontrol1HostEvent(EventID) CLASS MainDialog
	// HostEvent event - Notifies the application once the host fires an event.
	OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[HostEventParam,-2]) ))
RETURN NIL

local var_Chart as IChart
local var_Column,var_Column1 as IColumn
local var_G2antt as IG2antt

oDCOCX_Exontrol1:HostReadOnly := exHostReadWrite | exHostAllowAddEmptyItem
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_G2antt:SingleSel := false
	var_G2antt:OnResizeControl := 1
	var_G2antt:ScrollBars := 0x800 | exDisableNoVertical
	var_Column := IColumn{var_G2antt:Columns:Add("Start")}
		var_Column:AllowSizing := false
		var_Column:[Def,18] := 1
		var_Column:Editor:EditType := 7
	var_Column1 := IColumn{var_G2antt:Columns:Add("End")}
		var_Column1:AllowSizing := false
		var_Column1:[Def,18] := 2
		var_Column1:Editor:EditType := 7
	var_G2antt:Items:AllowCellValueToItemBar := true
	var_Chart := var_G2antt:Chart
		var_Chart:AllowCreateBar := 1
		var_Chart:[PaneWidth,false] := 256
		var_Chart:Bars:[Item,"Task"]:OverlaidType := exOverlaidBarsStackAutoArrange | exOverlaidBarsStack

42:
How do I hide the left/items/columns part of the control

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Bar as IBar
local var_Chart as IChart
local var_G2antt as IG2antt

// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_Bar := IG2antt{oDCOCX_Exontrol1:Host}:Chart:Bars:[Item,"Task"]
	var_Bar:Pattern := 1
	var_Bar:Color := RGB(0,0,255)
	var_Bar:[Def,19] := 50
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataSource,"Tasks"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Tasks"] := "EmployeeDetails"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := "Tasks"
oDCOCX_Exontrol1:[DataField,exTasksItemID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exTasksStart] := "DateStart"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "DateEnd"
oDCOCX_Exontrol1:[DataField,exTasksID] := "TaskID"
oDCOCX_Exontrol1:[DataField,exTasksColor] := "Color"
oDCOCX_Exontrol1:[DataField,exTasksCaption] := "TaskName"
IG2antt{oDCOCX_Exontrol1:Host}:Items:[ExpandItem,0] := true
oDCOCX_Exontrol1:HostReadOnly := exHostReadWrite | exHostAllowAddEmptyItem
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_G2antt:OnResizeControl := exDisableSplitter | exResizeChart
	var_Chart := var_G2antt:Chart
		var_Chart:ColumnsFormatLevel := "1"
		var_Chart:[PaneWidth,false] := 0
		var_Chart:ScrollTo(SToD("20170527"),1)

41:
How do I hide the right/chart/tasks part of the control

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Bar as IBar
local var_Chart as IChart
local var_G2antt as IG2antt

// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_Bar := IG2antt{oDCOCX_Exontrol1:Host}:Chart:Bars:[Item,"Task"]
	var_Bar:Pattern := 1
	var_Bar:Color := RGB(0,0,255)
	var_Bar:[Def,19] := 50
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataSource,"Tasks"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Tasks"] := "EmployeeDetails"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := "Tasks"
oDCOCX_Exontrol1:[DataField,exTasksItemID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exTasksStart] := "DateStart"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "DateEnd"
oDCOCX_Exontrol1:[DataField,exTasksID] := "TaskID"
oDCOCX_Exontrol1:[DataField,exTasksColor] := "Color"
oDCOCX_Exontrol1:[DataField,exTasksCaption] := "TaskName"
IG2antt{oDCOCX_Exontrol1:Host}:Items:[ExpandItem,0] := true
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_Chart := var_G2antt:Chart
		var_Chart:[PaneWidth,true] := 0
		var_Chart:OverviewVisible := 0

40:
How do hide the top/overview part of the control

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Chart as IChart
local var_G2antt as IG2antt

oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := oDCOCX_Exontrol1:[DataField,exItemsDataSource]
oDCOCX_Exontrol1:[DataField,exTasksStart] := "BirthDate"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "HireDate"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_Chart := var_G2antt:Chart
		var_Chart:OverviewVisible := 0
		var_Chart:[PaneWidth,false] := 256
		var_Chart:ScrollTo(SToD("19690427"),1)

39:
How do I resize the panels

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Bar as IBar
local var_Chart as IChart
local var_G2antt as IG2antt

// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_G2antt:VisualAppearance:Add(1,"C:\Program Files\Exontrol\ExG2Host\Sample\EBN\Assorted\wbs-ass.ebn")
	var_Bar := var_G2antt:Chart:Bars:[Item,"Task"]
		var_Bar:Height := 15
		var_Bar:Color := 0x1ff0000
		var_Bar:OverlaidType := exOverlaidBarsStackAutoArrange | exOverlaidBarsStack
		var_Bar:OverlaidGroup := "Task,Progress"
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataSource,"Tasks"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Tasks"] := "EmployeeDetails"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := "Tasks"
oDCOCX_Exontrol1:[DataField,exTasksItemID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exTasksStart] := "DateStart"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "DateEnd"
oDCOCX_Exontrol1:[DataField,exTasksID] := "TaskID"
oDCOCX_Exontrol1:[DataField,exTasksColor] := "Color"
oDCOCX_Exontrol1:[DataField,exTasksCaption] := "TaskName"
IG2antt{oDCOCX_Exontrol1:Host}:Items:[ExpandItem,0] := true
var_Chart := IG2antt{oDCOCX_Exontrol1:Host}:Chart
	var_Chart:[PaneWidth,false] := 128
	var_Chart:ScrollTo(SToD("20170527"),1)

38:
How do I lock the first column

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_G2antt as IG2antt

oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_G2antt:CountLockedColumns := 1
	var_G2antt:BackColorLock := var_G2antt:BackColorAlternate

37:
How do I specify a different color for the tasks ( EBN color )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Bar as IBar
local var_G2antt as IG2antt

// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_G2antt:VisualAppearance:Add(1,"C:\Program Files\Exontrol\ExG2Host\Sample\EBN\Assorted\wbs-ass.ebn")
	var_Bar := var_G2antt:Chart:Bars:[Item,"Task"]
		var_Bar:Height := 15
		var_Bar:Color := 0x1ff0000
		var_Bar:OverlaidType := exOverlaidBarsStackAutoArrange | exOverlaidBarsStack
		var_Bar:OverlaidGroup := "Task,Progress"
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataSource,"Tasks"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Tasks"] := "EmployeeDetails"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := "Tasks"
oDCOCX_Exontrol1:[DataField,exTasksItemID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exTasksStart] := "DateStart"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "DateEnd"
oDCOCX_Exontrol1:[DataField,exTasksID] := "TaskID"
oDCOCX_Exontrol1:[DataField,exTasksColor] := "Color"
oDCOCX_Exontrol1:[DataField,exTasksCaption] := "TaskName"
IG2antt{oDCOCX_Exontrol1:Host}:Items:[ExpandItem,0] := true
IG2antt{oDCOCX_Exontrol1:Host}:Chart:[PaneWidth,false] := 256
IG2antt{oDCOCX_Exontrol1:Host}:Chart:ScrollTo(SToD("20170527"),1)

36:
How do I specify a different color for the tasks ( solid color, transparent )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Bar as IBar

// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_Bar := IG2antt{oDCOCX_Exontrol1:Host}:Chart:Bars:[Item,"Task"]
	var_Bar:Pattern := 1
	var_Bar:Color := RGB(0,0,255)
	var_Bar:[Def,19] := 50
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataSource,"Tasks"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Tasks"] := "EmployeeDetails"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := "Tasks"
oDCOCX_Exontrol1:[DataField,exTasksItemID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exTasksStart] := "DateStart"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "DateEnd"
oDCOCX_Exontrol1:[DataField,exTasksID] := "TaskID"
oDCOCX_Exontrol1:[DataField,exTasksColor] := "Color"
oDCOCX_Exontrol1:[DataField,exTasksCaption] := "TaskName"
IG2antt{oDCOCX_Exontrol1:Host}:Items:[ExpandItem,0] := true
IG2antt{oDCOCX_Exontrol1:Host}:Chart:[PaneWidth,false] := 256
IG2antt{oDCOCX_Exontrol1:Host}:Chart:ScrollTo(SToD("20170527"),1)

35:
GroupBy

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Bar as IBar
local var_Column as IColumn
local var_G2antt as IG2antt

oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataSource,"Tasks"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Tasks"] := "EmployeeDetails"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := "Tasks"
oDCOCX_Exontrol1:[DataField,exTasksItemID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exTasksStart] := "DateStart"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "DateEnd"
oDCOCX_Exontrol1:[DataField,exTasksID] := "TaskID"
oDCOCX_Exontrol1:[DataSource,"Links"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Links"] := "EmployeeLinks"
oDCOCX_Exontrol1:[DataField,exLinksDataSource] := "Links"
oDCOCX_Exontrol1:[DataField,exLinksStart] := "Start"
oDCOCX_Exontrol1:[DataField,exLinksEnd] := "End"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_G2antt:AllowGroupBy := true
	var_G2antt:SortBarVisible := true
	var_G2antt:BackColorSortBar := oDCOCX_Exontrol1IG2antt{:Host}:BackColor
	var_G2antt:BackColorSortBarCaption := var_G2antt:BackColorSortBar
	var_G2antt:SortBarCaption := "<sha ;;0><fgcolor=FF0000>Drag a <b>column</b> header here to sort by that column."
	var_Bar := var_G2antt:Chart:Bars:[Item,"Task"]
		var_Bar:OverlaidType := exOverlaidBarsStackAutoArrange | exOverlaidBarsStack
		var_Bar:OverlaidGroup := "Task,Progress"
	var_G2antt:Items:[ExpandItem,0] := true
	var_G2antt:CountLockedColumns := 1
	var_G2antt:BackColorLock := var_G2antt:BackColorAlternate
	var_Column := var_G2antt:Columns:[Item,"EmployeeID"]
		var_Column:AllowGroupBy := false
		var_Column:[Def,7] := oDCOCX_Exontrol1IG2antt{:Host}:BackColorAlternate
	var_G2antt:Columns:[Item,"Title"]:SortOrder := 1
IG2antt{oDCOCX_Exontrol1:Host}:Chart:ScrollTo(SToD("20170527"),1)

34:
How can I hide a column
METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
IG2antt{oDCOCX_Exontrol1:Host}:Columns:[Item,0]:Visible := false

33:
Can row errors being highligted until the user correct them, not to clear them as soon a change occurs

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[HostDef,exErrorClearOnChange] := false

32:
No error is highligthed

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"

31:
I've noticed that rows with errors are shown in red. Is it possible to change the colors

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[HostDef,exErrorBackColor] := 0
oDCOCX_Exontrol1:[HostDef,exErrorForeColor] := 16777215

30:
Is it possible to rename the (New) to something else

local var_G2antt as IG2antt

oDCOCX_Exontrol1:[HostDef,exNew] := "*"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_G2antt:BeginUpdate()
	var_G2antt:Items:AddItem("A")
	var_G2antt:Items:AddItem("B")
	var_G2antt:EndUpdate()
oDCOCX_Exontrol1:Refresh()

29:
How can I hide the (New) item (sample 2)

local var_G2antt as IG2antt

oDCOCX_Exontrol1:HostReadOnly := exHostAllowUpdate | exHostAllowDelete
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_G2antt:BeginUpdate()
	var_G2antt:Items:AddItem("A")
	var_G2antt:Items:AddItem("B")
	var_G2antt:EndUpdate()

28:
How can I hide the (New) item (sample 1)

local var_G2antt as IG2antt

oDCOCX_Exontrol1:[HostDef,exNew] := ""
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_G2antt:BeginUpdate()
	var_G2antt:Items:AddItem("A")
	var_G2antt:Items:AddItem("B")
	var_G2antt:EndUpdate()
oDCOCX_Exontrol1:Refresh()

27:
Read-Only

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:HostReadOnly := exHostReadOnly

26:
How can I prevent user create new /delete tasks ( only move or resize then )
METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Bar as IBar

oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataSource,"Tasks"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Tasks"] := "EmployeeDetails"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := "Tasks"
oDCOCX_Exontrol1:[DataField,exTasksItemID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exTasksStart] := "DateStart"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "DateEnd"
oDCOCX_Exontrol1:[DataField,exTasksID] := "TaskID"
oDCOCX_Exontrol1:[DataSource,"Links"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Links"] := "EmployeeLinks"
oDCOCX_Exontrol1:[DataField,exLinksDataSource] := "Links"
oDCOCX_Exontrol1:[DataField,exLinksStart] := "Start"
oDCOCX_Exontrol1:[DataField,exLinksEnd] := "End"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_Bar := IG2antt{oDCOCX_Exontrol1:Host}:Chart:Bars:[Item,"Task"]
	var_Bar:OverlaidType := exOverlaidBarsStackAutoArrange | exOverlaidBarsStack
	var_Bar:OverlaidGroup := "Task,Progress"
IG2antt{oDCOCX_Exontrol1:Host}:Items:[ExpandItem,0] := true
oDCOCX_Exontrol1:HostReadOnly := exHostAllowUpdate
IG2antt{oDCOCX_Exontrol1:Host}:Chart:ScrollTo(SToD("20170527"),1)

25:
How do I get the row/item/task/link from the cursor

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

METHOD OCX_Exontrol1HostEvent(EventID) CLASS MainDialog
	// HostEvent event - Notifies the application once the host fires an event.
	OutputDebugString(String2Psz( oDCOCX_Exontrol1:HostContext:ToString ))
RETURN NIL


oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:HostReadOnly := exHostAllowUpdate | exHostAllowAddNew

24:
Disable Delete
METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:HostReadOnly := exHostAllowUpdate | exHostAllowAddNew

23:
Disable AddNew

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:HostReadOnly := exHostAllowUpdate | exHostAllowDelete

22:
ACCDB sample ( file )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Bar as IBar

oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataSource,"Tasks"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Tasks"] := "EmployeeDetails"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := "Tasks"
oDCOCX_Exontrol1:[DataField,exTasksItemID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exTasksStart] := "DateStart"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "DateEnd"
oDCOCX_Exontrol1:[DataField,exTasksID] := "TaskID"
oDCOCX_Exontrol1:[DataSource,"Links"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Links"] := "EmployeeLinks"
oDCOCX_Exontrol1:[DataField,exLinksDataSource] := "Links"
oDCOCX_Exontrol1:[DataField,exLinksStart] := "Start"
oDCOCX_Exontrol1:[DataField,exLinksEnd] := "End"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_Bar := IG2antt{oDCOCX_Exontrol1:Host}:Chart:Bars:[Item,"Task"]
	var_Bar:OverlaidType := exOverlaidBarsStackAutoArrange | exOverlaidBarsStack
	var_Bar:OverlaidGroup := "Task,Progress"
IG2antt{oDCOCX_Exontrol1:Host}:Items:[ExpandItem,0] := true
IG2antt{oDCOCX_Exontrol1:Host}:Chart:ScrollTo(SToD("20170527"),1)

21:
MDB sample ( file )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Bar as IBar

oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.mdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataSource,"Tasks"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Tasks"] := "EmployeeDetails"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := "Tasks"
oDCOCX_Exontrol1:[DataField,exTasksItemID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exTasksStart] := "DateStart"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "DateEnd"
oDCOCX_Exontrol1:[DataField,exTasksID] := "TaskID"
oDCOCX_Exontrol1:[DataSource,"Links"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Links"] := "EmployeeLinks"
oDCOCX_Exontrol1:[DataField,exLinksDataSource] := "Links"
oDCOCX_Exontrol1:[DataField,exLinksStart] := "Start"
oDCOCX_Exontrol1:[DataField,exLinksEnd] := "End"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_Bar := IG2antt{oDCOCX_Exontrol1:Host}:Chart:Bars:[Item,"Task"]
	var_Bar:OverlaidType := exOverlaidBarsStackAutoArrange | exOverlaidBarsStack
	var_Bar:OverlaidGroup := "Task,Progress"
IG2antt{oDCOCX_Exontrol1:Host}:Items:[ExpandItem,0] := true
IG2antt{oDCOCX_Exontrol1:Host}:Chart:ScrollTo(SToD("20170527"),1)

20:
DBF sample ( file )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.dbf"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"

19:
DAO sample ( object, DAO.DBEngine.120, multiple tasks, multiple tables )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Database as Database
local var_Bar as IBar
local rsEmployees,rsLinks,rsTasks as Recordset2
local var_PrivDBEngine as _DBEngine

// Generate Source for 'Microsoft Office 12.0 Access database engine Object Library(ACEDAO.DLL)' server from Tools\Automation Server...
var_PrivDBEngine := _DBEngine{"DAO.DBEngine.120"}
	var_Database := var_PrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb",nil,nil,nil)
		rsEmployees := Recordset2{var_Database:OpenRecordset("Employees",nil,nil,nil)}
		rsTasks := Recordset2{var_Database:OpenRecordset("EmployeeDetails",nil,nil,nil)}
		rsLinks := Recordset2{var_Database:OpenRecordset("EmployeeLinks",nil,nil,nil)}
oDCOCX_Exontrol1:[DataSource,"Items"] := Recordset2{rsEmployees}
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataSource,"Tasks"] := Recordset2{rsTasks}
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := "Tasks"
oDCOCX_Exontrol1:[DataField,exTasksItemID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exTasksStart] := "DateStart"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "DateEnd"
oDCOCX_Exontrol1:[DataField,exTasksID] := "TaskID"
oDCOCX_Exontrol1:[DataSource,"Links"] := Recordset2{rsLinks}
oDCOCX_Exontrol1:[DataField,exLinksDataSource] := "Links"
oDCOCX_Exontrol1:[DataField,exLinksStart] := "Start"
oDCOCX_Exontrol1:[DataField,exLinksEnd] := "End"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_Bar := IG2antt{oDCOCX_Exontrol1:Host}:Chart:Bars:[Item,"Task"]
	var_Bar:OverlaidType := exOverlaidBarsStackAutoArrange | exOverlaidBarsStack
	var_Bar:OverlaidGroup := "Task,Progress"
IG2antt{oDCOCX_Exontrol1:Host}:Items:[ExpandItem,0] := true
IG2antt{oDCOCX_Exontrol1:Host}:Chart:ScrollTo(SToD("20170527"),1)

18:
DAO sample ( file, multiple tasks, multiple tables )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Bar as IBar

oDCOCX_Exontrol1:[DataTechnology,"Items"] := "DAO.DBEngine.120;DAO.DBEngine.36"
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataTechnology,"Tasks"] := "DAO.DBEngine.120;DAO.DBEngine.36"
oDCOCX_Exontrol1:[DataSource,"Tasks"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Tasks"] := "EmployeeDetails"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := "Tasks"
oDCOCX_Exontrol1:[DataField,exTasksItemID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exTasksStart] := "DateStart"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "DateEnd"
oDCOCX_Exontrol1:[DataField,exTasksID] := "TaskID"
oDCOCX_Exontrol1:[DataTechnology,"Links"] := "DAO.DBEngine.120;DAO.DBEngine.36"
oDCOCX_Exontrol1:[DataSource,"Links"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Links"] := "EmployeeLinks"
oDCOCX_Exontrol1:[DataField,exLinksDataSource] := "Links"
oDCOCX_Exontrol1:[DataField,exLinksStart] := "Start"
oDCOCX_Exontrol1:[DataField,exLinksEnd] := "End"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_Bar := IG2antt{oDCOCX_Exontrol1:Host}:Chart:Bars:[Item,"Task"]
	var_Bar:OverlaidType := exOverlaidBarsStackAutoArrange | exOverlaidBarsStack
	var_Bar:OverlaidGroup := "Task,Progress"
IG2antt{oDCOCX_Exontrol1:Host}:Items:[ExpandItem,0] := true
IG2antt{oDCOCX_Exontrol1:Host}:Chart:ScrollTo(SToD("20170527"),1)

17:
DAO sample ( object, DAO.DBEngine.120, single task, single table )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Database as Database
local rsEmployees,rsLinks as Recordset2
local var_PrivDBEngine as _DBEngine

// Generate Source for 'Microsoft Office 12.0 Access database engine Object Library(ACEDAO.DLL)' server from Tools\Automation Server...
var_PrivDBEngine := _DBEngine{"DAO.DBEngine.120"}
	var_Database := var_PrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb",nil,nil,nil)
		rsEmployees := Recordset2{var_Database:OpenRecordset("Employees",nil,nil,nil)}
		rsLinks := Recordset2{var_Database:OpenRecordset("EmployeeLinks",nil,nil,nil)}
oDCOCX_Exontrol1:[DataSource,"Items"] := Recordset2{rsEmployees}
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := oDCOCX_Exontrol1:[DataField,exItemsDataSource]
oDCOCX_Exontrol1:[DataField,exTasksStart] := "BirthDate"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "HireDate"
oDCOCX_Exontrol1:[DataSource,"Links"] := Recordset2{rsLinks}
oDCOCX_Exontrol1:[DataField,exLinksDataSource] := "Links"
oDCOCX_Exontrol1:[DataField,exLinksStart] := "Start"
oDCOCX_Exontrol1:[DataField,exLinksEnd] := "End"

16:
DAO sample ( file, single task, single table )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataTechnology,"Items"] := "DAO.DBEngine.120;DAO.DBEngine.36"
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := oDCOCX_Exontrol1:[DataField,exItemsDataSource]
oDCOCX_Exontrol1:[DataField,exTasksStart] := "BirthDate"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "HireDate"
oDCOCX_Exontrol1:[DataTechnology,"Links"] := "DAO.DBEngine.120;DAO.DBEngine.36"
oDCOCX_Exontrol1:[DataSource,"Links"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Links"] := "EmployeeLinks"
oDCOCX_Exontrol1:[DataField,exLinksDataSource] := "Links"
oDCOCX_Exontrol1:[DataField,exLinksStart] := "Start"
oDCOCX_Exontrol1:[DataField,exLinksEnd] := "End"

15:
DAO sample ( tree recordset )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataTechnology,"Items"] := "DAO.DBEngine.120;DAO.DBEngine.36"
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"

14:
DAO sample ( flat recordset )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Database as Database
local rsEmployees as Recordset2
local var_PrivDBEngine as _DBEngine

// Generate Source for 'Microsoft Office 12.0 Access database engine Object Library(ACEDAO.DLL)' server from Tools\Automation Server...
var_PrivDBEngine := _DBEngine{"DAO.DBEngine.120"}
	var_Database := var_PrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb",nil,nil,nil)
		rsEmployees := Recordset2{var_Database:OpenRecordset("Employees",nil,nil,nil)}
oDCOCX_Exontrol1:[DataSource,"Items"] := Recordset2{rsEmployees}
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"

13:
DAO sample ( flat )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataTechnology,"Items"] := "DAO.DBEngine.120;DAO.DBEngine.36"
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"

12:
ADO sample ( object, ADODB.Recordset, multiple tasks )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Bar as IBar
local rsEmployees,rsLinks,rsTasks as _Recordset

// Generate Source for 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' server from Tools\Automation Server...
rsEmployees := _Recordset{"ADODB.Recordset"}
rsEmployees:Open("Employees","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb",3,3,0)
oDCOCX_Exontrol1:[DataSource,"Items"] := _Recordset{rsEmployees}
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
rsTasks := _Recordset{"ADODB.Recordset"}
rsTasks:Open("EmployeeDetails","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb",3,3,0)
oDCOCX_Exontrol1:[DataSource,"Tasks"] := _Recordset{rstasks}
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := "Tasks"
oDCOCX_Exontrol1:[DataField,exTasksItemID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exTasksStart] := "DateStart"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "DateEnd"
oDCOCX_Exontrol1:[DataField,exTasksID] := "TaskID"
rsLinks := _Recordset{"ADODB.Recordset"}
rsLinks:Open("EmployeeLinks","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb",3,3,0)
oDCOCX_Exontrol1:[DataSource,"Links"] := _Recordset{rsLinks}
oDCOCX_Exontrol1:[DataField,exLinksDataSource] := "Links"
oDCOCX_Exontrol1:[DataField,exLinksStart] := "Start"
oDCOCX_Exontrol1:[DataField,exLinksEnd] := "End"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_Bar := IG2antt{oDCOCX_Exontrol1:Host}:Chart:Bars:[Item,"Task"]
	var_Bar:OverlaidType := exOverlaidBarsStackAutoArrange | exOverlaidBarsStack
	var_Bar:OverlaidGroup := "Task,Progress"
IG2antt{oDCOCX_Exontrol1:Host}:Items:[ExpandItem,0] := true
IG2antt{oDCOCX_Exontrol1:Host}:Chart:ScrollTo(SToD("20170527"),1)

11:
ADO sample ( file, multiple tasks, multiple tables )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_Bar as IBar

oDCOCX_Exontrol1:[DataTechnology,"Items"] := "ADODB.Recordset;ADOR.Recordset"
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataTechnology,"Tasks"] := "ADODB.Recordset;ADOR.Recordset"
oDCOCX_Exontrol1:[DataSource,"Tasks"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Tasks"] := "EmployeeDetails"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := "Tasks"
oDCOCX_Exontrol1:[DataField,exTasksItemID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exTasksStart] := "DateStart"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "DateEnd"
oDCOCX_Exontrol1:[DataField,exTasksID] := "TaskID"
oDCOCX_Exontrol1:[DataTechnology,"Links"] := "ADODB.Recordset;ADOR.Recordset"
oDCOCX_Exontrol1:[DataSource,"Links"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Links"] := "EmployeeLinks"
oDCOCX_Exontrol1:[DataField,exLinksDataSource] := "Links"
oDCOCX_Exontrol1:[DataField,exLinksStart] := "Start"
oDCOCX_Exontrol1:[DataField,exLinksEnd] := "End"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_Bar := IG2antt{oDCOCX_Exontrol1:Host}:Chart:Bars:[Item,"Task"]
	var_Bar:OverlaidType := exOverlaidBarsStackAutoArrange | exOverlaidBarsStack
	var_Bar:OverlaidGroup := "Task,Progress"
IG2antt{oDCOCX_Exontrol1:Host}:Items:[ExpandItem,0] := true
IG2antt{oDCOCX_Exontrol1:Host}:Chart:ScrollTo(SToD("20170527"),1)

10:
ADO sample ( object, ADODB.Recordset, single task, single table )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local rsEmployees,rsLinks as _Recordset

// Generate Source for 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' server from Tools\Automation Server...
rsEmployees := _Recordset{"ADODB.Recordset"}
rsEmployees:Open("Employees","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb",3,3,0)
oDCOCX_Exontrol1:[DataSource,"Items"] := _Recordset{rsEmployees}
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := oDCOCX_Exontrol1:[DataField,exItemsDataSource]
oDCOCX_Exontrol1:[DataField,exTasksStart] := "BirthDate"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "HireDate"
rsLinks := _Recordset{"ADODB.Recordset"}
rsLinks:Open("EmployeeLinks","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb",3,3,0)
oDCOCX_Exontrol1:[DataSource,"Links"] := _Recordset{rsLinks}
oDCOCX_Exontrol1:[DataField,exLinksDataSource] := "Links"
oDCOCX_Exontrol1:[DataField,exLinksStart] := "Start"
oDCOCX_Exontrol1:[DataField,exLinksEnd] := "End"

9:
ADO sample ( file, single task, single table )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataTechnology,"Items"] := "ADODB.Recordset;ADOR.Recordset"
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"
oDCOCX_Exontrol1:[DataField,exTasksDataSource] := oDCOCX_Exontrol1:[DataField,exItemsDataSource]
oDCOCX_Exontrol1:[DataField,exTasksStart] := "BirthDate"
oDCOCX_Exontrol1:[DataField,exTasksEnd] := "HireDate"
oDCOCX_Exontrol1:[DataTechnology,"Links"] := "ADODB.Recordset;ADOR.Recordset"
oDCOCX_Exontrol1:[DataSource,"Links"] := oDCOCX_Exontrol1:[DataSource,"Items"]
oDCOCX_Exontrol1:[DataMember,"Links"] := "EmployeeLinks"
oDCOCX_Exontrol1:[DataField,exLinksDataSource] := "Links"
oDCOCX_Exontrol1:[DataField,exLinksStart] := "Start"
oDCOCX_Exontrol1:[DataField,exLinksEnd] := "End"

8:
ADO sample ( tree recordset )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataTechnology,"Items"] := "ADODB.Recordset;ADOR.Recordset"
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
oDCOCX_Exontrol1:[DataField,exItemsID] := "EmployeeID"
oDCOCX_Exontrol1:[DataField,exItemsParentID] := "ReportsTo"

7:
ADO sample ( flat recordset )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local rsEmployees as _Recordset

// Generate Source for 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' server from Tools\Automation Server...
rsEmployees := _Recordset{"ADODB.Recordset"}
rsEmployees:Open("Employees","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb",3,3,0)
oDCOCX_Exontrol1:[DataSource,"Items"] := _Recordset{rsEmployees}
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"

6:
ADO sample ( flat table )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL


oDCOCX_Exontrol1:[DataTechnology,"Items"] := "ADODB.Recordset;ADOR.Recordset"
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.accdb"
oDCOCX_Exontrol1:[DataMember,"Items"] := "Employees"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"

5:
XML sample ( object, MSXML.DOMDocument )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_G2antt as IG2antt
local xml as IXMLDOMDocument2

// Generate Source for 'Microsoft XML, v3.0(msxml3.dll)' server from Tools\Automation Server...
xml := IXMLDOMDocument2{"MSXML.DOMDocument"}
xml:async := false
xml:load("C:\Program Files\Exontrol\ExG2Host\Sample\sample.xml")
oDCOCX_Exontrol1:[DataSource,"Items"] := IXMLDOMDocument2{xml}
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_G2antt:LinesAtRoot := -1
	var_G2antt:SingleSel := false
	var_G2antt:AutoDrag := 3

4:
XML sample ( file tree )

METHOD OCX_Exontrol1Error(Error,Description) CLASS MainDialog
	// Error event - Fired when an internal error occurs.
	OutputDebugString(String2Psz( AsString(Error) ))
	OutputDebugString(String2Psz( AsString(Description) ))
RETURN NIL

local var_G2antt as IG2antt

oDCOCX_Exontrol1:[DataTechnology,"Items"] := "MSXML.DOMDocument"
oDCOCX_Exontrol1:[DataSource,"Items"] := "C:\Program Files\Exontrol\ExG2Host\Sample\sample.xml"
oDCOCX_Exontrol1:[DataField,exItemsDataSource] := "Items"
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_G2antt:LinesAtRoot := -1
	var_G2antt:SingleSel := false
	var_G2antt:AutoDrag := 3

3:
How can I let user create new items/bars when clicking the empty area of the control
METHOD OCX_Exontrol1HostEvent(EventID) CLASS MainDialog
	// HostEvent event - Notifies the application once the host fires an event.
	OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[HostEventParam,-2]) ))
RETURN NIL

local var_Chart as IChart
local var_G2antt as IG2antt

oDCOCX_Exontrol1:HostReadOnly := exHostReadWrite | exHostAllowAddEmptyItem
// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_G2antt:ScrollBars := 0x800 | exDisableNoVertical
	var_Chart := var_G2antt:Chart
		var_Chart:[PaneWidth,false] := 128
		var_Chart:AllowCreateBar := 1

2:
How do I handle events of the host

METHOD OCX_Exontrol1HostEvent(EventID) CLASS MainDialog
	// HostEvent event - Notifies the application once the host fires an event.
	OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[HostEventParam,-2]) ))
RETURN NIL

local var_G2antt as IG2antt

// Generate Source for 'ExG2antt 1.0 Control Library(exg2antt.dll)' server from Tools\Automation Server...
var_G2antt := IG2antt{oDCOCX_Exontrol1:Host}
	var_G2antt:BeginUpdate()
	var_G2antt:Columns:Add("new column")
	var_G2antt:EndUpdate()

1:
How can I get the version of the host/exg2antt control


OutputDebugString(String2Psz( oDCOCX_Exontrol1:Version ))
OutputDebugString(String2Psz( "Host" ))
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Host:Version ))