104
Fullfit the caption on the element's width

public void init()
{
	COM com_Element;
	anytype var_Element;
	str var_s,var_s1;
	;

	super();

	var_s = "<solidline><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;properties>+</a><br><solidline>+ balance: Currency = 0</so";
	var_s = var_s + "lidline><br>+ deposit(amount: Currency)<r><a 2;methods>+</a><br>+ withdraw(amount: Currency)";
	var_s1 = "<solidline><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;properties>+</a><br><solidline>+ balance: Currency = 0</so";
	var_s1 = var_s1 + "lidline><br>+ deposit(amount: Currency)<r><a 2;methods>+</a><br>+ withdraw(amount: Currency)";
	var_Element = exswimlane1.Elements().Add(COMVariant::createFromStr(var_s)); com_Element = var_Element;
		com_Element.CaptionSingleLine(1/*exCaptionBreakWrap*/);
		com_Element.BackColor(WinApi::RGB2int(248,248,248));
		com_Element.AutoSize(false);
		com_Element.Width(194);
		com_Element.Height(76);
		com_Element.CaptionAlign(4);
}
103
Wrap the caption by <br> or "\r\n" sequence only

public void init()
{
	COM com_Element;
	anytype var_Element;
	str var_s,var_s1;
	;

	super();

	var_s = "<solidline><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;properties>+</a><br><solidline>+ balance: Currency = 0</so";
	var_s = var_s + "lidline><br>+ deposit(amount: Currency)<r><a 2;methods>+</a><br>+ withdraw(amount: Currency)";
	var_s1 = "<solidline><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;properties>+</a><br><solidline>+ balance: Currency = 0</so";
	var_s1 = var_s1 + "lidline><br>+ deposit(amount: Currency)<r><a 2;methods>+</a><br>+ withdraw(amount: Currency)";
	var_Element = exswimlane1.Elements().Add(COMVariant::createFromStr(var_s)); com_Element = var_Element;
		com_Element.CaptionSingleLine(1/*exCaptionBreakWrap*/);
		com_Element.BackColor(WinApi::RGB2int(248,248,248));
}
102
Display a custom tooltip
// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	;
	exswimlane1.ShowToolTip("new content","",,"+8","+8");
}

public void init()
{
	;

	super();

}
101
Shows the tooltip of the object moved relative to its default position
// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	;
	exswimlane1.ShowToolTip("<null>","<null>",,"+8","+8");
}

public void init()
{
	COM com_Element;
	anytype var_Element;
	;

	super();

	var_Element = COM::createFromObject(exswimlane1.Elements()).Add("Element with a Tooltip"); com_Element = var_Element;
	com_Element.ToolTip("This is a bit of text that should be displayed when cursor hovers the element.");
}
100
Add a pool to cover all visible-elements

public void init()
{
	COM com_Elements,com_Pool;
	anytype var_Elements,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(); com_Pool = var_Pool;
	com_Pool.HeaderSize(0/*exHeaderLeft*/,24);
	exswimlane1.EndUpdate();
}
99
How can I ensure that a specified pool fits the surface's visible area
public void init()
{
	COM com_Pattern,com_Pool,com_Pools;
	anytype var_Pattern,var_Pool,var_Pools;
	;

	super();

	var_Pools = exswimlane1.Pools(); com_Pools = var_Pools;
		var_Pool = COM::createFromObject(com_Pools.Add()); com_Pool = var_Pool;
		var_Pattern = com_Pool.Pattern(); com_Pattern = var_Pattern;
			com_Pattern.Type(6/*exPatternBDiagonal*/);
			com_Pattern.Color(WinApi::RGB2int(224,224,224));
		var_Pool = COM::createFromObject(com_Pools.Add(COMVariant::createFromInt(2000))); com_Pool = var_Pool;
		com_Pool.EnsureVisible();
}
98
No property for the pool can be saved/restored through Undo/Redo feature

public void init()
{
	COM com_Lane,com_Lanes,com_Pool;
	anytype var_Lane,var_Lanes,var_Pool;
	int l;
	;

	super();

	exswimlane1.AllowUndoRedo(true);
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-54),COMVariant::createFromInt(-47),COMVariant::createFromInt(244),COMVariant::createFromInt(112)); com_Pool = var_Pool;
		l = com_Pool.StartUpdatePool();
		var_Lane = com_Pool.Lane(1/*exLaneVertical*/); com_Lane = var_Lane;
			com_Lane.Color(WinApi::RGB2int(240,240,240));
			var_Lanes = COM::createFromObject(com_Lane.Children()); com_Lanes = var_Lanes;
			com_Lanes.Count(2);
		com_Pool.EndUpdatePool(l);
}
97
Rename Undo/Redo commands into the control's toolbar

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.ToolBarFormat("-1,100,102,101,|,103,104");
	exswimlane1.ToolBarCaption(103,"Anuleaza <img>4</img>");
	exswimlane1.ToolBarCaption(104,"<img>5</img>Reface");
	exswimlane1.ToolBarToolTip(103,"Anuleaza ultima actiune UI. Pentru a anula o actiune apasati Ctrl+Z.");
	exswimlane1.ToolBarToolTip(104,"Inverseaza cea mai recenta operatie de anulare. Pentru a reface o actiune apasati Ctrl+Y.");
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.EndUpdate();
}
96
Add Undo/Redo commands to control's toolbar

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.ToolBarFormat("-1,100,102,101,|,103,104");
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.EndUpdate();
}
95
Clear Undo/Redo queue (method 2)

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	int c;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	c = exswimlane1.UndoRedoQueueLength();
	exswimlane1.UndoRedoQueueLength(0);
	exswimlane1.UndoRedoQueueLength(c);
	print( exswimlane1.UndoListAction() );
	exswimlane1.EndUpdate();
}
94
Clear Undo/Redo queue (method 1)

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.AllowUndoRedo(true);
	print( exswimlane1.UndoListAction() );
	exswimlane1.EndUpdate();
}
93
Removes Redo operations

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.Undo();
	exswimlane1.RedoRemoveAction(COMVariant::createFromInt(10));
	print( exswimlane1.RedoListAction() );
	exswimlane1.EndUpdate();
}
92
Removes Undo operations

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.UndoRemoveAction(COMVariant::createFromInt(10));
	print( exswimlane1.UndoListAction() );
	exswimlane1.EndUpdate();
}
91
Record the UI operations as a block of undo/redo operations

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.StartBlockUndoRedo();
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.EndBlockUndoRedo();
	print( exswimlane1.UndoListAction() );
	exswimlane1.EndUpdate();
}
90
Groups the next to current Undo/Redo Actions in a single block

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.GroupUndoRedoActions(3);
	print( exswimlane1.UndoListAction() );
	exswimlane1.EndUpdate();
}
89
Limits the number of entries within the Undo/Redo queue

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.UndoRedoQueueLength(1);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	print( exswimlane1.UndoListAction() );
	exswimlane1.EndUpdate();
}
88
Lists the Redo actions that can be performed on the surface

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.Undo();
	print( exswimlane1.RedoListAction() );
	exswimlane1.EndUpdate();
}
87
Lists the Undo actions that can be performed on the surface

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	print( exswimlane1.UndoListAction() );
	exswimlane1.EndUpdate();
}
86
Checks whether the Undo operation is possible

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.Undo();
	print( "CanRedo" );
	print( exswimlane1.CanRedo() );
	exswimlane1.EndUpdate();
}
85
Call Redo by code

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.Undo();
	exswimlane1.Redo();
	exswimlane1.EndUpdate();
}
84
Checks whether the Undo operation is possible

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	print( "CanUndo" );
	print( exswimlane1.CanUndo() );
	exswimlane1.EndUpdate();
}
83
Call Undo by code

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.Undo();
	exswimlane1.EndUpdate();
}
82
Save the element's properties for Undo/Redo operations, by code

public void init()
{
	COM com_Elements,com_Link;
	anytype var_Elements,var_Link;
	int h;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.StartBlockUndoRedo();
	var_Link = exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2))); com_Link = var_Link;
		h = com_Link.StartUpdateLink();
		com_Link.Color(WinApi::RGB2int(255,0,0));
		com_Link.Width(2);
		com_Link.ShowDir(false);
		com_Link.ShowLinkType(2/*exLinkStraight*/);
		com_Link.EndUpdateLink(h);
	exswimlane1.EndBlockUndoRedo();
	exswimlane1.EndUpdate();
}
81
No color is restored for the link when Undo/Redo operation is executed

// AddElement event - A new element has been added to the surface.
void onEvent_AddElement(COM   _Element)
{
	// Element.ShowCheckBox = True
	// Element.CheckBoxAlign = 2
	;
}

public void init()
{
	COM com_Element,com_Elements,com_Link;
	anytype var_Element,var_Elements,var_Link;
	int h;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Check <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		var_Element = COM::createFromObject(com_Elements.Add("Check <b>2")); com_Element = var_Element;
		com_Element.Checked(1/*exChecked*/);
	exswimlane1.StartBlockUndoRedo();
	var_Link = exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2))); com_Link = var_Link;
		h = com_Link.StartUpdateLink();
		com_Link.Color(WinApi::RGB2int(255,0,0));
		com_Link.Width(2);
		com_Link.ShowDir(false);
		com_Link.ShowLinkType(2/*exLinkStraight*/);
		com_Link.EndUpdateLink(h);
	exswimlane1.EndBlockUndoRedo();
	exswimlane1.EndUpdate();
}
80
Save the element's properties for Undo/Redo operations, by code

public void init()
{
	COM com_Element;
	anytype var_Element;
	int h;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Elements().Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
	exswimlane1.StartBlockUndoRedo();
	var_Element = COM::createFromObject(exswimlane1.Elements()).Add("Item <b>2"); com_Element = var_Element;
		h = com_Element.StartUpdateElement();
		com_Element.BackColor(WinApi::RGB2int(0,0,0));
		com_Element.ForeColor(WinApi::RGB2int(255,255,255));
		com_Element.BorderColor(WinApi::RGB2int(255,0,0));
		com_Element.EndUpdateElement(h);
	exswimlane1.EndBlockUndoRedo();
	exswimlane1.EndUpdate();
}
79
No color is restored for the element when Undo/Redo operation is executed

public void init()
{
	COM com_Element;
	anytype var_Element;
	int h;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Elements().Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
	exswimlane1.StartBlockUndoRedo();
	var_Element = COM::createFromObject(exswimlane1.Elements()).Add("Item <b>2"); com_Element = var_Element;
		h = com_Element.StartUpdateElement();
		com_Element.BackColor(WinApi::RGB2int(0,0,0));
		com_Element.ForeColor(WinApi::RGB2int(255,255,255));
		com_Element.BorderColor(WinApi::RGB2int(255,0,0));
		com_Element.EndUpdateElement(h);
	exswimlane1.EndBlockUndoRedo();
	exswimlane1.EndUpdate();
}
78
How can I ensure that a specified element fits the surface's visible area

public void init()
{
	COM com_Element,com_Elements,com_Pattern;
	anytype var_Element,var_Elements,var_Pattern;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = COM::createFromObject(com_Elements.Add("Element A",COMVariant::createFromInt(-100))); com_Element = var_Element;
		var_Pattern = com_Element.Pattern(); com_Pattern = var_Pattern;
			com_Pattern.Type(6/*exPatternBDiagonal*/);
			com_Pattern.Color(WinApi::RGB2int(224,224,224));
		var_Element = COM::createFromObject(com_Elements.Add("Element B",COMVariant::createFromInt(2000))); com_Element = var_Element;
		com_Element.EnsureVisible();
}
77
LayoutEndChanging(exUndo), LayoutEndChanging(exRedo) or LayoutEndChanging(exUndoRedoUpdate) notifiy your application once a Undo/Redo operation is executed (CTRL+Z, CTRL+Y) or updated
// LayoutEndChanging event - Notifies your application once the control's layout has been changed.
void onEvent_LayoutEndChanging(int   _Operation)
{
	;
	print( "LayoutEndChanging" );
	print( _Operation );
}

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.EndUpdate();
}
76
Turn on the Undo/Redo feature

public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowUndoRedo(true);
	exswimlane1.Pools().Add(COMVariant::createFromInt(-154),COMVariant::createFromInt(-82),COMVariant::createFromInt(244),COMVariant::createFromInt(122));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Item <b>1",COMVariant::createFromInt(-64),COMVariant::createFromInt(-64));
		com_Elements.Add("Item <b>2");
	exswimlane1.Links().Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.EndUpdate();
}
75
ImageSize property on 32 (specifies the size of control' icons/images/check-boxes/radio-buttons)

// AddElement event - A new element has been added to the surface.
void onEvent_AddElement(COM   _Element)
{
	// Element.ShowCheckBox = True
	;
}

public void init()
{
	COM com_Appearance,com_Element,com_Elements;
	anytype var_Appearance,var_Element,var_Elements;
	str var_s,var_s1,var_s2,var_s3,var_s4;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.ImageSize(32);
	exswimlane1.Font().Size(16);
	exswimlane1.ContextMenuFont().Size(16);
	var_s = "gBJJgBAIDAAEg4AEEKAD/hz/EMNh8TIRNGwAjEZAEXjAojKAjMLjABhkaABAk0plUrlktl0vmExmUzmk1m03nE5nU7nk9miAoE+oVDolFo1HpFJpU5h8Sf9OqFNqUOqN";
	var_s = var_s + "UqdPq9VrFWrlbr1QpdhAFAkFis1ntFptVrtkrpszrNvmVxqk3uVtm1kmF3sdBvF/wGBmV+j9BYGHwWJulfxdax2NyFdx2JlV6l9Nw7AAGZymdz2Cy2GxErvWcz9ivlwy";
	var_s = var_s + "V21cuxugwktzGIzmvwtl0+53U5y0a0Wazmmyu/3dCyOMyXHx/J5nIr9q3uyqnBxFN3G46ma4vb7mD2Ng4nZze00fDkHC7t7us2rOX5tguetpHRlmz4HVqnXk1PjHO+CM";
	var_s = var_s + "Po9MBMC+j2vC8j7wS8cFNI4kBo05UIvfCT/NsnsApU+0Fqg/T+oy/kPxC0sEQfErKQK96+w28UWRI8UGvO8sTLS9r2PWmsMJTDTask3CsIbIEQRA3shOXEEAO/GclJ9F";
	var_s = var_s + "EKrrA8FRbKMXRIlb0JxCkjS1LMswhCcvuel0cv26cSMa8Ufx+2sQwhEUoSXOCjSbLcnxjKc7sdKUVyq28NtVI71P9P7JxtQEapjQ6fzfM8zPfNE2PhIsLL63E40slk5y";
	var_s = var_s + "7N89LcyU9SvMb3SdUc6VJLj5VLVLfO/PS9KzNFHUa/0XyBD0dxlS9cxhMlTRSoNXypPErWDPyfNS+MwprRNO0FD8wVVZ1AI08URwVRjtJ1WCn21QkkUrXVLVPQS/XIkF";
	var_s = var_s + "gTxT9iONZ9xVTdq+L1eKg3kkF6Upe68XtfV51/MtrVjBlwYFL1ev8y1/P6/lyzzYl02wntj0RVFmS1Qa+M5as93QxEUW9e993rfmQ2+vy65M/mL1lhl/2bj2ByVduMtN";
	var_s = var_s + "hCJT9hdz41nN14Ld12Z9UjfI/oUAaGseiw6+uFLLhcVabJOS5RqOE0BHlZ5VnEr5fOMs3st+aa/bbRzrJGV51Y0b0DbqaWXZD90hIsPbjWu52+6Wyadpe66hhO+P/Xio";
	var_s = var_s + "W5rD8ZbrUZuVg6n1dsE/cXmewu1m9PVwnd35/nueXho/NaJzmjc61W76esuT77eG8pTquy9TwWH8LEzG8RDfFalx3Gcfvna9rvG/cptGLd9tuI6TZOP5Fiqi99vea+X4";
	var_s = var_s + "VRcBq/JZZtVQ9cwSs5lsXE372+a9z7PbfB3VVqHyvMctLto8uob6eV0m/cD6MN2v+T33t6sBut42vdv2bJ8a997x2maFJfK+qArbGJPEKE+1qTflMsIdW/GCJX17KcT6";
	var_s = var_s + "/czr/X+u1g29B7j/4BQfWkkx4zIHisjhPCmE0K4SwtXM+d4BvHRwNZOoBph9IJvPek9d40FoMJxf691jj2ywQQcHEWET4XJwkTszlVqm2GokewxtBT1DpQjRxDN0rUVD";
	var_s = var_s + "NKdC3lb6tzNOwh6upMSSYfv4YBCl/bsn9PxiFCEo7SI6Obc9HeOrnY8x4jtHtdpN4GRbaorhsbu18Pph5CiHymI0RpSXGJ/z2oUOxYxG858AyiI+bfJtuTcG5yelBJyT";
	var_s = var_s + "8okhqFd4a5yxL0rvulYtKCsZiWxWkc1s1cRoxxwhA31DLE0mR9l9HqX8fJgTDmFMVH0MIsRzVYnwnMi1dyzmhLt2kS2pxIiU62Wj5ptQGlSYFakLonTUJNLKaM5Wzlff";
	var_s = var_s + "EkuFkk5wTrhVO2eE7G6lJhxFFYUZ55zmn0WuBCD4pzhirFCKkbomsOoIYmZx5p90LoYWGPdD5g0QmJRKYxbZ6zYoVQ2jVGylSak7KSkFH6RSjpHKFuU+YMyNo5SulkC6";
	var_s = var_s + "I0vonTCitMXPoEpVS2H5FQfEqp2R1opIgAEkJISYARTCukOhmPNI5Ex/wzGHUsicMwA1LHgQ90Y/KpoQHAD+pB/R4NzIaMAB9Xaw1gqaAOsh/A/ptIkWUfhGK1kZH8Rg";
	var_s = var_s + "H5GqvgArqRmt4AAPrTroRofBGADkqr6Rmu4D7CEaHARiwpJrEEZsXXwlVjyMWRsaRqwdkLGNBABZmytmyMnaINZqyVpLR2ftKAAAdd6h2osbaskdiq4EZtgSmyNcbVWR";
	var_s = var_s + "JNXe3AA7REar3b0stlAAXBtoRmvJGLjEYAHUWsFcwCD/rnaop9aEICMAPdK5hT6xpeuzdOtAgKuJeGfdq6ggEbkTvAP+p9UCHXrvKkcgIA==";
	exswimlane1.Images(COMVariant::createFromStr(var_s));
	var_Appearance = exswimlane1.VisualAppearance(); com_Appearance = var_Appearance;
		var_s1 = "gBFLBCJwBAEHhEJAAEhABfICg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6";
		var_s1 = var_s1 + "CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EM";
		var_s1 = var_s1 + "RwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsOatVqjG5sYjcGC3La9cz3Pq/bpuDCbMxuaK1TrYXr1TTrcofBDldAxXRKDxR";
		var_s1 = var_s1 + "DWVhLnYOw9i6XxzjuXprCaOoKB6EwbiCZZCGOdZYlcT4xHmbhMnwNxtn+G5bmqdZ7n4Pw/i+X5zm+dQ9g4CAFjsfAJheOI8HsDoWDWTB/lwSAQkmA5PEgRYoDyDwYFYF";
		var_s1 = var_s1 + "oFmGCBmBqBphDgRJ0gOTIYBGRB/lyRh0iSCZbjYWJzgWDwIjYLoLmMCJGDKDJjBgWgqG6YhyhGHRzA2aJ1mCABOAiOJvhCZBJBYRoRmSCQmEqEQimkAZgg8TZnDCV4Uk";
		var_s1 = var_s1 + "mCUmBKZYJGYWoWCUUhiFMNZckNUh2GENoaGaGZmgmJhqhqZpGGIEx2GYIxSGGGJdggWJth2Z4JmYeoemeSZ2H6H4hGmQhihyTRHGYLg7CiCgmgqIpokoNoOiOaJ4jqAo";
		var_s1 = var_s1 + "chqaZGgaCxpAoZoaiaaJqEmWIcGgShcnCJwqEqFoR3YOoFlgchflqNouiuawHmWSYqGkWZQhcatzmaOoumuSp2j6L5bBaKo0GQKRnGGCxqiyCwmkqMpsksNpOGUGI7A0";
		var_s1 = var_s1 + "ew1G0Rxlg0PptgsZuDG2Sx2l6N5tnYNZZjUDRXDCVo5l2FoymqOpukuNpujubwLjmWY5k0ZwxkaFxYlWdp6j6b5Lnafo/nABQdg2FxcUsY5BkmXAkmeQpckwNRrkKTh8";
		var_s1 = var_s1 + "CSHZBk4NwyC4KxxgMDwakOMZDn8GgwnGAo2C4cwthMcwmCcMoHBMHRehwTIghySYNksZwcH4HBMEsHx5hyPItiweYxnwSZEH4Mozn0fR+DMAo7EYJ50gkdZelKdNql2U";
		var_s1 = var_s1 + "gJn0GIukwH4HicQRai2GI4mSVpNl0dZGledgNgcYpYDWUx3FsOQi5YV5anaTY3G6W53A2RxylydxFjiaxEFCCgBBAQ==";
		com_Appearance.Add(1,COMVariant::createFromStr(var_s1));
		var_s2 = "gBFLBCJwBAEHhEJAAEhABcoFg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6";
		var_s2 = var_s2 + "CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EM";
		var_s2 = var_s2 + "RwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsLpOS5LNKsaxmWLYdhFdTxQi6LpvfA8BwXC6JY7heRYRbFbYxRjGNi1TS7G4n";
		var_s2 = var_s2 + "GKd5WGuL4UHwI4VkaYxii8V4pgQMgVBQdQ5iCTYGi8T4vlWbJ3nuPg+l+H5AlSCg6ByPBoE8Ap3jqYxhBido5g0OgOGOGI4CsSpCCAcgcAuEokiEN5NCKfJ9DyTRjnSc";
		var_s2 = var_s2 + "g1CEYxOBmBpPCgagdgcIZoHoGIFA4AxQkCAxKAgKBwgGSpIBCZhjF2E5UnQPQMiMCJBCIBwxkSQgsgo+JtDKT4ziiQw+k6EwAnsOgLnkHI+yCQ4iEuE4klkPhShEJBpA";
		var_s2 = var_s2 + "oPgymOMoaDgHBjFMBgyD0HYTiCZSZhIIIGC4ChiHSew5kwM5omILZPiOBI0hwZw5kodIdA+M4Uj4PxOmMSJ9DuTQzmyZgviceZagaHVfj4awwmaAh2GUIYmCOEZZDaDR";
		var_s2 = var_s2 + "DFGdwcg4EwyHMN4LBOaJbCoaZqgKH8qkMfIyD8DozDyfA7A0Coui0OpMmOZJdCsahKg6NooioChwmEMxLEoXJbDUTRXGSUgykyMgQG0GpPHMdI3D4TRCgSeQ0kmaw+lG";
		var_s2 = var_s2 + "NAtCOZJVCiT5DhyRQwAqMg0EoDBBGEGAsASC5yiSCw+k4Mp6lWNQuksTpRjMTxDGzJwGmGMpDDKXYTECSAxl6Q5olkK4PgMMIVkASRMBMBgzEkaZEjsNALhIZA6AeQBg";
		var_s2 = var_s2 + "k0ZJEgAAJ0CIAgODMNIsD6DRih9uYwFyAwfCUb5ijmbI+gwdxkk8MZMGeMpPCkDxzBiC5MHMPJLDSSROFMLIoBEQogEMFJPnENYQGgE4DCOaJfC7tYkhGTQ0kyWwykuX";
		var_s2 = var_s2 + "pMiyRpKjKR4wngM4JmOWJACCdYtHMWw+Eych4nINYLAEYA8AgdAEEsQZajaQoog4GxPiMVIolcdxNG8XZVkmNoRwWRVBlFeFEeAZQJgnFiHgHwcAhjhHgGMSI5xki2Cy";
		var_s2 = var_s2 + "A4EQsA3i0HkBsLwKRFgAHcPkHopBJBcBeDUYI7xyDOHqKkWo2hLCsDIBIY4qQ5A8DoMMYwOAqCSBGKgU4yB2iDBwIgB4hxQgAAWNgBoAgsBdEcBUQ4sQ9A/HqD0JI8Rp";
		var_s2 = var_s2 + "BzH2OYVgahLBHFiJQJweQiDhDUE4SAARQAzFsG0EQwA6AOWSBkFgVAIBCHeGERQFQiCQHeFkC4vkiB8DyB4F4QxVDvGMNEOQexMjlBeOAKQiQLgfDA7QEAaRiBdEkH8T";
		var_s2 = var_s2 + "I7AZiFBAGYBIABWjYBiGACioQ4C1A+AMMgWhfgxHgPsT4URIB0COKgPgjRwiAB8AYUArxBgCF6J4GY5hrAOCAPAAoGRRCsCIMEXATXfgAF8BMJwURuEQDgD4Q4OBoAeH";
		var_s2 = var_s2 + "GFgLIwQrC2D0JoSQ+QvhrHoSgQI8AbDFGID8C4Ah6BQAQAASACwgCYCMAUMARAvCKAiAMCAokeCKBEOAKgCBoDaHuMsEAqwJDiACDURg8R6gPCyDofYWAhgoDIJ4ZAuh";
		var_s2 = var_s2 + "oiGAYGgRoQw/A0GMMga4GwxiEDeIYYInATCDBQAoBAwAoDlA0KMBoVRGiDGwDQUYIRsgaGGDgM4LAwDWB8EcIA1APhjEgGQVwgRIgjFIIQHokgZA+CSEkLIKQSjHAwMs";
		var_s2 = var_s2 + "CwDAsAEB2ABTIwRwD6A8CMToSxkAxE4HYIw+BsgbBEDAHYBwojCBoIYFgXSjABE4MsHIbQWhlGILQS4UhvBdAUKEEwHgxDAAABQQQUAhgKHiDwE4JS4A7BGLQZwCR4ga";
		var_s2 = var_s2 + "BEMUYAqgKApHgGwVAIRNgvBMMQXImwZDtE4I8UIyAZCDCAE8AwrhgAdEEBACQLRCg4FEB4AYtA7CdEiPQMoJAMDNCkOMCAXAFDhH0D0Q4EgfAaGSK4NYzRUj9BuCgAgs";
		var_s2 = var_s2 + "wOBjB4Fqpw8B2ADAwE4A4Qx2DAE6JIaQPQGhAGKBcIQ5B5gHByKIFARwADbAyKUfgdBKBBGyEcVIAB/ijHoIoSA0gdBNl+OATYERZgBGSDYWIWAUCEGKA4FAhR7CIBtY";
		var_s2 = var_s2 + "QGYZg4CMAiKEcAOwkBjHWE8Z4lQgA+DkBoTohwwCeAaMEEgBQCCABgHMRwQRhhMEWFQd4HwZgwDqFESItAbAGEANCpINAzANCCJkK4ah+heFYBURwsQrS2CsMYMoWGBh";
		var_s2 = var_s2 + "YDWI0EInQgiApXaOVI1QFDsC8MUNoMBMA1HMJga4eh+BeAWOgNNowGjYzCGAAwax+iJBeBVT4gxoBIAGFsJFBxgBiGKFkKQ7g5DFFQEcAo4AzDDACKEQQLgCiJDYB0Mg";
		var_s2 = var_s2 + "RBCCQAgQEA==";
		com_Appearance.Add(2,COMVariant::createFromStr(var_s2));
		var_s3 = "gBFLBCJwBAEHhEJAAEhABQ4Fg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6";
		var_s3 = var_s3 + "CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EM";
		var_s3 = var_s3 + "RwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsLpOS5LNKsaxmWLYdhFdTxQi6LpvfA8BwXC6JY7heRYRbFbYxRjGNi1TS7G4n";
		var_s3 = var_s3 + "GKd5WGuL4UHwI4VkaYxii8V4pgQMgVBQdQ5iCTYGi8T4vlWbJ3nuPg+l+H5AlSCg6ByPBoE8Ap3jqYxhBido5g0OgOGOGI4CsSpCCAcgcAuEosiYN5NHMOJ+D4TpTnSe";
		var_s3 = var_s3 + "Q7CEY4uBmBpPhgagdgcIZoHibIEyUBJZDQIJShoCgcCAcoyAQOYYlcZJ1D0DxDCiQgwEiAZMHEMJLFKPJ9D2DoDnidQ4k+Y5QmKEROBkIhKD0JIZDIS4TGUCQuEeEJjn";
		var_s3 = var_s3 + "OIg8CuY4RkYNgwGMM5RllGpThDRYIGKZIpCkJFUH0PINyWcQ3CaaZCG+HBnEOTJhD8Tx4GoeQ/GcaZSHOH5nCmQhshoZhihYYwhiYA4RlkNoNEMUZ3ByDjwEsPxOnMaJ";
		var_s3 = var_s3 + "9DuDR6F6GYmCmKh0nANtMioP4Gg8aoSiIO5NhodociqaY6GaFYkEyOg8lsNRNTaUgykyMgQG0GpPiONJbD8DpDEyfA6k0KwOkWMQsGsAJU0SagwkoJQJDIPISCQCJTGS";
		var_s3 = var_s3 + "UwyGaM4KkmMgtksHpFjAZ4TGCBAbgaSpcksdhNAMIJHHsD5TjSWWMAMOpwjyLwbk6cAz0KRJiDkDYzESCwiggcgcgYIQwCIEINCMCITj6TVxkMXp2j0cQLlCTo7E2F4y";
		var_s3 = var_s3 + "mkMZdhMPJHDGHpLAyVg+k4UwrCCSIyByDJ8DuDY8CiWY0kiXAXC6QJwFKGIjCeJpjgyezjlyDw6klHx5myRoMGwZwbkcToTEiew4kwbQfEmUgPkOKJUD4DpTHSHQmgkX";
		var_s3 = var_s3 + "I/ASTA1g0XIEDMTBimyfI7jSLYHEiUoPk0Fw/kadAsHGao8A0A5smEMJ2mNyg5gzJZwDgCpChyIZVyIZwFCMJEPASRkBqE+IcHInRcDxA2H4bIsx0AtDsIBpwZwYicD6";
		var_s3 = var_s3 + "BscwDwUBgHCIYaIfgtiVH2O4WgUwJjEFeAEQA7y4hMCiBMS4aRdB9A4CYE4LxljyBMHcDItBxinDCLcTYmgejBFQ9UTg9gFBOEmAQTI7A4iZGMGkQAWQ7jYA2HIL8BRA";
		var_s3 = var_s3 + "jDG4HcCwARbjZHiNoDw1nLDnGyNINQ+wjCpBMEgcovQUgICQJEcgWRuBvAyJ4d4ugpCUAINcHogxIgnDiM4N4axzD3F2JMTY/hRqYF6FsWIxhYAGGoAALQYgYirBwBEB";
		var_s3 = var_s3 + "wpAjBEAAIEIYsA2gOHCMAGgXAACIDmMITAUgFABH0D0I4WwvhNFGMAOIvxRD2GKNcMA8gjAPDCPwBogRPAxA8PgRwZRICYDED8RAXQEghEAN8DIgwIBdB4JYWwMgtiQH";
		var_s3 = var_s3 + "oFQKAiRFguFKGwGQhglDsEOVwEQQRkCKBwOIHgSREDRBYHEXQcQdD7GIGARQHRxipBrMobgewDCUCADsEYWAzgMHKHQDQxxsDzA6EMfAeQHB4GQDkUYPA0iECiKoGgRh";
		var_s3 = var_s3 + "cDdA2GMQA8AOCjDSPgHI4QnApAKBICwHg1A+BcAwcYsgbjGGQNkCIgRsA6EcBEWANADjsB0B8YYzQQDIGSBcEYZBCCPEkFIHQSgkgZAwG4IwBAbAYGGAgL4Ch4g8BOCQ";
		var_s3 = var_s3 + "AA2KKC0GcAke4AAXAFCoHkDw4xbBFEcJkE4JRSiEFeJYKQVRMgJHODwX4xAgC/AsIIZAeAHDRG0HYI40RKCLEGDUI4jAghwBWIceA+whCpHMFYZYOQxglDMHMBQGxYjV";
		var_s3 = var_s3 + "HiAoBIPgfgHGwPsHYJRSB6A0IERQLhCjJHMA4OQoAoCOACLYGYSx8DpBQIMWQdRnDRH+DsE4fB3CeAmM67kAAXBFEIDYDI7wLBtEoEIfYNwjiUGGJQYQMAjCHEAO0C4z";
		var_s3 = var_s3 + "xW29CoCgfIxR9AKA6J8BgUAIhDGMIoJ40hqgwCgKETgnBhhqCGI0AIqgZhGDANQDIlBDCRGkCoJISR0g1BSKQOgfAzBRG0DYHARh4DeDAOwANuw8ApCKKkYg/RPhjBsH";
		var_s3 = var_s3 + "0J4yg5hPGWN0GwFBHQBFaDoQIURljFAoB4GgzRVzbBECQFQRQoguHGHANwDRdCKy8CgSIGwhhoDYJYYI1giBICSAEgI=";
		com_Appearance.Add(3,COMVariant::createFromStr(var_s3));
		var_s4 = "gBFLBCJwBAEHhEJAAEhABUYCg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHL";
		var_s4 = var_s4 + "UXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQShsFYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU5EUiXJJ8ZxnECfYyrGjaMpCeKBU";
		var_s4 = var_s4 + "rGYTVRBIMxLLSia5oeJqMrnBpNVrIUgXCAGFwHK6BcauXIIDp6XoWWRbAAWDpVVzNNC3YzkCIceADHKiXxmVz4JLdGZ1QTGID2XaYaxWK4oZjsVSc4KDHbETbHFi9Fo3";
		var_s4 = var_s4 + "NaaxGisew+GYc4HlCR5NAAAIIEkQJSGMOgdE4RhYDwJJsAaAYQgmPpolCWgSCiBJzjcEIAkQXIBm8d5UhOQgCDUIBDDJDhgggJgKgKYJIDSVoDk8KBFF4OohEMZgWDsY";
		var_s4 = var_s4 + "YDj4GoGmGSB2B6B5iAiBgYDsYRjGSbIJo4RgqDuIpIAoLoLmMCJGDKDJjJiLA7xqUAAgGTwYnYPoPmQCQGEKEJkEkFg9gGY44BoRoSmSSQ2EKEggHgRhShSZRJFYVoVm";
		var_s4 = var_s4 + "WCRmFKFAgGOTheheZgJgYYoYmYSYWGaF4lkMMJ0hqZpJjYbobmcCZGHKHJmjmJh0h2Z4JmYcIaE8WZ2H6H5oAoBoCiCaBKBYfdjGoJoKiKaJKDaDojmkChGgmIgpCoVo";
		var_s4 = var_s4 + "WiWaJZiSd4mmmSh2h6J5qAqBoiiiaY5iSeIpmqComiqKpqkqNouiuah6hqMIsmsSpWiuGhP1kOoumuSp2j6L5sAsBo54gKwWkaMZsgsJpKjKbJLDaRYxYWRpSjSbIZiS";
		var_s4 = var_s4 + "e41m2CxmlqNptksdpejebR5iSfI4m4S4W16boLiaao6m5fJ9jubwLkaco8m8S5WnaPZunuOp4j6b5Lnac4SA0PAGlgP4wEwFwGkGcIMCcCpCnCCxiA8NYAAmMJfkSbhF";
		var_s4 = var_s4 + "CcFpFnGDBnBqRpUhuEwTDeZ5lHCfw6HIQxLCaAxygyJwqgGcATE4FA6hWY4tjEAAQBAgIA==";
		com_Appearance.Add(4,COMVariant::createFromStr(var_s4));
	exswimlane1.Background(70/*exCheckBoxState0*/,0x1000000);
	exswimlane1.Background(71/*exCheckBoxState1*/,0x2000000);
	exswimlane1.Background(72/*exCheckBoxState2*/,0x3000000);
	exswimlane1.Background(102/*exContextMenuSelBackColor*/,0x4000000);
	exswimlane1.Background(104/*exContextMenuSelForeColor*/,WinApi::RGB2int(1,0,0));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = com_Elements.Add("Element Check 2"); com_Element = var_Element;
			com_Element.Checked(1/*exChecked*/);
			com_Element.Pictures("1,2");
	exswimlane1.Home();
	exswimlane1.EndUpdate();
}
74
ImageSize property on 16 (default) (specifies the size of control' icons)

// AddElement event - A new element has been added to the surface.
void onEvent_AddElement(COM   _Element)
{
	// Element.ShowCheckBox = True
	;
}

public void init()
{
	COM com_Element,com_Elements;
	anytype var_Element,var_Elements;
	str var_s;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.ImageSize(16);
	var_s = "gBJJgBAIDAAEg4ACEKAD/hz/EMNh8TIRNGwAjEZAEXjAojJAjMLjABAAgjUYkUnlUrlktl0vmExmUzmk1m03nE5nU7nkrQCAntBoVDolFo1HoM/ADAplLptImdMYFOqd";
	var_s = var_s + "SqlXq1QrVbrlGpVWsFNrNdnNjsk7pQAtNroFnt0sh8Yr9iulTuNxs1Eu8OiT/vsnsNVutXlk/oGGtVKxGLxWNtsZtN8iUYuNvy0Zvd+xNYwdwvl4p870GCqc8vOeuVtt";
	var_s = var_s + "mp1knyOayWVy+WzN/ze1wOElenm+12WUz/Bv2/3UyyWrzeutux2GSyGP2dQ33C1ur3GD3M4zUNzHdlWjq/E3nGzVpjWv4HA7fRy/Tv2IrN8rPW6nZ3ve7mUlfu20Z8ac";
	var_s = var_s + "vQyb+vY9jasYoDwMm+LytVBDqKG3z8O3Cb8P+mkAuY9cCQ2uL4KaxDKvkp8RNLEjqugnrwQo/UWPzFyeQw5sNLZFENrI4kOqU66pw8uzmOKvTqNqjULJvGL1JO48GtTG";
	var_s = var_s + "sbLdEL3scxLlyiw8dQeoUVxdLTtyKmUjwGlslRPJsnK1HbAKbKCrsQo8uQk/CeP44iaR/ATnTNPLvyxPU+z9P9AUDQVBowiofJXQ6Oo+kKMpIkjztE4TKn4P6JowfgPn";
	var_s = var_s + "wD5/nAjB8AOeAPo0eAA1IAFH07UhAIMpYAVIYFHqBUhwVjV1S1EtQAHxW65V0AZwAeuQAnwB5gAPYViEDVhwAHTQBkCjB4gOhwDmCyhH0sACAg==";
	exswimlane1.Images(COMVariant::createFromStr(var_s));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = com_Elements.Add("Element Check 2"); com_Element = var_Element;
			com_Element.Checked(1/*exChecked*/);
			com_Element.Pictures("1,2");
	exswimlane1.Home();
	exswimlane1.EndUpdate();
}
73
We want to have option to start/end connectors at the middle of each side of the elements
public void init()
{
	COM com_Elements,com_Links;
	anytype var_Elements,var_Links;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.ShowLinks(-1/*exShowLinks*/);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>1");
		com_Elements.Add("Element <sha ;;0>2",COMVariant::createFromInt(164),COMVariant::createFromInt(64));
		com_Elements.Add("Element <sha ;;0>3",COMVariant::createFromInt(0),COMVariant::createFromInt(132));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.FitToClient();
	exswimlane1.EndUpdate();
}
72
How can I determine the position the user clicks within the element's boundaries (Click event)

// Click event - Occurs when the user presses and then releases the left mouse button over the control.
void onEvent_Click()
{
	COM com_e;
	anytype e;
	str X,Y;
	;
	e = COM::createFromObject(exswimlane1.ElementFromPoint(-1,-1)); com_e = e;
	X = -1;
	Y = -1;
	exswimlane1.PointToPosition(X,Y);
	print( e );
	print( X );
	print( Y );
}

public void init()
{
	COM com_Elements,com_e;
	anytype e,var_Elements;
	str X,Y;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element 1");
		com_Elements.Add("Element 2",COMVariant::createFromInt(128),COMVariant::createFromInt(64));
	exswimlane1.FitToClient();
	exswimlane1.EndUpdate();
}
71
How can I determine the position the user clicks within the element's boundaries (MouseMove event)

// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	COM com_e;
	anytype e;
	;
	e = COM::createFromObject(exswimlane1.ElementFromPoint(_X,_Y)); com_e = e;
	exswimlane1.PointToPosition(_X,_Y);
	print( e );
	print( _X );
	print( _Y );
}

public void init()
{
	COM com_Elements,com_e;
	anytype e,var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element 1");
		com_Elements.Add("Element 2",COMVariant::createFromInt(128),COMVariant::createFromInt(64));
	exswimlane1.FitToClient();
	exswimlane1.EndUpdate();
}
70
How can I convert the screen position (mouse) to surface position

// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	;
	print( "Point " );
	print( _X );
	print( _Y );
	exswimlane1.PointToPosition(_X,_Y);
	print( "Position " );
	print( _X );
	print( _Y );
}

public void init()
{
	COM com_Elements,com_Links;
	anytype var_Elements,var_Links;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>1");
		com_Elements.Add("Element <sha ;;0>2",COMVariant::createFromInt(164),COMVariant::createFromInt(64));
		com_Elements.Add("Element <sha ;;0>3",COMVariant::createFromInt(0),COMVariant::createFromInt(132));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)));
	exswimlane1.FitToClient();
	exswimlane1.AxisStyle(192/*exLinesSolid*/);
	exswimlane1.AxisColor(WinApi::RGB2int(128,128,128));
	exswimlane1.EndUpdate();
}
69
Is is possible to show just the positive coordinates

public void init()
{
	COM com_Elements,com_Links;
	anytype var_Elements,var_Links;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.Coord(17/*exAllowPositiveOnly | exCartesian*/);
	exswimlane1.AxisColor(WinApi::RGB2int(128,128,128));
	exswimlane1.AxisStyle(259/*exLinesThick | exLinesDot*/);
	exswimlane1.ShowLinks(-1/*exShowLinks*/);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>1");
		com_Elements.Add("Element <sha ;;0>2",COMVariant::createFromInt(164),COMVariant::createFromInt(64));
		com_Elements.Add("Element <sha ;;0>3",COMVariant::createFromInt(0),COMVariant::createFromInt(132));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
	exswimlane1.FitToClient();
	exswimlane1.EndUpdate();
}
68
Cartesian coordinates (positive coordinates are shown top-right to the origin)

public void init()
{
	COM com_Elements,com_Links;
	anytype var_Elements,var_Links;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.Coord(1/*exCartesian*/);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>1");
		com_Elements.Add("Element <sha ;;0>2",COMVariant::createFromInt(164),COMVariant::createFromInt(64));
		com_Elements.Add("Element <sha ;;0>3",COMVariant::createFromInt(0),COMVariant::createFromInt(132));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)));
	exswimlane1.FitToClient();
	exswimlane1.EndUpdate();
}
67
Default coordinates (positive coordinates are shown bottom-right to the origin)

public void init()
{
	COM com_Elements,com_Links;
	anytype var_Elements,var_Links;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.Coord(0/*exDefCoord*/);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>1");
		com_Elements.Add("Element <sha ;;0>2",COMVariant::createFromInt(164),COMVariant::createFromInt(64));
		com_Elements.Add("Element <sha ;;0>3",COMVariant::createFromInt(0),COMVariant::createFromInt(132));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)));
	exswimlane1.FitToClient();
	exswimlane1.EndUpdate();
}
66
Is it possible to customize the path of the links orthogonally similar with Microsoft Visio tool

public void init()
{
	COM com_Elements,com_Links;
	anytype var_Elements,var_Links;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowLinkControlPoint(31/*exOrthoArrange | exMiddleControlPoint | exControlPoint | exEndControlPoint | exStartControlPoint*/);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>1");
		com_Elements.Add("Element <sha ;;0>2",COMVariant::createFromInt(164),COMVariant::createFromInt(64));
		com_Elements.Add("Element <sha ;;0>3",COMVariant::createFromInt(0),COMVariant::createFromInt(132));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)));
	exswimlane1.Zoom(200);
	exswimlane1.FitToClient();
	exswimlane1.EndUpdate();
}
65
Does your control supports OLE Drag and Drop
// OLEDragDrop event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.
// OLEStartDrag event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.
public void init()
{
	COM com_Element,com_Element1,com_Elements,com_Lane,com_Lanes,com_Pool;
	anytype var_Element,var_Element1,var_Elements,var_Lane,var_Lanes,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.OLEDropMode(1/*exOLEDropManual*/);
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-250),COMVariant::createFromInt(-150),COMVariant::createFromInt(500),COMVariant::createFromInt(250)); com_Pool = var_Pool;
		var_Lane = COM::createFromObject(com_Pool.Lane(0/*exLaneHorizontal*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(2);
		var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(1);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = com_Elements.Add("Click the Element wait for .5 second until + cursor is shown, to start <b>OLE Drag and Drop</b>"); com_Element = var_Element;
			com_Element.CaptionSingleLine(false);
			com_Element.AutoSize(false);
			com_Element.X(-125);
			com_Element.Y(-105);
			com_Element.Width(256);
			com_Element.Height(56);
		var_Element1 = com_Elements.Add("Click the Element wait for .5 second until + cursor is shown, to start <b>OLE Drag and Drop</b>"); com_Element1 = var_Element1;
			com_Element1.CaptionSingleLine(false);
			com_Element1.AutoSize(false);
			com_Element1.X(-125);
			com_Element1.Width(256);
			com_Element1.Height(56);
	exswimlane1.EndUpdate();
}
64
Is it possible to disable customizing the path of a specified link

public void init()
{
	COM com_Elements,com_Link,com_Links;
	anytype var_Elements,var_Link,var_Links;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowLinkControlPoint(-1/*0xffffffff | exOrthoArrange | exMiddleControlPoint | exControlPoint | exEndControlPoint | exStartControlPoint*/);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(164),COMVariant::createFromInt(64));
		com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(0),COMVariant::createFromInt(132));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2))).CustomPath("0.5,0.25,0.5,.75");
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2))).CustomPath("0.5,0.25,0.5,.75");
		var_Link = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1))); com_Link = var_Link;
			com_Link.ShowLinkType(3/*exLinkRound*/);
			com_Link.StartPos(0/*LeftAlignment*/);
			com_Link.Color(WinApi::RGB2int(128,128,128));
			com_Link.AllowControlPoint(0/*exNoControlPoint*/);
	exswimlane1.Zoom(200);
	exswimlane1.FitToClient();
	exswimlane1.EndUpdate();
}
63
How do I let user customizes the link's path

public void init()
{
	COM com_Elements,com_Link,com_Links;
	anytype var_Elements,var_Link,var_Links;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowLinkControlPoint(-1/*0xffffffff | exOrthoArrange | exMiddleControlPoint | exControlPoint | exEndControlPoint | exStartControlPoint*/);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(164),COMVariant::createFromInt(64));
		com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(0),COMVariant::createFromInt(132));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2))).CustomPath("0.5,0.25,0.5,.75");
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2))).CustomPath("0.5,0.25,0.5,.75");
		var_Link = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1))); com_Link = var_Link;
			com_Link.ShowLinkType(3/*exLinkRound*/);
			com_Link.StartPos(0/*LeftAlignment*/);
	exswimlane1.Zoom(200);
	exswimlane1.FitToClient();
	exswimlane1.EndUpdate();
}
62
How can I generate a picture/image/graph from my diagram
public void init()
{
	COM com_Element,com_Elements,com_Links;
	COMVariant var_CopyTo;
	anytype var_Element,var_Elements,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = COM::createFromObject(com_Elements.Add("Element A")); com_Element = var_Element;
		com_Element.ID("A");
		var_Element = COM::createFromObject(com_Elements.Add("Element B")); com_Element = var_Element;
		com_Element.ID("B");
		var_Element = COM::createFromObject(com_Elements.Add("Element C")); com_Element = var_Element;
		com_Element.ID("C");
		var_Element = COM::createFromObject(com_Elements.Add("Element D")); com_Element = var_Element;
		com_Element.ID("D");
		var_Element = COM::createFromObject(com_Elements.Add("Element E")); com_Element = var_Element;
		com_Element.ID("E");
		var_Element = COM::createFromObject(com_Elements.Add("Element E")); com_Element = var_Element;
		com_Element.ID("F");
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("B"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("D"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("E"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("F"));
	exswimlane1.DefArrange(4/*exDefArrangeCompact*/,COMVariant::createFromBoolean(false));
	exswimlane1.Arrange();
	var_CopyTo = exswimlane1.CopyTo("c:/temp/xtest.jpg");
	print( "!!!check the file c:/temp/xtest.jpg!!!" );
}
61
How can I generate a picture/image/graph from my diagram
public void init()
{
	COM com_Element,com_Elements,com_Links,com_Print;
	anytype var_Element,var_Elements,var_Links,var_Print;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = COM::createFromObject(com_Elements.Add("Element A")); com_Element = var_Element;
		com_Element.ID("A");
		var_Element = COM::createFromObject(com_Elements.Add("Element B")); com_Element = var_Element;
		com_Element.ID("B");
		var_Element = COM::createFromObject(com_Elements.Add("Element C")); com_Element = var_Element;
		com_Element.ID("C");
		var_Element = COM::createFromObject(com_Elements.Add("Element D")); com_Element = var_Element;
		com_Element.ID("D");
		var_Element = COM::createFromObject(com_Elements.Add("Element E")); com_Element = var_Element;
		com_Element.ID("E");
		var_Element = COM::createFromObject(com_Elements.Add("Element E")); com_Element = var_Element;
		com_Element.ID("F");
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("B"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("D"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("E"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("F"));
	exswimlane1.DefArrange(4/*exDefArrangeCompact*/,COMVariant::createFromBoolean(false));
	exswimlane1.Arrange();
	// Add 'exprint.dll(ExPrint.dll)' reference to your project.
	// Add 'ExPrint 1.0 Control Library(ExPrint.dll)' reference to your project.
	var_Print = COM::createFromObject(new EXPRINTLib.exprint()); com_Print = var_Print;
		com_Print.PrintExt(exswimlane1);
		com_Print.CopyTo("c:/temp/xtest.jpg");
	print( "!!!check the file c:/temp/xtest.jpg!!!" );
}
60
How can I print the component
public void init()
{
	COM com_Element,com_Element1,com_Elements,com_Link,com_Link1,com_Link2,com_Links,com_Print;
	anytype var_Element,var_Element1,var_Elements,var_Link,var_Link1,var_Link2,var_Links,var_Print;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(0),COMVariant::createFromInt(76));
		var_Element = com_Elements.Add("Element <sha ;;0>C",COMVariant::createFromInt(-76),COMVariant::createFromInt(32)); com_Element = var_Element;
			com_Element.AutoSize(false);
			com_Element.Height(32);
		var_Element1 = com_Elements.Add("Element <sha ;;0>D",COMVariant::createFromInt(76),COMVariant::createFromInt(32)); com_Element1 = var_Element1;
			com_Element1.AutoSize(false);
			com_Element1.Height(32);
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		var_Link = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2))); com_Link = var_Link;
			com_Link.StartPos(1/*CenterAlignment*/);
			com_Link.EndPos(1/*CenterAlignment*/);
		var_Link1 = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1))); com_Link1 = var_Link1;
			com_Link1.StartPos(1/*CenterAlignment*/);
			com_Link1.EndPos(1/*CenterAlignment*/);
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(4)));
		var_Link2 = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(4)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3))); com_Link2 = var_Link2;
			com_Link2.StartPos(0/*LeftAlignment*/);
			com_Link2.EndPos(2/*RightAlignment*/);
	// Add 'exprint.dll(ExPrint.dll)' reference to your project.
	// Add 'ExPrint 1.0 Control Library(ExPrint.dll)' reference to your project.
	var_Print = COM::createFromObject(new EXPRINTLib.exprint()); com_Print = var_Print;
		com_Print.PrintExt(exswimlane1);
		com_Print.Preview();
}
59
How can I show direct-links

public void init()
{
	COM com_Element,com_Elements,com_Links;
	anytype var_Element,var_Elements,var_Links;
	;

	super();

	exswimlane1.ShowLinksType(1/*exLinkDirect*/);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = COM::createFromObject(com_Elements.Add("Element A")); com_Element = var_Element;
		com_Element.ID("A");
		var_Element = COM::createFromObject(com_Elements.Add("Element B",COMVariant::createFromInt(128),COMVariant::createFromInt(64))); com_Element = var_Element;
		com_Element.ID("B");
		var_Element = COM::createFromObject(com_Elements.Add("Element C",COMVariant::createFromInt(128),COMVariant::createFromInt(-64))); com_Element = var_Element;
		com_Element.ID("C");
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("B"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
}
58
How can I show straight-links

public void init()
{
	COM com_Element,com_Elements,com_Links;
	anytype var_Element,var_Elements,var_Links;
	;

	super();

	exswimlane1.ShowLinksType(2/*exLinkStraight*/);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = COM::createFromObject(com_Elements.Add("Element A")); com_Element = var_Element;
		com_Element.ID("A");
		var_Element = COM::createFromObject(com_Elements.Add("Element B",COMVariant::createFromInt(128),COMVariant::createFromInt(64))); com_Element = var_Element;
		com_Element.ID("B");
		var_Element = COM::createFromObject(com_Elements.Add("Element C",COMVariant::createFromInt(128),COMVariant::createFromInt(-64))); com_Element = var_Element;
		com_Element.ID("C");
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("B"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
}
57
How can I show round-links

public void init()
{
	COM com_Element,com_Elements,com_Links;
	anytype var_Element,var_Elements,var_Links;
	;

	super();

	exswimlane1.ShowLinksType(3/*exLinkRound*/);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = COM::createFromObject(com_Elements.Add("Element A")); com_Element = var_Element;
		com_Element.ID("A");
		var_Element = COM::createFromObject(com_Elements.Add("Element B",COMVariant::createFromInt(128),COMVariant::createFromInt(64))); com_Element = var_Element;
		com_Element.ID("B");
		var_Element = COM::createFromObject(com_Elements.Add("Element C",COMVariant::createFromInt(128),COMVariant::createFromInt(-64))); com_Element = var_Element;
		com_Element.ID("C");
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("B"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
}
56
I've tried to insert a "<br>" in the Caption property text and it just ignores it

public void init()
{
	COM com_Element,com_Elements;
	anytype var_Element,var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = com_Elements.Add("caption"); com_Element = var_Element;
			com_Element.CaptionSingleLine(false);
			com_Element.Caption("first caption<br>second caption<br>third caption");
	exswimlane1.EndUpdate();
}
55
How do I align the extra-caption

public void init()
{
	COM com_Element,com_Elements;
	anytype var_Element,var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = com_Elements.Add("caption"); com_Element = var_Element;
			com_Element.CaptionAlign(0/*exTopLeft*/);
			com_Element.AutoSize(false);
			com_Element.Width(128);
			com_Element.Height(64);
			com_Element.ExtraCaption("extra-caption");
			com_Element.ExtraCaptionAlign(34/*exBottomRight*/);
	exswimlane1.EndUpdate();
}
54
How can I add an extra caption

public void init()
{
	COM com_Element,com_Elements;
	anytype var_Element,var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = COM::createFromObject(com_Elements.Add("caption")); com_Element = var_Element;
		com_Element.ExtraCaption("extra-caption");
	exswimlane1.EndUpdate();
}
53
I am using the reserve-neighbors feature, the question is how to shift left/right the neighbors instead of up/down
public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowMoveNeighbors(2/*exMoveNeighborsHorizontally*/);
	exswimlane1.DefArrange(0/*exDefArrangeDir*/,COMVariant::createFromInt(1));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B ( move it )",COMVariant::createFromInt(16),COMVariant::createFromInt(32));
		com_Elements.Add("Element <sha ;;0>C",COMVariant::createFromInt(128),COMVariant::createFromInt(0));
	exswimlane1.EndUpdate();
}
52
I am using the reserve-neighbors feature, the question is if possible to specify the distance between neighbors
public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowMoveNeighbors(1/*exMoveNeighborsVertically*/);
	exswimlane1.DefArrange(1/*exDefArrangeDX*/,COMVariant::createFromInt(0));
	exswimlane1.DefArrange(2/*exDefArrangeDY*/,COMVariant::createFromInt(0));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B ( move it )",COMVariant::createFromInt(0),COMVariant::createFromInt(32));
		com_Elements.Add("Element <sha ;;0>C",COMVariant::createFromInt(0),COMVariant::createFromInt(64));
	exswimlane1.EndUpdate();
}
51
How do I enable the reserve-neighbors feature
public void init()
{
	COM com_Elements;
	anytype var_Elements;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowMoveNeighbors(1/*exMoveNeighborsVertically*/);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B ( move it )",COMVariant::createFromInt(0),COMVariant::createFromInt(32));
		com_Elements.Add("Element <sha ;;0>C",COMVariant::createFromInt(0),COMVariant::createFromInt(64));
	exswimlane1.EndUpdate();
}
50
I've noticed that recently, the elements get compacted once the Arrange method is performed. How can I prevent that

public void init()
{
	COM com_Element,com_Elements,com_Links;
	anytype var_Element,var_Elements,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = COM::createFromObject(com_Elements.Add("Element A")); com_Element = var_Element;
		com_Element.ID("A");
		var_Element = COM::createFromObject(com_Elements.Add("Element B")); com_Element = var_Element;
		com_Element.ID("B");
		var_Element = COM::createFromObject(com_Elements.Add("Element C")); com_Element = var_Element;
		com_Element.ID("C");
		var_Element = COM::createFromObject(com_Elements.Add("Element D")); com_Element = var_Element;
		com_Element.ID("D");
		var_Element = COM::createFromObject(com_Elements.Add("Element E")); com_Element = var_Element;
		com_Element.ID("E");
		var_Element = COM::createFromObject(com_Elements.Add("Element E")); com_Element = var_Element;
		com_Element.ID("F");
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("B"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("D"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("E"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("F"));
	exswimlane1.DefArrange(4/*exDefArrangeCompact*/,COMVariant::createFromBoolean(false));
	exswimlane1.Arrange();
}
49
How can I move an element to a specified lane/phase/pool

public void init()
{
	COM com_Element,com_Element1,com_HeaderLane,com_Lane,com_Lanes,com_Pool;
	anytype var_Element,var_Element1,var_HeaderLane,var_Lane,var_Lanes,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.DefPoolHeaderCaptionFormat(true,"<fgcolor 808080>Faza <off -4><b><font ;6>%i");
	exswimlane1.DefPoolHeaderCaptionFormat(false,"<fgcolor 808080>Culoar <off -4><b><font ;6>%i");
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-100),COMVariant::createFromInt(-100),COMVariant::createFromInt(250),COMVariant::createFromInt(180)); com_Pool = var_Pool;
		var_Lane = COM::createFromObject(com_Pool.Lane(0/*exLaneHorizontal*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(3);
		var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(3);
		var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		var_Lane = COM::createFromObject(com_Lanes).Item(COMVariant::createFromInt(1)); com_Lane = var_Lane;
		var_HeaderLane = COM::createFromObject(com_Lane).Header(); com_HeaderLane = var_HeaderLane;
		com_HeaderLane.Caption("<fgcolor FF0000><b>NEW");
	var_Element = COM::createFromObject(exswimlane1.Elements()).Add("element 1",COMVariant::createFromInt(200),COMVariant::createFromInt(200)); com_Element = var_Element;
		com_Element.LaneID(true,"0:H.0,0:V.0");
	var_Element1 = COM::createFromObject(exswimlane1.Elements()).Add("element 2",COMVariant::createFromInt(200),COMVariant::createFromInt(200)); com_Element1 = var_Element1;
		com_Element1.LaneID(true,"0:H.2,0:V.2");
	exswimlane1.EndUpdate();
}
48
Is it possible to add a link to show from bottom/down to top/up, rather that right to left (method-2)

// AddLink event - A new link has been added to the links collection.
void onEvent_AddLink(COM   _Link)
{
	;
}

public void init()
{
	COM com_Elements,com_Links;
	anytype var_Elements,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(48),COMVariant::createFromInt(48));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
}
47
Is it possible to add a link to show from bottom/down to top/up, rather that right to left (method-1)

public void init()
{
	COM com_Elements,com_Link,com_Links;
	anytype var_Elements,var_Link,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(48),COMVariant::createFromInt(48));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		var_Link = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2))); com_Link = var_Link;
			com_Link.StartPos(4/*DownAlignment*/);
			com_Link.EndPos(3/*UpAlignment*/);
}
46
How do I enable the cross link support ( mixed )

public void init()
{
	COM com_Element,com_Element1,com_Elements,com_Link,com_Link1,com_Link2,com_Links;
	anytype var_Element,var_Element1,var_Elements,var_Link,var_Link1,var_Link2,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(0),COMVariant::createFromInt(76));
		var_Element = com_Elements.Add("Element <sha ;;0>C",COMVariant::createFromInt(-76),COMVariant::createFromInt(32)); com_Element = var_Element;
			com_Element.AutoSize(false);
			com_Element.Height(32);
		var_Element1 = com_Elements.Add("Element <sha ;;0>D",COMVariant::createFromInt(76),COMVariant::createFromInt(32)); com_Element1 = var_Element1;
			com_Element1.AutoSize(false);
			com_Element1.Height(32);
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		var_Link = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2))); com_Link = var_Link;
			com_Link.StartPos(1/*CenterAlignment*/);
			com_Link.EndPos(1/*CenterAlignment*/);
		var_Link1 = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1))); com_Link1 = var_Link1;
			com_Link1.StartPos(1/*CenterAlignment*/);
			com_Link1.EndPos(1/*CenterAlignment*/);
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(4)));
		var_Link2 = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(4)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3))); com_Link2 = var_Link2;
			com_Link2.StartPos(0/*LeftAlignment*/);
			com_Link2.EndPos(2/*RightAlignment*/);
	exswimlane1.ShowLinks(97/*exShowCrossLinksMixt | exShowExtendedLinks*/);
}
45
How do I enable the cross link support ( triangular )

public void init()
{
	COM com_Element,com_Element1,com_Elements,com_Link,com_Link1,com_Link2,com_Links;
	anytype var_Element,var_Element1,var_Elements,var_Link,var_Link1,var_Link2,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(0),COMVariant::createFromInt(76));
		var_Element = com_Elements.Add("Element <sha ;;0>C",COMVariant::createFromInt(-76),COMVariant::createFromInt(32)); com_Element = var_Element;
			com_Element.AutoSize(false);
			com_Element.Height(32);
		var_Element1 = com_Elements.Add("Element <sha ;;0>D",COMVariant::createFromInt(76),COMVariant::createFromInt(32)); com_Element1 = var_Element1;
			com_Element1.AutoSize(false);
			com_Element1.Height(32);
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		var_Link = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2))); com_Link = var_Link;
			com_Link.StartPos(1/*CenterAlignment*/);
			com_Link.EndPos(1/*CenterAlignment*/);
		var_Link1 = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1))); com_Link1 = var_Link1;
			com_Link1.StartPos(1/*CenterAlignment*/);
			com_Link1.EndPos(1/*CenterAlignment*/);
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(4)));
		var_Link2 = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(4)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3))); com_Link2 = var_Link2;
			com_Link2.StartPos(0/*LeftAlignment*/);
			com_Link2.EndPos(2/*RightAlignment*/);
	exswimlane1.ShowLinks(65/*exShowCrossLinksTriangle | exShowExtendedLinks*/);
}
44
How do I enable the cross link support ( rectangular )

public void init()
{
	COM com_Element,com_Element1,com_Elements,com_Link,com_Link1,com_Link2,com_Links;
	anytype var_Element,var_Element1,var_Elements,var_Link,var_Link1,var_Link2,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(0),COMVariant::createFromInt(76));
		var_Element = com_Elements.Add("Element <sha ;;0>C",COMVariant::createFromInt(-76),COMVariant::createFromInt(32)); com_Element = var_Element;
			com_Element.AutoSize(false);
			com_Element.Height(32);
		var_Element1 = com_Elements.Add("Element <sha ;;0>D",COMVariant::createFromInt(76),COMVariant::createFromInt(32)); com_Element1 = var_Element1;
			com_Element1.AutoSize(false);
			com_Element1.Height(32);
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		var_Link = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2))); com_Link = var_Link;
			com_Link.StartPos(1/*CenterAlignment*/);
			com_Link.EndPos(1/*CenterAlignment*/);
		var_Link1 = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1))); com_Link1 = var_Link1;
			com_Link1.StartPos(1/*CenterAlignment*/);
			com_Link1.EndPos(1/*CenterAlignment*/);
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(4)));
		var_Link2 = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(4)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3))); com_Link2 = var_Link2;
			com_Link2.StartPos(0/*LeftAlignment*/);
			com_Link2.EndPos(2/*RightAlignment*/);
	exswimlane1.ShowLinks(33/*exShowCrossLinksRect | exShowExtendedLinks*/);
}
43
How do I show a link frmo bottom to top, or reverse, not from left to right

public void init()
{
	COM com_Elements,com_Link,com_Links;
	anytype var_Elements,var_Link,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(0),COMVariant::createFromInt(64));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		var_Link = com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2))); com_Link = var_Link;
			com_Link.StartPos(1/*CenterAlignment*/);
			com_Link.EndPos(1/*CenterAlignment*/);
}
42
Is it possible to control the links, so that they are always centered

public void init()
{
	COM com_Element,com_Elements,com_Links;
	anytype var_Element,var_Elements,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = COM::createFromObject(com_Elements.Add("Element A")); com_Element = var_Element;
		com_Element.ID("A");
		var_Element = COM::createFromObject(com_Elements.Add("Element B")); com_Element = var_Element;
		com_Element.ID("B");
		var_Element = COM::createFromObject(com_Elements.Add("Element C")); com_Element = var_Element;
		com_Element.ID("C");
		var_Element = COM::createFromObject(com_Elements.Add("Element D")); com_Element = var_Element;
		com_Element.ID("D");
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("B"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("D"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
	exswimlane1.ShowLinks(-1/*exShowLinks*/);
	exswimlane1.DefArrange(0/*exDefArrangeDir*/,COMVariant::createFromInt(1));
	exswimlane1.Arrange();
}
41
What options to align the elements do I have if I use Arrange method

public void init()
{
	COM com_Elements,com_Links;
	COMVariant h1,h2,h3;
	anytype var_Elements,var_Links;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.ShowGridLines(true);
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		h1 = com_Elements.Add("Top Alignment").ID();
		com_Elements.Add("Element");
		com_Elements.Add("Element");
		com_Elements.Add("Element");
		h2 = com_Elements.Add("Center Alignment",,COMVariant::createFromInt(96)).ID();
		com_Elements.Add("Element",,COMVariant::createFromInt(96));
		com_Elements.Add("Element",,COMVariant::createFromInt(96));
		com_Elements.Add("Element",,COMVariant::createFromInt(96));
		h3 = com_Elements.Add("Bottom Alignment",,COMVariant::createFromInt(178)).ID();
		com_Elements.Add("Element",,COMVariant::createFromInt(192));
		com_Elements.Add("Element",,COMVariant::createFromInt(192));
		com_Elements.Add("Element",,COMVariant::createFromInt(192));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(4)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(3)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(5)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(6)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(5)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(7)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(6)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(8)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(6)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(7)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(9)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(10)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(9)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(11)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(10)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(12)));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(10)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(11)));
	exswimlane1.DefArrange(3/*exDefArrangeAlign*/,COMVariant::createFromInt(0));
	exswimlane1.Arrange(h1);
	exswimlane1.DefArrange(3/*exDefArrangeAlign*/,COMVariant::createFromInt(1));
	exswimlane1.Arrange(h2);
	exswimlane1.DefArrange(3/*exDefArrangeAlign*/,COMVariant::createFromInt(2));
	exswimlane1.Arrange(h3);
	exswimlane1.EndUpdate();
}
40
Is there an auto-arrange feature that will display the flow-chart centered and zoomed correctly after we are finished building it

public void init()
{
	COM com_Element,com_Elements,com_Links;
	anytype var_Element,var_Elements,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = COM::createFromObject(com_Elements.Add("Element A")); com_Element = var_Element;
		com_Element.ID("A");
		var_Element = COM::createFromObject(com_Elements.Add("Element B")); com_Element = var_Element;
		com_Element.ID("B");
		var_Element = COM::createFromObject(com_Elements.Add("Element C")); com_Element = var_Element;
		com_Element.ID("C");
		var_Element = COM::createFromObject(com_Elements.Add("Element D")); com_Element = var_Element;
		com_Element.ID("D");
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("B"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("D"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
	exswimlane1.Arrange();
}
39
Is it possible to change the distance between elements, when calling the Arrange method

public void init()
{
	COM com_Element,com_Elements,com_Links;
	anytype var_Element,var_Elements,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = COM::createFromObject(com_Elements.Add("Element A")); com_Element = var_Element;
		com_Element.ID("A");
		var_Element = COM::createFromObject(com_Elements.Add("Element B")); com_Element = var_Element;
		com_Element.ID("B");
		var_Element = COM::createFromObject(com_Elements.Add("Element C")); com_Element = var_Element;
		com_Element.ID("C");
		var_Element = COM::createFromObject(com_Elements.Add("Element D")); com_Element = var_Element;
		com_Element.ID("D");
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("B"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("D"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
	exswimlane1.DefArrange(1/*exDefArrangeDX*/,COMVariant::createFromInt(0));
	exswimlane1.DefArrange(2/*exDefArrangeDY*/,COMVariant::createFromInt(0));
	exswimlane1.Arrange();
}
38
How do I organize vertically the elements

public void init()
{
	COM com_Element,com_Elements,com_Links;
	anytype var_Element,var_Elements,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = COM::createFromObject(com_Elements.Add("Element A")); com_Element = var_Element;
		com_Element.ID("A");
		var_Element = COM::createFromObject(com_Elements.Add("Element B")); com_Element = var_Element;
		com_Element.ID("B");
		var_Element = COM::createFromObject(com_Elements.Add("Element C")); com_Element = var_Element;
		com_Element.ID("C");
		var_Element = COM::createFromObject(com_Elements.Add("Element D")); com_Element = var_Element;
		com_Element.ID("D");
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("B"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("A"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("D"));
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item("B"),COM::createFromObject(exswimlane1.Elements()).Item("C"));
	exswimlane1.ShowLinksType(2/*exLinkStraight*/);
	exswimlane1.DefArrange(0/*exDefArrangeDir*/,COMVariant::createFromInt(1));
	exswimlane1.Arrange();
}
37
How can I add programatically a link

public void init()
{
	COM com_Elements,com_Links;
	anytype var_Elements,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(96),COMVariant::createFromInt(24));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
}
36
How do I get the link from the cursor
// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	COM com_l;
	anytype l;
	;
	l = COM::createFromObject(exswimlane1.LinkFromPoint(-1,-1)); com_l = l;
	print( l );
}

public void init()
{
	COM com_Elements,com_Links,com_l;
	anytype l,var_Elements,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element <sha ;;0>A");
		com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(96),COMVariant::createFromInt(24));
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(2)));
}
35
Is there a way to create a link which has the same start and end element

public void init()
{
	COM com_Elements,com_Links;
	anytype var_Elements,var_Links;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		com_Elements.Add("Element");
	var_Links = exswimlane1.Links(); com_Links = var_Links;
		com_Links.Add(COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).Item(COMVariant::createFromInt(1)));
}
34
How can I show the pool's caption not-rotated or mirrored

public void init()
{
	COM com_Lane,com_Lanes,com_Pool;
	anytype var_Lane,var_Lanes,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowDesignHeader(4/*exDesignHeaderSingle*/);
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-150),COMVariant::createFromInt(-150),COMVariant::createFromInt(300),COMVariant::createFromInt(150)); com_Pool = var_Pool;
		com_Pool.HeaderCaptionSupportRotate(false);
		com_Pool.HeaderSize(0/*exHeaderLeft*/,48);
		com_Pool.HeaderSize(2/*exHeaderRight*/,48);
		var_Lane = COM::createFromObject(com_Pool.Lane(0/*exLaneHorizontal*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(3);
	exswimlane1.EndUpdate();
}
33
How can I prevent creating sub-lanes or sub-phases

public void init()
{
	COM com_Lane,com_Lanes,com_Pool;
	anytype var_Lane,var_Lanes,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.AllowDesignHeader(4/*exDesignHeaderSingle*/);
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-150),COMVariant::createFromInt(-150),COMVariant::createFromInt(300),COMVariant::createFromInt(150)); com_Pool = var_Pool;
		com_Pool.HeaderSize(0/*exHeaderLeft*/,32);
		com_Pool.HeaderSize(2/*exHeaderRight*/,32);
		var_Lane = COM::createFromObject(com_Pool.Lane(0/*exLaneHorizontal*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(3);
	exswimlane1.EndUpdate();
}
32
How do I show a complete frame/border around the header

public void init()
{
	COM com_HeaderLane,com_Lane,com_Lanes,com_Pattern,com_Pool;
	anytype var_HeaderLane,var_Lane,var_Lanes,var_Pattern,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-150),COMVariant::createFromInt(-150),COMVariant::createFromInt(300),COMVariant::createFromInt(150)); com_Pool = var_Pool;
		com_Pool.HeaderSize(1/*exHeaderTop*/,32);
		com_Pool.HeaderSize(3/*exHeaderBottom*/,32);
		var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
		var_Lanes = com_Lane.Children(); com_Lanes = var_Lanes;
			com_Lanes.Count(3);
			var_Lane = COM::createFromObject(com_Lanes.Item(COMVariant::createFromInt(1))); com_Lane = var_Lane;
			var_HeaderLane = COM::createFromObject(com_Lane).Header(); com_HeaderLane = var_HeaderLane;
			var_Pattern = COM::createFromObject(com_HeaderLane).Pattern(); com_Pattern = var_Pattern;
			com_Pattern.Type(768/*exPatternFrameThick*/);
	exswimlane1.EndUpdate();
}
31
How do I show a complete frame/border around the lane

public void init()
{
	COM com_Lane,com_Lanes,com_Pattern,com_Pool;
	anytype var_Lane,var_Lanes,var_Pattern,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-150),COMVariant::createFromInt(-150),COMVariant::createFromInt(300),COMVariant::createFromInt(150)); com_Pool = var_Pool;
		com_Pool.HeaderSize(1/*exHeaderTop*/,32);
		com_Pool.HeaderSize(3/*exHeaderBottom*/,32);
		var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
		var_Lanes = com_Lane.Children(); com_Lanes = var_Lanes;
			com_Lanes.Count(3);
			var_Lane = COM::createFromObject(com_Lanes.Item(COMVariant::createFromInt(1))); com_Lane = var_Lane;
			var_Pattern = COM::createFromObject(com_Lane).Pattern(); com_Pattern = var_Pattern;
			com_Pattern.Type(768/*exPatternFrameThick*/);
	exswimlane1.EndUpdate();
}
30
How can I define sub-lanes

public void init()
{
	COM com_Lane,com_Lanes,com_Lanes1,com_Pool;
	anytype var_Lane,var_Lanes,var_Lanes1,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-150),COMVariant::createFromInt(-150),COMVariant::createFromInt(300),COMVariant::createFromInt(250)); com_Pool = var_Pool;
		com_Pool.HeaderSize(1/*exHeaderTop*/,32);
		com_Pool.HeaderSize(3/*exHeaderBottom*/,32);
		var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
		var_Lanes = com_Lane.Children(); com_Lanes = var_Lanes;
			com_Lanes.Count(3);
			var_Lane = COM::createFromObject(com_Lanes.Item(COMVariant::createFromInt(1))); com_Lane = var_Lane;
			var_Lanes1 = COM::createFromObject(com_Lane).Children(); com_Lanes1 = var_Lanes1;
			com_Lanes1.Count(2);
	exswimlane1.EndUpdate();
}
29
How can I add default lanes when the user creates a new pool
// AddPool event - A new pool has been added to the surface.
void onEvent_AddPool(COM   _Pool)
{
	// Pool.HeaderSize(1) = 24
	// Pool.HeaderVisible(0) = False
	// Pool.HeaderVisible(1) = True
	// Pool.HeaderVisible(2) = False
	// Pool.HeaderVisible(3) = False
	// Pool.Lane(1).Children.Count = 2
	;
}

public void init()
{
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.Pools().Add(COMVariant::createFromInt(-100),COMVariant::createFromInt(-100),COMVariant::createFromInt(250),COMVariant::createFromInt(250));
	exswimlane1.EndUpdate();
}
28
How do I prevent showing headers when the user creates new pools

// AddPool event - A new pool has been added to the surface.
void onEvent_AddPool(COM   _Pool)
{
	;
}

public void init()
{
	COM com_Lane,com_Lanes,com_Pool;
	anytype var_Lane,var_Lanes,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-100),COMVariant::createFromInt(-100),COMVariant::createFromInt(250),COMVariant::createFromInt(250)); com_Pool = var_Pool;
	var_Lane = COM::createFromObject(com_Pool).Lane(0/*exLaneHorizontal*/); com_Lane = var_Lane;
	var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
	com_Lanes.Count(3);
	exswimlane1.EndUpdate();
}
27
How can I display icons on headers

public void init()
{
	COM com_HeaderLane,com_Lane,com_Lanes,com_Pool;
	anytype var_HeaderLane,var_Lane,var_Lanes,var_Pool;
	str var_s;
	;

	super();

	exswimlane1.BeginUpdate();
	var_s = "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql";
	var_s = var_s + "Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0";
	var_s = var_s + "ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN";
	var_s = var_s + "AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=";
	exswimlane1.Images(COMVariant::createFromStr(var_s));
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-100),COMVariant::createFromInt(-100),COMVariant::createFromInt(250),COMVariant::createFromInt(250)); com_Pool = var_Pool;
		com_Pool.HeaderVisible(0/*exHeaderLeft*/,false);
		com_Pool.HeaderVisible(2/*exHeaderRight*/,false);
		com_Pool.HeaderVisible(3/*exHeaderBottom*/,false);
		com_Pool.HeaderSize(1/*exHeaderTop*/,24);
		var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
		var_Lanes = com_Lane.Children(); com_Lanes = var_Lanes;
			com_Lanes.Count(3);
			var_Lane = COM::createFromObject(com_Lanes.Item(COMVariant::createFromInt(0))); com_Lane = var_Lane;
			var_HeaderLane = COM::createFromObject(com_Lane).Header(); com_HeaderLane = var_HeaderLane;
			com_HeaderLane.Caption("<img>1</img> A");
			var_Lane = COM::createFromObject(com_Lanes.Item(COMVariant::createFromInt(1))); com_Lane = var_Lane;
			var_HeaderLane = COM::createFromObject(com_Lane).Header(); com_HeaderLane = var_HeaderLane;
			com_HeaderLane.Caption("<img>2</img> B");
			var_Lane = COM::createFromObject(com_Lanes.Item(COMVariant::createFromInt(2))); com_Lane = var_Lane;
			var_HeaderLane = COM::createFromObject(com_Lane).Header(); com_HeaderLane = var_HeaderLane;
			com_HeaderLane.Caption("<img>3</img> C");
	exswimlane1.EndUpdate();
}
26
How do I change the Lane and Phase strings being displayed on the lanes

public void init()
{
	COM com_HeaderLane,com_Lane,com_Lanes,com_Pool;
	anytype var_HeaderLane,var_Lane,var_Lanes,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.DefPoolHeaderCaptionFormat(true,"<fgcolor 808080>Faza <off -4><b><font ;6>%i");
	exswimlane1.DefPoolHeaderCaptionFormat(false,"<fgcolor 808080>Culoar <off -4><b><font ;6>%i");
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-100),COMVariant::createFromInt(-100),COMVariant::createFromInt(250),COMVariant::createFromInt(250)); com_Pool = var_Pool;
		var_Lane = COM::createFromObject(com_Pool.Lane(0/*exLaneHorizontal*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(3);
		var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(3);
		var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		var_Lane = COM::createFromObject(com_Lanes).Item(COMVariant::createFromInt(1)); com_Lane = var_Lane;
		var_HeaderLane = COM::createFromObject(com_Lane).Header(); com_HeaderLane = var_HeaderLane;
		com_HeaderLane.Caption("<fgcolor FF0000><b>NEW");
	exswimlane1.EndUpdate();
}
25
How can I enlarge the node while AutoSize property is True (method 2)

public void init()
{
	COM com_Element;
	anytype var_Element;
	;

	super();

	exswimlane1.Background(90/*exElementBackColor*/,WinApi::RGB2int(255,255,255));
	var_Element = COM::createFromObject(exswimlane1.Elements()).Add("Element",COMVariant::createFromInt(0),COMVariant::createFromInt(0)); com_Element = var_Element;
	var_Element = COM::createFromObject(com_Element).Copy(); com_Element = var_Element;
		com_Element.Caption("Enlarged Element");
		com_Element.InflateSize(16);
}
24
How can I enlarge the node while AutoSize property is True (method 1)

public void init()
{
	COM com_Element;
	anytype var_Element;
	;

	super();

	exswimlane1.Background(90/*exElementBackColor*/,WinApi::RGB2int(255,255,255));
	var_Element = COM::createFromObject(exswimlane1.Elements()).Add("Element",COMVariant::createFromInt(0),COMVariant::createFromInt(0)); com_Element = var_Element;
	var_Element = COM::createFromObject(com_Element).Copy(); com_Element = var_Element;
		com_Element.Caption("Enlarged Element");
		com_Element.Padding(-1/*exPaddingAll*/,16);
}
23
How can I get the lane of the element

public void init()
{
	COM com_Element,com_Lane,com_Lanes,com_Pool;
	COMVariant lane;
	anytype var_Element,var_Lane,var_Lanes,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-150),COMVariant::createFromInt(-150),COMVariant::createFromInt(500),COMVariant::createFromInt(250)); com_Pool = var_Pool;
	var_Lane = COM::createFromObject(com_Pool).Lane(0/*exLaneHorizontal*/); com_Lane = var_Lane;
	var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
	com_Lanes.Count(3);
	var_Element = COM::createFromObject(exswimlane1.Elements()).Add("Element"); com_Element = var_Element;
		com_Element.CenterOnLane(false);
		lane = com_Element.LaneID(false);
		print( exswimlane1.LaneByID(lane).Header().Caption() );
	exswimlane1.EndUpdate();
}
22
How can I define a different shape for elements

// AddElement event - A new element has been added to the surface.
void onEvent_AddElement(COM   _Element)
{
	;
}

public void init()
{
	COM com_Appearance,com_Element,com_Element1,com_Element2,com_Element3,com_Element4,com_Elements;
	anytype var_Appearance,var_Element,var_Element1,var_Element2,var_Element3,var_Element4,var_Elements;
	str var_s,var_s1,var_s2,var_s3,var_s4;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Appearance = exswimlane1.VisualAppearance(); com_Appearance = var_Appearance;
		var_s = "gBFLBCJwBAEHhEJAAChABAQDg6AADACAxRDQNABQKAAzQFAYahuHKGAAGEaBYgmFgAQhFcZQSKUOQTDKMIziYBYJhEMQwDiAUIjIK8IhkGIcZAGIBJCjWGodQLOEgwHI";
		var_s = var_s + "ERQjEyUJAGGYqEjaO41SpAdI0PCxUScACnDQiegJRgmQ4cTJSchSAKENx1JaeYReewwAqNd5TRwNIiydZUIhqGC1YRte4ZWiCWoJVzSVDLfbgAT4X60IIlCi5Mi6MIgD";
		var_s = var_s + "ZJFDUNLUdRBMKNJ7qagaWoWOaQRbmAQQTRYLQ/TiEXZDQRAAyLJIWVRQWTAAKVbw1LiEcznGCcejzIIDaZpOh4DplWzTOgALjta4IRpvNwAbIAF4gBqsLyXXLcdQyORM";
		var_s = var_s + "iwbxZgSDhgnQbJFC6F5JhECA8CADwIgMeQnmoQJlh0eAfGcXYZjwccOHiWx/moAJ6jed4DC2dJnnmQRxBcKABBoWAcHULZLHyV4mmGOx0FmdpZAMAgQhEQBpBiRxBlQc";
		var_s = var_s + "gZFUdAMEYAxQDECBNgaUYglkCQKBGZANk0QgBgQXAQgcGI0FwJAHA6WI+DGDAjCiVg0g2Yw4mYNg7E0eJ1H+DpkAiYhBg6JApBYRMvDkJhGhKJIImEA4QledZ8H+FJlE";
		var_s = var_s + "EQhWBAJa8loRoCgkdhYBAExZHQKIXmUYRCFQI5mgWfZ4hMJpJC4boTGcCY0m0QJVBAIh2EIZZ5H4VIVAqeZ1H8M5oAmSg7g8TR1n4fQrmUQZCgqF5eEmYhYBgKQJiCD4";
		var_s = var_s + "PmaegKhWJZnAQDZkhqaYKFocYnGadZ8h+KJoiGQhfEIURAmKEAYAgeo1H8OZrAoeoyhGKYngaHInmuCpOjmKAkHMHo+iiSZxmKQoXkGCwWigRQlnqLh7jKSh7DYUYzm0";
		var_s = var_s + "CgAk+DIrFCAo3i6LYKnKWYuk6Wp4keKIqDsLh7BYLhJmaZo5mcYAijAOZtFsXpajubZLG6co8CSShtnYeJrGeVpzjwbxLnafI/mcK5ZnmPgtGuap+j6cIMB8CocDAK43";
		var_s = var_s + "AaQAwjwJwQkSaZsDcBI7jETBHBqRhxkibwWkCMQsgcG5Ii2TB+nkN5yEyJwjkqcJMh8DpKDKTIrB2TBmnyGwFkwMw8mcMpOmQbJbBiTwziyUxBDsc5sD8QJRnQKprEWT";
		var_s = var_s + "g0g0DxNlKMpsF8RpSHUTQ7BuUp0n0VxZi4MxrDSJ40DYDYHGKWJ2E2FxmyADYnGqMRBgeYh0FOLh9kccpcncJsVw7RdjvA2M4eovRmCSFkMwQIoAQEBA";
		com_Appearance.Add(1,COMVariant::createFromStr(var_s));
		var_s1 = "gBFLBCJwBAEHhEJAAChABAIDg6AADACAxRDQNABQKAAzQFAYaBmG6GAAGEaBYgmFgAQhFcZQSKUOQTDKMIziYBYJhEMQ1DAAUIjKLMIhmGAYJAGIBJCjWGodQLOEgwHI";
		var_s1 = var_s1 + "ERQjEyUpIyVAkYw5HqNaQjICoJoSOwAU47IaCIAFJSpCygKKgSjhRpoAAyU5IUgVPC4XSbD6zYDqapaTheEQyDSJNr3DCMUTlFYYLrmaQKMhqZJhWjbFSWXUpJ4pSrLM";
		var_s1 = var_s1 + "IyfTwZRJGzIK7jabLIjaP6GUDhVaYbRUL46CiEb5AAJsVpCCZrYRJOYVdQeDYbQCNLDhHQIDqaA6kZRAdQ2bpMBznPSvbovDgLWhGYqhbLCNibRC+d4HNrCYIlCjpMw3";
		var_s1 = var_s1 + "CYGIOHOMRsm0OxFjSZppneHQNFcSwRAOaprjqY4dgYe4VgGWwADucRuHYCpdByYROH8AAOC8D4NgEXwYBWEZyGAWoHg2MRCECBAkFAGhGDGUB1ByBhQkUIAPgCRAMEIE";
		var_s1 = var_s1 + "xhIuNhCEKBAlnAcwQgAYQXAIIRWEUFwJAGQ42CiCoihiLgugsYwDjSZ4MkICJWCaDZjgiZg6EIQQInSV4PmKeIyEKEBkBQDhEgwZBzjSd4SlEQJgk+E5khkRhIhSZA5F";
		var_s1 = var_s1 + "IUoVGWCQkl+FpkliTJnhXSYaFaGJOlEIhmC2ZoJgIZIaiWGYuG62IpDyT4TGSM5eGyCpmCnPIcCeQg+H6HZmnoAh6iAaBDjSL4hkUCgmgKHhlHmeIPh8BwKAqEohGkOg";
		var_s1 = var_s1 + "OHCI4pAmMoMhUKByj6CQUCkWoGhSKJpGkJoQiOJR6G4cYTmcSQuiKKRqEqPovhmBIJiCN4YEACQGFsN5lliToyiwbAKkKQoSGcWQ2HKERrhiJJvjLUR8leL5sDsBpQiU";
		var_s1 = var_s1 + "ZZpDaO4eAACZWh+LYtDsSpejQbmJnIEAuEsLJvECRgLiSH46m2W4Gl+OxpFqWo0ECSR7lQaI9m8C4+nqO4uAIHp+B4MAJmcAAeC+YgenmPwwHwHInkKRYMDaWIQGmeh3";
		var_s1 = var_s1 + "AmPpxDsCJHkWbhBAIdZDmMGZXBmRZMHwVwikUIwam0MAMC4awiEmOYyHsXwkkIMp5jMLBMDKaRiiqEBsmkNwpkwc5MyiHRrEKfxCiobIaFsQgvmsTBvD2SJuAwNBYkKS";
		var_s1 = var_s1 + "h6GsRYbDUDQ7EyVZmEwDwFiKdQ6BQf5XnYDRjD6IIujIfppBgKRcl6BZZnYXYLBWLYpn0KpglqLAtAIZoOneBsZw9RJjnQ+AYQAgCAg=";
		com_Appearance.Add(2,COMVariant::createFromStr(var_s1));
		var_s2 = "gBFLBCJwBAEHhEJAAChABQsMACAADACAxRDQNABQKAAzQFAYawLBgABhGUZoJhUAIIRZGMIjFDcEwxC6NIpAWCYQgUNQCQiNAzxAKQchhD4ZAIkGY4ZhyA42SBAcbyDC";
		var_s2 = var_s2 + "EShoGqPRhmCg5UjmM4oQLSFDULC0fSBBIYaSGEY5QoqIYfArGQYQTRUPyUdoOBIACwLChWLA1CTZdowSKoYTXBq3IgqerIapmSYaV7YNh3VY1IR/JSVJYlaYJDoyNI4T";
		var_s2 = var_s2 + "hHc5xVLtfSfAiiJrxOKcTAAFJ0QKFUbRUz+OgBTpvaZxagaSpSG5WRpWEI5PAdN4zTa7YDsS67FiSG5oWpEFq2eAGdzlVLMMqhG5gAxqNKzbLfMCXfJIbyrBIcYLoXIt";
		var_s2 = var_s2 + "CqFYskMTwxlgAY+haFZRlQZQ4HwHR3AoMx5jEch2lMfZGl8eY+jYXBvBsAAHFeRQDmuRR8nsSI2CoEgIEIRQBiQYwdAcUZIGUUIQhGGAGECRAhDYChGFERAMCgQheEcG";
		var_s2 = var_s2 + "QgHkEAwkICx2BCFoAj+B5iAiBgigiYhIgid4JkIQBwm2ChijiKgsguYpokYLYMmKQIiDYDgjgEAg6g6Y5InYPoPmOIAiEKEJFgkFIvhGYwIlIMoSTmAhOGgJJJC4UoSi";
		var_s2 = var_s2 + "USIcncKZlp8WoOAOAxeF6FBlEkNhPGcZgJhYU4ZiMMweGoDAmkGfhuhWJoJDgIIUCYeZWGGHYkhkWhuB+ZYhEIcIUmcKZSHeIJmgoFgyCeaIBgKCoYCgGYSHiI5oEoQg";
		var_s2 = var_s2 + "siKBgKCCH4SOAfoGiQaZKPmJ5jGCIJniiZgpk6DonGkKomgOHpnjqFoCiaawKioSYXg0eoGi6KZrBqIo6hgEIal6GosiwCpuDIBgsEqDJniYa4bVuFYkDqepKjCLQJii";
		var_s2 = var_s2 + "R4XCyawGk+JpGgsZIXjabRbEKV4disSYwDCH5OlsIpWjmaA5HKUomCYOp+l6OgkhoUoWiMLpbH6bw7G0KRynOHYuGuXobhWB4MAaaoaimO52naB4hnkYInhERYLBAGAh";
		var_s2 = var_s2 + "nECw+H2BwhkmSg7kMMIqHyb49hAECAg=";
		com_Appearance.Add(3,COMVariant::createFromStr(var_s2));
		var_s3 = "gBFLBCJwBAEHhEJAAChABOIDg6AADACAxRDQNABQKAAzQFAYaBqGCGAAGEZRSgmFgAQhFcZQTCsBw7DCEYxjOAwFgmEQxDIOIBQSKYcwiGQaRrkIYgEiONoaR7HchSFI";
		var_s3 = var_s3 + "cIxPFKRBhkKYocjyG5GRoBcIyXAcRSYAB2Q4ESoKShePw5UDTcCzHR8RxEDKNRLpOQbDgOUZTWbVUaDKIsXzZCKHbZhG4YRp6CZKRpYEB1bYtKTRKqLKrpeTbOoSHolT";
		var_s3 = var_s3 + "biIATTYlG4THyEZQrDIaDjOSIXZaGFzwSDWGgBJ60bRwHIaAxGWoHRxfEZVfBONQHMSBc5xa64JyHAImWrcUbWfaYYZ0AC6MRkK8cXABPQANixKZsCizE4DDbTYzjRhe";
		var_s3 = var_s3 + "C2F4nnEOJRG0BRXEWOICEocByiyCJTiQOJVGYIQ8gofpDgsG5uF+ah6D2Xp+GGP5gkCfwRHofwOnuSB2heVpZnIUZQhAIQJBQBoRgwdAdEcIYVEIQhGGAMQDBCBJYEUG";
		var_s3 = var_s3 + "gNhCEMcHsXIkCIAAMIILQWAkAZDjYJIJiIWIeCqCRMHiNI/guYwIkYMoMmMSJWDaDZjgiTIzg6Yo4iIPoPGIdAmECChiFKXhGAQJIAmISgQCSSQ2E6E5lAkRhShSZRJF";
		var_s3 = var_s3 + "QOoVkCaRkAqFpQhIPhehCY54hYQoRCOYo+GaExOnmJhghqZhJjIYYbmaaJ0l+HJkiCYgtDGY5RkIegfmeSY6GOD4MnoBh1D2aBJkYbYhmcCgigaIhOloEJ3h0aATD4bg";
		var_s3 = var_s3 + "WCkQoehaGAnniHhNgwKI6HaConmiSYCF4I5niGQoLDmaoAiKKoaE6eJ2H+HZnFoeohigKwqCwGItmqA4ejIHgrkIHo+iuEA4h6PGMmIHo1i0LIKk6SoMCSWwcm2LAkis";
		var_s3 = var_s3 + "AAAgmQgLFYcw3myaxmkmG4GgsdIXjebYjjaVQIC0eQFAONADguBpqjaaIKlwGIuG4GwOkWOYAAqDoljqbIrmIJ41m4O5iGYK5FAwBp0ikag7mqbI+GoCwyEyPgpBCQwO";
		var_s3 = var_s3 + "j0KRBGKFgpnAbAjXWMQ8EaeIuG6a5SHWHZxFyBoIjEbA8FQCJJmiZAmmOORwHyCwXgkbwqn8LYoDKOZNAmJpinyOzTm8aZrBWH5QhGAxCCedBMm8L5Fi+fAEFCPgvksV";
		var_s3 = var_s3 + "p0h8NQBn8RpLi7NQKBALxLHyF43EaDRPDOMoxkqXp4kYaRLlMTQIDWbQeguR5iluBxCBgNBCH6dIJnaSZjF+LQZgGQSh5DOFEa4dQsi5GILsaA8ReBuHoEYZ4ZwkDFFw";
		var_s3 = var_s3 + "JEYo2grjcHOFUAoFA7gJFqFEDYrQyilC+PwNgyRBBLH4C8FIzxiD8CeBYEgUQ9CtAiEwYgtQyDqDWPUTjBhXBrCmAcKoJQ6iGF6DEMA8BpieA4BgMQdxDg9GSOkLQgRC";
		var_s3 = var_s3 + "jhHiDMV4Ewfh3AoGULIiBujRAuJ0c4+gEi4ASOkRAfhWgjCKKEFACCAg";
		com_Appearance.Add(4,COMVariant::createFromStr(var_s3));
		var_s4 = "gBFLBCJwBAEHhEJAAChABGgDg6AADACAxRDQNABQKAAzQFAYZBwGiGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziYBYJAKCQ3DTJUBjIKcIhiGsgAzAJIUaw1DqGY7nKZoRi";
		var_s4 = var_s4 + "oAIoSAMM7DCKUQSLGyQZqBSCQGjsAI+OyHAiABSNJwtHygIRoKqqHg2PoiSAEUZhdRlHShKSqLQiaIRSDUJZsW5EIyjBZ8EznOqbJApOKrCgOTYaWbUdSxPTEUwTFiXJ";
		var_s4 = var_s4 + "gmKRKIoiOAAY7IEgSFLsThrIKha5yDI4bxyAwXQjeYABbY0E4HQarcqzCrKGp/HYJXyAGgQHYkB5JAaQMBtGpoJrCeKQXDdVyXFwdET1BLZQA2HeUTTRVCScqnaTMZh8";
		var_s4 = var_s4 + "DgGxniKfYbngAxFkmVJAnSdougwDhRlMGZ1GEPR9HQapDGWWhyCMe4ugQDx9naYRvm6cQfAUJ47m8cofBYAZOGCHg2mETgCBCERAGkGJHEGVByBkUwUCSIgChAMQIE2B";
		var_s4 = var_s4 + "JRiQVQDAoEIWlWIxOgGBBcGyBQYlQXAkAcDpYh4KYKCKKI2CyC5ijONJvgySZ4lQWINkKCJmCWDpjkQaJPg+UA4joMYQiQI4eEYHAkgAYhKBgJJCh43JlAkEgwhSJA5E";
		var_s4 = var_s4 + "4VoVE6UQCFoL5lkkBhXhUCR5gYOQKAieYUneGZlEmJhfhqZYJFIWgQCWQp+F6GxigmHJ3BoJ4JmYMw7maKZSH6HxoAiQhvhwZ1VHYFAogmBIXiAZ55jKDIQgeChGG+G5";
		var_s4 = var_s4 + "BAoVJHiWaBYkIecznoOoeiMZYCj6IoYmcGhckeCophONoKh4aZagKLYrGkEZggeLJkCmThGDmZg5m6L4nmuOoCHaGJNnsBooAAIopCAcIZEiep2kqLwpnqCIviIBQLA4";
		var_s4 = var_s4 + "dolEECZakuK4sksYhYAgLZLOsQJLHuBBIjibR7haWYfGwawhAOJpmBuGpajuJRJkYbxAmgORynCOZvgqApejcAgIG4OYUA0e5em+PhokQXhKAYKx8AsCo+FEcJDA6D5M";
		var_s4 = var_s4 + "nwLwDkTWJulQQJuDEIphC2cQsHYbJEDCYJBAOLBrDIHwekUMBIiITgpmMcRhAOKYDgyRwnkyYwMjcK4cnAfAnCmSgzkoGhnkGZ45k6SIxjMTPIFCZOZEKSBxA0Fpui2b";
		var_s4 = var_s4 + "5LFoKIqGoaY/FKUY1gmdpQjOKxbBIV4zi0DQ6nmOhmFkUophCLILEMV5YiWCZkH+W5nl2HxfiiMwQmMTZOmqLhaLsx9iUH6JAMI1hCDjECFQawhghjBG2DseoGQzhNHw";
		var_s4 = var_s4 + "DwTAMAsgTEeCUZI1Q5jFHyLodYmWxB8GsPEVIPwxhSD6Awb4dgJD2HsAQQIoAQEB";
		com_Appearance.Add(5,COMVariant::createFromStr(var_s4));
	exswimlane1.Background(90/*exElementBackColor*/,WinApi::RGB2int(255,255,255));
	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = COM::createFromObject(com_Elements.Add("Rectangular",COMVariant::createFromInt(0),COMVariant::createFromInt(0))); com_Element = var_Element;
		com_Element.Shape(0/*exShapeRectangular*/);
		var_Element = COM::createFromObject(com_Elements.Add("Round",COMVariant::createFromInt(82),COMVariant::createFromInt(0))); com_Element = var_Element;
		com_Element.Shape(1/*exShapeRound*/);
		var_Element = COM::createFromObject(com_Elements.Add("Rhomb",COMVariant::createFromInt(138),COMVariant::createFromInt(0))); com_Element = var_Element;
		com_Element.Shape(2/*exShapeRhomb*/);
		var_Element = COM::createFromObject(com_Elements.Add("Circle",COMVariant::createFromInt(196),COMVariant::createFromInt(0))); com_Element = var_Element;
		com_Element.Shape(3/*exShapeCircle*/);
		var_Element = com_Elements.Add("EBN 1",COMVariant::createFromInt(0),COMVariant::createFromInt(36)); com_Element = var_Element;
			com_Element.BackColor(0x1000000);
			com_Element.Border(-1/*exNoLines*/);
		var_Element1 = com_Elements.Add("EBN 2",COMVariant::createFromInt(54),COMVariant::createFromInt(36)); com_Element1 = var_Element1;
			com_Element1.BackColor(0x2000000);
			com_Element1.Border(-1/*exNoLines*/);
		var_Element2 = com_Elements.Add("EBN 3",COMVariant::createFromInt(108),COMVariant::createFromInt(36)); com_Element2 = var_Element2;
			com_Element2.BackColor(0x3000000);
			com_Element2.Border(-1/*exNoLines*/);
		var_Element3 = com_Elements.Add("EBN 4   ",COMVariant::createFromInt(160),COMVariant::createFromInt(36)); com_Element3 = var_Element3;
			com_Element3.BackColor(0x4000000);
			com_Element3.Border(-1/*exNoLines*/);
		var_Element4 = com_Elements.Add("EBN 5 ",COMVariant::createFromInt(220),COMVariant::createFromInt(36)); com_Element4 = var_Element4;
			com_Element4.BackColor(0x5000000);
			com_Element4.MinHeight(64);
			com_Element4.MinWidth(64);
			com_Element4.Border(-1/*exNoLines*/);
	exswimlane1.ScrollPos(false,-160);
	exswimlane1.EndUpdate();
}
21
Is it possible to add an inner control on the surface

// OleEvent event - Occurs once an inside control fires an event.
void onEvent_OleEvent(COM   _Element,COM   _Ev)
{
	;
	print( _Ev );
}

public void init()
{
	COM com_Element,com_Elements;
	anytype var_Element,var_Elements;
	;

	super();

	var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
		var_Element = com_Elements.Add("activex hosting"); com_Element = var_Element;
			com_Element.Type(2/*exElementHostControl*/);
			com_Element.Control("Forms.CommandButton.1");
			com_Element.Caption("Command Button");
			com_Element.Height(64);
			com_Element.Width(128);
			com_Element.ElementFormat("14;\"caption\"/\"client\"");
			com_Element.CaptionAlign(1/*exTopCenter*/);
}
20
How can I create a copy of the element
public void init()
{
	COM com_Element;
	anytype var_Element;
	;

	super();

	exswimlane1.Background(90/*exElementBackColor*/,WinApi::RGB2int(255,255,255));
	var_Element = COM::createFromObject(exswimlane1.Elements()).Add("Element 1",COMVariant::createFromInt(0),COMVariant::createFromInt(0)); com_Element = var_Element;
	var_Element = COM::createFromObject(com_Element).Copy(); com_Element = var_Element;
	com_Element.Caption("Aka");
}
19
How can I define an opaque background for elements

public void init()
{
	;

	super();

	exswimlane1.Background(90/*exElementBackColor*/,WinApi::RGB2int(255,255,255));
	exswimlane1.Elements().Add("Element 1",COMVariant::createFromInt(0),COMVariant::createFromInt(0));
	exswimlane1.Elements().Add("Element 2",COMVariant::createFromInt(16),COMVariant::createFromInt(16));
}
18
How can I show a different context-menu for all elements
// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
void onEvent_ActionContextMenu(int   _Action,int   _ObjectType,COMVariant   _ObjectID,int   _CommandID,boolean   _CommandChecked,COMVariant   _CommandCaption,COMVariant   _CommandValue,COMVariant /*bool*/   _Cancel)
{
	;
	print( _Action );
	print( _ObjectID );
	print( _CommandID );
}

public void init()
{
	;

	super();

	exswimlane1.ContextMenu(4/*exContextMenuElement*/,"Item 1[id=1000],Item 2[id=2000]");
	exswimlane1.Background(90/*exElementBackColor*/,WinApi::RGB2int(255,255,255));
	exswimlane1.Elements().Add("Element 1",COMVariant::createFromInt(0),COMVariant::createFromInt(0));
	exswimlane1.Elements().Add("Element 2",COMVariant::createFromInt(16),COMVariant::createFromInt(16));
}
17
How can I show a different context-menu for element
public void init()
{
	;

	super();

	print( exswimlane1.Elements().Add("Element",COMVariant::createFromInt(0),COMVariant::createFromInt(0)).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") );
}
16
How can I change the design-modes being shown on the control's toolbar

public void init()
{
	;

	super();

	exswimlane1.DesignModes("Read-Only#0,Allow Any#3,Only-Element#1,Only-Pool#2");
}
15
How can I change the default header's background color

public void init()
{
	COM com_Lane,com_Lanes,com_Pool;
	anytype var_Lane,var_Lanes,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-250),COMVariant::createFromInt(-150),COMVariant::createFromInt(500),COMVariant::createFromInt(250)); com_Pool = var_Pool;
		var_Lane = COM::createFromObject(com_Pool.Lane(0/*exLaneHorizontal*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(4);
		var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(4);
	exswimlane1.Background(120/*exPoolHorizontalHeaderBackColor*/,WinApi::RGB2int(0,255,0));
	exswimlane1.Background(124/*exPoolVerticalHeaderBackColor*/,WinApi::RGB2int(0,192,0));
	exswimlane1.EndUpdate();
}
14
How can I remove the Design item from the control's toolbar, to be locked ( no-design )

public void init()
{
	;

	super();

	exswimlane1.ToolBarFormat("-1,100,101");
	exswimlane1.DesignMode(0/*exDesignLock*/);
}
13
How can I remove/disable the Color and Display-Grid from the surface's context menu

public void init()
{
	str var_s;
	;

	super();

	var_s = "Delete[id=-32004](All[id=-32000][ttp=Deletes all the objects from the surface],[sep],Elements[id=-32001][ttp=Deletes all element";
	var_s = var_s + "s from the surface],Links[id=-32002][ttp=Deletes all links from the surface],Pools[id=-32003][ttp=Deletes all pools from the sur";
	var_s = var_s + "face])";
	exswimlane1.ContextMenu(24/*exContextMenuSurface*/,var_s);
}
12
How can I change the element's context-menu when the user right-clicks the element

// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
void onEvent_ActionContextMenu(int   _Action,int   _ObjectType,COMVariant   _ObjectID,int   _CommandID,boolean   _CommandChecked,COMVariant   _CommandCaption,COMVariant   _CommandValue,COMVariant /*bool*/   _Cancel)
{
	// ContextMenuObjectFromID(ObjectType,ObjectID).BackColor = RGB(255,255,0)
	;
	print( _Action );
	print( _CommandCaption );
}

public void init()
{
	;

	super();

	exswimlane1.BeginUpdate();
	exswimlane1.Elements().Add("element",COMVariant::createFromInt(0),COMVariant::createFromInt(0));
	exswimlane1.ContextMenu(4/*exContextMenuElement*/,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])");
	exswimlane1.EndUpdate();
}
11
How do I prevent showing the context-menu when user right-clicks the surface
public void init()
{
	;

	super();

	exswimlane1.ContextMenu(24/*exContextMenuSurface*/,"");
}
10
How do I create parent-child (tree) lanes

public void init()
{
	COM com_HeaderLane,com_Lane,com_Lanes,com_Lanes1,com_Pool;
	anytype var_HeaderLane,var_Lane,var_Lanes,var_Lanes1,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-250),COMVariant::createFromInt(-150),COMVariant::createFromInt(500),COMVariant::createFromInt(250)); com_Pool = var_Pool;
		com_Pool.HeaderSize(1/*exHeaderTop*/,32);
		com_Pool.HeaderVisible(3/*exHeaderBottom*/,false);
		var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
		var_Lanes = com_Lane.Children(); com_Lanes = var_Lanes;
			com_Lanes.Count(2);
			var_Lane = COM::createFromObject(com_Lanes.Item(COMVariant::createFromInt(0))); com_Lane = var_Lane;
			var_Lanes1 = com_Lane.Children(); com_Lanes1 = var_Lanes1;
				com_Lanes1.Count(2);
				var_Lane = COM::createFromObject(com_Lanes1.Item(COMVariant::createFromInt(0))); com_Lane = var_Lane;
				var_HeaderLane = COM::createFromObject(com_Lane).Header(); com_HeaderLane = var_HeaderLane;
				com_HeaderLane.Caption("Phase <b>1.1");
				var_Lane = COM::createFromObject(com_Lanes1.Item(COMVariant::createFromInt(1))); com_Lane = var_Lane;
				var_HeaderLane = COM::createFromObject(com_Lane).Header(); com_HeaderLane = var_HeaderLane;
				com_HeaderLane.Caption("Phase <b>1.2");
	exswimlane1.EndUpdate();
}
9
How do I create a pool with horizontal and lanes

public void init()
{
	COM com_Lane,com_Lanes,com_Pool;
	anytype var_Lane,var_Lanes,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-250),COMVariant::createFromInt(-150),COMVariant::createFromInt(500),COMVariant::createFromInt(250)); com_Pool = var_Pool;
		var_Lane = COM::createFromObject(com_Pool.Lane(0/*exLaneHorizontal*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(4);
		var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(4);
	exswimlane1.EndUpdate();
}
8
How do I add programatically a pool with horizontal lanes

public void init()
{
	COM com_Lane,com_Lanes,com_Pool;
	anytype var_Lane,var_Lanes,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-250),COMVariant::createFromInt(-150),COMVariant::createFromInt(500),COMVariant::createFromInt(250)); com_Pool = var_Pool;
		var_Lane = COM::createFromObject(com_Pool.Lane(0/*exLaneHorizontal*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(4);
	exswimlane1.EndUpdate();
}
7
How do I add programatically a pool with vertical lanes

public void init()
{
	COM com_Lane,com_Lanes,com_Pool;
	anytype var_Lane,var_Lanes,var_Pool;
	;

	super();

	exswimlane1.BeginUpdate();
	var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-250),COMVariant::createFromInt(-150),COMVariant::createFromInt(500),COMVariant::createFromInt(250)); com_Pool = var_Pool;
		var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
		var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
		com_Lanes.Count(4);
	exswimlane1.EndUpdate();
}
6
How can I change the toolbar's visual appearance

public void init()
{
	;

	super();

	exswimlane1.VisualAppearance().Add(1,"c:\\exontrol\\images\\normal.ebn");
	exswimlane1.Background(148/*exToolBarAppearance*/,0x1000000);
	exswimlane1.Background(149/*exToolBarBackColor*/,WinApi::RGB2int(255,255,255));
	exswimlane1.Background(150/*exToolBarForeColor*/,WinApi::RGB2int(40,40,40));
	exswimlane1.Background(153/*exToolBarButtonDownBackColor*/,0x1606060);
	exswimlane1.Background(154/*exToolBarButtonDownForeColor*/,WinApi::RGB2int(240,240,240));
	exswimlane1.Background(155/*exToolBarButtonHotBackColor*/,0x1a0a0a0);
	exswimlane1.Background(156/*exToolBarButtonHotForeColor*/,WinApi::RGB2int(255,255,255));
}
5
How can I change the toolbar's background color

public void init()
{
	;

	super();

	exswimlane1.Background(149/*exToolBarBackColor*/,WinApi::RGB2int(255,255,255));
}