153
Allow resizing the elements of the pool/lane/phase when the user resizes it by drag and drop, or, by holding the CTRL key, resize only the frame
Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowDesignHeader to OLEexDesignHeaderLock
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Set ComAllowPoolContentUpdate to OLEexEnableCtrlMixt
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Variant voElement
		Get ComAdd of hoElements "Node <b>2" 64 0 to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComSelected of hoElement to True
		Send Destroy to hoElement
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Variant voPool
		Get ComAdd of hoPools -100 -100 250 160 to voPool
		Handle hoPool
		Get Create (RefClass(cComPool)) to hoPool
		Set pvComObject of hoPool to voPool
			Variant voLane
			Get ComLane of hoPool OLEexLaneHorizontal to voLane
			Handle hoLane
			Get Create (RefClass(cComLane)) to hoLane
			Set pvComObject of hoLane to voLane
				Variant voLanes
				Get ComChildren of hoLane to voLanes
				Handle hoLanes
				Get Create (RefClass(cComLanes)) to hoLanes
				Set pvComObject of hoLanes to voLanes
					Set ComCount of hoLanes to 2
				Send Destroy to hoLanes
			Send Destroy to hoLane
			Variant voLane1
			Get ComLane of hoPool OLEexLaneVertical to voLane1
			Handle hoLane1
			Get Create (RefClass(cComLane)) to hoLane1
			Set pvComObject of hoLane1 to voLane1
				Variant voLanes1
				Get ComChildren of hoLane1 to voLanes1
				Handle hoLanes1
				Get Create (RefClass(cComLanes)) to hoLanes1
				Set pvComObject of hoLanes1 to voLanes1
					Set ComCount of hoLanes1 to 2
				Send Destroy to hoLanes1
			Send Destroy to hoLane1
		Send Destroy to hoPool
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
End_Procedure
152
Disable resizing the elements of the pool/lane/phase when the user resizes it by drag and drop
Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowDesignHeader to OLEexDesignHeaderLock
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Set ComAllowPoolContentUpdate to OLEexDisable
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Variant voElement
		Get ComAdd of hoElements "Node <b>2" 64 0 to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComSelected of hoElement to True
		Send Destroy to hoElement
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Variant voPool
		Get ComAdd of hoPools -100 -100 250 160 to voPool
		Handle hoPool
		Get Create (RefClass(cComPool)) to hoPool
		Set pvComObject of hoPool to voPool
			Variant voLane
			Get ComLane of hoPool OLEexLaneHorizontal to voLane
			Handle hoLane
			Get Create (RefClass(cComLane)) to hoLane
			Set pvComObject of hoLane to voLane
				Variant voLanes
				Get ComChildren of hoLane to voLanes
				Handle hoLanes
				Get Create (RefClass(cComLanes)) to hoLanes
				Set pvComObject of hoLanes to voLanes
					Set ComCount of hoLanes to 2
				Send Destroy to hoLanes
			Send Destroy to hoLane
			Variant voLane1
			Get ComLane of hoPool OLEexLaneVertical to voLane1
			Handle hoLane1
			Get Create (RefClass(cComLane)) to hoLane1
			Set pvComObject of hoLane1 to voLane1
				Variant voLanes1
				Get ComChildren of hoLane1 to voLanes1
				Handle hoLanes1
				Get Create (RefClass(cComLanes)) to hoLanes1
				Set pvComObject of hoLanes1 to voLanes1
					Set ComCount of hoLanes1 to 2
				Send Destroy to hoLanes1
			Send Destroy to hoLane1
		Send Destroy to hoPool
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
End_Procedure
151
Generates a PDF document on a single A0 page with no margins
Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (|CI$ffffff80 + OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexOrthoArrange + OLEexMiddleControlPoint + OLEexControlPoint + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Element <sha ;;0>A" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 164 64 to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 0 132 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
				Variant voLink
		Get ComAdd of hoLinks vFrom vTo Nothing to voLink
		Handle hoLink
		Get Create (RefClass(cComLink)) to hoLink
		Set pvComObject of hoLink to voLink
			Set ComCustomPath of hoLink to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink
Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
				Variant voLink1
		Get ComAdd of hoLinks vFrom1 vTo1 Nothing to voLink1
		Handle hoLink1
		Get Create (RefClass(cComLink)) to hoLink1
		Set pvComObject of hoLink1 to voLink1
			Set ComCustomPath of hoLink1 to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink1
Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 3 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
				Variant voLink2
		Get ComAdd of hoLinks vFrom2 vTo2 Nothing to voLink2
		Handle hoLink2
		Get Create (RefClass(cComLink)) to hoLink2
		Set pvComObject of hoLink2 to voLink2
			Set ComShowLinkType of hoLink2 to OLEexLinkRound
			Set ComStartPos of hoLink2 to OLELeftAlignment
			Set ComArrowSize of hoLink2 to 8
			Set ComArrowColor of hoLink2 to (RGB(255,255,255))
			Set ComArrowFrameColor of hoLink2 to (RGB(0,0,0))
		Send Destroy to hoLink2
	Send Destroy to hoLinks
	Send ComFitToClient
	Send ComEndUpdate
	Variant var_CopyTo
	Get ComCopyTo "c:/temp/sample.pdf|33.11 in x 46.81 in|0 0 0 0|single" to var_CopyTo
End_Procedure
150
Generates a PDF document that scales the content proportionally by 75% using B3 pages (default margins)
Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (|CI$ffffff80 + OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexOrthoArrange + OLEexMiddleControlPoint + OLEexControlPoint + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Element <sha ;;0>A" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 164 64 to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 0 132 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
				Variant voLink
		Get ComAdd of hoLinks vFrom vTo Nothing to voLink
		Handle hoLink
		Get Create (RefClass(cComLink)) to hoLink
		Set pvComObject of hoLink to voLink
			Set ComCustomPath of hoLink to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink
Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
				Variant voLink1
		Get ComAdd of hoLinks vFrom1 vTo1 Nothing to voLink1
		Handle hoLink1
		Get Create (RefClass(cComLink)) to hoLink1
		Set pvComObject of hoLink1 to voLink1
			Set ComCustomPath of hoLink1 to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink1
Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 3 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
				Variant voLink2
		Get ComAdd of hoLinks vFrom2 vTo2 Nothing to voLink2
		Handle hoLink2
		Get Create (RefClass(cComLink)) to hoLink2
		Set pvComObject of hoLink2 to voLink2
			Set ComShowLinkType of hoLink2 to OLEexLinkRound
			Set ComStartPos of hoLink2 to OLELeftAlignment
			Set ComArrowSize of hoLink2 to 8
			Set ComArrowColor of hoLink2 to (RGB(255,255,255))
			Set ComArrowFrameColor of hoLink2 to (RGB(0,0,0))
		Send Destroy to hoLink2
	Send Destroy to hoLinks
	Send ComFitToClient
	Send ComEndUpdate
	Variant var_CopyTo
	Get ComCopyTo "c:/temp/sample.pdf|6.93 in x 9.84 in||75%" to var_CopyTo
End_Procedure
149
Generates a PDF document that fits the content exactly to 3 A4 pages wide by 2 pages tall (default margins)
Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (|CI$ffffff80 + OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexOrthoArrange + OLEexMiddleControlPoint + OLEexControlPoint + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Element <sha ;;0>A" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 164 64 to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 0 132 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
				Variant voLink
		Get ComAdd of hoLinks vFrom vTo Nothing to voLink
		Handle hoLink
		Get Create (RefClass(cComLink)) to hoLink
		Set pvComObject of hoLink to voLink
			Set ComCustomPath of hoLink to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink
Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
				Variant voLink1
		Get ComAdd of hoLinks vFrom1 vTo1 Nothing to voLink1
		Handle hoLink1
		Get Create (RefClass(cComLink)) to hoLink1
		Set pvComObject of hoLink1 to voLink1
			Set ComCustomPath of hoLink1 to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink1
Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 3 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
				Variant voLink2
		Get ComAdd of hoLinks vFrom2 vTo2 Nothing to voLink2
		Handle hoLink2
		Get Create (RefClass(cComLink)) to hoLink2
		Set pvComObject of hoLink2 to voLink2
			Set ComShowLinkType of hoLink2 to OLEexLinkRound
			Set ComStartPos of hoLink2 to OLELeftAlignment
			Set ComArrowSize of hoLink2 to 8
			Set ComArrowColor of hoLink2 to (RGB(255,255,255))
			Set ComArrowFrameColor of hoLink2 to (RGB(0,0,0))
		Send Destroy to hoLink2
	Send Destroy to hoLinks
	Send ComFitToClient
	Send ComEndUpdate
	Variant var_CopyTo
	Get ComCopyTo "c:/temp/sample.pdf|||3 x 2f" to var_CopyTo
End_Procedure
148
Generates a PDF document that fits the content to 3 A3-landscape pages wide by 2 pages tall (custom margins)
Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (|CI$ffffff80 + OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexOrthoArrange + OLEexMiddleControlPoint + OLEexControlPoint + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Element <sha ;;0>A" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 164 64 to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 0 132 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
				Variant voLink
		Get ComAdd of hoLinks vFrom vTo Nothing to voLink
		Handle hoLink
		Get Create (RefClass(cComLink)) to hoLink
		Set pvComObject of hoLink to voLink
			Set ComCustomPath of hoLink to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink
Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
				Variant voLink1
		Get ComAdd of hoLinks vFrom1 vTo1 Nothing to voLink1
		Handle hoLink1
		Get Create (RefClass(cComLink)) to hoLink1
		Set pvComObject of hoLink1 to voLink1
			Set ComCustomPath of hoLink1 to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink1
Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 3 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
				Variant voLink2
		Get ComAdd of hoLinks vFrom2 vTo2 Nothing to voLink2
		Handle hoLink2
		Get Create (RefClass(cComLink)) to hoLink2
		Set pvComObject of hoLink2 to voLink2
			Set ComShowLinkType of hoLink2 to OLEexLinkRound
			Set ComStartPos of hoLink2 to OLELeftAlignment
			Set ComArrowSize of hoLink2 to 8
			Set ComArrowColor of hoLink2 to (RGB(255,255,255))
			Set ComArrowFrameColor of hoLink2 to (RGB(0,0,0))
		Send Destroy to hoLink2
	Send Destroy to hoLinks
	Send ComFitToClient
	Send ComEndUpdate
	Variant var_CopyTo
	Get ComCopyTo "c:/temp/sample.pdf|16.54 in x 11.69 in|5 mm 5 mm 5 mm 5 mm|3 x 2" to var_CopyTo
End_Procedure
147
Generates a PDF document that fits the content to 2 Letter pages tall, automatically determining the number of pages wide (default margins)
Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (|CI$ffffff80 + OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexOrthoArrange + OLEexMiddleControlPoint + OLEexControlPoint + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Element <sha ;;0>A" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 164 64 to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 0 132 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
				Variant voLink
		Get ComAdd of hoLinks vFrom vTo Nothing to voLink
		Handle hoLink
		Get Create (RefClass(cComLink)) to hoLink
		Set pvComObject of hoLink to voLink
			Set ComCustomPath of hoLink to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink
Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
				Variant voLink1
		Get ComAdd of hoLinks vFrom1 vTo1 Nothing to voLink1
		Handle hoLink1
		Get Create (RefClass(cComLink)) to hoLink1
		Set pvComObject of hoLink1 to voLink1
			Set ComCustomPath of hoLink1 to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink1
Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 3 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
				Variant voLink2
		Get ComAdd of hoLinks vFrom2 vTo2 Nothing to voLink2
		Handle hoLink2
		Get Create (RefClass(cComLink)) to hoLink2
		Set pvComObject of hoLink2 to voLink2
			Set ComShowLinkType of hoLink2 to OLEexLinkRound
			Set ComStartPos of hoLink2 to OLELeftAlignment
			Set ComArrowSize of hoLink2 to 8
			Set ComArrowColor of hoLink2 to (RGB(255,255,255))
			Set ComArrowFrameColor of hoLink2 to (RGB(0,0,0))
		Send Destroy to hoLink2
	Send Destroy to hoLinks
	Send ComFitToClient
	Send ComEndUpdate
	Variant var_CopyTo
	Get ComCopyTo "c:/temp/sample.pdf|8.50 in x 11.00 in||x 2" to var_CopyTo
End_Procedure
146
Generates a PDF document that fits the content to 1 page wide and as many A4 pages tall as required (default margins)
Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (|CI$ffffff80 + OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexOrthoArrange + OLEexMiddleControlPoint + OLEexControlPoint + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Element <sha ;;0>A" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 164 64 to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 0 132 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
				Variant voLink
		Get ComAdd of hoLinks vFrom vTo Nothing to voLink
		Handle hoLink
		Get Create (RefClass(cComLink)) to hoLink
		Set pvComObject of hoLink to voLink
			Set ComCustomPath of hoLink to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink
Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
				Variant voLink1
		Get ComAdd of hoLinks vFrom1 vTo1 Nothing to voLink1
		Handle hoLink1
		Get Create (RefClass(cComLink)) to hoLink1
		Set pvComObject of hoLink1 to voLink1
			Set ComCustomPath of hoLink1 to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink1
Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 3 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
				Variant voLink2
		Get ComAdd of hoLinks vFrom2 vTo2 Nothing to voLink2
		Handle hoLink2
		Get Create (RefClass(cComLink)) to hoLink2
		Set pvComObject of hoLink2 to voLink2
			Set ComShowLinkType of hoLink2 to OLEexLinkRound
			Set ComStartPos of hoLink2 to OLELeftAlignment
			Set ComArrowSize of hoLink2 to 8
			Set ComArrowColor of hoLink2 to (RGB(255,255,255))
			Set ComArrowFrameColor of hoLink2 to (RGB(0,0,0))
		Send Destroy to hoLink2
	Send Destroy to hoLinks
	Send ComFitToClient
	Send ComEndUpdate
	Variant var_CopyTo
	Get ComCopyTo "c:/temp/sample.pdf|||1 x" to var_CopyTo
End_Procedure
145
Generates a PDF document on a single A4 page (default margins)
Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (|CI$ffffff80 + OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexOrthoArrange + OLEexMiddleControlPoint + OLEexControlPoint + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Element <sha ;;0>A" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 164 64 to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 0 132 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
				Variant voLink
		Get ComAdd of hoLinks vFrom vTo Nothing to voLink
		Handle hoLink
		Get Create (RefClass(cComLink)) to hoLink
		Set pvComObject of hoLink to voLink
			Set ComCustomPath of hoLink to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink
Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
				Variant voLink1
		Get ComAdd of hoLinks vFrom1 vTo1 Nothing to voLink1
		Handle hoLink1
		Get Create (RefClass(cComLink)) to hoLink1
		Set pvComObject of hoLink1 to voLink1
			Set ComCustomPath of hoLink1 to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink1
Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 3 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
				Variant voLink2
		Get ComAdd of hoLinks vFrom2 vTo2 Nothing to voLink2
		Handle hoLink2
		Get Create (RefClass(cComLink)) to hoLink2
		Set pvComObject of hoLink2 to voLink2
			Set ComShowLinkType of hoLink2 to OLEexLinkRound
			Set ComStartPos of hoLink2 to OLELeftAlignment
			Set ComArrowSize of hoLink2 to 8
			Set ComArrowColor of hoLink2 to (RGB(255,255,255))
			Set ComArrowFrameColor of hoLink2 to (RGB(0,0,0))
		Send Destroy to hoLink2
	Send Destroy to hoLinks
	Send ComFitToClient
	Send ComEndUpdate
	Variant var_CopyTo
	Get ComCopyTo "c:/temp/sample.pdf|||single" to var_CopyTo
End_Procedure
144
Defines the colors, to display overlapping links

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>4" 16 -48 to Nothing
		Get ComAdd of hoElements "Node <b>5" -1024 -48 to Nothing
		Get ComAdd of hoElements "Node <b>6" 16 512 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Variant voLinks1
	Get ComLinks to voLinks1
	Handle hoLinks1
	Get Create (RefClass(cComLinks)) to hoLinks1
	Set pvComObject of hoLinks1 to voLinks1
		Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
		Get ComAdd of hoLinks1 vFrom1 vTo1 "L2" to Nothing
	Send Destroy to hoLinks1
	Variant voLinks2
	Get ComLinks to voLinks2
	Handle hoLinks2
	Get Create (RefClass(cComLinks)) to hoLinks2
	Set pvComObject of hoLinks2 to voLinks2
		Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 2 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
		Get ComAdd of hoLinks2 vFrom2 vTo2 "L3" to Nothing
	Send Destroy to hoLinks2
	Set ComShowLinks to (OLEexChangeColorOnOverlap + OLEexShowCrossLinksRect + OLEexShowExtendedLinks)
	Set ComOverlapLinksColors to "red,orange"
	Set ComLinksColor to (RGB(128,128,128))
	Set ComAxisStyle to OLEexNoLines
	Set ComShowGridLines to False
	Send ComEndUpdate
End_Procedure
143
The exPreventOverlapMixt flag must always be used alongside either the exPreventOverlap or exChangeColorOnOverlap flag. When used with the exPreventOverlap flag, it ensures that links avoid overlapping with elements or obstacles, enabling their paths to include both rectangular and diagonal lines. When combined with the exChangeColorOnOverlap flag, overlapping links alternately adjust their width in addition to changing colors (sample 2)

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>4" 16 -48 to Nothing
		Get ComAdd of hoElements "Node <b>5" -1024 -48 to Nothing
		Get ComAdd of hoElements "Node <b>6" 16 512 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Variant voLinks1
	Get ComLinks to voLinks1
	Handle hoLinks1
	Get Create (RefClass(cComLinks)) to hoLinks1
	Set pvComObject of hoLinks1 to voLinks1
		Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
		Get ComAdd of hoLinks1 vFrom1 vTo1 "L2" to Nothing
	Send Destroy to hoLinks1
	Variant voLinks2
	Get ComLinks to voLinks2
	Handle hoLinks2
	Get Create (RefClass(cComLinks)) to hoLinks2
	Set pvComObject of hoLinks2 to voLinks2
		Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 2 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
		Get ComAdd of hoLinks2 vFrom2 vTo2 "L3" to Nothing
	Send Destroy to hoLinks2
	Set ComShowLinks to (OLEexChangeColorOnOverlap + OLEexPreventOverlapMixt + OLEexShowCrossLinksRect + OLEexShowExtendedLinks)
	Set ComLinksColor to (RGB(128,128,128))
	Set ComAxisStyle to OLEexNoLines
	Set ComShowGridLines to False
	Send ComEndUpdate
End_Procedure
142
The exChangeColorOnOverlap flag changes the color for links in areas where they overlap with other links, enhancing clarity and distinction between them

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>4" 16 -48 to Nothing
		Get ComAdd of hoElements "Node <b>5" -1024 -48 to Nothing
		Get ComAdd of hoElements "Node <b>6" 16 512 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Variant voLinks1
	Get ComLinks to voLinks1
	Handle hoLinks1
	Get Create (RefClass(cComLinks)) to hoLinks1
	Set pvComObject of hoLinks1 to voLinks1
		Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
		Get ComAdd of hoLinks1 vFrom1 vTo1 "L2" to Nothing
	Send Destroy to hoLinks1
	Variant voLinks2
	Get ComLinks to voLinks2
	Handle hoLinks2
	Get Create (RefClass(cComLinks)) to hoLinks2
	Set pvComObject of hoLinks2 to voLinks2
		Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 2 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
		Get ComAdd of hoLinks2 vFrom2 vTo2 "L3" to Nothing
	Send Destroy to hoLinks2
	Set ComShowLinks to (OLEexChangeColorOnOverlap + OLEexShowCrossLinksRect + OLEexShowExtendedLinks)
	Set ComLinksColor to (RGB(128,128,128))
	Set ComAxisStyle to OLEexNoLines
	Set ComShowGridLines to False
	Send ComEndUpdate
End_Procedure
141
The exPreventOverlapMixt flag must always be used alongside either the exPreventOverlap or exChangeColorOnOverlap flag. When used with the exPreventOverlap flag, it ensures that links avoid overlapping with elements or obstacles, enabling their paths to include both rectangular and diagonal lines. When combined with the exChangeColorOnOverlap flag, overlapping links alternately adjust their width in addition to changing colors (sample 1)

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>4" 16 -48 to Nothing
		Get ComAdd of hoElements "Node <b>5" -1024 -48 to Nothing
		Get ComAdd of hoElements "Node <b>6" 16 512 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Variant voLinks1
	Get ComLinks to voLinks1
	Handle hoLinks1
	Get Create (RefClass(cComLinks)) to hoLinks1
	Set pvComObject of hoLinks1 to voLinks1
		Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
		Get ComAdd of hoLinks1 vFrom1 vTo1 "L2" to Nothing
	Send Destroy to hoLinks1
	Variant voLinks2
	Get ComLinks to voLinks2
	Handle hoLinks2
	Get Create (RefClass(cComLinks)) to hoLinks2
	Set pvComObject of hoLinks2 to voLinks2
		Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 2 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
		Get ComAdd of hoLinks2 vFrom2 vTo2 "L3" to Nothing
	Send Destroy to hoLinks2
	Set ComShowLinks to (OLEexPreventOverlap + OLEexPreventOverlapMixt + OLEexShowCrossLinksRect + OLEexShowExtendedLinks)
	Set ComLinksColor to (RGB(128,128,128))
	Set ComAxisStyle to OLEexNoLines
	Set ComShowGridLines to False
	Send ComEndUpdate
End_Procedure
140
The exPreventOverlap flag adjusts the links to prevent them from overlapping the connected objects. The exPreventOverlap option calculates the path between A and B using the A* (A-star) pathfinding algorithm, which can be a time-consuming operation

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>4" 16 -48 to Nothing
		Get ComAdd of hoElements "Node <b>5" -1024 -48 to Nothing
		Get ComAdd of hoElements "Node <b>6" 16 512 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Variant voLinks1
	Get ComLinks to voLinks1
	Handle hoLinks1
	Get Create (RefClass(cComLinks)) to hoLinks1
	Set pvComObject of hoLinks1 to voLinks1
		Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
		Get ComAdd of hoLinks1 vFrom1 vTo1 "L2" to Nothing
	Send Destroy to hoLinks1
	Variant voLinks2
	Get ComLinks to voLinks2
	Handle hoLinks2
	Get Create (RefClass(cComLinks)) to hoLinks2
	Set pvComObject of hoLinks2 to voLinks2
		Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 2 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
		Get ComAdd of hoLinks2 vFrom2 vTo2 "L3" to Nothing
	Send Destroy to hoLinks2
	Set ComShowLinks to (OLEexPreventOverlap + OLEexShowCrossLinksRect + OLEexShowExtendedLinks)
	Set ComLinksColor to (RGB(128,128,128))
	Set ComAxisStyle to OLEexNoLines
	Set ComShowGridLines to False
	Send ComEndUpdate
End_Procedure
139
How can I replace or add an icon at runtime

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Get ComReplaceIcon "gAAAABgYACEHgUJFEEAAWhUJCEJEEJggEhMCYEXjUbjkJQECj8gj8hAEjkshYEpk8kf8ClsulsvAExmcvf83js5nU7nkCeEcn8boMaocXosCB9Hn09pkzcEuoL/fE+OkYB0gB9YhIHrddgVcr9aktZADAD8+P8CgIA==" Nothing to Nothing
	Get ComReplaceIcon "C:\images\favicon.ico" 0 to Nothing
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <img>1</img>" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
End_Procedure
138
exActionContextMenuObject, An item from object's context menu is executing. Use the AllowContextMenu property to specify the combination of keys that allows the user to open the object's context menu. Use the ContextMenu property to provide a custom context menu for the objects on the surface. The ActionContextMenu event notifies your application once an action occurs within the object's context menu.
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 18 ? `exActionContextMenuObject` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 18 ? `exActionContextMenuObject` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowDesignHeader to OLEexDesignHeaderLock
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Variant voElement
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComSelected of hoElement to True
		Send Destroy to hoElement
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Variant voPool
		Get ComAdd of hoPools -100 -100 250 160 to voPool
		Handle hoPool
		Get Create (RefClass(cComPool)) to hoPool
		Set pvComObject of hoPool to voPool
			Variant voLane
			Get ComLane of hoPool OLEexLaneHorizontal to voLane
			Handle hoLane
			Get Create (RefClass(cComLane)) to hoLane
			Set pvComObject of hoLane to voLane
				Variant voLanes
				Get ComChildren of hoLane to voLanes
				Handle hoLanes
				Get Create (RefClass(cComLanes)) to hoLanes
				Set pvComObject of hoLanes to voLanes
					Set ComCount of hoLanes to 2
				Send Destroy to hoLanes
			Send Destroy to hoLane
			Variant voLane1
			Get ComLane of hoPool OLEexLaneVertical to voLane1
			Handle hoLane1
			Get Create (RefClass(cComLane)) to hoLane1
			Set pvComObject of hoLane1 to voLane1
				Variant voLanes1
				Get ComChildren of hoLane1 to voLanes1
				Handle hoLanes1
				Get Create (RefClass(cComLanes)) to hoLanes1
				Set pvComObject of hoLanes1 to voLanes1
					Set ComCount of hoLanes1 to 2
				Send Destroy to hoLanes1
			Send Destroy to hoLane1
		Send Destroy to hoPool
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Right-Click the pool, element or the link to open its context menu, and change a property of it"
End_Procedure
137
exContextMenuObject, The object's context menu is running. The user right-clicks an object on the surface, and it's context menu is shown. Use the AllowContextMenu property to specify the combination of keys that allows the user to open the object's context menu. Use the ContextMenu property to provide a custom context menu for the objects on the surface
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 17 ? `exContextMenuObject` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 17 ? `exContextMenuObject` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowDesignHeader to OLEexDesignHeaderLock
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Variant voElement
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComSelected of hoElement to True
		Send Destroy to hoElement
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Variant voPool
		Get ComAdd of hoPools -100 -100 250 160 to voPool
		Handle hoPool
		Get Create (RefClass(cComPool)) to hoPool
		Set pvComObject of hoPool to voPool
			Variant voLane
			Get ComLane of hoPool OLEexLaneHorizontal to voLane
			Handle hoLane
			Get Create (RefClass(cComLane)) to hoLane
			Set pvComObject of hoLane to voLane
				Variant voLanes
				Get ComChildren of hoLane to voLanes
				Handle hoLanes
				Get Create (RefClass(cComLanes)) to hoLanes
				Set pvComObject of hoLanes to voLanes
					Set ComCount of hoLanes to 2
				Send Destroy to hoLanes
			Send Destroy to hoLane
			Variant voLane1
			Get ComLane of hoPool OLEexLaneVertical to voLane1
			Handle hoLane1
			Get Create (RefClass(cComLane)) to hoLane1
			Set pvComObject of hoLane1 to voLane1
				Variant voLanes1
				Get ComChildren of hoLane1 to voLanes1
				Handle hoLanes1
				Get Create (RefClass(cComLanes)) to hoLanes1
				Set pvComObject of hoLanes1 to voLanes1
					Set ComCount of hoLanes1 to 2
				Send Destroy to hoLanes1
			Send Destroy to hoLane1
		Send Destroy to hoPool
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Right-Click the pool, element or the link to open its context menu"
End_Procedure
136
exMoveLane, The user moves/changes the position of the lane of the pool. The AllowMoveLane property specifies the keys combination to allow user to moves/changes the position the lane
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 16 ? `exMoveLane` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 16 ? `exMoveLane` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowDesignHeader to OLEexDesignHeaderLock
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Variant voElement
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComSelected of hoElement to True
		Send Destroy to hoElement
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Variant voPool
		Get ComAdd of hoPools -100 -100 250 160 to voPool
		Handle hoPool
		Get Create (RefClass(cComPool)) to hoPool
		Set pvComObject of hoPool to voPool
			Variant voLane
			Get ComLane of hoPool OLEexLaneHorizontal to voLane
			Handle hoLane
			Get Create (RefClass(cComLane)) to hoLane
			Set pvComObject of hoLane to voLane
				Variant voLanes
				Get ComChildren of hoLane to voLanes
				Handle hoLanes
				Get Create (RefClass(cComLanes)) to hoLanes
				Set pvComObject of hoLanes to voLanes
					Set ComCount of hoLanes to 2
				Send Destroy to hoLanes
			Send Destroy to hoLane
			Variant voLane1
			Get ComLane of hoPool OLEexLaneVertical to voLane1
			Handle hoLane1
			Get Create (RefClass(cComLane)) to hoLane1
			Set pvComObject of hoLane1 to voLane1
				Variant voLanes1
				Get ComChildren of hoLane1 to voLanes1
				Handle hoLanes1
				Get Create (RefClass(cComLanes)) to hoLanes1
				Set pvComObject of hoLanes1 to voLanes1
					Set ComCount of hoLanes1 to 2
				Send Destroy to hoLanes1
			Send Destroy to hoLane1
		Send Destroy to hoPool
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Click the lane's header to drag to a new position"
End_Procedure
135
exResizeLane, The user resizes the lane of the pool. The AllowResizePoolHeader property specifies the keys combination to allow user to resize the header of the pool
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 15 ? `exResizeLane` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 15 ? `exResizeLane` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowDesignHeader to OLEexDesignHeaderLock
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Variant voElement
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComSelected of hoElement to True
		Send Destroy to hoElement
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Variant voPool
		Get ComAdd of hoPools -100 -100 250 160 to voPool
		Handle hoPool
		Get Create (RefClass(cComPool)) to hoPool
		Set pvComObject of hoPool to voPool
			Variant voLane
			Get ComLane of hoPool OLEexLaneHorizontal to voLane
			Handle hoLane
			Get Create (RefClass(cComLane)) to hoLane
			Set pvComObject of hoLane to voLane
				Variant voLanes
				Get ComChildren of hoLane to voLanes
				Handle hoLanes
				Get Create (RefClass(cComLanes)) to hoLanes
				Set pvComObject of hoLanes to voLanes
					Set ComCount of hoLanes to 2
				Send Destroy to hoLanes
			Send Destroy to hoLane
			Variant voLane1
			Get ComLane of hoPool OLEexLaneVertical to voLane1
			Handle hoLane1
			Get Create (RefClass(cComLane)) to hoLane1
			Set pvComObject of hoLane1 to voLane1
				Variant voLanes1
				Get ComChildren of hoLane1 to voLanes1
				Handle hoLanes1
				Get Create (RefClass(cComLanes)) to hoLanes1
				Set pvComObject of hoLanes1 to voLanes1
					Set ComCount of hoLanes1 to 2
				Send Destroy to hoLanes1
			Send Destroy to hoLane1
		Send Destroy to hoPool
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Click the pool's header to resize it"
End_Procedure
134
exResizePoolHeader, the user resizes the header's pool from the surface
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 14 ? `exResizePoolHeader` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 14 ? `exResizePoolHeader` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Variant voElement
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComSelected of hoElement to True
		Send Destroy to hoElement
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Click the pool's header to resize it"
End_Procedure
133
exMovePool, The user moves the pool from the surface. The AllowMovePool property specifies the keys combination to allow user to move the pool
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 13 ? `exMovePool` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 13 ? `exMovePool` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Variant voElement
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComSelected of hoElement to True
		Send Destroy to hoElement
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Click a pool and drag to reposition it"
End_Procedure
132
exResizePool, The user resizes the pool from the surface. The AllowResizePool property specifies the keys combination to allow user to resize the pool
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 12 ? `exResizePool` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 12 ? `exResizePool` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Variant voElement
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComSelected of hoElement to True
		Send Destroy to hoElement
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Resize a pool"
End_Procedure
131
exCreatePool, The user creates pools on the surface. The AllowCreatePool property specifies the keys combination to allow user to create pools on the surface
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 11 ? `exCreatePool` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 11 ? `exCreatePool` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Variant voElement
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComSelected of hoElement to True
		Send Destroy to hoElement
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Hold SHIFT, double-click on the surface, and immediately drag to a new position to create a new pool"
End_Procedure
130
exDesignMode, The user changes the surface's design mode. The exDesignMode operation occurs, when the user selects a new design-mode, from the control's toolbar.
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 10 ? `exDesignMode` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 10 ? `exDesignMode` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Variant voElement
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComSelected of hoElement to True
		Send Destroy to hoElement
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Click the Design Menu and select one of the options"
End_Procedure
129
exUndo, An Undo operation is performed (CTR + Z), exRedo, A Redo operation is performed (CTR + Y). exUndoRedoUpdate, The Undo/Redo queue is updated
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value case (default:value;32:`exUndoRedoUpdate`;33:`exUndo`;34:`exRedo`)",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value case (default:value;32:`exUndoRedoUpdate`;33:`exUndo`;34:`exRedo`)",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowUndoRedo to True
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Press CTRL+Z to Undo, CTRL+Y to Redo"
End_Procedure
128
exLinkObjects, the user creates an element on the surface. The AllowLinkObjects property specifies the keys combination to allow user to link elements on the surface
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 9 ? `exLinkObjects` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 9 ? `exLinkObjects` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Send ComEndUpdate
	Showln "Hold SHIFT, click an element, and drag to another element to create a link between them"
End_Procedure
127
exEditObject, the user edits the element's caption
// Occurs when the user presses and then releases the left mouse button over the control.
Procedure OnComClick 
	Forward Send OnComClick 
	// ElementFromPoint(-1,-1).Edit(0)
End_Procedure

// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 8 ? `exEditObject` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 8 ? `exEditObject` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Click an element to edit its caption"
End_Procedure
126
exCreateObject, the user creates an element on the surface. The AllowCreateObject property specifies the keys combination to allow user to create elements on the surface
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 7 ? `exCreateObject` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 7 ? `exCreateObject` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Variant voElement
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComSelected of hoElement to True
		Send Destroy to hoElement
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Double-click on the surface and immediately drag to a new position to create an element"
End_Procedure
125
exSelectNothing, the user clicks an empty zone of the surface. The AllowSelectNothing property specifies the keys combination to allow user to select nothing on the surface
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 6 ? `exSelectNothing` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 6 ? `exSelectNothing` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowSelectNothing to True
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Variant voElement
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComSelected of hoElement to True
		Send Destroy to hoElement
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Select an element, and then click outside to select nothing"
End_Procedure
124
exSelectElement, the user clicks the object to get it selected. The AllowSelectObject property specifies the keys combination to allow user to select the object
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 5 ? `exSelectElement` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 5 ? `exSelectElement` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Hold ALT and click, then drag to select elements within the drawn rectangle. Click an element to select it. CTRL + CLick to unselect it"
End_Procedure
123
exMoveElement, the user moves the object. The AllowMoveObject property specifies the keys combination to allow user to move the object
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 4 ? `exMoveElement` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 4 ? `exMoveElement` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Move an element"
End_Procedure
122
exResizeElement, the user resizes the object. The AllowResizeObject property specifies the keys combination to allow user to resize the object
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 3 ? `exResizeElement` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 3 ? `exResizeElement` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Variant voElement
		Get ComAdd of hoElements "Node <b>1" -64 -64 to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComAutoSize of hoElement to False
		Send Destroy to hoElement
		Variant voElement1
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to voElement1
		Handle hoElement1
		Get Create (RefClass(cComElement)) to hoElement1
		Set pvComObject of hoElement1 to voElement1
			Set ComAutoSize of hoElement1 to False
		Send Destroy to hoElement1
		Variant voElement2
		Get ComAdd of hoElements "Node <b>3" 64 -64 to voElement2
		Handle hoElement2
		Get Create (RefClass(cComElement)) to hoElement2
		Set pvComObject of hoElement2 to voElement2
			Set ComAutoSize of hoElement2 to False
		Send Destroy to hoElement2
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Resize an element"
End_Procedure
121
exSurfaceHome, the user clicks the Home button on the control's toolbar, so the surface is restored to original position. The Home method has the same effect
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 2 ? `exSurfaceHome` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 2 ? `exSurfaceHome` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Click the Home button"
End_Procedure
120
exSurfaceZoom, the user magnifies or shrinks the surface. The AllowZoomSurface property specifies the keys combination to allow user to zoom the surface
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 1 ? `exSurfaceZoom` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 1 ? `exSurfaceZoom` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Click and drag the surface to reposition it"
End_Procedure
119
exSurfaceMove, the user scrolls or moves the surface. The AllowMoveSurface property specifies the keys combination to allow user to move / scroll the surface
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" (ComFormatABC(Self,"value = 0 ? `exSurfaceMove` : value",llOperation,Nothing,Nothing))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" (ComFormatABC(Self,"value = 0 ? `exSurfaceMove` : value",llOperation,Nothing,Nothing))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
	Showln "Click and drag the surface to reposition it"
End_Procedure
118
FormatABC method formats the A,B,C values based on the giving expression and returns the result
Procedure OnCreate
	Forward Send OnCreate
	Showln (ComFormatABC(Self,"value format ``",1000,Nothing,Nothing))
End_Procedure
117
FreezeEvents(Freeze) method prevents firing any event. For instance, FreezeEvents(True) freezes the control's events, no no event is fired, until the FreezeEvents(False) is called
// Notifies the application once the control fires an event.
Procedure OnComEvent Integer   llEventID
	Forward Send OnComEvent llEventID
	Showln (ComEventParam(Self,-2))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComFreezeEvents True
	Showln "No event is fired after FreezeEvents(True) call"
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
End_Procedure
116
The exAllowChangeFrom(0x20)/exAllowChangeTo(0x40) flag of LinkControlPointEnum type allows the user to adjust the link's from/to element by dragging and dropping the start control point (requires the exStartControlPoint/exEndControlPoint flag)
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" llOperation
	Variant v
	Variant voLink
	Get ComFocusLink to voLink
	Handle hoLink
	Get Create (RefClass(cComLink)) to hoLink
	Set pvComObject of hoLink to voLink
		Get ComID of hoLink to v
	Send Destroy to hoLink
	Showln v
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" llOperation
	Variant v1
	Variant voLink1
	Get ComFocusLink to voLink1
	Handle hoLink1
	Get Create (RefClass(cComLink)) to hoLink1
	Set pvComObject of hoLink1 to voLink1
		Get ComID of hoLink1 to v1
	Send Destroy to hoLink1
	Showln v1
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Node <b>3" 64 -64 to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Set ComFocusLink to "L1"
	Send ComEndUpdate
End_Procedure
115
The LayoutStartChanging(exFocusLink)/LayoutEndChanging(exFocusLink) event notifies your application when the user focuses on a new link
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" llOperation
	Showln (ComFocusLink(Self))
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" llOperation
	Showln (ComFocusLink(Self))
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Send ComEndUpdate
End_Procedure
114
Focus a link
// Notifies your application once the control's layout has been changed.
Procedure OnComLayoutEndChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutEndChanging llOperation
	Showln "LayoutEndChanging" llOperation
End_Procedure

// Occurs when the control's layout is about to be changed.
Procedure OnComLayoutStartChanging OLELayoutChangingEnum   llOperation
	Forward Send OnComLayoutStartChanging llOperation
	Showln "LayoutStartChanging" llOperation
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Node <b>1" -64 -64 to Nothing
		Get ComAdd of hoElements "Node <b>2" Nothing Nothing to Nothing
	Send Destroy to hoElements
	Variant voPools
	Get ComPools to voPools
	Handle hoPools
	Get Create (RefClass(cComPools)) to hoPools
	Set pvComObject of hoPools to voPools
		Get ComAdd of hoPools -100 -100 250 160 to Nothing
	Send Destroy to hoPools
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
		Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
		Get ComAdd of hoLinks vFrom vTo "L1" to Nothing
	Send Destroy to hoLinks
	Set ComFocusLink to "L1"
	Send ComEndUpdate
End_Procedure
113
The caption is displayed on the back, so the picture overrides it. How can I place the caption on the foreground

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComDrawPartsOrder to "extracaption,extrapicture,picture,check,caption,client"
	Set ComHTMLPicture "pic1" to "c:\exontrol\images\sun.png"
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Variant voElement
		Get ComAdd of hoElements "<b>Element" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComPicturesAlign of hoElement to OLEexMiddleCenter
			Set ComCaptionAlign of hoElement to OLEexMiddleCenter
			Set ComPictures of hoElement to "pic1"
		Send Destroy to hoElement
	Send Destroy to hoElements
	Send ComEndUpdate
End_Procedure
112
Expandable-caption

// Occurs when an anchor element is clicked.
Procedure OnComAnchorClick String   llAnchorID String   llOptions
	Forward Send OnComAnchorClick llAnchorID llOptions
	Showln llAnchorID
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Variant voElement
		Get ComAdd of hoElements "<solidline> <c><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;e64=gA8ABzABvABsABpABkg8JABuABlAAgAA4AAwisXjMYH0TAECMYAjsCMwAM4AkMGhEGOUei0Yl8bkQAOAAlsGmsSlp0h0SgkCF8DgsNhUMhEKiESkYAoMlk8phssmcCltLMNTAFOlFDlc2l0amMxjomAAjAA5AA2tMaHcfplZk1blVDqtuoNXjoAAEBA=>▲</a><br><solidline>+ balance: Currency = 0</solidline><br>+ deposit(amount: Currency)<r><a 2;e64=gA8ABjAA+AECMwAM8DABvABshoAOQAEAAHAAGEWjEajMGNoAMoAOgANERMgAOcHAAvAEJhcEh0Qh0Tg0CmkqMMFlUuhkxiMTisXjNCjk6EwAEYAHIAG1MjY7lUsnkwh8/nUClk5gwAAEBA==>▲</a><br>+ withdraw(amount: Currency)" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComID of hoElement to "Account"
			Set ComX of hoElement to -256
			Set ComY of hoElement to -164
			Set ComCaptionSingleLine of hoElement to OLEexCaptionBreakWrap
			Set ComCaptionAlign of hoElement to |CI$4
		Send Destroy to hoElement
	Send Destroy to hoElements
	Variant voElements1
	Get ComElements to voElements1
	Handle hoElements1
	Get Create (RefClass(cComElements)) to hoElements1
	Set pvComObject of hoElements1 to voElements1
		Variant voElement1
		Get ComAdd of hoElements1 "<solidline> <c><b>Person</b></solidline><br>+ name: String <r><a 1;e64=gA8ABzABvABsABpABkg8JABuABlAAgAA4AAwisXjMYH0TAECMYAjsCMwAM4AkMGhEGOUei0Yl8bkQAOAAlsGmsSlp0h0SgkCF8DgsNhUMhEKiESkYAoMlk8phssmcCltLMNTAFOlFDlc2l0amMxjomAAjAA5AA2tMaHcfplZk1blVDqtuoNXjoAAEBA=>▲</a><br><solidline># birth: Date</solidline><br>+ getCurrentAge(): int<r><a 2;e64=gA8ABjAA+AECMwAM8DABvABshoAOQAEAAHAAGEWjEajMGNoAMoAOgANERMgAOcHAAvAEJhcEh0Qh0Tg0CmkqMMFlUuhkxiMTisXjNCjk6EwAEYAHIAG1MjY7lUsnkwh8/nUClk5gwAAEBA==>▲</a>" Nothing Nothing to voElement1
		Handle hoElement1
		Get Create (RefClass(cComElement)) to hoElement1
		Set pvComObject of hoElement1 to voElement1
			Set ComID of hoElement1 to "Person"
			Set ComY of hoElement1 to -164
			Set ComCaptionSingleLine of hoElement1 to OLEexCaptionBreakWrap
		Send Destroy to hoElement1
	Send Destroy to hoElements1
	Variant voElements2
	Get ComElements to voElements2
	Handle hoElements2
	Get Create (RefClass(cComElements)) to hoElements2
	Set pvComObject of hoElements2 to voElements2
		Variant voElement2
		Get ComAdd of hoElements2 "<solidline> <c><b>Student</b></solidline><br><solidline>+ classes: List<Course> <r><a 1;e64=gA8ABzABvABsABpABkg8JABuABlAA+AAgAECMcTi4AMwAM4AjMGhEGOUVAA4AAwk8plcqihwAElg0wiUlOkOiUEgQvgcFhsKhkIhUQiUUnccj0gn0jmMagUlowAMNOpEfkMNkkmlEqrctjQmAAjAA5AA2sssHcbnkdq1Ln1QtVSjQAAEBA==>▲</a></solidline><br>- attend(class: Course)<r><a 2;e64=gA8ABjAA+AECMwAM8DABvABshoAOQAEAAHAAGEWjEajMGNoAMoAOgANERMgAOcHAAvAEJhcEh0Qh0Tg0CmkqMMFlUuhkxiMTisXjNCjk6EwAEYAHIAG1MjY7lUsnkwh8/nUClk5gwAAEBA==>▲</a><br>- sleep()" Nothing Nothing to voElement2
		Handle hoElement2
		Get Create (RefClass(cComElement)) to hoElement2
		Set pvComObject of hoElement2 to voElement2
			Set ComID of hoElement2 to "Student"
			Set ComY of hoElement2 to -64
			Set ComCaptionSingleLine of hoElement2 to OLEexCaptionBreakWrap
		Send Destroy to hoElement2
	Send Destroy to hoElements2
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
Variant vFrom
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 "Account" to vFrom
			Send Destroy to hoElements3
Variant vTo
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 "Student" to vTo
			Send Destroy to hoElements4
				Variant voLink
		Get ComAdd of hoLinks vFrom vTo Nothing to voLink
		Handle hoLink
		Get Create (RefClass(cComLink)) to hoLink
		Set pvComObject of hoLink to voLink
			Set ComCaption of hoLink to "<fgcolor A0A0A0><solidline 808080> <c><b>Link</b></solidline><br># count: number <r><a ;exp=12992>➤</a>"
		Send Destroy to hoLink
	Send Destroy to hoLinks
End_Procedure
111
Expandable-caption

Procedure OnCreate
	Forward Send OnCreate
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Variant voElement
		Get ComAdd of hoElements "<solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComCaptionSingleLine of hoElement to OLEexCaptionBreakWrap
		Send Destroy to hoElement
	Send Destroy to hoElements
End_Procedure
110
Draws a frame arround the link's arrow

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (|CI$ffffff80 + OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexOrthoArrange + OLEexMiddleControlPoint + OLEexControlPoint + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Element <sha ;;0>A" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 164 64 to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 0 132 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
				Variant voLink
		Get ComAdd of hoLinks vFrom vTo Nothing to voLink
		Handle hoLink
		Get Create (RefClass(cComLink)) to hoLink
		Set pvComObject of hoLink to voLink
			Set ComCustomPath of hoLink to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink
Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
				Variant voLink1
		Get ComAdd of hoLinks vFrom1 vTo1 Nothing to voLink1
		Handle hoLink1
		Get Create (RefClass(cComLink)) to hoLink1
		Set pvComObject of hoLink1 to voLink1
			Set ComCustomPath of hoLink1 to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink1
Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 3 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
				Variant voLink2
		Get ComAdd of hoLinks vFrom2 vTo2 Nothing to voLink2
		Handle hoLink2
		Get Create (RefClass(cComLink)) to hoLink2
		Set pvComObject of hoLink2 to voLink2
			Set ComShowLinkType of hoLink2 to OLEexLinkRound
			Set ComStartPos of hoLink2 to OLELeftAlignment
			Set ComArrowSize of hoLink2 to 8
			Set ComArrowColor of hoLink2 to (RGB(255,255,255))
			Set ComArrowFrameColor of hoLink2 to (RGB(0,0,0))
		Send Destroy to hoLink2
	Send Destroy to hoLinks
	Send ComFitToClient
	Send ComEndUpdate
End_Procedure
109
Draws a frame arround the arrow for all links

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (|CI$ffffff80 + OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexOrthoArrange + OLEexMiddleControlPoint + OLEexControlPoint + OLEexEndControlPoint + OLEexStartControlPoint)
	Set ComLinksArrowSize to 8
	Set ComLinksArrowColor to (RGB(255,255,255))
	Set ComLinksArrowFrameColor to (RGB(0,0,0))
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Element <sha ;;0>A" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 164 64 to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 0 132 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
				Variant voLink
		Get ComAdd of hoLinks vFrom vTo Nothing to voLink
		Handle hoLink
		Get Create (RefClass(cComLink)) to hoLink
		Set pvComObject of hoLink to voLink
			Set ComCustomPath of hoLink to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink
Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
				Variant voLink1
		Get ComAdd of hoLinks vFrom1 vTo1 Nothing to voLink1
		Handle hoLink1
		Get Create (RefClass(cComLink)) to hoLink1
		Set pvComObject of hoLink1 to voLink1
			Set ComCustomPath of hoLink1 to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink1
Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 3 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
				Variant voLink2
		Get ComAdd of hoLinks vFrom2 vTo2 Nothing to voLink2
		Handle hoLink2
		Get Create (RefClass(cComLink)) to hoLink2
		Set pvComObject of hoLink2 to voLink2
			Set ComShowLinkType of hoLink2 to OLEexLinkRound
			Set ComStartPos of hoLink2 to OLELeftAlignment
		Send Destroy to hoLink2
	Send Destroy to hoLinks
	Send ComFitToClient
	Send ComEndUpdate
End_Procedure
108
Change the size to display the arrow of the link

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (|CI$ffffff80 + OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexOrthoArrange + OLEexMiddleControlPoint + OLEexControlPoint + OLEexEndControlPoint + OLEexStartControlPoint)
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Element <sha ;;0>A" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 164 64 to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 0 132 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
				Variant voLink
		Get ComAdd of hoLinks vFrom vTo Nothing to voLink
		Handle hoLink
		Get Create (RefClass(cComLink)) to hoLink
		Set pvComObject of hoLink to voLink
			Set ComCustomPath of hoLink to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink
Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
				Variant voLink1
		Get ComAdd of hoLinks vFrom1 vTo1 Nothing to voLink1
		Handle hoLink1
		Get Create (RefClass(cComLink)) to hoLink1
		Set pvComObject of hoLink1 to voLink1
			Set ComCustomPath of hoLink1 to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink1
Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 3 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
				Variant voLink2
		Get ComAdd of hoLinks vFrom2 vTo2 Nothing to voLink2
		Handle hoLink2
		Get Create (RefClass(cComLink)) to hoLink2
		Set pvComObject of hoLink2 to voLink2
			Set ComShowLinkType of hoLink2 to OLEexLinkRound
			Set ComStartPos of hoLink2 to OLELeftAlignment
			Set ComArrowSize of hoLink2 to 8
		Send Destroy to hoLink2
	Send Destroy to hoLinks
	Send ComFitToClient
	Send ComEndUpdate
End_Procedure
107
Change the size to display the arrows for all links

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Set ComAllowLinkControlPoint to (|CI$ffffff80 + OLEexAllowChangeTo + OLEexAllowChangeFrom + OLEexOrthoArrange + OLEexMiddleControlPoint + OLEexControlPoint + OLEexEndControlPoint + OLEexStartControlPoint)
	Set ComLinksArrowSize to 8
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Get ComAdd of hoElements "Element <sha ;;0>A" Nothing Nothing to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 164 64 to Nothing
		Get ComAdd of hoElements "Element <sha ;;0>B" 0 132 to Nothing
	Send Destroy to hoElements
	Variant voLinks
	Get ComLinks to voLinks
	Handle hoLinks
	Get Create (RefClass(cComLinks)) to hoLinks
	Set pvComObject of hoLinks to voLinks
Variant vFrom
			Variant voElements1
			Get ComElements to voElements1
			Handle hoElements1
			Get Create (RefClass(cComElements)) to hoElements1
			Set pvComObject of hoElements1 to voElements1
				Get ComItem of hoElements1 1 to vFrom
			Send Destroy to hoElements1
Variant vTo
			Variant voElements2
			Get ComElements to voElements2
			Handle hoElements2
			Get Create (RefClass(cComElements)) to hoElements2
			Set pvComObject of hoElements2 to voElements2
				Get ComItem of hoElements2 2 to vTo
			Send Destroy to hoElements2
				Variant voLink
		Get ComAdd of hoLinks vFrom vTo Nothing to voLink
		Handle hoLink
		Get Create (RefClass(cComLink)) to hoLink
		Set pvComObject of hoLink to voLink
			Set ComCustomPath of hoLink to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink
Variant vFrom1
			Variant voElements3
			Get ComElements to voElements3
			Handle hoElements3
			Get Create (RefClass(cComElements)) to hoElements3
			Set pvComObject of hoElements3 to voElements3
				Get ComItem of hoElements3 3 to vFrom1
			Send Destroy to hoElements3
Variant vTo1
			Variant voElements4
			Get ComElements to voElements4
			Handle hoElements4
			Get Create (RefClass(cComElements)) to hoElements4
			Set pvComObject of hoElements4 to voElements4
				Get ComItem of hoElements4 2 to vTo1
			Send Destroy to hoElements4
				Variant voLink1
		Get ComAdd of hoLinks vFrom1 vTo1 Nothing to voLink1
		Handle hoLink1
		Get Create (RefClass(cComLink)) to hoLink1
		Set pvComObject of hoLink1 to voLink1
			Set ComCustomPath of hoLink1 to "0.5,0.25,0.5,.75"
		Send Destroy to hoLink1
Variant vFrom2
			Variant voElements5
			Get ComElements to voElements5
			Handle hoElements5
			Get Create (RefClass(cComElements)) to hoElements5
			Set pvComObject of hoElements5 to voElements5
				Get ComItem of hoElements5 3 to vFrom2
			Send Destroy to hoElements5
Variant vTo2
			Variant voElements6
			Get ComElements to voElements6
			Handle hoElements6
			Get Create (RefClass(cComElements)) to hoElements6
			Set pvComObject of hoElements6 to voElements6
				Get ComItem of hoElements6 1 to vTo2
			Send Destroy to hoElements6
				Variant voLink2
		Get ComAdd of hoLinks vFrom2 vTo2 Nothing to voLink2
		Handle hoLink2
		Get Create (RefClass(cComLink)) to hoLink2
		Set pvComObject of hoLink2 to voLink2
			Set ComShowLinkType of hoLink2 to OLEexLinkRound
			Set ComStartPos of hoLink2 to OLELeftAlignment
		Send Destroy to hoLink2
	Send Destroy to hoLinks
	Send ComFitToClient
	Send ComEndUpdate
End_Procedure
106
Extends the caption on the element's width

Procedure OnCreate
	Forward Send OnCreate
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Variant voElement
		Get ComAdd of hoElements "<solidline> <c><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;e64=gA8ABzABvABsABpABkg8JABuABlAAgAA4AAwisXjMYH0TAECMYAjsCMwAM4AkMGhEGOUei0Yl8bkQAOAAlsGmsSlp0h0SgkCF8DgsNhUMhEKiESkYAoMlk8phssmcCltLMNTAFOlFDlc2l0amMxjomAAjAA5AA2tMaHcfplZk1blVDqtuoNXjoAAEBA=>▲</a><br><solidline>+ balance: Currency = 0</solidline><br>+ deposit(amount: Currency)<r><a 2;e64=gA8ABjAA+AECMwAM8DABvABshoAOQAEAAHAAGEWjEajMGNoAMoAOgANERMgAOcHAAvAEJhcEh0Qh0Tg0CmkqMMFlUuhkxiMTisXjNCjk6EwAEYAHIAG1MjY7lUsnkwh8/nUClk5gwAAEBA==>▲</a><br>+ withdraw(amount: Currency)" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComID of hoElement to "Account"
			Set ComX of hoElement to -128
			Set ComCaptionSingleLine of hoElement to OLEexCaptionBreakWrap
			Set ComAutoSize of hoElement to False
			Set ComWidth of hoElement to 256
			Set ComHeight of hoElement to (ComAutoHeight(hoElement))
			Set ComCaptionAlign of hoElement to |CI$4
		Send Destroy to hoElement
	Send Destroy to hoElements
End_Procedure
105
Gets the width/height of the element to fit its content ( as if the AutoSize property is True )

// Occurs when an anchor element is clicked.
Procedure OnComAnchorClick String   llAnchorID String   llOptions
	Forward Send OnComAnchorClick llAnchorID llOptions
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Variant voElement
		Get ComItem of hoElements "Account" to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComHeight of hoElement to (ComAutoHeight(hoElement))
		Send Destroy to hoElement
	Send Destroy to hoElements
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Variant voElements1
	Get ComElements to voElements1
	Handle hoElements1
	Get Create (RefClass(cComElements)) to hoElements1
	Set pvComObject of hoElements1 to voElements1
		Variant voElement1
		Get ComAdd of hoElements1 "<solidline> <c><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;e64=gA8ABzABvABsABpABkg8JABuABlAAgAA4AAwisXjMYH0TAECMYAjsCMwAM4AkMGhEGOUei0Yl8bkQAOAAlsGmsSlp0h0SgkCF8DgsNhUMhEKiESkYAoMlk8phssmcCltLMNTAFOlFDlc2l0amMxjomAAjAA5AA2tMaHcfplZk1blVDqtuoNXjoAAEBA=>▲</a><br><solidline>+ balance: Currency = 0</solidline><br>+ deposit(amount: Currency)<r><a 2;e64=gA8ABjAA+AECMwAM8DABvABshoAOQAEAAHAAGEWjEajMGNoAMoAOgANERMgAOcHAAvAEJhcEh0Qh0Tg0CmkqMMFlUuhkxiMTisXjNCjk6EwAEYAHIAG1MjY7lUsnkwh8/nUClk5gwAAEBA==>▲</a><br>+ withdraw(amount: Currency)" Nothing Nothing to voElement1
		Handle hoElement1
		Get Create (RefClass(cComElement)) to hoElement1
		Set pvComObject of hoElement1 to voElement1
			Set ComID of hoElement1 to "Account"
			Set ComX of hoElement1 to -128
			Set ComCaptionSingleLine of hoElement1 to OLEexCaptionBreakWrap
			Set ComAutoSize of hoElement1 to False
			Set ComWidth of hoElement1 to 256
			Set ComHeight of hoElement1 to (ComAutoHeight(hoElement1))
			Set ComCaptionAlign of hoElement1 to |CI$4
		Send Destroy to hoElement1
	Send Destroy to hoElements1
End_Procedure
104
Fullfit the caption on the element's width

Procedure OnCreate
	Forward Send OnCreate
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Variant voElement
		Get ComAdd of hoElements "<solidline><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;properties>+</a><br><solidline>+ balance: Currency = 0</solidline><br>+ deposit(amount: Currency)<r><a 2;methods>+</a><br>+ withdraw(amount: Currency)" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComCaptionSingleLine of hoElement to OLEexCaptionBreakWrap
			Set ComBackColor of hoElement to (RGB(248,248,248))
			Set ComAutoSize of hoElement to False
			Set ComWidth of hoElement to 194
			Set ComHeight of hoElement to 76
			Set ComCaptionAlign of hoElement to |CI$4
		Send Destroy to hoElement
	Send Destroy to hoElements
End_Procedure
103
Wrap the caption by <br> or "\r\n" sequence only

Procedure OnCreate
	Forward Send OnCreate
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Variant voElement
		Get ComAdd of hoElements "<solidline><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;properties>+</a><br><solidline>+ balance: Currency = 0</solidline><br>+ deposit(amount: Currency)<r><a 2;methods>+</a><br>+ withdraw(amount: Currency)" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComCaptionSingleLine of hoElement to OLEexCaptionBreakWrap
			Set ComBackColor of hoElement to (RGB(248,248,248))
		Send Destroy to hoElement
	Send Destroy to hoElements
End_Procedure
102
Display a custom tooltip
// Occurs when the user moves the mouse.
Procedure OnComMouseMove Short   llButton Short   llShift OLE_XPOS_PIXELS   llX OLE_YPOS_PIXELS   llY
	Forward Send OnComMouseMove llButton llShift llX llY
	Send ComShowToolTip "new content" "" "+8" "+8"
End_Procedure


101
Shows the tooltip of the object moved relative to its default position
// Occurs when the user moves the mouse.
Procedure OnComMouseMove Short   llButton Short   llShift OLE_XPOS_PIXELS   llX OLE_YPOS_PIXELS   llY
	Forward Send OnComMouseMove llButton llShift llX llY
	Send ComShowToolTip "<null>" "<null>" "+8" "+8"
End_Procedure

Procedure OnCreate
	Forward Send OnCreate
	Variant voElements
	Get ComElements to voElements
	Handle hoElements
	Get Create (RefClass(cComElements)) to hoElements
	Set pvComObject of hoElements to voElements
		Variant voElement
		Get ComAdd of hoElements "Element with a Tooltip" Nothing Nothing to voElement
		Handle hoElement
		Get Create (RefClass(cComElement)) to hoElement
		Set pvComObject of hoElement to voElement
			Set ComToolTip of hoElement to "This is a bit of text that should be displayed when cursor hovers the element."
		Send Destroy to hoElement
	Send Destroy to hoElements
End_Procedure