2357
Specify the size of the Columns panel

public void init()
{
	COM com_Columns;
	anytype var_Columns;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.HeaderHeight(24);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("City");
		COM::createFromVariant(com_Columns.Add("Start")).Visible(false);
		COM::createFromVariant(com_Columns.Add("End")).Visible(false);
	exg2antt1.ColumnsFloatBarRect(",,96");
	exg2antt1.ColumnsFloatBarVisible(34/*exColumnsFloatBarVisibleAsChild | exColumnsFloatBarVisibleIncludeCheckColumns*/);
	exg2antt1.EndUpdate();
}
2356
Show a vertical line between pivot and Columns panel (EBN color)

public void init()
{
	COM com_Columns;
	anytype var_Columns;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_s = "gBFLBCJwBAEHhEJAAEhABRsIQAAYAQGKIYBkAKBQAGaAoDDUNQxQwAAxwfBMKgBBCLIxhEYobgmGIXRpFICQTIcBhaGIZRiAKCRTDmHwyRCNIwCLD8QxtDqBY4gOZZXh";
	var_s = var_s + "al4cJTgMaBYi+Pw3DZHcbvBRkewzHQAKgnSjoDhEMg1CTVVYTDKdOSzDyEX7sIAACpOIZQVJVEY1VT8cyxIyEZimSypWqiYJ0Ty6cQwTAIgI";
	exg2antt1.VisualAppearance().Add(1,COMVariant::createFromStr(var_s));
	exg2antt1.Background(87/*exColumnsFloatBackColor*/,0x1000000);
	exg2antt1.HeaderHeight(24);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("City");
		COM::createFromVariant(com_Columns.Add("Start")).Visible(false);
		COM::createFromVariant(com_Columns.Add("End")).Visible(false);
	exg2antt1.ColumnsFloatBarVisible(34/*exColumnsFloatBarVisibleAsChild | exColumnsFloatBarVisibleIncludeCheckColumns*/);
	exg2antt1.EndUpdate();
}
2355
Change the background of the Columns panel (EBN color)

public void init()
{
	COM com_Columns;
	anytype var_Columns;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_s = "gBFLBCJwBAEHhEJAAEhABNoCg6AADACAxRDAMgBQKAAzQFAYahqGKGAAGOD4JhUAIIRZGMIjFDcEwxC6NIpAWLoJDCH4mSTHYxgJIMWwzDiBZgkCA4fiGEYnThCIxzTJ";
	var_s = var_s + "0aw1CKbYRAKCUKoUAJFsSnQAJIgOO4lULPMIhDDQKQTIKBahoehqIhaEQyDSJNb2DCIahhMSEbKtCooDhGFZUWzLVxTJJNawHJqJJDuOTpSjKH4+RjWFKUXR9b4BJSNA";
	var_s = var_s + "gqeCQTiSWZEVxRUS0XbGCyZLSQY7uAAMKgOVoDYzdGLwHTtOwrMa1QAsDSbKqWZ5uRpHcQ5aAGN5DPbMbqwOaqLznAaLQLtG4RTikVRPTDYaj437+OaHGyNbI6HTNPpT";
	var_s = var_s + "lWDJWjYXI8l8C4fg6GYAAEEISgGJJGHQOocgyIwYnqKhYAAIQTH2MYRjQJBRAmZptmEAYIjGU5dk8UgOFgBJUgCTQIBYBoBmCCAmAqApghgDJUDmYQFCCZoEk2OBUm+B";
	var_s = var_s + "ZPCgZgagaYZIHYHoHmGWBcm8NwiEiFJVgmYgji4Kg6GKSI2C6C5jAiRgygwIojiycINkyeJmAYPJjkiTg+g+ZAIkCdIQkyWQWDuDxkBkJhKguZAzlIRQzGQc5ODWFJlE";
	var_s = var_s + "kVhWhWZYJFYTYTmUE4yF6F5mAmBhihiZhJhYX4WmQaAUnWGpOlmNhuhuZwJkYcocmcSY4naHZlkmKhrDuJ5JnYfofmgCgGgKIJnlmXJ2h4TQKBosRokoNoOiOaQKDSd4";
	var_s = var_s + "kmiChMncPBpgoZoaiaaZKHaHonmmE5iiKJRpDicomimaoKiaKoqmqSoeiIPgogqPotiyaxKlYPA+GuCqbBMa5KnaPovmwCwGj6LgP24RIhiyCwmkqMpsksNpKD6LQLBq";
	var_s = var_s + "OIzi0SxWlaHZtAOahPssM5Wi+IYtlsXpijKbZ5lyTo5mAE4UlqOpjHOQpEjubyanKPJvEuNgVj2TY1CCao+k2G52AyP5wAwBp9DYZZ1CCaxsAABAEICA";
	exg2antt1.VisualAppearance().Add(1,COMVariant::createFromStr(var_s));
	exg2antt1.Background(87/*exColumnsFloatBackColor*/,0x1000000);
	exg2antt1.HeaderHeight(24);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("City");
		COM::createFromVariant(com_Columns.Add("Start")).Visible(false);
		COM::createFromVariant(com_Columns.Add("End")).Visible(false);
	exg2antt1.ColumnsFloatBarVisible(34/*exColumnsFloatBarVisibleAsChild | exColumnsFloatBarVisibleIncludeCheckColumns*/);
	exg2antt1.EndUpdate();
}
2354
Change the background of the Columns panel (solid color)

public void init()
{
	COM com_Columns;
	anytype var_Columns;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.HeaderHeight(24);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("City");
		COM::createFromVariant(com_Columns.Add("Start")).Visible(false);
		COM::createFromVariant(com_Columns.Add("End")).Visible(false);
	exg2antt1.ColumnsFloatBarVisible(34/*exColumnsFloatBarVisibleAsChild | exColumnsFloatBarVisibleIncludeCheckColumns*/);
	exg2antt1.Background(87/*exColumnsFloatBackColor*/,WinApi::RGB2int(240,240,240));
	exg2antt1.EndUpdate();
}
2353
Change the visual appearance of the Columns panel

public void init()
{
	COM com_Columns;
	anytype var_Columns;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_s = "gBFLBCJwBAEHhEJAAEhABNoCg6AADACAxRDAMgBQKAAzQFAYahqGKGAAGOD4JhUAIIRZGMIjFDcEwxC6NIpAWLoJDCH4mSTHYxgJIMWwzDiBZgkCA4fiGEYnThCIxzTJ";
	var_s = var_s + "0aw1CKbYRAKCUKoUAJFsSnQAJIgOO4lULPMIhDDQKQTIKBahoehqIhaEQyDSJNb2DCIahhMSEbKtCooDhGFZUWzLVxTJJNawHJqJJDuOTpSjKH4+RjWFKUXR9b4BJSNA";
	var_s = var_s + "gqeCQTiSWZEVxRUS0XbGCyZLSQY7uAAMKgOVoDYzdGLwHTtOwrMa1QAsDSbKqWZ5uRpHcQ5aAGN5DPbMbqwOaqLznAaLQLtG4RTikVRPTDYaj437+OaHGyNbI6HTNPpT";
	var_s = var_s + "lWDJWjYXI8l8C4fg6GYAAEEISgGJJGHQOocgyIwYnqKhYAAIQTH2MYRjQJBRAmZptmEAYIjGU5dk8UgOFgBJUgCTQIBYBoBmCCAmAqApghgDJUDmYQFCCZoEk2OBUm+B";
	var_s = var_s + "ZPCgZgagaYZIHYHoHmGWBcm8NwiEiFJVgmYgji4Kg6GKSI2C6C5jAiRgygwIojiycINkyeJmAYPJjkiTg+g+ZAIkCdIQkyWQWDuDxkBkJhKguZAzlIRQzGQc5ODWFJlE";
	var_s = var_s + "kVhWhWZYJFYTYTmUE4yF6F5mAmBhihiZhJhYX4WmQaAUnWGpOlmNhuhuZwJkYcocmcSY4naHZlkmKhrDuJ5JnYfofmgCgGgKIJnlmXJ2h4TQKBosRokoNoOiOaQKDSd4";
	var_s = var_s + "kmiChMncPBpgoZoaiaaZKHaHonmmE5iiKJRpDicomimaoKiaKoqmqSoeiIPgogqPotiyaxKlYPA+GuCqbBMa5KnaPovmwCwGj6LgP24RIhiyCwmkqMpsksNpKD6LQLBq";
	var_s = var_s + "OIzi0SxWlaHZtAOahPssM5Wi+IYtlsXpijKbZ5lyTo5mAE4UlqOpjHOQpEjubyanKPJvEuNgVj2TY1CCao+k2G52AyP5wAwBp9DYZZ1CCaxsAABAEICA";
	exg2antt1.VisualAppearance().Add(1,COMVariant::createFromStr(var_s));
	exg2antt1.Background(92/*exColumnsFloatAppearance*/,0x1000000);
	exg2antt1.Background(93/*exColumnsFloatCaptionBackColor*/,WinApi::RGB2int(246,246,246));
	exg2antt1.BackColorHeader(0x1000000);
	exg2antt1.HeaderHeight(24);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("City");
		COM::createFromVariant(com_Columns.Add("Start")).Visible(false);
		COM::createFromVariant(com_Columns.Add("End")).Visible(false);
	exg2antt1.Description(26/*exColumnsFloatBar*/,"Show/Hide");
	exg2antt1.ColumnsFloatBarVisible(2/*exColumnsFloatBarVisibleIncludeCheckColumns*/);
	exg2antt1.EndUpdate();
}
2352
Defines the symbol used to indicate repeated captions, providing a clear visual cue for identical entries (ditto mark)

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	exg2antt1.DrawGridLines(-2/*exRowLines*/);
	COM::createFromVariant(exg2antt1.Columns().Add("Country")).ShowIdem("<fgcolor gray>〃");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("Spain");
		com_Items.AddItem("Spain");
		com_Items.AddItem("Spain");
		com_Items.AddItem("Spain");
		com_Items.AddItem("Germany");
		com_Items.AddItem("Germany");
		com_Items.AddItem("Germany");
		com_Items.AddItem("Germany");
	exg2antt1.EndUpdate();
}
2351
Defines the symbol used to indicate repeated captions, providing a clear visual cue for identical entries (space)

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	exg2antt1.DrawGridLines(-2/*exRowLines*/);
	COM::createFromVariant(exg2antt1.Columns().Add("Country")).ShowIdem(" ");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("Spain");
		com_Items.AddItem("Spain");
		com_Items.AddItem("Spain");
		com_Items.AddItem("Spain");
		com_Items.AddItem("Germany");
		com_Items.AddItem("Germany");
		com_Items.AddItem("Germany");
		com_Items.AddItem("Germany");
	exg2antt1.EndUpdate();
}
2350
Displays a glitch funnel for drop-down filter buttons (empty or active)

public void init()
{
	COM com_Appearance,com_Column,com_Items;
	anytype var_Appearance,var_Column,var_Items;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Appearance = exg2antt1.VisualAppearance(); com_Appearance = var_Appearance;
		com_Appearance.RenderType(-1);
		var_s = "gBFLBCJwBAEHhEJAAEhABa8IQAAYAQGKIYBkAKBQAGaAoDDUNQxQwAAxwfBMKgBBCLIxhEYobgmGIXRpFMbxCKQahLEiTIhGUYJHgmK4tRiAUgxVDkBxrECZYqjcBZOi";
		var_s = var_s + "wLQ2TxDM7DNKUCBnIoABhGOaYDh+IQNQjUFKwTRFGRxK4EIRKAyTDLQdRyGSMMbjdQpBCbMiMRqhESKRq2UwYRYCFS1NalaztO6BUAvK67YrWez/YBfF+SfwGeqDYReW";
		var_s = var_s + "APfgWERnQrGMLxbD8KwZAKTRjkGJ4XhuB41TbQMqufL9ByXHKSSDpGjaXjeO5VVjYNAvS69UzXNq3bhtQAOXCMEwCgI=";
		com_Appearance.Add(1,COMVariant::createFromStr(var_s));
		com_Appearance.Add(2,"CP:1 -2 0 0 0");
	exg2antt1.DrawGridLines(-1/*exAllLines*/);
	exg2antt1.GridLineStyle(512/*exGridLinesGeometric*/);
	exg2antt1.ShowFocusRect(false);
	exg2antt1.Background(0/*exHeaderFilterBarButton*/,0x2000000);
	exg2antt1.Background(41/*exHeaderFilterBarActive*/,0x2000001);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.BackColorHeader(WinApi::RGB2int(255,255,255));
	exg2antt1.HeaderHeight(24);
	exg2antt1.HeaderVisible(1/*exHeaderVisibleExtendLevels*/);
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("1st col")); com_Column = var_Column;
		com_Column.DisplayFilterButton(true);
		com_Column.DisplayFilterPattern(false);
		com_Column.Filter("Item B");
		com_Column.FilterType(240/*exFilter*/);
	exg2antt1.Columns().Add("2nd col");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("Item A");
		com_Items.AddItem("Item B");
		com_Items.AddItem("Item C");
	exg2antt1.ApplyFilter();
	exg2antt1.EndUpdate();
}
2349
Stack vs Cascade

public void init()
{
	COM com_Bar,com_Bar1,com_Bars,com_Chart,com_Items;
	anytype var_Bar,var_Bar1,var_Bars,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ScrollBySingleLine(true);
	exg2antt1.HeaderAppearance(1/*Flat*/);
	exg2antt1.Columns().Add("Type");
	exg2antt1.BackColorAlternate(WinApi::RGB2int(240,240,240));
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.AllowCreateBar(1/*exCreateBarAuto*/);
		com_Chart.AllowLinkBars(false);
		com_Chart.ResizeUnitScale(65536/*exHour*/);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bars = COM::createFromObject(com_Chart.Bars()); com_Bars = var_Bars;
		var_Bar = COM::createFromObject(com_Bars).Copy("Task","T1"); com_Bar = var_Bar;
			com_Bar.OverlaidType(4/*exOverlaidBarsCascade*/);
			com_Bar.Def(3/*exBarCaption*/,"<%=%9%>");
		var_Bars = COM::createFromObject(com_Chart.Bars()); com_Bars = var_Bars;
		var_Bar1 = COM::createFromObject(com_Bars).Copy("Task","T2"); com_Bar1 = var_Bar1;
			com_Bar1.OverlaidType(515/*exOverlaidBarsStackAutoArrange | exOverlaidBarsStack*/);
			com_Bar1.Def(3/*exBarCaption*/,"<%=%9%>");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Cascade");
		com_Items.AddBar(h,"T1",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"A1");
		com_Items.AddBar(h,"T1",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"A2");
		com_Items.AddBar(h,"T1",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/7/2001",213)),"A3");
		com_Items.AddBar(h,"T1",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/7/2001",213)),"A4");
		com_Items.AddBar(h,"T1",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"A5");
		com_Items.AddBar(h,"T1",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"A6");
		com_Items.AddBar(h,"T1",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"A7");
		com_Items.AddBar(h,"T1",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"A8");
		com_Items.AddBar(h,"T1",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"A9");
		com_Items.AddBar(h,"T1",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"AA");
		h = com_Items.AddItem("Stack-AutoArrange");
		com_Items.AddBar(h,"T2",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"A1");
		com_Items.AddBar(h,"T2",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"A2");
		com_Items.AddBar(h,"T2",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/7/2001",213)),"A3");
		com_Items.AddBar(h,"T2",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/7/2001",213)),"A4");
		com_Items.AddBar(h,"T2",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"A5");
		com_Items.AddBar(h,"T2",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"A6");
		com_Items.AddBar(h,"T2",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"A7");
		com_Items.AddBar(h,"T2",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"A8");
		com_Items.AddBar(h,"T2",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"A9");
		com_Items.AddBar(h,"T2",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"AA");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
2348
Horizontally(left) align the multi-line caption of the bar

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Task");
	exg2antt1.HeaderAppearance(4/*Etched*/);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
		com_Chart.LevelCount(2);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.SelectableItem(com_Items.AddItem(),false);
		h = com_Items.AddItem("Task 1");
		com_Items.ItemHeight(h,42);
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/7/2001",213)),"K1","This is a bit of 1'st line<br>2'nd line<br>3'rd line");
		com_Items.ItemBar(h,"K1",4/*exBarHAlignCaption*/,COMVariant::createFromInt(0));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
2347
Defines the colors, to display overlapping links

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Name");
	exg2antt1.AntiAliasing(true);
	exg2antt1.OverlapLinksColors("black,gray,lightgray");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/28/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		com_Chart.ShowLinks(642/*exChangeColorOnOverlap | exPreventOverlapMixt | exShowDefaultLinks*/);
		com_Chart.NonworkingDays(0);
		com_Chart.LinksStyle(0/*exLinkSolid*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("");
		h1 = com_Items.AddItem("Item 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)),"A");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/11/2001",213)),"B");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/13/2001",213)),COMVariant::createFromDate(str2Date("1/16/2001",213)),"C");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/18/2001",213)),COMVariant::createFromDate(str2Date("1/21/2001",213)),"D");
		com_Items.AddLink("Link1",h1,"D",h1,"A");
		com_Items.AddLink("Link2",h1,"C",h1,"B");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2346
The exPreventOverlapMixt option can be combined with the exChangeColorOnOverlap flag, allowing overlapping links to alternately adjust their width while also changing colors

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Name");
	exg2antt1.AntiAliasing(true);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/28/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		com_Chart.ShowLinks(642/*exChangeColorOnOverlap | exPreventOverlapMixt | exShowDefaultLinks*/);
		com_Chart.NonworkingDays(0);
		com_Chart.LinksStyle(0/*exLinkSolid*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("");
		h1 = com_Items.AddItem("Item 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)),"A");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/11/2001",213)),"B");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/13/2001",213)),COMVariant::createFromDate(str2Date("1/16/2001",213)),"C");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/18/2001",213)),COMVariant::createFromDate(str2Date("1/21/2001",213)),"D");
		com_Items.AddLink("Link1",h1,"D",h1,"A");
		com_Items.AddLink("Link2",h1,"C",h1,"B");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2345
The exChangeColorOnOverlap flag changes the color for links in areas where they overlap with other links, enhancing clarity and distinction between them

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.AntiAliasing(true);
	exg2antt1.Columns().Add("Name");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/28/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		com_Chart.ShowLinks(514/*exChangeColorOnOverlap | exShowDefaultLinks*/);
		com_Chart.NonworkingDays(0);
		com_Chart.LinksStyle(0/*exLinkSolid*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("");
		h1 = com_Items.AddItem("Item 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)),"A");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/11/2001",213)),"B");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/13/2001",213)),COMVariant::createFromDate(str2Date("1/16/2001",213)),"C");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/18/2001",213)),COMVariant::createFromDate(str2Date("1/21/2001",213)),"D");
		com_Items.AddLink("Link1",h1,"D",h1,"A");
		com_Items.AddLink("Link2",h1,"C",h1,"B");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2344
How can I assign a multiple-lines caption to an bar

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Task");
	exg2antt1.HeaderAppearance(4/*Etched*/);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
		com_Chart.LevelCount(2);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.SelectableItem(com_Items.AddItem(),false);
		h = com_Items.AddItem("Task 1");
		com_Items.ItemHeight(h,42);
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/7/2001",213)),"K1");
		com_Items.ItemBar(h,"K1",3/*exBarCaption*/,"This is a bit of 1'st line<br>2'nd line<br>3'rd line");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
2343
The text on the chart overlap the rest of the bars, while using OverlaidType property on exOverlaidBarsStack

public void init()
{
	COM com_Bar,com_Bars,com_Chart,com_Items;
	anytype var_Bar,var_Bars,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/3/2002",213)));
		com_Chart.LevelCount(2);
		com_Chart.FirstWeekDay(1/*exMonday*/);
		var_Bars = COM::createFromObject(com_Chart.Bars()); com_Bars = var_Bars;
		var_Bar = COM::createFromObject(com_Bars).Add("Text"); com_Bar = var_Bar;
		com_Bar.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(0));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(0));
			com_Bar.OverlaidType(4611/*exOverlaidBarsIncludeCaption | exOverlaidBarsStackAutoArrange | exOverlaidBarsStack*/);
			com_Bar.OverlaidGroup("Text,Task");
	exg2antt1.Columns().Add("Task");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Default");
		com_Items.AddBar(h,"Text",COMVariant::createFromDate(str2Date("1/4/2002",213)),COMVariant::createFromDate(str2Date("1/4/2002",213)),"","This is another text");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/6/2002",213)),COMVariant::createFromDate(str2Date("1/8/2002",213)),"A","This is a bit of text");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
2342
We are running our application on an Azure server using RDP, with the server language set to English. However, my client has their national language set to Swedish, but the tooltip is displaying dates in the English format (mm/dd/yyyy) instead of the Swedish format (yyyy-mm-dd) (method 2)

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Def");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.AllowCreateBar(0/*exNoCreateBar*/);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2010",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
		com_Bar.Def(6/*exBarToolTip*/,"<%=`Start: ` + (date(%1) format `yyyy-MM-dd` )%>");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Task");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2010",213)),COMVariant::createFromDate(str2Date("1/5/2010",213)),"A","A");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/5/2010",213)),COMVariant::createFromDate(str2Date("1/8/2010",213)),"B","B");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2341
We are running our application on an Azure server using RDP, with the server language set to English. However, my client has their national language set to Swedish, but the tooltip is displaying dates in the English format (mm/dd/yyyy) instead of the Swedish format (yyyy-mm-dd) (method 1)

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Def");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.AllowCreateBar(0/*exNoCreateBar*/);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2010",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
		com_Bar.Def(6/*exBarToolTip*/,"<%=`Start: ` + year(%1) + `-` + (month(%1) lpad `00`) + `-` + (day(%1) lpad `00`)%>");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Task");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2010",213)),COMVariant::createFromDate(str2Date("1/5/2010",213)),"A","A");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/5/2010",213)),COMVariant::createFromDate(str2Date("1/8/2010",213)),"B","B");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2340
How can I replace or add an icon at runtime

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_s = "gAAAABgYACEHgUJFEEAAWhUJCEJEEJggEhMCYEXjUbjkJQECj8gj8hAEjkshYEpk8kf8ClsulsvAExmcvf83js5nU7nkCeEcn8boMaocXosCB9Hn09pkzcEuoL/fE+Ok";
	var_s = var_s + "YB0gB9YhIHrddgVcr9aktZADAD8+P8CgIA==";
	exg2antt1.ReplaceIcon(COMVariant::createFromStr(var_s));
	exg2antt1.ReplaceIcon("C:\\images\\favicon.ico",COMVariant::createFromInt(0));
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
		com_Chart.LevelCount(2);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Task 1");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)),"K1");
		com_Items.ItemBar(h,"K1",3/*exBarCaption*/,"<img>1</img>");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
2339
How can I define the sensitivity for link selection when the user clicks or selects a link
// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	;
	print( exg2antt1.Chart().LinkFromPoint(-1,-1) );
}

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1,h2,h3;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/29/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		com_Chart.LevelCount(2);
		com_Chart.LinksWidth(1026);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Task 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"K1");
		com_Items.AddItem();
		h2 = com_Items.AddItem("Task 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/10/2001",213)),"K2");
		com_Items.AddLink("L1",h1,"K1",h2,"K2");
		com_Items.AddItem();
		h3 = com_Items.AddItem("Task 3");
		com_Items.AddBar(h3,"Task",COMVariant::createFromDate(str2Date("1/14/2001",213)),COMVariant::createFromDate(str2Date("1/16/2001",213)),"K3");
		com_Items.AddLink("L2",h2,"K2",h3,"K3");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2338
How can I let the user to create task-bars for leaf0-items only, when AllowCreateBar is exCreateBarAuto
// CreateBar event - Fired when the user creates a new bar.
void onEvent_CreateBar(int   _Item,date   _DateStart,date   _DateEnd)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		print( "Call RemoveBar if the ChildCount property returns a non-zero value" );
		print( com_Items.ChildCount(_Item) );
		com_Items.RemoveBar(_Item,"newbar");
}

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exg2antt1.HeaderVisible(1/*exHeaderVisibleExtendLevels*/);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.AllowCreateBar(1/*exCreateBarAuto*/);
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
	exg2antt1.Columns().Add("Task");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
2337
How can I convert the exBarStart/exBarEnd property to a string (by default it returns as VARIANT/VT_DATE type, method 3)

// BarResizing event - Occurs when a bar is moving or resizing.
void onEvent_BarResizing(int   _Item,COMVariant   _Key)
{
	;
	print( "Start" );
	print( _Key );
	print( exg2antt1.Items().ItemBar(_Item,_Key,547/*exBarStartStr*/) );
	print( "End" );
	print( _Key );
	print( exg2antt1.Items().ItemBar(_Item,_Key,548/*exBarEndStr*/) );
}

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Tasks");
	exg2antt1.Debug(true);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("9/20/2006",213)));
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(0,96);
		com_Chart.ResizeUnitScale(1048576/*exMinute*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Task 1"),"Task",COMVariant::createFromDate(str2Date("9/21/2006",213)),COMVariant::createFromDate(str2Date("9/24/2006",213)),"K1");
		com_Items.AddBar(com_Items.AddItem("Task 2"),"Task",COMVariant::createFromDate(str2Date("9/22/2006",213)),COMVariant::createFromDate(str2Date("9/25/2006",213)),"K2");
		com_Items.AddBar(com_Items.AddItem("Task 3"),"Task",COMVariant::createFromDate(str2Date("9/23/2006",213)),COMVariant::createFromDate(str2Date("9/26/2006",213)),"K3");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(0,96);
}
*/
2336
How can I convert the exBarStart/exBarEnd property to a string (by default it returns as VARIANT/VT_DATE type, method 2)

// BarResizing event - Occurs when a bar is moving or resizing.
void onEvent_BarResizing(int   _Item,COMVariant   _Key)
{
	;
	print( "Start" );
	print( _Key );
	print( exg2antt1.FormatABC("dateF(value)",exg2antt1.Items().ItemBar(_Item,_Key,1/*exBarStart*/)) );
	print( "End" );
	print( _Key );
	print( exg2antt1.FormatABC("dateF(value)",exg2antt1.Items().ItemBar(_Item,_Key,2/*exBarEnd*/)) );
}

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Tasks");
	exg2antt1.Debug(true);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("9/20/2006",213)));
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(0,96);
		com_Chart.ResizeUnitScale(1048576/*exMinute*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Task 1"),"Task",COMVariant::createFromDate(str2Date("9/21/2006",213)),COMVariant::createFromDate(str2Date("9/24/2006",213)),"K1");
		com_Items.AddBar(com_Items.AddItem("Task 2"),"Task",COMVariant::createFromDate(str2Date("9/22/2006",213)),COMVariant::createFromDate(str2Date("9/25/2006",213)),"K2");
		com_Items.AddBar(com_Items.AddItem("Task 3"),"Task",COMVariant::createFromDate(str2Date("9/23/2006",213)),COMVariant::createFromDate(str2Date("9/26/2006",213)),"K3");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(0,96);
}
*/
2335
How can I convert the exBarStart/exBarEnd property to a string (by default it returns as VARIANT/VT_DATE type, method 1)

// BarResizing event - Occurs when a bar is moving or resizing.
void onEvent_BarResizing(int   _Item,COMVariant   _Key)
{
	;
	print( "Start" );
	print( _Key );
	print( exg2antt1.FormatABC("date(value) format `MM/dd/yyyy HH:mm:ss`",exg2antt1.Items().ItemBar(_Item,_Key,1/*exBarStart*/)) );
	print( "End" );
	print( _Key );
	print( exg2antt1.FormatABC("date(value) format `MM/dd/yyyy HH:mm:ss`",exg2antt1.Items().ItemBar(_Item,_Key,2/*exBarEnd*/)) );
}

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Tasks");
	exg2antt1.Debug(true);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("9/20/2006",213)));
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(0,96);
		com_Chart.ResizeUnitScale(1048576/*exMinute*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Task 1"),"Task",COMVariant::createFromDate(str2Date("9/21/2006",213)),COMVariant::createFromDate(str2Date("9/24/2006",213)),"K1");
		com_Items.AddBar(com_Items.AddItem("Task 2"),"Task",COMVariant::createFromDate(str2Date("9/22/2006",213)),COMVariant::createFromDate(str2Date("9/25/2006",213)),"K2");
		com_Items.AddBar(com_Items.AddItem("Task 3"),"Task",COMVariant::createFromDate(str2Date("9/23/2006",213)),COMVariant::createFromDate(str2Date("9/26/2006",213)),"K3");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(0,96);
}
*/
2334
Add/Remove/Updates the item-bar's resources

// Click event - Occurs when the user presses and then releases the left mouse button over the tree control.
void onEvent_Click()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.SelectedItem(0);
		com_Items.ItemBar(h,com_Items.FirstItemBar(h),49/*exBarResources*/,"+R4[10%]");
}

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,96);
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
			com_Bar.Def(3/*exBarCaption*/,"<%=%49%>");
	exg2antt1.Columns().Add("Machines");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Machine 1");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/6/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"K1");
		com_Items.ItemBar(h,"K1",49/*exBarResources*/,"R1,R2");
		h = com_Items.AddItem("Machine 2");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/14/2001",213)),"K2");
		com_Items.ItemBar(h,"K2",49/*exBarResources*/,"R2[75%],R3");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,96);
}
*/
2333
Distributes resources to a bar

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,96);
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
			com_Bar.Def(3/*exBarCaption*/,"<%=%49%>");
	exg2antt1.Columns().Add("Machines");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Machine 1");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/6/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"K1");
		com_Items.ItemBar(h,"K1",49/*exBarResources*/,"R1,R2");
		h = com_Items.AddItem("Machine 2");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/14/2001",213)),"K2");
		com_Items.ItemBar(h,"K2",49/*exBarResources*/,"R2[75%],R3");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,96);
}
*/
2332
How can I display additional information about a time zone when the user clicks on it (expandable)

public void init()
{
	COM com_Chart;
	anytype var_Chart;
	;

	super();

	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,0);
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/20/2009",213)));
		com_Chart.MarkTimeZone("TZ",COMVariant::createFromDate(str2Date("1/1/2010",213)),COMVariant::createFromDate(str2Date("1/3/2010",213)),COMVariant::createFromInt(65280),"1;;<c>TimeZone<b><off -4><a ;exp=just more info about>*</a></b>;1");
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,0);
}
*/
2331
How can I have a tooltip for a marked TimeZone

// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	;
	exg2antt1.ShowToolTip(exg2antt1.Chart().TimeZoneFromPoint(-1,-1),"",,"+8");
}

public void init()
{
	COM com_Chart;
	anytype var_Chart;
	;

	super();

	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,0);
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/28/2009",213)));
		com_Chart.MarkTimeZone("Top",COMVariant::createFromDate(str2Date("1/1/2010",213)),COMVariant::createFromDate(str2Date("1/5/2010",213)),COMVariant::createFromInt(16711680),"1;;<fgcolor=FFFFFF>Top;1");
		com_Chart.MarkTimeZone("Partial",COMVariant::createFromDate(str2Date("1/8/2010",213)),COMVariant::createFromDate(str2Date("1/12/2010",213)),COMVariant::createFromInt(16711680),"50;;<fgcolor=FFFFFF>Partial;1");
		com_Chart.MarkTimeZone("Default",COMVariant::createFromDate(str2Date("1/15/2010",213)),COMVariant::createFromDate(str2Date("1/19/2010",213)),COMVariant::createFromInt(16711680),";;<fgcolor=FFFFFF>Default;1");
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,0);
}
*/
2330
Can I set a filter that automatically adds a * before and after the word, so the user can just search for 'cat' and it becomes '*cat*' automatically

public void init()
{
	COM com_Column,com_Items;
	anytype var_Column,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Items")); com_Column = var_Column;
		com_Column.DisplayFilterButton(true);
		com_Column.DisplayFilterPattern(true);
		com_Column.Def(21/*exFilterPatternTemplate*/,"*<%filter%>*");
		com_Column.FilterType(3/*exPattern*/);
		com_Column.Filter("1");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root 1");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Root 2");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
	exg2antt1.ApplyFilter();
	exg2antt1.EndUpdate();
}
2329
The fine dotted lines in the control appear much thicker than the standard ones we've been using. How can we fix this

public void init()
{
	COM com_Chart;
	anytype var_Chart;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	exg2antt1.DrawGridLines(-1/*exAllLines*/);
	exg2antt1.GridLineStyle(512/*exGridLinesGeometric*/);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.GridLineStyle(512/*exGridLinesGeometric*/);
		com_Chart.DrawGridLines(-1/*exAllLines*/);
	exg2antt1.ColumnAutoResize(false);
	exg2antt1.Columns().Add("Column 1");
	exg2antt1.Columns().Add("Column 2");
	exg2antt1.Columns().Add("Column 3");
	exg2antt1.Columns().Add("Column 4");
	exg2antt1.EndUpdate();
}
2328
Load data as a tree using a parent-id relationship

public void init()
{
	COM com_Column,com_rs;
	anytype rs,var_Column;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ColumnAutoResize(false);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	exg2antt1.DrawGridLines(2/*exVLines*/);
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("Select * FROM Employees WHERE 1=0","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exg2antt1.DataSource(rs);
	var_Column = COM::createFromObject(exg2antt1.Columns()).Item(COMVariant::createFromInt(0)); com_Column = var_Column;
	com_Column.Width(128);
	rs = COM::createFromObject(new ADODB.Recordset());
		rs.Open("Employees","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exg2antt1.PutItems(rs.GetRows(),";0;17");
	exg2antt1.Items().ExpandItem(0,true);
	exg2antt1.EndUpdate();
}
2327
Is there a way to change the contents of the drop down editor based on a value in another column

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void onEvent_AddItem(int   _Item)
{
	;
	exg2antt1.Items().CellEditorVisible(_Item,COMVariant::createFromInt(0),1/*exEditorVisible*/);
	exg2antt1.Items().CellEditorVisible(_Item,COMVariant::createFromInt(1),1/*exEditorVisible*/);
}

// EditOpen event - Occurs when the edit operation starts.
void onEvent_EditOpen()
{
	COM com_Column,com_Editor,com_Items;
	COMVariant v;
	anytype var_Column,var_Editor,var_Items;
	str c;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		v = com_Items.CellValue(com_Items.FocusItem(),COMVariant::createFromInt(0));
		c = com_Items.CellCaption(com_Items.FocusItem(),COMVariant::createFromInt(0));
	var_Column = COM::createFromObject(exg2antt1.Columns()).Item(COMVariant::createFromInt(1)); com_Column = var_Column;
	var_Editor = com_Column.Editor(); com_Editor = var_Editor;
		com_Editor.ClearItems();
		com_Editor.AddItem(v,c);
}

public void init()
{
	COM com_Column,com_Editor,com_Editor1,com_Items;
	COMVariant v;
	anytype var_Column,var_Editor,var_Editor1,var_Items;
	int h;
	str c,var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	exg2antt1.GridLineStyle(512/*exGridLinesGeometric*/);
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("DropDownList")); com_Column = var_Column;
		var_Editor = com_Column.Editor(); com_Editor = var_Editor;
			com_Editor.EditType(3/*DropDownListType*/);
			com_Editor.AddItem(1,"First");
			com_Editor.AddItem(2,"Second");
			com_Editor.AddItem(3,"Third");
	exg2antt1.DrawGridLines(-1/*exAllLines*/);
	var_Editor1 = COM::createFromObject(COM::createFromVariant(exg2antt1.Columns().Add("DropDownList-Related"))).Editor(); com_Editor1 = var_Editor1;
	com_Editor1.EditType(3/*DropDownListType*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(1)),COMVariant::createFromInt(1),COMVariant::createFromInt(-1));
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(2)),COMVariant::createFromInt(1),COMVariant::createFromInt(-1));
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(3)),COMVariant::createFromInt(1),COMVariant::createFromInt(-1));
		com_Items.LockedItemCount(2/*exBottom*/,1);
		h = com_Items.LockedItem(2/*exBottom*/,0);
		com_Items.ItemDivider(h,0);
		com_Items.ItemDividerLineAlignment(h,2/*DividerTop*/);
		com_Items.CellEditorVisible(h,COMVariant::createFromInt(0),false);
		com_Items.CellSingleLine(h,COMVariant::createFromInt(0),false);
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),1/*exHTML*/);
		var_s = "The drop down editor in the second column is filled during the <b>EditOpen event</b>, and the values are based on the selection ";
		var_s = var_s + "on the first column.";
		com_Items.CellValue(h,COMVariant::createFromInt(0),COMVariant::createFromStr(var_s));
	exg2antt1.EndUpdate();
}
2326
Highlight the editable fields

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item,int   _ColIndex,COMVariant /*variant*/   _NewValue)
{
	;
	exg2antt1.Refresh();
}

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Columns,com_ConditionalFormat,com_ConditionalFormat1,com_ConditionalFormat2,com_ConditionalFormats,com_Editor,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Columns,var_ConditionalFormat,var_ConditionalFormat1,var_ConditionalFormat2,var_ConditionalFormats,var_Editor,var_Items;
	int g1,g2,h,r;
	;

	super();

	exg2antt1.FreezeEvents(true);
	exg2antt1.BeginUpdate();
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_ConditionalFormats = exg2antt1.ConditionalFormats(); com_ConditionalFormats = var_ConditionalFormats;
		var_ConditionalFormat = com_ConditionalFormats.Add("%CE1"); com_ConditionalFormat = var_ConditionalFormat;
			com_ConditionalFormat.Bold(true);
			com_ConditionalFormat.BackColor(WinApi::RGB2int(245,245,245));
			com_ConditionalFormat.ApplyTo(1);
		var_ConditionalFormat1 = com_ConditionalFormats.Add("%CE2"); com_ConditionalFormat1 = var_ConditionalFormat1;
			com_ConditionalFormat1.Bold(true);
			com_ConditionalFormat1.BackColor(WinApi::RGB2int(245,245,245));
			com_ConditionalFormat1.ApplyTo(2);
		var_ConditionalFormat2 = com_ConditionalFormats.Add("%CE3"); com_ConditionalFormat2 = var_ConditionalFormat2;
			com_ConditionalFormat2.Bold(true);
			com_ConditionalFormat2.BackColor(WinApi::RGB2int(245,245,245));
			com_ConditionalFormat2.ApplyTo(3);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Description");
		var_Column = COM::createFromVariant(com_Columns.Add("Qty")); com_Column = var_Column;
			var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
			com_Column.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
		var_Column1 = COM::createFromVariant(com_Columns.Add("Price")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"avg(current,rec,%2)");
			var_Editor = COM::createFromObject(com_Column1.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column2 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column2 = var_Column2;
			com_Column2.ComputedField("%1 * %2");
			com_Column2.Def(20/*exTotalColumn*/,"sum(current,rec,%3)");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		r = com_Items.AddItem("Root");
		g1 = com_Items.InsertItem(r,,"Group 1");
		h = com_Items.InsertItem(g1,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(10));
		h = com_Items.InsertItem(g1,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(11));
		g2 = com_Items.InsertItem(r,,"Group 2");
		h = com_Items.InsertItem(g2,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(12));
		h = com_Items.InsertItem(g2,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(13));
		com_Items.ExpandItem(0,true);
	exg2antt1.EndUpdate();
	exg2antt1.FreezeEvents(false);
}
2325
Highlight the total fields

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item,int   _ColIndex,COMVariant /*variant*/   _NewValue)
{
	;
	exg2antt1.Refresh();
}

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Columns,com_ConditionalFormat,com_ConditionalFormat1,com_ConditionalFormat2,com_ConditionalFormats,com_Editor,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Columns,var_ConditionalFormat,var_ConditionalFormat1,var_ConditionalFormat2,var_ConditionalFormats,var_Editor,var_Items;
	int g1,g2,h,r;
	;

	super();

	exg2antt1.FreezeEvents(true);
	exg2antt1.BeginUpdate();
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_ConditionalFormats = exg2antt1.ConditionalFormats(); com_ConditionalFormats = var_ConditionalFormats;
		var_ConditionalFormat = com_ConditionalFormats.Add("%CT1"); com_ConditionalFormat = var_ConditionalFormat;
			com_ConditionalFormat.ForeColor(WinApi::RGB2int(128,128,128));
			com_ConditionalFormat.ApplyTo(1);
		var_ConditionalFormat1 = com_ConditionalFormats.Add("%CT2"); com_ConditionalFormat1 = var_ConditionalFormat1;
			com_ConditionalFormat1.ForeColor(WinApi::RGB2int(128,128,128));
			com_ConditionalFormat1.ApplyTo(2);
		var_ConditionalFormat2 = com_ConditionalFormats.Add("%CT3"); com_ConditionalFormat2 = var_ConditionalFormat2;
			com_ConditionalFormat2.ForeColor(WinApi::RGB2int(128,128,128));
			com_ConditionalFormat2.ApplyTo(3);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Description");
		var_Column = COM::createFromVariant(com_Columns.Add("Qty")); com_Column = var_Column;
			var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
			com_Column.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
		var_Column1 = COM::createFromVariant(com_Columns.Add("Price")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"avg(current,rec,%2)");
			var_Editor = COM::createFromObject(com_Column1.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column2 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column2 = var_Column2;
			com_Column2.ComputedField("%1 * %2");
			com_Column2.Def(20/*exTotalColumn*/,"sum(current,rec,%3)");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		r = com_Items.AddItem("Root");
		g1 = com_Items.InsertItem(r,,"Group 1");
		h = com_Items.InsertItem(g1,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(10));
		h = com_Items.InsertItem(g1,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(11));
		g2 = com_Items.InsertItem(r,,"Group 2");
		h = com_Items.InsertItem(g2,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(12));
		h = com_Items.InsertItem(g2,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(13));
		com_Items.ExpandItem(0,true);
	exg2antt1.EndUpdate();
	exg2antt1.FreezeEvents(false);
}
2324
Highlight the leaf items

public void init()
{
	COM com_Columns,com_ConditionalFormat,com_Items;
	anytype var_Columns,var_ConditionalFormat,var_Items;
	int h,hR;
	;

	super();

	exg2antt1.BeginUpdate();
	var_ConditionalFormat = COM::createFromObject(exg2antt1.ConditionalFormats()).Add("%CC0=0"); com_ConditionalFormat = var_ConditionalFormat;
	com_ConditionalFormat.ForeColor(WinApi::RGB2int(128,128,128));
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Item")).Width(16);
		com_Columns.Add("Desc");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hR = com_Items.AddItem("Root");
		com_Items.CellValue(hR,COMVariant::createFromInt(1),"The root directory /");
		com_Items.ExpandItem(hR,true);
		h = com_Items.InsertItem(hR,,"Home");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"The home directory with user directories Alice and Bob");
		com_Items.InsertItem(h,,"Alice");
		com_Items.InsertItem(h,,"Bob");
		com_Items.ExpandItem(h,true);
		h = com_Items.InsertItem(hR,,"Etc");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"The etc directory with one configuration file");
		h = com_Items.InsertItem(h,,"nginx.conf");
		com_Items.CellValue(com_Items.InsertItem(hR,,"Var"),COMVariant::createFromInt(1),"The var directory");
	exg2antt1.EndUpdate();
}
2323
Highlight the parent items

public void init()
{
	COM com_Columns,com_ConditionalFormat,com_Items;
	anytype var_Columns,var_ConditionalFormat,var_Items;
	int h,hR;
	;

	super();

	exg2antt1.BeginUpdate();
	var_ConditionalFormat = COM::createFromObject(exg2antt1.ConditionalFormats()).Add("%CC0"); com_ConditionalFormat = var_ConditionalFormat;
	com_ConditionalFormat.ForeColor(WinApi::RGB2int(255,0,0));
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Item")).Width(16);
		com_Columns.Add("Desc");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hR = com_Items.AddItem("Root");
		com_Items.CellValue(hR,COMVariant::createFromInt(1),"The root directory /");
		com_Items.ExpandItem(hR,true);
		h = com_Items.InsertItem(hR,,"Home");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"The home directory with user directories Alice and Bob");
		com_Items.InsertItem(h,,"Alice");
		com_Items.InsertItem(h,,"Bob");
		com_Items.ExpandItem(h,true);
		h = com_Items.InsertItem(hR,,"Etc");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"The etc directory with one configuration file");
		h = com_Items.InsertItem(h,,"nginx.conf");
		com_Items.CellValue(com_Items.InsertItem(hR,,"Var"),COMVariant::createFromInt(1),"The var directory");
	exg2antt1.EndUpdate();
}
2322
Highlight the item being expanded or collapsed

public void init()
{
	COM com_Columns,com_ConditionalFormat,com_Items;
	anytype var_Columns,var_ConditionalFormat,var_Items;
	int h,hR;
	;

	super();

	exg2antt1.BeginUpdate();
	var_ConditionalFormat = COM::createFromObject(exg2antt1.ConditionalFormats()).Add("%CX0"); com_ConditionalFormat = var_ConditionalFormat;
	com_ConditionalFormat.Bold(true);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Item")).Width(16);
		com_Columns.Add("Desc");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hR = com_Items.AddItem("Root");
		com_Items.CellValue(hR,COMVariant::createFromInt(1),"The root directory /");
		com_Items.ExpandItem(hR,true);
		h = com_Items.InsertItem(hR,,"Home");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"The home directory with user directories Alice and Bob");
		com_Items.InsertItem(h,,"Alice");
		com_Items.InsertItem(h,,"Bob");
		com_Items.ExpandItem(h,true);
		h = com_Items.InsertItem(hR,,"Etc");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"The etc directory with one configuration file");
		h = com_Items.InsertItem(h,,"nginx.conf");
		com_Items.CellValue(com_Items.InsertItem(hR,,"Var"),COMVariant::createFromInt(1),"The var directory");
	exg2antt1.EndUpdate();
}
2321
I am using exTotalColumn. Is there an option to exclude specific cells to display the total

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item,int   _ColIndex,COMVariant /*variant*/   _NewValue)
{
	;
	exg2antt1.Refresh();
}

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Columns,com_Editor,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Columns,var_Editor,var_Items;
	int g1,g2,h,r;
	;

	super();

	exg2antt1.FreezeEvents(true);
	exg2antt1.BeginUpdate();
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Description");
		var_Column = COM::createFromVariant(com_Columns.Add("Qty")); com_Column = var_Column;
			var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
			com_Column.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
		var_Column1 = COM::createFromVariant(com_Columns.Add("Price")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"avg(current,rec,%2)");
			var_Editor = COM::createFromObject(com_Column1.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column2 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column2 = var_Column2;
			com_Column2.ComputedField("%1 * %2");
			com_Column2.Def(20/*exTotalColumn*/,"sum(current,rec,%3)");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		r = com_Items.AddItem("Root");
		g1 = com_Items.InsertItem(r,,"Group 1");
		com_Items.FormatCell(g1,COMVariant::createFromInt(2),"`<average missing>`");
		com_Items.CellEditorVisible(g1,COMVariant::createFromInt(2),false);
		com_Items.CellBold(g1,COMVariant::createFromInt(2),true);
		com_Items.CellForeColor(g1,COMVariant::createFromInt(2),WinApi::RGB2int(255,0,0));
		h = com_Items.InsertItem(g1,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(10));
		h = com_Items.InsertItem(g1,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(11));
		g2 = com_Items.InsertItem(r,,"Group 2");
		h = com_Items.InsertItem(g2,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(12));
		h = com_Items.InsertItem(g2,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(13));
		com_Items.ExpandItem(0,true);
	exg2antt1.EndUpdate();
	exg2antt1.FreezeEvents(false);
}
2320
How can I add a total column

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item,int   _ColIndex,COMVariant /*variant*/   _NewValue)
{
	;
	exg2antt1.Refresh();
}

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Columns,com_Editor,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Columns,var_Editor,var_Items;
	int g1,g2,h,r;
	;

	super();

	exg2antt1.FreezeEvents(true);
	exg2antt1.BeginUpdate();
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.HeaderHeight(24);
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Description");
		var_Column = COM::createFromVariant(com_Columns.Add("Qty")); com_Column = var_Column;
			var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
			com_Column.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
		var_Column1 = COM::createFromVariant(com_Columns.Add("Price")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"avg(current,rec,%2)");
			var_Editor = COM::createFromObject(com_Column1.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column2 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column2 = var_Column2;
			com_Column2.ComputedField("%1 * %2");
			com_Column2.Def(20/*exTotalColumn*/,"sum(current,rec,%3)");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		r = com_Items.AddItem("Root");
		g1 = com_Items.InsertItem(r,,"Group 1");
		h = com_Items.InsertItem(g1,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(10));
		h = com_Items.InsertItem(g1,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(11));
		g2 = com_Items.InsertItem(r,,"Group 2");
		h = com_Items.InsertItem(g2,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(12));
		h = com_Items.InsertItem(g2,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(13));
		com_Items.ExpandItem(0,true);
	exg2antt1.EndUpdate();
	exg2antt1.FreezeEvents(false);
}
2319
Is it possible when I move the horizontal scroll bar, that the whole chart scrolls live during move the horizontal scroll bar. Not it scrolls just when I release the left mouse, not during change the horizontal scroll position
public void init()
{
	COM com_Chart;
	anytype var_Chart;
	;

	super();

	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,0);
		com_Chart.LevelCount(2);
		com_Chart.ToolTip("");
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,0);
}
*/
2318
The exLinkStyle is not valid (the style of the link is still solid) if the link's width is greater than 1. What can be done
public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1,h2,h3;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
	exg2antt1.AntiAliasing(true);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Task 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"K1");
		h2 = com_Items.AddItem("Task 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/5/2001",213)),COMVariant::createFromDate(str2Date("1/7/2001",213)),"K2");
		com_Items.AddLink("L1",h1,"K1",h2,"K2");
		com_Items.Link("L1",9/*exLinkStyle*/,COMVariant::createFromInt(2));
		com_Items.Link("L1",10/*exLinkWidth*/,COMVariant::createFromInt(2));
		h3 = com_Items.AddItem("Task 4");
		com_Items.AddBar(h3,"Task",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/10/2001",213)),"K3");
		com_Items.AddLink("L2",h2,"K2",h3,"K3");
		com_Items.Link("L2",9/*exLinkStyle*/,COMVariant::createFromInt(1));
		com_Items.Link("L2",10/*exLinkWidth*/,COMVariant::createFromInt(2));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
2317
How can I change the tooltip's margins (method 2)

// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	;
	exg2antt1.ShowToolTip(exg2antt1.Chart().BarFromPoint(-1,-1));
}

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ToolTipMargin("16,8");
	exg2antt1.Columns().Add("Def");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.AllowCreateBar(0/*exNoCreateBar*/);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2010",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
		com_Bar.Def(6/*exBarToolTip*/,"...");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Task");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2010",213)),COMVariant::createFromDate(str2Date("1/5/2010",213)),"A","A");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/5/2010",213)),COMVariant::createFromDate(str2Date("1/8/2010",213)),"B","B");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2316
Are there any properties to set text margins at tooltip, like Margins="5,5" (method 1). Margins is used to get some space between text and the tooltips border

// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	;
	exg2antt1.ShowToolTip(exg2antt1.Chart().BarFromPoint(-1,-1));
}

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ToolTipMargin("16,8");
	exg2antt1.Columns().Add("Def");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.AllowCreateBar(0/*exNoCreateBar*/);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2010",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
		com_Bar.Def(6/*exBarToolTip*/,"...");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Task");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2010",213)),COMVariant::createFromDate(str2Date("1/5/2010",213)),"A","A");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/5/2010",213)),COMVariant::createFromDate(str2Date("1/8/2010",213)),"B","B");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2315
exShowExtendedLinks

public void init()
{
	COM com_Chart,com_Items,com_Level;
	anytype var_Chart,var_Items,var_Level;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DefaultItemHeight(24);
	exg2antt1.HeaderHeight(20);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.AntiAliasing(true);
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.LevelCount(2);
		com_Chart.UnitScale(65536/*exHour*/);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/10/2024",213)));
		var_Level = com_Chart.Level(1); com_Level = var_Level;
			com_Level.DrawTickLines(0/*exLevelNoLine*/);
			com_Level.DrawTickLinesFrom(0,1/*exLevelDotLine*/);
		com_Chart.AllowResizeChart(-1/*0xffffffff | exAllowChangeUnitScale | exAllowResizeChartMiddle | exAllowResizeChartHeader*/);
		com_Chart.ShowLinks(1/*exShowExtendedLinks*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("T1"),"Task",COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 10:00:00",213)),COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 10:20:00",213)),"T1");
		com_Items.AddBar(com_Items.AddItem("T2"),"Task",COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 9:00:00",213)),COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 12:00:00",213)),"T2");
		com_Items.AddBar(com_Items.AddItem("T3"),"Task",COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 8:00:00",213)),COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 8:30:00",213)),"T3");
		com_Items.AddBar(com_Items.AddItem("T4"),"Task",COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 8:00:00",213)),COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 8:30:00",213)),"T4");
		com_Items.AddLink("L13",com_Items.ItemByIndex(0),"T1",com_Items.ItemByIndex(2),"T3");
		com_Items.AddLink("L14",com_Items.ItemByIndex(0),"T1",com_Items.ItemByIndex(3),"T4");
		com_Items.AddLink("L24",com_Items.ItemByIndex(1),"T2",com_Items.ItemByIndex(3),"T4");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
2314
According to the documentation of the ShowExtendedLinksEnum value exShowExtendedLinks (1) it is possible to distinctly visualise links (rather than showing them one over another) when two or more links start or end on the same bar

public void init()
{
	COM com_Chart,com_Items,com_Level;
	anytype var_Chart,var_Items,var_Level;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DefaultItemHeight(24);
	exg2antt1.HeaderHeight(20);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.AntiAliasing(true);
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.LevelCount(2);
		com_Chart.UnitScale(65536/*exHour*/);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/10/2024",213)));
		var_Level = com_Chart.Level(1); com_Level = var_Level;
			com_Level.DrawTickLines(0/*exLevelNoLine*/);
			com_Level.DrawTickLinesFrom(0,1/*exLevelDotLine*/);
		com_Chart.AllowResizeChart(-1/*0xffffffff | exAllowChangeUnitScale | exAllowResizeChartMiddle | exAllowResizeChartHeader*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("T1"),"Task",COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 10:00:00",213)),COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 10:20:00",213)),"T1");
		com_Items.AddBar(com_Items.AddItem("T2"),"Task",COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 9:00:00",213)),COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 12:00:00",213)),"T2");
		com_Items.AddBar(com_Items.AddItem("T3"),"Task",COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 8:00:00",213)),COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 8:30:00",213)),"T3");
		com_Items.AddBar(com_Items.AddItem("T4"),"Task",COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 8:00:00",213)),COMVariant::createFromUtcDateTime(str2Datetime("1/10/2024 8:30:00",213)),"T4");
		com_Items.AddLink("L1",com_Items.ItemByIndex(0),"T1",com_Items.ItemByIndex(2),"T3");
		com_Items.AddLink("L2",com_Items.ItemByIndex(1),"T2",com_Items.ItemByIndex(3),"T4");
		com_Items.Link("L2",15/*exLinkShowRound*/,COMVariant::createFromInt(4));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
2313
How to use arrows key left/right to move the cursor left/right inside the text
public void init()
{
	COM com_Editor,com_Items;
	anytype var_Editor,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Editor = COM::createFromVariant(exg2antt1.Columns().Add("Edit")).Editor(); com_Editor = var_Editor;
		com_Editor.EditType(1/*EditType*/);
		com_Editor.Option(20/*exLeftArrow*/,COMVariant::createFromBoolean(false));
		com_Editor.Option(21/*exRightArrow*/,COMVariant::createFromBoolean(false));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("000");
		com_Items.AddItem("111");
		com_Items.AddItem("222");
	exg2antt1.EndUpdate();
}
2312
How can I force the cursor to jump to the end of the editor once the user clicks the cell
public void init()
{
	COM com_Editor,com_Items;
	anytype var_Editor,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.SelBackColor(exg2antt1.BackColor());
	exg2antt1.SelForeColor(exg2antt1.ForeColor());
	var_Editor = COM::createFromVariant(exg2antt1.Columns().Add("Edit")).Editor(); com_Editor = var_Editor;
		com_Editor.EditType(1/*EditType*/);
		com_Editor.Option(48/*exEditSelStart*/,COMVariant::createFromInt(-1));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("000");
		com_Items.AddItem("111");
		com_Items.AddItem("222");
	exg2antt1.EndUpdate();
}
2311
How can I show the overview with a different color except or outside the selection

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_s = "gBFLBCJwBAEHhEJAAEhABVIDg6AADACAxRDAMgBQKAAzAJBIYhiGgcYCgMZBSDeCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADE2YAoJDUN4nDKMMDybBkRxtDCPIDnGQoDi";
	var_s = var_s + "GI4nSbKIzSCKMQhrEKZZrnaLJFgOTY8ABLEBvfSgASof6MKBlKhKGoiUo2SCFEaBTBNHxDL6raqqWJ5HDINQlWzbcjjKKFYRbOqTZDkGj4XqKTo3YBAdZSXJsXwTGKkj";
	var_s = var_s + "i3ZgMOR3HaQaTjOgINpuDZdRzkUYZUDFSwSDqQIRtCpbJqzFZDZbLNbYBYME47AayID0CbdCgmaalSZHNxbVa0BzpXrFLw1TLoDy8AJ+ABseKzfo9PxdIygZRzKJ8aof";
	var_s = var_s + "E+YxynIfJcC8QgbCmL5eiEPIKH6RABlibJpicW4/FcAx/HOYRGmud4+CcHxdmiDhkGEIIIEkQJSGMHQHFGSBlFEUITEmewAAQIQ2AYRpDGQJAoEIXhXCkCB5kmSAdmgV";
	var_s = var_s + "ZPmgZJ8gaT4oHSeIHk8aIEnWCJiEiFgmgmYoIiYJIIE8aB8niB0pmyfIGE+ZYmDQPpjgOUg6DqY5DgYPg2mQAxqEKEJkEkFhGhGZIJA4QA2mOY4GDwOsumCe4NAACJKD";
	var_s = var_s + "oPQOFkZJThaSoZHSGYXmYCYGGKGJmEmFhmCsJoDFYag5iaSISDIAAjAkPJLhyS4JlYbA5iSeZmHqHpnkmdh+hOZx5lSOAzGgSQ+DAAAimkNIkiKTh6DSbIjmkChGhKJJ";
	var_s = var_s + "pEoVoWiSaJThyKImmSWI4ACCwNkqBhgDsahKhaJopmqComiqKpqkqEhghKYpAAIJIQmYA46jaLZrgqZo6i6a5KnaPotiZRQkiyIg6lIXw7myCwmkqMpsksNpOjObQLCK";
	var_s = var_s + "QYQiwOpOEKGAPAsZpajabZLHaXo3m4C4GlmNJNisVpFjWZZzkaao6m6S42m6O5vAuRpyjqLhLhidYxgmE5KnqPpvkudp+j+cAMAcAo+i8WIOkSPZuguZwDkKcJMDafpB";
	var_s = var_s + "E8XAengPJxEwVwWkWcYMGcGpGnGTBTBCRIwhkXwikichMhcJpJnKDIPB+NYNimAgqkucwMkcMoInKO4fC2F5ikyZw6k6c5MncPpPnOLJXAiTZJhOXxGlGdINCcSpSnST";
	var_s = var_s + "Q3E6UY0CuYgulSdRNFcVpVnWDRnFSVBwh0axeledgNFsXJRA+HYXGaWZ2g2JxqlqdpNjcZZYmYCJDHKXJ3E2K4doux3gbE8OEF4ygtjuH6L8eAHAHgFGCO8bY2QZgZDi";
	var_s = var_s + "BwJ4FRijxE4G8DoxBxj6B6EINwTADjvBaMseYHBng1GaPMTg7wepxA4J4Rx8RjgfCYFMeoEQ6BpGqPUTob2MD2A6IQLoNAKiHAuG0WYAAJCVBCCETAHR3DMFWPgDwD29";
	var_s = var_s + "j4E8CoV4sw7imAIIcJASggAHBeBIJw5grikCmHoSYNxWjrH2BMAoNgqAZE8O0GYEg5DgAIG8DgxwjhXGaCYZIcgnxBGSDILgmwTjKHkJMNwqgjCREoGEC4RRMifHqJcY";
	var_s = var_s + "okQ6BgEYJEUIaQOhlHIIESAECAg=";
	exg2antt1.VisualAppearance().Add(1,COMVariant::createFromStr(var_s));
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	exg2antt1.Background(199/*exOverviewSelResize*/,WinApi::RGB2int(1,0,0));
	exg2antt1.Background(200/*exOverviewSelOut*/,WinApi::RGB2int(240,240,240));
	exg2antt1.Chart().OverviewSelBackColor(WinApi::RGB2int(255,255,255));
	exg2antt1.Background(201/*exOverviewSelUnit*/,0x1000000);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("6/21/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.OverviewVisible(31746/*0x7c02 | exOverviewShowSelMargins | exOverviewShowMargins | exOverviewShowDateTimeScaleBottom | exOverviewShowAllVisible*/);
		com_Chart.OverviewHeight(64);
		com_Chart.LevelCount(2);
		com_Chart.UnitScale(4096/*exDay*/);
		com_Chart.Label(65536/*exHour*/,"");
		com_Chart.Label(1048576/*exMinute*/,"");
		com_Chart.Label(16777216/*exSecond*/,"");
		com_Chart.AllowOverviewZoom(1/*exAlwaysZoom*/);
	exg2antt1.Columns().Add("Column");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Item 1"),"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 2"),"Task",COMVariant::createFromDate(str2Date("7/2/2001",213)),COMVariant::createFromDate(str2Date("7/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 3"),"Task",COMVariant::createFromDate(str2Date("11/2/2001",213)),COMVariant::createFromDate(str2Date("11/11/2001",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
2310
Resize the chart using the overview's selection left and right margins (blue)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	exg2antt1.Background(199/*exOverviewSelResize*/,WinApi::RGB2int(0,0,255));
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("6/21/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.OverviewVisible(31746/*0x7c02 | exOverviewShowSelMargins | exOverviewShowMargins | exOverviewShowDateTimeScaleBottom | exOverviewShowAllVisible*/);
		com_Chart.OverviewHeight(64);
		com_Chart.LevelCount(2);
		com_Chart.UnitScale(4096/*exDay*/);
	exg2antt1.Columns().Add("Column");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Item 1"),"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 2"),"Task",COMVariant::createFromDate(str2Date("7/2/2001",213)),COMVariant::createFromDate(str2Date("7/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 3"),"Task",COMVariant::createFromDate(str2Date("11/2/2001",213)),COMVariant::createFromDate(str2Date("11/11/2001",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
2309
Resize the chart using the overview's selection left and right margins (black)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	exg2antt1.Background(199/*exOverviewSelResize*/,WinApi::RGB2int(1,0,0));
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("6/21/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.OverviewVisible(31746/*0x7c02 | exOverviewShowSelMargins | exOverviewShowMargins | exOverviewShowDateTimeScaleBottom | exOverviewShowAllVisible*/);
		com_Chart.OverviewHeight(64);
		com_Chart.LevelCount(2);
		com_Chart.UnitScale(4096/*exDay*/);
	exg2antt1.Columns().Add("Column");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Item 1"),"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 2"),"Task",COMVariant::createFromDate(str2Date("7/2/2001",213)),COMVariant::createFromDate(str2Date("7/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 3"),"Task",COMVariant::createFromDate(str2Date("11/2/2001",213)),COMVariant::createFromDate(str2Date("11/11/2001",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
2308
Disable temporarily the column's sort, resize and drag and drop

public void init()
{
	COM com_Chart,com_Editor,com_Level;
	anytype var_Chart,var_Editor,var_Level;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.OnResizeControl(1/*exResizeChart*/);
	exg2antt1.SortBarVisible(true);
	exg2antt1.SortBarCaption("<fgcolor 808080><c>the header and the sort-bar are disabled (no drag and drop is allowed)");
	exg2antt1.AllowGroupBy(true);
	exg2antt1.HeaderEnabled(false);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	COM::createFromVariant(exg2antt1.Columns().Add("Index")).FormatColumn("1 index ``");
	COM::createFromVariant(exg2antt1.Columns().Add("Pos")).FormatColumn("1 apos ``");
	var_Editor = COM::createFromObject(COM::createFromVariant(exg2antt1.Columns().Add("Edit"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(1/*EditType*/);
	exg2antt1.GridLineStyle(512/*exGridLinesGeometric*/);
	exg2antt1.DrawGridLines(2/*exVLines*/);
	exg2antt1.GridLineColor(WinApi::RGB2int(224,224,224));
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.AllowCreateBar(1/*exCreateBarAuto*/);
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/28/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,196);
		com_Chart.GridLineStyle(512/*exGridLinesGeometric*/);
		com_Chart.DrawGridLines(-1/*exAllLines*/);
		var_Level = com_Chart.Level(1); com_Level = var_Level;
			com_Level.DrawGridLines(true);
			com_Level.GridLineColor(exg2antt1.GridLineColor());
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,196);
}
*/
2307
Adds a Finish-Start(FS) link (method 3)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1,h2;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Name");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/28/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Item 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		h2 = com_Items.AddItem("Item 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		com_Items.AddLink("Link1",h1,"",h2,"");
		com_Items.SchedulePDM(0,"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2306
Adds a Start-Start(SS) link (method 3)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1,h2;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Name");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/28/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Item 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		h2 = com_Items.AddItem("Item 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		com_Items.AddLink("Link1",h1,"",h2,"");
		com_Items.Link("Link1",6/*exLinkStartPos*/,COMVariant::createFromInt(0));
		com_Items.Link("Link1",7/*exLinkEndPos*/,COMVariant::createFromInt(0));
		com_Items.SchedulePDM(0,"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2305
Adds a Finish-Finish(FF) link (method 3)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1,h2;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Name");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/28/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Item 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		h2 = com_Items.AddItem("Item 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		com_Items.AddLink("Link1",h1,"",h2,"");
		com_Items.Link("Link1",6/*exLinkStartPos*/,COMVariant::createFromInt(2));
		com_Items.Link("Link1",7/*exLinkEndPos*/,COMVariant::createFromInt(2));
		com_Items.SchedulePDM(0,"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2304
Adds a Start-Finish(SF) link (method 3)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1,h2;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Name");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/28/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Item 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		h2 = com_Items.AddItem("Item 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		com_Items.AddLink("Link1",h1,"",h2,"");
		com_Items.Link("Link1",6/*exLinkStartPos*/,COMVariant::createFromInt(0));
		com_Items.Link("Link1",7/*exLinkEndPos*/,COMVariant::createFromInt(2));
		com_Items.SchedulePDM(0,"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2303
Adds a Finish-Start(FS) link (method 2)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1,h2;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Name");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/28/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Item 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		h2 = com_Items.AddItem("Item 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		com_Items.ItemBar(h2,"",270/*exBarPredecessor*/,"1FS");
		com_Items.SchedulePDM(0,"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2302
Adds a Start-Start(SS) link (method 2)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1,h2;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Name");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/28/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Item 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		h2 = com_Items.AddItem("Item 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		com_Items.ItemBar(h2,"",270/*exBarPredecessor*/,"1SS");
		com_Items.SchedulePDM(0,"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
2301
Adds a Finish-Finish(FF) link (method 2)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1,h2;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Name");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/28/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Item 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		h2 = com_Items.AddItem("Item 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)));
		com_Items.ItemBar(h2,"",270/*exBarPredecessor*/,"1FF");
		com_Items.SchedulePDM(0,"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/