Exontrol.ExSwimlane - Information, Features

ExSwimlane

The eXSwimlane lets you draw swim lane diagrams. A swim lane (or swimlane diagram) is a visual element used in process flow diagrams, or flowcharts, that visually distinguishes job sharing and responsibilities for sub-processes of a business process. Swim lanes may be arranged either horizontally or vertically. The ExSwimlane library lets the user changes its visual appearance using skins, each one providing an additional visual experience that enhances viewing pleasure.

Features include:

  • Skinnable Interface support ( ability to apply a skin to any background part )
  • Auto-Arrange support, or ability to automatically arrange horizontally or vertically the elements on the surface based on their relations, so they won't intersect one with another as much as possible
  • Print and Print - Preview support, Fit-To-Pages Wide By Tall, ...
  • Easy way to define the control's visual appearance in design mode, using XP-Theme elements or EBN objects
  • Zooming, Mouse Wheel support
  • Undo/Redo support
  • Drag and Drop support
  • Horizontal and/or Vertical Lanes support
  • Each lane can have child-lanes, sub-lanes, and so on
  • Intuitive Context-Menu support
  • ActiveX-Controls Hosting, Container support
  • Customization/Cross/Junction/Intersection Links Support

® ExSwimlane is a trademark of Exontrol. All Rights Reserved.


Exontrol - Support

How to get support?

To keep your business applications running, you need support you can count on.

Here are few hints what to do when you're stuck on your programming:

  • Check out the samples - they are here to provide some quick info on how things should be done
  • Check out the how-to questions using the eXHelper tool
  • Check out the help - includes documentation for each method, property or event
  • Check out if you have the latest version, and if you don't have it send an update request here.
  • Submit your problem(question) here.

Don't forget that you can contact our development team if you have ideas or requests for new components, by sending us an e-mail at support@exontrol.com ( please include the name of the product in the subject, ex: exgrid ) . We're sure our team of developers will try to find a way to make you happy - and us too, since we helped.

Regards,
Exontrol Development Team

https://www.exontrol.com


constants AlignmentEnum
The AlignmentEnum type specifies the object's alignment. The AlignmentEnum type supports the following values:

Name | Value | Description
LeftAlignment | 0 | Left Alignment
CenterAlignment | 1 | Center Alignment
RightAlignment | 2 | Right Alignment
UpAlignment | 3 | Up Alignment
DownAlignment | 4 | Down Alignment


constants AlignObjectsToGridLinesEnum
The AlignObjectsToGridLinesEnum type specifies how the objects are aligned to none, minor or major gird lines. The AlignObjectsToGridLines property specifies the way the objects are aligned to the control's grid lines. The AlignObjectsToGridLinesEnum type supports the following values:

Name | Value | Description
exAlignObjectsToNone | 0 | No alignment is performed.
exAlignObjectsToMinor | -1 | The objects are aligned to minor grid lines.
exAlignObjectsToMajor | 1 | The objects are aligned to major grid lines.


constants AllowDesignHeaderEnum
The AllowDesignHeaderEnum type indicates the way the user can allow design the lane/header. The AllowDesignHeader property on exDesignHeaderLock, specifies that no context-menu is allowed when user hovers the lane/header. The DesignMode property determines the control's design mode. The control's design-mode is locked, while the DesignMode property is exDesignLock. While un-locking, the header of the pool shows the parent's header as well, so you can add/remove lanes/phases. The AllowDesignHeaderEnum type supports the following values:

Name | Value | Description
exDesignHeaderLock | 0 | Indicates that no context-menu is shown when the cursor hovers the lane/header. Use the ContextMenu property to provide a custom context menu for the objects on the surface.
exDesignHeaderDefault | 1 | The design-header ( parent-header ) is shown when the user hovers the header. While DesignMode property does not include the exDesignPools, no design-header ( parent-header ) is shown.
exDesignHeaderFull | 2 | The design-header ( parent-header ) is always shown, while DesignMode property does not include the exDesignPools.
exDesignHeaderFullHover | 3 | The design-header ( parent-header ) is shown when the user hovers the header. While DesignMode property does not include the exDesignPools, no design-header ( parent-header ) is shown.
exDesignHeaderSingle | 4 | The pool shows its headers as a single-level header, and changing is performed on the root lane only. By default, the pool's header looks as: while if AllowDesignHeader property is exDesignHeaderSingle, the pool's header shows as follows:


constants AllowKeysEnum
The AllowKeysEnum type specifies the keys to be combined in order to start an UI operation. For instance, the AllowCreateElement property of AllowKeysEnum type indicates the keys combination to let user creates a new element at runtime. By default, this property is set on exLeftClick + exDblClick, which means the user is able to create a new element by double left click. If this property is set on exRightClick + exCRTLKey the user should press the CTRL key while right clicking the control to start creating a new element. If the exDblClick flag is included, the user requires to do a double click instead single click to perform the operation. The exDisallow flag indicates that the operation is not allowed.

The AllowKeysEnum type supports the following values:

Name | Value | Description
exDisallow | 0 | The operation is not allowed.
exLeftClick | 1 | The operation starts once the user clicks the left mouse button.
exRightClick | 2 | The operation starts if the user clicks the right mouse button.
exMiddleClick | 3 | The operation starts if the user clicks the middle mouse button.
exSHIFTKey | 8 | The operation may start only if the user presses the SHIFT key.
exCTRLKey | 16 | The operation may start only if the user presses the CTRL key.
exALTKey | 32 | The operation may start only if the user presses the ALT key.
exDblClick | 64 | The operation starts only if the user double clicks, instead single click.


constants AppearanceEnum
The AppearanceEnum enumeration is used to specify the appearance of the control's border.

Name | Value | Description
None2 | 0 | No border
Flat | 1 | Flat border
Sunken | 2 | Sunken border
Raised | 3 | Raised border
Etched | 4 | Etched border
Bump | 5 | Bump border


constants BackgroundExtPropertyEnum
The BackgroundExtPropertyEnum type specifies the UI properties of the part of the EBN you can access/change at runtime. The BodyBackgroundExt property specifies the EBN String format to be displayed on the element's background. The BackgroundExtValue property access the value of the giving property for specified part of the EBN. The BackgroundExtPropertyEnum type supports the following values:

Name Value Description
exToStringExt 0 Specifies the part's ToString representation. The BodyBackgroundExt property specifies the EBN String format to be displayed on the object's background. The Exontrol's eXButton WYSWYG Builder helps you to generate or view the EBN String Format, in the To String field.

Sample:

"client(right[18](bottom[18,pattern=6,frame=0,framethick]),bottom[48,align=0x11]),left[18](bottom[18,pattern=6,frame=0,framethick])"

generates the following layout:

where it is applied to an object it looks as follows:

(String expression, read-only).

exBackColorExt 1 Indicates the background color / EBN color to be shown on the part of the object. Sample: 255 indicates red, RGB(0,255,0) green, or 0x1000000.

(Color/Numeric expression, The last 7 bits in the high significant byte of the color indicate the identifier of the skin being used )

exClientExt 2 Specifies the position/size of the object, depending on the object's anchor. The syntax of the exClientExt is related to the exAnchorExt value. For instance, if the object is anchored to the left side of the parent ( exAnchorExt = 1 ), the exClientExt specifies just the width of the part in pixels/percents, not including the position. In case, the exAnchorExt is client, the exClientExt has no effect.

Based on the exAnchorExt value the exClientExt is:

  • 0 (none, the object is not anchored to any side), the format of the exClientExt is "left,top,width,height" ( as string ) where (left,top) margin indicates the position where the part starts, and the (width,height) pair specifies its size. The left, top, width or height could be any expression (+,-,/ or * ) that can include numbers associated with pixels or percents. For instance: "25%,25%,50%,50%" indicates the middle of the parent object, and so when the parent is resized the client is resized accordingly. The "50%-8,50%-8,16,16" value specifies that the size of the object is always 16x16 pixels and positioned on the center of the parent object.
  • 1 (left, the object is anchored to left side of the parent), the format of the exClientExt is width ( string or numeric ) where width indicates the width of the object in pixels, percents or a combination of them using +,-,/ or * operators. For instance: "50%" indicates the half of the parent object, and so when the parent is resized the client is resized accordingly. The 16 value specifies that the size of the object is always 16 pixels.
  • 2 (right, the object is anchored to right side of the parent object), the format of the exClientExt is width ( string or numeric ) where width indicates the width of the object in pixels, percents or a combination of them using +,-,/ or * operators. For instance: "50%" indicates the half of the parent object, and so when the parent is resized the client is resized accordingly. The 16 value specifies that the size of the object is always 16 pixels.
  • 3 (client, the object takes the full available area of the parent), the exClientExt has no effect.
  • 4 (top, the object is anchored to the top side of the parent object), the format of the exClientExt is height ( string or numeric ) where height indicates the height of the object in pixels, percents or a combination of them using +,-,/ or * operators. For instance: "50%" indicates the half of the parent object, and so when the parent is resized the client is resized accordingly. The 16 value specifies that the size of the object is always 16 pixels.
  • 5 (bottom, the object is anchored to bottom side of the parent object), the format of the exClientExt is height ( string or numeric ) where height indicates the height of the object in pixels, percents or a combination of them using +,-,/ or * operators. For instance: "50%" indicates the half of the parent object, and so when the parent is resized the client is resized accordingly. The 16 value specifies that the size of the object is always 16 pixels.

Sample: 50% indicates half of the parent, 25 indicates 25 pixels, or 50%-8 indicates 8-pixels left from the center of the parent.

(String/Numeric expression)
exAnchorExt 3 Specifies the object's alignment relative to its parent.

The valid values for exAnchorExt are:

  • 0 (none), the object is not anchored to any side,
  • 1 (left), the object is anchored to left side of the parent,
  • 2 (right), the object is anchored to right side of the parent object,
  • 3 (client), the object takes the full available area of the parent,
  • 4 (top), the object is anchored to the top side of the parent object,
  • 5 (bottom), the object is anchored to bottom side of the parent object

(Numeric expression)

exTextExt 4 Specifies the HTML text to be displayed on the object.

The exTextExt supports the following built-in HTML tags:

  • <b> ... </b> displays the text in bold
  • <i> ... </i> displays the text in italics
  • <u> ... </u> underlines the text
  • <s> ... </s> Strike-through text
  • <a id;options> ... </a> displays an anchor element that can be clicked. An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link.The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The control fires the AnchorClick(AnchorID, Options) event when the user clicks the anchor element. The FormatAnchor property customizes the visual effect for anchor elements.

    The control supports expandable HTML captions feature which allows you to expand(show)/collapse(hide) different information using <a ;exp=> or <a ;e64=> anchor tags. The exp/e64 field of the anchor stores the HTML line/lines to show once the user clicks/collapses/expands the caption.

    • exp, stores the plain text to be shown once the user clicks the anchor, such as <a ;exp=show lines>
    • e64, encodes in BASE64 the HTML text to be shown once the user clicks the anchor, such as <a ;e64=gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA>+</a> that displays show lines- in gray when the user clicks the + anchor. The gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA string encodes the <fgcolor 808080>show lines<a>-</a></fgcolor> The Decode64Text/Encode64Text methods of the eXPrint can be used to decode/encode e64 fields.

    Any ex-HTML caption can be transformed to an expandable-caption, by inserting the anchor ex-HTML tag. For instance, <solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3 shows the Header in underlined and bold on the first line and Line1, Line2, Line3 on the rest. The show lines is shown instead of Line1, Line2, Line3 once the user clicks the + sign.

  • <font face;size> ... </font> displays portions of text with a different font and/or different size. For instance, the <font Tahoma;12>bit</font> draws the bit text using the Tahoma font, on size 12 pt. If the name of the font is missing, and instead size is present, the current font is used with a different size. For instance, <font ;12>bit</font> displays the bit text using the current font, but with a different size.
  • <fgcolor rrggbb> ... </fgcolor> or <fgcolor=rrggbb> ... </fgcolor> displays text with a specified foreground color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <bgcolor rrggbb> ... </bgcolor> or <bgcolor=rrggbb> ... </bgcolor> displays text with a specified background color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <solidline rrggbb> ... </solidline> or <solidline=rrggbb> ... </solidline> draws a solid-line on the bottom side of the current text-line, of specified RGB color. The <solidline> ... </solidline> draws a black solid-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <dotline rrggbb> ... </dotline> or <dotline=rrggbb> ... </dotline> draws a dot-line on the bottom side of the current text-line, of specified RGB color. The <dotline> ... </dotline> draws a black dot-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <upline> ... </upline> draws the line on the top side of the current text-line (requires <solidline> or <dotline>).
  • <r> right aligns the text
  • <c> centers the text
  • <br> forces a line-break
  • <img>number[:width]</img> inserts an icon inside the text. The number indicates the index of the icon being inserted. Use the Images method to assign a list of icons to your chart. The last 7 bits in the high significant byte of the number expression indicates the identifier of the skin being used to paint the object. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the part. The width is optional and indicates the width of the icon being inserted. Using the width option you can overwrite multiple icons getting a nice effect. By default, if the width field is missing, the width is 18 pixels.
  • <img>key[:width]</img> inserts a custom size picture into the text being previously loaded using the HTMLPicture property. The Key parameter indicates the key of the picture being displayed. The Width parameter indicates a custom size, if you require to stretch the picture, else the original size of the picture is used.
  • & glyph characters as &amp; ( & ), &lt; ( < ), &gt; ( > ), &qout; ( " ) and &#number; ( the character with specified code ), For instance, the &#8364; displays the EUR character. The & ampersand is only recognized as markup when it is followed by a known letter or a #character and a digit. For instance if you want to display <b>bold</b> in HTML caption you can use &lt;b&gt;bold&lt;/b&gt;
  • <off offset> ... </off> defines the vertical offset to display the text/element. The offset parameter defines the offset to display the element. This tag is inheritable, so the offset is keep while the associated </off> tag is found. You can use the <off offset> HTML tag in combination with the <font face;size> to define a smaller or a larger font to be displayed. For instance: Text with <font ;7><off 6>subscript displays the text such as: Text with subscript The Text with <font ;7><off -6>superscript displays the text such as: Text with subscript
  • <gra rrggbb;mode;blend> ... </gra> defines a gradient text. The text color or <fgcolor> defines the starting gradient color, while the rr/gg/bb represents the red/green/blue values of the ending color, 808080 if missing as gray. The mode is a value between 0 and 4, 1 if missing, and blend could be 0 or 1, 0 if missing. The <font> HTML tag can be used to define the height of the font. Any of the rrggbb, mode or blend field may not be specified. The <gra> with no fields, shows a vertical gradient color from the current text color to gray (808080). For instance the <font ;18><gra FFFFFF;1;1>gradient-center</gra></font> generates the following picture:
  • <out rrggbb;width> ... </out> shows the text with outlined characters, where rr/gg/bb represents the red/green/blue values of the outline color, 808080 if missing as gray, width indicates the size of the outline, 1 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><out 000000><fgcolor=FFFFFF>outlined</fgcolor></out></font> generates the following picture:
  • <sha rrggbb;width;offset> ... </sha> define a text with a shadow, where rr/gg/bb represents the red/green/blue values of the shadow color, 808080 if missing as gray, width indicates the size of shadow, 4 if missing, and offset indicates the offset from the origin to display the text's shadow, 2 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><sha>shadow</sha></font> generates the following picture:

    or <font ;31><sha 404040;5;0><fgcolor=FFFFFF>outline anti-aliasing</fgcolor></sha></font> gets:

(String expression)
exTextExtWordWrap 5 Specifies that the object is wrapping the text. The exTextExt value specifies the HTML text to be displayed on the part of the EBN object. This property has effect only if there is a text assigned to the part using the exTextExt flag.

(Boolean expression)
exTextExtAlignment 6 Indicates the alignment of the text on the object. The exTextExt value specifies the HTML text to be displayed on the part of the EBN object. This property has effect only if there is a text assigned to the part using the exTextExt flag.

The valid values for exTextExtAlignment are:

  • 0, ( hexa 0x00, Top-Left ), Text is vertically aligned at the top, and horizontally aligned on the left.
  • 1, ( hexa 0x01, Top-Center ), Text is vertically aligned at the top, and horizontally aligned at the center.
  • 2, ( hexa 0x02, Top-Right ), Text is vertically aligned at the top, and horizontally aligned on the right.
  • 16, ( hexa 0x10, Middle-Left ), Text is vertically aligned in the middle, and horizontally aligned on the left.
  • 17, ( hexa 0x11, Middle-Center ), Text is vertically aligned in the middle, and horizontally aligned at the center.
  • 18, ( hexa 0x12, Middle-Right ), Text is vertically aligned in the middle, and horizontally aligned on the right.
  • 32, ( hexa 0x20, Bottom-Left ), Text is vertically aligned at the bottom, and horizontally aligned on the left.
  • 33, ( hexa 0x21, Bottom-Center ), Text is vertically aligned at the bottom, and horizontally aligned at the center.
  • 34, ( hexa 0x22, Bottom-Right ), Text is vertically aligned at the bottom, and horizontally aligned on the right.

(Numeric expression)
exPatternExt 7 Indicates the pattern to be shown on the object. The exPatternColorExt specifies the color to show the pattern.

The valid values for exPatternExt are:

  • 0, ( hexa 0x000, Empty ), The pattern is not visible
  • 1, ( hexa 0x001, Solid ),
  • 2, ( hexa 0x002, Dot ),
  • 3, ( hexa 0x003, Shadow ),
  • 4, ( hexa 0x004, NDot ),
  • 5, ( hexa 0x005, FDiagonal ),
  • 6, ( hexa 0x006, BDiagonal ),
  • 7, ( hexa 0x007, DiagCross ),
  • 8, ( hexa 0x008, Vertical ),
  • 9, ( hexa 0x009, Horizontal ),
  • 10, ( hexa 0x00A, Cross ),
  • 11, ( hexa 0x00B, Brick ),
  • 12, ( hexa 0x00C, Yard ),
  • 256, ( hexa 0x100, Frame ), [image] . The exFrameColorExt specifies the color to show the frame. The Frame flag can be combined with any other flags.
  • 768, ( hexa 0x300, FrameThick ), [image] . The exFrameColorExt specifies the color to show the frame. The Frame flag can be combined with any other flags.

(Numeric expression)
exPatternColorExt 8 Indicates the color to show the pattern on the object. The exPatternColorExt property has effect only if the exPatternExt property is not 0 ( empty ). The exFrameColorExt specifies the color to show the frame ( the exPatternExt property includes the exFrame or exFrameThick flag )

(Color expression)
exFrameColorExt 9 Indicates the color to show the border-frame on the object. This property set the Frame flag for exPatternExt property.

(Color expression)
exFrameThickExt 10 Specifies that a thick-frame is shown around the object. This property set the FrameThick flag for exPatternExt property.

(Boolean expression)
exUserDataExt 11 Specifies an extra-data associated with the object.

(Variant expression)


constants BackgroundPartEnum
The BackgroundPartEnum type indicates parts in the control. Use the Background property to specify a background color or a visual appearance for specific parts in the control. A Color expression that indicates the background color for a specified part. The last 7 bits in the high significant byte of the color to indicates the identifier of the skin being used. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the background's part

Name | Value | Description
exToolTipAppearance | 64 | Indicates the visual appearance of the borders of the tooltips. Use the ToolTipPopDelay property specifies the period in ms of time the ToolTip remains visible if the mouse pointer is stationary within a control. The ToolTipDelay property specifies the time in ms that passes before the ToolTip appears. Use the ToolTip property of the Element object to specify the element's tooltip. Use the ToolTipWidth property to specify the width of the tooltip window. Use the ToolTip property of the Link objct to specify the tooltip to be shown when the cursor hovers the link. Use the ShowToolTip method to display a custom tooltip
exToolTipBackColor | 65 | Specifies the tooltip's background color.
exToolTipForeColor | 66 | Specifies the tooltip's foreground color.
exCheckBoxState0 | 70 | Specifies the visual appearance for the check box in 0 state (unchecked). Use the ShowCheckBox property to show or hide the element's checkbox. Use the Checked property to specify the state of the element's checkbox.
exCheckBoxState1 | 71 | Specifies the visual appearance for the check box in 1 state (checked). Use the ShowCheckBox property to show or hide the element's checkbox. Use the Checked property to specify the state of the element's checkbox.
exCheckBoxState2 | 72 | Specifies the visual appearance for the check box in 2 state (partial, reserved). Use the ShowCheckBox property to show or hide the element's checkbox. Use the Checked property to specify the state of the element's checkbox.
exRadioButtonState0 | 73 | (reserved) Specifies the visual appearance for the radio button in 0 state (unchecked).
exRadioButtonState1 | 74 | (reserved) Specifies the visual appearance for the radio button in 1 state (checked).
exCreateObjectColor | 75 | Specifies the color to show the creation rectangle when the user creates a new object. The AllowCreateElement property specifies the combination of keys that allows the user to create objects on the surface.
exSelectObjectRectColor | 76 | Specifies the color to show the selection rectangle when the objects are selected by dragging. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ).
exElementHostWindowBackColor | 77 | Specifies the visual appearance of the element of window/control type while dragging.
exEditBackColor | 78 | Specifies the background color while element is editing. Use the Edit method to allow inline editing of the element's caption or extracaption.
exEditForeColor | 79 | Specifies the foreground color while element is editing. Use the Edit method to allow inline editing of the element's caption or extracaption.
exEditSelBackColor | 80 | Specifies the selection background color while element is editing. Use the Edit method to allow inline editing of the element's caption or extracaption.
exEditSelForeColor | 81 | Specifies the selection foreground color while element is editing. Use the Edit method to allow inline editing of the element's caption or extracaption.
exLinkObjectsInvalidColor | 82 | Specifies the color to display an invalid link, when the user links two objects. The AllowLink event notifies your application that the user links two elements on the surface.
exLinkObjectsValidColor | 83 | Specifies the color to display a valid link, when the user links two objects. The AllowLink event notifies your application that the user links two elements on the surface.
exElementBorderColor | 88 | Specifies the color or the visual appearance of the element's border. If the property is set on -1, no border is shown. The exElementBorder defines the border to show around the elements. The BorderColor property specifies the color to show the border for a specific element. The BorderPadding property specifies the border padding.
exElementStatusColor | 89 | Specifies the color or the visual appearance of the element's status. If the property is set on -1, no status is shown. Still, the element's StatusSize should be set on 0. The StatusColor property specifies the color or the visual appearance to show the element's status part. The StatusPattern property specifies the pattern to show the element's status part. The StatusAlign property indicates the alignment of the element's status.
exElementBackColor | 90 | Specifies the color or the visual appearance of the element's background. If -1, the element's background is transparent. The BackColor property defines the element's background color or visual appearance.
exElementForeColor | 91 | Specifies the element's foreground color. The ForeColor property defines the element's foreground color or visual appearance.
exElementBorder | 92 | Specifies the element's border. The Border property specifies the border for giving element. The exElementBorder value could be any of the LinesStyleEnum type.
exPoolBackColor | 93 | Specifies the pool's visual appearance ( EBN ) or background color. If -1, the pool's background is transparent. The Color property specifies the background color/visual appearance of the giving pool.
exPoolBorderColor | 94 | Specifies the color or the visual appearance of the pool's border. If the property is set on -1, no border is shown. The exPoolBorder defines the style of the border to show around the pool. The BorderColor property specifies the color to show the border for a specific pool.
exPoolBorder | 95 | Specifies the pool's border. The Border property specifies the border for giving pool. The exPoolBorder value could be any of the LinesStyleEnum type.
exElementShape | 96 | Specifies the shape to show the element. The Shape property specifies the shape to show the giving element. The exElementShape value could be any of the ShapeEnum type.
exContextMenuAppearance | 99 | Specifies the visual appearance of the control's context menu.
exContextMenuBackColor | 100 | Specifies the solid background color for the control's context menu.
exContextMenuForeColor | 101 | Specifies the text foreground color for the control's context menu.
exContextMenuSelBackColor | 102 | Specifies the solid/EBN selection's background color in the control's context menu.
exContextMenuSelBorderColor | 103 | Specifies the solid color to show the selection in the control's context menu.
exContextMenuSelForeColor | 104 | Specifies the selection's text foreground color in the control's context menu.
exContextMenuGroupPopupFrameSingle | 105 | Specifies the visual appearance/solid color of the frame around the grouping items, when its group includes a single item.
exContextMenuGroupPopupFrameHStart | 106 | Specifies the visual appearance/solid color of the frame around the first item ( horizontally arranged ), when the its group includes more items.
exContextMenuGroupPopupFrameHIntermediate | 107 | Specifies the visual appearance/solid color of the frame around an intermediate item ( not start or end item, horizontally arranged ), when the its group includes more items.
exContextMenuGroupPopupFrameHEnd | 108 | Specifies the visual appearance/solid color of the frame around the last item ( not start or intermediate item, horizontally arranged ), when the its group includes more items.
exContextMenuGroupPopupFrameSolid | 109 | Specifies the solid color of the frame around the grouping items.
exContextMenuHotBackColor | 110 | Specifies the visual appearance/color to show the item from the cursor.
exContextMenuHotForeColor | 111 | Specifies the foreground color to show the item from the cursor.
exContextMenuSelHotBackColor | 112 | Specifies the visual appearance/color to show the selected item from the cursor.
exContextMenuSelHotForeColor | 113 | Specifies the foreground color to show the selected item from the cursor.
exContextMenuSeparatorSelectButton | 114 | Specifies the visual appearance/color to show the separator between select and drop down button.
exContextMenuSeparatorSelectButtonBottom | 115 | Specifies the visual appearance/color to show the separator between select and drop down button ( show the drop-down button to the bottom ).
exContextMenuGroupPopupFrameVStart | 116 | Specifies the visual appearance/solid color of the frame around the first item ( vertically arranged ), when the its group includes more items.
exContextMenuGroupPopupFrameVIntermediate | 117 | Specifies the visual appearance/solid color of the frame around an intermediate item ( not start or end item, vertically arranged ), when the its group includes more items.
exContextMenuGroupPopupFrameVEnd | 118 | Specifies the visual appearance/solid color of the frame around the last item ( not intermediate or end item, vertically arranged ), when the its group includes more items.
exPoolHorizontalHeaderBackColor | 120 | Specifies the visual appearance ( EBN ) or background color for the horizontal header of the pool. If -1, the background is transparent. The HeaderColor(exHeaderHorizontal) property specifies the background color/visual appearance of the horizontal header for the giving pool.
exPoolHorizontalHeaderForeColor | 121 | Specifies the foreground color for the horizontal header of the pool. If -1, the foreground is transparent, so the control's ForeColor specifies the foreground color for the horizontal header of the pool. The CaptionColor property specifies the foreground color for caption's header of specified lane.
exPoolHorizontalHeaderBorderColor | 122 | Specifies the color to show the border for horizontal header of the pool. If the property is set on -1, no border is shown. The exPoolHorizontalHeaderBorder defines the style of the border to show around the header. The HeaderBorderColor(exHeaderHorizontal) property specifies the color to show the border for a specific header.
exPoolHorizontalHeaderBorder | 123 | Specifies the type of the border for horizontal header of the pool. The HeaderBorder property specifies the border for horizontal header for giving pool. The exPoolHorizontalHeaderBorder value could be any of the LinesStyleEnum type.
exPoolVerticalHeaderBackColor | 124 | Specifies the visual appearance ( EBN ) or background color for the vertical header of the pool. If -1, the background is transparent. The HeaderColor(exHeaderVertical) property specifies the background color/visual appearance of the vertical header for the giving pool.
exPoolVerticalHeaderForeColor | 125 | Specifies the foreground color for the vertical header of the pool. If -1, the foreground is transparent, so the control's ForeColor specifies the foreground color for the vertical header of the pool. The CaptionColor property specifies the foreground color for caption's header of specified lane.
exPoolVerticalHeaderBorderColor | 126 | Specifies the color to show the border for vertical header of the pool. If the property is set on -1, no border is shown. The exPoolVerticalHeaderBorder defines the style of the border to show around the header. The HeaderBorderColor(exHeaderVertical) property specifies the color to show the border for a specific header.
exPoolVerticalHeaderBorder | 127 | Specifies the type of the border for vertical header of the pool. The HeaderBorder property specifies the border for vertical header for giving pool. The exPoolVerticalHeaderBorder value could be any of the LinesStyleEnum type.
exPoolHorizontalLaneBorderColor | 128 | Specifies the color to show the border for horizontal lanes of the pool. If the property is set on -1, no border is shown. The property has effect if the pool contains horizontal lanes ( Count property ). The BorderColor property (of the HeaderLane) specifies the color to show the border for horizontal lanes of a specified pool, inside the header. The BorderColor property (of the Lane) specifies the color to show the border for horizontal lanes of a specified pool, outside of the header.
exPoolHorizontalLaneBorder | 129 | Specifies the type of the border for horizontal lanes of the pool. The property has effect if the pool contains horizontal lanes ( Count property ). The Border property (of the HeaderLane) specifies the type of the border for horizontal lanes of a specified pool, inside the header. The Border property (of the Lane) specifies the type of the border for horizontal lanes of a specified pool, outside of the header.
exPoolHorizontalSubLaneBorderColor | 130 | Specifies the color to show the border for horizontal sub-lanes of the pool. If the property is set on -1, no border is shown. The property has effect if the pool contains horizontal sub-lanes ( Count property ). The BorderColor property (of the HeaderLane) specifies the color to show the border for horizontal sub-lanes of a specified pool, inside the header. The BorderColor property (of the Lane) specifies the color to show the border for horizontal sub-lanes of a specified pool, outside of the header.
exPoolHorizontalSubLaneBorder | 131 | Specifies the type of the border for horizontal sub-lanes of the pool. The property has effect if the pool contains horizontal sub-lanes ( Count property ). The Border property (of the HeaderLane) specifies the type of the border for horizontal sub-lanes of a specified pool, inside the header. The Border property (of the Lane) specifies the type of the border for horizontal sub-lanes of a specified pool, outside of the header.
exPoolVerticalLaneBorderColor | 132 | Specifies the color to show the border for vertical lanes of the pool. If the property is set on -1, no border is shown. The property has effect if the pool contains vertical lanes ( Count property ). The BorderColor property (of the HeaderLane) specifies the color to show the border for vertical lanes of a specified pool, inside the header. The BorderColor property (of the Lane) specifies the color to show the border for vertical lanes of a specified pool, outside of the header.
exPoolVerticalLaneBorder | 133 | Specifies the type of the border for vertical lanes of the pool. The property has effect if the pool contains vertical lanes ( Count property ). The Border property (of the HeaderLane) specifies the type of the border for vertical lanes of a specified pool, inside the header. The Border property (of the Lane) specifies the type of the border for vertical lanes of a specified pool, outside of the header.
exPoolVerticalSubLaneBorderColor | 134 | Specifies the color to show the border for vertical sub-lanes of the pool. If the property is set on -1, no border is shown. The property has effect if the pool contains vertical sub-lanes ( Count property ). The BorderColor property (of the HeaderLane) specifies the color to show the border for vertical sub-lanes of a specified pool, inside the header. The BorderColor property (of the Lane) specifies the color to show the border for vertical sub-lanes of a specified pool, outside of the header.
exPoolVerticalSubLaneBorder | 135 | Specifies the type of the border for vertical sub-lanes of the pool. The property has effect if the pool contains vertical sub-lanes ( Count property ). The Border property (of the HeaderLane) specifies the type of the border for vertical sub-lanes of a specified pool, inside the header. The Border property (of the Lane) specifies the type of the border for vertical sub-lanes of a specified pool, outside of the header.
exHeaderLaneInheritLane 136 Specifies the visual properties of the lane that its header inherits from. By default, the exHeaderLaneInheritLane property is exDrawPoolPropsNone (0), so the lane and its header can display different background color/visual appearance, pattern and border. The HeaderLaneInheritLane property specifies the visual properties of the lane that its header inherits from ( HeaderLane object ).

The exHeaderLaneInheritLane property can be a combination of the following flags:

  • exDrawPoolPropsNone(0), no property is inherited.
  • exDrawPoolPropsBackColor(1), the Color property of the Lane object is applied to its header.
  • exDrawPoolPropsPattern(2), the Pattern property of the Lane object is applied to its header.
  • exDrawPoolPropsBorder(256), the Border property of the Lane object is applied to its header.
  • exDrawPoolPropsBorder(512), the BorderColor property of the Lane object is applied to its header.
  • exDrawPoolPropsAll(-1), all above properties are applied to the header.

The following screen shot shows the lane Phase 3 with a different Color and Pattern, while the exHeaderLaneInheritLane is exDrawPoolPropsNone(0):

while the next screen shot shows the same lane, with exDrawPoolPropsAll(-1):
exHeaderLaneBorder 137 Specifies the style of the border to be shown on the lane's header ( horizontal and vertical ). If the property is set on -1, no border is shown. The property has effect if the pool contains horizontal sub-lanes ( Count property ).

The following screen shot shows the pool with exHeaderLaneBorder on default:

The following screen shot shows the pool with exHeaderLaneBorder on -1:

The following screen shot shows the pool with exHeaderLaneBorder on RGB(0,255,0):
exHeaderLaneBorderColor | 138 | Specifies the color to show the borders in the header of the lane ( horizontal and vertical ). The property has effect if the pool contains horizontal sub-lanes ( Count property ).
exToolBarAppearance 148 Specifies the visual appearance / background color of the surface's toolbar panel.

exToolBarBackColor | 149 | Specifies the background color of the surface's toolbar panel.
exToolBarForeColor | 150 | Specifies the foreground color of the surface's toolbar panel.
exToolBarButtonUpBackColor | 151 | Specifies the visual appearance of the toolbar's button while it is up.
exToolBarButtonUpForeColor | 152 | Specifies the foreground color of the toolbar's button while it is up.
exToolBarButtonDownBackColor | 153 | Specifies the visual appearance of the toolbar's button while it is down.
exToolBarButtonDownForeColor | 154 | Specifies the foreground color of the toolbar's button while it is down.
exToolBarButtonHotBackColor | 155 | Specifies the visual appearance of the toolbar's button while the cursor hovers it.
exToolBarButtonHotForeColor | 156 | Specifies the foreground color of the toolbar's button while the cursor hovers it.


constants CaptionSingleLineEnum
The CaptionSingleLineEnum type defines whether the element's caption is displayed on a single or multiple lines. The (ExtraCaptionSingleLine/)CaptionSingleLine property retrieves or sets a value indicating whether the element's (extra/)caption is displayed using one line, or multiple lines. The CaptionSingleLineEnum type supports the following values:

Name | Value | Description
exCaptionSingleLine | -1 | Indicates that the element's caption is displayed on a single line. In this case any \r\n or <br> HTML tags is ignored. For instance the "This is the first line.\r\nThis is the second line.\r\nThis is the third line." shows as:
exCaptionWordWrap | 0 | Specifies that the element's caption is displayed on multiple lines, by wrapping the words. Any \r\n or <br> HTML tag breaks the line. For instance the "This is the first line.\r\nThis is the second line.\r\nThis is the third line." shows as:
exCaptionBreakWrap | 1 | Specifies that the element's caption is displayed on multiple lines, by wrapping the breaks only. Only The \r\n or <br> HTML tag breaks the line. For instance the "This is the first line.\r\nThis is the second line.\r\nThis is the third line." shows as:


constants CheckStateEnum
The CheckStateEnum type specifies the states of the element's check-box. The Checked property specifies the state of the element's check box. Use the ShowCheckBox property to show or hide the element's checkbox. The CheckStateEnum type supports the following values:

Name | Value | Description
exUnchecked | 0 | Specifies whether the element is unchecked. The Background(exCheckBoxState0) Specifies the visual appearance for the check box in 0 state.
exChecked | 1 | Specifies whether the element is checked. The Background(exCheckBoxState1) Specifies the visual appearance for the check box in 1 state.
exPartialChecked | 2 | (reserved) Specifies whether the element is partial-checked. The Background(exCheckBoxState2) Specifies the visual appearance for the check box in 2 state.


constants ContentAlignmentEnum
The ContentAlignmentEnum type specifies the object's alignment relative to the corners. The ContentAlignmentEnum type supports the following values:

Name | Value | Description
exTopLeft | 0 | Content is vertically aligned at the top, and horizontally aligned on the left.
exTopCenter | 1 | Content is vertically aligned at the top, and horizontally aligned at the center.
exTopRight | 2 | Content is vertically aligned at the top, and horizontally aligned on the right.
exMiddleLeft | 16 | Content is vertically aligned in the middle, and horizontally aligned on the left.
exMiddleCenter | 17 | Content is vertically aligned in the middle, and horizontally aligned at the center.
exMiddleRight | 18 | Content is vertically aligned in the middle, and horizontally aligned on the right.
exBottomLeft | 32 | Content is vertically aligned at the bottom, and horizontally aligned on the left.
exBottomCenter | 33 | Content is vertically aligned at the bottom, and horizontally aligned at the center.
exBottomRight | 34 | Content is vertically aligned at the bottom, and horizontally aligned on the right.


constants ContextMenuObjectActionEnum
The ContextMenuObjectActionEnum type specifies the actions that the context menu's item supports. The ActionContextMenu event notifies your application once an action occurs within the object's context menu. The ContextMenuObjectActionEnum type supports the following values.

Name | Value | Description
exContextMenuSelectItem | 0 | An item of the object's context menu has been selected.
exContextMenuCheckItem | 1 | An item of the object's context menu has been checked. The CommandChecked parameter of the ActionContextMenu(exContextMenuCheckItem,...,CommandChecked,...) event indicates the state of the item's check box.
exContextMenuUncheckItem | 2 | An item of the object's context menu has been unchecked. The CommandChecked parameter of the ActionContextMenu( exContextMenuCheckItem,..., CommandChecked,...) event indicates the state of the item's check box.
exContextMenuEditChangeItem | 3 | The value of the item of the object's context menu has been altered. The CommandValue parameter of the ActionContextMenu(exContextMenuEditChangeItem,...,CommandValue,...) event indicates the state of the item's check box.


constants ContextMenuObjectTypeEnum
The ContextMenuObjectTypeEnum type specifies the type of objects on the surface, that supports a context-menu. The ActionContextMenu event notifies your application once an action occurs within the object's context menu. The ContextMenuObjectFromID(ObjectType,ObjectID) property determines the object that hosts the context-menu, such as element, link, pool and so on. Use the ContextMenu property to provide a custom context menu for the objects on the surface. The ContextMenuObjectTypeEnum type supports the following values:

Name | Value | Description
exContextMenuInvalid | -1 | exContextMenuInvalid.
exContextMenuUndefined | 0 | exContextMenuUndefined.
exContextMenuElement | 4 | Refers a selectable element from the surface.
exContextMenuLink | 8 | Refers a selectable link from the surface.
exContextMenuSelection | 12 | Refers the selection on the surface.
exContextMenuLane | 16 | Refers a selectable lane from the surface.
exContextMenuPool | 20 | Refers a selectable pool from the surface.
exContextMenuSurface | 24 | Refers the surface itself.


constants CoordEnum
The CoordEnum type defines the type of coordinates the elements of the surface supports. The Coord property specifies the type of coordinates the elements of the surface display in. The CoordEnum type supports the following values:

Name | Value | Description
exDefCoord | 0 | The positive coordinates are shown right-down to origin of the surface. The following screen shot shows the surface using default coordinates:
exCartesian | 1 | The elements show in Cartesian coordinates. The positive coordinates are shown right-up to origin of the surface. The following screen shot shows the surface using Cartesian coordinates:
exAllowPositiveOnly | 16 | Only the positive panel of the surface is shown. The exAllowPositiveOnly flag can be combined with exDefCoord or exCartesian value. For instance, the exCartesian + exAllowPositiveOnly indicates that surface displays only the positive coordinates in Cartesian system.


constants DefArrangeEnum
The DefArrangeEnum type specifies the options of the Arrange method. The DefArrange property specifies a property of Arrange method. Changing any of the following properties has effect at the next Arrange call. The DefArrangeEnum type supports the following values:

Name | Value | Description
exDefArrangeDir 0 Specifies the direction to auto-arrange the elements. By default, the exDefArrangeDir is 0, which indicates that the elements are horizontally arranged. The exDefArrangeDir property could be any of the following:
  • 0, horizontal arrangement
  • any other value, specifies a vertical arrangement.

(long expression)
exDefArrangeDX 1 Specifies the distance between two auto-arranged elements on horizontal axis. By default, the exDefArrangeDX property is 24 pixels. You can use the exDefArrangeDX to increase or decrease the distance of the arranged elements.

(long expression)
exDefArrangeDY 2 Specifies the distance between two auto-arranged elements on vertical axis. By default, the exDefArrangeDY property is 18 pixels. You can use the exDefArrangeDX to increase or decrease the distance of the arranged elements.

(long expression)
exDefArrangeAlign 3 Specifies the alignment of the elements relative to incoming/outgoing elements during the Arrange operation. By default, the exDefArrangeAlign property is CenterAlignment, which indicates that the elements are centered relative to incoming/outgoing elements

(AlignmentEnum expression)
exDefArrangeCompact | 4 | exDefArrangeCompact. Specifies whether the elements should be compacted, during the Arrange operation.


constants DesignModeEnum
The DesignModeEnum type specifies the design-modes the control supports. The DesignMode property specifies the current design-mode. The DesignModeEnum type supports the following values:

Name | Value | Description
exDesignLock | 0 | No design mode for the surface (lock). The user can not create, move, resize any object on the surface.
exDesignElements | 1 | The user can create, edit, move or resize the elements.
exDesignPools | 2 | The user can create, edit, move or resize the pools, headers, lanes, ...
exDesign | 3 | The user can create, edit, move or resize any object ( elements, pools, headers, lanes ) on the surface.


constants DrawPoolPropsEnum
The DrawPoolPropsEnum type specifies the visual properties the header can inherit from its lane. The HeaderLaneInheritLane, Background(exHeaderLaneInheritLane) property specifies the properties of the Lane that HeaderLane inherits from. The DrawPoolPropsEnum type supports the following values:

Name | Value | Description
exDrawPoolPropsNone | 0 | No property is inherited.
exDrawPoolPropsBackColor | 1 | The header inherits the Color property of the lane.
exDrawPoolPropsPattern | 2 | The header inherits the Pattern property of the lane.
exDrawPoolPropsBorder | 256 | The header inherits the Border property of the lane.
exDrawPoolPropsBorderColor | 512 | The header inherits the BorderColor property of the lane.
exDrawPoolPropsAll | -1 | The header inherits all properties of the lane.


constants EdgeAlignmentEnum
The EdgeAlignmentEnum type specifies the alignment of the object to the edges of the parent. The EdgeAlignmentEnum type supports the following values:

Name | Value | Description
exAlignLeft | 0 | The object is aligned to the left edge.
exAlignRight | 1 | The object is aligned to the right edge.
exAlignTop | 2 | The object is aligned to the top edge.
exAlignBottom | 3 | The object is aligned to the bottom edge.


constants EditEnum
The EditEnum type specifies the caption to be edited on the element. The Part parameter of the Edit method specifies the caption of the element to be edited. The EditEnum type supports the following values:

Name | Value | Description
exEditCaption | 0 | Edits the element's caption.
exEditExtraCaption | 1 | Edits the element's extra caption.


constants ElementHostTypeEnum
The ElementHostTypeEnum type defines the type of nodes that you can put on the surface. The ElementHostTypeEnum type supports the following values:

Name | Value | Description
exElementHostDefault | 0 | Specifies the default element. Use the Caption property to specify the element's caption.
exElementHostWindow | 1 | Specifies an element that hosts a window. Use the Window property to associate an existent window with the current element.
exElementHostControl | 2 | Specifies an element that hosts a control. Use the Control/License property to associate an inner control or an ActiveX control.


constants exClipboardFormatEnum
Defines the clipboard format constants. Use GetFormat property to check whether the clipboard data is of given type

Name | Value | Description
exCFText | 1 | Null-terminated, plain ANSI text in a global memory bloc
exCFBitmap | 2 | A bitmap compatible with Windows 2.X
exCFMetafile | 3 | A Windows metafile with some additional information about how the metafile should be displayed
exCFDIB | 8 | A global memory block containing a Windows device-independent bitmap (DIB)
exCFPalette | 9 | A color-palette handle
exCFEMetafile | 14 | A Windows enhanced metafile
exCFFiles | 15 | A collection of files. Use Files property to get the collection of files
exCFRTF | -16639 | A RTF document


constants exOLEDragOverEnum

State transition constants for the OLEDragOver event.

Name | Value | Description
exOLEDragEnter | 0 | Source component is being dragged within the range of a target.
exOLEDragLeave | 1 | Source component is being dragged out of the range of a target.
exOLEDragOver | 2 | Source component has moved from one position in the target to another.


constants exOLEDropEffectEnum

Drop effect constants for OLE drag and drop events.

Name | Value | Description
exOLEDropEffectNone | 0 | Drop target cannot accept the data, or the drop operation was cancelled
exOLEDropEffectCopy | 1 | Drop results in a copy of data from the source to the target. The original data is unaltered by the drag operation.
exOLEDropEffectMove | 2 | Drop results in data being moved from drag source to drop source. The drag source should remove the data from itself after the move.
exOLEDropEffectScroll | -2147483648 | Not implemented.


constants exOLEDropModeEnum

Constants for the OLEDropMode property, that defines how the control accepts OLE drag and drop operations. Use the OLEDropMode property to set how the component handles drop operations.

Name | Value | Description
exOLEDropNone | 0 | The control is not used OLE drag and drop functionality
exOLEDropManual | 1 | The control triggers the OLE drop events, allowing the programmer to handle the OLE drop operation in code

Here's the list of events related to OLE drag and drop: OLECompleteDrag, OLEDragDrop, OLEDragOver, OLEGiveFeedback, OLESetData, OLEStartDrag.


constants HeaderExtEnum
The HeaderExtEnum type indicates the way the left/right or/and top/bottom header extends. The AllowHeaderExt property specifies the way the left/right or/and top/bottom header extends ( for all pools). The AllowHeaderExt property specifies the way the left/right or/and top/bottom header extends ( for specified pool). The HeaderExtEnum type supports the following values:

Name | Value | Description
exHeaderExtUndefined | -1 | No extension is defined for the pool's header.
exCornerEmpty | 0 | No corner is assigned to the header.
exCornerTopLeftExtHeaderLeft | 1 | The left-header extends its content to top-left corner.
exCornerTopLeftExtHeaderTop | 2 | The top-header extends its content to top-left corner.
exCornerTopRightExtHeaderRight | 256 | The right-header extends its content to top-right corner.
exCornerTopRightExtHeaderTop | 512 | The top-header extends its content to top-right corner.
exCornerBottomRightExtHeaderRight | 65536 | The right-header extends its content to bottom-right corner.
exCornerBottomRightExtHeaderBottom | 131072 | The bottom-header extends its content to bottom-right corner.
exCornerBottomLeftExtHeaderLeft | 16777216 | The left-header extends its content to bottom-left corner.
exCornerBottomLeftExtHeaderBottom | 33554432 | The bottom-header extends its content to bottom-left corner.


constants HeaderPosEnum
The HeaderPosEnum type specifies the position of the header within the pool. For instance the HeaderVisible property specifies whether a specified header of the pool is visible or hidden. The HeaderPosEnum type property supports the following values.

Name | Value | Description
exHeaderLeft | 0 | Indicates the header being displayed to the left of the pool.
exHeaderTop | 1 | Indicates the header being displayed to the top of the pool.
exHeaderRight | 2 | Indicates the header being displayed to the right of the pool.
exHeaderBottom | 3 | Indicates the header being displayed to the bottom of the pool.


constants HeaderTypeEnum
The HeaderTypeEnum type indicates the horizontal or vertical headers of the pool. For instance, the HeaderColor(HeaderType) property gets or sets a value that indicates the header's background color. The HeaderTypeEnum type supports the following values.

Name | Value | Description
exHeaderHorizontal | 0 | Includes both top and bottom headers of the pool. and
exHeaderVertical | 1 | Includes both left and right headers of the pool: and


constants HitTestCodeEnum
The HitTestCodeEnum type specifies the parts of the element being handled by the HitTestFromPoint property. The exHitTestClient... flags can be combined with any other flags. The HitTestCodeEnum type supports the following values:

Name | Value | Description
exHitTestInvalid | -1 | Invalid hit-test code.
exHitTestMargin | 0 | Indicates a margin of the element.
exHitTestStatus | 1 | Indicates the status part of the element.
exHitTestClient | 2 | Indicates the client part of the element.
exHitTestPicture | 3 | Indicates a picture of the element.
exHitTestCaption | 4 | Indicates the caption of the element.
exHitTestExtraCaption | 5 | Indicates the extra caption of the element.
exHitTestCheckBox | 6 | Indicates the check-box of the element.
exHitTestGlyph | 7 | Indicates the glyph of the element.
exHitTestMask | 255 | Indicates the mask for the hit-test code.
exHitTestClientTopLeft | 0 | Indicates the top-left portion of the object.
exHitTestClientTopCenter | 256 | Indicates the top-center portion of the object.
exHitTestClientTopRight | 512 | Indicates the top-right portion of the object.
exHitTestClientMiddleLeft | 4096 | Indicates the middle-left portion of the object.
exHitTestClientMiddleCenter | 4352 | Indicates the midle-center portion of the object.
exHitTestClientMiddleRight | 4608 | Indicates the midle-right portion of the object.
exHitTestClientBottomLeft | 8192 | Indicates the bottom-left portion of the object.
exHitTestClientBottomCenter | 8448 | Indicates the bottom-center portion of the object.
exHitTestClientBottomRight | 8704 | Indicates the bottom-right portion of the object.


constants LaneResizeTypeEnum
The LaneResizeTypeEnum type specifies how the pool resizes the lanes, once the user resizes the pool. The LaneResizeType property specifies how the pool resizes the lanes, once the user resizes the pool ( valid for all pools ). The LaneResizeType property specifies how the pool resizes the lanes, once the user resizes the pool ( valid for a specific pool ). The LaneResizeTypeEnum type supports the following values:

Name | Value | Description
exLaneResizeUndefined | -1 | The LaneResizeType property of the Lane may use this property to indicates that the LaneResizeType property of the control, specifies how the pool resizes the lanes, once the user resizes the pool.
exLaneResizeLast | 0 | Last lane gets resized.
exLaneResizeProportionally | 1 | The lane gets proportionally resized.


constants LaneTypeEnum
The LaneTypeEnum type specifies the type of the lane. The Type property of the Lane indicates whether the lane is horizontal or vertical. The LaneTypeEnum type supports the following values:

Name | Value | Description
exLaneHorizontal | 0 | Specifies the top/bottom headers of the pool.
exLaneVertical | 1 | Specifies the left/right headers of the pool.


constants LayoutChangingEnum
The LayoutChangingEnum type specifies the operations that the user performs on the surface. The LayoutStartChanging event occurs when a specified operation begins. The LayoutEndChanging event notifies that the specified operation ends. The LayoutChangingEnum type supports the following values.

Name | Value | Description
exSurfaceMove | 0 | The user moves/scrolls the surface to a new position. The AllowMoveSurface property specifies the keys combination to allow user to move / scroll the surface.
exSurfaceZoom | 1 | The user magnifies or shrinks the surface (zooming). The AllowZoomSurface property specifies the keys combination to allow user to zoom the surface.
exSurfaceHome | 2 | The user restores the surface to its original view. The Home method restores the view to its original state ( position and zoom ).
exResizeElement | 3 | The user resizes an element on the surface. The AllowResizeElement property specifies the keys combination to allow user to resize the element.
exMoveElement | 4 | The user moves an element on the surface. The AllowMoveElement property specifies the keys combination to allow user to move the element.
exSelectElement | 5 | The user selects elements on the surface. The AllowSelectObject property specifies the keys combination to allow user to select the element.
exSelectNothing | 6 | The user selects nothing on the surface. The AllowSelectNothing property specifies the keys combination to allow user to select nothing on the surface.
exCreateElement | 7 | The user creates elements on the surface. The AllowCreateElement property specifies the keys combination to allow user to create elements on the surface.
exEditElement | 8 | The user edits the element's caption. The Edit method edits the element.
exLinkObjects | 9 | The user links elements. The AllowLinkObjects property specifies the keys combination to allow user to link elements on the surface.
exDesignMode | 10 | The user changes the surface's design mode. 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. The DesignModes property specifies the modes to be displayed on the Design toolbar. The DesignMode property specifies the control's design mode. Depending on the design-mode, the user can select elements, pools or none.
exCreatePool | 11 | The user creates pools on the surface. The AllowCreatePool property specifies the keys combination to allow user to create pools on the surface.
exResizePool | 12 | The user resizes the pool from the surface. The AllowResizePool property specifies the keys combination to allow user to resize the pool.
exMovePool | 13 | The user moves the pool from the surface. The AllowMovePool property specifies the keys combination to allow user to move the pool.
exResizePoolHeader | 14 | The user resizes the header's pool from the surface.
exResizeLane | 15 | 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.
exMoveLane | 16 | 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.
exContextMenuObject | 17 | 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.
exActionContextMenuObject | 18 | 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.
exLinkControlPoint | 19 | The user changes the link's control points. The AllowLinkControlPoint property indicates the control points of the link, the user can use to customize the link's path. The property is applied to all links (unless the AllowControlPoint property indicates a different value)
exUndo | 33 | An Undo operation is performed (CTR + Z). Occurs only if the control's AllowUndoRedo property is True.
exRedo | 34 | A Redo operation is performed (CTR + Y). Occurs only if the control's AllowUndoRedo property is True.
exUndoRedoUpdate | 32 | The Undo/Redo queue is updated.


constants LinesStyleEnum
The LinesStyleEnum type specifies the type of lines the control can show. The LinesStyleEnum type supports the following values:

Name | Value | Description
exLinesInvalid | -2 | No lines are shown.
exNoLines | -1 | No lines are shown.
exLinesHDot | 1 | The horizontal lines shows dotted.
exLinesVDot | 2 | The vertical lines are shown as dotted.
exLinesDot | 3 | The lines shows as dotted.
exLinesHDot4 | 4 | The horizontal lines shows dotted.
exLinesVDot4 | 8 | The vertical lines are shown as dotted.
exLinesDot4 | 12 | The lines are shown as solid.
exLinesHDash | 16 | The horizontal lines are shown as dashed.
exLinesVDash | 32 | The vertical lines are shown as dashed.
exLinesDash | 48 | The lines are shown as dashed.
exLinesHSolid | 64 | The horizontal lines are shown as solid.
exLinesVSolid | 128 | The vertical lines are shown as solid.
exLinesSolid | 192 | The lines are shown as solid.
exLinesThick | 256 | The lines are shown ticker.
exLinesThicker | 768 | The lines are shown ticker.


constants LinkControlPointEnum
The LinkControlPointEnum type specifies the link's control points. The LinkControlPointEnum type supports the following values:

Name | Value | Description
exNoControlPoint | 0 | The link displays no control points.
exStartControlPoint | 1 | The link shows control point that changes the link's StartPos property. The exStartControlPoint point is marked with black squares as shown in the following picture:
exEndControlPoint | 2 | The link shows control point that changes the link's EndPos property. The exEndControlPoint point is marked with black squares as shown in the following picture:
exControlPoint | 4 | Defines the corners of the link's path. You can remove a exControlPoint points by dragging to another, so intermediate exControlPoint points are removed. You can move all control points of the link at once, if SHIFT key is pressed. The exControlPoint points are marked black circles as shown in the following picture:
exMiddleControlPoint | 8 | Defines the link's middle control points that are displayed between two exControlPoint points, to let the use add new exControlPoint points, to redefine the link's path. The exMiddleControlPoint points are marked with gray circles as shown in the following picture:
exOrthoArrange | 16 | The exOrthoArrange flag specifies that the lines of the link are orthogonal arranged when the user drag and drop the middle or control-points of the path (excludes the start/end control-points). The flag has effect only for links that contains horizontal/vertical lines (orthogonal link). The cursor is changing to size-all when the mouse pointer hovers the control-points (excludes the start/end control-points), to size WE or NS when the mouse pointer hovers the control-points, else it is changed to hand cursor. The user can freely customize the link by keeping the CTRL key down.


constants LinkStyleEnum
The LinkStyleEnum type defines the style of lines to be shown on the surface. The LinkStyleEnum type supports the following values:

Name | Value | Description
exLinkSolid | 0 | The link is solid.
exLinkDash | 1 | The link is dashed.
exLinkDot | 2 | The link is dotted.
exLinkDashDot | 3 | The link has alternating dashes and dots.
exLinkDashDotDot | 4 | The link has alternating dashes and double dots.


constants MoveNeighborsEnum
The MoveNeighborsEnum type specifies how the elements are shifted once an element is moved. The The AllowMoveNeighbors property indicates whether the neighbor elements are shifted once the selection is moved or resized, so they won't intersect the dragging objects. The MoveNeighborsEnum type supports the following values:

Name | Value | Description
exDisallowMoveNeighbors | 0 | No element is moved.
exMoveNeighborsVertically | 1 | The neighbor elements of the element that's currently moving, are shifted vertically.
exMoveNeighborsHorizontally | 2 | The neighbor elements of the element that's currently moving, are shifted horizontally.
exMoveNeighborsByDragDir | 3 | The neighbor elements of the element that's currently moving, are shifted based on the direction of moving.


constants IndexExtEnum
The IndexExtEnum type specifies the index of the part of the EBN object to be accessed. The Index parameter of the BackgroundExtValue property indicates the index of the part of the EBN object to be changed or accessed. The Exontrol's eXButton WYSWYG Builder helps you to generate or view the EBN String Format, in the To String field. The list of objects that compose the EBN are displayed on the left side of the Builder tool, and the Index of the part is displayed on each item aligned to the right as shown in the following screen shot:

In this sample, there are 11 objects that composes the EBN, so the Index property goes from 0 which indicates the root, and 10, which is the last item in the list

So, let's apply this format to an object, to change the exPatternExt property for the object with the Index 6:

Before calling the BodyBackgroundExt property:

After calling the BodyBackgroundExt property:

and now, let's change the exPatternExt property of the object with the Index 6 to 11 ( Yard ), so finally we got:

The IndexExtEnum type supports the following values:

Name | Value | Description
exIndexExtRoot | 0 | Specifies the part of the object with the index 0 (root).
exIndexExt1 | 1 | Specifies the part of the object with the index 1.
exIndexExt2 | 2 | Specifies the part of the object with the index 2.
exIndexExt3 | 3 | Specifies the part of the object with the index 3.
exIndexExt4 | 4 | Specifies the part of the object with the index 4.
exIndexExt5 | 5 | Specifies the part of the object with the index 5.
exIndexExt6 | 6 | Specifies the part of the object with the index 6.
exIndexExt7 | 7 | Specifies the part of the object with the index 7.


constants PaddingEdgeEnum
The PaddingEdgeEnum type defines the left, top, right and bottom padding to display the object. The PaddingEdgeEnum type defines the following predefined values:

Name | Value | Description
exPaddingAll | -1 | Indicates all margins of the object.
exPaddingLeft | 0 | Indicates the left margin of the object.
exPaddingTop | 1 | Indicates the top margin of the object.
exPaddingRight | 2 | Indicates the right margin of the object.
exPaddingBottom | 3 | Indicates the bottom margin of the object.


constants PatternEnum
The PatternEnum type specifies the type of patterns that the element can fill with. The Type property indicates the pattern to fill the element. The Color property indicates the color to fill the element's pattern, while the FrameColor property indicates the color to show the element's border/frame if the Type property includes the exPatternFrame flag.

The PatternEnum type supports the following values:

Name | Value | Description
exPatternEmpty | 0 | The pattern is not visible.
exPatternSolid | 1 |
exPatternDot | 2 |
exPatternShadow | 3 |
exPatternNDot | 4 |
exPatternFDiagonal | 5 |
exPatternBDiagonal | 6 |
exPatternDiagCross | 7 |
exPatternVertical | 8 |
exPatternHorizontal | 9 |
exPatternCross | 10 |
exPatternBrick | 11 |
exPatternYard | 12 |
exPatternFrame | 256 | . The exPatternFrame can be combined with any other value. The FrameColor property indicates the color to show the frame.
exPatternFrameThick | 768 | . The exPatternFrameThick can be combined with any other value. The FrameColor property indicates the color to show the frame.


constants PictureDisplayEnum
The PictureDisplayEnum type defines the way the control's Picture is arranged on the control. The Picture property assign a picture to be displayed on the control's background. The PictureDisplay property indicates how the picture is layout on the control's background. The PictureDisplayEnum type supports the following values:

Name | Value | Description
UpperLeft | 0 | The picture is vertically aligned at the top, and horizontally aligned on the left.
UpperCenter | 1 | The picture is vertically aligned at the top, and horizontally aligned at the center.
UpperRight | 2 | The picture is vertically aligned at the top, and horizontally aligned on the right.
MiddleLeft | 16 | The picture is vertically aligned in the middle, and horizontally aligned on the left.
MiddleCenter | 17 | The picture is vertically aligned in the middle, and horizontally aligned at the center.
MiddleRight | 18 | The picture is vertically aligned in the middle, and horizontally aligned on the right.
LowerLeft | 32 | The picture is vertically aligned at the bottom, and horizontally aligned on the left.
LowerCenter | 33 | The picture is vertically aligned at the bottom, and horizontally aligned at the center.
LowerRight | 34 | The picture is vertically aligned at the bottom, and horizontally aligned on the right.
Tile | 48 | Tiles the picture on the source.
Stretch | 49 | The picture is resized to fit the source.


constants ShapeEnum
The ShapeEnum type defines the shape an element can be displayed. The Shape property specifies the element's shape. You can use the BackColor property to define different shape as well, using the EBN technology. The ShapeEnum type supports the following values:

Name | Value | Description
exShapeDefault | -1 | Indicates the default shape for elements on the surface, which is by default exShapeRectangular.
exShapeRectangular | 0 | (default) Defines a rectangular shape.
exShapeRound | 1 | Defines a rectangular-round shape.
exShapeRhomb | 2 | Defines a rhomb shape.
exShapeCircle | 3 | Defines a circle/ellipse shape.


constants ShowExtendedLinksEnum
The ShowExtendedLinksEnum type defines how the links are shown on the surface. The ShowLinks property specifies the way the control shows the link on the surface. The ShowExtendedLinksEnum type supports the following values.

Name | Value | Description
exHideLinks | 0 | Hides the links on the surface. Use the Visible property of the Link to hide a specific link.
exShowLinks | -1 | Shows the links on the surface. The exShowLinks flag is equivalent with exShowDefaultLinks + exShowLinksFront, it is provided for the backward compatibility only ( boolean True has the value of -1 )
exShowExtendedLinks | 1 | Shows the extended links on the surface. This flag is valid for rectangular links only ( exLinkRectangular ).
exShowDefaultLinks | 2 | Shows the default links on the surface.
exShowLinksFront | 16 | Shows the links on the front. This flag can be combined with the exShowLinks, exShowExtendedLinks, exShowCrossLinksRect, exShowCrossLinksTriangle, exShowCrossLinksMixt or exShowDefaultLinks. If the exShowLinksFront is missing, the links are shown on the control's background, so elements may show over the links.
exShowCrossLinksRect | 32 | Shows rectangular cross links. This flag can be combined with the exShowLinks, exShowExtendedLinks, or exShowDefaultLinks.
exShowCrossLinksTriangle | 64 | Shows triangular cross links. This flag can be combined with the exShowLinks, exShowExtendedLinks, or exShowDefaultLinks.
exShowCrossLinksMixt | 96 | Shows mixed cross links. This flag can be combined with the exShowLinks, exShowExtendedLinks, or exShowDefaultLinks.


constants ShowHandCursorOnEnum
The ShowHandCursorOnEnum type specifies the parts of the element where the hand cursor may be shown. The ShowHandCursorOn property specifies the parts of the control where the hand cursor is shown when the mouse-pointer hovers it. The HandCursorClick event occurs when the user clicks a part of the element. The ShowHandCursorOnEnum type supports the following values:

Name | Value | Description
exShowHandCursorNone | 0 | Specifies that no hand cursor is shown when hovering any anchor/icon/picture in the element.
exShowHandCursorPicture | 1 | Specifies that hand cursor is shown when hovering a picture in the element.
exShowHandCursorIcon | 2 | Specifies that hand cursor is shown when hovering an icon in the element.
exShowHandCursorAnchor | 4 | Specifies that hand cursor is shown when hovering any anchor on the element.
exShowHandCursorCheck | 8 | Specifies that hand cursor is shown when hovering the check-box of the element.
exShowHandCursorPictures | 256 | Specifies that hand cursor is shown when hovering the pictures.
exShowHandCursorExtraPictures | 512 | Specifies that hand cursor is shown when hovering the extra pictures.
exShowHandCursorCaption | 1024 | Specifies that hand cursor is shown when hovering pictures of the element's caption.
exShowHandCursorExtraCaption | 2048 | Specifies that hand cursor is shown when hovering pictures of the element's extra caption.
exShowHandCursorAnchorAll | 3076 | Specifies that the hand cursor is shown when hovering any anchor on the element.
exShowHandCursorAll | 3855 | Specifies that the hand cursor is shown when hovering any icon, picture, anchor, check parts of the element.


constants ShowLinksEnum
The ShowLinksEnum type specifies the way the incoming, outgoing or collapsed links are shown. The ShowLinksColor, ShowLinksStyle and ShowLinksWidth properties specifies the color, style and width of incoming, outgoing or collapsed links ( relative to selected elements ). The ShowLinksEnum type supports the following values.

Name | Value | Description
exShowLinksStartFrom | 1 | Shows the links that starts from selected elements. Use this flag to show the outgoing links of selected elements with a different color, style or width.
exShowLinksEndTo | 2 | Shows the links that ends on the selected elements. Use this flag to show the incoming links of selected elements with a different color, style or width.
exShowUnselectedLinks | 4 | Shows the links that are not related to any selected element.
exShowCollapsedLinks | 8 | Shows the collapsed links. Use this flag to show the collapsed links with a different color, style or width. The ShowLinksOnCollapse property shows when the collapsed links ate shown or hidden.
exUpdateColorLinksOnly | 16 | (reserved) Prevents applying the link's color to related elements.


constants ShowLinkTypeEnum
The ShowLinkTypeEnum type defines the type of links the control can show between element on the surface. The control's ShowLinksType property specifies the type of the links to be shown on the surface. The ShowLinkTypeEnum type supports the following values:

Name | Value | Description
exLinkRectangular | 0 |
exLinkRound | 3 |
exLinkDirect | 1 |
exLinkStraight | 2 |


constants UIVisualThemeEnum
The UIVisualThemeEnum expression specifies the UI parts that the control can shown using the current visual theme. The UseVisualTheme property specifies whether the UI parts of the control are displayed using the current visual theme.

Name | Value | Description
exNoVisualTheme | 0 | exNoVisualTheme
exDefaultVisualTheme | 16777215 | exDefaultVisualTheme
exHeaderVisualTheme | 1 | exHeaderVisualTheme
exFilterBarVisualTheme | 2 | exFilterBarVisualTheme
exButtonsVisualTheme | 4 | exButtonsVisualTheme
exCalendarVisualTheme | 8 | exCalendarVisualTheme
exSliderVisualTheme | 16 | exSliderVisualTheme
exSpinVisualTheme | 32 | exSpinVisualTheme
exCheckBoxVisualTheme | 64 | exCheckBoxVisualTheme
exProgressVisualTheme | 128 | exProgressVisualTheme
exCalculatorVisualTheme | 256 | exCalculatorVisualTheme


Appearance object
The component lets the user changes its visual appearance using skins, each one providing an additional visual experience that enhances viewing pleasure. Skins are relatively easy to build and put on any part of the control. The Appearance object holds a collection of skins. Use the VisualAppearance property to access the Appearance object of the control. Also, you can use the VisualDesign property to design the visual appearance of the control at design mode.

The following screen shot shows the control with a different visual appeearance:

The Appearance object supports the following properties and methods:

Name | Description
Add | Adds or replaces a skin object to the control.
Clear | Removes all skins in the control.
Remove | Removes a specific skin from the control.
RenderType | Specifies the way colored EBN objects are displayed on the component.


method Add

method Appearance.Add (ID as Long, Skin as Variant)
Adds or replaces a skin object to the control.

Type | Description
ID as Long | A Long expression that indicates the index of the skin being added or replaced. The value must be between 1 and 126, so Appearance collection should holds no more than 126 elements.
Skin as Variant A string expression that indicates:
  • an Windows XP Theme part, it should start with "XP:". For instance the "XP:Header 1 2" indicates the part 1 of the Header class in the state 2, in the current Windows XP theme. In this case the format of the Skin parameter should be: "XP: Control/ClassName Part State" where the ClassName defines the window/control class name in the Windows XP Theme, the Part indicates a long expression that defines the part, and the State indicates the state like listed at the end of the document. This option is available only on Windows XP that supports Themes API.
  • copy of another skin with different coordinates, if it begins with "CP:" . For instance, you may need to display a specified skin on a smaller rectangle. In this case, the string starts with "CP:", and contains the following "CP:n l t r b", where the n is the identifier being copied, the l, t, r, and b indicate the left, top, right and bottom coordinates being used to adjust the rectangle where the skin is displayed. For instance, the "CP:1 4 0 -4 0", indicates that the skin is displayed on a smaller rectangle like follows. Let's say that the control requests painting the {10, 10, 30, 20} area, a rectangle with the width of 20 pixels, and the height of 10 pixels, the skin will be displayed on the {14,10,26,20} as each coordinates in the "CP" syntax is added to the displayed rectangle, so the skin looks smaller. This way you can apply different effects to your objects in your control. The following screen shot shows the control's header when using a "CP:1 -6 -6 6 6", that displays the original skin on larger rectanges .

  • the path to the skin file ( *.ebn ). The Exontrol's exButton component installs a skin builder that should be used to create new skins
  • the BASE64 encoded string that holds a skin file ( *.ebn ). Use the Exontrol's exImages tool to build BASE 64 encoded strings on the skin file (*.ebn) you have created. Loading the skin from a file ( eventually uncompressed file ) is always faster then loading from a BASE64 encoded string

A byte[] or safe arrays of VT_I1 or VT_UI1 expression that indicates the content of the EBN file. You can use this option when using the EBN file directly in the resources of the project. For instance, the VB6 provides the LoadResData to get the safe array o bytes for specified resource, while in VB/NET or C# the internal class Resources provides definitions for all files being inserted. ( ResourceManager.GetObject("ebn", resourceCulture) ).

Return | Description
Boolean | A Boolean expression that indicates whether the new skin was added or replaced.
Use the Add method to add or replace skins to the control. The skin method, in it's simplest form, uses a single graphic file (*.ebn) assigned to a part of the control. By using a collection of objects laid over the graphic, it is possible to define which sections of the graphic will be used as borders, corners and other possible elements, fixing them to their proper position regardless of the size of the part. Use the Remove method to remove a specific skin from the control. Use the Clear method to remove all skins in the control. Use the BeginUpdate and EndUpdate methods to maintain performance while init the control. Use the Refresh method to refresh the control.

The identifier you choose for the skin is very important to be used in the background properties like explained bellow. Shortly, the color properties uses 4 bytes ( DWORD, double WORD, and so on ) to hold a RGB value. More than that, the first byte ( most significant byte in the color ) is used only to specify system color. if the first bit in the byte is 1, the rest of bits indicates the index of the system color being used. So, we use the last 7 bits in the high significant byte of the color to indicates the identifier of the skin being used. So, since the 7 bits can cover 127 values, excluding 0, we have 126 possibilities to store an identifier in that byte. This way, a DWORD expression indicates the background color stored in RRGGBB format and the index of the skin ( ID parameter ) in the last 7 bits in the high significant byte of the color. For instance, the BackColor = BackColor Or &H2000000 indicates that we apply the skin with the index 2 using the old color, to the object that BackColor is applied.

On Windows XP, the following table shows how the common controls are broken into parts and states:

Control/ClassName | Part | States
BUTTON | BP_CHECKBOX = 3 | CBS_UNCHECKEDNORMAL = 1 CBS_UNCHECKEDHOT = 2 CBS_UNCHECKEDPRESSED = 3 CBS_UNCHECKEDDISABLED = 4 CBS_CHECKEDNORMAL = 5 CBS_CHECKEDHOT = 6 CBS_CHECKEDPRESSED = 7 CBS_CHECKEDDISABLED = 8 CBS_MIXEDNORMAL = 9 CBS_MIXEDHOT = 10 CBS_MIXEDPRESSED = 11 CBS_MIXEDDISABLED = 12
 | BP_GROUPBOX = 4 | GBS_NORMAL = 1 GBS_DISABLED = 2
 | BP_PUSHBUTTON = 1 | PBS_NORMAL = 1 PBS_HOT = 2 PBS_PRESSED = 3 PBS_DISABLED = 4 PBS_DEFAULTED = 5
 | BP_RADIOBUTTON = 2 | RBS_UNCHECKEDNORMAL = 1 RBS_UNCHECKEDHOT = 2 RBS_UNCHECKEDPRESSED = 3 RBS_UNCHECKEDDISABLED = 4 RBS_CHECKEDNORMAL = 5 RBS_CHECKEDHOT = 6 RBS_CHECKEDPRESSED = 7 RBS_CHECKEDDISABLED = 8
 | BP_USERBUTTON = 5 |
CLOCK | CLP_TIME = 1 | CLS_NORMAL = 1
COMBOBOX | CP_DROPDOWNBUTTON = 1 | CBXS_NORMAL = 1 CBXS_HOT = 2 CBXS_PRESSED = 3 CBXS_DISABLED = 4
EDIT | EP_CARET = 2 |
 | EP_EDITTEXT = 1 | ETS_NORMAL = 1 ETS_HOT = 2 ETS_SELECTED = 3 ETS_DISABLED = 4 ETS_FOCUSED = 5 ETS_READONLY = 6 ETS_ASSIST = 7
EXPLORERBAR | EBP_HEADERBACKGROUND = 1 |
 | EBP_HEADERCLOSE = 2 | EBHC_NORMAL = 1 EBHC_HOT = 2 EBHC_PRESSED = 3
 | EBP_HEADERPIN = 3 | EBHP_NORMAL = 1 EBHP_HOT = 2 EBHP_PRESSED = 3 EBHP_SELECTEDNORMAL = 4 EBHP_SELECTEDHOT = 5 EBHP_SELECTEDPRESSED = 6
 | EBP_IEBARMENU = 4 | EBM_NORMAL = 1 EBM_HOT = 2 EBM_PRESSED = 3
 | EBP_NORMALGROUPBACKGROUND = 5 |
 | EBP_NORMALGROUPCOLLAPSE = 6 | EBNGC_NORMAL = 1 EBNGC_HOT = 2 EBNGC_PRESSED = 3
 | EBP_NORMALGROUPEXPAND = 7 | EBNGE_NORMAL = 1 EBNGE_HOT = 2 EBNGE_PRESSED = 3
 | EBP_NORMALGROUPHEAD = 8 |
 | EBP_SPECIALGROUPBACKGROUND = 9 |
 | EBP_SPECIALGROUPCOLLAPSE = 10 | EBSGC_NORMAL = 1 EBSGC_HOT = 2 EBSGC_PRESSED = 3
 | EBP_SPECIALGROUPEXPAND = 11 | EBSGE_NORMAL = 1 EBSGE_HOT = 2 EBSGE_PRESSED = 3
 | EBP_SPECIALGROUPHEAD = 12 |
HEADER | HP_HEADERITEM = 1 | HIS_NORMAL = 1 HIS_HOT = 2 HIS_PRESSED = 3
 | HP_HEADERITEMLEFT = 2 | HILS_NORMAL = 1 HILS_HOT = 2 HILS_PRESSED = 3
 | HP_HEADERITEMRIGHT = 3 | HIRS_NORMAL = 1 HIRS_HOT = 2 HIRS_PRESSED = 3
 | HP_HEADERSORTARROW = 4 | HSAS_SORTEDUP = 1 HSAS_SORTEDDOWN = 2
LISTVIEW | LVP_EMPTYTEXT = 5 |
 | LVP_LISTDETAIL = 3 |
 | LVP_LISTGROUP = 2 |
 | LVP_LISTITEM = 1 | LIS_NORMAL = 1 LIS_HOT = 2 LIS_SELECTED = 3 LIS_DISABLED = 4 LIS_SELECTEDNOTFOCUS = 5
 | LVP_LISTSORTEDDETAIL = 4 |
MENU | MP_MENUBARDROPDOWN = 4 | MS_NORMAL = 1 MS_SELECTED = 2 MS_DEMOTED = 3
 | MP_MENUBARITEM = 3 | MS_NORMAL = 1 MS_SELECTED = 2 MS_DEMOTED = 3
 | MP_CHEVRON = 5 | MS_NORMAL = 1 MS_SELECTED = 2 MS_DEMOTED = 3
 | MP_MENUDROPDOWN = 2 | MS_NORMAL = 1 MS_SELECTED = 2 MS_DEMOTED = 3
 | MP_MENUITEM = 1 | MS_NORMAL = 1 MS_SELECTED = 2 MS_DEMOTED = 3
 | MP_SEPARATOR = 6 | MS_NORMAL = 1 MS_SELECTED = 2 MS_DEMOTED = 3
MENUBAND | MDP_NEWAPPBUTTON = 1 | MDS_NORMAL = 1 MDS_HOT = 2 MDS_PRESSED = 3 MDS_DISABLED = 4 MDS_CHECKED = 5 MDS_HOTCHECKED = 6
 | MDP_SEPERATOR = 2 |
PAGE | PGRP_DOWN = 2 | DNS_NORMAL = 1 DNS_HOT = 2 DNS_PRESSED = 3 DNS_DISABLED = 4
 | PGRP_DOWNHORZ = 4 | DNHZS_NORMAL = 1 DNHZS_HOT = 2 DNHZS_PRESSED = 3 DNHZS_DISABLED = 4
 | PGRP_UP = 1 | UPS_NORMAL = 1 UPS_HOT = 2 UPS_PRESSED = 3 UPS_DISABLED = 4
 | PGRP_UPHORZ = 3 | UPHZS_NORMAL = 1 UPHZS_HOT = 2 UPHZS_PRESSED = 3 UPHZS_DISABLED = 4
PROGRESS | PP_BAR = 1 |
 | PP_BARVERT = 2 |
 | PP_CHUNK = 3 |
 | PP_CHUNKVERT = 4 |
REBAR | RP_BAND = 3 |
 | RP_CHEVRON = 4 | CHEVS_NORMAL = 1 CHEVS_HOT = 2 CHEVS_PRESSED = 3
 | RP_CHEVRONVERT = 5 |
 | RP_GRIPPER = 1 |
 | RP_GRIPPERVERT = 2 |
SCROLLBAR | SBP_ARROWBTN = 1 | ABS_DOWNDISABLED, ABS_DOWNHOT, ABS_DOWNNORMAL, ABS_DOWNPRESSED, ABS_UPDISABLED, ABS_UPHOT, ABS_UPNORMAL, ABS_UPPRESSED, ABS_LEFTDISABLED, ABS_LEFTHOT, ABS_LEFTNORMAL, ABS_LEFTPRESSED, ABS_RIGHTDISABLED, ABS_RIGHTHOT, ABS_RIGHTNORMAL, ABS_RIGHTPRESSED
 | SBP_GRIPPERHORZ = 8 |
 | SBP_GRIPPERVERT = 9 |
 | SBP_LOWERTRACKHORZ = 4 | SCRBS_NORMAL = 1 SCRBS_HOT = 2 SCRBS_PRESSED = 3 SCRBS_DISABLED = 4
 | SBP_LOWERTRACKVERT = 6 | SCRBS_NORMAL = 1 SCRBS_HOT = 2 SCRBS_PRESSED = 3 SCRBS_DISABLED = 4
 | SBP_THUMBBTNHORZ = 2 | SCRBS_NORMAL = 1 SCRBS_HOT = 2 SCRBS_PRESSED = 3 SCRBS_DISABLED = 4
 | SBP_THUMBBTNVERT = 3 | SCRBS_NORMAL = 1 SCRBS_HOT = 2 SCRBS_PRESSED = 3 SCRBS_DISABLED = 4
 | SBP_UPPERTRACKHORZ = 5 | SCRBS_NORMAL = 1 SCRBS_HOT = 2 SCRBS_PRESSED = 3 SCRBS_DISABLED = 4
 | SBP_UPPERTRACKVERT = 7 | SCRBS_NORMAL = 1 SCRBS_HOT = 2 SCRBS_PRESSED = 3 SCRBS_DISABLED = 4
 | SBP_SIZEBOX = 10 | SZB_RIGHTALIGN = 1 SZB_LEFTALIGN = 2
SPIN | SPNP_DOWN = 2 | DNS_NORMAL = 1 DNS_HOT = 2 DNS_PRESSED = 3 DNS_DISABLED = 4
 | SPNP_DOWNHORZ = 4 | DNHZS_NORMAL = 1 DNHZS_HOT = 2 DNHZS_PRESSED = 3 DNHZS_DISABLED = 4
 | SPNP_UP = 1 | UPS_NORMAL = 1 UPS_HOT = 2 UPS_PRESSED = 3 UPS_DISABLED = 4
 | SPNP_UPHORZ = 3 | UPHZS_NORMAL = 1 UPHZS_HOT = 2 UPHZS_PRESSED = 3 UPHZS_DISABLED = 4
STARTPANEL | SPP_LOGOFF = 8 |
 | SPP_LOGOFFBUTTONS = 9 | SPLS_NORMAL = 1 SPLS_HOT = 2 SPLS_PRESSED = 3
 | SPP_MOREPROGRAMS = 2 |
 | SPP_MOREPROGRAMSARROW = 3 | SPS_NORMAL = 1 SPS_HOT = 2 SPS_PRESSED = 3
 | SPP_PLACESLIST = 6 |
 | SPP_PLACESLISTSEPARATOR = 7 |
 | SPP_PREVIEW = 11 |
 | SPP_PROGLIST = 4 |
 | SPP_PROGLISTSEPARATOR = 5 |
 | SPP_USERPANE = 1 |
 | SPP_USERPICTURE = 10 |
STATUS | SP_GRIPPER = 3 |
 | SP_PANE = 1 |
 | SP_GRIPPERPANE = 2 |
TAB | TABP_BODY = 10 |
 | TABP_PANE = 9 |
 | TABP_TABITEM = 1 | TIS_NORMAL = 1 TIS_HOT = 2 TIS_SELECTED = 3 TIS_DISABLED = 4 TIS_FOCUSED = 5
 | TABP_TABITEMBOTHEDGE = 4 | TIBES_NORMAL = 1 TIBES_HOT = 2 TIBES_SELECTED = 3 TIBES_DISABLED = 4 TIBES_FOCUSED = 5
 | TABP_TABITEMLEFTEDGE = 2 | TILES_NORMAL = 1 TILES_HOT = 2 TILES_SELECTED = 3 TILES_DISABLED = 4 TILES_FOCUSED = 5
 | TABP_TABITEMRIGHTEDGE = 3 | TIRES_NORMAL = 1 TIRES_HOT = 2 TIRES_SELECTED = 3 TIRES_DISABLED = 4 TIRES_FOCUSED = 5
 | TABP_TOPTABITEM = 5 | TTIS_NORMAL = 1 TTIS_HOT = 2 TTIS_SELECTED = 3 TTIS_DISABLED = 4 TTIS_FOCUSED = 5
 | TABP_TOPTABITEMBOTHEDGE = 8 | TTIBES_NORMAL = 1 TTIBES_HOT = 2 TTIBES_SELECTED = 3 TTIBES_DISABLED = 4 TTIBES_FOCUSED = 5
 | TABP_TOPTABITEMLEFTEDGE = 6 | TTILES_NORMAL = 1 TTILES_HOT = 2 TTILES_SELECTED = 3 TTILES_DISABLED = 4 TTILES_FOCUSED = 5
 | TABP_TOPTABITEMRIGHTEDGE = 7 | TTIRES_NORMAL = 1 TTIRES_HOT = 2 TTIRES_SELECTED = 3 TTIRES_DISABLED = 4 TTIRES_FOCUSED = 5
TASKBAND | TDP_GROUPCOUNT = 1 |
 | TDP_FLASHBUTTON = 2 |
 | TDP_FLASHBUTTONGROUPMENU = 3 |
TASKBAR | TBP_BACKGROUNDBOTTOM = 1 |
 | TBP_BACKGROUNDLEFT = 4 |
 | TBP_BACKGROUNDRIGHT = 2 |
 | TBP_BACKGROUNDTOP = 3 |
 | TBP_SIZINGBARBOTTOM = 5 |
 | TBP_SIZINGBARBOTTOMLEFT = 8 |
 | TBP_SIZINGBARRIGHT = 6 |
 | TBP_SIZINGBARTOP = 7 |
TOOLBAR | TP_BUTTON = 1 | TS_NORMAL = 1 TS_HOT = 2 TS_PRESSED = 3 TS_DISABLED = 4 TS_CHECKED = 5 TS_HOTCHECKED = 6
 | TP_DROPDOWNBUTTON = 2 | TS_NORMAL = 1 TS_HOT = 2 TS_PRESSED = 3 TS_DISABLED = 4 TS_CHECKED = 5 TS_HOTCHECKED = 6
 | TP_SPLITBUTTON = 3 | TS_NORMAL = 1 TS_HOT = 2 TS_PRESSED = 3 TS_DISABLED = 4 TS_CHECKED = 5 TS_HOTCHECKED = 6
 | TP_SPLITBUTTONDROPDOWN = 4 | TS_NORMAL = 1 TS_HOT = 2 TS_PRESSED = 3 TS_DISABLED = 4 TS_CHECKED = 5 TS_HOTCHECKED = 6
 | TP_SEPARATOR = 5 | TS_NORMAL = 1 TS_HOT = 2 TS_PRESSED = 3 TS_DISABLED = 4 TS_CHECKED = 5 TS_HOTCHECKED = 6
 | TP_SEPARATORVERT = 6 | TS_NORMAL = 1 TS_HOT = 2 TS_PRESSED = 3 TS_DISABLED = 4 TS_CHECKED = 5 TS_HOTCHECKED = 6
TOOLTIP | TTP_BALLOON = 3 | TTBS_NORMAL = 1 TTBS_LINK = 2
 | TTP_BALLOONTITLE = 4 | TTBS_NORMAL = 1 TTBS_LINK = 2
 | TTP_CLOSE = 5 | TTCS_NORMAL = 1 TTCS_HOT = 2 TTCS_PRESSED = 3
 | TTP_STANDARD = 1 | TTSS_NORMAL = 1 TTSS_LINK = 2
 | TTP_STANDARDTITLE = 2 | TTSS_NORMAL = 1 TTSS_LINK = 2
TRACKBAR | TKP_THUMB = 3 | TUS_NORMAL = 1 TUS_HOT = 2 TUS_PRESSED = 3 TUS_FOCUSED = 4 TUS_DISABLED = 5
 | TKP_THUMBBOTTOM = 4 | TUBS_NORMAL = 1 TUBS_HOT = 2 TUBS_PRESSED = 3 TUBS_FOCUSED = 4 TUBS_DISABLED = 5
 | TKP_THUMBLEFT = 7 | TUVLS_NORMAL = 1 TUVLS_HOT = 2 TUVLS_PRESSED = 3 TUVLS_FOCUSED = 4 TUVLS_DISABLED = 5
 | TKP_THUMBRIGHT = 8 | TUVRS_NORMAL = 1 TUVRS_HOT = 2 TUVRS_PRESSED = 3 TUVRS_FOCUSED = 4 TUVRS_DISABLED = 5
 | TKP_THUMBTOP = 5 | TUTS_NORMAL = 1 TUTS_HOT = 2 TUTS_PRESSED = 3 TUTS_FOCUSED = 4 TUTS_DISABLED = 5
 | TKP_THUMBVERT = 6 | TUVS_NORMAL = 1 TUVS_HOT = 2 TUVS_PRESSED = 3 TUVS_FOCUSED = 4 TUVS_DISABLED = 5
 | TKP_TICS = 9 | TSS_NORMAL = 1
 | TKP_TICSVERT = 10 | TSVS_NORMAL = 1
 | TKP_TRACK = 1 | TRS_NORMAL = 1
 | TKP_TRACKVERT = 2 | TRVS_NORMAL = 1
TRAYNOTIFY | TNP_ANIMBACKGROUND = 2 |
 | TNP_BACKGROUND = 1 |
TREEVIEW | TVP_BRANCH = 3 |
 | TVP_GLYPH = 2 | GLPS_CLOSED = 1 GLPS_OPENED = 2
 | TVP_TREEITEM = 1 | TREIS_NORMAL = 1 TREIS_HOT = 2 TREIS_SELECTED = 3 TREIS_DISABLED = 4 TREIS_SELECTEDNOTFOCUS = 5
WINDOW | WP_CAPTION = 1 | CS_ACTIVE = 1 CS_INACTIVE = 2 CS_DISABLED = 3
 | WP_CAPTIONSIZINGTEMPLATE = 30 |
 | WP_CLOSEBUTTON = 18 | CBS_NORMAL = 1 CBS_HOT = 2 CBS_PUSHED = 3 CBS_DISABLED = 4
 | WP_DIALOG = 29 |
 | WP_FRAMEBOTTOM = 9 | FS_ACTIVE = 1 FS_INACTIVE = 2
 | WP_FRAMEBOTTOMSIZINGTEMPLATE = 36 |
 | WP_FRAMELEFT = 7 | FS_ACTIVE = 1 FS_INACTIVE = 2
 | WP_FRAMELEFTSIZINGTEMPLATE = 32 |
 | WP_FRAMERIGHT = 8 | FS_ACTIVE = 1 FS_INACTIVE = 2
 | WP_FRAMERIGHTSIZINGTEMPLATE = 34 |
 | WP_HELPBUTTON = 23 | HBS_NORMAL = 1 HBS_HOT = 2 HBS_PUSHED = 3 HBS_DISABLED = 4
 | WP_HORZSCROLL = 25 | HSS_NORMAL = 1 HSS_HOT = 2 HSS_PUSHED = 3 HSS_DISABLED = 4
 | WP_HORZTHUMB = 26 | HTS_NORMAL = 1 HTS_HOT = 2 HTS_PUSHED = 3 HTS_DISABLED = 4
 | WP_MAX_BUTTON | MAXBS_NORMAL = 1 MAXBS_HOT = 2 MAXBS_PUSHED = 3 MAXBS_DISABLED = 4
 | WP_MAXCAPTION = 5 | MXCS_ACTIVE = 1 MXCS_INACTIVE = 2 MXCS_DISABLED = 3
 | WP_MDICLOSEBUTTON = 20 | CBS_NORMAL = 1 CBS_HOT = 2 CBS_PUSHED = 3 CBS_DISABLED = 4
 | WP_MDIHELPBUTTON = 24 | HBS_NORMAL = 1 HBS_HOT = 2 HBS_PUSHED = 3 HBS_DISABLED = 4
 | WP_MDIMINBUTTON = 16 | MINBS_NORMAL = 1 MINBS_HOT = 2 MINBS_PUSHED = 3 MINBS_DISABLED = 4
 | WP_MDIRESTOREBUTTON = 22 | RBS_NORMAL = 1 RBS_HOT = 2 RBS_PUSHED = 3 RBS_DISABLED = 4
 | WP_MDISYSBUTTON = 14 | SBS_NORMAL = 1 SBS_HOT = 2 SBS_PUSHED = 3 SBS_DISABLED = 4
 | WP_MINBUTTON = 15 | MINBS_NORMAL = 1 MINBS_HOT = 2 MINBS_PUSHED = 3 MINBS_DISABLED = 4
 | WP_MINCAPTION = 3 | MNCS_ACTIVE = 1 MNCS_INACTIVE = 2 MNCS_DISABLED = 3
 | WP_RESTOREBUTTON = 21 | RBS_NORMAL = 1 RBS_HOT = 2 RBS_PUSHED = 3 RBS_DISABLED = 4
 | WP_SMALLCAPTION = 2 | CS_ACTIVE = 1 CS_INACTIVE = 2 CS_DISABLED = 3
 | WP_SMALLCAPTIONSIZINGTEMPLATE = 31 |
 | WP_SMALLCLOSEBUTTON = 19 | CBS_NORMAL = 1 CBS_HOT = 2 CBS_PUSHED = 3 CBS_DISABLED = 4
 | WP_SMALLFRAMEBOTTOM = 12 | FS_ACTIVE = 1 FS_INACTIVE = 2
 | WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE = 37 |
 | WP_SMALLFRAMELEFT = 10 | FS_ACTIVE = 1 FS_INACTIVE = 2
 | WP_SMALLFRAMELEFTSIZINGTEMPLATE = 33 |
 | WP_SMALLFRAMERIGHT = 11 | FS_ACTIVE = 1 FS_INACTIVE = 2
 | WP_SMALLFRAMERIGHTSIZINGTEMPLATE = 35 |
 | WP_SMALLHELPBUTTON | HBS_NORMAL = 1 HBS_HOT = 2 HBS_PUSHED = 3 HBS_DISABLED = 4
 | WP_SMALLMAXBUTTON | MAXBS_NORMAL = 1 MAXBS_HOT = 2 MAXBS_PUSHED = 3 MAXBS_DISABLED = 4
 | WP_SMALLMAXCAPTION = 6 | MXCS_ACTIVE = 1 MXCS_INACTIVE = 2 MXCS_DISABLED = 3
 | WP_SMALLMINCAPTION = 4 | MNCS_ACTIVE = 1 MNCS_INACTIVE = 2 MNCS_DISABLED = 3
 | WP_SMALLRESTOREBUTTON | RBS_NORMAL = 1 RBS_HOT = 2 RBS_PUSHED = 3 RBS_DISABLED = 4
 | WP_SMALLSYSBUTTON | SBS_NORMAL = 1 SBS_HOT = 2 SBS_PUSHED = 3 SBS_DISABLED = 4
 | WP_SYSBUTTON = 13 | SBS_NORMAL = 1 SBS_HOT = 2 SBS_PUSHED = 3 SBS_DISABLED = 4
 | WP_VERTSCROLL = 27 | VSS_NORMAL = 1 VSS_HOT = 2 VSS_PUSHED = 3 VSS_DISABLED = 4
 | WP_VERTTHUMB = 28 | VTS_NORMAL = 1 VTS_HOT = 2 VTS_PUSHED = 3 VTS_DISABLED = 4


method Clear

method Appearance.Clear ()
Removes all skins in the control.

Type Description
Use the Clear method to clear all skins from the control. Use the Remove method to remove a specific skin. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the background's part.


method Remove

method Appearance.Remove (ID as Long)
Removes a specific skin from the control.

Type | Description
ID as Long | A Long expression that indicates the index of the skin being removed.
Use the Remove method to remove a specific skin. The identifier of the skin being removed should be the same as when the skin was added using the Add method. Use the Clear method to clear all skins from the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the background's part.


property RenderType

property Appearance.RenderType as Long
Specifies the way colored EBN objects are displayed on the component.

Type | Description
Long | A long expression that indicates how the EBN objects are shown in the control, like explained bellow.
By default, the RenderType property is 0, which indicates an A-color scheme. The RenderType property can be used to change the colors for the entire control, for parts of the controls that uses EBN objects. The RenderType property is not applied to the currently XP-theme if using.

The RenderType property is applied to all parts that displays an EBN object. The properties of color type may support the EBN object if the property's description includes "A color expression that indicates the cell's background color. The last 7 bits in the high significant byte of the color to indicates the identifier of the skin being used. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the background's part." In other words, a property that supports EBN objects should be of format 0xIDRRGGBB, where the ID is the identifier of the EBN to be applied, while the BBGGRR is the (Red,Green,Blue, RGB-Color) color to be applied on the selected EBN. For instance, the 0x1000000 indicates displaying the EBN as it is, with no color applied, while the 0x1FF0000, applies the Blue color ( RGB(0x0,0x0,0xFF), RGB(0,0,255) on the EBN with the identifier 1. You can use the EBNColor tool to visualize applying EBN colors.

Click here [image] to watch a movie on how you can change the colors to be applied on EBN objects.

In the following screen shot the following objects displays the current EBN with a different color:

  • "A" in Red ( RGB(255,0,0 ), for instance the bar's property exBarColor is 0x10000FF
  • "B" in Green ( RGB(0,255,0 ), for instance the bar's property exBarColor is 0x100FF00
  • "C" in Blue ( RGB(0,0,255 ), for instance the bar's property exBarColor is 0x1FF0000
  • "Default", no color is specified, for instance the bar's property exBarColor is 0x1000000

The RenderType property could be one of the following:

  • -3, no color is applied. For instance, the BackColorHeader = &H1FF0000 is displayed as would be .BackColorHeader = &H1000000, so the 0xFF0000 color ( Blue color ) is ignored. You can use this option to allow the control displays the EBN colors or not.

  • -2, OR-color scheme. The color to be applied on the part of the control is a OR bit combination between the original EBN color and the specified color. For instance, the BackColorHeader = &H1FF0000, applies the OR bit for the entire Blue channel, or in other words, it applies a less Blue to the part of the control. This option should be used with solid colors (RGB(255,0,0), RGB(0,255,0), RGB(0,0,255), RGB(255,255,0), RGB(255,0,255), RGB(0,255,255),RGB(127,0,0),RGB(0,127,0), ... )

  • -1, AND-color scheme, The color to be applied on the part of the control is an AND bit combination between the original EBN color and the specified color. For instance, the BackColorHeader = &H1FF0000, applies the AND bit for the entire Blue channel, or in other words, it applies a more Blue to the part of the control. This option should be used with solid colors (RGB(255,0,0), RGB(0,255,0), RGB(0,0,255), RGB(255,255,0), RGB(255,0,255), RGB(0,255,255),RGB(127,0,0),RGB(0,127,0), ... )

  • 0, default, the specified color is applied to the EBN. For instance, the BackColorHeader = &H1FF0000, applies a Blue color to the object. This option could be used to specify any color for the part of the components, that support EBN objects, not only solid colors.

  • 0xAABBGGRR, where the AA a value between 0 to 255, which indicates the transparency, and RR, GG, BB the red, green and blue values. This option applies the same color to all parts that displays EBN objects, whit ignoring any specified color in the color property. For instance, the RenderType on 0x4000FFFF, indicates a 25% Yellow on EBN objects. The 0x40, or 64 in decimal, is a 25 % from in a 256 interal, and the 0x00FFFF, indicates the Yellow ( RGB(255,255,0) ). The same could be if the RenderType is 0x40000000 + vbYellow, or &H40000000 + RGB(255, 255, 0), and so, the RenderType could be the 0xAA000000 + Color, where the Color is the RGB format of the color.

The following picture shows the control with the RenderType property on 0x4000FFFF (25% Yellow, 0x40 or 64 in decimal is 25% from 256 ):

The following picture shows the control with the RenderType property on 0x8000FFFF (50% Yellow, 0x80 or 128 in decimal is 50% from 256 ):

The following picture shows the control with the RenderType property on 0xC000FFFF (75% Yellow, 0xC0 or 192 in decimal is 75% from 256 ):

The following picture shows the control with the RenderType property on 0xFF00FFFF (100% Yellow, 0xFF or 255 in decimal is 100% from 255 ):


Element object
The Element object defines an object on the surface.

The following screen shot marks an element:

The Element object supports the following properties and methods:

Name | Description
AutoHeight | Gets the height of the element to fit its content ( as if the AutoSize property is True ).
AutoSize | Specifies if the element computes its size automatically.
AutoWidth | Gets the width of the element to fit its content ( as if the AutoSize property is True ).
BackColor | Gets or sets a value that indicates the element's background color.
BackgroundExt | Indicates additional colors, text, images that can be displayed on the element's background using the EBN string format.
BackgroundExtValue | Specifies at runtime, the value of the giving property for specified part of the background extension.
Border | Specifies the style to display the element's border.
BorderColor | Gets or sets a value that indicates the element's border color.
BorderPadding | Returns or sets a value that indicates the padding of the element's borders.
BringToFront | Brings the element to front.
Caption | Gets or sets a value that indicates the HTML caption to be displayed on the element.
CaptionAlign | Indicates the alignment of the element's caption.
CaptionSingleLine | Specifies if the element's caption is displayed on single or multiple lines.
CenterOnLane | Centers the element on its lane.
CheckBoxAlign | Indicates the alignment of the element's checkbox.
Checked | Gets or sets a value that indicates the element's check-box state.
ClientPadding | Returns or sets a value that indicates the padding of the element's client.
Control | Specifies the identifier of the inner control hosted by the current element.
Copy | Creates a new copy of the current element.
Edit | Edits the element.
ElementFormat | Specifies the way the control shows the parts of the element.
Enabled | Gets or sets a value that indicates whether the element is enabled or disabled.
EndUpdateElement | Adds programmatically updated properties of the element to undo/redo queue.
EnsureVisible | Scrolls the surface to ensure that the current element fits the control's visible area.
ExtraCaption | Gets or sets a value that indicates the extra HTML caption to be displayed on the element.
ExtraCaptionAlign | Indicates the alignment of the element's extra caption.
ExtraCaptionSingleLine | Specifies if the element's extra caption is displayed on single or multiple lines.
ExtraPictures | Specifies the list of extra pictures to be displayed on the element.
ExtraPicturesAlign | Indicates the alignment of the element's extra picture.
FitToClient | Resizes or/and moves the entire chart to fit the element.
ForeColor | Gets or sets a value that indicates the element's foreground color.
Height | Specifies the height of the element.
ID | Specifies the element's unique identifier.
IncomingLinks | Returns a safe array of incoming links.
InflateSize | Increases or decreases the width and height of the element.
InvokeContextMenu | Invokes programmatically the element's default or customized context menu, and returns the identifier of the selected item.
LaneID | Returns or sets the identifier of the lane from the element.
License | Indicates the runtime license required to create the inner control.
MaxHeight | Specifies the maximum height of the element.
MaxWidth | Specifies the maximum width of the element.
MinHeight | Specifies the minimum height of the element.
MinWidth | Specifies the minimum width of the element.
MoveTo | Moves the element to a new position.
Object | Returns the inner object hosted by the current element.
OutgoingLinks | Returns a safe array of outgoing links.
OverviewColor | Gets or sets a value that indicates the element's overview color.
Padding | Returns or sets a value that indicates the padding of the element's background.
PathTo | Determines if there is any path from the current element to the specified element.
Pattern | Specifies the pattern to be shown on the element's background.
Picture | Retrieves or sets a graphic to be displayed in the control.
PictureDisplay | Retrieves or sets a value that indicates the way how the graphic is displayed on the element's background
Pictures | Specifies the list of pictures to be displayed on the element.
PicturesAlign | Indicates the alignment of the element's picture.
Resizable | Gets or sets a value that indicates whether the user can resize the element.
ScrollTo | Moves or scrolls the surface, so the current element aligns to the specified corner.
Selectable | Indicates if the element is selectable.
Selected | Indicates if the element is selected or unselected.
SendToBack | Sends the element to the back.
Shape | Specifies the shape to display the element.
ShowCheckBox | Gets or sets a value that indicates whether the element shows or hides the check-box.
ShowHandCursorOn | Specifies whether the hand cursor is shown when hovering the element.
StartUpdateElement | Starts changing properties of the element, so EndUpdateElement method adds programmatically updated properties to undo/redo queue.
StatusAlign | Specifies the alignment of the status inside the element.
StatusColor | Gets or sets a value that indicates the element's status color.
StatusPadding | Returns or sets a value that indicates the padding of the element's status.
StatusPattern | Specifies the pattern of the element's status
StatusSize | Specifies the size of the status inside the element.
ToolTip | Gets or sets a value (tooltip) that's displayed once the cursor hovers the element.
ToolTipTitle | Gets or sets a value (title) that's displayed once the cursor hovers the element.
Type | Specifies the element's type.
UserData | Indicates any extra data associated with the element.
Visible | Shows or hides the element.
Width | Specifies the width of the element.
Window | Returns or sets the handle of the window to be hosted by the element.
X | Specifies the element's x-position.
Y | Specifies the element's y-position.


property AutoHeight

property Element.AutoHeight as Long
Gets the height of the element to fit its content ( as if the AutoSize property is True ).

Type | Description
Long | A long expression that specifies the height required to display the element's content.
The AutoHeight property gets the height of the element's content as if the AutoSize property is True. The AutoWidth property gets the width required to display the element's content. The Width / Height property specifies the width / height of the element while the AutoSize property is False.


property AutoSize

property Element.AutoSize as Boolean
Specifies if the element computes its size automatically.

Type | Description
Boolean | A Boolean expression that specifies whether the size of the element based on its content.
By default, the AutoSize property is True, if it the Type is exElementHostDefault. While the AutoSize property is True, the element is not resizable. Its size is changed based on the element's content: caption, extra-caption, icons, and so on. The InflateSize property indicates the size to be added to the default auto-size for increasing the size of the element. The Padding, BorderPadding and StatusPadding properties specifies the padding to be applied on client, border and status parts of the element. The Caption property specifies the element's caption. The ExtraCaption property specifies the element's extra caption. The ShowCheckBox property indicates whether the element's checkbox is visible or hidden. If AutoSize property is False, you can use the Resizable on False to prevent resizing an element. If AutoSize property is True, the Width and the Height can not be changed programmatically. The MinWidth/MaxWidth and MinHeight/MaxHeight properties specifies the min/max size of the element. Use the AllowResizeElement property to specify whether the element can be resized at runtime.


property AutoWidth

property Element.AutoWidth as Long
Gets the width of the element to fit its content ( as if the AutoSize property is True ).

Type | Description
Long | A long expression that specifies the width required to display the element's content.
The AutoWidth property gets the height of the element's content as if the AutoSize property is True. The AutoHeight property gets the height required to display the element's content. The Width / Height property specifies the width / height of the element while the AutoSize property is False.


property BackColor

property Element.BackColor as Color
Gets or sets a value that indicates the element's background color.

Type | Description
Color | A Color expression that specifies the color to show element's background. The last 7 bits in the high significant byte of the color indicates the identifier of the skin being used to paint the part. Use the Add method to add new skins to the control. The -1 indicates that the element's background is transparent.
By default, the BackColor property is -1, which indicates that the element's background is transparent. The BackColor property specifies the element's background color/visual appearance/shape. The Background(exElementBackColor) property specifies the default background color / visual appearance. The ForeColor property specifies the element's foreground color. The Pattern property defines the pattern to be shown on the control's background. The Padding property defines the padding of the element. The BorderColor property specifies the color to show the border for a specific element. The StatusColor property specifies the color or the visual appearance to show the element's status part. The Picture property specifies the picture to be shown on the element's background. The PictureDisplay property specifies the way the element's picture is displayed on the element's background. The Shape property specifies the element's shape.

The following screen shot shows elements with different shapes using EBN colors.

The following screen shot shows elements with different shapes using EBN colors.


property BackgroundExt

property Element.BackgroundExt as String
Indicates additional colors, text, images that can be displayed on the object's background using the EBN string format.

Type | Description
String | A String expression ( "EBN String Format" ) that defines the layout of the UI to be applied on the object's background. The syntax of EBN String Format in BNF notation is shown bellow. You can use the EBN's Builder of eXButton/COM control to define visually the EBN String Format.
By default, the BodyBackgroundExt property is empty. Using the BodyBackgroundExt property you have unlimited options to show any HTML text, images, colors, EBNs, patterns, frames anywhere on the object's background. For instance, let's say you need to display more colors on the object's background, or just want to display an additional caption or image to a specified location on the object's background. The EBN String Format defines the parts of the EBN to be applied on the object's background. The EBN is a set of UI elements that are built as a tree where each element is anchored to its parent element. Use the BackgroundExtValue property to change at runtime any UI property for any part that composes the EBN String Format. The BodyBackgroundExt property is applied right after setting the object's backcolor, and before drawing the default object's captions, icons or pictures.

Complex samples:

Easy samples:

  • "[pattern=6]", shows the BDiagonal pattern on the object's background.

  • "[frame=RGB(255,0,0),framethick]", draws a red thick-border around the object.

  • "[frame=RGB(255,0,0),framethick,pattern=6,patterncolor=RGB(255,0,0)]", draws a red thick-border around the object, with a patter inside.

  • "[[patterncolor=RGB(255,0,0)](none[(4,4,100%-8,100%-8),pattern=0x006,patterncolor=RGB(255,0,0),frame=RGB(255,0,0),framethick])]", draws a red thick-border around the object, with a patter inside, with a 4-pixels wide padding:

  • "top[4,back=RGB(0,0,255)]", draws a blue line on the top side of the object's background, of 4-pixels wide.

  • "[text=`caption`,align=0x22]", shows the caption string aligned to the bottom-right side of the object's background.

  • "[text=`<img>flag</img>`,align=0x11]" shows the flag picture and the sweden string aligned to the bottom side of the object.

  • "left[10,back=RGB(255,0,0)]", draws a red line on the left side of the object's background, of 10-pixels wide.

  • "bottom[50%,pattern=6,frame]", shows the BDiagonal pattern with a border arround on the lower-half part of the object's background.

  • "root[text=`caption <b>2`,align=0x22](client[text=`caption <b>1`,align=0x20])", shows the caption 1 aligned to the bottom-left side, and the caption 2 to the bottom-right side

The Exontrol's eXButton WYSWYG Builder helps you to generate or view the EBN String Format, in the To String field as shown in the following screen shot:

The To String field of the EBN Builder defines the EBN String Format that can be used on BodyBackgroundExt property.

The EBN String Format syntax in BNF notation is defined like follows:

<EBN> ::= <elements> | <root> "(" [<elements>] ")"
<elements> ::= <element> [ "," <elements> ]
<root> ::= "root" [ <attributes> ] | [ <attributes> ]
<element> ::= <anchor> [ <attributes> ] [ "(" [<elements>] ")" ]
<anchor> ::= "none" | "left" | "right" | "client" | "top" | "bottom"
<attributes> ::= "[" [<client> ","] <attribute> [ "," <attributes> ] "]"
<client> ::= <expression> | <expression> "," <expression> "," <expression> "," <expression>
<expression> ::= <number> | <number> "%"
<attribute> ::= <backcolor> | <text> | <wordwrap> | <align> | <pattern> | <patterncolor> | <frame> | <framethick> | <data> | <others>
<equal> ::= "="
<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<decimal> ::= <digit><decimal>
<hexadigit> ::= <digit> | "A" | "B"  "C" | "D" | "E"  "F"
<hexa> ::= <hexadigit><hexa>
<number> ::= <decimal> | "0x" <hexa>
<color> ::= <rgbcolor> | number
<rgbcolor> ::= "RGB" "(" <number> "," <number> "," <number> ")"
<string> ::= "`" <characters> "`" | "'" <characters> "'" | " <characters> "
<characters> ::= <char>|<characters>
<char> ::= <any_character_excepts_null>
<backcolor> ::= "back" <equal> <color>
<text> ::= "text" <equal> <string>
<align> ::= "align" <equal> <number>
<pattern> ::= "pattern" <equal> <number>
<patterncolor> ::= "patterncolor" <equal> <color>
<frame> ::= "frame" <equal> <color>
<data> ::= "data" <equal> <number> | <string>
<framethick> ::= "framethick"
<wordwrap> ::= "wordwrap"

Others like: pic, stretch, hstretch, vstretch, transparent, from, to are reserved for future use only.

Now, lets say we have the following request to layout the colors on the objects:

We define the BodyBackgroundExt property such as "top[30%,back=RGB(253,218,101)],client[back=RGB(91,157,210)],none[(0%,0%,10%,100%)](top[90%,back=RGB(0,0,0)])", and it looks as:

so, if we apply to our object we got:

Now, lets say we have the following request to layout the colors on the objects:

We define BodyBackgroundExt property such as "left[10%](top[90%,back=RGB(0,0,0)]),top[30%,back=RGB(254,217,102)],client[back=RGB(91,156,212)]", and it looks as:

so, if we apply to our object we got:


property BackgroundExtValue

property Element.BackgroundExtValue(Index as IndexExtEnum, Property as BackgroundExtPropertyEnum) as Variant
Specifies at runtime, the value of the giving property for specified part of the background extension.

Type | Description
Index as IndexExtEnum | A Long expression that defines the index of the part that composes the EBN to be accessed / changed. The following screen shot shows where you can find Index of the parts: The screen shot shows that the EBN contains 11 elements, so in this case the Index starts at 0 ( root element ) and ends on 10.
Property as BackgroundExtPropertyEnum | A BackgroundExtPropertyEnum expression that specifies the property to be changed as explained bellow.
Variant | A Variant expression that defines the part's value. The Type of the expression depending on the Property parameter as explained bellow.
Use the BackgroundExtValue property to change at runtime any UI property for any part that composes the EBN String Format. The BackgroundExtValue property has no effect if the BodyBackgroundExt property is empty ( by default ). The idea is as follows: first you need to decide the layout of the UI to put on the object's background, using the BodyBackgroundExt property, and next ( if required ), you can change any property of any part of the background extension to a new value. In other words, let's say you have the same layout to be applied to some of your objects, so you specify the BodyBackgroundExt to be the same for them, and next use the BackgroundExtValue property to change particular properties ( like back-color, size, position, anchor ) for different objects.

You can access/define/change the following UI properties of the element:

  • exBackColorExt(1), Indicates the background color / EBN color to be shown on the part of the object. Sample: 255 indicates red, RGB(0,255,0) green, or 0x1000000. (Color/Numeric expression, The last 7 bits in the high significant byte of the color indicate the identifier of the skin being used )
  • exClientExt(2), Specifies the position/size of the object, depending on the object's anchor. The syntax of the exClientExt is related to the exAnchorExt value. For instance, if the object is anchored to the left side of the parent ( exAnchorExt = 1 ), the exClientExt specifies just the width of the part in pixels/percents, not including the position. In case, the exAnchorExt is client, the exClientExt has no effect. Sample: 50% indicates half of the parent, 25 indicates 25 pixels, or 50%-8 indicates 8-pixels left from the center of the parent. (String/Numeric expression)
  • exAnchorExt(3), Specifies the object's alignment relative to its parent. (Numeric expression)
  • exTextExt(4), Specifies the HTML text to be displayed on the object. (String expression)
  • exTextExtWordWrap(5), Specifies that the object is wrapping the text. The exTextExt value specifies the HTML text to be displayed on the part of the EBN object. This property has effect only if there is a text assigned to the part using the exTextExt flag. (Boolean expression)
  • exTextExtAlignment(6), Indicates the alignment of the text on the object. The exTextExt value specifies the HTML text to be displayed on the part of the EBN object. This property has effect only if there is a text assigned to the part using the exTextExt flag (Numeric expression)
  • exPatternExt(7), Indicates the pattern to be shown on the object. The exPatternColorExt specifies the color to show the pattern. (Numeric expression)
  • exPatternColorExt(8), Indicates the color to show the pattern on the object. The exPatternColorExt property has effect only if the exPatternExt property is not 0 ( empty ). The exFrameColorExt specifies the color to show the frame ( the exPatternExt property includes the exFrame or exFrameThick flag ). (Color expression)
  • exFrameColorExt(9), Indicates the color to show the border-frame on the object. This property set the Frame flag for exPatternExt property. (Color expression)
  • exFrameThickExt(11), Specifies that a thick-frame is shown around the object. This property set the FrameThick flag for exPatternExt property. (Boolean expression)
  • exUserDataExt(12), Specifies an extra-data associated with the object. (Variant expression)

For instance, having the BodyBackgroundExt on "bottom[50%,pattern=6,frame]"

we got:

so let's change the percent of 50% to 25% like BackgroundExtValue(1,2) on "25%", where 1 indicates the first element after root, and 2 indicates the exClientExt property, we get:

In VB you should have the following syntax:

.BodyBackgroundExt = "bottom[50%,pattern=6,frame]"
.BackgroundExtValue(exIndexExt1, exClientExt) = "25%"


property Border

property Element.Border as LinesStyleEnum
Specifies the style to display the element's border.

Type | Description
LinesStyleEnum | A LinesStyleEnum expression that defines the element's border, or exLinesInvalid for the default element's border defined by the Background(exElementBorder).
By default, the Border property is exLinesInvalid, which indicates that the control's Background(exElementBorder) property defines the element's border. Use the BorderColor property to specify a different border color. The BorderPadding property specifies the border padding. The BackColor property specifies the element's background color. The ForeColor property specifies the element's foreground color.


property BorderColor

property Element.BorderColor as Color
Gets or sets a value that indicates the element's border color.

Type | Description
Color | A Color expression that specifies the color to show element's border. The last 7 bits in the high significant byte of the color indicates the identifier of the skin being used to paint the part. Use the Add method to add new skins to the control.
By default, the BorderColor is -1, which indicates that the default border color is applied. The Background(exElementBorderColor) property specifies the default border color / visual appearance. Use the BorderColor property to specify a different border color. The Border property specifies the style to display the element's border. The BorderPadding property specifies the border padding. The BackColor property specifies the element's background color. The ForeColor property specifies the element's foreground color.


property BorderPadding

property Element.BorderPadding(Edge as PaddingEdgeEnum) as Long
Returns or sets a value that indicates the padding of the element's borders.

Type | Description
Edge as PaddingEdgeEnum | A PaddingEdgeEnum expression that specifies the edge to be changed
Long | A long expression that defines the padding
By default, BorderPadding property is 1. The BorderPadding property specifies the padding to be applied on borders, to define the position of the status and the body parts of the element. The StatusPadding property specifies the status padding. The Padding property specifies the body padding. The Border property specifies the style to display the element's border.

The following screen shot shows the element when BorderPadding is 1 (default):

The following screen shot shows the element when BorderPadding is 0:

The following screen shot shows the element when BorderPadding is 4:


method BringToFront

method Element.BringToFront ()
Brings the element to front.

Type Description
The BringToFront method brings the element to the front. The SendToBack method sends the current element to the back. For instance, if two element gets intersected, you can use the BringToFront method to bring one element on front, or SendToBack method to send the element on the back. The BringToFront and SendToBack methods changes the drawing order of the elements.


property Caption

property Element.Caption as String
Gets or sets a value that indicates the HTML caption to be displayed on the element.

Type | Description
String | A String expression that defines the HTML caption to be displayed on the element's background.
By default, the Caption property is empty. Use the Caption property to define the label or caption to be displayed on the element's background. The CaptionAlign property specifies the alignment of the caption relative to the edges of the element. The CaptionSingleLine property specifies whether the element's caption is displayed on single or multiple lines. The ExtraCaption property defines the second or the extra caption to be displayed on the element's background. The Images method loads icons to be displayed on the control's surface. The HTMLPicture property loads and assigns a picture to a key to be used on control's surface. Use the Pictures property to display one or more icons, picture to the element. Use the ElementFormat property to define how the parts of the element are displayed.

The Caption property supports the following HTML elements:

  • <b> ... </b> displays the text in bold
  • <i> ... </i> displays the text in italics
  • <u> ... </u> underlines the text
  • <s> ... </s> Strike-through text
  • <a id;options> ... </a> displays an anchor element that can be clicked. An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link.The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The control fires the AnchorClick(AnchorID, Options) event when the user clicks the anchor element. The FormatAnchor property customizes the visual effect for anchor elements.

    The control supports expandable HTML captions feature which allows you to expand(show)/collapse(hide) different information using <a ;exp=> or <a ;e64=> anchor tags. The exp/e64 field of the anchor stores the HTML line/lines to show once the user clicks/collapses/expands the caption.

    • exp, stores the plain text to be shown once the user clicks the anchor, such as <a ;exp=show lines>
    • e64, encodes in BASE64 the HTML text to be shown once the user clicks the anchor, such as <a ;e64=gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA>+</a> that displays show lines- in gray when the user clicks the + anchor. The gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA string encodes the <fgcolor 808080>show lines<a>-</a></fgcolor> The Decode64Text/Encode64Text methods of the eXPrint can be used to decode/encode e64 fields.

    Any ex-HTML caption can be transformed to an expandable-caption, by inserting the anchor ex-HTML tag. For instance, <solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3 shows the Header in underlined and bold on the first line and Line1, Line2, Line3 on the rest. The show lines is shown instead of Line1, Line2, Line3 once the user clicks the + sign.

  • <font face;size> ... </font> displays portions of text with a different font and/or different size. For instance, the <font Tahoma;12>bit</font> draws the bit text using the Tahoma font, on size 12 pt. If the name of the font is missing, and instead size is present, the current font is used with a different size. For instance, <font ;12>bit</font> displays the bit text using the current font, but with a different size.
  • <fgcolor rrggbb> ... </fgcolor> or <fgcolor=rrggbb> ... </fgcolor> displays text with a specified foreground color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <bgcolor rrggbb> ... </bgcolor> or <bgcolor=rrggbb> ... </bgcolor> displays text with a specified background color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <solidline rrggbb> ... </solidline> or <solidline=rrggbb> ... </solidline> draws a solid-line on the bottom side of the current text-line, of specified RGB color. The <solidline> ... </solidline> draws a black solid-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <dotline rrggbb> ... </dotline> or <dotline=rrggbb> ... </dotline> draws a dot-line on the bottom side of the current text-line, of specified RGB color. The <dotline> ... </dotline> draws a black dot-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <upline> ... </upline> draws the line on the top side of the current text-line (requires <solidline> or <dotline>).
  • <r> right aligns the text
  • <c> centers the text
  • <br> forces a line-break
  • <img>number[:width]</img> inserts an icon inside the text. The number indicates the index of the icon being inserted. Use the Images method to assign a list of icons to your chart. The last 7 bits in the high significant byte of the number expression indicates the identifier of the skin being used to paint the object. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the part. The width is optional and indicates the width of the icon being inserted. Using the width option you can overwrite multiple icons getting a nice effect. By default, if the width field is missing, the width is 18 pixels.
  • <img>key[:width]</img> inserts a custom size picture into the text being previously loaded using the HTMLPicture property. The Key parameter indicates the key of the picture being displayed. The Width parameter indicates a custom size, if you require to stretch the picture, else the original size of the picture is used.
  • & glyph characters as &amp; ( & ), &lt; ( < ), &gt; ( > ), &qout; ( " ) and &#number; ( the character with specified code ), For instance, the &#8364; displays the EUR character. The & ampersand is only recognized as markup when it is followed by a known letter or a #character and a digit. For instance if you want to display <b>bold</b> in HTML caption you can use &lt;b&gt;bold&lt;/b&gt;
  • <off offset> ... </off> defines the vertical offset to display the text/element. The offset parameter defines the offset to display the element. This tag is inheritable, so the offset is keep while the associated </off> tag is found. You can use the <off offset> HTML tag in combination with the <font face;size> to define a smaller or a larger font to be displayed. For instance: Text with <font ;7><off 6>subscript displays the text such as: Text with subscript The Text with <font ;7><off -6>superscript displays the text such as: Text with subscript
  • <gra rrggbb;mode;blend> ... </gra> defines a gradient text. The text color or <fgcolor> defines the starting gradient color, while the rr/gg/bb represents the red/green/blue values of the ending color, 808080 if missing as gray. The mode is a value between 0 and 4, 1 if missing, and blend could be 0 or 1, 0 if missing. The <font> HTML tag can be used to define the height of the font. Any of the rrggbb, mode or blend field may not be specified. The <gra> with no fields, shows a vertical gradient color from the current text color to gray (808080). For instance the <font ;18><gra FFFFFF;1;1>gradient-center</gra></font> generates the following picture:
  • <out rrggbb;width> ... </out> shows the text with outlined characters, where rr/gg/bb represents the red/green/blue values of the outline color, 808080 if missing as gray, width indicates the size of the outline, 1 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><out 000000><fgcolor=FFFFFF>outlined</fgcolor></out></font> generates the following picture:
  • <sha rrggbb;width;offset> ... </sha> define a text with a shadow, where rr/gg/bb represents the red/green/blue values of the shadow color, 808080 if missing as gray, width indicates the size of shadow, 4 if missing, and offset indicates the offset from the origin to display the text's shadow, 2 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><sha>shadow</sha></font> generates the following picture:

    or <font ;31><sha 404040;5;0><fgcolor=FFFFFF>outline anti-aliasing</fgcolor></sha></font> gets:


property CaptionAlign

property Element.CaptionAlign as ContentAlignmentEnum
Indicates the alignment of the element's caption.

Type Description
ContentAlignmentEnum A ContentAlignmentEnum expression that specifies the alignment of the element's caption relative to is edges. The CaptionAlign property supports additionally the following flag:
  • exWidth (4), to distribute the text on the element's width
The CaptionAlign property specifies the alignment of the caption relative to the edges of the element. The CaptionSingleLine property specifies whether the element's caption is displayed on single or multiple lines. Use the Caption property to define the label or caption to be displayed on the element's background. The ExtraCaption property defines the second or the extra caption to be displayed on the element's background. The Images method loads icons to be displayed on the control's surface. The HTMLPicture property loads and assigns a picture to a key to be used on control's surface.


property CaptionSingleLine

property Element.CaptionSingleLine as CaptionSingleLineEnum
Specifies if the element's caption is displayed on single or multiple lines.

Type | Description
CaptionSingleLineEnum | A CaptionSingleLineEnum expression that specifies whether the element's caption is displayed on single or multiple lines.
By default, the CaptionSingleLine property is exCaptionSingleLine. The CaptionSingleLine property specifies whether the element's caption is displayed on single or multiple lines. Use the Caption property to define the label or caption to be displayed on the element's background. The CaptionAlign property specifies the alignment of the caption relative to the edges of the element. The ExtraCaption property defines the second or the extra caption to be displayed on the element's background. The Images method loads icons to be displayed on the control's surface. The HTMLPicture property loads and assigns a picture to a key to be used on control's surface.


method CenterOnLane

method Element.CenterOnLane (Horizontal as Boolean)
Centers the element on its lane.

Type | Description
Horizontal as Boolean | A Boolean expression that specifies whether the element is centered on horizontal (True) or vertical (False) lanes.
The CenterOnLane property aligns the element relative to its lane. The X, Y properties of the Element specifies the position of the Element relative to surface. The LaneID property indicates the identifier of the lane from the element. The intersection of the lane with the element determines the lane of the element. Use the LaneByID property to access the lane object giving its identifier. Use the MoveTo method to move/resize the element to a new position / size.

The element or selection's context menu provides a Center-Lane item that allows to the user to center the elements at runtime:


property CheckBoxAlign

property Element.CheckBoxAlign as ContentAlignmentEnum
Indicates the alignment of the element's checkbox.

Type | Description
ContentAlignmentEnum | A ContentAlignmentEnum expression that specifies the alignment of the checkbox.
By default, the CheckBoxAlign property is exMiddleLeft. Use the CheckBoxAlign property to align the element's checkbox. The CheckElement event notifies your application once the user clicks the element's check-box. The ShowCheckBox property specifies whether the element displays the check-box. The Checked property indicates whether the element is checked or unchecked. The Background( exCheckBoxState0) Specifies the visual appearance for the check box in 0 state. The Background(exCheckBoxState1) Specifies the visual appearance for the check box in 1 state.


property Checked

property Element.Checked as CheckStateEnum
Gets or sets a value that indicates the element's check-box state.

Type | Description
CheckStateEnum | A CheckStateEnum expression that specifies the state of the element's check box.
By default, the Checked property is 0 ( unchecked ). The Checked property specifies the state of the element's check box. Use the ShowCheckBox property to show or hide the element's checkbox. The CheckElement event occurs once the state of the element's checkbox is changed. Use the CheckBoxAlign property to align the element's checkbox. The Background( exCheckBoxState0) Specifies the visual appearance for the check box in 0 state. The Background(exCheckBoxState1) Specifies the visual appearance for the check box in 1 state.


property ClientPadding

property Element.ClientPadding(Edge as PaddingEdgeEnum) as Long
Returns or sets a value that indicates the padding of the element's client.

Type | Description
Edge as PaddingEdgeEnum | A PaddingEdgeEnum expression that specifies the edge to be changed.
Long | A long expression that specifies the padding.
The ClientPadding property specifies the padding while the element's Type property is exElementHostWindow or exElementHostControl. The ClientPadding property has no effect if the element's Type property is exElementHostDefault ( by default ). The Padding property specifies the body/background padding if the element's Type property is exElementHostDefault ( by default ). The BorderPadding property specifies the padding to be applied on borders, to define the position of the status and the body parts of the element. The StatusPadding property specifies the status padding.


property Control

property Element.Control as String
Specifies the identifier of the inner control hosted by the current element.

Type | Description
String | A string expression that can be formatted as follows: a prog ID, a CLSID, a URL, a reference to an Active document , a fragment of HTML.
The control supports ActiveX hosting, or in other words, any element can host another inside controls. The Control property has effect only if the element's Type property is set on exElementHostControl. If you insert a runtime-licensed control you must specify the License property before calling the Control property. Use the ElementFormat property to specify the area where the inner control is displayed. The Object property returns a reference to newly created control. The control fires the OLEEvent event if an inside ActiveX control fires an event. Use the InsertControl property to add a new Element object with the Type set on exElementHostControl, that hosts an ActiveX control.

The Control property must be formatted in one of the following ways:

  • A ProgID such as "Exontrol.Grid"
  • A CLSID such as "{8E27C92B-1264-101C-8A2F-040224009C02}"
  • A URL such as "https://www.exontrol.com"
  • A reference to an Active document such as "c:\temp\myfile.doc", or "c:\temp\picture.gif"
  • A fragment of HTML such as "MSHTML:<HTML><BODY>This is a line of text</BODY></HTML>"
  • A fragment of XML

The look and feel of the inner ActiveX control depends on the identifier you are using, and the version of the library that implements the ActiveX control, so you need to consult the documentation of the inner ActiveX control you are inserting inside the exSwimLane control. The License property indicates a string expression that indicates the runtime license key for the component being inserted, if required. Only, the vendor of the component you are going to use is able to give you such of runtime license, so please contact the control's vendor for such of key. Your development license key is not compatible with the runtime license key, so it can't be used here.

The following screen shot shows the surface with different Exontrol.Button controls:

The following VB sample creates an element that hosts the Exontrol.Button control:

Private Sub SwimLane1_CreateElement(ByVal Element As EXSWIMLANELibCtl.IElement)
    With Element
        .Type = exElementHostControl
        .ElementFormat = """client"""
        .Control = "Exontrol.Button"
        With .Object
            .Caption = "<sha ;;0>Button " & SwimLane1.Elements.Count
        End With
    End With
End Sub

The samples changes the element's Type to exElementHostControl, and after that specifies the Control property to create the desired inner control.

The following samples shows how you can host the Exontrol.Button on the surface.

VBA (MS Access, Excell...)

With SwimLane1
    With .Elements
        With .Add("ActiveX")
            .Type = 2
            .ElementFormat = """check"":18,""client"""
            .ShowCheckBox = True
            .Control = "Exontrol.Button"
            .Object.Caption = "<sha ;;0>button"
            .Height = 32
            .Width = 128
        End With
    End With
End With

VB6

With SwimLane1
    With .Elements
        With .Add("ActiveX")
            .Type = exElementHostControl
            .ElementFormat = """check"":18,""client"""
            .ShowCheckBox = True
            .Control = "Exontrol.Button"
            .Object.Caption = "<sha ;;0>button"
            .Height = 32
            .Width = 128
        End With
    End With
End With

VB.NET

With Exswimlane1
    With .Elements
        With .Add("ActiveX")
            .Type = exontrol.EXSWIMLANELib.ElementHostTypeEnum.exElementHostControl
            .ElementFormat = """check"":18,""client"""
            .ShowCheckBox = True
            .Control = "Exontrol.Button"
            .Object.Caption = "<sha ;;0>button"
            .Height = 32
            .Width = 128
        End With
    End With
End With

VB.NET for /COM

With AxSwimLane1
    With .Elements
        With .Add("ActiveX")
            .Type = EXSWIMLANELib.ElementHostTypeEnum.exElementHostControl
            .ElementFormat = """check"":18,""client"""
            .ShowCheckBox = True
            .Control = "Exontrol.Button"
            .Object.Caption = "<sha ;;0>button"
            .Height = 32
            .Width = 128
        End With
    End With
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
EXSWIMLANELib::IElementsPtr var_Elements = spSwimLane1->GetElements();
    EXSWIMLANELib::IElementPtr var_Element = var_Elements->Add("ActiveX",vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
        var_Element->PutType(EXSWIMLANELib::exElementHostControl);
        var_Element->PutElementFormat(L"\"check\":18,\"client\"");
        var_Element->PutShowCheckBox(VARIANT_TRUE);
        var_Element->PutControl(L"Exontrol.Button");
        /*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXBUTTONLib' for the library: 'ExButton 1.0 Control Library'

    #import <ExButton.dll>
    using namespace EXBUTTONLib;
*/
        ((EXBUTTONLib::IButtonPtr)(var_Element->GetObject()))->PutCaption(L"<sha ;;0>button");
        var_Element->PutHeight(32);
        var_Element->PutWidth(128);

C++ Builder

Exswimlanelib_tlb::IElementsPtr var_Elements = SwimLane1->Elements;
    Exswimlanelib_tlb::IElementPtr var_Element = var_Elements->Add(TVariant("ActiveX"),TNoParam(),TNoParam(),TNoParam(),TNoParam(),TNoParam());
        var_Element->Type = Exswimlanelib_tlb::ElementHostTypeEnum::exElementHostControl;
        var_Element->ElementFormat = L"\"check\":18,\"client\"";
        var_Element->ShowCheckBox = true;
        var_Element->Control = L"Exontrol.Button";
        (IDispatch*)var_Element->Object->Caption = L"<sha ;;0>button";
        var_Element->Height = 32;
        var_Element->Width = 128;

C#

exontrol.EXSWIMLANELib.Elements var_Elements = exswimlane1.Elements;
    exontrol.EXSWIMLANELib.Element var_Element = var_Elements.Add("ActiveX",null,null,null,null,null);
        var_Element.Type = exontrol.EXSWIMLANELib.ElementHostTypeEnum.exElementHostControl;
        var_Element.ElementFormat = "\"check\":18,\"client\"";
        var_Element.ShowCheckBox = true;
        var_Element.Control = "Exontrol.Button";
        // Add 'ExButton 1.0 Control Library' reference to your project.
        (var_Element.Object as exontrol.EXBUTTONLib.exbutton).Caption = "<sha ;;0>button";
        var_Element.Height = 32;
        var_Element.Width = 128;

JavaScript

<OBJECT classid="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
    var var_Elements = SwimLane1.Elements;
        var var_Element = var_Elements.Add("ActiveX",null,null,null,null,null);
            var_Element.Type = 2;
            var_Element.ElementFormat = "\"check\":18,\"client\"";
            var_Element.ShowCheckBox = true;
            var_Element.Control = "Exontrol.Button";
            var_Element.Object.Caption = "<sha ;;0>button";
            var_Element.Height = 32;
            var_Element.Width = 128;
</SCRIPT>

C# for /COM

EXSWIMLANELib.Elements var_Elements = axSwimLane1.Elements;
    EXSWIMLANELib.Element var_Element = var_Elements.Add("ActiveX",null,null,null,null,null);
        var_Element.Type = EXSWIMLANELib.ElementHostTypeEnum.exElementHostControl;
        var_Element.ElementFormat = "\"check\":18,\"client\"";
        var_Element.ShowCheckBox = true;
        var_Element.Control = "Exontrol.Button";
        // Add 'ExButton 1.0 Control Library' reference to your project.
        (var_Element.Object as EXBUTTONLib.Button).Caption = "<sha ;;0>button";
        var_Element.Height = 32;
        var_Element.Width = 128;

X++ (Dynamics Ax 2009)

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

    super();

    var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
        var_Element = com_Elements.Add("ActiveX"); com_Element = var_Element;
            com_Element.Type(2/*exElementHostControl*/);
            com_Element.ElementFormat("\"check\":18,\"client\"");
            com_Element.ShowCheckBox(true);
            com_Element.Control("Exontrol.Button");
            var_Object = COM::createFromObject(com_Element.Object()); com_Object = var_Object;
            com_Object.Caption("<sha ;;0>button");
            com_Element.Height(32);
            com_Element.Width(128);
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    with Elements do
    begin
        with Add('ActiveX',Nil,Nil,Nil,Nil,Nil) do
        begin
            Type := EXSWIMLANELib.ElementHostTypeEnum.exElementHostControl;
            ElementFormat := '"check":18,"client"';
            ShowCheckBox := True;
            Control := 'Exontrol.Button';
            (Object as EXBUTTONLib.Button).Caption := '<sha ;;0>button';
            Height := 32;
            Width := 128;
        end;
    end;
end

Delphi (standard)

with SwimLane1 do
begin
    with Elements do
    begin
        with Add('ActiveX',Null,Null,Null,Null,Null) do
        begin
            Type := EXSWIMLANELib_TLB.exElementHostControl;
            ElementFormat := '"check":18,"client"';
            ShowCheckBox := True;
            Control := 'Exontrol.Button';
            (IUnknown(Object) as EXBUTTONLib_TLB.Button).Caption := '<sha ;;0>button';
            Height := 32;
            Width := 128;
        end;
    end;
end

VFP

with thisform.SwimLane1
    with .Elements
        with .Add("ActiveX")
            .Type = 2
            .ElementFormat = ""+chr(34)+"check"+chr(34)+":18,"+chr(34)+"client"+chr(34)+""
            .ShowCheckBox = .T.
            .Control = "Exontrol.Button"
            .Object.Caption = "<sha ;;0>button"
            .Height = 32
            .Width = 128
        endwith
    endwith
endwith

dBASE Plus

local oSwimLane,var_Element,var_Elements

oSwimLane = form.Activex1.nativeObject
var_Elements = oSwimLane.Elements
    var_Element = var_Elements.Add("ActiveX")
        var_Element.Type = 2
        var_Element.ElementFormat = "" + ["] + "check" + ["] + ":18," + ["] + "client" + ["] + ""
        var_Element.ShowCheckBox = true
        var_Element.Control = "Exontrol.Button"
        var_Element.Object.Caption = "<sha ;;0>button"
        var_Element.Height = 32
        var_Element.Width = 128

XBasic (Alpha Five)

Dim oSwimLane as P
Dim var_Element as P
Dim var_Elements as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
var_Elements = oSwimLane.Elements
    var_Element = var_Elements.Add("ActiveX")
        var_Element.Type = 2
        var_Element.ElementFormat = "\"check\":18,\"client\""
        var_Element.ShowCheckBox = .t.
        var_Element.Control = "Exontrol.Button"
        var_Element.Object.Caption = "<sha ;;0>button"
        var_Element.Height = 32
        var_Element.Width = 128

Visual Objects

local var_Element as IElement
local var_Elements as IElements

var_Elements := oDCOCX_Exontrol1:Elements
    var_Element := var_Elements:Add("ActiveX",nil,nil,nil,nil,nil)
        var_Element:Type := exElementHostControl
        var_Element:ElementFormat := "" + CHR(34) + "check" + CHR(34) + ":18," + CHR(34) + "client" + CHR(34) + ""
        var_Element:ShowCheckBox := true
        var_Element:Control := "Exontrol.Button"
        // Generate Source for 'ExButton 1.0 Control Library' server from Tools\Automation Server...
        IButton{var_Element:Object}:Caption := "<sha ;;0>button"
        var_Element:Height := 32
        var_Element:Width := 128

PowerBuilder

OleObject oSwimLane,var_Element,var_Elements

oSwimLane = ole_1.Object
var_Elements = oSwimLane.Elements
    var_Element = var_Elements.Add("ActiveX")
        var_Element.Type = 2
        var_Element.ElementFormat = "" + CHAR(34) + "check" + CHAR(34) + ":18," + CHAR(34) + "client" + CHAR(34) + ""
        var_Element.ShowCheckBox = true
        var_Element.Control = "Exontrol.Button"
        var_Element.Object.Caption = "<sha ;;0>button"
        var_Element.Height = 32
        var_Element.Width = 128

Visual DataFlex

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 "ActiveX" Nothing Nothing Nothing Nothing Nothing to voElement
        Handle hoElement
        Get Create (RefClass(cComElement)) to hoElement
        Set pvComObject of hoElement to voElement
            Set ComType of hoElement to OLEexElementHostControl
            Set ComElementFormat of hoElement to ""check":18,"client""
            Set ComShowCheckBox of hoElement to True
            Set ComControl of hoElement to "Exontrol.Button"
            Variant voButton
            Get ComObject of hoElement to voButton
            Handle hoButton
            Get Create (RefClass(cComButton)) to hoButton
            Set pvComObject of hoButton to voButton
                Set ComCaption of hoButton to "<sha ;;0>button"
            Send Destroy to hoButton
            Set ComHeight of hoElement to 32
            Set ComWidth of hoElement to 128
        Send Destroy to hoElement
    Send Destroy to hoElements
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oElement
    LOCAL oElements
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oElements := oSwimLane:Elements()
            oElement := oElements:Add("ActiveX")
                oElement:Type := 2/*exElementHostControl*/
                oElement:ElementFormat := "" + CHR(34) + "check" + CHR(34) + ":18," + CHR(34) + "client" + CHR(34) + ""
                oElement:ShowCheckBox := .T.
                oElement:Control := "Exontrol.Button"
                oElement:Object():Caption := "<sha ;;0>button"
                oElement:Height := 32
                oElement:Width := 128

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


method Copy

method Element.Copy ([X as Variant], [Y as Variant])
Creates a new copy of the current element.

Type | Description
X as Variant | A long expression that defines the copy's x-coordinate or a string expression that defines the x-offset to show the copy of the element. If empty, the default x-coordinate is "16", which indicates the offset to show the copy relative to the source.
Y as Variant | A long expression that defines the copy's y-coordinate or a string expression that defines the y-offset to show the copy of the element. If empty, the default y-coordinate is "16", which indicates the offset to show the copy relative to the source.
Return | Description
Element | An Element object that indicates the newly created copy.
The Copy property copies the current element, and returns the newly created element. The Copy property copies almost all properties of the element. The Add method adds programmatically a new element to the surface. Use the InsertControl method to insert programmatically a child element that hosts an inner ActiveX control.

The following samples shows how you can create a copy of the element:

VBA (MS Access, Excell...)

With SwimLane1
    .Background(90) = RGB(255,255,255)
    .Elements.Add("Element 1",0,0).Copy().Caption = "Aka"
End With

VB6

With SwimLane1
    .Background(exElementBackColor) = RGB(255,255,255)
    .Elements.Add("Element 1",0,0).Copy().Caption = "Aka"
End With

VB.NET

With Exswimlane1
    .set_Background(exontrol.EXSWIMLANELib.BackgroundPartEnum.exElementBackColor,Color.FromArgb(255,255,255))
    .Elements.Add("Element 1",0,0).Copy().Caption = "Aka"
End With

VB.NET for /COM

With AxSwimLane1
    .set_Background(EXSWIMLANELib.BackgroundPartEnum.exElementBackColor,16777215)
    .Elements.Add("Element 1",0,0).Copy().Caption = "Aka"
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
spSwimLane1->PutBackground(EXSWIMLANELib::exElementBackColor,RGB(255,255,255));
spSwimLane1->GetElements()->Add("Element 1",long(0),long(0))->Copy(vtMissing,vtMissing)->PutCaption(L"Aka");

C++ Builder

SwimLane1->Background[Exswimlanelib_tlb::BackgroundPartEnum::exElementBackColor] = RGB(255,255,255);
SwimLane1->Elements->Add(TVariant("Element 1"),TVariant(0),TVariant(0))->Copy(TNoParam(),TNoParam())->Caption = L"Aka";

C#

exswimlane1.set_Background(exontrol.EXSWIMLANELib.BackgroundPartEnum.exElementBackColor,Color.FromArgb(255,255,255));
exswimlane1.Elements.Add("Element 1",0,0).Copy(null,null).Caption = "Aka";

JScript/JavaScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
function Init()
{
    SwimLane1.Background(90) = 16777215;
    SwimLane1.Elements.Add("Element 1",0,0).Copy(null,null).Caption = "Aka";
}
</SCRIPT>
</BODY>

VBScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="VBScript">
Function Init()
    With SwimLane1
        .Background(90) = RGB(255,255,255)
        .Elements.Add("Element 1",0,0).Copy().Caption = "Aka"
    End With
End Function
</SCRIPT>
</BODY>

C# for /COM

axSwimLane1.set_Background(EXSWIMLANELib.BackgroundPartEnum.exElementBackColor,(uint)ColorTranslator.ToWin32(Color.FromArgb(255,255,255)));
axSwimLane1.Elements.Add("Element 1",0,0).Copy(null,null).Caption = "Aka";

X++ (Dynamics Ax 2009)

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

    super();

    exswimlane1.Background(90/*exElementBackColor*/,WinApi::RGB2int(255,255,255));
    var_Element = COM::createFromObject(exswimlane1.Elements()).Add("Element 1",COMVariant::createFromInt(0),COMVariant::createFromInt(0)); com_Element = var_Element;
    var_Element = COM::createFromObject(com_Element).Copy(); com_Element = var_Element;
    com_Element.Caption("Aka");
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    set_Background(EXSWIMLANELib.BackgroundPartEnum.exElementBackColor,$ffffff);
    Elements.Add('Element 1',TObject(0),TObject(0)).Copy(Nil,Nil).Caption := 'Aka';
end

Delphi (standard)

with SwimLane1 do
begin
    Background[EXSWIMLANELib_TLB.exElementBackColor] := $ffffff;
    Elements.Add('Element 1',OleVariant(0),OleVariant(0)).Copy(Null,Null).Caption := 'Aka';
end

VFP

with thisform.SwimLane1
    .Object.Background(90) = RGB(255,255,255)
    .Elements.Add("Element 1",0,0).Copy().Caption = "Aka"
endwith

dBASE Plus

local oSwimLane,var_Element

oSwimLane = form.EXSWIMLANEACTIVEXCONTROL1.nativeObject
oSwimLane.Template = [Background(90) = 16777215] // oSwimLane.Background(90) = 0xffffff
// oSwimLane.Elements.Add("Element 1",0,0).Copy().Caption = "Aka"
var_Element = oSwimLane.Elements.Add("Element 1",0,0).Copy()
with (oSwimLane)
    TemplateDef = [dim var_Element]
    TemplateDef = var_Element
    Template = [var_Element.Caption = "Aka"]
endwith

XBasic (Alpha Five)

Dim oSwimLane as P
Dim var_Element as local

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
oSwimLane.Template = "Background(90) = 16777215" // oSwimLane.Background(90) = 16777215
' oSwimLane.Elements.Add("Element 1",0,0).Copy().Caption = "Aka"
var_Element = oSwimLane.Elements.Add("Element 1",0,0).Copy()
oSwimLane.TemplateDef = "dim var_Element"
oSwimLane.TemplateDef = var_Element
oSwimLane.Template = "var_Element.Caption = `Aka`"

Visual Objects

oDCOCX_Exontrol1:[Background,exElementBackColor] := RGB(255,255,255)
oDCOCX_Exontrol1:Elements:Add("Element 1",0,0):Copy(nil,nil):Caption := "Aka"

PowerBuilder

OleObject oSwimLane

oSwimLane = ole_1.Object
oSwimLane.Background(90,RGB(255,255,255))
oSwimLane.Elements.Add("Element 1",0,0).Copy().Caption = "Aka"

Visual DataFlex

Procedure OnCreate
    Forward Send OnCreate
    Set ComBackground OLEexElementBackColor to (RGB(255,255,255))
    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 1" 0 0 to voElement
        Handle hoElement
        Get Create (RefClass(cComElement)) to hoElement
        Set pvComObject of hoElement to voElement
            Variant voElement1
            Get ComCopy of hoElement Nothing Nothing to voElement1
            Handle hoElement1
            Get Create (RefClass(cComElement)) to hoElement1
            Set pvComObject of hoElement1 to voElement1
                Set ComCaption of hoElement1 to "Aka"
            Send Destroy to hoElement1
        Send Destroy to hoElement
    Send Destroy to hoElements
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oSwimLane:SetProperty("Background",90/*exElementBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
        oSwimLane:Elements():Add("Element 1",0,0):CallMethod("Copy",):Caption := "Aka"

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


method Edit

method Element.Edit (Part as EditEnum, [Options as Variant])
Edits the element.

Type | Description
Part as EditEnum | An EditEnum expression that specifies the caption to be edited such as Caption or ExtraCaption.
Options as Variant | A String expression that specifies the options to show the inline editing. The Options are separated by comma character (,).
Return | Description
Variant | A Long expression that specifies whether the user presses the ENTER while inline editing. The Valid values are 0 if user presses the ESC key during inline editing, -1 if the user presses the ENTER key, or 1 if the user closes the form.
Use the Edit method to inline edit the element's caption or extra-caption. The Caption property indicates the element's HTML Caption. The ExtraCaption property indicates the element's HTML Extra-Caption. The CaptionSingleLine property specifies whether the element's caption displays single or multiple lines. The ExtraC aptionSingleLine property specifies whether the element's extra-caption displays single or multiple lines. The control fires the LayoutStartChanging(exEditObject) event when the Edit method starts, and the LayoutEndChanging(exEditObject) event when the Edit method ends.

By default, the edit's background is not changed so the inline editing is transparent. Use the Background(exEditBackColor) to specify the inline editing's background color. Use the Background(exEditForeColor) to specify the inline editing's foreground color. Use the Background(exEditSelBackColor) to specify the inline editing's selection background color. Use the Background(exEditSelForeColor) to specify the inline editing's selection foreground color.

The Options parameter can include one or more of the following options:

  • multiline, if present, the inline editing allows editing multiple lines, so ENTER key inserts a new line, while the CTRL + ENTER validates or ends editing the field.
  • wordwrap, if present, the inline editor word wraps the text. The multiline should be set too, so the edit can display multiple lines
  • tab, if present, the TAB key inserts a TAB character to inline caption
  • nocolor, specifies that no-colors are applied to inline editing.


property ElementFormat

property Element.ElementFormat as String
Specifies the way the control shows the parts of the element.

Type | Description
String | A String format that specified the CRD format to arrange the parts of the element.
By default, the ElementFormat property is empty. Use the ElementFormat property to arrange in a different way the parts of the element. If the ElementFormat property is empty, the format of the elements is specified by the control's ElementFormat property. In other words, all elements can be formatted the same way using the control's ElementFormat property or separate way using the Element's ElementFormat property.

The know parts of the element are:

  • check, specifies the part where the element's checkbox is displayed. The ShowCheckBox property specifies whether the element's checkbox is shown or hidden. The CheckBoxAlign property specifies the alignment of the checkbox relative to the "check" part of the element.
  • caption, specifies the part where the element's caption is displayed. The Caption property specifies the element's HTML caption. The CaptionAlign property specifies the alignment of the caption relative to the "caption" part of the element.
  • extracaption, specifies the part where the element's extra-caption is displayed. The ExtraCaption property specifies the element's HTML extra-caption. The ExtraCaptionAlign property specifies the alignment of the extra-caption relative to the "extracaption" part of the element.
  • picture, specifies the part where the element's pictures are displayed. The Pictures property specifies the element's pictures. The PicturesAlign property specifies the alignment of the pictures relative to the "picture" part of the element.
  • extrapicture, specifies the part where the element's extra-pictures are displayed. The ExtraPictures property specifies the element's extra-pictures. The ExtraPicturesAlign property specifies the alignment of the extra-pictures relative to the "extrapicture" part of the element.
  • client, specifies the part of the element where the inside ActiveX is displayed. The Control property indicates the inside ActiveX that hosted by the element.

The parts of the elements must be included between "" in order to be recognized by the CRD format.

For instance:

  • "check" indicates that just the element's checkbox is displayed, so no matter if other are set the element displays just the checkbox ( if ShowCheckBox property is True ) and the element's Caption property.
  • "check,caption" indicates that just the element's checkbox and caption are displayed, so no matter if other are set the element displays just the checkbox ( if ShowCheckBox property is True ) and the element's Caption property.
  • "client" specifies that the whole element displays just the client part, so the inside Active control will use the entire background to display the inside ActiveX control. This indicates, that no caption, check or any other part is displayed on the element.
  • "check":18,"client", displays the element's checkbox aligned to the left on a 18-pixels wide, and displays the client on the rest of the element.
  • "18;"caption"/"client"", allows the element's Caption and the Control to be displayed.

The following samples show how you can display the element's checkbox next to the Command button.

VBA (MS Access, Excell...)

With SwimLane1
    With .Elements
        With .InsertControl("Forms.CommandButton.1")
            .ElementFormat = """check"":18,""client"""
            .Object.Caption = "command"
            .ShowCheckBox = True
            .Height = 48
            .Width = 128
        End With
    End With
End With

VB6

With SwimLane1
    With .Elements
        With .InsertControl("Forms.CommandButton.1")
            .ElementFormat = """check"":18,""client"""
            .Object.Caption = "command"
            .ShowCheckBox = True
            .Height = 48
            .Width = 128
        End With
    End With
End With

VB.NET

With Exswimlane1
    With .Elements
        With .InsertControl("Forms.CommandButton.1")
            .ElementFormat = """check"":18,""client"""
            .Object.Caption = "command"
            .ShowCheckBox = True
            .Height = 48
            .Width = 128
        End With
    End With
End With

VB.NET for /COM

With AxSwimLane1
    With .Elements
        With .InsertControl("Forms.CommandButton.1")
            .ElementFormat = """check"":18,""client"""
            .Object.Caption = "command"
            .ShowCheckBox = True
            .Height = 48
            .Width = 128
        End With
    End With
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
EXSWIMLANELib::IElementsPtr var_Elements = spSwimLane1->GetElements();
    EXSWIMLANELib::IElementPtr var_Element = var_Elements->InsertControl("Forms.CommandButton.1",vtMissing,vtMissing,vtMissing);
        var_Element->PutElementFormat(L"\"check\":18,\"client\"");
        /*
    Copy and paste the following directives to your header file as
    it defines the namespace 'MSForms' for the library: 'Microsoft Forms 2.0 Object Library'

    #import <FM20.DLL>
*/
        ((MSForms::ICommandButtonPtr)(var_Element->GetObject()))->PutCaption(L"command");
        var_Element->PutShowCheckBox(VARIANT_TRUE);
        var_Element->PutHeight(48);
        var_Element->PutWidth(128);

C++ Builder

Exswimlanelib_tlb::IElementsPtr var_Elements = SwimLane1->Elements;
    Exswimlanelib_tlb::IElementPtr var_Element = var_Elements->InsertControl(TVariant("Forms.CommandButton.1"),TNoParam(),TNoParam(),TNoParam());
        var_Element->ElementFormat = L"\"check\":18,\"client\"";
        (IDispatch*)var_Element->Object->Caption = L"command";
        var_Element->ShowCheckBox = true;
        var_Element->Height = 48;
        var_Element->Width = 128;

C#

exontrol.EXSWIMLANELib.Elements var_Elements = exswimlane1.Elements;
    exontrol.EXSWIMLANELib.Element var_Element = var_Elements.InsertControl("Forms.CommandButton.1",null,null,null);
        var_Element.ElementFormat = "\"check\":18,\"client\"";
        // Add 'Microsoft Forms 2.0 Object Library' reference to your project.
        (var_Element.Object as MSForms.CommandButton).Caption = "command";
        var_Element.ShowCheckBox = true;
        var_Element.Height = 48;
        var_Element.Width = 128;

JavaScript

<OBJECT classid="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
    var var_Elements = SwimLane1.Elements;
        var var_Element = var_Elements.InsertControl("Forms.CommandButton.1",null,null,null);
            var_Element.ElementFormat = "\"check\":18,\"client\"";
            var_Element.Object.Caption = "command";
            var_Element.ShowCheckBox = true;
            var_Element.Height = 48;
            var_Element.Width = 128;
</SCRIPT>

C# for /COM

EXSWIMLANELib.Elements var_Elements = axSwimLane1.Elements;
    EXSWIMLANELib.Element var_Element = var_Elements.InsertControl("Forms.CommandButton.1",null,null,null);
        var_Element.ElementFormat = "\"check\":18,\"client\"";
        // Add 'Microsoft Forms 2.0 Object Library' reference to your project.
        (var_Element.Object as MSForms.CommandButton).Caption = "command";
        var_Element.ShowCheckBox = true;
        var_Element.Height = 48;
        var_Element.Width = 128;

X++ (Dynamics Ax 2009)

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

    super();

    var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
        var_Element = com_Elements.InsertControl("Forms.CommandButton.1"); com_Element = var_Element;
            com_Element.ElementFormat("\"check\":18,\"client\"");
            var_Object = COM::createFromObject(com_Element.Object()); com_Object = var_Object;
            com_Object.Caption("command");
            com_Element.ShowCheckBox(true);
            com_Element.Height(48);
            com_Element.Width(128);
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    with Elements do
    begin
        with InsertControl('Forms.CommandButton.1',Nil,Nil,Nil) do
        begin
            ElementFormat := '"check":18,"client"';
            (Object as MSForms.CommandButton).Caption := 'command';
            ShowCheckBox := True;
            Height := 48;
            Width := 128;
        end;
    end;
end

Delphi (standard)

with SwimLane1 do
begin
    with Elements do
    begin
        with InsertControl('Forms.CommandButton.1',Null,Null,Null) do
        begin
            ElementFormat := '"check":18,"client"';
            (IUnknown(Object) as MSForms_TLB.CommandButton).Caption := 'command';
            ShowCheckBox := True;
            Height := 48;
            Width := 128;
        end;
    end;
end

VFP

with thisform.SwimLane1
    with .Elements
        with .InsertControl("Forms.CommandButton.1")
            .ElementFormat = ""+chr(34)+"check"+chr(34)+":18,"+chr(34)+"client"+chr(34)+""
            .Object.Caption = "command"
            .ShowCheckBox = .T.
            .Height = 48
            .Width = 128
        endwith
    endwith
endwith

dBASE Plus

local oSwimLane,var_Element,var_Elements

oSwimLane = form.Activex1.nativeObject
var_Elements = oSwimLane.Elements
    var_Element = var_Elements.InsertControl("Forms.CommandButton.1")
        var_Element.ElementFormat = "" + ["] + "check" + ["] + ":18," + ["] + "client" + ["] + ""
        var_Element.Object.Caption = "command"
        var_Element.ShowCheckBox = true
        var_Element.Height = 48
        var_Element.Width = 128

XBasic (Alpha Five)

Dim oSwimLane as P
Dim var_Element as P
Dim var_Elements as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
var_Elements = oSwimLane.Elements
    var_Element = var_Elements.InsertControl("Forms.CommandButton.1")
        var_Element.ElementFormat = "\"check\":18,\"client\""
        var_Element.Object.Caption = "command"
        var_Element.ShowCheckBox = .t.
        var_Element.Height = 48
        var_Element.Width = 128

Visual Objects

local var_Element as IElement
local var_Elements as IElements

var_Elements := oDCOCX_Exontrol1:Elements
    var_Element := var_Elements:InsertControl("Forms.CommandButton.1",nil,nil,nil)
        var_Element:ElementFormat := "" + CHR(34) + "check" + CHR(34) + ":18," + CHR(34) + "client" + CHR(34) + ""
        // Generate Source for 'Microsoft Forms 2.0 Object Library' server from Tools\Automation Server...
        ICommandButton{var_Element:Object}:Caption := "command"
        var_Element:ShowCheckBox := true
        var_Element:Height := 48
        var_Element:Width := 128

PowerBuilder

OleObject oSwimLane,var_Element,var_Elements

oSwimLane = ole_1.Object
var_Elements = oSwimLane.Elements
    var_Element = var_Elements.InsertControl("Forms.CommandButton.1")
        var_Element.ElementFormat = "" + CHAR(34) + "check" + CHAR(34) + ":18," + CHAR(34) + "client" + CHAR(34) + ""
        var_Element.Object.Caption = "command"
        var_Element.ShowCheckBox = true
        var_Element.Height = 48
        var_Element.Width = 128

Visual DataFlex

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 ComInsertControl of hoElements "Forms.CommandButton.1" Nothing Nothing Nothing to voElement
        Handle hoElement
        Get Create (RefClass(cComElement)) to hoElement
        Set pvComObject of hoElement to voElement
            Set ComElementFormat of hoElement to ""check":18,"client""
            Variant voCommandButton
            Get ComObject of hoElement to voCommandButton
            Handle hoCommandButton
            Get Create (RefClass(cComCommandButton)) to hoCommandButton
            Set pvComObject of hoCommandButton to voCommandButton
                Set ComCaption of hoCommandButton to "command"
            Send Destroy to hoCommandButton
            Set ComShowCheckBox of hoElement to True
            Set ComHeight of hoElement to 48
            Set ComWidth of hoElement to 128
        Send Destroy to hoElement
    Send Destroy to hoElements
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oElement
    LOCAL oElements
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oElements := oSwimLane:Elements()
            oElement := oElements:InsertControl("Forms.CommandButton.1")
                oElement:ElementFormat := "" + CHR(34) + "check" + CHR(34) + ":18," + CHR(34) + "client" + CHR(34) + ""
                oElement:Object():Caption := "command"
                oElement:ShowCheckBox := .T.
                oElement:Height := 48
                oElement:Width := 128

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


property Enabled

property Element.Enabled as Boolean
Gets or sets a value that indicates whether the element is enabled or disabled.

Type | Description
Boolean | A Boolean expression that specifies whether the element is enabled or disabled.
By default, the Enabled property is True. Use the Enabled property to show the element as disabled ( grayed ). The Selectable property specifies whether the user can select the element at runtime. The Resizable property specifies whether the element can be resized at runtime. Use the Enabled property of the control to disable the entire surface.

The following screen shot shows a few elements, and one disabled element:


method EndUpdateElement

method Element.EndUpdateElement (StartUpdateElement as Long)
Adds programmatically updated properties of the element to undo/redo queue.

Type | Description
StartUpdateElement as Long | A long expression that specifies the handle being returned by the StartUpdateElement property
The StartUpdateElement/EndUpdateElement methods record and add changes of the current element to the control's Undo/Redo queue. You can use the StartBlockUndoRedo / End BlockUndoRedo methods to group multiple Undo/Redo operations into a single-block. The AllowUndoRedo property specifies whether the control supports undo/redo operations for objects (elements, links, ...). No entry is added to the Undo/Redo queue if no property is changed for the current element. Each call of the StartUpdateElement must be succeeded by a EndUpdateElement call. The UndoListAction property lists the Undo actions that can be performed in the chart. The RedoListAction property lists the Redo actions that can be performed in the chart.

The StartUpdateElement/EndUpdateElement methods can record changes for the following properties only:

  • Caption, gets or sets a value that indicates the HTML caption to be displayed on the element
  • Parent, defines the element's parent (when the element is part of a hierarchy)
  • ChildPosition, specifies the position of the element while it is a child element (when the element is part of a hierarchy)
  • ID, defines the element's unique identifier
  • AutoSize, specifies if the element computes its size automatically
  • X, specifies the element's x-position
  • Y, specifies the element's y-position
  • Width, specifies the width of the element
  • Height, specifies the height of the element
  • Visible, shows or hides the element
  • Enabled, enables or disables the element
  • BackColor, gets or sets a value that indicates the element's background color
  • ForeColor, gets or sets a value that indicates the element's foreground color
  • OverviewColor, gets or sets a value that indicates the element's overview color
  • BorderColor, gets or sets a value that indicates the element's border color
  • StatusColor, gets or sets a value that indicates the element's status color
  • Pictures, specifies the list of pictures to be displayed on the element
  • ExtraPictures, specifies the list of additional pictures to be displayed on the element
  • ExtraCaption, gets or sets a value that indicates additional HTML caption to be displayed on the element
  • Pattern, specifies the pattern to be shown on the element's background
  • UserData, associates any extra data associated with the element

The Undo/Redo records show as:

  • "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods

within the UndoListAction/RedoListAction result


method EnsureVisible

method Element.EnsureVisible ()
Scrolls the surface to ensure that the current element fits the control's visible area.

Type Description
The EnsureVisible method scrolls the surface to ensure that the current element fits the control's visible area. The ScrollTo method ensures that the element fits the surface's visible area. The control's ScrollPos, ScrollX and ScrollY properties specify the surface's scroll position.


property ExtraCaption

property Element.ExtraCaption as String
Gets or sets a value that indicates the extra HTML caption to be displayed on the element.

Type | Description
String | A String expression that defines the HTML extra-caption to be displayed on the element's background.
By default, the ExtraCaption property is empty. The ExtraCaption property defines the second or the extra caption to be displayed on the element's background. Use the Caption property to define the label or caption to be displayed on the element's background. The ExtraC aptionAlign property specifies the alignment of the extra-caption relative to the edges of the element. The ExtraCaptionSingleLine property specifies whether the element's caption is displayed on single or multiple lines. The Images method loads icons to be displayed on the control's surface. The HTMLPicture property loads and assigns a picture to a key to be used on control's surface.

The ExtraCaption property supports the following HTML elements:

  • <b> ... </b> displays the text in bold
  • <i> ... </i> displays the text in italics
  • <u> ... </u> underlines the text
  • <s> ... </s> Strike-through text
  • <a id;options> ... </a> displays an anchor element that can be clicked. An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link.The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The control fires the AnchorClick(AnchorID, Options) event when the user clicks the anchor element. The FormatAnchor property customizes the visual effect for anchor elements.

    The control supports expandable HTML captions feature which allows you to expand(show)/collapse(hide) different information using <a ;exp=> or <a ;e64=> anchor tags. The exp/e64 field of the anchor stores the HTML line/lines to show once the user clicks/collapses/expands the caption.

    • exp, stores the plain text to be shown once the user clicks the anchor, such as <a ;exp=show lines>
    • e64, encodes in BASE64 the HTML text to be shown once the user clicks the anchor, such as <a ;e64=gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA>+</a> that displays show lines- in gray when the user clicks the + anchor. The gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA string encodes the <fgcolor 808080>show lines<a>-</a></fgcolor> The Decode64Text/Encode64Text methods of the eXPrint can be used to decode/encode e64 fields.

    Any ex-HTML caption can be transformed to an expandable-caption, by inserting the anchor ex-HTML tag. For instance, <solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3 shows the Header in underlined and bold on the first line and Line1, Line2, Line3 on the rest. The show lines is shown instead of Line1, Line2, Line3 once the user clicks the + sign.

  • <font face;size> ... </font> displays portions of text with a different font and/or different size. For instance, the <font Tahoma;12>bit</font> draws the bit text using the Tahoma font, on size 12 pt. If the name of the font is missing, and instead size is present, the current font is used with a different size. For instance, <font ;12>bit</font> displays the bit text using the current font, but with a different size.
  • <fgcolor rrggbb> ... </fgcolor> or <fgcolor=rrggbb> ... </fgcolor> displays text with a specified foreground color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <bgcolor rrggbb> ... </bgcolor> or <bgcolor=rrggbb> ... </bgcolor> displays text with a specified background color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <solidline rrggbb> ... </solidline> or <solidline=rrggbb> ... </solidline> draws a solid-line on the bottom side of the current text-line, of specified RGB color. The <solidline> ... </solidline> draws a black solid-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <dotline rrggbb> ... </dotline> or <dotline=rrggbb> ... </dotline> draws a dot-line on the bottom side of the current text-line, of specified RGB color. The <dotline> ... </dotline> draws a black dot-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <upline> ... </upline> draws the line on the top side of the current text-line (requires <solidline> or <dotline>).
  • <r> right aligns the text
  • <c> centers the text
  • <br> forces a line-break
  • <img>number[:width]</img> inserts an icon inside the text. The number indicates the index of the icon being inserted. Use the Images method to assign a list of icons to your chart. The last 7 bits in the high significant byte of the number expression indicates the identifier of the skin being used to paint the object. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the part. The width is optional and indicates the width of the icon being inserted. Using the width option you can overwrite multiple icons getting a nice effect. By default, if the width field is missing, the width is 18 pixels.
  • <img>key[:width]</img> inserts a custom size picture into the text being previously loaded using the HTMLPicture property. The Key parameter indicates the key of the picture being displayed. The Width parameter indicates a custom size, if you require to stretch the picture, else the original size of the picture is used.
  • & glyph characters as &amp; ( & ), &lt; ( < ), &gt; ( > ), &qout; ( " ) and &#number; ( the character with specified code ), For instance, the &#8364; displays the EUR character. The & ampersand is only recognized as markup when it is followed by a known letter or a #character and a digit. For instance if you want to display <b>bold</b> in HTML caption you can use &lt;b&gt;bold&lt;/b&gt;
  • <off offset> ... </off> defines the vertical offset to display the text/element. The offset parameter defines the offset to display the element. This tag is inheritable, so the offset is keep while the associated </off> tag is found. You can use the <off offset> HTML tag in combination with the <font face;size> to define a smaller or a larger font to be displayed. For instance: Text with <font ;7><off 6>subscript displays the text such as: Text with subscript The Text with <font ;7><off -6>superscript displays the text such as: Text with subscript
  • <gra rrggbb;mode;blend> ... </gra> defines a gradient text. The text color or <fgcolor> defines the starting gradient color, while the rr/gg/bb represents the red/green/blue values of the ending color, 808080 if missing as gray. The mode is a value between 0 and 4, 1 if missing, and blend could be 0 or 1, 0 if missing. The <font> HTML tag can be used to define the height of the font. Any of the rrggbb, mode or blend field may not be specified. The <gra> with no fields, shows a vertical gradient color from the current text color to gray (808080). For instance the <font ;18><gra FFFFFF;1;1>gradient-center</gra></font> generates the following picture:
  • <out rrggbb;width> ... </out> shows the text with outlined characters, where rr/gg/bb represents the red/green/blue values of the outline color, 808080 if missing as gray, width indicates the size of the outline, 1 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><out 000000><fgcolor=FFFFFF>outlined</fgcolor></out></font> generates the following picture:
  • <sha rrggbb;width;offset> ... </sha> define a text with a shadow, where rr/gg/bb represents the red/green/blue values of the shadow color, 808080 if missing as gray, width indicates the size of shadow, 4 if missing, and offset indicates the offset from the origin to display the text's shadow, 2 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><sha>shadow</sha></font> generates the following picture:

    or <font ;31><sha 404040;5;0><fgcolor=FFFFFF>outline anti-aliasing</fgcolor></sha></font> gets:


property ExtraCaptionAlign

property Element.ExtraCaptionAlign as ContentAlignmentEnum
Indicates the alignment of the element's extra caption.

Type Description
ContentAlignmentEnum A ContentAlignmentEnum expression that specifies the extra-caption alignment relative to the element's edges. The ExtraCaptionAlign property supports additionally the following flag:
  • exWidth (4), to distribute the text on the element's width
The ExtraCaptionAlign property specifies the alignment of the extra-caption relative to the edges of the element. The ExtraCaptionSingleLine property specifies whether the element's caption is displayed on single or multiple lines. The ExtraCaption property defines the second or the extra caption to be displayed on the element's background. Use the Caption property to define the label or caption to be displayed on the element's background. The Images method loads icons to be displayed on the control's surface. The HTMLPicture property loads and assigns a picture to a key to be used on control's surface.


property ExtraCaptionSingleLine

property Element.ExtraCaptionSingleLine as CaptionSingleLineEnum
Specifies if the element's extra caption is displayed on single or multiple lines.

Type Description
CaptionSingleLineEnum A CaptionSingleLineEnum expression that specifies whether the element's extra caption is displayed on a single or multiple lines. The ExtraCaptionAlign property supports additionally the following flag:
  • exJustify (4), distributes the text evenly between the margins
By default, the ExtraCaptionSingleLine property is exCaptionSingleLine. The ExtraCaptionSingleLine property specifies whether the element's caption is displayed on single or multiple lines. The ExtraCaption property defines the second or the extra caption to be displayed on the element's background. Use the Caption property to define the label or caption to be displayed on the element's background. The ExtraCaptionAlign property specifies the alignment of the extra-caption relative to the edges of the element. The Images method loads icons to be displayed on the control's surface. The HTMLPicture property loads and assigns a picture to a key to be used on control's surface.


property ExtraPictures

property Element.ExtraPictures as String
Specifies the list of extra pictures to be displayed on the element.

Type | Description
String | A string expression that specifies the list of pictures to be shown on the element's body. The element's body can display one ore more pictures at the time, on different lines. For instance: "1,2/pic1" displays the 1 and 2 icons on the first line, while pic2 is displayed on the second line.
By default, the ExtraPictures property is "", which means that initially no extra-pictures are being displayed on the element. The Pictures or/and ExtraPictures property displays a collection of icons, pictures in the element's body. The Picture and ExtraPictures may display one or more pictures at the time. The , character indicates the separator of pictures in the same line, while the / character divides the lines to show the pictures. For instance, "1,2" displays icon with the index 1 and 2 on the same line, while the "1/2,pic1" displays the first icon on the first line, the second icon and the picture pic1 on the second line. The Images method loads icons to the control. The Images collection can display only 16x16 icons. The HTMLPicture assigns a key to a picture object. The ShowHandCursorOn property specifies whether the hand cursor is shown when hovering a picture on the element. The HandCursorClick event occurs once the user clicks a picture on the element ( ShowHandCursorOn property must include the exShowHandCursorPicture, exShowHandCursorIcon and exShowHandCursorExtraPictures ). The ExtraPicturesAlign property specifies the alignment of the extra-Pictures relative to the element.

The Picture property displays a picture on the element's background. The PictureDisplay property specifies the way the element's picture is displayed on the element's background. The BackColor property specifies the element's background color. Background(exElementBackColor) property specifies the default background color / visual appearance. The ForeColor property specifies the element's foreground color. The Pattern property defines the pattern to be shown on the control's background.


property ExtraPicturesAlign

property Element.ExtraPicturesAlign as ContentAlignmentEnum
Indicates the alignment of the element's extra picture.

Type | Description
ContentAlignmentEnum | A ContentAlignmentEnum expression that specifies the extra-pictures alignment.
By default, the ExtraPicturesAlign property is exTopRight. The ExtraPicturesAlign property specifies the alignment of the extra-Pictures relative to the element. By default, the ExtraPictures property is "", which means that initially no extra-pictures are being displayed on the element. The Pictures or/and ExtraPictures property displays a collection of icons, pictures in the element's body. The Picture and ExtraPictures may display one or more pictures at the time. The , character indicates the separator of pictures in the same line, while the / character divides the lines to show the pictures. For instance, "1,2" displays icon with the index 1 and 2 on the same line, while the "1/2,pic1" displays the first icon on the first line, the second icon and the picture pic1 on the second line. The Images method loads icons to the control. The Images collection can display only 16x16 icons. The HTMLPicture assigns a key to a picture object. The ShowHandCursorOn property specifies whether the hand cursor is shown when hovering a picture on the element. The HandCursorClick event occurs once the user clicks a picture on the element ( ShowHandCursorOn property must include the exShowHandCursorPicture, exShowHandCursorIcon and exShowHandCursorExtraPictures ).


method FitToClient

method Element.FitToClient ()
Resizes or/and moves the entire chart to fit the element.

Type Description
Ensures that current element fits the surface's client area.


property ForeColor

property Element.ForeColor as Color
Gets or sets a value that indicates the element's foreground color.

Type | Description
Color | A Color expression that defines the element's foreground color.
By default, the ForeColor property is -1, which indicates that the element's foreground is defined by the Background(exElementForeColor). The ForeColor property specifies the element's foreground color. The Pattern property defines the pattern to be shown on the control's background. The Padding property defines the padding of the element. The BorderColor property specifies the color to show the border for a specific element. The StatusColor property specifies the color or the visual appearance to show the element's status part.


property Height

property Element.Height as Long
Specifies the height of the element.

Type | Description
Long | A Long expression that specifies the height in pixels of the element.
The Height property specifies the height of the element. The Width property specifies the width of the element. Use the Width and Height properties to resize the element, while the AutoSize property is False. If AutoSize property is True, the Width and the Height can not be changed programmatically. The MinWidth/MaxWidth and MinHeight/MaxHeight properties specifies the min/max size of the element. The X and Y properties specifies the position of the element on the surface. Use the MoveTo method to move/resize the element to a new position / size.


property ID

property Element.ID as Variant
Specifies the element's unique identifier.

Type | Description
Variant | A Long, String or Numeric expression that specifies the unique identifier of the Element.
The ID property is automatically assigned by the control once a new element is added. You can change the ID property to a different value, unless there is no other element with the same ID. In other words, the surface must contains elements with different IDs. The CreateElement event notifies your application once a new element is created. When elements are saved to an XML document using the SaveXML, the ID will be as string once the LoadXML method is called ( the XML file is a TEXT file )


property IncomingLinks

property Element.IncomingLinks as Variant
Returns a safe array of incoming links.

Type | Description
Variant | A safe-array of Link objects that specifies the links that ends to the current element. You can use the for-each statement to enumerate all incoming links.
The IncomingLinks property specifies the list of links that ends on the current element. The OutgoingLinks property specifies the list of links that starts from the current element. The ElementFrom property of the Link object indicates where the Link starts. The ElementTo property of the Link object indicates where the Link ends. Use the ShowLinksColor(exShowLinksEndTo)/ShowLinksStyle(exShowLinksEndTo)/ShowLinksWidth(exShowLinksEndTo) properties to mark the incoming links of selected elements.

The following screen shot shows the incoming links (red ):

The following VB sample enumerates the incoming elements ( of selected elements ):

Private Sub SwimLane1_SelectionChanged()
    With SwimLane1
        Dim s As Variant
        For Each s In .Selection
            Debug.Print "Incomming Elements of " & s.ID & "are: "
            With s
                For Each i In .IncomingLinks
                    Debug.Print i.ElementFrom.ID
                Next
            End With
        Next
    End With
End Sub


property InflateSize

property Element.InflateSize as Long
Increases or decreases the width and height of the element.

Type | Description
Long | A Long expression that specifies the width and height of the element to be increased with when AutoSize property is True.
By default, the The InflateSize property is 1 ( pixels). The InflateSize property indicates the size to be added to the default auto-size for increasing the size of the element. The Padding, BorderPadding and StatusPadding properties specifies the padding to be applied on client, border and status parts of the element. The Caption property specifies the element's caption. The ExtraCaption property specifies the element's extra caption. The ShowCheckBox property indicates whether the element's checkbox is visible or hidden.


method InvokeContextMenu

method Element.InvokeContextMenu ([ContextMenu as Variant])
Invokes programmatically the element's default or customized context menu, and returns the identifier of the selected item.

Type | Description
ContextMenu as Variant | A String expression that defines the items to be displayed on the element's context-menu. If empty, the default context-menu for elements [ContextMenu(exContextMenuElement) property] is shown.
Return | Description
Variant | A Long expression that indicates the identifier of the item being selected/clicked.
The InvokeContextMenu method invokes programmatically the element's default or customized context menu, and returns the identifier of the selected item. The ContextMenu(exContextMenuElement) property defines the default content-menu for elements. The ActionContextMenu event notifies your application once an action occurs within the object's context menu. Use the AllowContextMenu property on exDisallow to disable default's context menu, when the user right clicks the element. The ContextMenuFont property retrieves or sets the context-menu's font. The Background(exContextMenuAppearance) property ( and related ) defines the control's context menu appearance.

By default, the element's context-menu shows as follows:

For instance, the InvokeContextMenu( "Item 1,Item 2,[sep],Check 1[chk],Check 2[chk]" ), generates the following screen shot:

For instance, the InvokeContextMenu( "Item 1,Item 2,Popup(Check 1[chk],Check 2[chk])" ), generates the following screen shot:

For instance, the InvokeContextMenu( "Calendar[id=20][img=0],MSChart[id=30],Record[id=40],Slider[id=50],Radio 1[id=100][typ=2][edit=],Radio 2[id=101][typ=2][edit=],Radio 3[id=102][typ=2][edit=],ComboBox[id=90]" ), generates the following screen shot:

The syntax for ContextMenu parameter in BNF notation is:

<ToString> ::= <ITEMS>
<ITEMS> ::= <ITEM>["("<ITEMS>")"][","<ITEMS>]
<ITEM> ::= <CAPTION>[<OPTIONS>]
<OPTIONS> ::= "["<OPTION>"]"["["<OPTIONS>"]"]
<OPTION> ::= <PROPERTY>["="<VALUE>]
<PROPERTY> ::= "img" | "himg" | "sep" | "id" | "typ" | "group" | "chk" | "button" | "align" | "spchk" | "show" | "rad" | "dis" | "showdis" | "bld" | "itl" | "stk" | "und" | "bg" | "fg" | "edittype" | "edit" | "mask" | "border" | "editwidth" | "captionwidth" | "height" | "grp" | "tfi" | "ttp" | "min" | "max" | "tick" | "freq" | "ticklabel" | "small" | "large" | "spin" | "ettp" | "float" | "close"

where the <CAPTION> is the HTML caption to be shown on the context menu item. The <VALUE> indicates the value of giving property.

  • img=<VALUE>, where <VALUE> is an integer expression, that indicates the index of the icon being displayed for the item.
  • himg=<VALUE>, where <VALUE> indicates the key of the picture to be displayed for the item.
  • sep, specifies an separator item
  • id=<VALUE>, where <VALUE> is an integer expression, that indicates the identifier of the item.
  • typ=<VALUE>, where <VALUE> could be one of the following:
    • 0 for regular items,
    • 1 for items that display a check/box (chk)
    • 2 to display radio buttons (rad)
  • group=<VALUE>, where <VALUE> could be a bit-or combination (+) of the following values:
    • 0 (exNoGroupPopup), No grouping is performed on the sub-menu, so the sub-items are shown to a float popup,
    • 1 (exGroupPopup), Groups and displays the sub-menu items on the current item, arranged from left to right
    • 2 (exNoGroupPopupFrame), Prevents showing the frame around each grouping item.
    • 4 (exGroupPopupCenter), Shows the grouping popup aligned to the center of the current item.
    • 8 (exGroupPopupRight), Shows the grouping popup aligned to the right of the current item.
    • 16 (exGroupPopupEqualSize), Shows the items that make the group of the same size
  • chk[=<VALUE>], where <VALUE> could be 0 for unchecked, or not zero for checked. The chk option makes the item to display a check box. If the <VALUE> is missing the item still displays an un-checked check box.
  • button=<VALUE>, where <VALUE> could be 0 for regular or not zero to show the item as a button.
  • align=<VALUE>, where <VALUE> could be one of the following:
    • 0 ( left ), to align the item's caption to the left
    • 1 ( center ), to center the item's caption
    • 2 ( right ), to align the item's caption to the right
  • spchk=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item's sub menu is shown only if the item is checked.
  • show=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the checked item shows as selected
  • rad=<VALUE>, where <VALUE> could be 0 for unchecked radio button or not zero to for checked radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored.
  • dis, specifies a disabled item
  • showdis=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item shows as disabled, but it is still enabled
  • bld, specifies that the item appears in bold
  • itl, specifies that the item appears in italics
  • stk, specifies that the item appears as strikeout
  • und, specifies that the item is underlined
  • bg=<VALUE>, specifies the item's background color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • fg=<VALUE>, specifies the item's foreground color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • edittype=<VALUE>, associates an edit field to the item, where <VALUE> could be one of the following values:
    • 0 ( exItemDisableEdit ), No editor is assigned to the current item.
    • 1 ( exItemEditText ), A text-box editor is assigned to the current item.
    • 2 ( exItemEditMask ), A masked text-box editor is assigned to the current item.
    • 3 ( exItemEditSlider ), A slider editor is assigned to the current item.
    • 4 ( exItemEditProgress ), A progress editor is assigned to the current item.
    • 5 ( exItemEditScrollBar ), A scrollbar editor is assigned to the current item.
    • 6 ( exItemEditColor), A color editor is assigned to the current item.
    • 7 ( exItemEditFont ), A font editor is assigned to the current item.
    • 256 (exItemEditReadOnly), specifies that the item's editor is shown as disabled. This value could be combined with one of the values from 0 to 7, 512
    • 512 ( exItemEditSpin ), A spin editor is assigned to the current item. This value could be combined with one of the values from 0 to 7, 256
  • edit=<VALUE>, specifies the caption to be shown in the item's edit field, where <VALUE> could be any string
  • mask=<VALUE>, specifies the mask to be applied on a masked editor. This option is valid for exItemEditMask edit. Use the float option to allow masking floating point numbers. See EditMask property for more details.
  • border=<VALUE>, specifies the border to be shown on the item's edit field, where <VALUE> could be one of the following:
    • 0 ( exEditBorderNone), No border is shown.
    • -1 (exEditBorderInset), shows an inset border
    • 1 (exEditBorderSingle), shows a frame border
  • editwidth=<VALUE>, specifies the width to show the edit field inside the item. where <VALUE> could be a long expression. A negative value indicates that the field goes to the end of the item
  • captionwidth=<VALUE>, specifies the width to show the HTML caption of the item. where <VALUE> could be a long expression. A negative value indicates that no limitation is applied to the item's caption, so no truncate caption is shown
  • height=<VALUE>, specifies the height to show the item, where <VALUE> could be a positive long expression
  • grp=<VALUE>, defines the radio group. It should be used when you define more groups of radio buttons. A group of radio buttons means that only one item could be checked at one time. The rad option specifies that the item displays a radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored. The <VALUE> could be any long expression.
  • ttp=<VALUE>, defines the item's tooltip. The <VALUE> could be any HTML string expression. The item's tooltip is shown when the user hovers the item.
  • min=<VALUE>, defines the minimum value of the edit field. The <VALUE> could be any long expression, and specifies the minimum value for any slider, progress, scroll, spin, or range editor.
  • max=<VALUE>, defines the maximum value of the edit field. The <VALUE> could be any long expression, and specifies the maximum value for any slider, progress, scroll, spin, or range editor.
  • tick=<VALUE>, defines where the ticks of the slider edit appear. This option is valid for exItemEditSlider edit. The <VALUE> could be one of the following values:
    • 0 ( exBottomRight ), The ticks are displayed on the bottom/right side.
    • 1 ( exTopLeft ), The ticks are displayed on the top/left side.
    • 2 ( exBoth ), The ticks are displayed on the both side.
    • 3 ( exNoTicks ), No ticks are displayed.
  • freq=<VALUE>, indicates the ratio of ticks on the slider edit. This option is valid for exItemEditSlider edit. The <VALUE> could be a positive long expression.
  • ticklabel=<VALUE>, indicates the HTML label to be displayed on slider's ticks. This option is valid for exItemEditSlider edit. Check the EditOption(exEditTickLabel) for more details.
  • small=<VALUE>, indicates the amount by which the edit's position changes when the user presses the arrow key ( left, right, or button ). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • large=<VALUE>, indicates the amount by which the edit's position changes when the user presses the CTRL + arrow key ( CTRL + left, CTRL + right). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • spin=<VALUE>, specifies the step to advance when user clicks the editor's spin.. This option is valid for exItemEditSpin edit. The <VALUE> could be a positive long expression.
  • ettp=<VALUE>, specifies the HTML tooltip to be shown when the item's value is changed. This option is valid for exItemEditSlider/exItemEditScrollBar edit. The <VALUE> could be any string expression.
  • float=<VALUE>, Specifies whether the mask field masks a floating point number. This option is valid for exItemEditMask edit. See See EditMask property for more details. The <VALUE> could be 0 for standard masking field or not zero to specify that the field is masking a floating point.
  • close=<VALUE>, Specifies the way the hosting menu is closed when the user clicks the item. If the close flag is missing, the <VALUE> is 3 (exCloseOnNonClickable), by default. The <VALUE> could be one of the following values:
    • 0 ( exCloseOnClick ), The popup menu is closing when the user clicks the item.
    • 1 ( exCloseOnDblClick ), The popup menu is closing when the user double clicks the item.
    • 2 ( exCloseOnClickOutside ), The popup menu is closing when the user clicks outside of the menu.
    • 3 ( exCloseOnNonClickable ), The popup menu is closing when the user clicks a non-clickable item ( regular items ). The non-clickable items is any item that's not a separator, popup, disabled or check or radio items, clicking a check-box item will makes the check box to change its state instead closing the context menu.

The following samples invokes a custom-context menu for newly added element:

VBA (MS Access, Excell...)

With SwimLane1
    Debug.Print( .Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") )
End With

VB6

With SwimLane1
    Debug.Print( .Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") )
End With

VB.NET

With Exswimlane1
    Debug.Print( .Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") )
End With

VB.NET for /COM

With AxSwimLane1
    Debug.Print( .Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") )
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
OutputDebugStringW( _bstr_t(spSwimLane1->GetElements()->Add("Element",long(0),long(0))->InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]")) );

C++ Builder

OutputDebugString( PChar(SwimLane1->Elements->Add(TVariant("Element"),TVariant(0),TVariant(0))->InvokeContextMenu(TVariant("Item 1[id=1000],Item 2[id=2000]"))) );

C#

System.Diagnostics.Debug.Print( exswimlane1.Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]").ToString() );

JScript/JavaScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
function Init()
{
    alert( SwimLane1.Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") );
}
</SCRIPT>
</BODY>

VBScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="VBScript">
Function Init()
    With SwimLane1
        alert( .Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") )
    End With
End Function
</SCRIPT>
</BODY>

C# for /COM

System.Diagnostics.Debug.Print( axSwimLane1.Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]").ToString() );

X++ (Dynamics Ax 2009)

public void init()
{
    ;

    super();

    print( exswimlane1.Elements().Add("Element",COMVariant::createFromInt(0),COMVariant::createFromInt(0)).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") );
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    OutputDebugString( Elements.Add('Element',TObject(0),TObject(0)).InvokeContextMenu('Item 1[id=1000],Item 2[id=2000]') );
end

Delphi (standard)

with SwimLane1 do
begin
    OutputDebugString( Elements.Add('Element',OleVariant(0),OleVariant(0)).InvokeContextMenu('Item 1[id=1000],Item 2[id=2000]') );
end

VFP

with thisform.SwimLane1
    DEBUGOUT( .Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") )
endwith

dBASE Plus

local oSwimLane

oSwimLane = form.EXSWIMLANEACTIVEXCONTROL1.nativeObject
? Str(oSwimLane.Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]"))

XBasic (Alpha Five)

Dim oSwimLane as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
? oSwimLane.Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]")

Visual Objects

OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:Elements:Add("Element",0,0):InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]")) ))

PowerBuilder

OleObject oSwimLane

oSwimLane = ole_1.Object
MessageBox("Information",string( String(oSwimLane.Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]")) ))

Visual DataFlex

Procedure OnCreate
    Forward Send OnCreate
    Variant v
    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" 0 0 to voElement
        Handle hoElement
        Get Create (RefClass(cComElement)) to hoElement
        Set pvComObject of hoElement to voElement
            Get ComInvokeContextMenu of hoElement "Item 1[id=1000],Item 2[id=2000]" to v
        Send Destroy to hoElement
    Send Destroy to hoElements
    Showln v
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        DevOut( Transform(oSwimLane:Elements:Add("Element",0,0):InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]"),"") )

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


property LaneID

property Element.LaneID(Horizontal as Boolean) as Variant
Returns or sets the identifier of the lane from the element.

Type | Description
Horizontal as Boolean | A Boolean expression that specifies whether the element queries the horizontal (True) or vertical (False) lanes.
Variant | A String expression that indicates the ID of the element's lane. If empty, no lane is assigned to the element.
The LaneID property indicates the identifier of the lane from the element. The intersection of the lane with the element determines the lane of the element. Use the LaneByID property to access the lane object giving its identifier. The CenterOnLane property aligns the element relative to its lane. The LaneID(Horizonal) property can move the element to a specified lane, by setting the Element.LaneID(True/False) property. For instance, the Element.LaneID(True) on "0:V.1" moves the element to the first pool ( 0: ), on the second phase ( V.1, vertical lane ). Also, Element.LaneID(True) = "0:H.2,0:V.1" moves the element on the first pool ( 0: ) at the intersection of the third lane ( H.2, horizontal lane ) with the second phase ( V.1, vertical lane ), of the same pool. The Horizontal parameter of the LaneID property has no effect if using the write-only property ( put_LaneID property ).

The following screen shot shows three horizontal lanes ( Lane 1, Lane 2 and Lane 3 ) and three elements assigned to each lane.


property License

property Element.License as String
Indicates the runtime license required to create the inner control.

Type | Description
String | A String expression that specifies the runtime-license.
The control supports ActiveX hosting, or in other words, any element can host another inside controls. The License property indicates a string expression that indicates the runtime license key for the component being inserted, if required. Only, the vendor of the component you are going to use is able to give you such of runtime license, so please contact the control's vendor for such of key. Your development license key is not compatible with the runtime license key, so it can't be used here. The Control property has effect only if the element's Type property is set on exElementHostControl. If you insert a runtime-licensed control you must specify the License property before calling the Control property. Use the ElementFormat property to specify the area where the inner control is displayed. The Object property returns a reference to newly created control. The ExSwimLane control fires the OLEEvent event if an inside ActiveX control fires an event.

The Control property must be formatted in one of the following ways:

  • A ProgID such as "Exontrol.Grid"
  • A CLSID such as "{8E27C92B-1264-101C-8A2F-040224009C02}"
  • A URL such as "https://www.exontrol.com"
  • A reference to an Active document such as "c:\temp\myfile.doc", or "c:\temp\picture.gif"
  • A fragment of HTML such as "MSHTML:<HTML><BODY>This is a line of text</BODY></HTML>"
  • A fragment of XML

The look and feel of the inner ActiveX control depends on the identifier you are using, and the version of the library that implements the ActiveX control, so you need to consult the documentation of the inner ActiveX control you are inserting inside the exSwimLane control.

The following screen shot shows the surface with different inner controls:


property MaxHeight

property Element.MaxHeight as Long
Specifies the maximum height of the element.

Type | Description
Long | A Long expression that specifies the max height of the element. If negative, the MaxHeight property has no effect.
By default, the MaxHeight property is -1, which indicates that it has no effect. The MinWidth/MaxWidth and MinHeight/MaxHeight properties specifies the min/max size of the element. The Height property specifies the height of the element. The Width property specifies the width of the element. Use the Width and Height properties to resize the element, while the AutoSize property is False. If AutoSize property is True, the Width and the Height can not be changed programmatically. The X and Y properties specifies the position of the element on the surface. Use the MoveTo method to move/resize the element to a new position / size.


property MaxWidth

property Element.MaxWidth as Long
Specifies the maximum width of the element.

Type | Description
Long | A Long expression that specifies the max width of the element. If negative, the MaxWidth property has no effect.
By default, the MaxWidth property is -1, which indicates that it has no effect. The MinWidth/MaxWidth and MinHeight/MaxHeight properties specifies the min/max size of the element. The Height property specifies the height of the element. The Width property specifies the width of the element. Use the Width and Height properties to resize the element, while the AutoSize property is False. If AutoSize property is True, the Width and the Height can not be changed programmatically. The X and Y properties specifies the position of the element on the surface. Use the MoveTo method to move/resize the element to a new position / size.


property MinHeight

property Element.MinHeight as Long
Specifies the minimum height of the element.

Type | Description
Long | A Long expression that specifies the min height of the element.
By default, the MinHeight property is 10 pixels. The MinWidth/MaxWidth and MinHeight/MaxHeight properties specifies the min/max size of the element. The Height property specifies the height of the element. The Width property specifies the width of the element. Use the Width and Height properties to resize the element, while the AutoSize property is False. If AutoSize property is True, the Width and the Height can not be changed programmatically. The X and Y properties specifies the position of the element on the surface. Use the MoveTo method to move/resize the element to a new position / size.


property MinWidth

property Element.MinWidth as Long
Specifies the minimum width of the element.

Type | Description
Long | A Long expression that specifies the min width of the element, in pixles.
By default, the MinWidth property is 10 pixels. The MinWidth/MaxWidth and MinHeight/MaxHeight properties specifies the min/max size of the element. The Height property specifies the height of the element. The Width property specifies the width of the element. Use the Width and Height properties to resize the element, while the AutoSize property is False. If AutoSize property is True, the Width and the Height can not be changed programmatically. The X and Y properties specifies the position of the element on the surface. Use the MoveTo method to move/resize the element to a new position / size.


method MoveTo

method Element.MoveTo (X as Long, Y as Long, Width as Long, Height as Long)
Moves the element to a new position.

Type | Description
X as Long | A long expression that specifies the x-position of the element on the surface.
Y as Long | A long expression that specifies the y-position of the element on the surface.
Width as Long | A long expression that specifies the width of the element on the surface.
Height as Long | A long expression that specifies the height of the element on the surface.
Use the MoveTo method to move/resize the element to a new position / size. The ScrollTo method ensures that the element fits the surface's visible area. The X and Y properties specifies the position of the element on the surface. The Width property specifies the width of the element. The Height property specifies the height of the element. Use the Width and Height properties to resize the element, while the AutoSize property is False. If AutoSize property is True, the Width and the Height can not be changed programmatically. The MinWidth/MaxWidth and MinHeight/MaxHeight properties specifies the min/max size of the element. The CenterOnLane property aligns the element relative to its lane.


property Object

property Element.Object as Object
Returns the inner object hosted by the current element.

Type | Description
Object | A reference to inner ActiveX control.
The Object property returns nothing if element hosts no ActiveX or creating it failed. The Object property returns a reference to newly created control. The ExSwimLane control fires the OLEEvent event if an inside ActiveX control fires an event. Use the ElementFormat property to specify the area where the inner control is displayed. The InsertControl property adds a new Element object with the Type set on exElementHostControl, and so it hosts an ActiveX inside. The Control property returns the control's identifier. The License property specifies the runtime-license of the control. For instance, if the Control property is "Exontrol.Button", the Object property returns a reference to an Exontrol.Button object. If the Control property is "Exontrol.Grid" the Object property returns a reference to an Exontrol.Grid object.

The following screen shot shows the Exontrol.Grid on the surface:


property OutgoingLinks

property Element.OutgoingLinks as Variant
Returns a safe array of outgoing links.

Type | Description
Variant | A safe-array of Link objects that specifies the links that starts from the current element. You can use the for-each statement to enumerate all outgoing links.
The OutgoingLinks property specifies the list of links that starts from the current element. The IncomingLinks property specifies the list of links that ends on the current element. The ElementFrom property of the Link object indicates where the Link starts. The ElementTo property of the Link object indicates where the Link ends. Use the ShowLinksColor(exShowLinksStartsFrom)/ ShowLinksStyle(exShowLinksStartsFrom)/ShowLinksWidth(exShowLinksStartsFrom) properties to mark the outgoing links of selected elements. The PathTo property indicates if a path exists from current element to specified element.

The following screen shot shows the outgoing links (red ):

The following VB sample enumerates the outgoing elements ( of selected elements ):

Private Sub SwimLane1_SelectionChanged()
    With SwimLane1
        Dim s As Variant
        For Each s In .Selection
            Debug.Print "Outgoing Elements of " & s.ID & "are: "
            With s
                For Each i In .OutgoingLinks
                    Debug.Print i.ElementTo.ID
                Next
            End With
        Next
    End With
End Sub


property OverviewColor

property Element.OverviewColor as Color
Gets or sets a value that indicates the element's overview color.

Type | Description
Color | A Color expression that specifies the color to show the element when it is not visible on the surface's client area
By default, the OverviewColor property is -1, which indicates that the control's OverviewColor property specifies the overview-color to show the elements on the control's border. Use the OverviewColor property to specify a different color to be shown for specific elements. The OverviewColor property has effect when the element is not fitting the surface's client area and it is shown on the border of the surface. If the control's OverviewColor property is -1, no elements is shown on the border.

The following screen shot shows the how elements are shown when they are not visible in the surface's client area ( look on the border ) :

The following screen shot shows the elements when they are visible on the surface's client area:


property Padding

property Element.Padding(Edge as PaddingEdgeEnum) as Long
Returns or sets a value that indicates the padding of the element's background.

Type | Description
Edge as PaddingEdgeEnum | A PaddingEdgeEnum expression that specifies the edge to be changed
Long | A long expression that defines the padding
By default, Padding property is 0. The Padding property specifies the body/background padding. The BorderPadding property specifies the padding to be applied on borders, to define the position of the status and the body parts of the element. The StatusPadding property specifies the status padding. The ClientPadding property specifies the padding while the element's Type property is exElementHostWindow or exElementHostControl.

The following screen shot shows the element when Padding is 0 (default):

The following screen shot shows the element when Padding is 1:

The following screen shot shows the element when Padding is 4:


property PathTo

property Element.PathTo (ElementTo as Element) as Boolean
Determines if there is any path from the current element to the specified element.

Type | Description
ElementTo as Element | An Element object that specifies the ending element
Boolean | A Boolean expression that specifies if a path exists between current element to specified element. A Path is defined by the element and its outgoing links.
The PathTo property indicates if a path exists from current element to specified element. The OutgoingLinks property specifies the list of links that starts from the current element. The IncomingLinks property specifies the list of links that ends on the current element. The ElementFrom property of the Link object indicates where the Link starts. The ElementTo property of the Link object indicates where the Link ends. Use the ShowLinksColor(exShowLinksStartsFrom)/ ShowLinksStyle(exShowLinksStartsFrom)/ShowLinksWidth(exShowLinksStartsFrom) properties to mark the outgoing links of selected elements.

For instance, you can use the PathTo property to prevent adding cycles in the chart, as in the following VB sample:

Private Sub SwimLane1_AllowLink(ByVal ElementFrom As EXSWIMLANELibCtl.IElement, ByVal ElementTo As EXSWIMLANELibCtl.IElement, Cancel As Boolean)
    Cancel = ElementTo.PathTo(ElementFrom)
End Sub

The AllowLink event notifies that the user links two elements.

The following screen shot shows the path between Element A and Element B:


property Pattern

property Element.Pattern as Pattern
Specifies the pattern to be shown on the element's background.

Type | Description
Pattern | A Pattern to be shown over the element's background.
By default, no Pattern is shown on the element's background. The Pattern property defines the pattern to be shown on the element's background. The BackColor property specifies the element's background color. Background(exElementBackColor) property specifies the default background color / visual appearance. The ForeColor property specifies the element's foreground color. The Picture property specifies the picture to be shown on the element's background. The PictureDisplay property specifies the way the element's picture is displayed on the element's background.

The following screen shot shows an element with different pattern:

The following samples applies a pattern like ( not available ) over the element:

VBA (MS Access, Excell...)

With SwimLane1
    With .Elements
        With .Add("Element+Pattern",-100).Pattern
            .Type = 6
            .Color = RGB(224,224,224)
        End With
        .Add "Element",100
    End With
End With

VB6

With SwimLane1
    With .Elements
        With .Add("Element+Pattern",-100).Pattern
            .Type = exPatternBDiagonal
            .Color = RGB(224,224,224)
        End With
        .Add "Element",100
    End With
End With

VB.NET

With Exswimlane1
    With .Elements
        With .Add("Element+Pattern",-100).Pattern
            .Type = exontrol.EXSWIMLANELib.PatternEnum.exPatternBDiagonal
            .Color = Color.FromArgb(224,224,224)
        End With
        .Add("Element",100)
    End With
End With

VB.NET for /COM

With AxSwimLane1
    With .Elements
        With .Add("Element+Pattern",-100).Pattern
            .Type = EXSWIMLANELib.PatternEnum.exPatternBDiagonal
            .Color = RGB(224,224,224)
        End With
        .Add("Element",100)
    End With
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
EXSWIMLANELib::IElementsPtr var_Elements = spSwimLane1->GetElements();
    EXSWIMLANELib::IPatternPtr var_Pattern = var_Elements->Add("Element+Pattern",long(-100),vtMissing,vtMissing,vtMissing,vtMissing)->GetPattern();
        var_Pattern->PutType(EXSWIMLANELib::exPatternBDiagonal);
        var_Pattern->PutColor(RGB(224,224,224));
    var_Elements->Add("Element",long(100),vtMissing,vtMissing,vtMissing,vtMissing);

C++ Builder

Exswimlanelib_tlb::IElementsPtr var_Elements = SwimLane1->Elements;
    Exswimlanelib_tlb::IPatternPtr var_Pattern = var_Elements->Add(TVariant("Element+Pattern"),TVariant(-100),TNoParam(),TNoParam(),TNoParam(),TNoParam())->Pattern;
        var_Pattern->Type = Exswimlanelib_tlb::PatternEnum::exPatternBDiagonal;
        var_Pattern->Color = RGB(224,224,224);
    var_Elements->Add(TVariant("Element"),TVariant(100),TNoParam(),TNoParam(),TNoParam(),TNoParam());

C#

exontrol.EXSWIMLANELib.Elements var_Elements = exswimlane1.Elements;
    exontrol.EXSWIMLANELib.Pattern var_Pattern = var_Elements.Add("Element+Pattern",-100,null,null,null,null).Pattern;
        var_Pattern.Type = exontrol.EXSWIMLANELib.PatternEnum.exPatternBDiagonal;
        var_Pattern.Color = Color.FromArgb(224,224,224);
    var_Elements.Add("Element",100,null,null,null,null);

JavaScript

<OBJECT classid="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
    var var_Elements = SwimLane1.Elements;
        var var_Pattern = var_Elements.Add("Element+Pattern",-100,null,null,null,null).Pattern;
            var_Pattern.Type = 6;
            var_Pattern.Color = 14737632;
        var_Elements.Add("Element",100,null,null,null,null);
</SCRIPT>

C# for /COM

EXSWIMLANELib.Elements var_Elements = axSwimLane1.Elements;
    EXSWIMLANELib.Pattern var_Pattern = var_Elements.Add("Element+Pattern",-100,null,null,null,null).Pattern;
        var_Pattern.Type = EXSWIMLANELib.PatternEnum.exPatternBDiagonal;
        var_Pattern.Color = (uint)ColorTranslator.ToWin32(Color.FromArgb(224,224,224));
    var_Elements.Add("Element",100,null,null,null,null);

X++ (Dynamics Ax 2009)

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

    super();

    var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
        var_Element = COM::createFromObject(com_Elements.Add("Element+Pattern",COMVariant::createFromInt(-100))); com_Element = var_Element;
        var_Pattern = com_Element.Pattern(); com_Pattern = var_Pattern;
            com_Pattern.Type(6/*exPatternBDiagonal*/);
            com_Pattern.Color(WinApi::RGB2int(224,224,224));
        com_Elements.Add("Element",COMVariant::createFromInt(100));
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    with Elements do
    begin
        with Add('Element+Pattern',TObject(-100),Nil,Nil,Nil,Nil).Pattern do
        begin
            Type := EXSWIMLANELib.PatternEnum.exPatternBDiagonal;
            Color := $e0e0e0;
        end;
        Add('Element',TObject(100),Nil,Nil,Nil,Nil);
    end;
end

Delphi (standard)

with SwimLane1 do
begin
    with Elements do
    begin
        with Add('Element+Pattern',OleVariant(-100),Null,Null,Null,Null).Pattern do
        begin
            Type := EXSWIMLANELib_TLB.exPatternBDiagonal;
            Color := $e0e0e0;
        end;
        Add('Element',OleVariant(100),Null,Null,Null,Null);
    end;
end

VFP

with thisform.SwimLane1
    with .Elements
        with .Add("Element+Pattern",-100).Pattern
            .Type = 6
            .Color = RGB(224,224,224)
        endwith
        .Add("Element",100)
    endwith
endwith

dBASE Plus

local oSwimLane,var_Elements,var_Pattern

oSwimLane = form.Activex1.nativeObject
var_Elements = oSwimLane.Elements
    var_Pattern = var_Elements.Add("Element+Pattern",-100).Pattern
        var_Pattern.Type = 6
        var_Pattern.Color = 0xe0e0e0
    var_Elements.Add("Element",100)

XBasic (Alpha Five)

Dim oSwimLane as P
Dim var_Elements as P
Dim var_Pattern as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
var_Elements = oSwimLane.Elements
    var_Pattern = var_Elements.Add("Element+Pattern",-100).Pattern
        var_Pattern.Type = 6
        var_Pattern.Color = 14737632
    var_Elements.Add("Element",100)

Visual Objects

local var_Elements as IElements
local var_Pattern as IPattern

var_Elements := oDCOCX_Exontrol1:Elements
    var_Pattern := var_Elements:Add("Element+Pattern",-100,nil,nil,nil,nil):Pattern
        var_Pattern:Type := exPatternBDiagonal
        var_Pattern:Color := RGB(224,224,224)
    var_Elements:Add("Element",100,nil,nil,nil,nil)

PowerBuilder

OleObject oSwimLane,var_Elements,var_Pattern

oSwimLane = ole_1.Object
var_Elements = oSwimLane.Elements
    var_Pattern = var_Elements.Add("Element+Pattern",-100).Pattern
        var_Pattern.Type = 6
        var_Pattern.Color = RGB(224,224,224)
    var_Elements.Add("Element",100)

Visual DataFlex

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+Pattern" -100 Nothing Nothing Nothing Nothing to voElement
        Handle hoElement
        Get Create (RefClass(cComElement)) to hoElement
        Set pvComObject of hoElement to voElement
            Variant voPattern
            Get ComPattern of hoElement to voPattern
            Handle hoPattern
            Get Create (RefClass(cComPattern)) to hoPattern
            Set pvComObject of hoPattern to voPattern
                Set ComType of hoPattern to OLEexPatternBDiagonal
                Set ComColor of hoPattern to (RGB(224,224,224))
            Send Destroy to hoPattern
        Send Destroy to hoElement
        Get ComAdd of hoElements "Element" 100 Nothing Nothing Nothing Nothing to Nothing
    Send Destroy to hoElements
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oElements
    LOCAL oPattern
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oElements := oSwimLane:Elements()
            oPattern := oElements:Add("Element+Pattern",-100):Pattern()
                oPattern:Type := 6/*exPatternBDiagonal*/
                oPattern:SetProperty("Color",AutomationTranslateColor( GraMakeRGBColor  ( { 224,224,224 } )  , .F. ))
            oElements:Add("Element",100)

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


property Picture

property Element.Picture as IPictureDisp
Retrieves or sets a graphic to be displayed in the control.

Type | Description
IPictureDisp | A Picture object to be shown on the element's background.
The Picture property specifies the picture to be shown on the element's background. The PictureDisplay property specifies the way the element's picture is displayed on the element's background. The BackColor property specifies the element's background color. Background(exElementBackColor) property specifies the default background color / visual appearance. The ForeColor property specifies the element's foreground color. The Pattern property defines the pattern to be shown on the control's background. The Padding property defines the padding of the element. The BorderColor property specifies the color to show the border for a specific element. The StatusColor property specifies the color or the visual appearance to show the element's status part. Use the Pictures / ExtraPictures properties to display different pictures on the element. Use the Picture property to assign your logo on the control's background.

The following screen shot shows the element's background filled with the Picture property:


property PictureDisplay

property Element.PictureDisplay as PictureDisplayEnum
Retrieves or sets a value that indicates the way how the graphic is displayed on the element's background

Type | Description
PictureDisplayEnum | A PictureDisplayEnum expression that indicates how the element's picture is displayed on the element's background.
The PictureDisplay property specifies the way the element's picture is displayed on the element's background. The Picture property specifies the picture to be shown on the element's background. The BackColor property specifies the element's background color. Background(exElementBackColor) property specifies the default background color / visual appearance. The ForeColor property specifies the element's foreground color. The Pattern property defines the pattern to be shown on the control's background. The Padding property defines the padding of the element. The BorderColor property specifies the color to show the border for a specific element. The StatusColor property specifies the color or the visual appearance to show the element's status part.


property Pictures

property Element.Pictures as String
Specifies the list of pictures to be displayed on the element.

Type | Description
String | A string expression that specifies the list of pictures to be shown on the element's body. The element's body can display one ore more pictures at the time, on different lines. For instance: "1,2/pic1" displays the 1 and 2 icons on the first line, while pic2 is displayed on the second line.
By default, the Pictures property is "", which means that initially no pictures are being displayed on the element. The Pictures or/and ExtraPictures property displays a collection of icons, pictures in the element's body. The Picture and ExtraPictures may display one or more pictures at the time. The , character indicates the separator of pictures in the same line, while the / character divides the lines to show the pictures. For instance, "1,2" displays icon with the index 1 and 2 on the same line, while the "1/2,pic1" displays the first icon on the first line, the second icon and the picture pic1 on the second line. The Images method loads icons to the control. The Images collection can display only 16x16 icons. The HTMLPicture assigns a key to a picture object. The ShowHandCursorOn property specifies whether the hand cursor is shown when hovering a picture on the element. The HandCursorClick event occurs once the user clicks a picture on the element ( ShowHandCursorOn property must include the exShowHandCursorPicture, exShowHandCursorIcon and exShowHandCursorPictures ). The PicturesAlign property specifies the alignment of the Pictures relative to the element.

The Picture property displays a picture on the element's background. The PictureDisplay property specifies the way the element's picture is displayed on the element's background. The BackColor property specifies the element's background color. Background(exElementBackColor) property specifies the default background color / visual appearance. The ForeColor property specifies the element's foreground color. The Pattern property defines the pattern to be shown on the control's background.


property PicturesAlign

property Element.PicturesAlign as ContentAlignmentEnum
Indicates the alignment of the element's picture.

Type | Description
ContentAlignmentEnum | A ContentAlignmentEnum expression that specifies the alignment of the pictures in the element.
By default, The PicturesAlign property is exBottomRight. The PicturesAlign property specifies the alignment of the Pictures relative to the element. By default, the Pictures property is "", which means that initially no pictures are being displayed on the element. The Pictures or/and ExtraPictures property displays a collection of icons, pictures in the element's body. The Picture and ExtraPictures may display one or more pictures at the time. The , character indicates the separator of pictures in the same line, while the / character divides the lines to show the pictures. For instance, "1,2" displays icon with the index 1 and 2 on the same line, while the "1/2,pic1" displays the first icon on the first line, the second icon and the picture pic1 on the second line. The Images method loads icons to the control. The Images collection can display only 16x16 icons. The HTMLPicture assigns a key to a picture object. The ShowHandCursorOn property specifies whether the hand cursor is shown when hovering a picture on the element. The HandCursorClick event occurs once the user clicks a picture on the element ( ShowHandCursorOn property must include the exShowHandCursorPicture, exShowHandCursorIcon and exShowHandCursorPictures ).


property Resizable

property Element.Resizable as Boolean
Gets or sets a value that indicates whether the user can resize the element.

Type | Description
Boolean | A Boolean expression that specifies whether the user can resize the element at runtime.
By default, the Resizable property is True, which specifies that the user can resize the element at runtime. The Resizable property has no effect if the element's AutoSize property is True. The MinWidth/MaxWidth and MinHeight/MaxHeight properties specifies the min/max size of the element. The Height property specifies the height of the element. The Width property specifies the width of the element. Use the Width and Height properties to resize the element, while the AutoSize property is False. If AutoSize property is True, the Width and the Height can not be changed programmatically. The X and Y properties specifies the position of the element on the surface. Use the MoveTo method to move/resize the element to a new position / size. The Selectable property indicates whether the user can select the element. Use the AllowResizeElement property to specify whether the element can be resized at runtime.


method ScrollTo

method Element.ScrollTo (To as ContentAlignmentEnum)
Moves or scrolls the surface, so the current element aligns to the specified corner.

Type | Description
To as ContentAlignmentEnum | A ContentAlignmentEnum expression that specifies where on the surface the element should be scrolled to.
The ScrollTo method ensures that the element fits the surface's visible area. The control's ScrollPos, ScrollX and ScrollY properties specify the surface's scroll position. Use the ScrollTo method of the control to scroll the surface at specified position. The MovePoint method of the control moves the surface from the one point to another. The MoveCorner method scrolls the surface from a corner to another.

The X and Y properties specifies the position of the element on the surface. Use the MoveTo method to move/resize the element to a new position / size. The Width property specifies the width of the element. The Height property specifies the height of the element. Use the Width and Height properties to resize the element, while the AutoSize property is False. If AutoSize property is True, the Width and the Height can not be changed programmatically. The MinWidth/MaxWidth and MinHeight/MaxHeight properties specifies the min/max size of the element.


property Selectable

property Element.Selectable as Boolean
Indicates if the element is selectable.

Type | Description
Boolean | A Boolean expression that specifies whether the element is selectable or un-selectable.
By default, the Selectable property is True. The Selectable property of the Element object indicates whether the element is selectable or un-selectable. The SelectionChanged event occurs once a new element is selected or unselected. The Selected property of the Element object indicates whether the element is selected or unselected. Use the Enabled property to show the element as disabled ( grayed ).

The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectObjectRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface. The AllowMoveElement property specifies the keys combination so the user can move the element from the cursor. The AllowMoveSelection property indicates whether the entire selection is moved if an element in the selection is moved. Set the AllowMoveElement property on exDisallow, to prevent user to move any element in the surface.


property Selected

property Element.Selected as Boolean
Indicates if the element is selected or unselected.

Type | Description
Boolean | A Boolean expression that specifies whether the element is selected or unselected.
By default, the Selected property is False. The Selected property of the Element object indicates whether the element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable. The SelectionChanged event occurs once a new element is selected or unselected. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface.

The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectObjectRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface.


method SendToBack

method Element.SendToBack ()
Sends the element to the back.

Type Description
The SendToBack method sends the current element to the back. The BringToFront method brings the element to the front. For instance, if two element gets intersected, you can use the BringToFront method to bring one element on front, or SendToBack method to send the element on the back. The BringToFront and SendToBack methods changes the drawing order of the elements.


property Shape

property Element.Shape as ShapeEnum
Specifies the shape to display the element.

Type | Description
ShapeEnum | A ShapeEnum expression that defines the element's shape.
By default, the Shape property is exShapeDefault, which means that the element's border is defined by the Background(exElementShape) property. The Shape property specifies the shape to display the element. The Background(exElementShape) property specifies the shape to show all the elements on the surface, while the Border property is exShapeDefault. The BackColor property specifies the element's background color/visual appearance/shape.

The following screen shot shows elements with different shapes ( Shape property ).

The following screen shot shows elements with different shapes using EBN colors ( BackColor property ).


property ShowCheckBox

property Element.ShowCheckBox as Boolean
Gets or sets a value that indicates whether the element shows or hides the check-box.

Type | Description
Boolean | A Boolean expression that specifies whether the element displays the checkbox.
By default, the ShowCheckBox property is False, which means that no check-box is displayed. Use the ShowCheckBox property to show or hide the element's checkbox. Use the CheckBoxAlign property to align the element's checkbox. Use the Checked property to specify the state of the element's checkbox. The CheckElement event occurs when the checkbox's state is changed. Use the Background(exCheckBoxState0), Background(exCheckBoxState1), Background(exCheckBoxState2) to change the visual appearance for all check-boxes.


property ShowHandCursorOn

property Element.ShowHandCursorOn as ShowHandCursorOnEnum
Specifies whether the hand cursor is shown when hovering the element.

Type | Description
ShowHandCursorOnEnum | A ShowHandCursorOnEnum expression that specifies the parts of the element where the hand cursor is shown when the mouse-pointer hovers it.
By default, the ShowHandCursorOn property is exShowHandCursorAnchorAll, which indicates that the hand cursor is shown when user hovers any anchor element (<a>). Use the Caption or ExtraCaption property to display hyperlinks or anchors in the element. The AnchorClick event is fired once the user clicks an anchor element. The control fires the HandCursorClick event when the user clicks a part of the element. The Hit parameter of the HandCursorClick specifies the part of the element being clicked, while the Key parameter specifies a value associated with the part being clicked as listed bellow:
  • exShowHandCursorCheck -> key specifies the Element.Checked property.
  • exShowHandCursorAnchor -> key specifies the identifier of the anchor element such as <a id;options> anchor </a>
  • exShowHandCursorPicture -> key specifies the name of the picture being clicked ( HTMLPicture property )
  • exShowHandCursorIcon - key specifies the index of the icon being clicked ( Images method )

The above flags can be combined with the following flags:

  • exShowHandCursorCaption, indicates that the part being clicked belong to the element's caption.
  • exShowHandCursorExtraCaption, indicates that the part being clicked belong to the element's extra caption.
  • exShowHandCursorPictures, indicates that the part being clicked belong to the element's pictures.
  • exShowHandCursorExtraPictures, indicates that the part being clicked belong to the element's extra pictures.

The following samples shows how you can handle clicking an icon or a picture of the element:

VBA (MS Access, Excell...)

' HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
Private Sub SwimLane1_HandCursorClick(ByVal Element As Object,ByVal Hit As Long,ByVal Key As Variant)
    With SwimLane1
        Debug.Print( Key )
    End With
End Sub

With SwimLane1
    .Images "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" & _
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" & _
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" & _
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" & _
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA="
    .HTMLPicture("pic1") = "c:\exontrol\images\zipdisk.gif"
    .HTMLPicture("pic2") = "c:\exontrol\images\auction.gif"
    With .Elements.Add("Caption")
        .Pictures = "1,2/pic1/pic2"
        .PicturesAlign = 33
        .ShowHandCursorOn = 771 ' ShowHandCursorOnEnum.exShowHandCursorExtraPictures Or ShowHandCursorOnEnum.exShowHandCursorPictures Or ShowHandCursorOnEnum.exShowHandCursorIcon Or ShowHandCursorOnEnum.exShowHandCursorPicture
        .CaptionAlign = 1
    End With
End With

VB6

' HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
Private Sub SwimLane1_HandCursorClick(ByVal Element As EXSWIMLANELibCtl.IElement,ByVal Hit As EXSWIMLANELibCtl.ShowHandCursorOnEnum,ByVal Key As Variant)
    With SwimLane1
        Debug.Print( Key )
    End With
End Sub

With SwimLane1
    .Images "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" & _
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" & _
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" & _
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" & _
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA="
    .HTMLPicture("pic1") = "c:\exontrol\images\zipdisk.gif"
    .HTMLPicture("pic2") = "c:\exontrol\images\auction.gif"
    With .Elements.Add("Caption")
        .Pictures = "1,2/pic1/pic2"
        .PicturesAlign = exBottomCenter
        .ShowHandCursorOn = ShowHandCursorOnEnum.exShowHandCursorExtraPictures Or ShowHandCursorOnEnum.exShowHandCursorPictures Or ShowHandCursorOnEnum.exShowHandCursorIcon Or ShowHandCursorOnEnum.exShowHandCursorPicture
        .CaptionAlign = exTopCenter
    End With
End With

VB.NET

' HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
Private Sub Exswimlane1_HandCursorClick(ByVal sender As System.Object,ByVal Element As exontrol.EXSWIMLANELib.Element,ByVal Hit As exontrol.EXSWIMLANELib.ShowHandCursorOnEnum,ByVal Key As Object) Handles Exswimlane1.HandCursorClick
    With Exswimlane1
        Debug.Print( Key )
    End With
End Sub

With Exswimlane1
    .Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" & _
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" & _
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" & _
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" & _
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
    .set_HTMLPicture("pic1","c:\exontrol\images\zipdisk.gif")
    .set_HTMLPicture("pic2","c:\exontrol\images\auction.gif")
    With .Elements.Add("Caption")
        .Pictures = "1,2/pic1/pic2"
        .PicturesAlign = exontrol.EXSWIMLANELib.ContentAlignmentEnum.exBottomCenter
        .ShowHandCursorOn = exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorExtraPictures Or exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPictures Or exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorIcon Or exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPicture
        .CaptionAlign = exontrol.EXSWIMLANELib.ContentAlignmentEnum.exTopCenter
    End With
End With

VB.NET for /COM

' HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
Private Sub AxSwimLane1_HandCursorClick(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_HandCursorClickEvent) Handles AxSwimLane1.HandCursorClick
    With AxSwimLane1
        Debug.Print( e.key )
    End With
End Sub

With AxSwimLane1
    .Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" & _
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" & _
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" & _
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" & _
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
    .set_HTMLPicture("pic1","c:\exontrol\images\zipdisk.gif")
    .set_HTMLPicture("pic2","c:\exontrol\images\auction.gif")
    With .Elements.Add("Caption")
        .Pictures = "1,2/pic1/pic2"
        .PicturesAlign = EXSWIMLANELib.ContentAlignmentEnum.exBottomCenter
        .ShowHandCursorOn = EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorExtraPictures Or EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPictures Or EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorIcon Or EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPicture
        .CaptionAlign = EXSWIMLANELib.ContentAlignmentEnum.exTopCenter
    End With
End With

C++

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
void OnHandCursorClickSwimLane1(LPDISPATCH Element,long Hit,VARIANT Key)
{
    /*
        Copy and paste the following directives to your header file as
        it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'
        #import <ExSwimLane.dll>
        using namespace EXSWIMLANELib;
    */
    EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
    OutputDebugStringW( L"Key" );
}

EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
spSwimLane1->Images(_bstr_t("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0") +
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" +
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" +
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
spSwimLane1->PutHTMLPicture(L"pic1","c:\\exontrol\\images\\zipdisk.gif");
spSwimLane1->PutHTMLPicture(L"pic2","c:\\exontrol\\images\\auction.gif");
EXSWIMLANELib::IElementPtr var_Element = spSwimLane1->GetElements()->Add("Caption",vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
    var_Element->PutPictures(L"1,2/pic1/pic2");
    var_Element->PutPicturesAlign(EXSWIMLANELib::exBottomCenter);
    var_Element->PutShowHandCursorOn(EXSWIMLANELib::ShowHandCursorOnEnum(EXSWIMLANELib::exShowHandCursorExtraPictures | EXSWIMLANELib::exShowHandCursorPictures | EXSWIMLANELib::exShowHandCursorIcon | EXSWIMLANELib::exShowHandCursorPicture));
    var_Element->PutCaptionAlign(EXSWIMLANELib::exTopCenter);

C++ Builder

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
void __fastcall TForm1::SwimLane1HandCursorClick(TObject *Sender,Exswimlanelib_tlb::IElement *Element,Exswimlanelib_tlb::ShowHandCursorOnEnum Hit,Variant Key)
{
    OutputDebugString( L"Key" );
}

SwimLane1->Images(TVariant(String("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0") +
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" +
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" +
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA="));
SwimLane1->HTMLPicture[L"pic1"] = TVariant("c:\\exontrol\\images\\zipdisk.gif");
SwimLane1->HTMLPicture[L"pic2"] = TVariant("c:\\exontrol\\images\\auction.gif");
Exswimlanelib_tlb::IElementPtr var_Element = SwimLane1->Elements->Add(TVariant("Caption"),TNoParam(),TNoParam(),TNoParam(),TNoParam(),TNoParam());
    var_Element->Pictures = L"1,2/pic1/pic2";
    var_Element->PicturesAlign = Exswimlanelib_tlb::ContentAlignmentEnum::exBottomCenter;
    var_Element->ShowHandCursorOn = Exswimlanelib_tlb::ShowHandCursorOnEnum::exShowHandCursorExtraPictures | Exswimlanelib_tlb::ShowHandCursorOnEnum::exShowHandCursorPictures | Exswimlanelib_tlb::ShowHandCursorOnEnum::exShowHandCursorIcon | Exswimlanelib_tlb::ShowHandCursorOnEnum::exShowHandCursorPicture;
    var_Element->CaptionAlign = Exswimlanelib_tlb::ContentAlignmentEnum::exTopCenter;

C#

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
private void exswimlane1_HandCursorClick(object sender,exontrol.EXSWIMLANELib.Element Element,exontrol.EXSWIMLANELib.ShowHandCursorOnEnum Hit,object Key)
{
    System.Diagnostics.Debug.Print( Key.ToString() );
}
//this.exswimlane1.HandCursorClick += new exontrol.EXSWIMLANELib.exg2antt.HandCursorClickEventHandler(this.exswimlane1_HandCursorClick);

exswimlane1.Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" +
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" +
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" +
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
exswimlane1.set_HTMLPicture("pic1","c:\\exontrol\\images\\zipdisk.gif");
exswimlane1.set_HTMLPicture("pic2","c:\\exontrol\\images\\auction.gif");
exontrol.EXSWIMLANELib.Element var_Element = exswimlane1.Elements.Add("Caption",null,null,null,null,null);
    var_Element.Pictures = "1,2/pic1/pic2";
    var_Element.PicturesAlign = exontrol.EXSWIMLANELib.ContentAlignmentEnum.exBottomCenter;
    var_Element.ShowHandCursorOn = exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorExtraPictures | exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPictures | exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorIcon | exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPicture;
    var_Element.CaptionAlign = exontrol.EXSWIMLANELib.ContentAlignmentEnum.exTopCenter;

JavaScript

<SCRIPT FOR="SwimLane1" EVENT="HandCursorClick(Element,Hit,Key)" LANGUAGE="JScript">
    alert( Key );
</SCRIPT>

<OBJECT classid="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
    SwimLane1.Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" +
    "/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" +
    "/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" +
    "x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
    "NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
    SwimLane1.HTMLPicture("pic1") = "c:\\exontrol\\images\\zipdisk.gif";
    SwimLane1.HTMLPicture("pic2") = "c:\\exontrol\\images\\auction.gif";
    var var_Element = SwimLane1.Elements.Add("Caption",null,null,null,null,null);
        var_Element.Pictures = "1,2/pic1/pic2";
        var_Element.PicturesAlign = 33;
        var_Element.ShowHandCursorOn = 771;
        var_Element.CaptionAlign = 1;
</SCRIPT>

C# for /COM

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
private void axSwimLane1_HandCursorClick(object sender, AxEXSWIMLANELib._ISwimLaneEvents_HandCursorClickEvent e)
{
    System.Diagnostics.Debug.Print( e.key.ToString() );
}
//this.axSwimLane1.HandCursorClick += new AxEXSWIMLANELib._ISwimLaneEvents_HandCursorClickEventHandler(this.axSwimLane1_HandCursorClick);

axSwimLane1.Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" +
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" +
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" +
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
axSwimLane1.set_HTMLPicture("pic1","c:\\exontrol\\images\\zipdisk.gif");
axSwimLane1.set_HTMLPicture("pic2","c:\\exontrol\\images\\auction.gif");
EXSWIMLANELib.Element var_Element = axSwimLane1.Elements.Add("Caption",null,null,null,null,null);
    var_Element.Pictures = "1,2/pic1/pic2";
    var_Element.PicturesAlign = EXSWIMLANELib.ContentAlignmentEnum.exBottomCenter;
    var_Element.ShowHandCursorOn = EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorExtraPictures | EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPictures | EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorIcon | EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPicture;
    var_Element.CaptionAlign = EXSWIMLANELib.ContentAlignmentEnum.exTopCenter;

X++ (Dynamics Ax 2009)

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
void onEvent_HandCursorClick(COM _Element,int _Hit,COMVariant _Key)
{
    ;
    print( _Key );
}

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

    super();

    var_s = "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/";
    var_s = var_s + "oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/";
    var_s = var_s + "wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx";
    var_s = var_s + "3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN";
    var_s = var_s + "AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=";
    exswimlane1.Images(COMVariant::createFromStr(var_s));
    exswimlane1.HTMLPicture("pic1","c:\\exontrol\\images\\zipdisk.gif");
    exswimlane1.HTMLPicture("pic2","c:\\exontrol\\images\\auction.gif");
    var_Element = COM::createFromObject(exswimlane1.Elements()).Add("Caption"); com_Element = var_Element;
        com_Element.Pictures("1,2/pic1/pic2");
        com_Element.PicturesAlign(33/*exBottomCenter*/);
        com_Element.ShowHandCursorOn(771/*exShowHandCursorExtraPictures | exShowHandCursorPictures | exShowHandCursorIcon | exShowHandCursorPicture*/);
        com_Element.CaptionAlign(1/*exTopCenter*/);
}

Delphi 8 (.NET only)

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
procedure TWinForm1.AxSwimLane1_HandCursorClick(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_HandCursorClickEvent);
begin
    with AxSwimLane1 do
    begin
        OutputDebugString( e.key );
    end
end;

with AxSwimLane1 do
begin
    Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/' +
    'oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/' +
    'wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx' +
    '3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' +
    'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
    set_HTMLPicture('pic1','c:\exontrol\images\zipdisk.gif');
    set_HTMLPicture('pic2','c:\exontrol\images\auction.gif');
    with Elements.Add('Caption',Nil,Nil,Nil,Nil,Nil) do
    begin
        Pictures := '1,2/pic1/pic2';
        PicturesAlign := EXSWIMLANELib.ContentAlignmentEnum.exBottomCenter;
        ShowHandCursorOn := Integer(EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorExtraPictures) Or Integer(EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPictures) Or Integer(EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorIcon) Or Integer(EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPicture);
        CaptionAlign := EXSWIMLANELib.ContentAlignmentEnum.exTopCenter;
    end;
end

Delphi (standard)

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
procedure TForm1.SwimLane1HandCursorClick(ASender: TObject; Element : IElement;Hit : ShowHandCursorOnEnum;Key : OleVariant);
begin
    with SwimLane1 do
    begin
        OutputDebugString( Key );
    end
end;

with SwimLane1 do
begin
    Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/' +
    'oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/' +
    'wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx' +
    '3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' +
    'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
    HTMLPicture['pic1'] := 'c:\exontrol\images\zipdisk.gif';
    HTMLPicture['pic2'] := 'c:\exontrol\images\auction.gif';
    with Elements.Add('Caption',Null,Null,Null,Null,Null) do
    begin
        Pictures := '1,2/pic1/pic2';
        PicturesAlign := EXSWIMLANELib_TLB.exBottomCenter;
        ShowHandCursorOn := Integer(EXSWIMLANELib_TLB.exShowHandCursorExtraPictures) Or Integer(EXSWIMLANELib_TLB.exShowHandCursorPictures) Or Integer(EXSWIMLANELib_TLB.exShowHandCursorIcon) Or Integer(EXSWIMLANELib_TLB.exShowHandCursorPicture);
        CaptionAlign := EXSWIMLANELib_TLB.exTopCenter;
    end;
end

VFP

*** HandCursorClick event - The uses clicks a part of the element that shows the had cursor. ***
LPARAMETERS Element,Hit,Key
    with thisform.SwimLane1
        DEBUGOUT( Key )
    endwith

with thisform.SwimLane1
    var_s = "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/"
    var_s = var_s + "oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/"
    var_s = var_s + "wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx"
    var_s = var_s + "3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN"
    var_s = var_s + "AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA="
    .Images(var_s)
    .Object.HTMLPicture("pic1") = "c:\exontrol\images\zipdisk.gif"
    .Object.HTMLPicture("pic2") = "c:\exontrol\images\auction.gif"
    with .Elements.Add("Caption")
        .Pictures = "1,2/pic1/pic2"
        .PicturesAlign = 33
        .ShowHandCursorOn = 771 && ShowHandCursorOnEnum.exShowHandCursorExtraPictures Or ShowHandCursorOnEnum.exShowHandCursorPictures Or ShowHandCursorOnEnum.exShowHandCursorIcon Or ShowHandCursorOnEnum.exShowHandCursorPicture
        .CaptionAlign = 1
    endwith
endwith

dBASE Plus

/*
with (this.ACTIVEX1.nativeObject)
    HandCursorClick = class::nativeObject_HandCursorClick
endwith
*/
// The uses clicks a part of the element that shows the had cursor.
function nativeObject_HandCursorClick(Element,Hit,Key)
    local oSwimLane
    oSwimLane = form.Activex1.nativeObject
    ? Str(Key)
return

local oSwimLane,var_Element

oSwimLane = form.Activex1.nativeObject
oSwimLane.Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oSwimLane.Template = [HTMLPicture("pic1") = "c:\exontrol\images\zipdisk.gif"] // oSwimLane.HTMLPicture("pic1") = "c:\exontrol\images\zipdisk.gif"
oSwimLane.Template = [HTMLPicture("pic2") = "c:\exontrol\images\auction.gif"] // oSwimLane.HTMLPicture("pic2") = "c:\exontrol\images\auction.gif"
var_Element = oSwimLane.Elements.Add("Caption")
    var_Element.Pictures = "1,2/pic1/pic2"
    var_Element.PicturesAlign = 33
    var_Element.ShowHandCursorOn = 771 /*exShowHandCursorExtraPictures | exShowHandCursorPictures | exShowHandCursorIcon | exShowHandCursorPicture*/
    var_Element.CaptionAlign = 1

XBasic (Alpha Five)

' The uses clicks a part of the element that shows the had cursor.
function HandCursorClick as v (Element as OLE::Exontrol.SwimLane.1::IElement,Hit as OLE::Exontrol.SwimLane.1::ShowHandCursorOnEnum,Key as A)
    Dim oSwimLane as P
    oSwimLane = topparent:CONTROL_ACTIVEX1.activex
    ? Key
end function

Dim oSwimLane as P
Dim var_Element as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
oSwimLane.Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oSwimLane.Template = "HTMLPicture(\"pic1\") = \"c:\exontrol\images\zipdisk.gif\"" ' oSwimLane.HTMLPicture("pic1") = "c:\exontrol\images\zipdisk.gif"
oSwimLane.Template = "HTMLPicture(\"pic2\") = \"c:\exontrol\images\auction.gif\"" ' oSwimLane.HTMLPicture("pic2") = "c:\exontrol\images\auction.gif"
var_Element = oSwimLane.Elements.Add("Caption")
    var_Element.Pictures = "1,2/pic1/pic2"
    var_Element.PicturesAlign = 33
    var_Element.ShowHandCursorOn = 771 'exShowHandCursorExtraPictures + exShowHandCursorPictures + exShowHandCursorIcon + exShowHandCursorPicture
    var_Element.CaptionAlign = 1

Visual Objects

METHOD OCX_Exontrol1HandCursorClick(Element,Hit,Key) CLASS MainDialog
    // HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
    OutputDebugString(String2Psz( AsString(Key) ))
RETURN NIL

local var_Element as IElement

oDCOCX_Exontrol1:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oDCOCX_Exontrol1:[HTMLPicture,"pic1"] := "c:\exontrol\images\zipdisk.gif"
oDCOCX_Exontrol1:[HTMLPicture,"pic2"] := "c:\exontrol\images\auction.gif"
var_Element := oDCOCX_Exontrol1:Elements:Add("Caption",nil,nil,nil,nil,nil)
    var_Element:Pictures := "1,2/pic1/pic2"
    var_Element:PicturesAlign := exBottomCenter
    var_Element:ShowHandCursorOn := exShowHandCursorExtraPictures | exShowHandCursorPictures | exShowHandCursorIcon | exShowHandCursorPicture
    var_Element:CaptionAlign := exTopCenter

PowerBuilder

/*begin event HandCursorClick(oleobject Element,long Hit,any Key) - The uses clicks a part of the element that shows the had cursor.*/
/*
    OleObject oSwimLane
    oSwimLane = ole_1.Object
    MessageBox("Information",string( String(Key) ))
*/
/*end event HandCursorClick*/

OleObject oSwimLane,var_Element

oSwimLane = ole_1.Object
oSwimLane.Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oSwimLane.HTMLPicture("pic1","c:\exontrol\images\zipdisk.gif")
oSwimLane.HTMLPicture("pic2","c:\exontrol\images\auction.gif")
var_Element = oSwimLane.Elements.Add("Caption")
    var_Element.Pictures = "1,2/pic1/pic2"
    var_Element.PicturesAlign = 33
    var_Element.ShowHandCursorOn = 771 /*exShowHandCursorExtraPictures | exShowHandCursorPictures | exShowHandCursorIcon | exShowHandCursorPicture*/
    var_Element.CaptionAlign = 1

Visual DataFlex

// The uses clicks a part of the element that shows the had cursor.
Procedure OnComHandCursorClick Variant llElement OLEShowHandCursorOnEnum llHit Variant llKey
    Forward Send OnComHandCursorClick llElement llHit llKey
    Showln llKey
End_Procedure

Procedure OnCreate
    Forward Send OnCreate
    Send ComImages "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA="
    Set ComHTMLPicture "pic1" to "c:\exontrol\images\zipdisk.gif"
    Set ComHTMLPicture "pic2" to "c:\exontrol\images\auction.gif"
    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 "Caption" Nothing Nothing Nothing Nothing Nothing to voElement
        Handle hoElement
        Get Create (RefClass(cComElement)) to hoElement
        Set pvComObject of hoElement to voElement
            Set ComPictures of hoElement to "1,2/pic1/pic2"
            Set ComPicturesAlign of hoElement to OLEexBottomCenter
            Set ComShowHandCursorOn of hoElement to (OLEexShowHandCursorExtraPictures + OLEexShowHandCursorPictures + OLEexShowHandCursorIcon + OLEexShowHandCursorPicture)
            Set ComCaptionAlign of hoElement to OLEexTopCenter
        Send Destroy to hoElement
    Send Destroy to hoElements
End_Procedure

XBase++

PROCEDURE OnHandCursorClick(oSwimLane,Element,Hit,Key)
    DevOut( Transform(Key,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oElement
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oSwimLane:HandCursorClick := {|Element,Hit,Key| OnHandCursorClick(oSwimLane,Element,Hit,Key)} /*The uses clicks a part of the element that shows the had cursor.*/

        oSwimLane:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
        oSwimLane:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
        oSwimLane:SetProperty("HTMLPicture","pic2","c:\exontrol\images\auction.gif")
        oElement := oSwimLane:Elements():Add("Caption")
            oElement:Pictures := "1,2/pic1/pic2"
            oElement:PicturesAlign := 33/*exBottomCenter*/
            oElement:ShowHandCursorOn := 771/*exShowHandCursorExtraPictures+exShowHandCursorPictures+exShowHandCursorIcon+exShowHandCursorPicture*/
            oElement:CaptionAlign := 1/*exTopCenter*/

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


property StartUpdateElement

property Element.StartUpdateElement as Long
Starts changing properties of the element, so EndUpdateElement method adds programmatically updated properties to undo/redo queue.

Type | Description
Long | A Long expression that specifies the handle to be passed to EndUpdateElement so the updated properties of the bar are added to the Undo/Redo queue of the chart, so they can be used in undo/redo operations.
The StartUpdateElement/EndUpdateElement methods record and add changes of the current element to the control's Undo/Redo queue. You can use the StartBlockUndoRedo / End BlockUndoRedo methods to group multiple Undo/Redo operations into a single-block. The AllowUndoRedo property specifies whether the control supports undo/redo operations for objects (elements, links, ...). No entry is added to the Undo/Redo queue if no property is changed for the current element. Each call of the StartUpdateElement must be succeeded by a EndUpdateElement call. The UndoListAction property lists the Undo actions that can be performed in the chart. The RedoListAction property lists the Redo actions that can be performed in the chart.

The StartUpdateElement/EndUpdateElement methods can record changes for the following properties only:

  • Type, defines the element's type (default and control)
  • Control, Specifies the identifier of the inner control hosted by the current element (only if the Type is exElementHostControl)
  • License, Indicates the runtime license required to create the inner control (only if the Type is exElementHostControl)
  • Caption, gets or sets a value that indicates the HTML caption to be displayed on the element
  • Parent, defines the element's parent (when the element is part of a hierarchy)
  • ChildPosition, specifies the position of the element while it is a child element (when the element is part of a hierarchy)
  • ID, defines the element's unique identifier
  • Format, specifies the way the control shows the parts of the element
  • AutoSize, specifies if the element computes its size automatically
  • ShowCheckBox, shows or hides the element's check-box
  • X, specifies the element's x-position
  • Y, specifies the element's y-position
  • Width, specifies the width of the element
  • Height, specifies the height of the element
  • Expanded, expands or collapses an element (by default, the UI expand/collapse of the elements are not recorded into the Undo/Redo queue)
  • Visible, shows or hides the element
  • Enabled, enables or disables the element
  • Checked, checks or un-checks the element (by default, the UI check/uncheck of the elements are not recorded into the Undo/Redo queue)
  • BackColor, gets or sets a value that indicates the element's background color
  • ForeColor, gets or sets a value that indicates the element's foreground color
  • OverviewColor, gets or sets a value that indicates the element's overview color
  • BorderColor, gets or sets a value that indicates the element's border color
  • StatusColor, gets or sets a value that indicates the element's status color
  • Pictures, specifies the list of pictures to be displayed on the element
  • ExtraPictures, specifies the list of additional pictures to be displayed on the element
  • ExtraCaption, gets or sets a value that indicates additional HTML caption to be displayed on the element
  • Pattern, specifies the pattern to be shown on the element's background
  • UserData, associates any extra data associated with the element

The Undo/Redo records show as:

  • "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods

within the UndoListAction/RedoListAction result.


property StatusAlign

property Element.StatusAlign as EdgeAlignmentEnum
Specifies the alignment of the status inside the element.

Type | Description
EdgeAlignmentEnum | An EdgeAlignmentEnum expression that specifies the alignment of the element's status
The StatusAlign property indicates the alignment of the element's status. Use the StatusColor property to specify a different status color. The StatusPadding property specifies the status padding. The BackColor property specifies the element's background color. The ForeColor property specifies the element's foreground color. The StatusSize property indicates the size of the element's status. The StatusPattern property indicates a different pattern to be displayed on the element's status part.


property StatusColor

property Element.StatusColor as Color
Gets or sets a value that indicates the element's status color.

Type | Description
Color | A Color expression that specifies the color to show the element's status. The last 7 bits in the high significant byte of the color indicates the identifier of the skin being used to paint the part. Use the Add method to add new skins to the control.
By default, the StatusColor is -1, which indicates that the default status color is applied. The Background(exElementStatusColor) property specifies the default status color / visual appearance. Use the StatusColor property to specify a different status color. The StatusPadding property specifies the status padding. The BackColor property specifies the element's background color. The ForeColor property specifies the element's foreground color. The StatusSize property indicates the size of the element's status. The StatusAlign property indicates the alignment of the element's status. The StatusPattern property indicates a different pattern to be displayed on the element's status part.


property StatusPadding

property Element.StatusPadding(Edge as PaddingEdgeEnum) as Long
Returns or sets a value that indicates the padding of the element's status.

Type | Description
Edge as PaddingEdgeEnum | A PaddingEdgeEnum expression that specifies the edge to be changed
Long | A long expression that defines the padding
By default, the StatusPadding is 0. The StatusPadding property specifies the status padding. Use the StatusColor property to specify a different status color. The BackColor property specifies the element's background color. The ForeColor property specifies the element's foreground color. The StatusSize property indicates the size of the element's status. The StatusAlign property indicates the alignment of the element's status. The StatusPattern property indicates a different pattern to be displayed on the element's status part.

The following screen shot shows the element when StatusPadding is 0 (default):

The following screen shot shows the element when StatusPadding is 1:

The following screen shot shows the element when StatusPadding is 4:


property StatusPattern

property Element.StatusPattern as Pattern
Specifies the pattern of the element's status

Type | Description
Pattern | A Pattern object that defines the pattern to be shown on the status
The StatusPattern property indicates a different pattern to be displayed on the element's status part. Use the StatusColor property to specify a different status color. The StatusPadding property specifies the status padding. The BackColor property specifies the element's background color. The ForeColor property specifies the element's foreground color. The StatusSize property indicates the size of the element's status. The StatusAlign property indicates the alignment of the element's status.


property StatusSize

property Element.StatusSize as Long
Specifies the size of the status inside the element.

Type | Description
Long | A Long expression that defines the size of the status part of the element.
By default, the StatusSize property is 0. The StatusSize property indicates the size of the element's status. The StatusAlign property indicates the alignment of the element's status. Use the StatusColor property to specify a different status color. The StatusPadding property specifies the status padding. The BackColor property specifies the element's background color. The ForeColor property specifies the element's foreground color. The StatusPattern property indicates a different pattern to be displayed on the element's status part.


property ToolTip

property Element.ToolTip as String
Gets or sets a value (tooltip) that's displayed once the cursor hovers the element.

Type | Description
String | A String expression that defines the element's tooltip.
By default, the ToolTip property is empty. The ToolTip of the Element is shown, if the ToolTip property is not empty and the cursor hovers the element. Use the ToolTipTitle property to assign a title for the element's tooltip. Use the ShowToolTip method to programmatically show a custom tooltip. Use the ToolTipPopDelay property specifies the period in ms of time the ToolTip remains visible if the mouse pointer is stationary within a control. Use the ToolTipFont property to change the tooltip's font. Use the Background(exToolTipAppearance) property indicates the visual appearance of the borders of the tooltips. Use the Background(exToolTipBackColor) property indicates the tooltip's background color. Use the Background(exToolTipForeColor) property indicates the tooltip's foreground color.

The following screen shot shows the element's tooltip when the cursor hovers the element:

The ToolTip property supports the following HTML elements:

  • <b> ... </b> displays the text in bold
  • <i> ... </i> displays the text in italics
  • <u> ... </u> underlines the text
  • <s> ... </s> Strike-through text
  • <a id;options> ... </a> displays an anchor element that can be clicked. An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link.The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The control fires the AnchorClick(AnchorID, Options) event when the user clicks the anchor element. The FormatAnchor property customizes the visual effect for anchor elements.

    The control supports expandable HTML captions feature which allows you to expand(show)/collapse(hide) different information using <a ;exp=> or <a ;e64=> anchor tags. The exp/e64 field of the anchor stores the HTML line/lines to show once the user clicks/collapses/expands the caption.

    • exp, stores the plain text to be shown once the user clicks the anchor, such as <a ;exp=show lines>
    • e64, encodes in BASE64 the HTML text to be shown once the user clicks the anchor, such as <a ;e64=gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA>+</a> that displays show lines- in gray when the user clicks the + anchor. The gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA string encodes the <fgcolor 808080>show lines<a>-</a></fgcolor> The Decode64Text/Encode64Text methods of the eXPrint can be used to decode/encode e64 fields.

    Any ex-HTML caption can be transformed to an expandable-caption, by inserting the anchor ex-HTML tag. For instance, <solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3 shows the Header in underlined and bold on the first line and Line1, Line2, Line3 on the rest. The show lines is shown instead of Line1, Line2, Line3 once the user clicks the + sign.

  • <font face;size> ... </font> displays portions of text with a different font and/or different size. For instance, the <font Tahoma;12>bit</font> draws the bit text using the Tahoma font, on size 12 pt. If the name of the font is missing, and instead size is present, the current font is used with a different size. For instance, <font ;12>bit</font> displays the bit text using the current font, but with a different size.
  • <fgcolor rrggbb> ... </fgcolor> or <fgcolor=rrggbb> ... </fgcolor> displays text with a specified foreground color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <bgcolor rrggbb> ... </bgcolor> or <bgcolor=rrggbb> ... </bgcolor> displays text with a specified background color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <solidline rrggbb> ... </solidline> or <solidline=rrggbb> ... </solidline> draws a solid-line on the bottom side of the current text-line, of specified RGB color. The <solidline> ... </solidline> draws a black solid-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <dotline rrggbb> ... </dotline> or <dotline=rrggbb> ... </dotline> draws a dot-line on the bottom side of the current text-line, of specified RGB color. The <dotline> ... </dotline> draws a black dot-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <upline> ... </upline> draws the line on the top side of the current text-line (requires <solidline> or <dotline>).
  • <r> right aligns the text
  • <c> centers the text
  • <br> forces a line-break
  • <img>number[:width]</img> inserts an icon inside the text. The number indicates the index of the icon being inserted. Use the Images method to assign a list of icons to your chart. The last 7 bits in the high significant byte of the number expression indicates the identifier of the skin being used to paint the object. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the part. The width is optional and indicates the width of the icon being inserted. Using the width option you can overwrite multiple icons getting a nice effect. By default, if the width field is missing, the width is 18 pixels.
  • <img>key[:width]</img> inserts a custom size picture into the text being previously loaded using the HTMLPicture property. The Key parameter indicates the key of the picture being displayed. The Width parameter indicates a custom size, if you require to stretch the picture, else the original size of the picture is used.
  • & glyph characters as &amp; ( & ), &lt; ( < ), &gt; ( > ), &qout; ( " ) and &#number; ( the character with specified code ), For instance, the &#8364; displays the EUR character. The & ampersand is only recognized as markup when it is followed by a known letter or a #character and a digit. For instance if you want to display <b>bold</b> in HTML caption you can use &lt;b&gt;bold&lt;/b&gt;
  • <off offset> ... </off> defines the vertical offset to display the text/element. The offset parameter defines the offset to display the element. This tag is inheritable, so the offset is keep while the associated </off> tag is found. You can use the <off offset> HTML tag in combination with the <font face;size> to define a smaller or a larger font to be displayed. For instance: Text with <font ;7><off 6>subscript displays the text such as: Text with subscript The Text with <font ;7><off -6>superscript displays the text such as: Text with subscript
  • <gra rrggbb;mode;blend> ... </gra> defines a gradient text. The text color or <fgcolor> defines the starting gradient color, while the rr/gg/bb represents the red/green/blue values of the ending color, 808080 if missing as gray. The mode is a value between 0 and 4, 1 if missing, and blend could be 0 or 1, 0 if missing. The <font> HTML tag can be used to define the height of the font. Any of the rrggbb, mode or blend field may not be specified. The <gra> with no fields, shows a vertical gradient color from the current text color to gray (808080). For instance the <font ;18><gra FFFFFF;1;1>gradient-center</gra></font> generates the following picture:
  • <out rrggbb;width> ... </out> shows the text with outlined characters, where rr/gg/bb represents the red/green/blue values of the outline color, 808080 if missing as gray, width indicates the size of the outline, 1 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><out 000000><fgcolor=FFFFFF>outlined</fgcolor></out></font> generates the following picture:
  • <sha rrggbb;width;offset> ... </sha> define a text with a shadow, where rr/gg/bb represents the red/green/blue values of the shadow color, 808080 if missing as gray, width indicates the size of shadow, 4 if missing, and offset indicates the offset from the origin to display the text's shadow, 2 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><sha>shadow</sha></font> generates the following picture:

    or <font ;31><sha 404040;5;0><fgcolor=FFFFFF>outline anti-aliasing</fgcolor></sha></font> gets:


property ToolTipTitle

property Element.ToolTipTitle as String
Gets or sets a value (title) that's displayed once the cursor hovers the element.

Type | Description
String | A String expression that defines the title of the element's tooltip.
By default, the ToolTipTitle property is empty. Use the ToolTipTitle property to assign a title for the element's tooltip. The ToolTip of the Element is shown, if the ToolTip property is not empty and the cursor hovers the element. Use the ShowToolTip method to programmatically show a custom tooltip. Use the ToolTipPopDelay property specifies the period in ms of time the ToolTip remains visible if the mouse pointer is stationary within a control. Use the ToolTipFont property to change the tooltip's font. Use the Background(exToolTipAppearance) property indicates the visual appearance of the borders of the tooltips. Use the Background(exToolTipBackColor) property indicates the tooltip's background color. Use the Background(exToolTipForeColor) property indicates the tooltip's foreground color.


property Type

property Element.Type as ElementHostTypeEnum
Specifies the element's type.

Type | Description
ElementHostTypeEnum | An ElementHostTypeEnum expression that defines type of the element.
By default, the Type property is exElementHostDefault, which defines the default node, with caption, check, pictures and so on. Use the Type property to change the element's type. Changing the Type property at runtime, loses the properties like Caption, Pictures, and so on. So setting the Type property must be done before calling or changing any of the other properties. Use the Add method to add an element of exElementHostDefault type. Use the InsertControl method to add a new element whose Type property is set on exElementHostControl. The Copy property copies the element. Use the Caption/ExtraCaption property to specify the element's caption or extra-caption. Use the Pictures/ExtraPictures property to display one or more icons, picture to the element. Use the ShowCheckBox property to show the element's check box. Use the ElementFormat property to define how the parts of the element are displayed.

In case, the Type property is:

  • exElementHostWindow, you must use the Window property to associate an existent window with the current element.
  • exElementHostControl, you must use the Control/License property to create an inner control or an ActiveX control. Use the ElementFormat property to define how the parts of the element are displayed. The control fires the OLEEvent event if an inside ActiveX control fires an event.


property UserData

property Element.UserData as Variant
Indicates any extra data associated with the element.

Type | Description
Variant | A VARIANT expression that defines the extra-data associated with the element.
By default, the element's UserData property is empty, so no extra-data is associated with the node. You can use the UserData property to associate your extra data with the current element. The UserData property is not used by the control in any other way, it is provided to store your extra data.


property Visible

property Element.Visible as Boolean
Shows or hides the element.

Type | Description
Boolean | A Boolean expression that specifies whether the element is visible or hidden on the surface.
By default, the Visible property is True. Use the Visible property to hide an element. Use the Remove method to remove an element. If the element is not visible, any incoming or outgoing links are not visible as well. The OutgoingLinks property specifies the list of links that starts from the current element. The IncomingLinks property specifies the list of links that ends on the current element. The ShowElements property retrieves or sets a value that indicates whether the elements are visible or hidden.


property Width

property Element.Width as Long
Specifies the width of the element.

Type | Description
Long | A Long expression that specifies the width in pixels of the element.
The Width property specifies the width of the element. The Height property specifies the height of the element. Use the Width and Height properties to resize the element, while the AutoSize property is False. If AutoSize property is True, the Width and the Height can not be changed programmatically. The MinWidth/MaxWidth and MinHeight/MaxHeight properties specifies the min/max size of the element. The X and Y properties specifies the position of the element on the surface. Use the MoveTo method to move/resize the element to a new position / size.


property Window

property Element.Window as Long
Returns or sets the handle of the window to be hosted by the element.

Type | Description
Long | A HANDLE expression that specifies the handle of the window to be hosted by the current element.
By default, the Windows property is 0. The Window property has effect only, if the element's Type property is set on exElementHostWindow. The Window property may be used to associate an existent window from your form or dialog to be hosted by an element on the surface. Use the InsertControl method to add a new element whose Type property is set on exElementHostControl, and so to host a new ActiveX control.


property X

property Element.X as Long
Specifies the element's x-position.

Type | Description
Long | A Long expression that specifies the x-position of the element on the surface.
The X and Y properties specifies the position of the element on the surface. Use the MoveTo method to move/resize the element to a new position / size. The Width property specifies the width of the element. The Height property specifies the height of the element. Use the Width and Height properties to resize the element, while the AutoSize property is False. If AutoSize property is True, the Width and the Height can not be changed programmatically. The MinWidth/MaxWidth and MinHeight/MaxHeight properties specifies the min/max size of the element. The CenterOnLane property aligns the element relative to its lane.


property Y

property Element.Y as Long
Specifies the element's y-position.

Type | Description
Long | A Long expression that specifies the y-position of the element on the surface.
The X and Y properties specifies the position of the element on the surface. Use the MoveTo method to move/resize the element to a new position / size. The Width property specifies the width of the element. The Height property specifies the height of the element. Use the Width and Height properties to resize the element, while the AutoSize property is False. If AutoSize property is True, the Width and the Height can not be changed programmatically. The MinWidth/MaxWidth and MinHeight/MaxHeight properties specifies the min/max size of the element. The CenterOnLane property aligns the element relative to its lane.


Elements object
The Elements collection holds the elements to be shown on the surface. The Elements property of the control accesses the Elements collection. The Links property of the control accesses the Links collection. The Elements collection supports the following properties and methods:

Name | Description
Add | Adds an Element object to the collection and returns a reference to the newly created object.
Clear | Removes all objects in a collection.
Count | Returns the number of elements in the collection.
InsertControl | Inserts a child Element object ( that hosts another control inside ) to the collection and returns a reference to the newly created object.
InvokeContextMenu | Invokes programmatically the selection's default or customized context menu, and returns the identifier of the selected item.
Item | Returns a specific Element of the Elements collection, giving its identifier.
Remove | Removes a specific member from the Elements collection, giving its identifier or reference.


method Add

method Elements.Add ([Caption as Variant], [X as Variant], [Y as Variant])
Adds an Element object to the collection and returns a reference to the newly created object.

Type | Description
Caption as Variant | A String expression that specifies the caption to be displayed on the element. The Caption property specifies the value of the Caption parameter. Use the CaptionAlign property to align the element's caption.
X as Variant | A long expression that specifies the x-position where the element is sown. If missing, the element is shown at (0,0) position on the surface. The X property indicates the element's x-position on the surface.
Y as Variant | A long expression that specifies the y-position where the element is sown. If missing, the element is shown at (0,0) position on the surface. The X property indicates the element's x-position on the surface.
Return | Description
Element | An Element object that represents the newly created and added element.
The Add method adds programmatically a new element to the surface. Use the InsertControl method to insert programmatically a child element that hosts an inner ActiveX control. The control fires the AddElement event once a new element is added to the Elements collection. The AutoSize property specifies whether the element's size if computed automatically based on its content. While the AutoSize property is True, the element is not resizable. Use the Width / Height property to specify the size of the element. The AllowCreateElement property specifies the combination of keys that allows the user to create objects on the surface. The Copy property copies the element. The Arrange( ID ) method arranges the elements starting from element with the specified ID. If missing, all linked-elements are arranged.

The following samples show how you can programmatically add a new element:

VBA (MS Access, Excell...)

With SwimLane1
    With .Elements
        .Add "new 1"
        .Add "new 1",24,24
    End With
End With

VB6

With SwimLane1
    With .Elements
        .Add "new 1"
        .Add "new 1",24,24
    End With
End With

VB.NET

With Exswimlane1
    With .Elements
        .Add("new 1")
        .Add("new 1",24,24)
    End With
End With

VB.NET for /COM

With AxSwimLane1
    With .Elements
        .Add("new 1")
        .Add("new 1",24,24)
    End With
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
EXSWIMLANELib::IElementsPtr var_Elements = spSwimLane1->GetElements();
    var_Elements->Add("new 1",vtMissing,vtMissing);
    var_Elements->Add("new 1",long(24),long(24));

C++ Builder

Exswimlanelib_tlb::IElementsPtr var_Elements = SwimLane1->Elements;
    var_Elements->Add(TVariant("new 1"),TNoParam(),TNoParam());
    var_Elements->Add(TVariant("new 1"),TVariant(24),TVariant(24));

C#

exontrol.EXSWIMLANELib.Elements var_Elements = exswimlane1.Elements;
    var_Elements.Add("new 1",null,null);
    var_Elements.Add("new 1",24,24);

JavaScript

<OBJECT classid="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
    var var_Elements = SwimLane1.Elements;
        var_Elements.Add("new 1",null,null);
        var_Elements.Add("new 1",24,24);
</SCRIPT>

C# for /COM

EXSWIMLANELib.Elements var_Elements = axSwimLane1.Elements;
    var_Elements.Add("new 1",null,null);
    var_Elements.Add("new 1",24,24);

X++ (Dynamics Ax 2009)

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

    super();

    var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
        com_Elements.Add("new 1");
        com_Elements.Add("new 1",COMVariant::createFromInt(24),COMVariant::createFromInt(24));
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    with Elements do
    begin
        Add('new 1',Nil,Nil);
        Add('new 1',TObject(24),TObject(24));
    end;
end

Delphi (standard)

with SwimLane1 do
begin
    with Elements do
    begin
        Add('new 1',Null,Null);
        Add('new 1',OleVariant(24),OleVariant(24));
    end;
end

VFP

with thisform.SwimLane1
    with .Elements
        .Add("new 1")
        .Add("new 1",24,24)
    endwith
endwith

dBASE Plus

local oSwimLane,var_Elements

oSwimLane = form.Activex1.nativeObject
var_Elements = oSwimLane.Elements
    var_Elements.Add("new 1")
    var_Elements.Add("new 1",24,24)

XBasic (Alpha Five)

Dim oSwimLane as P
Dim var_Elements as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
var_Elements = oSwimLane.Elements
    var_Elements.Add("new 1")
    var_Elements.Add("new 1",24,24)

Visual Objects

local var_Elements as IElements

var_Elements := oDCOCX_Exontrol1:Elements
    var_Elements:Add("new 1",nil,nil)
    var_Elements:Add("new 1",24,24)

PowerBuilder

OleObject oSwimLane,var_Elements

oSwimLane = ole_1.Object
var_Elements = oSwimLane.Elements
    var_Elements.Add("new 1")
    var_Elements.Add("new 1",24,24)

Visual DataFlex

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
        Get ComAdd of hoElements "new 1" Nothing Nothing to Nothing
        Get ComAdd of hoElements "new 1" 24 24 to Nothing
    Send Destroy to hoElements
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oElements
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oElements := oSwimLane:Elements()
            oElements:Add("new 1")
            oElements:Add("new 1",24,24)

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


method Clear

method Elements.Clear ()
Removes all objects in a collection.

Type Description
Use the Clear method to remove all elements from the surface. Use the Remove method to remove a specific element from the Elements collection. The RemoveElement event occurs once the element has been removed from the Elements collection. Use the RemoveSelection method to remove the selected elements. Removing and element removes the incoming and outgoing links as well. Use the RemoveElement event to release any extra data associated with the element.


property Count

property Elements.Count as Long
Returns the number of elements in the collection.

Type | Description
Long | A Long expression that specifies the number of elements on the surface.
The Count property specifies the number of elements in the Elements collection. The Item property accesses the element giving its identifier.

The following VB sample enumerates the elements on the surface:

Dim e As Variant
For Each e In SwimLane1.Elements
    Debug.Print e.ID
Next


method InsertControl

method Elements.InsertControl ([Control as Variant], [License as Variant], [Parent as Variant], [Position as Variant])
Inserts a child Element object ( that hosts another control inside ) to the collection and returns a reference to the newly created object.

Type | Description
Control as Variant | A string expression that can be formatted as follows: a prog ID, a CLSID, a URL, a reference to an Active document , a fragment of HTML. The Control property returns the value of Control parameter.
License as Variant | A string expression that indicates the runtime license key for the component being inserted, if required. Only, the vendor of the component you are going to use is able to give you such of runtime license, so please contact the control's vendor for such of key. Your development license key is not compatible with the runtime license key, so it can't be used here. The License property specifies the runtime-license of the control.
Parent as Variant | Reserved.
Position as Variant | The position of the element in the parent's children collection. If missing, the element is added at the end of the children list.
Return | Description
Element | An Element object that hosts the specified control.

The control supports ActiveX hosting, or in other words, any element can host another inside controls. The InsertControl property adds a new Element object with the Type set on exElementHostControl, that hosts an ActiveX control. The inside ActiveX control is specified by the Control and License parameters. The Object property returns a reference to newly created control. The ExSwimLane control fires the OLEEvent event if an inside ActiveX control fires an event. Use the ElementFormat property to specify the area where the inner control is displayed.

The Control parameter must be formatted in one of the following ways:

  • A ProgID such as "Exontrol.Grid"
  • A CLSID such as "{8E27C92B-1264-101C-8A2F-040224009C02}"
  • A URL such as "https://www.exontrol.com"
  • A reference to an Active document such as "c:\temp\myfile.doc", or "c:\temp\picture.gif"
  • A fragment of HTML such as "MSHTML:<HTML><BODY>This is a line of text</BODY></HTML>"
  • A fragment of XML

The following samples shows how you can host a Command button:

VBA (MS Access, Excell...)

With SwimLane1
    With .Elements
        With .InsertControl("Forms.CommandButton.1")
            .ElementFormat = """check"":18,""client"""
            .Object.Caption = "command"
            .ShowCheckBox = True
            .Height = 48
            .Width = 128
        End With
    End With
End With

VB6

With SwimLane1
    With .Elements
        With .InsertControl("Forms.CommandButton.1")
            .ElementFormat = """check"":18,""client"""
            .Object.Caption = "command"
            .ShowCheckBox = True
            .Height = 48
            .Width = 128
        End With
    End With
End With

VB.NET

With Exswimlane1
    With .Elements
        With .InsertControl("Forms.CommandButton.1")
            .ElementFormat = """check"":18,""client"""
            .Object.Caption = "command"
            .ShowCheckBox = True
            .Height = 48
            .Width = 128
        End With
    End With
End With

VB.NET for /COM

With AxSwimLane1
    With .Elements
        With .InsertControl("Forms.CommandButton.1")
            .ElementFormat = """check"":18,""client"""
            .Object.Caption = "command"
            .ShowCheckBox = True
            .Height = 48
            .Width = 128
        End With
    End With
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
EXSWIMLANELib::IElementsPtr var_Elements = spSwimLane1->GetElements();
    EXSWIMLANELib::IElementPtr var_Element = var_Elements->InsertControl("Forms.CommandButton.1",vtMissing,vtMissing,vtMissing);
        var_Element->PutElementFormat(L"\"check\":18,\"client\"");
        /*
    Copy and paste the following directives to your header file as
    it defines the namespace 'MSForms' for the library: 'Microsoft Forms 2.0 Object Library'

    #import <FM20.DLL>
*/
        ((MSForms::ICommandButtonPtr)(var_Element->GetObject()))->PutCaption(L"command");
        var_Element->PutShowCheckBox(VARIANT_TRUE);
        var_Element->PutHeight(48);
        var_Element->PutWidth(128);

C++ Builder

Exswimlanelib_tlb::IElementsPtr var_Elements = SwimLane1->Elements;
    Exswimlanelib_tlb::IElementPtr var_Element = var_Elements->InsertControl(TVariant("Forms.CommandButton.1"),TNoParam(),TNoParam(),TNoParam());
        var_Element->ElementFormat = L"\"check\":18,\"client\"";
        (IDispatch*)var_Element->Object->Caption = L"command";
        var_Element->ShowCheckBox = true;
        var_Element->Height = 48;
        var_Element->Width = 128;

C#

exontrol.EXSWIMLANELib.Elements var_Elements = exswimlane1.Elements;
    exontrol.EXSWIMLANELib.Element var_Element = var_Elements.InsertControl("Forms.CommandButton.1",null,null,null);
        var_Element.ElementFormat = "\"check\":18,\"client\"";
        // Add 'Microsoft Forms 2.0 Object Library' reference to your project.
        (var_Element.Object as MSForms.CommandButton).Caption = "command";
        var_Element.ShowCheckBox = true;
        var_Element.Height = 48;
        var_Element.Width = 128;

JavaScript

<OBJECT classid="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
    var var_Elements = SwimLane1.Elements;
        var var_Element = var_Elements.InsertControl("Forms.CommandButton.1",null,null,null);
            var_Element.ElementFormat = "\"check\":18,\"client\"";
            var_Element.Object.Caption = "command";
            var_Element.ShowCheckBox = true;
            var_Element.Height = 48;
            var_Element.Width = 128;
</SCRIPT>

C# for /COM

EXSWIMLANELib.Elements var_Elements = axSwimLane1.Elements;
    EXSWIMLANELib.Element var_Element = var_Elements.InsertControl("Forms.CommandButton.1",null,null,null);
        var_Element.ElementFormat = "\"check\":18,\"client\"";
        // Add 'Microsoft Forms 2.0 Object Library' reference to your project.
        (var_Element.Object as MSForms.CommandButton).Caption = "command";
        var_Element.ShowCheckBox = true;
        var_Element.Height = 48;
        var_Element.Width = 128;

X++ (Dynamics Ax 2009)

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

    super();

    var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
        var_Element = com_Elements.InsertControl("Forms.CommandButton.1"); com_Element = var_Element;
            com_Element.ElementFormat("\"check\":18,\"client\"");
            var_Object = COM::createFromObject(com_Element.Object()); com_Object = var_Object;
            com_Object.Caption("command");
            com_Element.ShowCheckBox(true);
            com_Element.Height(48);
            com_Element.Width(128);
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    with Elements do
    begin
        with InsertControl('Forms.CommandButton.1',Nil,Nil,Nil) do
        begin
            ElementFormat := '"check":18,"client"';
            (Object as MSForms.CommandButton).Caption := 'command';
            ShowCheckBox := True;
            Height := 48;
            Width := 128;
        end;
    end;
end

Delphi (standard)

with SwimLane1 do
begin
    with Elements do
    begin
        with InsertControl('Forms.CommandButton.1',Null,Null,Null) do
        begin
            ElementFormat := '"check":18,"client"';
            (IUnknown(Object) as MSForms_TLB.CommandButton).Caption := 'command';
            ShowCheckBox := True;
            Height := 48;
            Width := 128;
        end;
    end;
end

VFP

with thisform.SwimLane1
    with .Elements
        with .InsertControl("Forms.CommandButton.1")
            .ElementFormat = ""+chr(34)+"check"+chr(34)+":18,"+chr(34)+"client"+chr(34)+""
            .Object.Caption = "command"
            .ShowCheckBox = .T.
            .Height = 48
            .Width = 128
        endwith
    endwith
endwith

dBASE Plus

local oSwimLane,var_Element,var_Elements

oSwimLane = form.Activex1.nativeObject
var_Elements = oSwimLane.Elements
    var_Element = var_Elements.InsertControl("Forms.CommandButton.1")
        var_Element.ElementFormat = "" + ["] + "check" + ["] + ":18," + ["] + "client" + ["] + ""
        var_Element.Object.Caption = "command"
        var_Element.ShowCheckBox = true
        var_Element.Height = 48
        var_Element.Width = 128

XBasic (Alpha Five)

Dim oSwimLane as P
Dim var_Element as P
Dim var_Elements as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
var_Elements = oSwimLane.Elements
    var_Element = var_Elements.InsertControl("Forms.CommandButton.1")
        var_Element.ElementFormat = "\"check\":18,\"client\""
        var_Element.Object.Caption = "command"
        var_Element.ShowCheckBox = .t.
        var_Element.Height = 48
        var_Element.Width = 128

Visual Objects

local var_Element as IElement
local var_Elements as IElements

var_Elements := oDCOCX_Exontrol1:Elements
    var_Element := var_Elements:InsertControl("Forms.CommandButton.1",nil,nil,nil)
        var_Element:ElementFormat := "" + CHR(34) + "check" + CHR(34) + ":18," + CHR(34) + "client" + CHR(34) + ""
        // Generate Source for 'Microsoft Forms 2.0 Object Library' server from Tools\Automation Server...
        ICommandButton{var_Element:Object}:Caption := "command"
        var_Element:ShowCheckBox := true
        var_Element:Height := 48
        var_Element:Width := 128

PowerBuilder

OleObject oSwimLane,var_Element,var_Elements

oSwimLane = ole_1.Object
var_Elements = oSwimLane.Elements
    var_Element = var_Elements.InsertControl("Forms.CommandButton.1")
        var_Element.ElementFormat = "" + CHAR(34) + "check" + CHAR(34) + ":18," + CHAR(34) + "client" + CHAR(34) + ""
        var_Element.Object.Caption = "command"
        var_Element.ShowCheckBox = true
        var_Element.Height = 48
        var_Element.Width = 128

Visual DataFlex

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 ComInsertControl of hoElements "Forms.CommandButton.1" Nothing Nothing Nothing to voElement
        Handle hoElement
        Get Create (RefClass(cComElement)) to hoElement
        Set pvComObject of hoElement to voElement
            Set ComElementFormat of hoElement to ""check":18,"client""
            Variant voCommandButton
            Get ComObject of hoElement to voCommandButton
            Handle hoCommandButton
            Get Create (RefClass(cComCommandButton)) to hoCommandButton
            Set pvComObject of hoCommandButton to voCommandButton
                Set ComCaption of hoCommandButton to "command"
            Send Destroy to hoCommandButton
            Set ComShowCheckBox of hoElement to True
            Set ComHeight of hoElement to 48
            Set ComWidth of hoElement to 128
        Send Destroy to hoElement
    Send Destroy to hoElements
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oElement
    LOCAL oElements
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oElements := oSwimLane:Elements()
            oElement := oElements:InsertControl("Forms.CommandButton.1")
                oElement:ElementFormat := "" + CHR(34) + "check" + CHR(34) + ":18," + CHR(34) + "client" + CHR(34) + ""
                oElement:Object():Caption := "command"
                oElement:ShowCheckBox := .T.
                oElement:Height := 48
                oElement:Width := 128

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


method InvokeContextMenu

method Elements.InvokeContextMenu ([ContextMenu as Variant])
Invokes programmatically the selection's default or customized context menu, and returns the identifier of the selected item.

Type | Description
ContextMenu as Variant | A String expression that defines the items to be displayed on the selection's context-menu. If empty, the default context-menu for selection [ContextMenu(exContextMenuSelection) property] is shown.
Return | Description
Variant | A Long expression that indicates the identifier of the item being selected/clicked.
The InvokeContextMenu method invokes programmatically the selection's default or customized context menu, and returns the identifier of the selected item. The ContextMenu(exContextMenuSelection) property defines the default content-menu for selection. The ActionContextMenu event notifies your application once an action occurs within the object's context menu. Use the AllowContextMenu property on exDisallow to disable default's context menu, when the user right clicks the selection. The ContextMenuFont property retrieves or sets the context-menu's font. The Background(exContextMenuAppearance) property ( and related ) defines the control's context menu appearance.

By default, the selection's context-menu shows as follows:

For instance, the InvokeContextMenu( "Item 1,Item 2,[sep],Check 1[chk],Check 2[chk]" ), generates the following screen shot:

For instance, the InvokeContextMenu( "Item 1,Item 2,Popup(Check 1[chk],Check 2[chk])" ), generates the following screen shot:

For instance, the InvokeContextMenu( "Calendar[id=20][img=0],MSChart[id=30],Record[id=40],Slider[id=50],Radio 1[id=100][typ=2][edit=],Radio 2[id=101][typ=2][edit=],Radio 3[id=102][typ=2][edit=],ComboBox[id=90]" ), generates the following screen shot:

The syntax for ContextMenu parameter in BNF notation is:

<ToString> ::= <ITEMS>
<ITEMS> ::= <ITEM>["("<ITEMS>")"][","<ITEMS>]
<ITEM> ::= <CAPTION>[<OPTIONS>]
<OPTIONS> ::= "["<OPTION>"]"["["<OPTIONS>"]"]
<OPTION> ::= <PROPERTY>["="<VALUE>]
<PROPERTY> ::= "img" | "himg" | "sep" | "id" | "typ" | "group" | "chk" | "button" | "align" | "spchk" | "show" | "rad" | "dis" | "showdis" | "bld" | "itl" | "stk" | "und" | "bg" | "fg" | "edittype" | "edit" | "mask" | "border" | "editwidth" | "captionwidth" | "height" | "grp" | "tfi" | "ttp" | "min" | "max" | "tick" | "freq" | "ticklabel" | "small" | "large" | "spin" | "ettp" | "float" | "close"

where the <CAPTION> is the HTML caption to be shown on the context menu item. The <VALUE> indicates the value of giving property.

  • img=<VALUE>, where <VALUE> is an integer expression, that indicates the index of the icon being displayed for the item.
  • himg=<VALUE>, where <VALUE> indicates the key of the picture to be displayed for the item.
  • sep, specifies an separator item
  • id=<VALUE>, where <VALUE> is an integer expression, that indicates the identifier of the item.
  • typ=<VALUE>, where <VALUE> could be one of the following:
    • 0 for regular items,
    • 1 for items that display a check/box (chk)
    • 2 to display radio buttons (rad)
  • group=<VALUE>, where <VALUE> could be a bit-or combination (+) of the following values:
    • 0 (exNoGroupPopup), No grouping is performed on the sub-menu, so the sub-items are shown to a float popup,
    • 1 (exGroupPopup), Groups and displays the sub-menu items on the current item, arranged from left to right
    • 2 (exNoGroupPopupFrame), Prevents showing the frame around each grouping item.
    • 4 (exGroupPopupCenter), Shows the grouping popup aligned to the center of the current item.
    • 8 (exGroupPopupRight), Shows the grouping popup aligned to the right of the current item.
    • 16 (exGroupPopupEqualSize), Shows the items that make the group of the same size
  • chk[=<VALUE>], where <VALUE> could be 0 for unchecked, or not zero for checked. The chk option makes the item to display a check box. If the <VALUE> is missing the item still displays an un-checked check box.
  • button=<VALUE>, where <VALUE> could be 0 for regular or not zero to show the item as a button.
  • align=<VALUE>, where <VALUE> could be one of the following:
    • 0 ( left ), to align the item's caption to the left
    • 1 ( center ), to center the item's caption
    • 2 ( right ), to align the item's caption to the right
  • spchk=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item's sub menu is shown only if the item is checked.
  • show=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the checked item shows as selected
  • rad=<VALUE>, where <VALUE> could be 0 for unchecked radio button or not zero to for checked radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored.
  • dis, specifies a disabled item
  • showdis=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item shows as disabled, but it is still enabled
  • bld, specifies that the item appears in bold
  • itl, specifies that the item appears in italics
  • stk, specifies that the item appears as strikeout
  • und, specifies that the item is underlined
  • bg=<VALUE>, specifies the item's background color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • fg=<VALUE>, specifies the item's foreground color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • edittype=<VALUE>, associates an edit field to the item, where <VALUE> could be one of the following values:
    • 0 ( exItemDisableEdit ), No editor is assigned to the current item.
    • 1 ( exItemEditText ), A text-box editor is assigned to the current item.
    • 2 ( exItemEditMask ), A masked text-box editor is assigned to the current item.
    • 3 ( exItemEditSlider ), A slider editor is assigned to the current item.
    • 4 ( exItemEditProgress ), A progress editor is assigned to the current item.
    • 5 ( exItemEditScrollBar ), A scrollbar editor is assigned to the current item.
    • 6 ( exItemEditColor), A color editor is assigned to the current item.
    • 7 ( exItemEditFont ), A font editor is assigned to the current item.
    • 256 (exItemEditReadOnly), specifies that the item's editor is shown as disabled. This value could be combined with one of the values from 0 to 7, 512
    • 512 ( exItemEditSpin ), A spin editor is assigned to the current item. This value could be combined with one of the values from 0 to 7, 256
  • edit=<VALUE>, specifies the caption to be shown in the item's edit field, where <VALUE> could be any string
  • mask=<VALUE>, specifies the mask to be applied on a masked editor. This option is valid for exItemEditMask edit. Use the float option to allow masking floating point numbers. See EditMask property for more details.
  • border=<VALUE>, specifies the border to be shown on the item's edit field, where <VALUE> could be one of the following:
    • 0 ( exEditBorderNone), No border is shown.
    • -1 (exEditBorderInset), shows an inset border
    • 1 (exEditBorderSingle), shows a frame border
  • editwidth=<VALUE>, specifies the width to show the edit field inside the item. where <VALUE> could be a long expression. A negative value indicates that the field goes to the end of the item
  • captionwidth=<VALUE>, specifies the width to show the HTML caption of the item. where <VALUE> could be a long expression. A negative value indicates that no limitation is applied to the item's caption, so no truncate caption is shown
  • height=<VALUE>, specifies the height to show the item, where <VALUE> could be a positive long expression
  • grp=<VALUE>, defines the radio group. It should be used when you define more groups of radio buttons. A group of radio buttons means that only one item could be checked at one time. The rad option specifies that the item displays a radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored. The <VALUE> could be any long expression.
  • ttp=<VALUE>, defines the item's tooltip. The <VALUE> could be any HTML string expression. The item's tooltip is shown when the user hovers the item.
  • min=<VALUE>, defines the minimum value of the edit field. The <VALUE> could be any long expression, and specifies the minimum value for any slider, progress, scroll, spin, or range editor.
  • max=<VALUE>, defines the maximum value of the edit field. The <VALUE> could be any long expression, and specifies the maximum value for any slider, progress, scroll, spin, or range editor.
  • tick=<VALUE>, defines where the ticks of the slider edit appear. This option is valid for exItemEditSlider edit. The <VALUE> could be one of the following values:
    • 0 ( exBottomRight ), The ticks are displayed on the bottom/right side.
    • 1 ( exTopLeft ), The ticks are displayed on the top/left side.
    • 2 ( exBoth ), The ticks are displayed on the both side.
    • 3 ( exNoTicks ), No ticks are displayed.
  • freq=<VALUE>, indicates the ratio of ticks on the slider edit. This option is valid for exItemEditSlider edit. The <VALUE> could be a positive long expression.
  • ticklabel=<VALUE>, indicates the HTML label to be displayed on slider's ticks. This option is valid for exItemEditSlider edit. Check the EditOption(exEditTickLabel) for more details.
  • small=<VALUE>, indicates the amount by which the edit's position changes when the user presses the arrow key ( left, right, or button ). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • large=<VALUE>, indicates the amount by which the edit's position changes when the user presses the CTRL + arrow key ( CTRL + left, CTRL + right). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • spin=<VALUE>, specifies the step to advance when user clicks the editor's spin.. This option is valid for exItemEditSpin edit. The <VALUE> could be a positive long expression.
  • ettp=<VALUE>, specifies the HTML tooltip to be shown when the item's value is changed. This option is valid for exItemEditSlider/exItemEditScrollBar edit. The <VALUE> could be any string expression.
  • float=<VALUE>, Specifies whether the mask field masks a floating point number. This option is valid for exItemEditMask edit. See See EditMask property for more details. The <VALUE> could be 0 for standard masking field or not zero to specify that the field is masking a floating point.
  • close=<VALUE>, Specifies the way the hosting menu is closed when the user clicks the item. If the close flag is missing, the <VALUE> is 3 (exCloseOnNonClickable), by default. The <VALUE> could be one of the following values:
    • 0 ( exCloseOnClick ), The popup menu is closing when the user clicks the item.
    • 1 ( exCloseOnDblClick ), The popup menu is closing when the user double clicks the item.
    • 2 ( exCloseOnClickOutside ), The popup menu is closing when the user clicks outside of the menu.
    • 3 ( exCloseOnNonClickable ), The popup menu is closing when the user clicks a non-clickable item ( regular items ). The non-clickable items is any item that's not a separator, popup, disabled or check or radio items, clicking a check-box item will makes the check box to change its state instead closing the context menu.


property Item

property Elements.Item (ID as Variant) as Element
Returns a specific Element of the Elements collection, giving its identifier.

Type | Description
ID as Variant | A Long, String or Numeric expression that defines the element's unique identifier.
Element | An Element object being retrieved.
The Item property accesses the element giving its identifier. The Count property specifies the number of elements in the Elements collection. The ID property specifies the element's unique identfier.

The following VB sample enumerates the elements on the surface:

Dim e As Variant
For Each e In SwimLane1.Elements
    Debug.Print e.ID
Next


method Remove

method Elements.Remove (ID as Variant)
Removes a specific member from the Elements collection, giving its identifier or reference.

Type | Description
ID as Variant | A Long, String or Numeric expression that specifies the identifier of the element to be removed, or a reference to the Element to be removed.
Use the Remove method to remove a specific element from the Elements collection. The RemoveElement event occurs once the element has been removed from the Elements collection. Use the RemoveSelection method to remove the selected elements. Use the Clear method to remove all elements from the surface. Removing and element removes the incoming and outgoing links as well. Use the RemoveElement event to release any extra data associated with the element. Use the Visible property to hide a specific element.


ExDataObject object
Defines the object that contains OLE drag and drop information.

Name | Description
Clear | Deletes the contents of the ExDataObject object.
Files | Returns an ExDataObjectFiles collection, which in turn contains a list of all filenames used by an ExDataObject object.
GetData | Returns data from an ExDataObject object in the form of a variant.
GetFormat | Returns a value indicating whether an item in the ExDataObject object matches a specified format.
SetData | Inserts data into an ExDataObject object using the specified data format.


method Clear

method ExDataObject.Clear ()
Deletes the contents of the DataObject object.

Type Description

The Clear method can be called only for drag sources. The OleDragDrop event notifies your application that the user drags some data on the control.


property Files

property ExDataObject.Files as ExDataObjectFiles
Returns a DataObjectFiles collection, which in turn contains a list of all filenames used by a DataObject object.

Type | Description
ExDataObjectFiles | An ExDataObjectFiles object that contains a list of filenames used in OLE drag and drop operations

The Files property is valid only if the format of the clipboard data is exCFFiles. The OleDragDrop event notifies your application that the user drags some data on the control.


method GetData

method ExDataObject.GetData (Format as Integer)
Returns data from a DataObject object in the form of a variant.

Type | Description
Format as Integer | An exClipboardFormatEnum expression that defines the data's format
Return | Description
Variant | A Variant value that contains the ExDataObject's data in the given format

Use GetData property to retrieve the clipboard's data that has been dragged to the control. It's possible for the GetData and SetData methods to use data formats other than exClipboardFormatEnum , including user-defined formats registered with Windows via the RegisterClipboardFormat() API function. The GetData method always returns data in a byte array when it is in a format that it is not recognized. Use the Files property to retrieves the filenames if the format of data is exCFFiles


method GetFormat

method ExDataObject.GetFormat (Format as Integer)

Returns a value indicating whether the ExDataObject's data is of the specified format.

Type | Description
Format as Integer | A constant or value that specifies a clipboard data format like described in exClipboardFormatEnum enum.
Return | Description
Boolean | A boolean value that indicates whether the ExDataObject's data is of specified format.

Use the GetFormat property to verify if the ExDataObject's data is of a specified clipboard format. The GetFormat property retrieves True, if the ExDataObject's data format matches the given data format.


method SetData

method ExDataObject.SetData ([Value as Variant], [Format as Variant])

Inserts data into a ExDataObject object using the specified data format.

Type | Description
Value as Variant | A data that is going to be inserted to ExDataObject object.
Format as Variant | A constant or value that specifies the data format, as described in exClipboardFormatEnum enum

Use SetData property to insert data for OLE drag and drop operations. Use the Files property is you are going to add new files to the clipboard data. The OleDragDrop event notifies your application that the user drags some data on the control.


ExDataObjectFiles object

The ExDataObjectFiles contains a collection of filenames. The ExDataObjectFiles object is used in OLE Drag and drop events. In order to get the list of files used in drag and drop operations you have to use the Files property.

Name | Description
Add | Adds a filename to the Files collection
Clear | Removes all file names in the collection.
Count | Returns the number of file names in the collection.
Item | Returns an specific file name.
Remove | Removes an specific file name.


method Add

method ExDataObjectFiles.Add (FileName as String)

Adds a filename to the Files collection

Type | Description
FileName as String | A string expression that indicates a filename.

Use Add method to add your files to ExDataObject object. The OleStartDrag event notifies your application that the user starts dragging items.


method Clear

method ExDataObjectFiles.Clear ()

Removes all file names in the collection.

Type Description

Use the Clear method to remove all filenames from the collection.


property Count

property ExDataObjectFiles.Count as Long

Returns the number of file names in the collection.

Type | Description
Long | A long value that indicates the count of elements into collection.

You can use "for each" statements if you are going to enumerate the elements into ExDataObjectFiles collection.


property Item

property ExDataObjectFiles.Item (Index as Long) as String

Returns a specific file name given its index.

Type | Description
Index as Long | A long expression that indicates the filename's index
String | A string value that indicates the filename


method Remove

method ExDataObjectFiles.Remove (Index as Long)

Removes a specific file name given its index into collection.

Type | Description
Index as Long | A long expression that indicates the index of filename into collection.

Use Clear method to remove all filenames.


HeaderLane object
The HeaderLane object indicates the header of the lane as marked in the following screen shot: The HeaderLane object controls properties to be shown on the lane's header. The Header property of the Lane object accesses the header of the lane.

The following screen shot marks the header of the lane:

The HeaderLane object supports the following properties and methods:

Name | Description
Border | Specifies the style to display the header's border.
BorderColor | Gets or sets a value that indicates the header's border color.
Caption | Gets or sets a value that indicates the HTML caption to be displayed on the header of the lane.
CaptionColor | Gets or sets a value that indicates the header's foreground color.
Color | Gets or sets a value that indicates the header's background color.
HeaderLaneInheritLane | Specifies the properties of the Lane that header inherits from.
Lane | Gets the owner lane of the current header.
Pattern | Specifies the pattern to be shown on the header's background.


property Border

property HeaderLane.Border as LinesStyleEnum
Specifies the style to display the header's border.

Type | Description
LinesStyleEnum | A LinesStyleEnum expression that specifies the style of the border to show on the header.
By default, the Border property is exLinesInvalid. The Border property defines the style to display the header's border. The Border property of the Lane, defines the style of the border to shown on the lane. The HeaderLaneInheritLane property specifies the visual properties that the header inherits from its lane. The Background(exPoolHorizontalLaneBorder) property specifies the type of the border for horizontal lanes for all pool on the surface, while the Border property is exLinesInvalid. The Background(exPoolVerticalLaneBorder) property specifies the type of the border for vertical lanes for all pool on the surface, while the Border property is exLinesInvalid. The BorderColor property specifies the color to show the header's border. The Color property specifies the header's visual appearance / background color. The Pattern property specifies the pattern/frame to be shown on the header's background.


property BorderColor

property HeaderLane.BorderColor as Color
Gets or sets a value that indicates the header's border color.

Type | Description
Color | A
The Background(exPoolHorizontalLaneBorderColor) property specifies the color to show the border for horizontal lanes for all pool on the surface. The Background(exPoolVerticalLaneBorderColor) property specifies the color to show the border for vertical lanes for all pool on the surface.


property Caption

property HeaderLane.Caption as String
Gets or sets a value that indicates the HTML caption to be displayed on the header of the lane.

Type | Description
String | A String expression that specifies the HTML caption to be shown on the header of the lane.
By default, the Caption property is defined by the DefPoolHeaderCaptionFormat property. The HeaderCaptionSupportRotate property specifies whether the caption is displayed normal, rotated or mirrored. The CaptionColor property specifies the color to show the caption on the header. The Images method loads icons to be displayed on the control's surface. The HTMLPicture property loads and assigns a picture to a key to be used on control's surface. Use the UserData property to store your extra data for the lane.

The Caption property supports the following HTML elements:

  • <b> ... </b> displays the text in bold
  • <i> ... </i> displays the text in italics
  • <u> ... </u> underlines the text
  • <s> ... </s> Strike-through text
  • <a id;options> ... </a> displays an anchor element that can be clicked. An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link.The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The control fires the AnchorClick(AnchorID, Options) event when the user clicks the anchor element. The FormatAnchor property customizes the visual effect for anchor elements.

    The control supports expandable HTML captions feature which allows you to expand(show)/collapse(hide) different information using <a ;exp=> or <a ;e64=> anchor tags. The exp/e64 field of the anchor stores the HTML line/lines to show once the user clicks/collapses/expands the caption.

    • exp, stores the plain text to be shown once the user clicks the anchor, such as <a ;exp=show lines>
    • e64, encodes in BASE64 the HTML text to be shown once the user clicks the anchor, such as <a ;e64=gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA>+</a> that displays show lines- in gray when the user clicks the + anchor. The gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA string encodes the <fgcolor 808080>show lines<a>-</a></fgcolor> The Decode64Text/Encode64Text methods of the eXPrint can be used to decode/encode e64 fields.

    Any ex-HTML caption can be transformed to an expandable-caption, by inserting the anchor ex-HTML tag. For instance, <solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3 shows the Header in underlined and bold on the first line and Line1, Line2, Line3 on the rest. The show lines is shown instead of Line1, Line2, Line3 once the user clicks the + sign.

  • <font face;size> ... </font> displays portions of text with a different font and/or different size. For instance, the <font Tahoma;12>bit</font> draws the bit text using the Tahoma font, on size 12 pt. If the name of the font is missing, and instead size is present, the current font is used with a different size. For instance, <font ;12>bit</font> displays the bit text using the current font, but with a different size.
  • <fgcolor rrggbb> ... </fgcolor> or <fgcolor=rrggbb> ... </fgcolor> displays text with a specified foreground color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <bgcolor rrggbb> ... </bgcolor> or <bgcolor=rrggbb> ... </bgcolor> displays text with a specified background color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <solidline rrggbb> ... </solidline> or <solidline=rrggbb> ... </solidline> draws a solid-line on the bottom side of the current text-line, of specified RGB color. The <solidline> ... </solidline> draws a black solid-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <dotline rrggbb> ... </dotline> or <dotline=rrggbb> ... </dotline> draws a dot-line on the bottom side of the current text-line, of specified RGB color. The <dotline> ... </dotline> draws a black dot-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <upline> ... </upline> draws the line on the top side of the current text-line (requires <solidline> or <dotline>).
  • <r> right aligns the text
  • <c> centers the text
  • <br> forces a line-break
  • <img>number[:width]</img> inserts an icon inside the text. The number indicates the index of the icon being inserted. Use the Images method to assign a list of icons to your chart. The last 7 bits in the high significant byte of the number expression indicates the identifier of the skin being used to paint the object. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the part. The width is optional and indicates the width of the icon being inserted. Using the width option you can overwrite multiple icons getting a nice effect. By default, if the width field is missing, the width is 18 pixels.
  • <img>key[:width]</img> inserts a custom size picture into the text being previously loaded using the HTMLPicture property. The Key parameter indicates the key of the picture being displayed. The Width parameter indicates a custom size, if you require to stretch the picture, else the original size of the picture is used.
  • & glyph characters as &amp; ( & ), &lt; ( < ), &gt; ( > ), &qout; ( " ) and &#number; ( the character with specified code ), For instance, the &#8364; displays the EUR character. The & ampersand is only recognized as markup when it is followed by a known letter or a #character and a digit. For instance if you want to display <b>bold</b> in HTML caption you can use &lt;b&gt;bold&lt;/b&gt;
  • <off offset> ... </off> defines the vertical offset to display the text/element. The offset parameter defines the offset to display the element. This tag is inheritable, so the offset is keep while the associated </off> tag is found. You can use the <off offset> HTML tag in combination with the <font face;size> to define a smaller or a larger font to be displayed. For instance: Text with <font ;7><off 6>subscript displays the text such as: Text with subscript The Text with <font ;7><off -6>superscript displays the text such as: Text with subscript
  • <gra rrggbb;mode;blend> ... </gra> defines a gradient text. The text color or <fgcolor> defines the starting gradient color, while the rr/gg/bb represents the red/green/blue values of the ending color, 808080 if missing as gray. The mode is a value between 0 and 4, 1 if missing, and blend could be 0 or 1, 0 if missing. The <font> HTML tag can be used to define the height of the font. Any of the rrggbb, mode or blend field may not be specified. The <gra> with no fields, shows a vertical gradient color from the current text color to gray (808080). For instance the <font ;18><gra FFFFFF;1;1>gradient-center</gra></font> generates the following picture:
  • <out rrggbb;width> ... </out> shows the text with outlined characters, where rr/gg/bb represents the red/green/blue values of the outline color, 808080 if missing as gray, width indicates the size of the outline, 1 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><out 000000><fgcolor=FFFFFF>outlined</fgcolor></out></font> generates the following picture:
  • <sha rrggbb;width;offset> ... </sha> define a text with a shadow, where rr/gg/bb represents the red/green/blue values of the shadow color, 808080 if missing as gray, width indicates the size of shadow, 4 if missing, and offset indicates the offset from the origin to display the text's shadow, 2 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><sha>shadow</sha></font> generates the following picture:

    or <font ;31><sha 404040;5;0><fgcolor=FFFFFF>outline anti-aliasing</fgcolor></sha></font> gets:


property CaptionColor

property HeaderLane.CaptionColor as Color
Gets or sets a value that indicates the header's foreground color.

Type | Description
Color | A Color expression that specifies the color to show the caption on the header of the lane.
By default, the CaptionColor property is -1, which indicates that it has no effect. The Caption property defines the caption to be shown on the header of the lane. The Background(exPoolHorizontalHeaderForeColor) property specifies the foreground color for the horizontal header for all pools on the surface, while the CaptionColor property is -1. The Background(exPoolVerticalHeaderForeColor) property specifies the foreground color for the vertical header for all pools on the surface, while the CaptionColor property is -1.


property Color

property HeaderLane.Color as Color
Gets or sets a value that indicates the header's background color.

Type | Description
Color | A Color expression that specifies the color to show header's background. The last 7 bits in the high significant byte of the color indicates the identifier of the skin being used to paint the part. Use the Add method to add new skins to the control. The -1 indicates that the element's background is transparent.
By default, the Color property is -1, which means it is transparent. The Color property specifies the header's visual appearance / background color. The Color property of the Lane specifies the visual appearance / background color of the lane itself. The Border property defines the style to display the header's border. The BorderColor property specifies the color to show the header's border. The Pattern property specifies the pattern to show on the lane. The HeaderLaneInheritLane property specifies the visual properties that the header inherits from its lane. The Color property specifies the background color / visual appearance of the pool.

The following sample shows the header of the lane with a different visual appearance:

The following screen shot shows the lane Phase 3 with a different Color and Pattern, while the Background(exHeaderLaneInheritLane)/HeaderLaneInheritLane is exDrawPoolPropsNone(0):

while the next screen shot shows the same lane, with exDrawPoolPropsAll(-1):


property HeaderLaneInheritLane

property HeaderLane.HeaderLaneInheritLane as DrawPoolPropsEnum
Specifies the properties of the Lane that HeaderLane inherits from.

Type | Description
DrawPoolPropsEnum | A DrawPoolPropsEnum expression that specifies the visual properties that the header inherits from its lane.
By default, the HeaderLaneInheritLane property is exDrawPoolPropsNone. The HeaderLaneInheritLane property specifies the visual properties that the header inherits from its lane. The Background(exHeaderLaneInheritLane) property specifies the visual properties that the header inherits from its lane ( for all lanes, pools ).

The following screen shot shows the lane Phase 3 with a different Color and Pattern, while the Background(exHeaderLaneInheritLane)/HeaderLaneInheritLane is exDrawPoolPropsNone(0):

while the next screen shot shows the same lane, with exDrawPoolPropsAll(-1):


property Lane

property HeaderLane.Lane as Lane
Gets the owner lane of the current header.

Type | Description
Lane | A Lane object that indicates the parent lane of the header
The Lane property returns the owner/parent lane of the header. The Type property of the Lane indicates whether the lane is horizontal or vertical. The HeaderSize property specifies the size of the header. The HeaderVisible property specifies whether the header is visible or hidden.


property Pattern

property HeaderLane.Pattern as Pattern
Specifies the pattern to be shown on the header's background.

Type | Description
Pattern | A Pattern to be shown over the header's background.
By default, no Pattern is shown on the header's background. The Pattern property defines the pattern to be shown on the header's background. The Color property specifies the header's visual appearance / background color. The HeaderLaneInheritLane property specifies the visual properties that the header inherits from its lane. The HeaderPattern property specifies the pattern to be shown on the pool's header background.

The following screen shot shows the header of the lane with a different pattern/color:


HitTest object
The HitTest object determines the element and the hit-test code. The HitTestFromPoint property returns the hit-test object from the cursor. The HitTest object supports the following properties and methods:

Name | Description
Element | Specifies the element object.
HitTestCode | Specifies the hit-test code.
HitTestKey | Specifies the hit-test key.


property Element

property HitTest.Element as Element
Specifies the element object.

Type | Description
Element | An Element object
The Element property specifies the Element from the cursor. The HitTestCode property specifies the code where the cursor hovers the element. The HitTestKey property indicates the key associated to the part of the element from the cursor.


property HitTestCode

property HitTest.HitTestCode as HitTestCodeEnum
Specifies the hit-test code.

Type | Description
HitTestCodeEnum | A HitTestCodeEnum expression that specifies the code of the part where the cursor is over the element.
The HitTestCode property specifies the code where the cursor hovers the element. The Element property specifies the Element from the cursor. The HitTestKey property indicates the key associated to the part of the element from the cursor.

The HitTestCode may indicate one of the following parts of the element:

  • exHitTestMargin, indicates the border of the element. The HitTestKey property returns nothing.
  • exHitTestStatus, indicates the status part of the element. The HitTestKey property returns nothing.
  • exHitTestClient, indicates the element's background ( empty ). The HitTestKey property returns nothing.
  • exHitTestPicture, indicates any icon/picture on from the element. The HitTestKey property specifies the identifier of the icon/picture from the cursor.
  • exHitTestCaption, indicates the element's Caption. The HitTestKey property specifies the element's caption.
  • exHitTestExtraCaption, indicates the element's ExtraCaption. The HitTestKey property specifies the element's extra-caption.
  • exHitTestCheckBox, indicates the element's checkbox. The HitTestKey property specifies the element's Checked property.
  • exHitTestGlyph, indicates the element's expand/collapse glyph. The HitTestKey property returns nothing.


property HitTestKey

property HitTest.HitTestKey as Variant
Specifies the hit-test key.

Type | Description
Variant | A String expression that determines the key associated with the part of the element from the cursor.
The HitTestKey property indicates the key associated to the part of the element from the cursor. The Element property specifies the Element from the cursor. The HitTestCode property specifies the code where the cursor hovers the element.

The HitTestKey may returns one of the following values, based on the HitTestCode property as listed:

  • nothing, if HitTestCode property is exHitTestMargin, exHitTestStatus, exHitTestClient and exHitTestGlyph.
  • the identifier of the icon/picture from the cursor if HitTestCode property is exHitTestPicture.
  • the element's caption if HitTestCode property is exHitTestCaption.
  • the element's extra-caption if HitTestCode property is exHitTestExtraCaption.
  • element's Checked property, if HitTestCode property is exHitTestCheckBox.


Lane object
The Lane object indicates the lane to be shown on the pool. It includes a header and the lane itself. The Header property returns the header of the lane.

The following screen shot marks the lane itself:

The Lane object supports the following properties and methods:

Name | Description
Border | Specifies the style to display the lane's border.
BorderColor | Gets or sets a value that indicates the lane's border color.
Children | Retrieves a collection of child-lanes.
Color | Gets or sets a value that indicates the lane's background color.
FitToClient | Resizes or/and moves the entire chart to fit the lane.
Header | Gets the header of the lane.
ID | Specifies the lane's unique identifier.
InvokeContextMenu | Invokes programmatically the lane's default or customized context menu, and returns the identifier of the selected item.
Parent | Retrieves the parent of the current lane.
Pattern | Specifies the pattern to be shown on the lane's background.
Pool | Gets the owner pool of the current lane.
Position | Specifies the lane's position.
Type | Indicates the type of the lane.
UserData | Indicates any extra data associated with the lane.


property Border

property Lane.Border as LinesStyleEnum
Specifies the style to display the lane's border.

Type | Description
LinesStyleEnum | A LinesStyleEnum expression that specifies the style of the border to show on the lane.
By default, the Border property is exLinesInvalid. The BorderColor property defines the color to show the lane's border. The Border property of the Header object defines the border to shown on the header of the lane. The HeaderLaneInheritLane property specifies the visual properties that the header inherits from its lane. The Background( exPoolHorizontalLaneBorder) property specifies the type of the border for horizontal lanes for all pool on the surface, while the Border property is exLinesInvalid. The Background(exPoolVerticalLaneBorder) property specifies the type of the border for vertical lanes for all pool on the surface, while the Border property is exLinesInvalid. The Pattern property specifies the pattern/frame to be shown on the lane's background.


property BorderColor

property Lane.BorderColor as Color
Gets or sets a value that indicates the lane's border color.

Type | Description
Color | A Color expression that defines the color to show the lane's border.
By default, the BorderColor property is -1 ( transparent ). The Border property specifies the style to display the lane's border. The Color property specifies the visual appearance / background color of the lane itself. The HeaderLaneInheritLane property specifies the visual properties that the header inherits from its lane. The Background( exPoolHorizontalLaneBorderColor) property specifies the color to show the border for horizontal lanes for all pool on the surface, while the BorderColor property is -1 ( transparent ). The Background(exPoolVerticalLaneBorderColor) property specifies the color to show the border for vertical lanes for all pool on the surfacewhile the BorderColor property is -1 ( transparent ).


property Children

property Lane.Children as Lanes
Retrieves a collection of child-lanes.

Type | Description
Lanes | A Lanes collection that specifies the child-lanes of the current lane.
By default, the Children collection is empty. The Count property of the Lanes object defines the number of child-lanes ( sub-lanes ). The Item property of the Lanes object returns the Lane object giving its position. The Parent property indicates the parent-lane of the current lane. The Caption property defines the lane's header caption. The DefPoolHeaderCaptionFormat specifies the default format/text of the caption to be shown on the lane's header. The lane's context menu (InvokeContextMenu property) defines the Split item that changes the Count property of the Children collection. The Position property specifies the lane's position.

The following sample defines lanes and sub-lanes:

VBA (MS Access, Excell...)

With SwimLane1
    .BeginUpdate
    With .Pools.Add(-150,-150,300,250)
        .HeaderSize(1) = 32
        .HeaderSize(3) = 32
        With .Lane(1).Children
            .Count = 3
            .item(1).Children.Count = 2
        End With
    End With
    .EndUpdate
End With

VB6

With SwimLane1
    .BeginUpdate
    With .Pools.Add(-150,-150,300,250)
        .HeaderSize(exHeaderTop) = 32
        .HeaderSize(exHeaderBottom) = 32
        With .Lane(exLaneVertical).Children
            .Count = 3
            .item(1).Children.Count = 2
        End With
    End With
    .EndUpdate
End With

VB.NET

With Exswimlane1
    .BeginUpdate()
    With .Pools.Add(-150,-150,300,250)
        .set_HeaderSize(exontrol.EXSWIMLANELib.HeaderPosEnum.exHeaderTop,32)
        .set_HeaderSize(exontrol.EXSWIMLANELib.HeaderPosEnum.exHeaderBottom,32)
        With .get_Lane(exontrol.EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children
            .Count = 3
            .get_item(1).Children.Count = 2
        End With
    End With
    .EndUpdate()
End With

VB.NET for /COM

With AxSwimLane1
    .BeginUpdate()
    With .Pools.Add(-150,-150,300,250)
        .HeaderSize(EXSWIMLANELib.HeaderPosEnum.exHeaderTop) = 32
        .HeaderSize(EXSWIMLANELib.HeaderPosEnum.exHeaderBottom) = 32
        With .Lane(EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children
            .Count = 3
            .item(1).Children.Count = 2
        End With
    End With
    .EndUpdate()
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
spSwimLane1->BeginUpdate();
EXSWIMLANELib::IPoolPtr var_Pool = spSwimLane1->GetPools()->Add(long(-150),long(-150),long(300),long(250));
    var_Pool->PutHeaderSize(EXSWIMLANELib::exHeaderTop,32);
    var_Pool->PutHeaderSize(EXSWIMLANELib::exHeaderBottom,32);
    EXSWIMLANELib::ILanesPtr var_Lanes = var_Pool->GetLane(EXSWIMLANELib::exLaneVertical)->GetChildren();
        var_Lanes->PutCount(3);
        var_Lanes->Getitem(long(1))->GetChildren()->PutCount(2);
spSwimLane1->EndUpdate();

C++ Builder

SwimLane1->BeginUpdate();
Exswimlanelib_tlb::IPoolPtr var_Pool = SwimLane1->Pools->Add(TVariant(-150),TVariant(-150),TVariant(300),TVariant(250));
    var_Pool->set_HeaderSize(Exswimlanelib_tlb::HeaderPosEnum::exHeaderTop,32);
    var_Pool->set_HeaderSize(Exswimlanelib_tlb::HeaderPosEnum::exHeaderBottom,32);
    Exswimlanelib_tlb::ILanesPtr var_Lanes = var_Pool->get_Lane(Exswimlanelib_tlb::LaneTypeEnum::exLaneVertical)->Children;
        var_Lanes->Count = 3;
        var_Lanes->get_item(TVariant(1))->Children->Count = 2;
SwimLane1->EndUpdate();

C#

exswimlane1.BeginUpdate();
exontrol.EXSWIMLANELib.Pool var_Pool = exswimlane1.Pools.Add(-150,-150,300,250);
    var_Pool.set_HeaderSize(exontrol.EXSWIMLANELib.HeaderPosEnum.exHeaderTop,32);
    var_Pool.set_HeaderSize(exontrol.EXSWIMLANELib.HeaderPosEnum.exHeaderBottom,32);
    exontrol.EXSWIMLANELib.Lanes var_Lanes = var_Pool.get_Lane(exontrol.EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children;
        var_Lanes.Count = 3;
        var_Lanes[1].Children.Count = 2;
exswimlane1.EndUpdate();

JScript/JavaScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
function Init()
{
    SwimLane1.BeginUpdate();
    var var_Pool = SwimLane1.Pools.Add(-150,-150,300,250);
        var_Pool.HeaderSize(1) = 32;
        var_Pool.HeaderSize(3) = 32;
        var var_Lanes = var_Pool.Lane(1).Children;
            var_Lanes.Count = 3;
            var_Lanes.item(1).Children.Count = 2;
    SwimLane1.EndUpdate();
}
</SCRIPT>
</BODY>

VBScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="VBScript">
Function Init()
    With SwimLane1
        .BeginUpdate
        With .Pools.Add(-150,-150,300,250)
            .HeaderSize(1) = 32
            .HeaderSize(3) = 32
            With .Lane(1).Children
                .Count = 3
                .item(1).Children.Count = 2
            End With
        End With
        .EndUpdate
    End With
End Function
</SCRIPT>
</BODY>

C# for /COM

axSwimLane1.BeginUpdate();
EXSWIMLANELib.Pool var_Pool = axSwimLane1.Pools.Add(-150,-150,300,250);
    var_Pool.set_HeaderSize(EXSWIMLANELib.HeaderPosEnum.exHeaderTop,32);
    var_Pool.set_HeaderSize(EXSWIMLANELib.HeaderPosEnum.exHeaderBottom,32);
    EXSWIMLANELib.Lanes var_Lanes = var_Pool.get_Lane(EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children;
        var_Lanes.Count = 3;
        var_Lanes[1].Children.Count = 2;
axSwimLane1.EndUpdate();

X++ (Dynamics Ax 2009)

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

    super();

    exswimlane1.BeginUpdate();
    var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-150),COMVariant::createFromInt(-150),COMVariant::createFromInt(300),COMVariant::createFromInt(250)); com_Pool = var_Pool;
        com_Pool.HeaderSize(1/*exHeaderTop*/,32);
        com_Pool.HeaderSize(3/*exHeaderBottom*/,32);
        var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
        var_Lanes = com_Lane.Children(); com_Lanes = var_Lanes;
            com_Lanes.Count(3);
            var_Lane = COM::createFromObject(com_Lanes.item(COMVariant::createFromInt(1))); com_Lane = var_Lane;
            var_Lanes1 = COM::createFromObject(com_Lane).Children(); com_Lanes1 = var_Lanes1;
            com_Lanes1.Count(2);
    exswimlane1.EndUpdate();
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    BeginUpdate();
    with Pools.Add(TObject(-150),TObject(-150),TObject(300),TObject(250)) do
    begin
        HeaderSize[EXSWIMLANELib.HeaderPosEnum.exHeaderTop] := 32;
        HeaderSize[EXSWIMLANELib.HeaderPosEnum.exHeaderBottom] := 32;
        with Lane[EXSWIMLANELib.LaneTypeEnum.exLaneVertical].Children do
        begin
            Count := 3;
            item[TObject(1)].Children.Count := 2;
        end;
    end;
    EndUpdate();
end

Delphi (standard)

with SwimLane1 do
begin
    BeginUpdate();
    with Pools.Add(OleVariant(-150),OleVariant(-150),OleVariant(300),OleVariant(250)) do
    begin
        HeaderSize[EXSWIMLANELib_TLB.exHeaderTop] := 32;
        HeaderSize[EXSWIMLANELib_TLB.exHeaderBottom] := 32;
        with Lane[EXSWIMLANELib_TLB.exLaneVertical].Children do
        begin
            Count := 3;
            item[OleVariant(1)].Children.Count := 2;
        end;
    end;
    EndUpdate();
end

VFP

with thisform.SwimLane1
    .BeginUpdate
    with .Pools.Add(-150,-150,300,250)
        .HeaderSize(1) = 32
        .HeaderSize(3) = 32
        with .Lane(1).Children
            .Count = 3
            .item(1).Children.Count = 2
        endwith
    endwith
    .EndUpdate
endwith

dBASE Plus

local oSwimLane,var_Lanes,var_Lanes1,var_Pool

oSwimLane = form.EXSWIMLANEACTIVEXCONTROL1.nativeObject
oSwimLane.BeginUpdate()
var_Pool = oSwimLane.Pools.Add(-150,-150,300,250)
    // var_Pool.HeaderSize(1) = 32
    with (oSwimLane)
        TemplateDef = [dim var_Pool]
        TemplateDef = var_Pool
        Template = [var_Pool.HeaderSize(1) = 32]
    endwith
    // var_Pool.HeaderSize(3) = 32
    with (oSwimLane)
        TemplateDef = [dim var_Pool]
        TemplateDef = var_Pool
        Template = [var_Pool.HeaderSize(3) = 32]
    endwith
    var_Lanes = var_Pool.Lane(1).Children
        var_Lanes.Count = 3
        // var_Lanes.item(1).Children.Count = 2
        var_Lanes1 = var_Lanes.item(1).Children
        with (oSwimLane)
            TemplateDef = [dim var_Lanes1]
            TemplateDef = var_Lanes1
            Template = [var_Lanes1.Count = 2]
        endwith
oSwimLane.EndUpdate()

XBasic (Alpha Five)

Dim oSwimLane as P
Dim var_Lanes as P
Dim var_Lanes1 as local
Dim var_Pool as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
oSwimLane.BeginUpdate()
var_Pool = oSwimLane.Pools.Add(-150,-150,300,250)
    ' var_Pool.HeaderSize(1) = 32
    oSwimLane.TemplateDef = "dim var_Pool"
    oSwimLane.TemplateDef = var_Pool
    oSwimLane.Template = "var_Pool.HeaderSize(1) = 32"

    ' var_Pool.HeaderSize(3) = 32
    oSwimLane.TemplateDef = "dim var_Pool"
    oSwimLane.TemplateDef = var_Pool
    oSwimLane.Template = "var_Pool.HeaderSize(3) = 32"

    var_Lanes = var_Pool.Lane(1).Children
        var_Lanes.Count = 3
        ' var_Lanes.item(1).Children.Count = 2
        var_Lanes1 = var_Lanes.item(1).Children
        oSwimLane.TemplateDef = "dim var_Lanes1"
        oSwimLane.TemplateDef = var_Lanes1
        oSwimLane.Template = "var_Lanes1.Count = 2"

oSwimLane.EndUpdate()

Visual Objects

local var_Lanes as ILanes
local var_Pool as IPool

oDCOCX_Exontrol1:BeginUpdate()
var_Pool := oDCOCX_Exontrol1:Pools:Add(-150,-150,300,250)
    var_Pool:[HeaderSize,exHeaderTop] := 32
    var_Pool:[HeaderSize,exHeaderBottom] := 32
    var_Lanes := var_Pool:[Lane,exLaneVertical]:Children
        var_Lanes:Count := 3
        var_Lanes:[item,1]:Children:Count := 2
oDCOCX_Exontrol1:EndUpdate()

PowerBuilder

OleObject oSwimLane,var_Lanes,var_Pool

oSwimLane = ole_1.Object
oSwimLane.BeginUpdate()
var_Pool = oSwimLane.Pools.Add(-150,-150,300,250)
    var_Pool.HeaderSize(1,32)
    var_Pool.HeaderSize(3,32)
    var_Lanes = var_Pool.Lane(1).Children
        var_Lanes.Count = 3
        var_Lanes.item(1).Children.Count = 2
oSwimLane.EndUpdate()

Visual DataFlex

Procedure OnCreate
    Forward Send OnCreate
    Send ComBeginUpdate
    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 -150 -150 300 250 to voPool
        Handle hoPool
        Get Create (RefClass(cComPool)) to hoPool
        Set pvComObject of hoPool to voPool
            Set ComHeaderSize of hoPool OLEexHeaderTop to 32
            Set ComHeaderSize of hoPool OLEexHeaderBottom to 32
            Variant voLane
            Get ComLane of hoPool OLEexLaneVertical 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 3
                    Variant voLane1
                    Get Comitem of hoLanes 1 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 hoLanes
            Send Destroy to hoLane
        Send Destroy to hoPool
    Send Destroy to hoPools
    Send ComEndUpdate
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oLanes
    LOCAL oPool
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oSwimLane:BeginUpdate()
        oPool := oSwimLane:Pools():Add(-150,-150,300,250)
            oPool:SetProperty("HeaderSize",1/*exHeaderTop*/,32)
            oPool:SetProperty("HeaderSize",3/*exHeaderBottom*/,32)
            oLanes := oPool:Lane(1/*exLaneVertical*/):Children()
                oLanes:Count := 3
                oLanes:item(1):Children():Count := 2
        oSwimLane:EndUpdate()

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


property Color

property Lane.Color as Color
Gets or sets a value that indicates the lane's background color.

Type | Description
Color | A Color expression that specifies the color to show lane's background. The last 7 bits in the high significant byte of the color indicates the identifier of the skin being used to paint the part. Use the Add method to add new skins to the control. The -1 indicates that the lane's background is transparent.
By default, the Color property is -1 ( transparent). The Color property specifies the visual appearance / background color of the lane itself. The Color property of the Header gets or sets a value that indicates the header's background color. The HeaderLaneInheritLane property specifies the visual properties that the header inherits from its lane. The Color property specifies the background color / visual appearance of the pool.

The following sample shows the lane itself with a different visual appearance:


method FitToClient

method Lane.FitToClient ()
Resizes or/and moves the entire chart to fit the lane.

Type Description
The FitToClient method ensures that the lane fits the surface's client area.


property Header

property Lane.Header as HeaderLane
Gets the header of the lane.

Type | Description
HeaderLane | A HeaderLane object that represents the header of the lane.
The Header property returns the header of the lane. The Caption property gets or sets a value that indicates the HTML caption to be displayed on the header of the lane. The Parent property specifies the parent of the lane. The HeaderLaneInheritLane property specifies the visual properties that the header inherits from its lane.

The following screen shot marks the header of the lane:


property ID

property Lane.ID as Variant
Specifies the lane's unique identifier.

Type | Description
Variant | A String expression that indicates the unique identifier of the lane.
The ID property specifies the lane's unique identifier. The Position property specifies the lane's position into the Children collection. The LaneByID property returns a Lane object giving its identifier.


method InvokeContextMenu

method Lane.InvokeContextMenu ([ContextMenu as Variant])
Invokes programmatically the lane's default or customized context menu, and returns the identifier of the selected item.

Type | Description
ContextMenu as Variant | A String expression that defines the items to be displayed on the lane's context-menu. If empty, the default context-menu for lane [ContextMenu(exContextMenuLane) property] is shown.
Return | Description
Variant | A Long expression that indicates the identifier of the item being selected/clicked.
The InvokeContextMenu method invokes programmatically the lane's default or customized context menu, and returns the identifier of the selected item. The ContextMenu(exContextMenuLane) property defines the default content-menu for lane. The ActionContextMenu event notifies your application once an action occurs within the object's context menu. Use the AllowContextMenu property on exDisallow to disable default's context menu, when the user right clicks the lane. The ContextMenuFont property retrieves or sets the context-menu's font. The Background(exContextMenuAppearance) property ( and related ) defines the control's context menu appearance.

By default, the lane's context-menu shows as follows:

For instance, the InvokeContextMenu( "Item 1,Item 2,[sep],Check 1[chk],Check 2[chk]" ), generates the following screen shot:

For instance, the InvokeContextMenu( "Item 1,Item 2,Popup(Check 1[chk],Check 2[chk])" ), generates the following screen shot:

For instance, the InvokeContextMenu( "Calendar[id=20][img=0],MSChart[id=30],Record[id=40],Slider[id=50],Radio 1[id=100][typ=2][edit=],Radio 2[id=101][typ=2][edit=],Radio 3[id=102][typ=2][edit=],ComboBox[id=90]" ), generates the following screen shot:

The syntax for ContextMenu parameter in BNF notation is:

<ToString> ::= <ITEMS>
<ITEMS> ::= <ITEM>["("<ITEMS>")"][","<ITEMS>]
<ITEM> ::= <CAPTION>[<OPTIONS>]
<OPTIONS> ::= "["<OPTION>"]"["["<OPTIONS>"]"]
<OPTION> ::= <PROPERTY>["="<VALUE>]
<PROPERTY> ::= "img" | "himg" | "sep" | "id" | "typ" | "group" | "chk" | "button" | "align" | "spchk" | "show" | "rad" | "dis" | "showdis" | "bld" | "itl" | "stk" | "und" | "bg" | "fg" | "edittype" | "edit" | "mask" | "border" | "editwidth" | "captionwidth" | "height" | "grp" | "tfi" | "ttp" | "min" | "max" | "tick" | "freq" | "ticklabel" | "small" | "large" | "spin" | "ettp" | "float" | "close"

where the <CAPTION> is the HTML caption to be shown on the context menu item. The <VALUE> indicates the value of giving property.

  • img=<VALUE>, where <VALUE> is an integer expression, that indicates the index of the icon being displayed for the item.
  • himg=<VALUE>, where <VALUE> indicates the key of the picture to be displayed for the item.
  • sep, specifies an separator item
  • id=<VALUE>, where <VALUE> is an integer expression, that indicates the identifier of the item.
  • typ=<VALUE>, where <VALUE> could be one of the following:
    • 0 for regular items,
    • 1 for items that display a check/box (chk)
    • 2 to display radio buttons (rad)
  • group=<VALUE>, where <VALUE> could be a bit-or combination (+) of the following values:
    • 0 (exNoGroupPopup), No grouping is performed on the sub-menu, so the sub-items are shown to a float popup,
    • 1 (exGroupPopup), Groups and displays the sub-menu items on the current item, arranged from left to right
    • 2 (exNoGroupPopupFrame), Prevents showing the frame around each grouping item.
    • 4 (exGroupPopupCenter), Shows the grouping popup aligned to the center of the current item.
    • 8 (exGroupPopupRight), Shows the grouping popup aligned to the right of the current item.
    • 16 (exGroupPopupEqualSize), Shows the items that make the group of the same size
  • chk[=<VALUE>], where <VALUE> could be 0 for unchecked, or not zero for checked. The chk option makes the item to display a check box. If the <VALUE> is missing the item still displays an un-checked check box.
  • button=<VALUE>, where <VALUE> could be 0 for regular or not zero to show the item as a button.
  • align=<VALUE>, where <VALUE> could be one of the following:
    • 0 ( left ), to align the item's caption to the left
    • 1 ( center ), to center the item's caption
    • 2 ( right ), to align the item's caption to the right
  • spchk=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item's sub menu is shown only if the item is checked.
  • show=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the checked item shows as selected
  • rad=<VALUE>, where <VALUE> could be 0 for unchecked radio button or not zero to for checked radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored.
  • dis, specifies a disabled item
  • showdis=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item shows as disabled, but it is still enabled
  • bld, specifies that the item appears in bold
  • itl, specifies that the item appears in italics
  • stk, specifies that the item appears as strikeout
  • und, specifies that the item is underlined
  • bg=<VALUE>, specifies the item's background color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • fg=<VALUE>, specifies the item's foreground color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • edittype=<VALUE>, associates an edit field to the item, where <VALUE> could be one of the following values:
    • 0 ( exItemDisableEdit ), No editor is assigned to the current item.
    • 1 ( exItemEditText ), A text-box editor is assigned to the current item.
    • 2 ( exItemEditMask ), A masked text-box editor is assigned to the current item.
    • 3 ( exItemEditSlider ), A slider editor is assigned to the current item.
    • 4 ( exItemEditProgress ), A progress editor is assigned to the current item.
    • 5 ( exItemEditScrollBar ), A scrollbar editor is assigned to the current item.
    • 6 ( exItemEditColor), A color editor is assigned to the current item.
    • 7 ( exItemEditFont ), A font editor is assigned to the current item.
    • 256 (exItemEditReadOnly), specifies that the item's editor is shown as disabled. This value could be combined with one of the values from 0 to 7, 512
    • 512 ( exItemEditSpin ), A spin editor is assigned to the current item. This value could be combined with one of the values from 0 to 7, 256
  • edit=<VALUE>, specifies the caption to be shown in the item's edit field, where <VALUE> could be any string
  • mask=<VALUE>, specifies the mask to be applied on a masked editor. This option is valid for exItemEditMask edit. Use the float option to allow masking floating point numbers. See EditMask property for more details.
  • border=<VALUE>, specifies the border to be shown on the item's edit field, where <VALUE> could be one of the following:
    • 0 ( exEditBorderNone), No border is shown.
    • -1 (exEditBorderInset), shows an inset border
    • 1 (exEditBorderSingle), shows a frame border
  • editwidth=<VALUE>, specifies the width to show the edit field inside the item. where <VALUE> could be a long expression. A negative value indicates that the field goes to the end of the item
  • captionwidth=<VALUE>, specifies the width to show the HTML caption of the item. where <VALUE> could be a long expression. A negative value indicates that no limitation is applied to the item's caption, so no truncate caption is shown
  • height=<VALUE>, specifies the height to show the item, where <VALUE> could be a positive long expression
  • grp=<VALUE>, defines the radio group. It should be used when you define more groups of radio buttons. A group of radio buttons means that only one item could be checked at one time. The rad option specifies that the item displays a radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored. The <VALUE> could be any long expression.
  • ttp=<VALUE>, defines the item's tooltip. The <VALUE> could be any HTML string expression. The item's tooltip is shown when the user hovers the item.
  • min=<VALUE>, defines the minimum value of the edit field. The <VALUE> could be any long expression, and specifies the minimum value for any slider, progress, scroll, spin, or range editor.
  • max=<VALUE>, defines the maximum value of the edit field. The <VALUE> could be any long expression, and specifies the maximum value for any slider, progress, scroll, spin, or range editor.
  • tick=<VALUE>, defines where the ticks of the slider edit appear. This option is valid for exItemEditSlider edit. The <VALUE> could be one of the following values:
    • 0 ( exBottomRight ), The ticks are displayed on the bottom/right side.
    • 1 ( exTopLeft ), The ticks are displayed on the top/left side.
    • 2 ( exBoth ), The ticks are displayed on the both side.
    • 3 ( exNoTicks ), No ticks are displayed.
  • freq=<VALUE>, indicates the ratio of ticks on the slider edit. This option is valid for exItemEditSlider edit. The <VALUE> could be a positive long expression.
  • ticklabel=<VALUE>, indicates the HTML label to be displayed on slider's ticks. This option is valid for exItemEditSlider edit. Check the EditOption(exEditTickLabel) for more details.
  • small=<VALUE>, indicates the amount by which the edit's position changes when the user presses the arrow key ( left, right, or button ). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • large=<VALUE>, indicates the amount by which the edit's position changes when the user presses the CTRL + arrow key ( CTRL + left, CTRL + right). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • spin=<VALUE>, specifies the step to advance when user clicks the editor's spin.. This option is valid for exItemEditSpin edit. The <VALUE> could be a positive long expression.
  • ettp=<VALUE>, specifies the HTML tooltip to be shown when the item's value is changed. This option is valid for exItemEditSlider/exItemEditScrollBar edit. The <VALUE> could be any string expression.
  • float=<VALUE>, Specifies whether the mask field masks a floating point number. This option is valid for exItemEditMask edit. See See EditMask property for more details. The <VALUE> could be 0 for standard masking field or not zero to specify that the field is masking a floating point.
  • close=<VALUE>, Specifies the way the hosting menu is closed when the user clicks the item. If the close flag is missing, the <VALUE> is 3 (exCloseOnNonClickable), by default. The <VALUE> could be one of the following values:
    • 0 ( exCloseOnClick ), The popup menu is closing when the user clicks the item.
    • 1 ( exCloseOnDblClick ), The popup menu is closing when the user double clicks the item.
    • 2 ( exCloseOnClickOutside ), The popup menu is closing when the user clicks outside of the menu.
    • 3 ( exCloseOnNonClickable ), The popup menu is closing when the user clicks a non-clickable item ( regular items ). The non-clickable items is any item that's not a separator, popup, disabled or check or radio items, clicking a check-box item will makes the check box to change its state instead closing the context menu.


property Parent

property Lane.Parent as Lane
Retrieves the parent of the current lane.

Type | Description
Lane | A Lane object that indicates the parent of the current lane.
The Parent property retrieves the parent of the current lane. The Children property retrieves a collection of child-lanes. The Count property of the Lanes object defines the number of child-lanes ( sub-lanes ). The Item property of the Lanes object returns the Lane object giving its position. The AllowDesignHeader property indicates that lanes and their parents shows on separate headers while cursor hovers the pool's header. For instance, you can use the AllowDesignHeader property on exDesignHeaderSingle, so the user can not create no sub-lanes at runtime. The Pool property gets the owner pool of the lane.


property Pattern

property Lane.Pattern as Pattern
Specifies the pattern to be shown on the lane's background.

Type | Description
Pattern | A Pattern to be shown over the lane's background.
By default, no Pattern is shown on the lane's background. The Pattern property defines the pattern to be shown on the lane's background. The Color property specifies the lane's visual appearance / background color. The HeaderLaneInheritLane property specifies the visual properties that the header inherits from its lane.

The following screen shot shows the header of the lane with a different pattern/color:


property Pool

property Lane.Pool as Pool
Gets the owner pool of the current lane.

Type | Description
Pool | A Pool object that represents the pool owner.
The Pool property gets the owner pool of the lane. The Lane property of the Pool object returns the horizontal/vertical lanes of the pool. The Parent property retrieves the parent of the current lane. The Children property retrieves a collection of child-lanes. The Count property of the Lanes object defines the number of child-lanes ( sub-lanes ). The Item property of the Lanes object returns the Lane object giving its position.


property Position

property Lane.Position as Long
Specifies the lane's position.

Type | Description
Long | A Long expression that specifies the position of the lane in the parent's Children collection.
The Position property specifies the lane's position (0-based). The Parent property indicates the parent-lane of the current lane. The Children property retrieves a collection of child-lanes. The Count property of the Lanes object defines the number of child-lanes ( sub-lanes ). The Item property of the Lanes object returns the Lane object giving its position. The Remove method removes a lane from the Children collection, giving its position.


property Type

property Lane.Type as LaneTypeEnum
Indicates the type of the lane.

Type | Description
LaneTypeEnum | A LaneTypeEnum expression that determines whether the lane is horizontal or vertical.
The Type property of the Lane indicates whether the lane is horizontal or vertical. The HeaderSize property specifies the size of the header. The HeaderVisible property specifies whether the header is visible or hidden. The Lane property of the Pool accesses the horizontal or vertical lanes of the pool.

The following screen shot shows the vertical lanes:

The following screen shot shows the horizontal lanes:


property UserData

property Lane.UserData as Variant
Indicates any extra data associated with the lane.

Type | Description
Variant | A VARIANT expression that specifies the extra data associated with the lane.
Use the UserData property to store your extra data for the lane. The Caption property gets or sets a value that indicates the HTML caption to be displayed on the header of the lane. The Parent property specifies the parent of the lane.


Lanes object
The Lanes object holds a collection of Lane objects. The Lane property of the Pool access the horizontal or vertical lanes of the pool. The LaneByID property returns a Lane object giving its identifier. The Children property retrieves a collection of child-lanes.

The following screen shot shows lanes of the pool:

The Lanes object supports the following properties and methods:

Name | Description
Clear | Removes all objects in a collection.
Count | Specifies the number of lanes/children in the collection.
Item | Returns a specific Lane of the Children collection, giving its position.
Remove | Removes a specific member from the Children collection, giving its position or reference.


method Clear

method Lanes.Clear ()
Removes all objects in a collection.

Type Description
The Clear methods removes all lanes from the collection. The Clear method is equivalent with setting the Count property of the Children collection on 0. The Remove method removes a specific lane from the Children collection. The Count property of the Lanes object defines the number of child-lanes ( sub-lanes ). The Item property of the Lanes object returns the Lane object giving its position. The Parent property indicates the parent-lane of the current lane.


property Count

property Lanes.Count as Long
Specifies the number of lanes/children in the collection.

Type | Description
Long | A Long expression that counts the number of Lane within the Children collection
By default, the Count property is 0. The Count property of the Lanes object defines the number of child-lanes ( sub-lanes ). The lane's context menu (InvokeContextMenu property) defines the Split item that changes the Count property of the Children collection. The Item property of the Lanes object returns the Lane object giving its position. The Parent property indicates the parent-lane of the current lane. The Caption property defines the lane's header caption. The DefPoolHeaderCaptionFormat specifies the default format/text of the caption to be shown on the lane's header.

The following sample defines lanes and sub-lanes:

VBA (MS Access, Excell...)

With SwimLane1
    .BeginUpdate
    With .Pools.Add(-150,-150,300,250)
        .HeaderSize(1) = 32
        .HeaderSize(3) = 32
        With .Lane(1).Children
            .Count = 3
            .item(1).Children.Count = 2
        End With
    End With
    .EndUpdate
End With

VB6

With SwimLane1
    .BeginUpdate
    With .Pools.Add(-150,-150,300,250)
        .HeaderSize(exHeaderTop) = 32
        .HeaderSize(exHeaderBottom) = 32
        With .Lane(exLaneVertical).Children
            .Count = 3
            .item(1).Children.Count = 2
        End With
    End With
    .EndUpdate
End With

VB.NET

With Exswimlane1
    .BeginUpdate()
    With .Pools.Add(-150,-150,300,250)
        .set_HeaderSize(exontrol.EXSWIMLANELib.HeaderPosEnum.exHeaderTop,32)
        .set_HeaderSize(exontrol.EXSWIMLANELib.HeaderPosEnum.exHeaderBottom,32)
        With .get_Lane(exontrol.EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children
            .Count = 3
            .get_item(1).Children.Count = 2
        End With
    End With
    .EndUpdate()
End With

VB.NET for /COM

With AxSwimLane1
    .BeginUpdate()
    With .Pools.Add(-150,-150,300,250)
        .HeaderSize(EXSWIMLANELib.HeaderPosEnum.exHeaderTop) = 32
        .HeaderSize(EXSWIMLANELib.HeaderPosEnum.exHeaderBottom) = 32
        With .Lane(EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children
            .Count = 3
            .item(1).Children.Count = 2
        End With
    End With
    .EndUpdate()
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
spSwimLane1->BeginUpdate();
EXSWIMLANELib::IPoolPtr var_Pool = spSwimLane1->GetPools()->Add(long(-150),long(-150),long(300),long(250));
    var_Pool->PutHeaderSize(EXSWIMLANELib::exHeaderTop,32);
    var_Pool->PutHeaderSize(EXSWIMLANELib::exHeaderBottom,32);
    EXSWIMLANELib::ILanesPtr var_Lanes = var_Pool->GetLane(EXSWIMLANELib::exLaneVertical)->GetChildren();
        var_Lanes->PutCount(3);
        var_Lanes->Getitem(long(1))->GetChildren()->PutCount(2);
spSwimLane1->EndUpdate();

C++ Builder

SwimLane1->BeginUpdate();
Exswimlanelib_tlb::IPoolPtr var_Pool = SwimLane1->Pools->Add(TVariant(-150),TVariant(-150),TVariant(300),TVariant(250));
    var_Pool->set_HeaderSize(Exswimlanelib_tlb::HeaderPosEnum::exHeaderTop,32);
    var_Pool->set_HeaderSize(Exswimlanelib_tlb::HeaderPosEnum::exHeaderBottom,32);
    Exswimlanelib_tlb::ILanesPtr var_Lanes = var_Pool->get_Lane(Exswimlanelib_tlb::LaneTypeEnum::exLaneVertical)->Children;
        var_Lanes->Count = 3;
        var_Lanes->get_item(TVariant(1))->Children->Count = 2;
SwimLane1->EndUpdate();

C#

exswimlane1.BeginUpdate();
exontrol.EXSWIMLANELib.Pool var_Pool = exswimlane1.Pools.Add(-150,-150,300,250);
    var_Pool.set_HeaderSize(exontrol.EXSWIMLANELib.HeaderPosEnum.exHeaderTop,32);
    var_Pool.set_HeaderSize(exontrol.EXSWIMLANELib.HeaderPosEnum.exHeaderBottom,32);
    exontrol.EXSWIMLANELib.Lanes var_Lanes = var_Pool.get_Lane(exontrol.EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children;
        var_Lanes.Count = 3;
        var_Lanes[1].Children.Count = 2;
exswimlane1.EndUpdate();

JScript/JavaScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
function Init()
{
    SwimLane1.BeginUpdate();
    var var_Pool = SwimLane1.Pools.Add(-150,-150,300,250);
        var_Pool.HeaderSize(1) = 32;
        var_Pool.HeaderSize(3) = 32;
        var var_Lanes = var_Pool.Lane(1).Children;
            var_Lanes.Count = 3;
            var_Lanes.item(1).Children.Count = 2;
    SwimLane1.EndUpdate();
}
</SCRIPT>
</BODY>

VBScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="VBScript">
Function Init()
    With SwimLane1
        .BeginUpdate
        With .Pools.Add(-150,-150,300,250)
            .HeaderSize(1) = 32
            .HeaderSize(3) = 32
            With .Lane(1).Children
                .Count = 3
                .item(1).Children.Count = 2
            End With
        End With
        .EndUpdate
    End With
End Function
</SCRIPT>
</BODY>

C# for /COM

axSwimLane1.BeginUpdate();
EXSWIMLANELib.Pool var_Pool = axSwimLane1.Pools.Add(-150,-150,300,250);
    var_Pool.set_HeaderSize(EXSWIMLANELib.HeaderPosEnum.exHeaderTop,32);
    var_Pool.set_HeaderSize(EXSWIMLANELib.HeaderPosEnum.exHeaderBottom,32);
    EXSWIMLANELib.Lanes var_Lanes = var_Pool.get_Lane(EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children;
        var_Lanes.Count = 3;
        var_Lanes[1].Children.Count = 2;
axSwimLane1.EndUpdate();

X++ (Dynamics Ax 2009)

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

    super();

    exswimlane1.BeginUpdate();
    var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-150),COMVariant::createFromInt(-150),COMVariant::createFromInt(300),COMVariant::createFromInt(250)); com_Pool = var_Pool;
        com_Pool.HeaderSize(1/*exHeaderTop*/,32);
        com_Pool.HeaderSize(3/*exHeaderBottom*/,32);
        var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
        var_Lanes = com_Lane.Children(); com_Lanes = var_Lanes;
            com_Lanes.Count(3);
            var_Lane = COM::createFromObject(com_Lanes.item(COMVariant::createFromInt(1))); com_Lane = var_Lane;
            var_Lanes1 = COM::createFromObject(com_Lane).Children(); com_Lanes1 = var_Lanes1;
            com_Lanes1.Count(2);
    exswimlane1.EndUpdate();
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    BeginUpdate();
    with Pools.Add(TObject(-150),TObject(-150),TObject(300),TObject(250)) do
    begin
        HeaderSize[EXSWIMLANELib.HeaderPosEnum.exHeaderTop] := 32;
        HeaderSize[EXSWIMLANELib.HeaderPosEnum.exHeaderBottom] := 32;
        with Lane[EXSWIMLANELib.LaneTypeEnum.exLaneVertical].Children do
        begin
            Count := 3;
            item[TObject(1)].Children.Count := 2;
        end;
    end;
    EndUpdate();
end

Delphi (standard)

with SwimLane1 do
begin
    BeginUpdate();
    with Pools.Add(OleVariant(-150),OleVariant(-150),OleVariant(300),OleVariant(250)) do
    begin
        HeaderSize[EXSWIMLANELib_TLB.exHeaderTop] := 32;
        HeaderSize[EXSWIMLANELib_TLB.exHeaderBottom] := 32;
        with Lane[EXSWIMLANELib_TLB.exLaneVertical].Children do
        begin
            Count := 3;
            item[OleVariant(1)].Children.Count := 2;
        end;
    end;
    EndUpdate();
end

VFP

with thisform.SwimLane1
    .BeginUpdate
    with .Pools.Add(-150,-150,300,250)
        .HeaderSize(1) = 32
        .HeaderSize(3) = 32
        with .Lane(1).Children
            .Count = 3
            .item(1).Children.Count = 2
        endwith
    endwith
    .EndUpdate
endwith

dBASE Plus

local oSwimLane,var_Lanes,var_Lanes1,var_Pool

oSwimLane = form.EXSWIMLANEACTIVEXCONTROL1.nativeObject
oSwimLane.BeginUpdate()
var_Pool = oSwimLane.Pools.Add(-150,-150,300,250)
    // var_Pool.HeaderSize(1) = 32
    with (oSwimLane)
        TemplateDef = [dim var_Pool]
        TemplateDef = var_Pool
        Template = [var_Pool.HeaderSize(1) = 32]
    endwith
    // var_Pool.HeaderSize(3) = 32
    with (oSwimLane)
        TemplateDef = [dim var_Pool]
        TemplateDef = var_Pool
        Template = [var_Pool.HeaderSize(3) = 32]
    endwith
    var_Lanes = var_Pool.Lane(1).Children
        var_Lanes.Count = 3
        // var_Lanes.item(1).Children.Count = 2
        var_Lanes1 = var_Lanes.item(1).Children
        with (oSwimLane)
            TemplateDef = [dim var_Lanes1]
            TemplateDef = var_Lanes1
            Template = [var_Lanes1.Count = 2]
        endwith
oSwimLane.EndUpdate()

XBasic (Alpha Five)

Dim oSwimLane as P
Dim var_Lanes as P
Dim var_Lanes1 as local
Dim var_Pool as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
oSwimLane.BeginUpdate()
var_Pool = oSwimLane.Pools.Add(-150,-150,300,250)
    ' var_Pool.HeaderSize(1) = 32
    oSwimLane.TemplateDef = "dim var_Pool"
    oSwimLane.TemplateDef = var_Pool
    oSwimLane.Template = "var_Pool.HeaderSize(1) = 32"

    ' var_Pool.HeaderSize(3) = 32
    oSwimLane.TemplateDef = "dim var_Pool"
    oSwimLane.TemplateDef = var_Pool
    oSwimLane.Template = "var_Pool.HeaderSize(3) = 32"

    var_Lanes = var_Pool.Lane(1).Children
        var_Lanes.Count = 3
        ' var_Lanes.item(1).Children.Count = 2
        var_Lanes1 = var_Lanes.item(1).Children
        oSwimLane.TemplateDef = "dim var_Lanes1"
        oSwimLane.TemplateDef = var_Lanes1
        oSwimLane.Template = "var_Lanes1.Count = 2"

oSwimLane.EndUpdate()

Visual Objects

local var_Lanes as ILanes
local var_Pool as IPool

oDCOCX_Exontrol1:BeginUpdate()
var_Pool := oDCOCX_Exontrol1:Pools:Add(-150,-150,300,250)
    var_Pool:[HeaderSize,exHeaderTop] := 32
    var_Pool:[HeaderSize,exHeaderBottom] := 32
    var_Lanes := var_Pool:[Lane,exLaneVertical]:Children
        var_Lanes:Count := 3
        var_Lanes:[item,1]:Children:Count := 2
oDCOCX_Exontrol1:EndUpdate()

PowerBuilder

OleObject oSwimLane,var_Lanes,var_Pool

oSwimLane = ole_1.Object
oSwimLane.BeginUpdate()
var_Pool = oSwimLane.Pools.Add(-150,-150,300,250)
    var_Pool.HeaderSize(1,32)
    var_Pool.HeaderSize(3,32)
    var_Lanes = var_Pool.Lane(1).Children
        var_Lanes.Count = 3
        var_Lanes.item(1).Children.Count = 2
oSwimLane.EndUpdate()

Visual DataFlex

Procedure OnCreate
    Forward Send OnCreate
    Send ComBeginUpdate
    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 -150 -150 300 250 to voPool
        Handle hoPool
        Get Create (RefClass(cComPool)) to hoPool
        Set pvComObject of hoPool to voPool
            Set ComHeaderSize of hoPool OLEexHeaderTop to 32
            Set ComHeaderSize of hoPool OLEexHeaderBottom to 32
            Variant voLane
            Get ComLane of hoPool OLEexLaneVertical 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 3
                    Variant voLane1
                    Get Comitem of hoLanes 1 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 hoLanes
            Send Destroy to hoLane
        Send Destroy to hoPool
    Send Destroy to hoPools
    Send ComEndUpdate
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oLanes
    LOCAL oPool
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oSwimLane:BeginUpdate()
        oPool := oSwimLane:Pools():Add(-150,-150,300,250)
            oPool:SetProperty("HeaderSize",1/*exHeaderTop*/,32)
            oPool:SetProperty("HeaderSize",3/*exHeaderBottom*/,32)
            oLanes := oPool:Lane(1/*exLaneVertical*/):Children()
                oLanes:Count := 3
                oLanes:item(1):Children():Count := 2
        oSwimLane:EndUpdate()

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


property Item

property Lanes.Item (Position as Variant) as Lane
Returns a specific Lane of the Children collection, giving its position.

Type | Description
Position as Variant | A Long expression that specifies the Lane object being requested.
Lane | A Lane object being requested.
The Item property of the Lanes object returns the Lane object giving its position. The Position parameter is a numeric value between 0, indicating the first lane on the collection and Count -1 which indicates the last lane on the collection. The Remove method removes a lane from the Children collection, giving its position. The Clear methods removes all lanes from the collection.


method Remove

method Lanes.Remove (Position as Variant)
Removes a specific member from the Children collection, giving its position or reference.

Type | Description
Position as Variant | A Long expression that specifies the position of the lane to be removed.
The Remove method removes a lane from the Children collection, giving its position. The Position property specifies the lane's position (0-based). The Clear methods removes all lanes from the collection. The Item property of the Lanes object returns the Lane object giving its position. The Parent property indicates the parent-lane of the current lane.


Link object
The Link object defines a link between two elements on the surface. The link starts from ElementFrom element and ends on ElementTo element.

The following screen shot shows a link between two elements:

The Link object supports the following properties and methods:

Name | Description
AllowControlPoint | Indicates the control points of the link, the user can use to customize the link.
ArrowColor | Gets or sets a value that indicates the link's arrow color.
ArrowFrameColor | Customizes the color to show the frame of the arrow.
ArrowSize | Gets or sets the size to show the arrow for specified link.
Caption | Gets or sets a value that indicates the HTML caption to be displayed on the link.
CaptionAlign | Indicates the alignment of the link's caption.
Color | Gets or sets a value that indicates the link's color.
CustomPath | Specifies the link's custom path.
ElementFrom | Specifies the element where the link starts from.
ElementTo | Specifies the element where the link ends into.
EndPos | Specifies where the link ends on the target/to element.
EndUpdateLink | Adds programmatically updated properties of the link to undo/redo queue.
FitToClient | Resizes or/and moves the entire chart to fit the link.
ID | Specifies the link's unique identifier.
InvokeContextMenu | Invokes programmatically the link's default or customized context menu, and returns the identifier of the selected item.
ShowDir | Shows or hides the link's direction.
ShowLinkType | Specifies how the link shows from source to target element.
StartPos | Specifies where the link starts on the source/from element.
StartUpdateLink | Starts changing properties of the link, so EndUpdateLink method adds programmatically updated properties to undo/redo queue.
Style | Specifies the link's style.
ToolTip | Gets or sets a value (tooltip) that's displayed once the cursor hovers the link.
ToolTipTitle | Gets or sets a value (title) that's displayed once the cursor hovers the link.
UserData | Indicates any extra data associated with the link.
Visible | Shows or hides the link.
Width | Gets or sets a value that indicates the link's width.


property AllowControlPoint

property Link.AllowControlPoint as LinkControlPointEnum
Indicates the control points of the link, the user can use to customize the link.

Type | Description
LinkControlPointEnum | A LinkControlPointEnum expression that indicates the control points of the link, the user can use to customize the link.
The AllowControlPoint property defines the control points for an individual link, the user can use to customize the link. The AllowControlPoint property is similar with the control's AllowLinkControlPoint property, excepts that it is applied to a link only. For instance, exNoControlPoint specifies that the link displays no control points, so the user can not customize the link's path. The link's control points are displayed only if the control is not locked (control's DesignMode property is not exDesignLock The LayoutStartChanging(exLinkControlPoint) / LayoutEndChanging(exLinkControlPoint) events as soon as user starts / ends changing the link's control points. The CustomPath property specifies the link's custom path, as a string of x,y proportions separated by comma. The CustomPath property contains the proportions of link's control-points, as a "x,y,x,y,x,y,...". The x, y are proportions of link's control-points relative to the start/end points of the link. The 0,0 indicates the link's start point, while 1,1 indicates the link's end point. For instance, "0.5,0,0.5,1" defines the link to go from start (0,0) to (0.5,0), then (0.5,1), and finally to the end (1,1)


property ArrowColor

property Link.ArrowColor as Color
Gets or sets a value that indicates the link's arrow color.

Type | Description
Color | A Color expression that defines the color to show the arrow of the link. The last 7 bits in the high significant byte of the color indicates the identifier of the skin being used to paint the part. Use the Add method to add new skins to the control. In other words, you can use the EBN objects to define a different type of arrow.
By default, the ArrowColor property is -1, which indicates that the control's LinksArrowColor property indicates the color to show the arrow or direction of the link. The ArrowColor property specifies the color to show the direction of the particular link. The Color property specifies the color to show the entire link. The ShowDir property specifies whether the arrow of the link is shown or hidden. The Width property specifies the size of the link and so the size of the arrow. The Visible property indicates whether the link is visible or hidden.


property ArrowFrameColor

property Link.ArrowFrameColor as Color
Customizes the color to show the frame of the arrow.

Type | Description
Color | A Color expression to show the arrow's frame
By default, the ArrowFrameColor property is -1 which indicates that LinksArrowFrameColor property specifies the color of the arrow's frame. The ArrowFrameColor property specifies the color to show the arrow's frame for a particular link. The LinksArrowFrameColor property specifies the color to show the default frame of the arrow. Use the LinksColor property to define the color to show all links on the surface. The Color property specifies the color for an individual link. The LinksArrowColor property specifies the color to show the arrow of the links. The control's LinksShowDir property specifies whether the arrow of the links is shown or hidden. The LinksWidth property specifies the size of the links and so the size of the arrow. The ShowLinks property specifies whether the surface shows or hides the links. The LinksArrowSize property specifies the size to show the arrow for links.


property ArrowSize

property Link.ArrowSize as Long
Gets or sets the size to show the arrow for specified link.

Type | Description
Long | A long expression that specifies the size of the arrow
By default, the ArrowSize property is -1 which indicates that LinksArrowSize property controls the size of the arrow. The ArrowSize property specifies the size to show the arrow for a particular link. The LinksArrowSize property specifies the size to show the arrow for links. Use the LinksColor property to define the color to show all links on the surface. The Color property specifies the color for an individual link. The LinksArrowColor property specifies the color to show the arrow of the links. The control's LinksShowDir property specifies whether the arrow of the links is shown or hidden. The LinksWidth property specifies the size of the links and so the size of the arrow. The ShowLinks property specifies whether the surface shows or hides the links. The LinksArrowFrameColor property specifies the color to show the default frame of the arrow.


property Caption

property Link.Caption as String
Gets or sets a value that indicates the HTML caption to be displayed on the link.

Type | Description
String | A String expression that defines the HTML caption to be displayed on the link.
Use the Caption property to define the label or caption to be displayed on the link. The CaptionAlign property specifies the alignment of the caption on the link. The Images method loads icons to be displayed on the control's surface. The HTMLPicture property loads and assigns a picture to a key to be used on control's surface.

The Caption property supports the following HTML elements:

  • <b> ... </b> displays the text in bold
  • <i> ... </i> displays the text in italics
  • <u> ... </u> underlines the text
  • <s> ... </s> Strike-through text
  • <a id;options> ... </a> displays an anchor element that can be clicked. An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link.The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The control fires the AnchorClick(AnchorID, Options) event when the user clicks the anchor element. The FormatAnchor property customizes the visual effect for anchor elements.

    The control supports expandable HTML captions feature which allows you to expand(show)/collapse(hide) different information using <a ;exp=> or <a ;e64=> anchor tags. The exp/e64 field of the anchor stores the HTML line/lines to show once the user clicks/collapses/expands the caption.

    • exp, stores the plain text to be shown once the user clicks the anchor, such as <a ;exp=show lines>
    • e64, encodes in BASE64 the HTML text to be shown once the user clicks the anchor, such as <a ;e64=gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA>+</a> that displays show lines- in gray when the user clicks the + anchor. The gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA string encodes the <fgcolor 808080>show lines<a>-</a></fgcolor> The Decode64Text/Encode64Text methods of the eXPrint can be used to decode/encode e64 fields.

    Any ex-HTML caption can be transformed to an expandable-caption, by inserting the anchor ex-HTML tag. For instance, <solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3 shows the Header in underlined and bold on the first line and Line1, Line2, Line3 on the rest. The show lines is shown instead of Line1, Line2, Line3 once the user clicks the + sign.

  • <font face;size> ... </font> displays portions of text with a different font and/or different size. For instance, the <font Tahoma;12>bit</font> draws the bit text using the Tahoma font, on size 12 pt. If the name of the font is missing, and instead size is present, the current font is used with a different size. For instance, <font ;12>bit</font> displays the bit text using the current font, but with a different size.
  • <fgcolor rrggbb> ... </fgcolor> or <fgcolor=rrggbb> ... </fgcolor> displays text with a specified foreground color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <bgcolor rrggbb> ... </bgcolor> or <bgcolor=rrggbb> ... </bgcolor> displays text with a specified background color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <solidline rrggbb> ... </solidline> or <solidline=rrggbb> ... </solidline> draws a solid-line on the bottom side of the current text-line, of specified RGB color. The <solidline> ... </solidline> draws a black solid-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <dotline rrggbb> ... </dotline> or <dotline=rrggbb> ... </dotline> draws a dot-line on the bottom side of the current text-line, of specified RGB color. The <dotline> ... </dotline> draws a black dot-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <upline> ... </upline> draws the line on the top side of the current text-line (requires <solidline> or <dotline>).
  • <r> right aligns the text
  • <c> centers the text
  • <br> forces a line-break
  • <img>number[:width]</img> inserts an icon inside the text. The number indicates the index of the icon being inserted. Use the Images method to assign a list of icons to your chart. The last 7 bits in the high significant byte of the number expression indicates the identifier of the skin being used to paint the object. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the part. The width is optional and indicates the width of the icon being inserted. Using the width option you can overwrite multiple icons getting a nice effect. By default, if the width field is missing, the width is 18 pixels.
  • <img>key[:width]</img> inserts a custom size picture into the text being previously loaded using the HTMLPicture property. The Key parameter indicates the key of the picture being displayed. The Width parameter indicates a custom size, if you require to stretch the picture, else the original size of the picture is used.
  • & glyph characters as &amp; ( & ), &lt; ( < ), &gt; ( > ), &qout; ( " ) and &#number; ( the character with specified code ), For instance, the &#8364; displays the EUR character. The & ampersand is only recognized as markup when it is followed by a known letter or a #character and a digit. For instance if you want to display <b>bold</b> in HTML caption you can use &lt;b&gt;bold&lt;/b&gt;
  • <off offset> ... </off> defines the vertical offset to display the text/element. The offset parameter defines the offset to display the element. This tag is inheritable, so the offset is keep while the associated </off> tag is found. You can use the <off offset> HTML tag in combination with the <font face;size> to define a smaller or a larger font to be displayed. For instance: Text with <font ;7><off 6>subscript displays the text such as: Text with subscript The Text with <font ;7><off -6>superscript displays the text such as: Text with subscript
  • <gra rrggbb;mode;blend> ... </gra> defines a gradient text. The text color or <fgcolor> defines the starting gradient color, while the rr/gg/bb represents the red/green/blue values of the ending color, 808080 if missing as gray. The mode is a value between 0 and 4, 1 if missing, and blend could be 0 or 1, 0 if missing. The <font> HTML tag can be used to define the height of the font. Any of the rrggbb, mode or blend field may not be specified. The <gra> with no fields, shows a vertical gradient color from the current text color to gray (808080). For instance the <font ;18><gra FFFFFF;1;1>gradient-center</gra></font> generates the following picture:
  • <out rrggbb;width> ... </out> shows the text with outlined characters, where rr/gg/bb represents the red/green/blue values of the outline color, 808080 if missing as gray, width indicates the size of the outline, 1 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><out 000000><fgcolor=FFFFFF>outlined</fgcolor></out></font> generates the following picture:
  • <sha rrggbb;width;offset> ... </sha> define a text with a shadow, where rr/gg/bb represents the red/green/blue values of the shadow color, 808080 if missing as gray, width indicates the size of shadow, 4 if missing, and offset indicates the offset from the origin to display the text's shadow, 2 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><sha>shadow</sha></font> generates the following picture:

    or <font ;31><sha 404040;5;0><fgcolor=FFFFFF>outline anti-aliasing</fgcolor></sha></font> gets:


property CaptionAlign

property Link.CaptionAlign as AlignmentEnum
Indicates the alignment of the link's caption.

Type | Description
AlignmentEnum | An AlignmentEnum expression that defines the alignment of the caption on the link.
By default, the CaptionAlign property is CenterAlignment. Use the CaptionAlign property to align the caption on the start or end element of the link. Use the Caption property to define the label or caption to be displayed on the link. The ElementFrom property defines the element where the link starts. The ElementTo property defines the element where the link ends.


property Color

property Link.Color as Color
Gets or sets a value that indicates the link's color.

Type | Description
Color | A Color expression that specifies the color to show the link.
By default, the Color property is -1, which indicates that the LinksColor property specifies the color to show the links. The Color property specifies the color to show the entire link. The ArrowColor property specifies the color to show the direction of the particular link. The ShowDir property specifies whether the arrow of the link is shown or hidden. The Width property specifies the size of the link and so the size of the arrow. The Visible property indicates whether the link is visible or hidden. The ShowLinksColor property specifies the color to show the incoming, outgoing or collapsed links.


property CustomPath

property Link.CustomPath as Variant
Specifies the link's custom path.

Type | Description
Variant | A string expression that define the link's custom path.

The CustomPath property specifies the link's custom path, as a string of x,y proportions separated by comma. The CustomPath property contains the proportions of link's control-points, as a "x,y,x,y,x,y,...". The x, y are proportions of link's control-points relative to the start/end points of the link. The 0,0 indicates the link's start point, while 1,1 indicates the link's end point. For instance, "0.5,0,0.5,1" defines the link to go from start (0,0) to (0.5,0), then (0.5,1), and finally to the end (1,1). The AllowLinkControlPoint property indicates the control points of the link, the user can use to customize the link's path. The AllowControlPoint property defines the control points for an individual link, the user can use to customize the link.


property ElementFrom

property Link.ElementFrom as Element
Specifies the element where the link starts from.

Type | Description
Element | An Element object that specifies where the link starts.
The ElementFrom property specifies where the link starts. The ElementTo property specifies the element where the link ends. The StartPos/EndPos properties indicates where on the starting element links starts and where on the ending elements the link ends. The ShowDir property specifies whether the direction of the link is shown or hidden.


property ElementTo

property Link.ElementTo as Element
Specifies the element where the link ends into.

Type | Description
Element | An Element object where the link ends.
The ElementTo property specifies the element where the link ends. The ElementFrom property specifies where the link starts. The StartPos/EndPos properties indicates where on the starting element links starts and where on the ending elements the link ends. The ShowDir property specifies whether the direction of the link is shown or hidden.


property EndPos

property Link.EndPos as AlignmentEnum
Specifies where the link ends on the target/to element.

Type | Description
AlignmentEnum | An AlignmentEnum expression that specifies where on the ending element the link ends.
The StartPos/EndPos properties indicates where on the starting element links starts and where on the ending elements the link ends. The ShowDir property specifies whether the direction of the link is shown or hidden. The ElementTo property specifies the element where the link ends. The ElementFrom property specifies where the link starts.


method EndUpdateLink

method Link.EndUpdateLink (StartUpdateLink as Long)
Adds programmatically updated properties of the link to undo/redo queue.

Type | Description
StartUpdateLink as Long | A long expression that indicates the result of the StartUpdateLink property
The StartUpdateLink/EndUpdateLink methods record and add changes of the current link to the control's Undo/Redo queue. You can use the StartBlockUndoRedo / End BlockUndoRedo methods to group multiple Undo/Redo operations into a single-block. The AllowUndoRedo property specifies whether the control supports undo/redo operations for objects (links, links, ...). No entry is added to the Undo/Redo queue if no property is changed for the current link. Each call of the StartUpdateLink must be succeeded by a EndUpdateLink call. The UndoListAction property lists the Undo actions that can be performed in the chart. The RedoListAction property lists the Redo actions that can be performed in the chart.

The StartUpdateLink/EndUpdateLink methods can record changes for the following properties only:

  • ElementFrom, specifies the element where the link starts from
  • ElementTo, specifies the element where the link ends into
  • ID, specifies the link's unique identifier
  • Style, specifies the link's style
  • Color, specifies the link's color
  • Width, specifies the link's width
  • Visible, shows or hides the link
  • StartPos, specifies where the link starts on the source/from element
  • EndPos, specifies where the link ends on the target/to element
  • ShowLinkType, specifies how the link shows from source to target element
  • ShowDir, shows or hides the link's direction/arrow
  • ArrowColor, defines the link's arrow color
  • UserData, associates any extra data associated with the link
  • Caption, gets or sets a value that indicates the HTML caption to be displayed on the link
  • ToolTip, gets or sets a value (tooltip) that's displayed once the cursor hovers the link
  • ToolTipTitle, gets or sets a value (title) that's displayed once the cursor hovers the link
  • AllowControlPoint, indicates the control points of the link, the user can use to customize the link
  • CustomPath, specifies the link's custom path

The Undo/Redo records show as:

  • "UpdateLink;LINKID", indicates that one or more properties of the element has been updated, using the StartUpdateLink / EndUpdateLink methods

within the UndoListAction/RedoListAction result


method FitToClient

method Link.FitToClient ()
Resizes or/and moves the entire chart to fit the link.

Type Description


property ID

property Link.ID as Variant
Specifies the link's unique identifier.

Type | Description
Variant | A Long, String or Numeric expression that defines the unique identifier of the link.
By default, the control automatically generates an unique identifier for each link. You can use the ID property to define your id for the link. The control fires the CreateLink event when the user adds at runtime a link between two elements. The AllowLinkObjects property specifies the keys combination to let the user links two elements on the surface, the ElementFrom property specifies the element where the link starts, where the ElementTo property specifies ending element of the link. Prior to CreateLink event the control fires the AddLink event that indicates that the link has been added to the Links collection. The AllowLink event occurs when user links two elements to specify whether the link is allowed.


method InvokeContextMenu

method Link.InvokeContextMenu ([ContextMenu as Variant])
Invokes programmatically the link's default or customized context menu, and returns the identifier of the selected item.

Type | Description
ContextMenu as Variant | A String expression that defines the items to be displayed on the element's context-menu. If empty, the default context-menu for elements [ContextMenu(exContextMenuLink) property] is shown.
Return | Description
Variant | A Long expression that indicates the identifier of the item being selected/clicked.
The InvokeContextMenu method invokes programmatically the link's default or customized context menu, and returns the identifier of the selected item. The ContextMenu(exContextMenuLink) property defines the default content-menu for links. The ActionContextMenu event notifies your application once an action occurs within the object's context menu. Use the AllowContextMenu property on exDisallow to disable default's context menu, when the user right clicks the element. The ContextMenuFont property retrieves or sets the context-menu's font. The Background(exContextMenuAppearance) property ( and related ) defines the control's context menu appearance.

By default, the link's context-menu shows as follows:

For instance, the InvokeContextMenu( "Item 1,Item 2,[sep],Check 1[chk],Check 2[chk]" ), generates the following screen shot:

For instance, the InvokeContextMenu( "Item 1,Item 2,Popup(Check 1[chk],Check 2[chk])" ), generates the following screen shot:

For instance, the InvokeContextMenu( "Calendar[id=20][img=0],MSChart[id=30],Record[id=40],Slider[id=50],Radio 1[id=100][typ=2][edit=],Radio 2[id=101][typ=2][edit=],Radio 3[id=102][typ=2][edit=],ComboBox[id=90]" ), generates the following screen shot:

The syntax for ContextMenu parameter in BNF notation is:

<ToString> ::= <ITEMS>
<ITEMS> ::= <ITEM>["("<ITEMS>")"][","<ITEMS>]
<ITEM> ::= <CAPTION>[<OPTIONS>]
<OPTIONS> ::= "["<OPTION>"]"["["<OPTIONS>"]"]
<OPTION> ::= <PROPERTY>["="<VALUE>]
<PROPERTY> ::= "img" | "himg" | "sep" | "id" | "typ" | "group" | "chk" | "button" | "align" | "spchk" | "show" | "rad" | "dis" | "showdis" | "bld" | "itl" | "stk" | "und" | "bg" | "fg" | "edittype" | "edit" | "mask" | "border" | "editwidth" | "captionwidth" | "height" | "grp" | "tfi" | "ttp" | "min" | "max" | "tick" | "freq" | "ticklabel" | "small" | "large" | "spin" | "ettp" | "float" | "close"

where the <CAPTION> is the HTML caption to be shown on the context menu item. The <VALUE> indicates the value of giving property.

  • img=<VALUE>, where <VALUE> is an integer expression, that indicates the index of the icon being displayed for the item.
  • himg=<VALUE>, where <VALUE> indicates the key of the picture to be displayed for the item.
  • sep, specifies an separator item
  • id=<VALUE>, where <VALUE> is an integer expression, that indicates the identifier of the item.
  • typ=<VALUE>, where <VALUE> could be one of the following:
    • 0 for regular items,
    • 1 for items that display a check/box (chk)
    • 2 to display radio buttons (rad)
  • group=<VALUE>, where <VALUE> could be a bit-or combination (+) of the following values:
    • 0 (exNoGroupPopup), No grouping is performed on the sub-menu, so the sub-items are shown to a float popup,
    • 1 (exGroupPopup), Groups and displays the sub-menu items on the current item, arranged from left to right
    • 2 (exNoGroupPopupFrame), Prevents showing the frame around each grouping item.
    • 4 (exGroupPopupCenter), Shows the grouping popup aligned to the center of the current item.
    • 8 (exGroupPopupRight), Shows the grouping popup aligned to the right of the current item.
    • 16 (exGroupPopupEqualSize), Shows the items that make the group of the same size
  • chk[=<VALUE>], where <VALUE> could be 0 for unchecked, or not zero for checked. The chk option makes the item to display a check box. If the <VALUE> is missing the item still displays an un-checked check box.
  • button=<VALUE>, where <VALUE> could be 0 for regular or not zero to show the item as a button.
  • align=<VALUE>, where <VALUE> could be one of the following:
    • 0 ( left ), to align the item's caption to the left
    • 1 ( center ), to center the item's caption
    • 2 ( right ), to align the item's caption to the right
  • spchk=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item's sub menu is shown only if the item is checked.
  • show=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the checked item shows as selected
  • rad=<VALUE>, where <VALUE> could be 0 for unchecked radio button or not zero to for checked radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored.
  • dis, specifies a disabled item
  • showdis=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item shows as disabled, but it is still enabled
  • bld, specifies that the item appears in bold
  • itl, specifies that the item appears in italics
  • stk, specifies that the item appears as strikeout
  • und, specifies that the item is underlined
  • bg=<VALUE>, specifies the item's background color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • fg=<VALUE>, specifies the item's foreground color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • edittype=<VALUE>, associates an edit field to the item, where <VALUE> could be one of the following values:
    • 0 ( exItemDisableEdit ), No editor is assigned to the current item.
    • 1 ( exItemEditText ), A text-box editor is assigned to the current item.
    • 2 ( exItemEditMask ), A masked text-box editor is assigned to the current item.
    • 3 ( exItemEditSlider ), A slider editor is assigned to the current item.
    • 4 ( exItemEditProgress ), A progress editor is assigned to the current item.
    • 5 ( exItemEditScrollBar ), A scrollbar editor is assigned to the current item.
    • 6 ( exItemEditColor), A color editor is assigned to the current item.
    • 7 ( exItemEditFont ), A font editor is assigned to the current item.
    • 256 (exItemEditReadOnly), specifies that the item's editor is shown as disabled. This value could be combined with one of the values from 0 to 7, 512
    • 512 ( exItemEditSpin ), A spin editor is assigned to the current item. This value could be combined with one of the values from 0 to 7, 256
  • edit=<VALUE>, specifies the caption to be shown in the item's edit field, where <VALUE> could be any string
  • mask=<VALUE>, specifies the mask to be applied on a masked editor. This option is valid for exItemEditMask edit. Use the float option to allow masking floating point numbers. See EditMask property for more details.
  • border=<VALUE>, specifies the border to be shown on the item's edit field, where <VALUE> could be one of the following:
    • 0 ( exEditBorderNone), No border is shown.
    • -1 (exEditBorderInset), shows an inset border
    • 1 (exEditBorderSingle), shows a frame border
  • editwidth=<VALUE>, specifies the width to show the edit field inside the item. where <VALUE> could be a long expression. A negative value indicates that the field goes to the end of the item
  • captionwidth=<VALUE>, specifies the width to show the HTML caption of the item. where <VALUE> could be a long expression. A negative value indicates that no limitation is applied to the item's caption, so no truncate caption is shown
  • height=<VALUE>, specifies the height to show the item, where <VALUE> could be a positive long expression
  • grp=<VALUE>, defines the radio group. It should be used when you define more groups of radio buttons. A group of radio buttons means that only one item could be checked at one time. The rad option specifies that the item displays a radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored. The <VALUE> could be any long expression.
  • ttp=<VALUE>, defines the item's tooltip. The <VALUE> could be any HTML string expression. The item's tooltip is shown when the user hovers the item.
  • min=<VALUE>, defines the minimum value of the edit field. The <VALUE> could be any long expression, and specifies the minimum value for any slider, progress, scroll, spin, or range editor.
  • max=<VALUE>, defines the maximum value of the edit field. The <VALUE> could be any long expression, and specifies the maximum value for any slider, progress, scroll, spin, or range editor.
  • tick=<VALUE>, defines where the ticks of the slider edit appear. This option is valid for exItemEditSlider edit. The <VALUE> could be one of the following values:
    • 0 ( exBottomRight ), The ticks are displayed on the bottom/right side.
    • 1 ( exTopLeft ), The ticks are displayed on the top/left side.
    • 2 ( exBoth ), The ticks are displayed on the both side.
    • 3 ( exNoTicks ), No ticks are displayed.
  • freq=<VALUE>, indicates the ratio of ticks on the slider edit. This option is valid for exItemEditSlider edit. The <VALUE> could be a positive long expression.
  • ticklabel=<VALUE>, indicates the HTML label to be displayed on slider's ticks. This option is valid for exItemEditSlider edit. Check the EditOption(exEditTickLabel) for more details.
  • small=<VALUE>, indicates the amount by which the edit's position changes when the user presses the arrow key ( left, right, or button ). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • large=<VALUE>, indicates the amount by which the edit's position changes when the user presses the CTRL + arrow key ( CTRL + left, CTRL + right). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • spin=<VALUE>, specifies the step to advance when user clicks the editor's spin.. This option is valid for exItemEditSpin edit. The <VALUE> could be a positive long expression.
  • ettp=<VALUE>, specifies the HTML tooltip to be shown when the item's value is changed. This option is valid for exItemEditSlider/exItemEditScrollBar edit. The <VALUE> could be any string expression.
  • float=<VALUE>, Specifies whether the mask field masks a floating point number. This option is valid for exItemEditMask edit. See See EditMask property for more details. The <VALUE> could be 0 for standard masking field or not zero to specify that the field is masking a floating point.
  • close=<VALUE>, Specifies the way the hosting menu is closed when the user clicks the item. If the close flag is missing, the <VALUE> is 3 (exCloseOnNonClickable), by default. The <VALUE> could be one of the following values:
    • 0 ( exCloseOnClick ), The popup menu is closing when the user clicks the item.
    • 1 ( exCloseOnDblClick ), The popup menu is closing when the user double clicks the item.
    • 2 ( exCloseOnClickOutside ), The popup menu is closing when the user clicks outside of the menu.
    • 3 ( exCloseOnNonClickable ), The popup menu is closing when the user clicks a non-clickable item ( regular items ). The non-clickable items is any item that's not a separator, popup, disabled or check or radio items, clicking a check-box item will makes the check box to change its state instead closing the context menu.

The following samples invokes a custom-context menu for newly added element:

VBA (MS Access, Excell...)

With SwimLane1
    Debug.Print( .Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") )
End With

VB6

With SwimLane1
    Debug.Print( .Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") )
End With

VB.NET

With Exswimlane1
    Debug.Print( .Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") )
End With

VB.NET for /COM

With AxSwimLane1
    Debug.Print( .Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") )
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
OutputDebugStringW( _bstr_t(spSwimLane1->GetElements()->Add("Element",long(0),long(0))->InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]")) );

C++ Builder

OutputDebugString( PChar(SwimLane1->Elements->Add(TVariant("Element"),TVariant(0),TVariant(0))->InvokeContextMenu(TVariant("Item 1[id=1000],Item 2[id=2000]"))) );

C#

System.Diagnostics.Debug.Print( exswimlane1.Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]").ToString() );

JScript/JavaScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
function Init()
{
    alert( SwimLane1.Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") );
}
</SCRIPT>
</BODY>

VBScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="VBScript">
Function Init()
    With SwimLane1
        alert( .Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") )
    End With
End Function
</SCRIPT>
</BODY>

C# for /COM

System.Diagnostics.Debug.Print( axSwimLane1.Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]").ToString() );

X++ (Dynamics Ax 2009)

public void init()
{
    ;

    super();

    print( exswimlane1.Elements().Add("Element",COMVariant::createFromInt(0),COMVariant::createFromInt(0)).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") );
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    OutputDebugString( Elements.Add('Element',TObject(0),TObject(0)).InvokeContextMenu('Item 1[id=1000],Item 2[id=2000]') );
end

Delphi (standard)

with SwimLane1 do
begin
    OutputDebugString( Elements.Add('Element',OleVariant(0),OleVariant(0)).InvokeContextMenu('Item 1[id=1000],Item 2[id=2000]') );
end

VFP

with thisform.SwimLane1
    DEBUGOUT( .Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]") )
endwith

dBASE Plus

local oSwimLane

oSwimLane = form.EXSWIMLANEACTIVEXCONTROL1.nativeObject
? Str(oSwimLane.Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]"))

XBasic (Alpha Five)

Dim oSwimLane as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
? oSwimLane.Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]")

Visual Objects

OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:Elements:Add("Element",0,0):InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]")) ))

PowerBuilder

OleObject oSwimLane

oSwimLane = ole_1.Object
MessageBox("Information",string( String(oSwimLane.Elements.Add("Element",0,0).InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]")) ))

Visual DataFlex

Procedure OnCreate
    Forward Send OnCreate
    Variant v
    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" 0 0 to voElement
        Handle hoElement
        Get Create (RefClass(cComElement)) to hoElement
        Set pvComObject of hoElement to voElement
            Get ComInvokeContextMenu of hoElement "Item 1[id=1000],Item 2[id=2000]" to v
        Send Destroy to hoElement
    Send Destroy to hoElements
    Showln v
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        DevOut( Transform(oSwimLane:Elements:Add("Element",0,0):InvokeContextMenu("Item 1[id=1000],Item 2[id=2000]"),"") )

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


property ShowDir

property Link.ShowDir as Boolean
Shows or hides the link's direction.

Type | Description
Boolean | A Boolean expression that specifies whether the link's direction is shown or hidden.
The ShowDir property specifies whether the arrow of the link is shown or hidden. The LinksShowDir property specifies whether the direction for all links are shown or hidden. The ArrowColor property specifies the color to show the direction of the particular link. The Width property specifies the size of the link and so the size of the arrow. The Visible property indicates whether the link is visible or hidden. The StartPos/EndPos properties indicates where on the starting element links starts and where on the ending elements the link ends.


property ShowLinkType

property Link.ShowLinkType as ShowLinkTypeEnum
Specifies how the link shows from source to target element.

Type | Description
ShowLinkTypeEnum | A ShowLinkTypeEnum expression that defines the type of the link to be show between elements.
By default, the ShowLinkType property is -1, which specifies that the control's ShowLinksType property indicates the type of the links to be shown between elements. The ShowLinkType property specifies a different type of link between two elements. The Color property specifies the color to show the entire link. The ShowDir property specifies whether the arrow of the link is shown or hidden. The Width property specifies the size of the link and so the size of the arrow. The Visible property indicates whether the link is visible or hidden. The Style property defines the style of the line to be shown on the link.

The following screen shot shows the exLinkRectangular type:

The following screen shot shows the exLinkRound type:

The following screen shot shows the exLinkDirect type:

The following screen shot shows the exLinkStraight type:


property StartPos

property Link.StartPos as AlignmentEnum
Specifies where the link starts on the source/from element.

Type | Description
AlignmentEnum | An AlignmentEnum expression that specifies where on the starting element the link starts.
The StartPos/EndPos properties indicates where on the starting element links starts and where on the ending elements the link ends. The ShowDir property specifies whether the direction of the link is shown or hidden. The ElementTo property specifies the element where the link ends. The ElementFrom property specifies where the link starts.


property StartUpdateLink

property Link.StartUpdateLink as Long
Starts changing properties of the link, so EndUpdateLink method adds programmatically updated properties to undo/redo queue.

Type | Description
Long | A Long expression that specifies the handle to be passed to EndUpdateLink so the updated properties of the bar are added to the Undo/Redo queue of the chart, so they can be used in undo/redo operations.
The StartUpdateLink/EndUpdateLink methods record and add changes of the current link to the control's Undo/Redo queue. You can use the StartBlockUndoRedo / End BlockUndoRedo methods to group multiple Undo/Redo operations into a single-block. The AllowUndoRedo property specifies whether the control supports undo/redo operations for objects (links, links, ...). No entry is added to the Undo/Redo queue if no property is changed for the current link. Each call of the StartUpdateLink must be succeeded by a EndUpdateLink call. The UndoListAction property lists the Undo actions that can be performed in the chart. The RedoListAction property lists the Redo actions that can be performed in the chart.

The StartUpdateLink/EndUpdateLink methods can record changes for the following properties only:

  • ElementFrom, specifies the element where the link starts from
  • ElementTo, specifies the element where the link ends into
  • ID, specifies the link's unique identifier
  • Style, specifies the link's style
  • Color, specifies the link's color
  • Width, specifies the link's width
  • Visible, shows or hides the link
  • StartPos, specifies where the link starts on the source/from element
  • EndPos, specifies where the link ends on the target/to element
  • ShowLinkType, specifies how the link shows from source to target element
  • ShowDir, shows or hides the link's direction/arrow
  • ArrowColor, defines the link's arrow color
  • UserData, associates any extra data associated with the link
  • Caption, gets or sets a value that indicates the HTML caption to be displayed on the link
  • ToolTip, gets or sets a value (tooltip) that's displayed once the cursor hovers the link
  • ToolTipTitle, gets or sets a value (title) that's displayed once the cursor hovers the link
  • AllowControlPoint, indicates the control points of the link, the user can use to customize the link
  • CustomPath, specifies the link's custom path

The Undo/Redo records show as:

  • "UpdateLink;LINKID", indicates that one or more properties of the element has been updated, using the StartUpdateLink / EndUpdateLink methods

within the UndoListAction/RedoListAction result


property Style

property Link.Style as LinkStyleEnum
Specifies the link's style.

Type | Description
LinkStyleEnum | A LinkStyleEnum expression that defines the style of the line to be shown between elements.
By default, the Style property is -1, which specifies that the control's LinksStyle property specifies the style of the line to be shown on links. The Style property indicates the style of the line to be shown on a particular link. The ShowLinkType property specifies the type of the link to be shown, like rectangular, straight and so on. The Width property specifies the size of the link and so the size of the arrow. The Visible property indicates whether the link is visible or hidden. The Color property specifies the color to show the entire link. The ShowDir property specifies whether the arrow of the link is shown or hidden. The ShowLinksStyle property specifies the style to show the incoming, outgoing or collapsed links.


property ToolTip

property Link.ToolTip as String
Gets or sets a value (tooltip) that's displayed once the cursor hovers the link.

Type | Description
String | A String expression that defines the HTML caption to be shown when the cursor hovers the link.
Use the ToolTip property to define the label or caption to be shown when the cursor hovers the link. The ToolTipTitle defines the title of the link's tooltip. The Images method loads icons to be displayed on the control's surface. The HTMLPicture property loads and assigns a picture to a key to be used on control's surface.

The ToolTip property supports the following HTML elements:

  • <b> ... </b> displays the text in bold
  • <i> ... </i> displays the text in italics
  • <u> ... </u> underlines the text
  • <s> ... </s> Strike-through text
  • <a id;options> ... </a> displays an anchor element that can be clicked. An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link.The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The control fires the AnchorClick(AnchorID, Options) event when the user clicks the anchor element. The FormatAnchor property customizes the visual effect for anchor elements.

    The control supports expandable HTML captions feature which allows you to expand(show)/collapse(hide) different information using <a ;exp=> or <a ;e64=> anchor tags. The exp/e64 field of the anchor stores the HTML line/lines to show once the user clicks/collapses/expands the caption.

    • exp, stores the plain text to be shown once the user clicks the anchor, such as <a ;exp=show lines>
    • e64, encodes in BASE64 the HTML text to be shown once the user clicks the anchor, such as <a ;e64=gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA>+</a> that displays show lines- in gray when the user clicks the + anchor. The gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA string encodes the <fgcolor 808080>show lines<a>-</a></fgcolor> The Decode64Text/Encode64Text methods of the eXPrint can be used to decode/encode e64 fields.

    Any ex-HTML caption can be transformed to an expandable-caption, by inserting the anchor ex-HTML tag. For instance, <solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3 shows the Header in underlined and bold on the first line and Line1, Line2, Line3 on the rest. The show lines is shown instead of Line1, Line2, Line3 once the user clicks the + sign.

  • <font face;size> ... </font> displays portions of text with a different font and/or different size. For instance, the <font Tahoma;12>bit</font> draws the bit text using the Tahoma font, on size 12 pt. If the name of the font is missing, and instead size is present, the current font is used with a different size. For instance, <font ;12>bit</font> displays the bit text using the current font, but with a different size.
  • <fgcolor rrggbb> ... </fgcolor> or <fgcolor=rrggbb> ... </fgcolor> displays text with a specified foreground color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <bgcolor rrggbb> ... </bgcolor> or <bgcolor=rrggbb> ... </bgcolor> displays text with a specified background color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <solidline rrggbb> ... </solidline> or <solidline=rrggbb> ... </solidline> draws a solid-line on the bottom side of the current text-line, of specified RGB color. The <solidline> ... </solidline> draws a black solid-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <dotline rrggbb> ... </dotline> or <dotline=rrggbb> ... </dotline> draws a dot-line on the bottom side of the current text-line, of specified RGB color. The <dotline> ... </dotline> draws a black dot-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <upline> ... </upline> draws the line on the top side of the current text-line (requires <solidline> or <dotline>).
  • <r> right aligns the text
  • <c> centers the text
  • <br> forces a line-break
  • <img>number[:width]</img> inserts an icon inside the text. The number indicates the index of the icon being inserted. Use the Images method to assign a list of icons to your chart. The last 7 bits in the high significant byte of the number expression indicates the identifier of the skin being used to paint the object. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the part. The width is optional and indicates the width of the icon being inserted. Using the width option you can overwrite multiple icons getting a nice effect. By default, if the width field is missing, the width is 18 pixels.
  • <img>key[:width]</img> inserts a custom size picture into the text being previously loaded using the HTMLPicture property. The Key parameter indicates the key of the picture being displayed. The Width parameter indicates a custom size, if you require to stretch the picture, else the original size of the picture is used.
  • & glyph characters as &amp; ( & ), &lt; ( < ), &gt; ( > ), &qout; ( " ) and &#number; ( the character with specified code ), For instance, the &#8364; displays the EUR character. The & ampersand is only recognized as markup when it is followed by a known letter or a #character and a digit. For instance if you want to display <b>bold</b> in HTML caption you can use &lt;b&gt;bold&lt;/b&gt;
  • <off offset> ... </off> defines the vertical offset to display the text/element. The offset parameter defines the offset to display the element. This tag is inheritable, so the offset is keep while the associated </off> tag is found. You can use the <off offset> HTML tag in combination with the <font face;size> to define a smaller or a larger font to be displayed. For instance: Text with <font ;7><off 6>subscript displays the text such as: Text with subscript The Text with <font ;7><off -6>superscript displays the text such as: Text with subscript
  • <gra rrggbb;mode;blend> ... </gra> defines a gradient text. The text color or <fgcolor> defines the starting gradient color, while the rr/gg/bb represents the red/green/blue values of the ending color, 808080 if missing as gray. The mode is a value between 0 and 4, 1 if missing, and blend could be 0 or 1, 0 if missing. The <font> HTML tag can be used to define the height of the font. Any of the rrggbb, mode or blend field may not be specified. The <gra> with no fields, shows a vertical gradient color from the current text color to gray (808080). For instance the <font ;18><gra FFFFFF;1;1>gradient-center</gra></font> generates the following picture:
  • <out rrggbb;width> ... </out> shows the text with outlined characters, where rr/gg/bb represents the red/green/blue values of the outline color, 808080 if missing as gray, width indicates the size of the outline, 1 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><out 000000><fgcolor=FFFFFF>outlined</fgcolor></out></font> generates the following picture:
  • <sha rrggbb;width;offset> ... </sha> define a text with a shadow, where rr/gg/bb represents the red/green/blue values of the shadow color, 808080 if missing as gray, width indicates the size of shadow, 4 if missing, and offset indicates the offset from the origin to display the text's shadow, 2 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><sha>shadow</sha></font> generates the following picture:

    or <font ;31><sha 404040;5;0><fgcolor=FFFFFF>outline anti-aliasing</fgcolor></sha></font> gets:


property ToolTipTitle

property Link.ToolTipTitle as String
Gets or sets a value (title) that's displayed once the cursor hovers the link.

Type | Description
String | A String expression that defines the title of the link's tooltip
The ToolTipTitle defines the title of the link's tooltip. Use the ToolTip property to define the label or caption to be shown when the cursor hovers the link.


property UserData

property Link.UserData as Variant
Indicates any extra data associated with the link.

Type | Description
Variant | A VARIANT expression that defines any extra-data you can associate with the link.
The UserData property specifies any extra-data associated with the link. The control fires the AddLink event when a new link is added to the surface. The RemoveLink event notifies your application once a link is removed form the surface.


property Visible

property Link.Visible as Boolean
Shows or hides the link.

Type | Description
Boolean | A Boolean expression that specifies whether the link is visible or hidden.
By default, the Visible property is True. Use the Visible property to hide a particular link. The Visible property indicates whether the link is visible or hidden. The ShowLinks property specifies whether the control show or hide the links on the surface. The ShowDir property specifies whether the arrow of the link is shown or hidden. A link between two elements is visible, if both element are visible. Use the Visible property to specify whether an element is visible or hidden. Use the ShowLinksOnCollapse property to show the links between an element and collapsed elements.


property Width

property Link.Width as Long
Gets or sets a value that indicates the link's width.

Type | Description
Long | A Long expression that specifies the size of the link.
By default, the Width property of the link is -1, which specifies that the control's LinksWidth property indicates the width of the link. The Width property specifies the width of a particular link. The Width property specifies the size of the link and so the size of the arrow. The Color property specifies the color to show the entire link. The ShowDir property specifies whether the arrow of the link is shown or hidden. The Visible property indicates whether the link is visible or hidden. The ShowLinksWidth property specifies the width to show the incoming, outgoing or collapsed links.


Links object
The Links collection holds the links to be shown on the surface. The Links collection can be accessed throgh the control's Links property. The Links collection supports the following properties and methods:

Name | Description
Add | Adds a Link object to the collection and returns a reference to the newly created object.
Clear | Removes all objects in a collection.
Count | Returns the number of elements in the collection.
Item | Returns a specific Link of the Links collection, giving its identifier.
Remove | Removes a specific member from the Links collection, giving its identifier or reference.


method Add

method Links.Add (From as Element, To as Element, [ID as Variant])
Adds a Link object to the collection and returns a reference to the newly created object.

Type | Description
From as Element | An Element object where the link starts. The ElementFrom property of the Link indicates the element where the link starts.
To as Element | An Element object where the link ends. The ElementTo property of the Link indicates the element where the link ends.
ID as Variant | A Long, String or Numeric expression that indicates the unique identifier of the link. If missing, the control will automatically generate an unique identifier. The ID property specifies the link's identifier.
Return | Description
Link | A Link object being created.

.Use the Add method to programmatically add new link to the surface. The AddLink event notifies your application once a new link is added to the Links collection. Calling programmatically the Add method does NOT fire the CreateLink or AllowLink events. The Remove method removes a link from the surface. The Clear method clears all the links on the surface. The StartPos/EndPos properties indicates where on the starting element links starts and where on the ending elements the link ends. The ShowLinks property specifies whether the surface shows or hides the links. The OutgoingLinks property returns a safe array of outgoing links ( links that starts from the element ). The IncomingLinks property returns a safe array of incoming links ( links that ends on the element ). The AllowLinkObjects property specifies the combination of keys that allows the user to link the objects. The Arrange( ID ) method arranges the elements starting from element with the specified ID. If missing, all linked-elements are arranged.

The following screen shot shows the surface with different type of links:

The order of the events when the user links two elements at runtime is:

  • LayoutStartChanging(exLinkObjects), the user clicks on the surface
  • AllowLink, occurs to specify whether the link between two elements is possible.
  • AddLink, adds the new link to the Links collection
  • CreateLink, the user ends creating the link
  • LayoutEndChanging(exLinkObjects), the user un-clicks the surface

The following samples show how you can add programmatically a link:

VBA (MS Access, Excell...)

With SwimLane1
    With .Elements
        .Add "Element <sha ;;0>A"
        .Add "Element <sha ;;0>B",96,24
    End With
    With .Links
        .Add SwimLane1.Elements.item(1),SwimLane1.Elements.item(2)
    End With
End With

VB6

With SwimLane1
    With .Elements
        .Add "Element <sha ;;0>A"
        .Add "Element <sha ;;0>B",96,24
    End With
    With .Links
        .Add SwimLane1.Elements.item(1),SwimLane1.Elements.item(2)
    End With
End With

VB.NET

With Exswimlane1
    With .Elements
        .Add("Element <sha ;;0>A")
        .Add("Element <sha ;;0>B",96,24)
    End With
    With .Links
        .Add(Exswimlane1.Elements.get_item(1),Exswimlane1.Elements.get_item(2))
    End With
End With

VB.NET for /COM

With AxSwimLane1
    With .Elements
        .Add("Element <sha ;;0>A")
        .Add("Element <sha ;;0>B",96,24)
    End With
    With .Links
        .Add(AxSwimLane1.Elements.item(1),AxSwimLane1.Elements.item(2))
    End With
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
EXSWIMLANELib::IElementsPtr var_Elements = spSwimLane1->GetElements();
    var_Elements->Add("Element <sha ;;0>A",vtMissing,vtMissing);
    var_Elements->Add("Element <sha ;;0>B",long(96),long(24));
EXSWIMLANELib::ILinksPtr var_Links = spSwimLane1->GetLinks();
    var_Links->Add(spSwimLane1->GetElements()->Getitem(long(1)),spSwimLane1->GetElements()->Getitem(long(2)),vtMissing);

C++ Builder

Exswimlanelib_tlb::IElementsPtr var_Elements = SwimLane1->Elements;
    var_Elements->Add(TVariant("Element <sha ;;0>A"),TNoParam(),TNoParam());
    var_Elements->Add(TVariant("Element <sha ;;0>B"),TVariant(96),TVariant(24));
Exswimlanelib_tlb::ILinksPtr var_Links = SwimLane1->Links;
    var_Links->Add(SwimLane1->Elements->get_item(TVariant(1)),SwimLane1->Elements->get_item(TVariant(2)),TNoParam());

C#

exontrol.EXSWIMLANELib.Elements var_Elements = exswimlane1.Elements;
    var_Elements.Add("Element <sha ;;0>A",null,null);
    var_Elements.Add("Element <sha ;;0>B",96,24);
exontrol.EXSWIMLANELib.Links var_Links = exswimlane1.Links;
    var_Links.Add(exswimlane1.Elements[1],exswimlane1.Elements[2],null);

JavaScript

<OBJECT classid="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
    var var_Elements = SwimLane1.Elements;
        var_Elements.Add("Element <sha ;;0>A",null,null);
        var_Elements.Add("Element <sha ;;0>B",96,24);
    var var_Links = SwimLane1.Links;
        var_Links.Add(SwimLane1.Elements.item(1),SwimLane1.Elements.item(2),null);
</SCRIPT>

C# for /COM

EXSWIMLANELib.Elements var_Elements = axSwimLane1.Elements;
    var_Elements.Add("Element <sha ;;0>A",null,null);
    var_Elements.Add("Element <sha ;;0>B",96,24);
EXSWIMLANELib.Links var_Links = axSwimLane1.Links;
    var_Links.Add(axSwimLane1.Elements[1],axSwimLane1.Elements[2],null);

X++ (Dynamics Ax 2009)

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

    super();

    var_Elements = exswimlane1.Elements(); com_Elements = var_Elements;
        com_Elements.Add("Element <sha ;;0>A");
        com_Elements.Add("Element <sha ;;0>B",COMVariant::createFromInt(96),COMVariant::createFromInt(24));
    var_Links = exswimlane1.Links(); com_Links = var_Links;
        com_Links.Add(COM::createFromObject(exswimlane1.Elements()).item(COMVariant::createFromInt(1)),COM::createFromObject(exswimlane1.Elements()).item(COMVariant::createFromInt(2)));
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    with Elements do
    begin
        Add('Element <sha ;;0>A',Nil,Nil);
        Add('Element <sha ;;0>B',TObject(96),TObject(24));
    end;
    with Links do
    begin
        Add(AxSwimLane1.Elements.item[TObject(1)],AxSwimLane1.Elements.item[TObject(2)],Nil);
    end;
end

Delphi (standard)

with SwimLane1 do
begin
    with Elements do
    begin
        Add('Element <sha ;;0>A',Null,Null);
        Add('Element <sha ;;0>B',OleVariant(96),OleVariant(24));
    end;
    with Links do
    begin
        Add(SwimLane1.Elements.item[OleVariant(1)],SwimLane1.Elements.item[OleVariant(2)],Null);
    end;
end

VFP

with thisform.SwimLane1
    with .Elements
        .Add("Element <sha ;;0>A")
        .Add("Element <sha ;;0>B",96,24)
    endwith
    with .Links
        .Add(thisform.SwimLane1.Elements.item(1),thisform.SwimLane1.Elements.item(2))
    endwith
endwith

dBASE Plus

local oSwimLane,var_Elements,var_Links

oSwimLane = form.Activex1.nativeObject
var_Elements = oSwimLane.Elements
    var_Elements.Add("Element <sha ;;0>A")
    var_Elements.Add("Element <sha ;;0>B",96,24)
var_Links = oSwimLane.Links
    var_Links.Add(oSwimLane.Elements.item(1),oSwimLane.Elements.item(2))

XBasic (Alpha Five)

Dim oSwimLane as P
Dim var_Elements as P
Dim var_Links as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
var_Elements = oSwimLane.Elements
    var_Elements.Add("Element <sha ;;0>A")
    var_Elements.Add("Element <sha ;;0>B",96,24)
var_Links = oSwimLane.Links
    var_Links.Add(oSwimLane.Elements.item(1),oSwimLane.Elements.item(2))

Visual Objects

local var_Elements as IElements
local var_Links as ILinks

var_Elements := oDCOCX_Exontrol1:Elements
    var_Elements:Add("Element <sha ;;0>A",nil,nil)
    var_Elements:Add("Element <sha ;;0>B",96,24)
var_Links := oDCOCX_Exontrol1:Links
    var_Links:Add(oDCOCX_Exontrol1:Elements:[item,1],oDCOCX_Exontrol1:Elements:[item,2],nil)

PowerBuilder

OleObject oSwimLane,var_Elements,var_Links

oSwimLane = ole_1.Object
var_Elements = oSwimLane.Elements
    var_Elements.Add("Element <sha ;;0>A")
    var_Elements.Add("Element <sha ;;0>B",96,24)
var_Links = oSwimLane.Links
    var_Links.Add(oSwimLane.Elements.item(1),oSwimLane.Elements.item(2))

Visual DataFlex

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
        Get ComAdd of hoElements "Element <sha ;;0>A" Nothing Nothing to Nothing
        Get ComAdd of hoElements "Element <sha ;;0>B" 96 24 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 Nothing to Nothing
    Send Destroy to hoLinks
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oElements
    LOCAL oLinks
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oElements := oSwimLane:Elements()
            oElements:Add("Element <sha ;;0>A")
            oElements:Add("Element <sha ;;0>B",96,24)
        oLinks := oSwimLane:Links()
            oLinks:Add(oSwimLane:Elements:item(1),oSwimLane:Elements:item(2))

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


method Clear

method Links.Clear ()
Removes all objects in a collection.

Type Description
Use the Clear method to remove all links from the surface. The Remove method removes a specific link from the Links collection. The IncomingLinks property returns a safe array of incoming links ( links that ends on the element ). The OutgoingLinks property returns a safe array of outgoing links ( links that starts from the element ). The RemoveLink event notifies your application once a link has been removed from the Links collection. The ShowLinks property specifies whether the surface shows or hides the links.


property Count

property Links.Count as Long
Returns the number of elements in the collection.

Type | Description
Long | A Long expression that specifies the number of links on the surface.
The Count property specifies the number of links on the surface. Use the Add method to programmatically add new link to the surface. The Remove method removes a link from the surface. The Clear method clears all the links on the surface. The StartPos/EndPos properties indicates where on the starting element links starts and where on the ending elements the link ends. The ShowLinks property specifies whether the surface shows or hides the links. The OutgoingLinks property returns a safe array of outgoing links ( links that starts from the element ). The IncomingLinks property returns a safe array of incoming links ( links that ends on the element ).

The following VB sample enumerates the links on the surface:

Dim l As Variant
For Each l In SwimLane1.Links
    Debug.Print l.ID
Next


property Item

property Links.Item (ID as Variant) as Link
Returns a specific Link of the Links collection, giving its identifier.

Type | Description
ID as Variant | A Long, String or Numeric expression that specifies the identifier of the link to be requested.
Link | A Link object being requested.
Use the Item property to access a link giving its identifier. The ID property of the Link specifies the identifier of the link. The Count property specifies the number of links on the surface. Use the Add method to programmatically add new link to the surface. The Remove method removes a link from the surface. The Clear method clears all the links on the surface.

The following VB sample enumerates the links on the surface:

Dim l As Variant
For Each l In SwimLane1.Links
    Debug.Print l.ID
Next


method Remove

method Links.Remove (ID as Variant)
Removes a specific member from the Links collection, giving its identifier or reference.

Type | Description
ID as Variant | A Long, String or Numeric expression that specifies the identifier of the link to be removed, or a reference to the Link object to e removed.
The Remove method removes a specific link from the Links collection. Use the Clear method to remove all links from the surface. The IncomingLinks property returns a safe array of incoming links ( links that ends on the element ). The OutgoingLinks property returns a safe array of outgoing links ( links that starts from the element ). The RemoveLink event notifies your application once a link has been removed from the Links collection. The Visible property shows or hides a specific link.


OleEvent object

The OleEvent object holds information about an event fired by an ActiveX control hosted by the element.

Name | Description
CountParam | Retrieves the count of the OLE element's arguments.
ID | Retrieves a long expression that specifies the identifier of the event.
Name | Retrieves the original name of the fired event.
Param | Retrieves an OleEventParam object given either the index of the parameter, or its name.
ToString | Retrieves information about the event.


property CountParam

property OleEvent.CountParam as Long

Retrieves the count of the OLE event's arguments.

Type | Description
Long | A long value that indicates the count of the arguments.
Use the CountParam property to count the parameters of an OLE event. Use the Name property to get the parameter name. Use the Param property to get the event's parameter. Use the Value property to specify the value of the parameter. The following VB sample enumerates the arguments of an OLE event when OleEvent event is fired.
Private Sub SwimLane1_OleEvent(ByVal Element As EXSWIMLANELibCtl.IElement, ByVal Ev As EXSWIMLANELibCtl.IOleEvent)
   Debug.Print "Event name:" & Ev.Name
   If (Ev.CountParam = 0) Then
      Debug.Print "The event has no arguments."
   Else
      Debug.Print "The event has the following arguments:"
      Dim i As Long
      For i = 0 To Ev.CountParam - 1
         Debug.Print Ev(i).Name; " = " & Ev(i).Value
      Next
   End If
End Sub

The following VC sample displays the events that an ActiveX control is firing while it is hosted by an element:

 #import <exswimlane.dll>

static CString V2S( VARIANT* pv, LPCTSTR szDefault = _T("") )
{
    if ( pv )
    {
        if ( pv->vt == VT_ERROR )
            return szDefault;

        COleVariant vt;
        vt.ChangeType( VT_BSTR, pv );
        return V_BSTR( &vt );
    }
    return szDefault;
}

void OnOleEventSwimLane1(LPDISPATCH Element, LPDISPATCH Ev)
{
    EXSWIMLANELib::IOleEventPtr spEvent( Ev );
    CString strOutput;
    strOutput.Format( "Event's name: %s\n", spEvent->Name.operator const char *() );
    OutputDebugString( strOutput );
    if ( spEvent->CountParam == 0 )
        OutputDebugString( "The event has no parameters." );
    else
    {
        for ( long i = 0; i < spEvent->CountParam; i++ )
        {
            EXSWIMLANELib::IOleEventParamPtr spParam = spEvent->GetParam( COleVariant( i ) );
            strOutput.Format( "Name: %s, Value: %s\n", spParam->Name.operator const char *(), V2S( &spParam->Value ) );
            OutputDebugString( strOutput );
        }
    }
    OutputDebugString( "" );
}

The #import clause is required to get the wrapper classes for IOleEvent and IOleEventParam objects, that are not defined by the MFC class wizard. The same #import statement defines the EXSWIMLANELib namespace that include all objects and types of the control's TypeLibrary. In case your exswimlane.dll library is located to another place than the system folder or well known path, the path to the library should be provided, in order to let the VC finds the type library.

The following VB.NET sample displays the events that an ActiveX control is firing while it is hosted by an element:

Private Sub AxSwimLane1_OleEvent(ByVal sender As Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OleEventEvent) Handles AxSwimLane1.OleEvent
    Debug.WriteLine("Event's name: " & e.ev.Name)
    Dim i As Long
    For i = 0 To e.ev.CountParam - 1
        Dim eP As EXSWIMLANELib.OleEventParam
        eP = e.ev(i)
        Debug.WriteLine("Name: " & e.ev.Name & " Value: " & eP.Value)
    Next
End Sub

The following C# sample displays the events that an ActiveX control is firing while it is hosted by an element:

private void AxSwimLane1_OleEvent(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OleEventEvent e)
{
    System.Diagnostics.Debug.WriteLine( "Event's name: " + e.ev.Name.ToString() );
    for ( int i= 0; i < e.ev.CountParam ; i++ )
    {
        EXSWIMLANELib.IOleEventParam evP = e.ev[i];
        System.Diagnostics.Debug.WriteLine( "Name: " + evP.Name.ToString() + ", Value: " + evP.Value.ToString() );
    }
}

The following VFP sample displays the events that an ActiveX control fires when it is hosted by an element ( OleEvent event ):

*** ActiveX Control Event ***
LPARAMETERS item, ev

local s
s = "Event's name: " + ev.Name
for i = 0 to ev.CountParam - 1
        s = s +  "Name: " + ev.Param(i).Name + " ,Value: " + Str(ev.Param(i).Value)
endfor
wait window nowait s


property ID

property OleEvent.ID as Long
Retrieves a long expression that specifies the identifier of the event.

Type | Description
Long | A Long expression that defines the identifier of the OLE event.
The identifier of the event could be used to identify a specified OLE event. Use the Name property of the OLE Event to get the name of the OLE Event. Use the ToString property to display information about an OLE event. The ToString property displays the idenfier of the event after the name of the event in two [] brackets. For instance, the ToString property gets the "KeyDown[-602](KeyCode/Short* = 9,Shift/Short = 0)" when TAB key is pressed, so the identifier of the KeyDown event being fired by the inside control is -602.


property Name

property OleEvent.Name as String

Retrieves the original name of the fired event.

Type | Description
String | A string expression that indicates the event's name.
Use the Name property to get the name of the event. Use the ID property to specify a specified even by its identifier. Use the ToString property to display information about fired event such us name, parameters, types and values. Use the CountParam property to count the parameters of an OLE event. Use the Param property to get the event's parameter. Use the Value property to specify the value of the parameter. The following VB sample enumerates the arguments of an OLE event when OleEvent event is fired.
Private Sub SwimLane1_OleEvent(ByVal Element As EXSWIMLANELibCtl.IElement, ByVal Ev As EXSWIMLANELibCtl.IOleEvent)
   Debug.Print "Event name:" & Ev.Name
   If (Ev.CountParam = 0) Then
      Debug.Print "The event has no arguments."
   Else
      Debug.Print "The event has the following arguments:"
      Dim i As Long
      For i = 0 To Ev.CountParam - 1
         Debug.Print Ev(i).Name; " = " & Ev(i).Value
      Next
   End If
End Sub

The following VC sample displays the events that an ActiveX control is firing while it is hosted by an element:

 #import <exswimlane.dll>

static CString V2S( VARIANT* pv, LPCTSTR szDefault = _T("") )
{
    if ( pv )
    {
        if ( pv->vt == VT_ERROR )
            return szDefault;

        COleVariant vt;
        vt.ChangeType( VT_BSTR, pv );
        return V_BSTR( &vt );
    }
    return szDefault;
}

void OnOleEventSwimLane1(LPDISPATCH Element, LPDISPATCH Ev)
{
    EXSWIMLANELib::IOleEventPtr spEvent( Ev );
    CString strOutput;
    strOutput.Format( "Event's name: %s\n", spEvent->Name.operator const char *() );
    OutputDebugString( strOutput );
    if ( spEvent->CountParam == 0 )
        OutputDebugString( "The event has no parameters." );
    else
    {
        for ( long i = 0; i < spEvent->CountParam; i++ )
        {
            EXSWIMLANELib::IOleEventParamPtr spParam = spEvent->GetParam( COleVariant( i ) );
            strOutput.Format( "Name: %s, Value: %s\n", spParam->Name.operator const char *(), V2S( &spParam->Value ) );
            OutputDebugString( strOutput );
        }
    }
    OutputDebugString( "" );
}

The #import clause is required to get the wrapper classes for IOleEvent and IOleEventParam objects, that are not defined by the MFC class wizard. The same #import statement defines the EXSWIMLANELib namespace that include all objects and types of the control's TypeLibrary. In case your exswimlane.dll library is located to another place than the system folder or well known path, the path to the library should be provided, in order to let the VC finds the type library.

The following VB.NET sample displays the events that an ActiveX control is firing while it is hosted by an element:

Private Sub AxSwimLane1_OleEvent(ByVal sender As Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OleEventEvent) Handles AxSwimLane1.OleEvent
    Debug.WriteLine("Event's name: " & e.ev.Name)
    Dim i As Long
    For i = 0 To e.ev.CountParam - 1
        Dim eP As EXSWIMLANELib.OleEventParam
        eP = e.ev(i)
        Debug.WriteLine("Name: " & e.ev.Name & " Value: " & eP.Value)
    Next
End Sub

The following C# sample displays the events that an ActiveX control is firing while it is hosted by an element:

private void AxSwimLane1_OleEvent(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OleEventEvent e)
{
    System.Diagnostics.Debug.WriteLine( "Event's name: " + e.ev.Name.ToString() );
    for ( int i= 0; i < e.ev.CountParam ; i++ )
    {
        EXSWIMLANELib.IOleEventParam evP = e.ev[i];
        System.Diagnostics.Debug.WriteLine( "Name: " + evP.Name.ToString() + ", Value: " + evP.Value.ToString() );
    }
}

The following VFP sample displays the events that an ActiveX control fires when it is hosted by an element ( OleEvent event ):

*** ActiveX Control Event ***
LPARAMETERS item, ev

local s
s = "Event's name: " + ev.Name
for i = 0 to ev.CountParam - 1
        s = s +  "Name: " + ev.Param(i).Name + " ,Value: " + Str(ev.Param(i).Value)
endfor
wait window nowait s


property Param

property OleEvent.Param (Item as Variant) as OleEventParam

Retrieves an OleEventParam object given either the index of the parameter, or its name.

Type | Description
Item as Variant | A long expression that indicates the argument's index or a a string expression that indicates the argument's name.
OleEventParam | An OleEventParam object that contains the name and the value for the argument.
Use the CountParam property to count the parameters of an OLE event. Use the Name property to get the parameter name. Use the Param property to get the event's parameter. Use the Value property to specify the value of the parameter. The following VB sample enumerates the arguments of an OLE event when OleEvent event is fired.
Private Sub SwimLane1_OleEvent(ByVal Element As EXSWIMLANELibCtl.IElement, ByVal Ev As EXSWIMLANELibCtl.IOleEvent)
   Debug.Print "Event name:" & Ev.Name
   If (Ev.CountParam = 0) Then
      Debug.Print "The event has no arguments."
   Else
      Debug.Print "The event has the following arguments:"
      Dim i As Long
      For i = 0 To Ev.CountParam - 1
         Debug.Print Ev(i).Name; " = " & Ev(i).Value
      Next
   End If
End Sub

The following VC sample displays the events that an ActiveX control is firing while it is hosted by an element:

 #import <exswimlane.dll>

static CString V2S( VARIANT* pv, LPCTSTR szDefault = _T("") )
{
    if ( pv )
    {
        if ( pv->vt == VT_ERROR )
            return szDefault;

        COleVariant vt;
        vt.ChangeType( VT_BSTR, pv );
        return V_BSTR( &vt );
    }
    return szDefault;
}

void OnOleEventSwimLane1(LPDISPATCH Element, LPDISPATCH Ev)
{
    EXSWIMLANELib::IOleEventPtr spEvent( Ev );
    CString strOutput;
    strOutput.Format( "Event's name: %s\n", spEvent->Name.operator const char *() );
    OutputDebugString( strOutput );
    if ( spEvent->CountParam == 0 )
        OutputDebugString( "The event has no parameters." );
    else
    {
        for ( long i = 0; i < spEvent->CountParam; i++ )
        {
            EXSWIMLANELib::IOleEventParamPtr spParam = spEvent->GetParam( COleVariant( i ) );
            strOutput.Format( "Name: %s, Value: %s\n", spParam->Name.operator const char *(), V2S( &spParam->Value ) );
            OutputDebugString( strOutput );
        }
    }
    OutputDebugString( "" );
}

The #import clause is required to get the wrapper classes for IOleEvent and IOleEventParam objects, that are not defined by the MFC class wizard. The same #import statement defines the EXSWIMLANELib namespace that include all objects and types of the control's TypeLibrary. In case your exswimlane.dll library is located to another place than the system folder or well known path, the path to the library should be provided, in order to let the VC finds the type library.

The following VB.NET sample displays the events that an ActiveX control is firing while it is hosted by an element:

Private Sub AxSwimLane1_OleEvent(ByVal sender As Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OleEventEvent) Handles AxSwimLane1.OleEvent
    Debug.WriteLine("Event's name: " & e.ev.Name)
    Dim i As Long
    For i = 0 To e.ev.CountParam - 1
        Dim eP As EXSWIMLANELib.OleEventParam
        eP = e.ev(i)
        Debug.WriteLine("Name: " & e.ev.Name & " Value: " & eP.Value)
    Next
End Sub

The following C# sample displays the events that an ActiveX control is firing while it is hosted by an element:

private void AxSwimLane1_OleEvent(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OleEventEvent e)
{
    System.Diagnostics.Debug.WriteLine( "Event's name: " + e.ev.Name.ToString() );
    for ( int i= 0; i < e.ev.CountParam ; i++ )
    {
        EXSWIMLANELib.IOleEventParam evP = e.ev[i];
        System.Diagnostics.Debug.WriteLine( "Name: " + evP.Name.ToString() + ", Value: " + evP.Value.ToString() );
    }
}

The following VFP sample displays the events that an ActiveX control fires when it is hosted by an element ( OleEvent event ):

*** ActiveX Control Event ***
LPARAMETERS item, ev

local s
s = "Event's name: " + ev.Name
for i = 0 to ev.CountParam - 1
        s = s +  "Name: " + ev.Param(i).Name + " ,Value: " + Str(ev.Param(i).Value)
endfor
wait window nowait s


property ToString

property OleEvent.ToString as String
Retrieves information about the event.

Type | Description
String | A String expression that shows information about an OLE event. The ToString property gets the information as follows: Name[ID] (Param/Type = Value, Param/Type = Value, ... ). For instance, "KeyDown[-602](KeyCode/Short* = 9,Shift/Short = 0)" indicates that the KeyDown event is fired, with the identifier -602 with two parameters KeyCode as a reference to a short type with the value 8, and Shift parameter as Short type with the value 0.
Use the ToString property to display information about fired event such us name, parameters, types and values. Using the ToString property you can quickly identifies the event that you should handle in your application. Use the ID property to specify a specified even by its identifier. Use the Name property to get the name of the event. Use the Param property to access a specified parameter using its index or its name.

Displaying ToString property during the OLE Event event may show data like follows:

MouseMove[-606](Button/Short = 0,Shift/Short = 0,X/Long = 46,Y/Long = 15)
MouseDown[-605](Button/Short = 1,Shift/Short = 0,X/Long = 46,Y/Long = 15)
KeyDown[-602](KeyCode/Short* = 83,Shift/Short = 0)
KeyPress[-603](KeyAscii/Short* = 115)
Change[2]()
KeyUp[-604](KeyCode/Short* = 83,Shift/Short = 0)
MouseUp[-607](Button/Short = 1,Shift/Short = 0,X/Long = 46,Y/Long = 15)
MouseMove[-606](Button/Short = 0,Shift/Short = 0,X/Long = 46,Y/Long = 15)


OleEventParam object

The OleEventParam holds the name and the value for an event's argument.

Name | Description
Name | Retrieves the name of the element's parameter.
Value | Retrieves the value of the element's parameter.


property Name

property OleEventParam.Name as String

Retrieves the name of the event's parameter.

Type | Description
String | A string expression that indicates the name of the event's parameter.
Use the CountParam property to count the parameters of an OLE event. Use the Name property to get the parameter name. Use the Param property to get the event's parameter. Use the Value property to specify the value of the parameter. The following VB sample enumerates the arguments of an OLE event when OleEvent event is fired.
Private Sub SwimLane1_OleEvent(ByVal Element As EXSWIMLANELibCtl.IElement, ByVal Ev As EXSWIMLANELibCtl.IOleEvent)
   Debug.Print "Event name:" & Ev.Name
   If (Ev.CountParam = 0) Then
      Debug.Print "The event has no arguments."
   Else
      Debug.Print "The event has the following arguments:"
      Dim i As Long
      For i = 0 To Ev.CountParam - 1
         Debug.Print Ev(i).Name; " = " & Ev(i).Value
      Next
   End If
End Sub

The following VC sample displays the events that an ActiveX control is firing while it is hosted by an element:

 #import <exswimlane.dll>

static CString V2S( VARIANT* pv, LPCTSTR szDefault = _T("") )
{
    if ( pv )
    {
        if ( pv->vt == VT_ERROR )
            return szDefault;

        COleVariant vt;
        vt.ChangeType( VT_BSTR, pv );
        return V_BSTR( &vt );
    }
    return szDefault;
}

void OnOleEventSwimLane1(LPDISPATCH Element, LPDISPATCH Ev)
{
    EXSWIMLANELib::IOleEventPtr spEvent( Ev );
    CString strOutput;
    strOutput.Format( "Event's name: %s\n", spEvent->Name.operator const char *() );
    OutputDebugString( strOutput );
    if ( spEvent->CountParam == 0 )
        OutputDebugString( "The event has no parameters." );
    else
    {
        for ( long i = 0; i < spEvent->CountParam; i++ )
        {
            EXSWIMLANELib::IOleEventParamPtr spParam = spEvent->GetParam( COleVariant( i ) );
            strOutput.Format( "Name: %s, Value: %s\n", spParam->Name.operator const char *(), V2S( &spParam->Value ) );
            OutputDebugString( strOutput );
        }
    }
    OutputDebugString( "" );
}

The #import clause is required to get the wrapper classes for IOleEvent and IOleEventParam objects, that are not defined by the MFC class wizard. The same #import statement defines the EXSWIMLANELib namespace that include all objects and types of the control's TypeLibrary. In case your exswimlane.dll library is located to another place than the system folder or well known path, the path to the library should be provided, in order to let the VC finds the type library.

The following VB.NET sample displays the events that an ActiveX control is firing while it is hosted by an element:

Private Sub AxSwimLane1_OleEvent(ByVal sender As Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OleEventEvent) Handles AxSwimLane1.OleEvent
    Debug.WriteLine("Event's name: " & e.ev.Name)
    Dim i As Long
    For i = 0 To e.ev.CountParam - 1
        Dim eP As EXSWIMLANELib.OleEventParam
        eP = e.ev(i)
        Debug.WriteLine("Name: " & e.ev.Name & " Value: " & eP.Value)
    Next
End Sub

The following C# sample displays the events that an ActiveX control is firing while it is hosted by an element:

private void AxSwimLane1_OleEvent(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OleEventEvent e)
{
    System.Diagnostics.Debug.WriteLine( "Event's name: " + e.ev.Name.ToString() );
    for ( int i= 0; i < e.ev.CountParam ; i++ )
    {
        EXSWIMLANELib.IOleEventParam evP = e.ev[i];
        System.Diagnostics.Debug.WriteLine( "Name: " + evP.Name.ToString() + ", Value: " + evP.Value.ToString() );
    }
}

The following VFP sample displays the events that an ActiveX control fires when it is hosted by an element ( OleEvent event ):

*** ActiveX Control Event ***
LPARAMETERS item, ev

local s
s = "Event's name: " + ev.Name
for i = 0 to ev.CountParam - 1
        s = s +  "Name: " + ev.Param(i).Name + " ,Value: " + Str(ev.Param(i).Value)
endfor
wait window nowait s


property Value

property OleEventParam.Value as Variant

Specifies the value of the event's parameter.

Type | Description
Variant | A variant value that indicates the value of the event's parameter.
Use the CountParam property to count the parameters of an OLE event. Use the Name property to get the parameter name. Use the Param property to get the event's parameter. Use the Value property to specify the value of the parameter. The following VB sample enumerates the arguments of an OLE event when OleEvent event is fired.
Private Sub SwimLane1_OleEvent(ByVal Element As EXSWIMLANELibCtl.IElement, ByVal Ev As EXSWIMLANELibCtl.IOleEvent)
   Debug.Print "Event name:" & Ev.Name
   If (Ev.CountParam = 0) Then
      Debug.Print "The event has no arguments."
   Else
      Debug.Print "The event has the following arguments:"
      Dim i As Long
      For i = 0 To Ev.CountParam - 1
         Debug.Print Ev(i).Name; " = " & Ev(i).Value
      Next
   End If
End Sub

The following VC sample displays the events that an ActiveX control is firing while it is hosted by an element:

 #import <exswimlane.dll>

static CString V2S( VARIANT* pv, LPCTSTR szDefault = _T("") )
{
    if ( pv )
    {
        if ( pv->vt == VT_ERROR )
            return szDefault;

        COleVariant vt;
        vt.ChangeType( VT_BSTR, pv );
        return V_BSTR( &vt );
    }
    return szDefault;
}

void OnOleEventSwimLane1(LPDISPATCH Element, LPDISPATCH Ev)
{
    EXSWIMLANELib::IOleEventPtr spEvent( Ev );
    CString strOutput;
    strOutput.Format( "Event's name: %s\n", spEvent->Name.operator const char *() );
    OutputDebugString( strOutput );
    if ( spEvent->CountParam == 0 )
        OutputDebugString( "The event has no parameters." );
    else
    {
        for ( long i = 0; i < spEvent->CountParam; i++ )
        {
            EXSWIMLANELib::IOleEventParamPtr spParam = spEvent->GetParam( COleVariant( i ) );
            strOutput.Format( "Name: %s, Value: %s\n", spParam->Name.operator const char *(), V2S( &spParam->Value ) );
            OutputDebugString( strOutput );
        }
    }
    OutputDebugString( "" );
}

The #import clause is required to get the wrapper classes for IOleEvent and IOleEventParam objects, that are not defined by the MFC class wizard. The same #import statement defines the EXSWIMLANELib namespace that include all objects and types of the control's TypeLibrary. In case your exswimlane.dll library is located to another place than the system folder or well known path, the path to the library should be provided, in order to let the VC finds the type library.

The following VB.NET sample displays the events that an ActiveX control is firing while it is hosted by an element:

Private Sub AxSwimLane1_OleEvent(ByVal sender As Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OleEventEvent) Handles AxSwimLane1.OleEvent
    Debug.WriteLine("Event's name: " & e.ev.Name)
    Dim i As Long
    For i = 0 To e.ev.CountParam - 1
        Dim eP As EXSWIMLANELib.OleEventParam
        eP = e.ev(i)
        Debug.WriteLine("Name: " & e.ev.Name & " Value: " & eP.Value)
    Next
End Sub

The following C# sample displays the events that an ActiveX control is firing while it is hosted by an element:

private void AxSwimLane1_OleEvent(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OleEventEvent e)
{
    System.Diagnostics.Debug.WriteLine( "Event's name: " + e.ev.Name.ToString() );
    for ( int i= 0; i < e.ev.CountParam ; i++ )
    {
        EXSWIMLANELib.IOleEventParam evP = e.ev[i];
        System.Diagnostics.Debug.WriteLine( "Name: " + evP.Name.ToString() + ", Value: " + evP.Value.ToString() );
    }
}

The following VFP sample displays the events that an ActiveX control fires when it is hosted by an element ( OleEvent event ):

*** ActiveX Control Event ***
LPARAMETERS item, ev

local s
s = "Event's name: " + ev.Name
for i = 0 to ev.CountParam - 1
        s = s +  "Name: " + ev.Param(i).Name + " ,Value: " + Str(ev.Param(i).Value)
endfor
wait window nowait s


Pattern object
The Pattern object can be used to apply a pattern and a frame with different colors on an UI element. For instance, the Pattern property indicates the pattern to be applied on the lane itself. The Pattern object supports the following properties:

Name | Description
Color | Specifies the pattern color.
FrameColor | Specifies the pattern's frame color.
Type | Retrieves or sets a value that indicates the pattern to fill the element.


property Color

property Pattern.Color as Color
Specifies the pattern color.

Type | Description
Color | A Color expression that specifies the color to show the pattern.
By default, the Color property is 0 ( black ). The Color property indicates the color to display the pattern. The Type property indicates the type of the pattern to be shown. The FrameColor property indicates the color to show the frame, if the exPatternFrame flag is included in the Type property.


property FrameColor

property Pattern.FrameColor as Color
Specifies the pattern's frame color.

Type | Description
Color | A Color expression that specifies the color to show the frame.
By default, the FrameColor property is 0 ( black ). The FrameColor property indicates the color to show the frame, if the exPatternFrame flag is included in the Type property. The Type property indicates the type of the pattern to be shown. The Color property indicates the color to display the pattern.


property Type

property Pattern.Type as PatternEnum
Retrieves or sets a value that indicates the pattern to fill the element.

Type | Description
PatternEnum | A PatternEnum expression that specifies the type of the pattern to fill the element.
By default, the Type property is exPatternEmpty which indicates that no pattern is shown. The Type property indicates the pattern to display on the element. The Color property indicates the color to display the pattern. The FrameColor property indicates the color to show the frame, if the exPatternFrame flag is included in the Type property.


Pool object
The Pool object refers a pool on the surface. A pool may display horizontal or/and vertical lanes. The Lane property accesses the horizontal or vertical lanes

The following screen shot marks the pool itself:

The Pool object supports the following properties and methods:

Name | Description
AllowHeaderExt | Specifies how the corners of the pool are combined with the headers of the pool.
Border | Specifies the style to display the pool's border.
BorderColor | Gets or sets a value that indicates the pool's border color.
Color | Gets or sets a value that indicates the pool's background color.
EndUpdatePool | Adds programmatically updated properties of the pool to undo/redo queue.
EnsureVisible | Scrolls the surface to ensure that the current pool fits the control's visible area.
ExtendPoolOnHeaderExtend | Specifies whether the pool extends its size, when its header get resized.
FitToClient | Resizes or/and moves the entire chart to fit the pool.
HeaderBorder | Specifies the style to display the header's border.
HeaderBorderColor | Gets or sets a value that indicates the header's border color.
HeaderCaptionSupportRotate | Returns or sets a value that indicates whether the header displays its caption with a different orientation.
HeaderColor | Gets or sets a value that indicates the header's background color.
HeaderPattern | Specifies the pattern to be shown on the header's background.
HeaderSize | Specifies the size of the pool's header.
HeaderVisible | Specifies whether the pool's header is visible or hidden.
Height | Specifies the height of the pool.
ID | Specifies the pool's identifier.
InvokeContextMenu | Invokes programmatically the pool's default or customized context menu, and returns the identifier of the selected item.
Lane | Retrieves the horizontal/vertical lane of the pool.
LaneResizeType | Specifies the way the lanes get resized, when its parent/pool gets resized.
MaxHeight | Specifies the maximum height of the pool.
MaxWidth | Specifies the maximum width of the pool.
MinHeight | Specifies the minimum height of the pool.
MinWidth | Specifies the minimum width of the pool.
MoveTo | Moves the pool to a new position.
Pattern | Specifies the pattern to be shown on the pool's background.
Position | Specifies the pool's position.
StartUpdatePool | Starts changing properties of the pool, so EndUpdatePool method adds programmatically updated properties to undo/redo queue.
UserData | Indicates any extra data associated with the pool.
Width | Specifies the width of the pool.
X | Specifies the pool's x-position.
Y | Specifies the pool's y-position.


property AllowHeaderExt

property Pool.AllowHeaderExt as HeaderExtEnum
Specifies how the corners of the pool are combined with the headers of the pool.

Type | Description
HeaderExtEnum | A HeaderExtEnum expression that specifies how the corners of the pool are combined with the headers of the pool.
By default, the AllowHeaderExt property is exHeaderExtUndefined, which indicates that the AllowHeaderExt property of the control specifies how the corners of the pool are combined with the headers of the pool. The HeaderColor(exHeaderVertical) property specifies the background color/visual appearance of the vertical header for the giving pool. The HeaderColor(exHeaderHorizontal) property specifies the background color/visual appearance of the horizontal header for the giving pool. The Background(exPoolHorizontalHeaderBackColor) property specifies the background color / visual appearance of the top/bottom header of the pool. The Background(exPoolVerticalHeaderBackColor) property specifies the background color / visual appearance of the left/right header of the pool.

The following screen shot shows how the header is displayed if the AllowHeaderExt property is exCornerEmpty:

The following screen shot shows how the header is displayed if the AllowHeaderExt property is exCornerTopLeftExtHeaderTop Or exCornerTopRightExtHeaderTop Or exCornerBottomLeftExtHeaderBottom Or exCornerBottomRightExtHeaderBottom ( default ):

The following screen shot shows how the header is displayed if the AllowHeaderExt property is exCornerBottomLeftExtHeaderLeft Or exCornerBottomRightExtHeaderRight Or exCornerTopRightExtHeaderRight Or exCornerTopLeftExtHeaderLeft:

The following screen shot shows how the header is displayed if the AllowHeaderExt property is exCornerBottomLeftExtHeaderLeft Or exCornerBottomRightExtHeaderBottom Or exCornerTopRightExtHeaderRight Or exCornerTopLeftExtHeaderTop:


property Border

property Pool.Border as LinesStyleEnum
Specifies the style to display the pool's border.

Type | Description
LinesStyleEnum | A LinesStyleEnum expression that specifies the style of border to show around the pool.
By default, the Border property is exLinesInvalid. The Border property specifies the style to display the pool's border. The Background(exPoolBorder) property defines the border for all pools on the surface, while the Border property is exLinesInvalid. The BorderColor property specifies the color to show the pool's border. The HeaderBorder property specifies the style of the border to show on pool's header. The Color property specifies the visual appearance/ background color of the pool. The Pattern property specifies the pattern/frame to be shown on the pool's background.

The following screen shot shows the pool's border in red:


property BorderColor

property Pool.BorderColor as Color
Gets or sets a value that indicates the pool's border color.

Type | Description
Color | A Color expression that specifies the color to show the pool's border.
By default, the BorderColor property is -1 ( transparent). The BorderColor property specifies the color to show the pool's border. The Background(exPoolBorderColor) property defines the color for border for all pools on the surface, while BorderColor property is -1. The Border property specifies the style to display the pool's border. The Color property specifies the visual appearance/ background color of the pool. The Pattern property specifies the pattern/frame to be shown on the pool's background.

The following screen shot shows the pool's border in red:


property Color

property Pool.Color as Color
Gets or sets a value that indicates the pool's background color.

Type | Description
Color | A Color expression that specifies the color to show pool's background. The last 7 bits in the high significant byte of the color indicates the identifier of the skin being used to paint the part. Use the Add method to add new skins to the control. The -1 indicates that the pool's background is transparent.
By default, the Color property is -1 (transparent). The Color property gets or sets a value that indicates the pool's background color. The Color property specifies the visual appearance / background color of the lane itself. The Color property of the Header gets or sets a value that indicates the header's background color. The Background(exPoolBackColor) property defines the visual appearance (EBN) or background color for all pools on the surface, while the Color property is -1. The Pattern property specifies the pattern/frame to be shown on the pool's background. The HeaderColor property specifies the visual appearance / background color of the pool's header.

The following screen shot shows the pool with a different visual appearance ( EBN object ):


method EndUpdatePool

method Pool.EndUpdatePool (StartUpdatePool as Long)
Adds programmatically updated properties of the pool to undo/redo queue.

Type | Description
StartUpdatePool as Long | A long expression that specifies the handle being returned by the StartUpdatePool property
The StartUpdatePool/EndUpdatePool methods record and add changes of the current pool to the control's Undo/Redo queue. You can use the StartBlockUndoRedo / End BlockUndoRedo methods to group multiple Undo/Redo operations into a single-block. The AllowUndoRedo property specifies whether the control supports undo/redo operations for objects (pools, links, ...). No entry is added to the Undo/Redo queue if no property is changed for the current pool. Each call of the StartUpdatePool must be succeeded by a EndUpdatePool call. The UndoListAction property lists the Undo actions that can be performed in the chart. The RedoListAction property lists the Redo actions that can be performed in the chart.

The StartUpdatePool/EndUpdatePool methods can record changes for the following properties:

  • X, specifies the pool's x-position
  • Y, specifies the pool's y-position
  • Width, specifies the width of the pool
  • Height, specifies the height of the pool
  • ID, defines the pool's unique identifier
  • Position, defines the position of the pool
  • Color, defines the pool's background color
  • Border, defines the style to display the pool's border
  • BorderColor, gets or sets a value that indicates the pool's border color
  • Pattern, specifies the pattern to be shown on the pool's background
  • UserData, associates any extra data associated with the pool
  • AllowHeaderExt, specifies how the corners of the pool are combined with the headers of the pool
  • LaneResizeType, specifies the way the lanes get resized, when its parent/pool gets resized
  • ExtendPoolOnHeaderExtend, specifies whether the pool extends its size, when its header get resized
  • HeaderCaptionSupportRotate, gets or sets a value that indicates whether the header displays its caption with a different orientation
  • HeaderSize, specifies the size of the pool's header
  • HeaderVisible, shows or hides the pool's header
  • HeaderColor, gets or sets a value that indicates the header's background color
  • HeaderBorder, specifies the style to display the header's border
  • HeaderBorderColor, gets or sets a value that indicates the header's border color
  • HeaderPattern, specifies the pattern to be shown on the header's background
  • all horizontal and vertical lanes (recursively properties of the Lane object as explained next)

Also, the StartUpdatePool/EndUpdatePool methods can record changes for the following properties (of Lane object):

  • Position, specifies the lane's position
  • Size, defines the lane's size (width or height)
  • Color, specifies the lane's background color
  • Border, defines the style to display the lane's border
  • BorderColor, gets or sets a value that indicates the lane's border color
  • Pattern, specifies the pattern to be shown on the lane's background
  • Header.Color, gets or sets a value that indicates the header's background color
  • Header.Border, defines the style to display the header's border
  • Header.BorderColor, gets or sets a value that indicates the header's border color
  • Header.Pattern, specifies the pattern to be shown on the header's background
  • Header.CaptionColor, gets or sets a value that indicates the header's foreground color
  • Header.HeaderLaneInheritLane, specifies the properties of the Lane that HeaderLane inherits from
  • Header.Caption, Gets or sets a value that indicates the HTML caption to be displayed on the header of the lane

The Undo/Redo records show as:

  • "UpdatePool;POOLID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

within the UndoListAction/RedoListAction result


method EnsureVisible

method Pool.EnsureVisible ()
Scrolls the surface to ensure that the current pool fits the control's visible area.

Type Description
The EnsureVisible method scrolls the surface to ensure that the current pool fits the control's visible area. The control's ScrollPos, ScrollX and ScrollY properties specify the surface's scroll position.


property ExtendPoolOnHeaderExtend

property Pool.ExtendPoolOnHeaderExtend as Boolean
Specifies whether the pool extends its size, when its header get resized.

Type | Description
Boolean | A Boolean expression that specifies whether the pool extends its size, when its header get resized.
By default, the ExtendPoolOnHeaderExtend property is True, which means that the pool gets resized when the any of its headers gets resized. If ExtendPoolOnHeaderExtend property is False, the pool is not resized, when the any of its headers gets resized. The HeaderSize property specifies the size of the left, right, top or bottom header. The Width property specifies the width in pixels of the pool. The Height property indicates the height in pixels of the pool. The HeaderVisible property shows or hides the left, right, top or bottom header.


method FitToClient

method Pool.FitToClient ()
Resizes or/and moves the entire chart to fit the pool.

Type Description
The FitToClient method ensures that the pool fits the surface's client area.


property HeaderBorder

property Pool.HeaderBorder(HeaderType as HeaderTypeEnum) as LinesStyleEnum
Specifies the style to display the header's border.

Type | Description
HeaderType as HeaderTypeEnum | A HeaderTypeEnum expression that indicates the horizontal ( top/bottom ) or vertical ( left/right) header.
LinesStyleEnum | A LinesStyleEnum expression that specifies the style of the border to shown on the pool's header.
By default, the HeaderBorder property is exLinesInvalid. The Header Border property specifies the style to display the pool's header border. The Background(exPoolHorizontalHeaderBorder) property specifies the type of the border for horizontal header for all pools on the surface, while the Header Border property is exLinesInvalid. The Background(exPoolVerticalHeaderBorder) property specifies the type of the border for vertical header for all pools on the surface, while the HeaderBorder property is exLinesInvalid. The HeaderBorderColor property specifies the color to show the pool's border. The HeaderColor property specifies the visual appearance / background color on the pool's header. The HeaderPattern property specifies the pattern/frame to be shown on the pool's header background. The Border property specifies the style of the border to show on pool. The Color property specifies the visual appearance/ background color of the pool.

The following screen shot shows the borders of the header of the pool in red:


property HeaderBorderColor

property Pool.HeaderBorderColor(HeaderType as HeaderTypeEnum) as Color
Gets or sets a value that indicates the header's border color.

Type | Description
HeaderType as HeaderTypeEnum | A HeaderTypeEnum expression that indicates the horizontal ( top/bottom ) or vertical ( left/right) header.
Color | A Color expression that specifies the color to show the header's border.
By default, the HeaderBorderColor property is -1 (transparent) The Background(exPoolVerticalHeaderBorderColor) specifies the color to show the border for vertical header for all pools on the surface, while the HeaderBorderColor property is -1. The Background(exPoolHorizontalHeaderBorderColor) specifies the color to show the border for horizontal header for all pools on the surface, while the HeaderBorderColor property is -1. The HeaderBorder property specifies the style to display the header's border. The Border property specifies the style of the border to show on pool.

The following screen shot shows the borders of the header of the pool in red:


property HeaderCaptionSupportRotate

property Pool.HeaderCaptionSupportRotate as Boolean
Returns or sets a value that indicates whether the header displays its caption with a different orientation.

Type | Description
Boolean | A Boolean expression that specifies whether the caption is displayed normal, rotated or mirrored.
By default, the HeaderCaptionSupportRotate property is True. The HeaderCaptionSupportRotate property specifies whether the caption is displayed normal, rotated or mirrored. The Caption property gets or sets a value that indicates the HTML caption to be displayed on the header of the lane. The DefPoolHeaderCaptionFormat property specifies the default format/text of the caption to be shown on the lane's header.

The following screen shot shows the pool while the HeaderCaptionSupportRotate property is True ( by default ):

The following screen shot shows the pool while the HeaderCaptionSupportRotate property is False:


property HeaderColor

property Pool.HeaderColor(HeaderType as HeaderTypeEnum) as Color
Gets or sets a value that indicates the header's background color.

Type | Description
HeaderType as HeaderTypeEnum | A HeaderTypeEnum expression that indicates the horizontal ( top/bottom ) or vertical ( left/right) header.
Color | A Color expression that specifies the color to show header's background. The last 7 bits in the high significant byte of the color indicates the identifier of the skin being used to paint the part. Use the Add method to add new skins to the control. The -1 indicates that the pool's background is transparent.
By default, the HeaderColor property is -1 (transparent). The HeaderColor property gets or sets a value that indicates the header's background color. The Background(exPoolHorizontalHeaderBackColor) property specifies the visual appearance ( EBN ) or background color for the horizontal header for all pools on the surface, while HeaderColor property is -1. The Background(exPoolVerticalHeaderBackColor) property specifies the visual appearance ( EBN ) or background color for the vertical header for all pools on the surface, while HeaderColor property is -1. The HeaderPattern property specifies the pattern/frame to be shown on the header's background. The AllowHeaderExt property specifies how the corners of the pool are combined with the headers of the pool. The Color property specifies the visual appearance / background color of the pool.

The following screen shot shows the pool's header with a different visual appearance ( EBN object ):


property HeaderPattern

property Pool.HeaderPattern (HeaderType as HeaderTypeEnum) as Pattern
Specifies the pattern to be shown on the header's background.

Type | Description
HeaderType as HeaderTypeEnum | A HeaderTypeEnum expression that indicates the horizontal ( top/bottom ) or vertical ( left/right) header.
Pattern | A Pattern object that indicates the pattern to be shown on the header's background.
The HeaderPattern property specifies the pattern to be shown on the pool's header background. The Pattern property specifies the pattern/frame to be shown on the pool's background. The Pattern property of the Lane object specifies the pattern to be shown on the lane's background. The Pattern property of the HeaderLane object specifies the pattern to be shown on the lane's header background. The Pattern property of the HeaderLane object specifies the pattern to be shown on the lane's header background. The AllowHeaderExt property specifies how the corners of the pool are combined with the headers of the pool.

The following screen shot shows pool with a different pattern/color:


property HeaderSize

property Pool.HeaderSize(HeaderPos as HeaderPosEnum) as Long
Specifies the size of the pool's header.

Type | Description
HeaderPos as HeaderPosEnum | A HeaderPosEnum expression that specifies the left, right, top or bottom header
Long | A Long expression that specifies the size of the header.
The HeaderSize property specifies the size of the left, right, top or bottom header. The Width property specifies the width in pixels of the pool. The Height property indicates the height in pixels of the pool. The HeaderVisible property shows or hides the left, right, top or bottom header. The ExtendPoolOnHeaderExtend property specifies whether the pool extends its size, when its header get resized.


property HeaderVisible

property Pool.HeaderVisible(HeaderPos as HeaderPosEnum) as Boolean
Specifies whether the pool's header is visible or hidden.

Type | Description
HeaderPos as HeaderPosEnum | A HeaderPosEnum expression that specifies the left, right, top or bottom header
Boolean | A Boolean expression that specifies whether the header is visible or hidden.
The HeaderVisible property shows or hides the left, right, top or bottom header. The HeaderSize property specifies the size of the left, right, top or bottom header. The Width property specifies the width in pixels of the pool. The Height property indicates the height in pixels of the pool. The ExtendPoolOnHeaderExtend property specifies whether the pool extends its size, when its header get resized.


property Height

property Pool.Height as Long
Specifies the height of the pool.

Type | Description
Long | A Long expression that specifies the height of the pool.
The Height property indicates the height in pixels of the pool. The Width property specifies the width in pixels of the pool. The X property indicates the x-coordinate of the top-left corner of the pool on the surface. The Y property indicates the y-coordinate of the top-left corner of the pool on the surface. The HeaderSize property specifies the size of the left, right, top or bottom header. The HeaderVisible property shows or hides the left, right, top or bottom header. The ExtendPoolOnHeaderExtend property specifies whether the pool extends its size, when its header get resized. The MoveTo method moves/resizes the pool.


property ID

property Pool.ID as Variant
Specifies the pool's identifier.

Type | Description
Variant | A Long expression that indicates the identifier of the pool on the surface.
By default, the ID property returns the Position property. Use the Item property of the Pools object to get a pool giving its position.


method InvokeContextMenu

method Pool.InvokeContextMenu ([ContextMenu as Variant])
Invokes programmatically the pool's default or customized context menu, and returns the identifier of the selected item.

Type | Description
ContextMenu as Variant | A String expression that defines the items to be displayed on the pool's context-menu. If empty, the default context-menu for pool [ContextMenu(exContextMenuPool) property] is shown.
Return | Description
Variant | A Long expression that indicates the identifier of the item being selected/clicked.
The InvokeContextMenu method invokes programmatically the pool's default or customized context menu, and returns the identifier of the selected item. The ContextMenu(exContextMenuPool) property defines the default content-menu for pool. The ActionContextMenu event notifies your application once an action occurs within the object's context menu. Use the AllowContextMenu property on exDisallow to disable default's context menu, when the user right clicks the pool. The ContextMenuFont property retrieves or sets the context-menu's font. The Background(exContextMenuAppearance) property ( and related ) defines the control's context menu appearance.

By default, the pool's context-menu shows as follows:

For instance, the InvokeContextMenu( "Item 1,Item 2,[sep],Check 1[chk],Check 2[chk]" ), generates the following screen shot:

For instance, the InvokeContextMenu( "Item 1,Item 2,Popup(Check 1[chk],Check 2[chk])" ), generates the following screen shot:

For instance, the InvokeContextMenu( "Calendar[id=20][img=0],MSChart[id=30],Record[id=40],Slider[id=50],Radio 1[id=100][typ=2][edit=],Radio 2[id=101][typ=2][edit=],Radio 3[id=102][typ=2][edit=],ComboBox[id=90]" ), generates the following screen shot:

The syntax for ContextMenu parameter in BNF notation is:

<ToString> ::= <ITEMS>
<ITEMS> ::= <ITEM>["("<ITEMS>")"][","<ITEMS>]
<ITEM> ::= <CAPTION>[<OPTIONS>]
<OPTIONS> ::= "["<OPTION>"]"["["<OPTIONS>"]"]
<OPTION> ::= <PROPERTY>["="<VALUE>]
<PROPERTY> ::= "img" | "himg" | "sep" | "id" | "typ" | "group" | "chk" | "button" | "align" | "spchk" | "show" | "rad" | "dis" | "showdis" | "bld" | "itl" | "stk" | "und" | "bg" | "fg" | "edittype" | "edit" | "mask" | "border" | "editwidth" | "captionwidth" | "height" | "grp" | "tfi" | "ttp" | "min" | "max" | "tick" | "freq" | "ticklabel" | "small" | "large" | "spin" | "ettp" | "float" | "close"

where the <CAPTION> is the HTML caption to be shown on the context menu item. The <VALUE> indicates the value of giving property.

  • img=<VALUE>, where <VALUE> is an integer expression, that indicates the index of the icon being displayed for the item.
  • himg=<VALUE>, where <VALUE> indicates the key of the picture to be displayed for the item.
  • sep, specifies an separator item
  • id=<VALUE>, where <VALUE> is an integer expression, that indicates the identifier of the item.
  • typ=<VALUE>, where <VALUE> could be one of the following:
    • 0 for regular items,
    • 1 for items that display a check/box (chk)
    • 2 to display radio buttons (rad)
  • group=<VALUE>, where <VALUE> could be a bit-or combination (+) of the following values:
    • 0 (exNoGroupPopup), No grouping is performed on the sub-menu, so the sub-items are shown to a float popup,
    • 1 (exGroupPopup), Groups and displays the sub-menu items on the current item, arranged from left to right
    • 2 (exNoGroupPopupFrame), Prevents showing the frame around each grouping item.
    • 4 (exGroupPopupCenter), Shows the grouping popup aligned to the center of the current item.
    • 8 (exGroupPopupRight), Shows the grouping popup aligned to the right of the current item.
    • 16 (exGroupPopupEqualSize), Shows the items that make the group of the same size
  • chk[=<VALUE>], where <VALUE> could be 0 for unchecked, or not zero for checked. The chk option makes the item to display a check box. If the <VALUE> is missing the item still displays an un-checked check box.
  • button=<VALUE>, where <VALUE> could be 0 for regular or not zero to show the item as a button.
  • align=<VALUE>, where <VALUE> could be one of the following:
    • 0 ( left ), to align the item's caption to the left
    • 1 ( center ), to center the item's caption
    • 2 ( right ), to align the item's caption to the right
  • spchk=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item's sub menu is shown only if the item is checked.
  • show=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the checked item shows as selected
  • rad=<VALUE>, where <VALUE> could be 0 for unchecked radio button or not zero to for checked radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored.
  • dis, specifies a disabled item
  • showdis=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item shows as disabled, but it is still enabled
  • bld, specifies that the item appears in bold
  • itl, specifies that the item appears in italics
  • stk, specifies that the item appears as strikeout
  • und, specifies that the item is underlined
  • bg=<VALUE>, specifies the item's background color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • fg=<VALUE>, specifies the item's foreground color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • edittype=<VALUE>, associates an edit field to the item, where <VALUE> could be one of the following values:
    • 0 ( exItemDisableEdit ), No editor is assigned to the current item.
    • 1 ( exItemEditText ), A text-box editor is assigned to the current item.
    • 2 ( exItemEditMask ), A masked text-box editor is assigned to the current item.
    • 3 ( exItemEditSlider ), A slider editor is assigned to the current item.
    • 4 ( exItemEditProgress ), A progress editor is assigned to the current item.
    • 5 ( exItemEditScrollBar ), A scrollbar editor is assigned to the current item.
    • 6 ( exItemEditColor), A color editor is assigned to the current item.
    • 7 ( exItemEditFont ), A font editor is assigned to the current item.
    • 256 (exItemEditReadOnly), specifies that the item's editor is shown as disabled. This value could be combined with one of the values from 0 to 7, 512
    • 512 ( exItemEditSpin ), A spin editor is assigned to the current item. This value could be combined with one of the values from 0 to 7, 256
  • edit=<VALUE>, specifies the caption to be shown in the item's edit field, where <VALUE> could be any string
  • mask=<VALUE>, specifies the mask to be applied on a masked editor. This option is valid for exItemEditMask edit. Use the float option to allow masking floating point numbers. See EditMask property for more details.
  • border=<VALUE>, specifies the border to be shown on the item's edit field, where <VALUE> could be one of the following:
    • 0 ( exEditBorderNone), No border is shown.
    • -1 (exEditBorderInset), shows an inset border
    • 1 (exEditBorderSingle), shows a frame border
  • editwidth=<VALUE>, specifies the width to show the edit field inside the item. where <VALUE> could be a long expression. A negative value indicates that the field goes to the end of the item
  • captionwidth=<VALUE>, specifies the width to show the HTML caption of the item. where <VALUE> could be a long expression. A negative value indicates that no limitation is applied to the item's caption, so no truncate caption is shown
  • height=<VALUE>, specifies the height to show the item, where <VALUE> could be a positive long expression
  • grp=<VALUE>, defines the radio group. It should be used when you define more groups of radio buttons. A group of radio buttons means that only one item could be checked at one time. The rad option specifies that the item displays a radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored. The <VALUE> could be any long expression.
  • ttp=<VALUE>, defines the item's tooltip. The <VALUE> could be any HTML string expression. The item's tooltip is shown when the user hovers the item.
  • min=<VALUE>, defines the minimum value of the edit field. The <VALUE> could be any long expression, and specifies the minimum value for any slider, progress, scroll, spin, or range editor.
  • max=<VALUE>, defines the maximum value of the edit field. The <VALUE> could be any long expression, and specifies the maximum value for any slider, progress, scroll, spin, or range editor.
  • tick=<VALUE>, defines where the ticks of the slider edit appear. This option is valid for exItemEditSlider edit. The <VALUE> could be one of the following values:
    • 0 ( exBottomRight ), The ticks are displayed on the bottom/right side.
    • 1 ( exTopLeft ), The ticks are displayed on the top/left side.
    • 2 ( exBoth ), The ticks are displayed on the both side.
    • 3 ( exNoTicks ), No ticks are displayed.
  • freq=<VALUE>, indicates the ratio of ticks on the slider edit. This option is valid for exItemEditSlider edit. The <VALUE> could be a positive long expression.
  • ticklabel=<VALUE>, indicates the HTML label to be displayed on slider's ticks. This option is valid for exItemEditSlider edit. Check the EditOption(exEditTickLabel) for more details.
  • small=<VALUE>, indicates the amount by which the edit's position changes when the user presses the arrow key ( left, right, or button ). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • large=<VALUE>, indicates the amount by which the edit's position changes when the user presses the CTRL + arrow key ( CTRL + left, CTRL + right). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • spin=<VALUE>, specifies the step to advance when user clicks the editor's spin.. This option is valid for exItemEditSpin edit. The <VALUE> could be a positive long expression.
  • ettp=<VALUE>, specifies the HTML tooltip to be shown when the item's value is changed. This option is valid for exItemEditSlider/exItemEditScrollBar edit. The <VALUE> could be any string expression.
  • float=<VALUE>, Specifies whether the mask field masks a floating point number. This option is valid for exItemEditMask edit. See See EditMask property for more details. The <VALUE> could be 0 for standard masking field or not zero to specify that the field is masking a floating point.
  • close=<VALUE>, Specifies the way the hosting menu is closed when the user clicks the item. If the close flag is missing, the <VALUE> is 3 (exCloseOnNonClickable), by default. The <VALUE> could be one of the following values:
    • 0 ( exCloseOnClick ), The popup menu is closing when the user clicks the item.
    • 1 ( exCloseOnDblClick ), The popup menu is closing when the user double clicks the item.
    • 2 ( exCloseOnClickOutside ), The popup menu is closing when the user clicks outside of the menu.
    • 3 ( exCloseOnNonClickable ), The popup menu is closing when the user clicks a non-clickable item ( regular items ). The non-clickable items is any item that's not a separator, popup, disabled or check or radio items, clicking a check-box item will makes the check box to change its state instead closing the context menu.


property Lane

property Pool.Lane (LaneType as LaneTypeEnum) as Lane
Retrieves the horizontal/vertical lane of the pool.

Type | Description
LaneType as LaneTypeEnum | A LaneType expression that indicates whether the horizontal or vertical lanes are requested.
Lane | A Lane object being accessed.

The Lane property of the Pool retrieves the horizontal/vertical lane of the pool. The Children property retrieves a collection of child-lanes. The LaneByID property returns a Lane object giving its identifier.

The following screen shot marks the lane itself:

The following sample creates a pool with horizontal and lanes.

VBA (MS Access, Excell...)

With SwimLane1
    .BeginUpdate
    With .Pools.Add(-250,-150,500,250)
        .Lane(0).Children.Count = 4
        .Lane(1).Children.Count = 4
    End With
    .EndUpdate
End With

VB6

With SwimLane1
    .BeginUpdate
    With .Pools.Add(-250,-150,500,250)
        .Lane(exLaneHorizontal).Children.Count = 4
        .Lane(exLaneVertical).Children.Count = 4
    End With
    .EndUpdate
End With

VB.NET

With Exswimlane1
    .BeginUpdate()
    With .Pools.Add(-250,-150,500,250)
        .get_Lane(exontrol.EXSWIMLANELib.LaneTypeEnum.exLaneHorizontal).Children.Count = 4
        .get_Lane(exontrol.EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children.Count = 4
    End With
    .EndUpdate()
End With

VB.NET for /COM

With AxSwimLane1
    .BeginUpdate()
    With .Pools.Add(-250,-150,500,250)
        .Lane(EXSWIMLANELib.LaneTypeEnum.exLaneHorizontal).Children.Count = 4
        .Lane(EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children.Count = 4
    End With
    .EndUpdate()
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
spSwimLane1->BeginUpdate();
EXSWIMLANELib::IPoolPtr var_Pool = spSwimLane1->GetPools()->Add(long(-250),long(-150),long(500),long(250));
    var_Pool->GetLane(EXSWIMLANELib::exLaneHorizontal)->GetChildren()->PutCount(4);
    var_Pool->GetLane(EXSWIMLANELib::exLaneVertical)->GetChildren()->PutCount(4);
spSwimLane1->EndUpdate();

C++ Builder

SwimLane1->BeginUpdate();
Exswimlanelib_tlb::IPoolPtr var_Pool = SwimLane1->Pools->Add(TVariant(-250),TVariant(-150),TVariant(500),TVariant(250));
    var_Pool->get_Lane(Exswimlanelib_tlb::LaneTypeEnum::exLaneHorizontal)->Children->Count = 4;
    var_Pool->get_Lane(Exswimlanelib_tlb::LaneTypeEnum::exLaneVertical)->Children->Count = 4;
SwimLane1->EndUpdate();

C#

exswimlane1.BeginUpdate();
exontrol.EXSWIMLANELib.Pool var_Pool = exswimlane1.Pools.Add(-250,-150,500,250);
    var_Pool.get_Lane(exontrol.EXSWIMLANELib.LaneTypeEnum.exLaneHorizontal).Children.Count = 4;
    var_Pool.get_Lane(exontrol.EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children.Count = 4;
exswimlane1.EndUpdate();

JScript/JavaScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
function Init()
{
    SwimLane1.BeginUpdate();
    var var_Pool = SwimLane1.Pools.Add(-250,-150,500,250);
        var_Pool.Lane(0).Children.Count = 4;
        var_Pool.Lane(1).Children.Count = 4;
    SwimLane1.EndUpdate();
}
</SCRIPT>
</BODY>

VBScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="VBScript">
Function Init()
    With SwimLane1
        .BeginUpdate
        With .Pools.Add(-250,-150,500,250)
            .Lane(0).Children.Count = 4
            .Lane(1).Children.Count = 4
        End With
        .EndUpdate
    End With
End Function
</SCRIPT>
</BODY>

C# for /COM

axSwimLane1.BeginUpdate();
EXSWIMLANELib.Pool var_Pool = axSwimLane1.Pools.Add(-250,-150,500,250);
    var_Pool.get_Lane(EXSWIMLANELib.LaneTypeEnum.exLaneHorizontal).Children.Count = 4;
    var_Pool.get_Lane(EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children.Count = 4;
axSwimLane1.EndUpdate();

X++ (Dynamics Ax 2009)

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

    super();

    exswimlane1.BeginUpdate();
    var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-250),COMVariant::createFromInt(-150),COMVariant::createFromInt(500),COMVariant::createFromInt(250)); com_Pool = var_Pool;
        var_Lane = COM::createFromObject(com_Pool.Lane(0/*exLaneHorizontal*/)); com_Lane = var_Lane;
        var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
        com_Lanes.Count(4);
        var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
        var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
        com_Lanes.Count(4);
    exswimlane1.EndUpdate();
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    BeginUpdate();
    with Pools.Add(TObject(-250),TObject(-150),TObject(500),TObject(250)) do
    begin
        Lane[EXSWIMLANELib.LaneTypeEnum.exLaneHorizontal].Children.Count := 4;
        Lane[EXSWIMLANELib.LaneTypeEnum.exLaneVertical].Children.Count := 4;
    end;
    EndUpdate();
end

Delphi (standard)

with SwimLane1 do
begin
    BeginUpdate();
    with Pools.Add(OleVariant(-250),OleVariant(-150),OleVariant(500),OleVariant(250)) do
    begin
        Lane[EXSWIMLANELib_TLB.exLaneHorizontal].Children.Count := 4;
        Lane[EXSWIMLANELib_TLB.exLaneVertical].Children.Count := 4;
    end;
    EndUpdate();
end

VFP

with thisform.SwimLane1
    .BeginUpdate
    with .Pools.Add(-250,-150,500,250)
        .Lane(0).Children.Count = 4
        .Lane(1).Children.Count = 4
    endwith
    .EndUpdate
endwith

dBASE Plus

local oSwimLane,var_Lanes,var_Lanes1,var_Pool

oSwimLane = form.EXSWIMLANEACTIVEXCONTROL1.nativeObject
oSwimLane.BeginUpdate()
var_Pool = oSwimLane.Pools.Add(-250,-150,500,250)
    // var_Pool.Lane(0).Children.Count = 4
    var_Lanes = var_Pool.Lane(0).Children
    with (oSwimLane)
        TemplateDef = [dim var_Lanes]
        TemplateDef = var_Lanes
        Template = [var_Lanes.Count = 4]
    endwith
    // var_Pool.Lane(1).Children.Count = 4
    var_Lanes1 = var_Pool.Lane(1).Children
    with (oSwimLane)
        TemplateDef = [dim var_Lanes1]
        TemplateDef = var_Lanes1
        Template = [var_Lanes1.Count = 4]
    endwith
oSwimLane.EndUpdate()

XBasic (Alpha Five)

Dim oSwimLane as P
Dim var_Lanes as local
Dim var_Lanes1 as local
Dim var_Pool as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
oSwimLane.BeginUpdate()
var_Pool = oSwimLane.Pools.Add(-250,-150,500,250)
    ' var_Pool.Lane(0).Children.Count = 4
    var_Lanes = var_Pool.Lane(0).Children
    oSwimLane.TemplateDef = "dim var_Lanes"
    oSwimLane.TemplateDef = var_Lanes
    oSwimLane.Template = "var_Lanes.Count = 4"

    ' var_Pool.Lane(1).Children.Count = 4
    var_Lanes1 = var_Pool.Lane(1).Children
    oSwimLane.TemplateDef = "dim var_Lanes1"
    oSwimLane.TemplateDef = var_Lanes1
    oSwimLane.Template = "var_Lanes1.Count = 4"

oSwimLane.EndUpdate()

Visual Objects

local var_Pool as IPool

oDCOCX_Exontrol1:BeginUpdate()
var_Pool := oDCOCX_Exontrol1:Pools:Add(-250,-150,500,250)
    var_Pool:[Lane,exLaneHorizontal]:Children:Count := 4
    var_Pool:[Lane,exLaneVertical]:Children:Count := 4
oDCOCX_Exontrol1:EndUpdate()

PowerBuilder

OleObject oSwimLane,var_Pool

oSwimLane = ole_1.Object
oSwimLane.BeginUpdate()
var_Pool = oSwimLane.Pools.Add(-250,-150,500,250)
    var_Pool.Lane(0).Children.Count = 4
    var_Pool.Lane(1).Children.Count = 4
oSwimLane.EndUpdate()

Visual DataFlex

Procedure OnCreate
    Forward Send OnCreate
    Send ComBeginUpdate
    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 -250 -150 500 250 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 4
                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 4
                Send Destroy to hoLanes1
            Send Destroy to hoLane1
        Send Destroy to hoPool
    Send Destroy to hoPools
    Send ComEndUpdate
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oPool
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oSwimLane:BeginUpdate()
        oPool := oSwimLane:Pools():Add(-250,-150,500,250)
            oPool:Lane(0/*exLaneHorizontal*/):Children():Count := 4
            oPool:Lane(1/*exLaneVertical*/):Children():Count := 4
        oSwimLane:EndUpdate()

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


property LaneResizeType

property Pool.LaneResizeType as LaneResizeTypeEnum
Specifies the way the lanes get resized, when its parent/pool gets resized.

Type | Description
LaneResizeTypeEnum | A LaneResizeTypeEnum expression that specifies the way the lanes get resized, when its parent/pool gets resized.
By default, the LaneResizeType property is exLaneResizeUndefined, which indicates that the control's LaneResizeType property specifies how the pool resizes the lanes, once the user resizes the pool ( valid for all pools ). The LaneResizeType property specifies how the pool resizes the lanes, once the user resizes the pool ( valid for a specific pool ).

The following screen shot shows the pool before resizing it:

The following screen shot shows the pool resized while the LaneResizeType property is exLaneResizeProportionally ( by default ):

The following screen shot shows the pool resized while the LaneResizeType property is exLaneResizeLast:


property MaxHeight

property Pool.MaxHeight as Long
Specifies the maximum height of the pool.

Type | Description
Long | A Long expression that specifies the max height of the pool. If negative, the MaxHeight property has no effect.
By default, the MaxHeight property is -1, which indicates that it has no effect. The MaxHeight property specifies the maximum height of the pool. The MinHeight property indicates the minimum height of the pool. The Height property indicates the height in pixels of the pool.The Width property specifies the width in pixels of the pool. The X property indicates the x-coordinate of the top-left corner of the pool on the surface. The Y property indicates the y-coordinate of the top-left corner of the pool on the surface. The HeaderSize property specifies the size of the left, right, top or bottom header. The HeaderVisible property shows or hides the left, right, top or bottom header. The ExtendPoolOnHeaderExtend property specifies whether the pool extends its size, when its header get resized.


property MaxWidth

property Pool.MaxWidth as Long
Specifies the maximum width of the pool.

Type | Description
Long | A Long expression that specifies the max width of the pool. If negative, the MaxWidth property has no effect.
By default, the MaxWidth property is -1, which indicates that it has no effect. The MaxWidth property specifies the maximum width of the pool. The Width property specifies the width in pixels of the pool. The MinWidth property indicates the minimum width of the pool. The Height property indicates the height in pixels of the pool. The X property indicates the x-coordinate of the top-left corner of the pool on the surface. The Y property indicates the y-coordinate of the top-left corner of the pool on the surface. The HeaderSize property specifies the size of the left, right, top or bottom header. The HeaderVisible property shows or hides the left, right, top or bottom header. The ExtendPoolOnHeaderExtend property specifies whether the pool extends its size, when its header get resized.


property MinHeight

property Pool.MinHeight as Long
Specifies the minimum height of the pool.

Type | Description
Long | A Long expression that specifies the minimum height of the pool.
By default, the MinHeight property is 40. The MinHeight property indicates the minimum height of the pool. The MaxHeight property specifies the maximum height of the pool. The Height property indicates the height in pixels of the pool.The Width property specifies the width in pixels of the pool. The X property indicates the x-coordinate of the top-left corner of the pool on the surface. The Y property indicates the y-coordinate of the top-left corner of the pool on the surface. The HeaderSize property specifies the size of the left, right, top or bottom header. The HeaderVisible property shows or hides the left, right, top or bottom header. The ExtendPoolOnHeaderExtend property specifies whether the pool extends its size, when its header get resized.


property MinWidth

property Pool.MinWidth as Long
Specifies the minimum width of the pool.

Type | Description
Long | A long expression that specifies the minimum width of the pool.
By default, the MinWidth property is 40. The MinWidth property indicates the minimum width of the pool. The MaxWidth property specifies the maximum width of the pool. The Width property specifies the width in pixels of the pool. The Height property indicates the height in pixels of the pool. The X property indicates the x-coordinate of the top-left corner of the pool on the surface. The Y property indicates the y-coordinate of the top-left corner of the pool on the surface. The HeaderSize property specifies the size of the left, right, top or bottom header. The HeaderVisible property shows or hides the left, right, top or bottom header. The ExtendPoolOnHeaderExtend property specifies whether the pool extends its size, when its header get resized.


method MoveTo

method Pool.MoveTo (X as Long, Y as Long, Width as Long, Height as Long)
Moves the pool to a new position.

Type | Description
X as Long | A Long expression that specifies the x-coordinate of the top-left corner of the pool
Y as Long | A Long expression that specifies the y-coordinate of the top-left corner of the pool
Width as Long | A Long expression that indicates the pool's width
Height as Long | A Long expression that indicates the pool's height
The MoveTo method moves/resizes the pool. The Width property specifies the width in pixels of the pool. The MaxWidth property specifies the maximum width of the pool. The MinWidth property indicates the minimum width of the pool. The Height property indicates the height in pixels of the pool. The X property indicates the x-coordinate of the top-left corner of the pool on the surface. The Y property indicates the y-coordinate of the top-left corner of the pool on the surface. The HeaderSize property specifies the size of the left, right, top or bottom header. The HeaderVisible property shows or hides the left, right, top or bottom header. The ExtendPoolOnHeaderExtend property specifies whether the pool extends its size, when its header get resized.


property Pattern

property Pool.Pattern as Pattern
Specifies the pattern to be shown on the pool's background.

Type | Description
Pattern | A Pattern object that specifies the pattern to be shown on the pool's background.
The Pattern property specifies the pattern/frame to be shown on the pool's background. The HeaderPattern property specifies the pattern to be shown on the pool's header background. The Color property gets or sets a value that indicates the pool's background color. The Pattern property of the Lane object specifies the pattern to be shown on the lane's background. The Pattern property of the HeaderLane object specifies the pattern to be shown on the lane's header background.

The following screen shot shows pool with a different pattern/color:


property Position

property Pool.Position as Long
Specifies the pool's position.

Type | Description
Long | A Long expression that specifies the position of the pool on the surface.
The Position property returns the z-order position of the pool on the surface. Use the Item property of the Pools object to get a pool giving its position.


property StartUpdatePool

property Pool.StartUpdatePool as Long
Starts changing properties of the pool, so EndUpdatePool method adds programmatically updated properties to undo/redo queue.

Type | Description
Long | A Long expression that specifies the handle to be passed to EndUpdatePool so the updated properties of the bar are added to the Undo/Redo queue of the chart, so they can be used in undo/redo operations.
The StartUpdatePool/EndUpdatePool methods record and add changes of the current pool to the control's Undo/Redo queue. You can use the StartBlockUndoRedo / End BlockUndoRedo methods to group multiple Undo/Redo operations into a single-block. The AllowUndoRedo property specifies whether the control supports undo/redo operations for objects (pools, links, ...). No entry is added to the Undo/Redo queue if no property is changed for the current pool. Each call of the StartUpdatePool must be succeeded by a EndUpdatePool call. The UndoListAction property lists the Undo actions that can be performed in the chart. The RedoListAction property lists the Redo actions that can be performed in the chart.

The StartUpdatePool/EndUpdatePool methods can record changes for the following properties:

  • X, specifies the pool's x-position
  • Y, specifies the pool's y-position
  • Width, specifies the width of the pool
  • Height, specifies the height of the pool
  • ID, defines the pool's unique identifier
  • Position, defines the position of the pool
  • Color, defines the pool's background color
  • Border, defines the style to display the pool's border
  • BorderColor, gets or sets a value that indicates the pool's border color
  • Pattern, specifies the pattern to be shown on the pool's background
  • UserData, associates any extra data associated with the pool
  • AllowHeaderExt, specifies how the corners of the pool are combined with the headers of the pool
  • LaneResizeType, specifies the way the lanes get resized, when its parent/pool gets resized
  • ExtendPoolOnHeaderExtend, specifies whether the pool extends its size, when its header get resized
  • HeaderCaptionSupportRotate, gets or sets a value that indicates whether the header displays its caption with a different orientation
  • HeaderSize, specifies the size of the pool's header
  • HeaderVisible, shows or hides the pool's header
  • HeaderColor, gets or sets a value that indicates the header's background color
  • HeaderBorder, specifies the style to display the header's border
  • HeaderBorderColor, gets or sets a value that indicates the header's border color
  • HeaderPattern, specifies the pattern to be shown on the header's background
  • all horizontal and vertical lanes (recursively properties of the Lane object as explained next)

Also, the StartUpdatePool/EndUpdatePool methods can record changes for the following properties (of Lane object):

  • Position, specifies the lane's position
  • Size, defines the lane's size (width or height)
  • Color, specifies the lane's background color
  • Border, defines the style to display the lane's border
  • BorderColor, gets or sets a value that indicates the lane's border color
  • Pattern, specifies the pattern to be shown on the lane's background
  • Header.Color, gets or sets a value that indicates the header's background color
  • Header. Border, defines the style to display the header's border
  • Header. BorderColor, gets or sets a value that indicates the header's border color
  • Header. Pattern, specifies the pattern to be shown on the header's background
  • Header.CaptionColor, gets or sets a value that indicates the header's foreground color
  • Header.HeaderLaneInheritLane, specifies the properties of the Lane that HeaderLane inherits from
  • Header.Caption, Gets or sets a value that indicates the HTML caption to be displayed on the header of the lane

The Undo/Redo records show as:

  • "UpdatePool;POOLID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

within the UndoListAction/RedoListAction result.


property UserData

property Pool.UserData as Variant
Indicates any extra data associated with the pool.

Type | Description
Variant | A VARIANT expression that specifies any-extra data associated with the pool.
Use the UserData property to associate any-extra data with the pool.


property Width

property Pool.Width as Long
Specifies the width of the pool.

Type | Description
Long | A Long expression that specifies the width of the pool.
The Width property specifies the width in pixels of the pool. The MaxWidth property specifies the maximum width of the pool. The MinWidth property indicates the minimum width of the pool. The Height property indicates the height in pixels of the pool. The X property indicates the x-coordinate of the top-left corner of the pool on the surface. The Y property indicates the y-coordinate of the top-left corner of the pool on the surface. The HeaderSize property specifies the size of the left, right, top or bottom header. The HeaderVisible property shows or hides the left, right, top or bottom header. The ExtendPoolOnHeaderExtend property specifies whether the pool extends its size, when its header get resized. The MoveTo method moves/resizes the pool.


property X

property Pool.X as Long
Specifies the pool's x-position.

Type | Description
Long | A Long expression that specifies the x-coordinate of the pool.
The X property indicates the x-coordinate of the top-left corner of the pool on the surface. The Y property indicates the y-coordinate of the top-left corner of the pool on the surface. The MoveTo method moves/resizes the pool. The Width property specifies the width in pixels of the pool. The MaxWidth property specifies the maximum width of the pool. The MinWidth property indicates the minimum width of the pool. The Height property indicates the height in pixels of the pool. The HeaderSize property specifies the size of the left, right, top or bottom header. The HeaderVisible property shows or hides the left, right, top or bottom header. The ExtendPoolOnHeaderExtend property specifies whether the pool extends its size, when its header get resized.


property Y

property Pool.Y as Long
Specifies the pool's y-position.

Type | Description
Long | A Long expression that specifies the y-coordinate of the pool.
The Y property indicates the y-coordinate of the top-left corner of the pool on the surface. The X property indicates the x-coordinate of the top-left corner of the pool on the surface. The MoveTo method moves/resizes the pool. The Width property specifies the width in pixels of the pool. The MaxWidth property specifies the maximum width of the pool. The MinWidth property indicates the minimum width of the pool. The Height property indicates the height in pixels of the pool. The HeaderSize property specifies the size of the left, right, top or bottom header. The HeaderVisible property shows or hides the left, right, top or bottom header. The ExtendPoolOnHeaderExtend property specifies whether the pool extends its size, when its header get resized.


Pools object
The Pools object holds a collection of Pool object on the surface. The Pools property of the control gives the control's pools collection.

The following screen shot shows a surface with two pools:

The Pools object support the following properties and methods:

Name | Description
Add | Adds an Pool object to the collection and returns a reference to the newly created object.
Clear | Removes all objects in a collection.
Count | Returns the number of pools in the collection.
Item | Returns a specific Pool of the Pools collection, giving its identifier.
Remove | Removes a specific member from the Pools collection, giving its identifier or reference.


method Add

method Pools.Add ([X as Variant], [Y as Variant], [Width as Variant], [Height as Variant])
Adds an Pool object to the collection and returns a reference to the newly created object.

Type | Description
X as Variant | A Long expression that specifies the x-coordinate of the pool.
Y as Variant | A Long expression that specifies the y-coordinate of the pool.
Width as Variant | A Long expression that specifies the width of the pool.
Height as Variant | A Long expression that specifies the height of the pool.
Return | Description
Pool | A Pool object being created.
The Add method adds programmatically a new pool on the surface, and returns a reference to the newly created object. If X, Y, Width and Height parameters are missing (VT_ERROR, VT_EMPTY), the Add method adds a pool that covers all visible-elements. The Lane property of the Pool retrieves the horizontal/vertical lane of the pool. The Children property retrieves a collection of child-lanes. The Count property of the Lanes object defines the number of child-lanes ( sub-lanes ). The Caption property gets or sets a value that indicates the HTML caption to be displayed on the header of the lane. The AllowCreatePool property specifies the combination of keys that allows the user to create objects on the surface. The AddPool event notifies your application once a new new pool is added to the Pools collection.

The following samples show how you can programmatically add a new pool on the surface:

VBA (MS Access, Excell...)

With SwimLane1
    .BeginUpdate
    With .Pools.Add(-250,-150,500,250)
        .Lane(0).Children.Count = 4
        .Lane(1).Children.Count = 4
    End With
    .EndUpdate
End With

VB6

With SwimLane1
    .BeginUpdate
    With .Pools.Add(-250,-150,500,250)
        .Lane(exLaneHorizontal).Children.Count = 4
        .Lane(exLaneVertical).Children.Count = 4
    End With
    .EndUpdate
End With

VB.NET

With Exswimlane1
    .BeginUpdate()
    With .Pools.Add(-250,-150,500,250)
        .get_Lane(exontrol.EXSWIMLANELib.LaneTypeEnum.exLaneHorizontal).Children.Count = 4
        .get_Lane(exontrol.EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children.Count = 4
    End With
    .EndUpdate()
End With

VB.NET for /COM

With AxSwimLane1
    .BeginUpdate()
    With .Pools.Add(-250,-150,500,250)
        .Lane(EXSWIMLANELib.LaneTypeEnum.exLaneHorizontal).Children.Count = 4
        .Lane(EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children.Count = 4
    End With
    .EndUpdate()
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
spSwimLane1->BeginUpdate();
EXSWIMLANELib::IPoolPtr var_Pool = spSwimLane1->GetPools()->Add(long(-250),long(-150),long(500),long(250));
    var_Pool->GetLane(EXSWIMLANELib::exLaneHorizontal)->GetChildren()->PutCount(4);
    var_Pool->GetLane(EXSWIMLANELib::exLaneVertical)->GetChildren()->PutCount(4);
spSwimLane1->EndUpdate();

C++ Builder

SwimLane1->BeginUpdate();
Exswimlanelib_tlb::IPoolPtr var_Pool = SwimLane1->Pools->Add(TVariant(-250),TVariant(-150),TVariant(500),TVariant(250));
    var_Pool->get_Lane(Exswimlanelib_tlb::LaneTypeEnum::exLaneHorizontal)->Children->Count = 4;
    var_Pool->get_Lane(Exswimlanelib_tlb::LaneTypeEnum::exLaneVertical)->Children->Count = 4;
SwimLane1->EndUpdate();

C#

exswimlane1.BeginUpdate();
exontrol.EXSWIMLANELib.Pool var_Pool = exswimlane1.Pools.Add(-250,-150,500,250);
    var_Pool.get_Lane(exontrol.EXSWIMLANELib.LaneTypeEnum.exLaneHorizontal).Children.Count = 4;
    var_Pool.get_Lane(exontrol.EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children.Count = 4;
exswimlane1.EndUpdate();

JScript/JavaScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
function Init()
{
    SwimLane1.BeginUpdate();
    var var_Pool = SwimLane1.Pools.Add(-250,-150,500,250);
        var_Pool.Lane(0).Children.Count = 4;
        var_Pool.Lane(1).Children.Count = 4;
    SwimLane1.EndUpdate();
}
</SCRIPT>
</BODY>

VBScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="VBScript">
Function Init()
    With SwimLane1
        .BeginUpdate
        With .Pools.Add(-250,-150,500,250)
            .Lane(0).Children.Count = 4
            .Lane(1).Children.Count = 4
        End With
        .EndUpdate
    End With
End Function
</SCRIPT>
</BODY>

C# for /COM

axSwimLane1.BeginUpdate();
EXSWIMLANELib.Pool var_Pool = axSwimLane1.Pools.Add(-250,-150,500,250);
    var_Pool.get_Lane(EXSWIMLANELib.LaneTypeEnum.exLaneHorizontal).Children.Count = 4;
    var_Pool.get_Lane(EXSWIMLANELib.LaneTypeEnum.exLaneVertical).Children.Count = 4;
axSwimLane1.EndUpdate();

X++ (Dynamics Ax 2009)

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

    super();

    exswimlane1.BeginUpdate();
    var_Pool = COM::createFromObject(exswimlane1.Pools()).Add(COMVariant::createFromInt(-250),COMVariant::createFromInt(-150),COMVariant::createFromInt(500),COMVariant::createFromInt(250)); com_Pool = var_Pool;
        var_Lane = COM::createFromObject(com_Pool.Lane(0/*exLaneHorizontal*/)); com_Lane = var_Lane;
        var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
        com_Lanes.Count(4);
        var_Lane = COM::createFromObject(com_Pool.Lane(1/*exLaneVertical*/)); com_Lane = var_Lane;
        var_Lanes = COM::createFromObject(com_Lane).Children(); com_Lanes = var_Lanes;
        com_Lanes.Count(4);
    exswimlane1.EndUpdate();
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    BeginUpdate();
    with Pools.Add(TObject(-250),TObject(-150),TObject(500),TObject(250)) do
    begin
        Lane[EXSWIMLANELib.LaneTypeEnum.exLaneHorizontal].Children.Count := 4;
        Lane[EXSWIMLANELib.LaneTypeEnum.exLaneVertical].Children.Count := 4;
    end;
    EndUpdate();
end

Delphi (standard)

with SwimLane1 do
begin
    BeginUpdate();
    with Pools.Add(OleVariant(-250),OleVariant(-150),OleVariant(500),OleVariant(250)) do
    begin
        Lane[EXSWIMLANELib_TLB.exLaneHorizontal].Children.Count := 4;
        Lane[EXSWIMLANELib_TLB.exLaneVertical].Children.Count := 4;
    end;
    EndUpdate();
end

VFP

with thisform.SwimLane1
    .BeginUpdate
    with .Pools.Add(-250,-150,500,250)
        .Lane(0).Children.Count = 4
        .Lane(1).Children.Count = 4
    endwith
    .EndUpdate
endwith

dBASE Plus

local oSwimLane,var_Lanes,var_Lanes1,var_Pool

oSwimLane = form.EXSWIMLANEACTIVEXCONTROL1.nativeObject
oSwimLane.BeginUpdate()
var_Pool = oSwimLane.Pools.Add(-250,-150,500,250)
    // var_Pool.Lane(0).Children.Count = 4
    var_Lanes = var_Pool.Lane(0).Children
    with (oSwimLane)
        TemplateDef = [dim var_Lanes]
        TemplateDef = var_Lanes
        Template = [var_Lanes.Count = 4]
    endwith
    // var_Pool.Lane(1).Children.Count = 4
    var_Lanes1 = var_Pool.Lane(1).Children
    with (oSwimLane)
        TemplateDef = [dim var_Lanes1]
        TemplateDef = var_Lanes1
        Template = [var_Lanes1.Count = 4]
    endwith
oSwimLane.EndUpdate()

XBasic (Alpha Five)

Dim oSwimLane as P
Dim var_Lanes as local
Dim var_Lanes1 as local
Dim var_Pool as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
oSwimLane.BeginUpdate()
var_Pool = oSwimLane.Pools.Add(-250,-150,500,250)
    ' var_Pool.Lane(0).Children.Count = 4
    var_Lanes = var_Pool.Lane(0).Children
    oSwimLane.TemplateDef = "dim var_Lanes"
    oSwimLane.TemplateDef = var_Lanes
    oSwimLane.Template = "var_Lanes.Count = 4"

    ' var_Pool.Lane(1).Children.Count = 4
    var_Lanes1 = var_Pool.Lane(1).Children
    oSwimLane.TemplateDef = "dim var_Lanes1"
    oSwimLane.TemplateDef = var_Lanes1
    oSwimLane.Template = "var_Lanes1.Count = 4"

oSwimLane.EndUpdate()

Visual Objects

local var_Pool as IPool

oDCOCX_Exontrol1:BeginUpdate()
var_Pool := oDCOCX_Exontrol1:Pools:Add(-250,-150,500,250)
    var_Pool:[Lane,exLaneHorizontal]:Children:Count := 4
    var_Pool:[Lane,exLaneVertical]:Children:Count := 4
oDCOCX_Exontrol1:EndUpdate()

PowerBuilder

OleObject oSwimLane,var_Pool

oSwimLane = ole_1.Object
oSwimLane.BeginUpdate()
var_Pool = oSwimLane.Pools.Add(-250,-150,500,250)
    var_Pool.Lane(0).Children.Count = 4
    var_Pool.Lane(1).Children.Count = 4
oSwimLane.EndUpdate()

Visual DataFlex

Procedure OnCreate
    Forward Send OnCreate
    Send ComBeginUpdate
    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 -250 -150 500 250 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 4
                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 4
                Send Destroy to hoLanes1
            Send Destroy to hoLane1
        Send Destroy to hoPool
    Send Destroy to hoPools
    Send ComEndUpdate
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oPool
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oSwimLane:BeginUpdate()
        oPool := oSwimLane:Pools():Add(-250,-150,500,250)
            oPool:Lane(0/*exLaneHorizontal*/):Children():Count := 4
            oPool:Lane(1/*exLaneVertical*/):Children():Count := 4
        oSwimLane:EndUpdate()

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


method Clear

method Pools.Clear ()
Removes all objects in a collection.

Type Description
The Clear method removes all Pool objects from the Pools collection. The Remove method removes a specified pool. The Item property returns the Pool object based on its identifier/position.


property Count

property Pools.Count as Long
Returns the number of pools in the collection.

Type | Description
Long | A Long expression that specifies the count of pools on the surface.
The Count property returns the number of pools in the collection. The Add method adds a new pool on the surface. The Remove method removes the giving pool from the surface. The Clear method removes all Pool objects from the Pools collection. The Item property returns the Pool object based on its identifier/position.


property Item

property Pools.Item (Position as Variant) as Pool
Returns a specific Pool of the Pools collection, giving its identifier.

Type | Description
Position as Variant | A Long expression that specifies the pool to be accessed.
Pool | A Pool object being queried.
The Item property returns the Pool object based on its identifier/position. The Remove method removes a specified pool. The Clear method removes all Pool objects from the Pools collection.


method Remove

method Pools.Remove (Position as Variant)
Removes a specific member from the Pools collection, giving its identifier or reference.

Type | Description
Position as Variant | A Long expression that specifies the position of the pool to be removed.
The Remove method removes a specified pool. The Clear method removes all Pool objects from the Pools collection. The Item property returns the Pool object based on its identifier/position.


SwimLane object
Tip The /COM object can be placed on a HTML page (with usage of the HTML object tag: <object classid="clsid:...">) using the class identifier: {AFA73FCE-6609-4062-AE6A-4BAD6D96A025}. The object's program identifier is: "Exontrol.SwimLane". The /COM object module is: "ExSwimLane.dll"
The eXSwimlane lets you draw swim lane diagrams. A swim lane (or swimlane diagram) is a visual element used in process flow diagrams, or flowcharts, that visually distinguishes job sharing and responsibilities for sub-processes of a business process. Swim lanes may be arranged either horizontally or vertically. The ExSwimlane library lets the user changes its visual appearance using skins, each one providing an additional visual experience that enhances viewing pleasure.

The following screen shot shows the eXSwimLane control:

The Swimlane object supports the following properties and methods:

Name | Description
AlignObjectsToGridLines | Specifies whether the objects are aligned to grid lines.
AllowContextMenu | Specifies the combination of keys that allows the user to open the object's context menu.
AllowCreateElement | Specifies the combination of keys that allows the user to create objects on the surface.
AllowCreatePool | Specifies the combination of keys that allows the user to create pools on the surface.
AllowDesignHeader | Indicates that lanes and their parents shows on separate headers while cursor hovers the pool's header.
AllowHeaderExt | Specifies how the corners of the pool are combined with the headers of the pool.
AllowLinkControlPoint | Indicates the control points of the link, the user can use to customize the link.
AllowLinkObjects | Specifies the combination of keys that allows the user to link the objects.
AllowMoveDescendents | Specifies whether all descendents of the focusing element are moved once the focusing element is moved.
AllowMoveElement | Specifies the combination of keys that allows the user to move the objects.
AllowMoveLane | Specifies the combination of keys that allows the user to move the lanes within the pool.
AllowMoveNeighbors | Indicates whether the neighbor elements are shifted once the selection is moved or resized, so they won't intersect the dragging objects.
AllowMovePool | Specifies the combination of keys that allows the user to move the pools on the surface.
AllowMovePoolElement | Indicates that the visible elements of the moving pool are moved together with the pool.
AllowMoveSelection | Specifies whether the entire selection is moved once the focusing element is moved.
AllowMoveSelectionPool | Indicates that the pool of the selected element, is moved together with the element
AllowMoveSurface | Specifies the combination of keys that allows the user to move the surface.
AllowResizeElement | Specifies the combination of keys that allows the user to resize the objects.
AllowResizeLane | Specifies the combination of keys that allows the user to resize the lanes of the pool.
AllowResizePool | Specifies the combination of keys that allows the user to resize the pools on the surface.
AllowResizePoolHeader | Specifies the combination of keys that allows the user to resize the header's pool on the surface.
AllowResizeSelection | Specifies whether the entire selection is resized once the focusing element is resize.
AllowScrollWheelSurface | Enables or disables scrolling the control while rotating the mouse wheel.
AllowSelectNothing | Empties the selection when the user clicks outside of the elements.
AllowSelectObject | Specifies the combination of keys that allows the user to select objects on the surface.
AllowSelectObjectRect | Specifies the combination of keys that allows the user to select objects on the surface, by dragging a rectangle.
AllowToggleSelectKey | Specifies the combination of keys to select multiple not-contiguously objects.
AllowUndoRedo | Enables or disables the Undo/Redo feature.
AllowZoomSurface | Specifies the combination of keys that allows the user to magnify or shrink the surface.
AllowZoomWheelSurface | Enables or disables zooming the control using the mouse wheel.
AnchorFromPoint | Retrieves the identifier of the anchor from point.
Appearance | Retrieves or sets the control's appearance.
Arrange | Arranges the elements, starting from giving element, based on the links.
AttachTemplate | Attaches a script to the current object, including the events, from a string, file, a safe array of bytes.
AxisColor | Indicates the color to show the axis on the surface.
AxisStyle | Specifies the style to display the axis lines.
BackColor | Specifies the control's background color.
Background | Returns or sets a value that indicates the background color for parts in the control.
BeginUpdate | Maintains performance when items are added to the control one at a time. This method prevents the control from painting until the EndUpdate method is called.
BorderHeight | Sets or retrieves a value that indicates the border height of the control.
BorderWidth | Sets or retrieves a value that indicates the border width of the control.
CancelLayoutChanging | Cancels the current layout changing operation.
CanRedo | Retrieves a value that indicates whether the surface can perform a Redo operation.
CanUndo | Retrieves a value that indicates whether the surface can perform an Undo operation.
ContextMenu | Indicates the object's context menu.
ContextMenuFont | Retrieves or sets the context-menu's font.
ContextMenuObjectFromID | Gives the context menu object based on the type and identifier.
Coord | Specifies the type of coordinates the elements of the surface display in.
CopyTo | Exports the control's view to an EMF file.
DefArrange | Retrieves or sets an option for Arrange method.
DefPoolHeaderCaptionFormat | Specifies the default format/text of the caption to be shown on the lane's header.
DesignMode | Specifies the surface's design mode.
DesignModes | Specifies the list of design modes to be displayed on the control's toolbar.
EditContextMenuItems | Specifies the control's context menu, while editing the element.
ElementFormat | Specifies the way the control shows the parts of the elements.
ElementFromPoint | Gets the Element object from the cursor.
ElementFromPosition | Gets the Element object from the position.
Elements | Retrieves the control's elements.
Enabled | Enables or disables the control.
EndBlockUndoRedo | Ends recording the UI operations and adds the undo/redo operations as a block, so they all can be restored at once, if Undo method is performed.
EndUpdate | Resumes painting the control after painting is suspended by the BeginUpdate method.
EventParam | Retrieves or sets a value that indicates the current's event parameter.
ExecuteTemplate | Executes a template and returns the result.
ExpandLinkedElements | Specifies whether the linked elements are expanded or collapsed.
FitToClient | Resizes or/and moves the entire chart to fit the control's client area.
Font | Retrieves or sets the control's font.
ForeColor | Specifies the control's foreground color.
FormatAnchor | Specifies the visual effect for anchor elements in HTML captions.
GroupUndoRedoActions | Groups the next to current Undo/Redo Actions in a single block.
HeaderLaneFromPoint | Gets the HeaderLane object from the cursor.
HideSel | Returns a value that determines whether selected item appears highlighted when a control loses the focus.
HitTestFromPoint | Gets the Element object and the Hit-Test code from the cursor.
Home | Restores the view to the origin.
HTMLPicture | Adds or replaces a picture in HTML captions.
hWnd | Retrieves the control's window handle.
Images | Sets at runtime the control's image list. The Handle should be a handle to an Images List Control.
ImageSize | Retrieves or sets the size of icons the control displays..
IndentX | Specifies the child elements indentation on x-axis.
IndentY | Specifies the child elements indentation on y-axis.
InvokeContextMenu | Invokes programmatically the surface's default or customized context menu, and returns the identifier of the selected item.
LaneByID | Gets the Lane object giving its identifier.
LaneFromPoint | Gets the Lane object from the cursor.
LaneResizeType | Specifies the way the lanes get resized, when its parent/pool gets resized.
Layout | Saves or loads the control's layout, such as position, zooming factor, selection, and so on.
LinkFromPoint | Gets the Link object from the cursor.
Links | Retrieves the control's links.
LinksArrowColor | Specifies the color/visual appearance to draw the arrows of the links between the elements.
LinksArrowFrameColor | Specifies the color to show the default frame of the arrow
LinksArrowSize | Specifies the size to show the arrow for links
LinksColor | Specifies the color to draw the links between the elements.
LinksShowDir | Specifies whether the links show or hide the direction/arrow.
LinksStyle | Specifies the style to draw the links between the elements.
LinksWidth | Specifies the width in pixels of the pen to draw the links between the elements.
LoadXML | Loads an XML document from the specified location, using MSXML parser.
MajorGridColor | Indicates the color to show the major grid lines on the surface.
MajorGridHeight | Indicates the height between two consecutive major grid lines.
MajorGridStyle | Specifies the style to display the major grid lines.
MajorGridWidth | Indicates the width between two consecutive major grid lines.
MinorGridColor | Indicates the color to show the minor grid lines on the surface.
MinorGridHeight | Indicates the height between two consecutive minor grid lines.
MinorGridStyle | Specifies the style to display the minor grid lines.
MinorGridWidth | Indicates the width between two consecutive minor grid lines.
MoveCorner | Moves or scrolls the surface.
MovePoint | Moves or scrolls the surface, so the cursor aligns to specified corner.
OLEDrag | Causes a component to initiate an OLE drag/drop operation.
OLEDropMode | Returns or sets how a target component handles drop operations
OverviewColor | Specifies the color to show objects outside of the surface's client area.
Picture | Retrieves or sets a graphic to be displayed in the control.
PictureDisplay | Retrieves or sets a value that indicates the way how the graphic is displayed on the control's background
PointToPosition | Converts the screen coordinates to surface position.
PoolFromPoint | Gets the Pool object from the cursor.
Pools | Retrieves the control's pools.
PositionToPoint | Converts the surface position to screen coordinates.
Redo | Redoes the next action in the surface's Redo queue.
RedoListAction | Lists the Redo actions that can be performed on the surface.
RedoRemoveAction | Removes the first redo actions that can be performed on the surface.
Refresh | Refreses the control.
RemoveSelection | Removes the elements in the selection.
ReplaceIcon | Adds a new icon, replaces an icon or clears the control's image list.
SaveXML | Saves the control's content as XML document to the specified location, using the MSXML parser.
ScrollPos | Specifies the vertical/horizontal scroll position.
ScrollTo | Scrolls the surface to giving position.
ScrollX | Indicates the x-scrolling position of the surface.
ScrollY | Indicates the y-scrolling position of the surface.
SelCount | Indicates the number of elements being selected on the surface.
SelectAll | Selects all selectable elements in the control.
Selection | Returns or sets a safe array of selected elements on the surface.
SelectObjectColor | Indicates the color to show the selected objects.
SelectObjectColorInactive | Indicates the color to show the selected objects, when the surface is not active/focused.
SelectObjectStyle | Specifies the style to display the selected object.
SelectObjectTextColor | Indicates the color to show the text for selected objects.
SelectObjectTextColorInactive | Indicates the color to show the text for selected objects, when the surface is not active/focused.
SelElement | Gets the element being selected giving its index in the selection.
ShowElements | Retrieves or sets a value that indicates whether the elements are visible or hidden.
ShowGridLines | Shows or hides the grid lines in the control.
ShowImageList | Specifies whether the control's image list window is visible or hidden.
ShowLinks | Retrieves or sets a value that indicates whether the links between elements are visible or hidden.
ShowLinksColor | Retrieves or sets a value that indicates the color to display the links based on the user selection.
ShowLinksOnCollapse | Specifies whether the links for collapsed elements are shown or hidden.
ShowLinksStyle | Retrieves or sets a value that indicates the style to display the links based on the user selection.
ShowLinksType | Specifies how the links are displayed between the elements.
ShowLinksWidth | Retrieves or sets a value that indicates the width to display the links based on the user selection.
ShowPools | Retrieves or sets a value that indicates whether the pools are visible or hidden.
ShowToolTip | Shows the specified tooltip at given position.
SingleSel | Returns or sets a value that indicates whether the user can select one or more objects.
StartBlockUndoRedo | Starts recording the UI operations as a block of undo/redo operations.
Template | Specifies the control's template.
TemplateDef | Defines inside variables for the next Template/ExecuteTemplate call.
TemplatePut | Defines inside variables for the next Template/ExecuteTemplate call.
ToolBarCaption | Specifies the HTML caption of the giving item in the control's toolbar.
ToolBarFormat | Specifies the CRD format to arrange the buttons inside the control's toolbar.
ToolBarHTMLPicture | Adds or replaces a picture in toolbar's HTML captions.
ToolBarImages | Sets at runtime the toolbar's image list. The Handle should be a handle to an Images List Control.
ToolBarRefresh | Refreshes the control's toolbar.
ToolBarReplaceIcon | Adds a new icon, replaces an icon or clears the toolbar's image list.
ToolBarToolTip | Specifies the HTML tooltip of the giving item in the control's toolbar.
ToolBarVisible | Shows or hides control's toolbar.
ToolTipDelay | Specifies the time in ms that passes before the ToolTip appears.
ToolTipFont | Retrieves or sets the tooltip's font.
ToolTipPopDelay | Specifies the period in ms of time the ToolTip remains visible if the mouse pointer is stationary within a control.
ToolTipWidth | Specifies a value that indicates the width of the tooltip window, in pixels.
Undo | Performs the last Undo operation.
UndoListAction | Lists the Undo actions that can be performed on the surface.
UndoRedoQueueLength | Gets or sets the maximum number of Undo/Redo actions that may be stored to the surface's queue.
UndoRemoveAction | Removes the last undo actions that can be performed on the surface.
UnselectAll | Unselects all elements in the control.
Version | Retrieves the control's version.
VisualAppearance | Retrieves the control's appearance.
VisualDesign | Invokes the control's VisualAppearance designer.
Zoom | Specifies the current zooming factor of the surface.
ZoomLevels | Specifies the list of zooming factors to be displayed on the control's toolbar.
ZoomMax | Specifies the maximum zooming factor of the surface.
ZoomMin | Specifies the minimum zooming factor of the surface.
ZoomStep | Specifies the step to increase or decrease the zooming factor of the surface, while the user rotates the mouse wheel.


property AlignObjectsToGridLines

property SwimLane.AlignObjectsToGridLines as AlignObjectsToGridLinesEnum
Specifies whether the objects are aligned to grid lines.

Type | Description
AlignObjectsToGridLinesEnum | An AlignObjectsToGridLinesEnum expression that indicates whether the elements on the surface are aligned to none, minor or major grid lines.
By default, the AlignObjectsToGridLines property is exAlignObjectsToNone, which indicates that no alignment is performed, when the elements are shown on the surface. Use the AlignObjectsToGridLines property to align the elements to the grid lines. Use the MinorGridWidth / MinorGridHeight property to specify the how minor grid lines are displayed/aligned. Use the MajorGridWidth / MajorGridHeight property to specify the how major grid lines are displayed/aligned. The AutoSize property of the Element specifies whether the element's size is computed based on the element's content. The CaptionAlign property specifies the alignment of the element's caption. Use the AxisStyle property to hide the axis lines or to display with a different style. Use the AxisColor property to specify the color to show the axis lines.

The following screen shot shows the axis and grid lines:


property AllowContextMenu

property SwimLane.AllowContextMenu as AllowKeysEnum
Specifies the combination of keys that allows the user to open the object's context menu.

Type | Description
AllowKeysEnum | A AllowKeysEnum expression that specifies the combination of keys that allows the user to open the object's context menu.
By default, the AllowContextMenu property is exRightClick, which indicates that control's context-menu for the object from the point can be shown once the user right-clicks it. Use the AllowContextMenu property to specify the combination of keys that allows the user to open the object's context menu. The ActionContextMenu event notifies your application once an action occurs within the object's context menu. Use the ContextMenu property to provide a custom context menu for the objects on the surface. For instance, you can set the AllowContextMenu property on exDisallow, to disable any context-menu to be shown.

By default, you can provide a context-menu for the following type of objects:

  • surface ( background of )
  • pool
  • lane
  • selection ( of elements )
  • link
  • element

The following screen shot shows the pool's default context menu:


property AllowCreateElement

property SwimLane.AllowCreateElement as AllowKeysEnum
Specifies the combination of keys that allows the user to create objects on the surface.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination to allow user creates new elements on the surface.
By default, the AllowCreateElement property is exLeftClick + exDblClick, which means that a double click on the surface will create new elements ( you can double-click and drag to create a custom-sized element ). The AllowCreateElement property specifies the combination of keys that allows the user to create objects on the surface. Set the AllowCreateElement property on exDisallow to prevent creating new elements at runtime. Use the Background(exCreateObjectColor) property to specify color or visual appearance of the creation rectangle when the user creates a new object. The CreateElement event occurs when the user creates the element on the surface. The control fires the LayoutStartChanging(exCreateElement) / LayoutEndChanging(exCreateElement) event when the user creates a new element on the surface.

The Add method adds programmatically a new element on the surface.

The order of the events when the user creates the element at runtime is:

  • LayoutStartChanging(exCreateElement), the user clicks on the surface
  • AddElement, adds the new element to the Elements collection
  • CreateElement, the user ends creating the object
  • LayoutEndChanging(exCreateElement), the user un-clicks the surface

The following screen shot shows the creating rectangle, for elements:


property AllowCreatePool

property SwimLane.AllowCreatePool as AllowKeysEnum
Specifies the combination of keys that allows the user to create pools on the surface.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination to allow user creates new pools on the surface.
By default, the AllowCreatePool property is SHIFT + exLeftClick + exDblClick, which means that a SHIFT + double click on the surface will create new pools ( you can SHIFT + double-click and drag to create a custom-sized pool ). The AllowCreatePool property specifies the combination of keys that allows the user to create objects on the surface. Set the AllowCreatePool property on exDisallow to prevent creating new pools at runtime. Use the Background(exCreateObjectColor) property to specify color or visual appearance of the creation rectangle when the user creates a new object. The CreatePool event occurs when the user creates the pool on the surface. The control fires the LayoutStartChanging(exCreatePool) / LayoutEndChanging(exCreatePool) event when the user creates a new pool on the surface.

The Add method adds programmatically a new pool on the surface.

The order of the events when the user creates the pool at runtime is:

  • LayoutStartChanging(exCreatePool), the user clicks on the surface
  • AddPool, adds the new pool to the Pools collection
  • CreatePool, the user ends creating the object
  • LayoutEndChanging(exCreatePool), the user un-clicks the surface

The following screen shot shows the creating rectangle, for pools:


property AllowDesignHeader

property SwimLane.AllowDesignHeader as AllowDesignHeaderEnum
Indicates that lanes and their parents shows on separate headers while cursor hovers the pool's header.

Type | Description
AllowDesignHeaderEnum | An AllowDesignHeaderEnum expression that determines how the pool's header is shown ( while cursor hovers it ).
By default, the AllowDesignHeader property is exDesignHeaderDefault, so the design-header ( parent-header ) is shown when the user hovers the header. The design-header ( parent-header ) is not displayed, if the DesignMode property is exDesignLock. For instance, use the AllowDesignHeader property exDesignHeaderSingle to prevent creating parent-child lanes. The Background(exPoolHorizontalHeaderBackColor) or Background(exPoolVerticalHeaderBackColor) indicates the default visual-appearance for the pool's horizontal or vertical header. For instance, you can use the AllowDesignHeader property on exDesignHeaderSingle, so the user can not create no sub-lanes at runtime. The Parent property retrieves the parent of the lane.


property AllowHeaderExt

property SwimLane.AllowHeaderExt as HeaderExtEnum
Specifies how the corners of the pool are combined with the headers of the pool.

Type | Description
HeaderExtEnum | A HeaderExtEnum expression that specifies how the corners of the pool are combined with the headers of the pool.
By default, the AllowHeaderExt property is exCornerTopLeftExtHeaderTop Or exCornerTopRightExtHeaderTop Or exCornerBottomLeftExtHeaderBottom Or exCornerBottomRightExtHeaderBottom, which indicates that the top/bottom headers take the corners like in the following picture. The AllowHeaderExt property specifies the way the left/right or/and top/bottom header extends ( for specified pool). The Background(exPoolHorizontalHeaderBackColor) property specifies the background color / visual appearance of the top/bottom header of the pool. The HeaderColor(exHeaderHorizontal) property specifies the background color/visual appearance of the horizontal header for the giving pool. The Background(exPoolVerticalHeaderBackColor) property specifies the background color / visual appearance of the left/right header of the pool. The HeaderColor(exHeaderVertical) property specifies the background color/visual appearance of the vertical header for the giving pool.

The following screen shot shows how the header is displayed if the AllowHeaderExt property is exCornerEmpty:

The following screen shot shows how the header is displayed if the AllowHeaderExt property is exCornerTopLeftExtHeaderTop Or exCornerTopRightExtHeaderTop Or exCornerBottomLeftExtHeaderBottom Or exCornerBottomRightExtHeaderBottom ( default ):

The following screen shot shows how the header is displayed if the AllowHeaderExt property is exCornerBottomLeftExtHeaderLeft Or exCornerBottomRightExtHeaderRight Or exCornerTopRightExtHeaderRight Or exCornerTopLeftExtHeaderLeft:

The following screen shot shows how the header is displayed if the AllowHeaderExt property is exCornerBottomLeftExtHeaderLeft Or exCornerBottomRightExtHeaderBottom Or exCornerTopRightExtHeaderRight Or exCornerTopLeftExtHeaderTop:


property AllowLinkControlPoint

property SwimLane.AllowLinkControlPoint as LinkControlPointEnum
Indicates the control points of the link, the user can use to customize the link.

Type | Description
LinkControlPointEnum | A LinkControlPointEnum expression that specifies the control points of the link, the user can use to customize the link.
The AllowLinkControlPoint property indicates the control points of the link, the user can use to customize the link's path. The property is applied to all links (unless the AllowControlPoint property indicates a different value). For instance, exStartControlPoint | exEndControlPoint specifies that the user can change only the start/end position of the link. The exStartControlPoint and exEndControlPoint points are marked with black squares and defines the link's control points to change the link's start (Link.StartPos property) and end (Link.EndPos property) position. The exControlPoint points are marked black circles and defines the corners of the link's path. You can remove a exControlPoint points by dragging to another, so intermediate exControlPoint points are removed. You can move all control points of the link at once, if SHIFT key is pressed. The exMiddleControlPoint points are marked with gray circles, and are displayed between two exControlPoint points, to let the use add new exControlPoint points, to redefine the link's path. The LayoutStartChanging(exLinkControlPoint) / LayoutEndChanging(exLinkControlPoint) events as soon as user starts / ends changing the link's control points

The CustomPath property specifies the link's custom path, as a string of x,y proportions separated by comma. The CustomPath property contains the proportions of link's control-points, as a "x,y,x,y,x,y,...". The x, y are proportions of link's control-points relative to the start/end points of the link. The 0,0 indicates the link's start point, while 1,1 indicates the link's end point. For instance, "0.5,0,0.5,1" defines the link to go from start (0,0) to (0.5,0), then (0.5,1), and finally to the end (1,1)


property AllowLinkObjects

property SwimLane.AllowLinkObjects as AllowKeysEnum
Specifies the combination of keys that allows the user to link the objects.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination so the user can link two elements on the surface.
By default, the AllowLinkObjects property is exLeftClick + exSHIFTKey, which indicates that the user can start linking two elements once he clicks an element while keeping the SHIFT key pressed. The AllowLinkObjects property specifies the combination of keys that allows the user to link the objects. Set the AllowLinkObjects property on exDisallow to prevent adding links between elements at runtime. The Background(exLinkObjectsInvalidColor) property specifies the color to show the invalid link. The Background(exLinkObjectsValidColor) property specifies the color to show the valid link. The control fires the LayoutStartChanging(exLinkObjects) / LayoutEndChanging(exLinkObjects) event when the user creates a new link on the surface.

The order of the events when the user links two elements at runtime is:

  • LayoutStartChanging(exLinkObjects), the user clicks on the surface
  • AllowLink, occurs to specify whether the link between two elements is possible.
  • AddLink, adds the new link to the Links collection
  • CreateLink, the user ends creating the link
  • LayoutEndChanging(exLinkObjects), the user un-clicks the surface

The following screen shot shows the link when the user links elements:


property AllowMoveDescendents

property SwimLane.AllowMoveDescendents as Boolean
Specifies whether all descendents of the focusing element are moved once the focusing element is moved.

Type | Description
Boolean | A Boolean expression that specifies whether all descendents elements are moved when focused element is moved.
By default, the AllowMoveDescendents property is True. Use the AllowMoveDescendents property to prevent moving all descendents ( children and outgoing elements ) when focused element is moved. The OutgoingLinks property returns a safe array of outgoing links ( links that starts from the element ). Use the AllowResizeSelection property to prevent resizing the entire selection when focused element is resized. Use the AllowMoveSelection property to prevent moving the entire selection when focused element is moved. Use the ExpandLinkedElements property to add expand/collapse glyphs next to elements that has outgoing links.


property AllowMoveElement

property SwimLane.AllowMoveElement as AllowKeysEnum
Specifies the combination of keys that allows the user to move the objects.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination so the user can move the element from the cursor.
By default, the AllowMoveElement property is exLeftClick, which indicates that with a simple click on the element, the user can move the element. The AllowMoveElement property specifies the keys combination so the user can move the element from the cursor. The AllowMoveSelection property indicates whether the entire selection is moved if an element in the selection is moved. Set the AllowMoveElement property on exDisallow, to prevent user to move any element in the surface. Use the AllowResizeElement property to specify whether the element can be resized at runtime. Use the Selectable property to specify whether the user can select or not an element from the surface. Since the user can not select an element, it can not move it too. The AllowMoveSurface property specifies the combination of keys that allows the user to move the surface. The control fires the LayoutStartChanging(exMoveElement) / LayoutEndChanging(exMoveElement) event when the user moves the object to a new position.


property AllowMoveLane

property SwimLane.AllowMoveLane as AllowKeysEnum
Specifies the combination of keys that allows the user to move the lanes within the pool.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination so the user can move the lane from the cursor.
By default, the AllowMoveLane property is exLeftClick, which indicates that with a simple click on the lane, the user can move the lane. The AllowMoveLane property specifies the keys combination so the user can move the lane from the cursor. The Position property specifies the position of the Lane in the Children collection. Use the AllowResizeLane property to specify whether the pool can be resized at runtime. The AllowMoveSurface property specifies the combination of keys that allows the user to move the surface. The control fires the LayoutStartChanging(exMovePool) / LayoutEndChanging(exMovePool) event when the user moves the object to a new position.


property AllowMoveNeighbors

property SwimLane.AllowMoveNeighbors as MoveNeighborsEnum
Indicates whether the neighbor elements are shifted once the selection is moved or resized, so they won't intersect the dragging objects.

Type | Description
MoveNeighborsEnum | A MoveNeighborsEnum expression that indicates whether the neighbor elements are shifted once the selection is moved or resized, so they won't intersect the dragging objects.
By default, the AllowMoveNeighbors property is exDisallowMoveNeighbors, which indicates that no neighbor elements is moved. The AllowMoveNeighbors property indicates whether the neighbor elements are shifted once the selection is moved or resized, so they won't intersect the dragging objects.


property AllowMovePool

property SwimLane.AllowMovePool as AllowKeysEnum
Specifies the combination of keys that allows the user to move the pools on the surface.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination so the user can move the pool from the cursor.
By default, the AllowMovePool property is exLeftClick, which indicates that with a simple click on the pool, the user can move the pool. The AllowMovePool property specifies the keys combination so the user can move the pool from the cursor. Use the AllowResizePool property to specify whether the pool can be resized at runtime. The AllowMoveSurface property specifies the combination of keys that allows the user to move the surface. The control fires the LayoutStartChanging(exMovePool) / LayoutEndChanging(exMovePool) event when the user moves the object to a new position. The AllowMovePoolElement property indicates that the visible elements of the moving pool are moved together with the pool. The AllowMoveSelectionPool property Indicates that the pool of the selected element, is moved together with the element.


property AllowMovePoolElement

property SwimLane.AllowMovePoolElement as Boolean
Indicates that the visible elements of the moving pool are moved together with the pool.

Type | Description
Boolean | A Boolean expression that specifies whether elements of the pool are moved once the pool is moved.
By default, the AllowMovePoolElement property is True. The AllowMovePoolElement property indicates that the visible elements of the moving pool are moved together with the pool. The AllowMoveSelectionPool property Indicates that the pool of the selected element, is moved together with the element. The AllowMovePool property specifies the keys combination so the user can move the pool from the cursor. Use the AllowResizePool property to specify whether the pool can be resized at runtime. The AllowMoveSurface property specifies the combination of keys that allows the user to move the surface. The control fires the LayoutStartChanging(exMovePool) / LayoutEndChanging(exMovePool) event when the user moves the object to a new position.


property AllowMoveSelection

property SwimLane.AllowMoveSelection as Boolean
Specifies whether the entire selection is moved once the focusing element is moved.

Type | Description
Boolean | A Boolean expression that specifies whether the entire selection is moved when focused element is moved.
By default, the AllowMoveSelection property is True. Use the AllowMoveSelection property to prevent moving the entire selection when focused element is moved. Use the AllowResizeSelection property to prevent resizing the entire selection when focused element is resized. Use the AllowMoveDescendents property to prevent moving all descendents ( children and outgoing elements ) when focused element is moved. The SingleSel property specifies whether the surface allows selecting one or multiple elements. The Selectable property of the Element object indicates whether the element is selectable or un-selectable. The AllowMoveElement property specifies the keys combination so the user can move the element from the cursor.


property AllowMoveSelectionPool

property SwimLane.AllowMoveSelectionPool as Boolean
Indicates that the pool of the selected element, is moved together with the element

Type | Description
Boolean | A Boolean expression that indicates that the pool of the selected element, is moved together with the element
By default, the AllowMoveSelectionPool property is False. The AllowMoveSelectionPool property Indicates that the pool of the selected element, is moved together with the element. The AllowMovePoolElement property indicates that the visible elements of the moving pool are moved together with the pool. The AllowMovePool property specifies the keys combination so the user can move the pool from the cursor. Use the AllowResizePool property to specify whether the pool can be resized at runtime. The AllowMoveSurface property specifies the combination of keys that allows the user to move the surface. The control fires the LayoutStartChanging(exMovePool) / LayoutEndChanging(exMovePool) event when the user moves the object to a new position.


property AllowMoveSurface

property SwimLane.AllowMoveSurface as AllowKeysEnum
Specifies the combination of keys that allows the user to move the surface.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination so the user can scroll or move the surface to a new position.
By default, the AllowMoveSurface property is exLeftClick, which means you can scroll or move the surface by clicking the left mouse button and drag it to a new position. The AllowMoveSurface property specifies the combination of keys that allows the user to move the surface. The AllowZoomSurface property specifies whether the user can zoom the surface. The AllowZoomWheelSurface property specifies whether the surface is zooming when the user rotates the mouse wheel. The AllowMoveElement property specifies whether the user move the objects as soon as clicking the element. The control's ScrollPos, ScrollX and ScrollY properties specify the surface's scroll position. The control fires the LayoutStartChanging(exSurfaceMove) / LayoutEndChanging(exSurfaceMove) event when the user moves the surface to a new position.


property AllowResizeElement

property SwimLane.AllowResizeElement as AllowKeysEnum
Specifies the combination of keys that allows the user to resize the objects.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination so the user can resize the element from the cursor.
By default, the AllowResizeElement property is exLeftClick, which indicates that with a simple click on the element's border, the user can resize the element. Use the AllowResizeElement property to specify whether the element can be resized at runtime. The AllowMoveElement property specifies the keys combination so the user can move the element from the cursor. The AllowResizeSelection property indicates whether the entire selection is resized if an element in the selection is resized. Set the AllowResizeElement property on exDisallow, to prevent user to resize any element in the surface. Use the Resizable / AutoSize property to prevent an element to be resized at runtime. The control fires the LayoutStartChanging(exResizeElement) / LayoutEndChanging(exResizeElement) event when the user resizes the object.


property AllowResizeLane

property SwimLane.AllowResizeLane as AllowKeysEnum
Specifies the combination of keys that allows the user to resize the lanes of the pool.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination so the user can resize the lane from the cursor.
By default, the AllowResizeLane property is exLeftClick, which indicates that with a simple click on the lane's border, the user can resize the lane. Use the AllowResizeLane property to specify whether the lane can be resized at runtime. The AllowMoveLane property specifies the keys combination so the user can move the lane from the cursor. Set the AllowResizeLane property on exDisallow, to prevent user to resize any lane in the surface. The control fires the LayoutStartChanging(exResizeLane) / LayoutEndChanging(exResizeLane) event when the user resizes the object.


property AllowResizePool

property SwimLane.AllowResizePool as AllowKeysEnum
Specifies the combination of keys that allows the user to resize the pools on the surface.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination so the user can resize the pool from the cursor.
By default, the AllowResizePool property is exLeftClick, which indicates that with a simple click on the pool's border, the user can resize the pool. Use the AllowResizePoolHeader property to specify whether the pool's header can be resized at runtime. Use the AllowResizePool property to specify whether the pool can be resized at runtime. The AllowMovePool property specifies the keys combination so the user can move the pool from the cursor. Set the AllowResizePool property on exDisallow, to prevent user to resize any pool in the surface. The control fires the LayoutStartChanging(exResizePool) / LayoutEndChanging(exResizePool) event when the user resizes the object. The LaneResizeType property specifies the way the lanes get resized, when its parent/pool gets resized.


property AllowResizePoolHeader

property SwimLane.AllowResizePoolHeader as AllowKeysEnum
Specifies the combination of keys that allows the user to resize the header's pool on the surface.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination so the user can resize the pool's header from the cursor.
By default, the AllowResizePoolHeader property is exLeftClick, which indicates that with a simple click on the border of the pool's header, the user can resize the pool's header. Use the AllowResizePoolHeader property to specify whether the pool's header can be resized at runtime. Use the AllowResizePool property to specify whether the pool can be resized at runtime. Set the AllowResizePoolHeader property on exDisallow, to prevent user to resize any pool's header in the surface. The control fires the LayoutStartChanging(exResizePoolHeader) / LayoutEndChanging(exResizePoolHeader) event when the user resizes the object. The LaneResizeType property specifies the way the lanes get resized, when its parent/pool gets resized.


property AllowResizeSelection

property SwimLane.AllowResizeSelection as Boolean
Specifies whether the entire selection is resized once the focusing element is resize.

Type | Description
Boolean | A Boolean expression that specifies whether all elements in the selection are resized once the focused element is resized.
By default, the AllowResizeSelection property is True. Use the AllowResizeSelection property to prevent resizing the entire selection when focused element is resized. Use the AllowMoveSelection property to prevent moving the entire selection when focused element is moved. Use the AllowMoveDescendents property to prevent moving all descendents ( children and outgoing elements ) when focused element is moved. The SingleSel property specifies whether the surface allows selecting one or multiple elements. The Selectable property of the Element object indicates whether the element is selectable or un-selectable. Use the AllowResizeElement property to specify whether the element can be resized at runtime.


property AllowScrollWheelSurface

property SwimLane.AllowScrollWheelSurface as Boolean
Enables or disables scrolling the control while rotating the mouse wheel.

Type | Description
Boolean | A Boolean expression that specifies whether the user can scroll the surface by rotating the wheel.
By default, the AllowScrollWheelSurface property is True. The AllowScrollWheelSurface property enables or disables scrolling the control while rotating the mouse wheel. The user can scroll vertically the surface by rotating the wheel up and down. If keeping the CTRL key down, the user can scroll horizontally the surface by rotating the wheel up and down. The AllowZoomWheelSurface property specifies whether the control zooms the surface while rotating the mouse wheel.


property AllowSelectNothing

property SwimLane.AllowSelectNothing as Boolean
Empties the selection when the user clicks outside of the elements.

Type | Description
Boolean | A Boolean expression that specifies whether the selection is cleared when user clicks any empty part of the surface.
By default, the AllowSelectNothing property is True, which indicates that all elements are unselected when user clicks an empty part of the surface. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface. Set the AllowSelectNothing property on False to prevent un-selecting elements when clicking any empty part of rge surface. The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The SelectionChanged event occurs once a new element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface. The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The control fires the LayoutStartChanging(exSelectNothing) / LayoutEndChanging(exSelectNothing) event when the user selects nothing ( click an empty area on the surface).


property AllowSelectObject

property SwimLane.AllowSelectObject as AllowKeysEnum
Specifies the combination of keys that allows the user to select objects on the surface.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination so the user can select elements
By default, the AllowSelectObject property is exLeftClick, which indicates that the user selects an element from the point when left clicking the element ( Selectable property is True ). Set the AllowSelectObject property on exDisallow to prevent selecting elements when clicking them. The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowToggleSelectKey property indicates the key to be used so the user can toggle a selected element. The SelectionChanged event occurs once a new element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface. The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The control fires the LayoutStartChanging(exSelectElement) / LayoutEndChanging(exSelectElement) event when the user selects the object. The HideSel property specifies whether the selected elements are highlighted or not when the control loses the focus.


property AllowSelectObjectRect

property SwimLane.AllowSelectObjectRect as AllowKeysEnum
Specifies the combination of keys that allows the user to select objects on the surface, by dragging a rectangle.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination so the user can select elements that intersects the dragging rectangle.
By default, the AllowSelectObjectRect is exLeftClick + exALTKey, which indicates that the user can start dragging a rectangle by clicking the left mouse button while keeping the ALT key, to select the elements ( Selectable property is True ) that intersect the rectangle. Set the AllowSelectObjectRect property on exDisallow to prevent selecting elements using the dragging rectangle. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. Use the Background(exSelectElementRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle. The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowToggleSelectKey property indicates the key to be used so the user can toggle a selected element. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface. The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements.

The following screen shot shows the selection rectangle:


property AllowToggleSelectKey

property SwimLane.AllowToggleSelectKey as AllowKeysEnum
Specifies the combination of keys to select multiple not-contiguously objects.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys to allow the user to select/unselect an element, in the surface view
By default, the AllowToggleSelectKey property is exCTRLKey, which indicates that the user can unselect/select an element by pressing the left mouse button and keeping the CTRL key down. The AllowToggleSelectKey property indicates the key to be used so the user can toggle a selected element. Set the AllowToggleSelectKey property on exDisallow to prevent selecting elements when clicking them ( while keeping the CTRL key ). The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The SelectionChanged event occurs once a new element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface. The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements.


property AllowUndoRedo

property SwimLane.AllowUndoRedo as Boolean
Enables or disables the Undo/Redo feature.

Type | Description
Boolean | A boolean expression that specifies whether the control supports Undo/Redofeature
By default, the AllowUndoRedo property is false, which indicates that the Undo/Redo feature us disabled. The Undo and Redo features let you remove or repeat single or multiple actions, but all actions must be undone or redone in the order you did or undid them – you can’t skip actions. For example, if you added three elements and then decide you want to undo the first change you made, you must undo all three changes. To undo an action you need to press Ctrl+Z, while for to redo something you've undone, press Ctrl+Y. The CanUndo property retrieves a value that indicates whether the control may perform the last Undo operation. The CanRedo property retrieves a value that specifies whether the control can execute the next operation in the control's Redo queue. Call the Undo method to Undo the last control operation. The Redo redoes the next action in the control's redo queue. The UndoRedoQueueLength property gets or sets the maximum number of Undo/Redo actions that may be stored to the control's queue, or in other words how many operations the control's Undo/Redo manager may store.

The records of the Undo/Redo queue may contain actions in the following format:

  • "AddElement;ELEMENTID", indicates that a new element has been created
  • "RemoveElement;ELEMENTID", indicates that an element has been removed
  • "MoveElement;ELEMENTID", indicates that an element has been moved or resized
  • "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods
  • "AddLink;LINKID", indicates that a new link has been created
  • "RemoveLink;LINKID", indicates that a link has been removed
  • "UpdateLink;LINKID", specifies that one of more properties of the link has been updated, using the StartUpdateLink / EndUpdateLink methods
  • "AddPool;POOLTID", indicates that a new pool has been created
  • "RemovePool;POOLTID", indicates that a pool has been removed
  • "MovePool;POOLID", indicates that a pool has been moved or resized
  • "UpdatePool;POOLID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

Also, the Undo/Redo queue may include:

  • "StartBlock", specifies that a block of operations begins (initiated by StartBlockUndoRedo method)
  • "EndBlock", specifies that a block of operations ends (initiated by End BlockUndoRedo method)

The LayoutStartChanging(exUndo/exRedo) / LayoutEndChanging(exUndo/exRedo) event notifies your application whenever an Undo/Redo operation is performed. The UndoListAction property lists the Undo actions that can be performed in the control. The RedoListAction property lists the Redo actions that can be performed in the control. Use the UndoRemoveAction method to remove the last actions from the undo queue. The RedoRemoveAction method removes the first action to be performed if the Redo method is invoked.

The control's toolbar displays the Undo/Redo commands if the ToolBarFormat property includes 103, Undo (undoes the last control operation, enabled only if the Undo operation is possible) and 104, Redo (redoes the next action in the control's redo queue, enabled only if the Undo operation is possible) identifiers as in the following screen shot:

The Undo/Redo toolbar-commands are automatically enabled or disabled


property AllowZoomSurface

property SwimLane.AllowZoomSurface as AllowKeysEnum
Specifies the combination of keys that allows the user to magnify or shrink the surface.

Type | Description
AllowKeysEnum | An AllowKeysEnum expression that specifies the keys combination so the user zooms the surface

By default, the AllowZoomSurface property is exMiddleClick, which indicates that clicking the middle mouse button zooms the surface. The control fires the LayoutStartChanging(exSurfaceZoom) / LayoutEndChanging(exSurfaceZoom) event when the user zooms the surface. The Zoom property specifies the current zooming factor of the surface. The ZoomMin/ZoomMax property specifies the range of the surface's zooming. The AllowZoomWheelSurface property specifies whether the user can zoom the surface by rotating the mouse wheel.

The following samples shows how you can prevent zooming the surface:

VBA (MS Access, Excell...)

With SwimLane1
    .AllowZoomSurface = 0
    .AllowZoomWheelSurface = False
    .ToolBarFormat = "-1,100"
End With

VB6

With SwimLane1
    .AllowZoomSurface = exDisallow
    .AllowZoomWheelSurface = False
    .ToolBarFormat = "-1,100"
End With

VB.NET

With Exsurface1
    .AllowZoomSurface = exontrol.EXSWIMLANELib.AllowKeysEnum.exDisallow
    .AllowZoomWheelSurface = False
    .ToolBarFormat = "-1,100"
End With

VB.NET for /COM

With AxSwimLane1
    .AllowZoomSurface = EXSWIMLANELib.AllowKeysEnum.exDisallow
    .AllowZoomWheelSurface = False
    .ToolBarFormat = "-1,100"
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
spSwimLane1->PutAllowZoomSurface(EXSWIMLANELib::exDisallow);
spSwimLane1->PutAllowZoomWheelSurface(VARIANT_FALSE);
spSwimLane1->PutToolBarFormat(L"-1,100");

C++ Builder

SwimLane1->AllowZoomSurface = Exswimlanelib_tlb::AllowKeysEnum::exDisallow;
SwimLane1->AllowZoomWheelSurface = false;
SwimLane1->ToolBarFormat = L"-1,100";

C#

exswimlane1.AllowZoomSurface = exontrol.EXSWIMLANELib.AllowKeysEnum.exDisallow;
exswimlane1.AllowZoomWheelSurface = false;
exswimlane1.ToolBarFormat = "-1,100";

JavaScript

<OBJECT classid="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
    SwimLane1.AllowZoomSurface = 0;
    SwimLane1.AllowZoomWheelSurface = false;
    SwimLane1.ToolBarFormat = "-1,100";
</SCRIPT>

C# for /COM

axSwimLane1.AllowZoomSurface = EXSWIMLANELib.AllowKeysEnum.exDisallow;
axSwimLane1.AllowZoomWheelSurface = false;
axSwimLane1.ToolBarFormat = "-1,100";

X++ (Dynamics Ax 2009)

public void init()
{
    ;

    super();

    exswimlane1.AllowZoomSurface(0/*exDisallow*/);
    exswimlane1.AllowZoomWheelSurface(false);
    exswimlane1.ToolBarFormat("-1,100");
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    AllowZoomSurface := EXSWIMLANELib.AllowKeysEnum.exDisallow;
    AllowZoomWheelSurface := False;
    ToolBarFormat := '-1,100';
end

Delphi (standard)

with SwimLane1 do
begin
    AllowZoomSurface := EXSWIMLANELib_TLB.exDisallow;
    AllowZoomWheelSurface := False;
    ToolBarFormat := '-1,100';
end

VFP

with thisform.SwimLane1
    .AllowZoomSurface = 0
    .AllowZoomWheelSurface = .F.
    .ToolBarFormat = "-1,100"
endwith

dBASE Plus

local oSwimLane

oSwimLane = form.Activex1.nativeObject
oSwimLane.AllowZoomSurface = 0
oSwimLane.AllowZoomWheelSurface = false
oSwimLane.ToolBarFormat = "-1,100"

XBasic (Alpha Five)

Dim oSwimLane as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
oSwimLane.AllowZoomSurface = 0
oSwimLane.AllowZoomWheelSurface = .f.
oSwimLane.ToolBarFormat = "-1,100"

Visual Objects

oDCOCX_Exontrol1:AllowZoomSurface := exDisallow
oDCOCX_Exontrol1:AllowZoomWheelSurface := false
oDCOCX_Exontrol1:ToolBarFormat := "-1,100"

PowerBuilder

OleObject oSwimLane

oSwimLane = ole_1.Object
oSwimLane.AllowZoomSurface = 0
oSwimLane.AllowZoomWheelSurface = false
oSwimLane.ToolBarFormat = "-1,100"

Visual DataFlex

Procedure OnCreate
    Forward Send OnCreate
    Set ComAllowZoomSurface to OLEexDisallow
    Set ComAllowZoomWheelSurface to False
    Set ComToolBarFormat to "-1,100"
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oSwimLane:AllowZoomSurface := 0/*exDisallow*/
        oSwimLane:AllowZoomWheelSurface := .F.
        oSwimLane:ToolBarFormat := "-1,100"

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


property AllowZoomWheelSurface

property SwimLane.AllowZoomWheelSurface as Boolean
Enables or disables zooming the control using the mouse wheel.

Type | Description
Boolean | A Boolean expression that specifies whether the user can zoom the surface by rotating the mouse wheel.
By default, the AllowZoomWheelSurface property is False. The AllowZoomWheelSurface property specifies whether the user can zoom the surface by rotating the mouse wheel. The AllowScrollWheelSurface property enables or disables scrolling the control while rotating the mouse wheel. The control fires the LayoutStartChanging(exSurfaceZoom) / LayoutEndChanging(exSurfaceZoom) event when the user zooms the surface. The Zoom property specifies the current zooming factor of the surface. The ZoomMin/ZoomMax property specifies the range of the surface's zooming.

The following samples shows how you can prevent zooming the surface:

VBA (MS Access, Excell...)

With SwimLane1
    .AllowZoomSurface = 0
    .AllowZoomWheelSurface = False
    .ToolBarFormat = "-1,100"
End With

VB6

With SwimLane1
    .AllowZoomSurface = exDisallow
    .AllowZoomWheelSurface = False
    .ToolBarFormat = "-1,100"
End With

VB.NET

With Exsurface1
    .AllowZoomSurface = exontrol.EXSWIMLANELib.AllowKeysEnum.exDisallow
    .AllowZoomWheelSurface = False
    .ToolBarFormat = "-1,100"
End With

VB.NET for /COM

With AxSwimLane1
    .AllowZoomSurface = EXSWIMLANELib.AllowKeysEnum.exDisallow
    .AllowZoomWheelSurface = False
    .ToolBarFormat = "-1,100"
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
spSwimLane1->PutAllowZoomSurface(EXSWIMLANELib::exDisallow);
spSwimLane1->PutAllowZoomWheelSurface(VARIANT_FALSE);
spSwimLane1->PutToolBarFormat(L"-1,100");

C++ Builder

SwimLane1->AllowZoomSurface = Exswimlanelib_tlb::AllowKeysEnum::exDisallow;
SwimLane1->AllowZoomWheelSurface = false;
SwimLane1->ToolBarFormat = L"-1,100";

C#

exswimlane1.AllowZoomSurface = exontrol.EXSWIMLANELib.AllowKeysEnum.exDisallow;
exswimlane1.AllowZoomWheelSurface = false;
exswimlane1.ToolBarFormat = "-1,100";

JavaScript

<OBJECT classid="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
    SwimLane1.AllowZoomSurface = 0;
    SwimLane1.AllowZoomWheelSurface = false;
    SwimLane1.ToolBarFormat = "-1,100";
</SCRIPT>

C# for /COM

axSwimLane1.AllowZoomSurface = EXSWIMLANELib.AllowKeysEnum.exDisallow;
axSwimLane1.AllowZoomWheelSurface = false;
axSwimLane1.ToolBarFormat = "-1,100";

X++ (Dynamics Ax 2009)

public void init()
{
    ;

    super();

    exswimlane1.AllowZoomSurface(0/*exDisallow*/);
    exswimlane1.AllowZoomWheelSurface(false);
    exswimlane1.ToolBarFormat("-1,100");
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    AllowZoomSurface := EXSWIMLANELib.AllowKeysEnum.exDisallow;
    AllowZoomWheelSurface := False;
    ToolBarFormat := '-1,100';
end

Delphi (standard)

with SwimLane1 do
begin
    AllowZoomSurface := EXSWIMLANELib_TLB.exDisallow;
    AllowZoomWheelSurface := False;
    ToolBarFormat := '-1,100';
end

VFP

with thisform.SwimLane1
    .AllowZoomSurface = 0
    .AllowZoomWheelSurface = .F.
    .ToolBarFormat = "-1,100"
endwith

dBASE Plus

local oSwimLane

oSwimLane = form.Activex1.nativeObject
oSwimLane.AllowZoomSurface = 0
oSwimLane.AllowZoomWheelSurface = false
oSwimLane.ToolBarFormat = "-1,100"

XBasic (Alpha Five)

Dim oSwimLane as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
oSwimLane.AllowZoomSurface = 0
oSwimLane.AllowZoomWheelSurface = .f.
oSwimLane.ToolBarFormat = "-1,100"

Visual Objects

oDCOCX_Exontrol1:AllowZoomSurface := exDisallow
oDCOCX_Exontrol1:AllowZoomWheelSurface := false
oDCOCX_Exontrol1:ToolBarFormat := "-1,100"

PowerBuilder

OleObject oSwimLane

oSwimLane = ole_1.Object
oSwimLane.AllowZoomSurface = 0
oSwimLane.AllowZoomWheelSurface = false
oSwimLane.ToolBarFormat = "-1,100"

Visual DataFlex

Procedure OnCreate
    Forward Send OnCreate
    Set ComAllowZoomSurface to OLEexDisallow
    Set ComAllowZoomWheelSurface to False
    Set ComToolBarFormat to "-1,100"
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oSwimLane:AllowZoomSurface := 0/*exDisallow*/
        oSwimLane:AllowZoomWheelSurface := .F.
        oSwimLane:ToolBarFormat := "-1,100"

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


property AnchorFromPoint

property SwimLane.AnchorFromPoint (X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS) as String
Retrieves the identifier of the anchor from point.

Type | Description
X as OLE_XPOS_PIXELS | A single that specifies the current X location of the mouse pointer. The x values is always expressed in client coordinates.
Y as OLE_YPOS_PIXELS | A single that specifies the current Y location of the mouse pointer. The y values is always expressed in client coordinates.
String | A String expression that specifies the identifier (id) of the anchor element from the point, or empty string if there is no anchor element at the cursor
Use the AnchorFromPoint property to determine the identifier of the anchor from the point. Use the <a id;options> anchor elements to add hyperlinks to element's caption. The control fires the AnchorClick event when the user clicks an anchor element. Use the ShowToolTip method to show the specified tooltip at given or cursor coordinates. The MouseMove event is generated continually as the mouse pointer moves across the control.

The following VB sample displays ( as tooltip ) the identifier of the anchor element from the cursor:

Private Sub SwimLane1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    With SwimLane1
        .ShowToolTip .AnchorFromPoint(-1, -1)
    End With
End Sub

The following VB.NET sample displays ( as tooltip ) the identifier of the anchor element from the cursor:

Private Sub AxSwimLane1_MouseMoveEvent(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_MouseMoveEvent) Handles AxSwimLane1.MouseMoveEvent
    With AxSwimLane1
        .ShowToolTip(.get_AnchorFromPoint(-1, -1))
    End With
End Sub

The following C# sample displays ( as tooltip ) the identifier of the anchor element from the cursor:

private void axSwimLane1_MouseMoveEvent(object sender, AxEXSWIMLANELib._ISwimLaneEvents_MouseMoveEvent e)
{
    axSwimLane1.ShowToolTip(axSwimLane1.get_AnchorFromPoint(-1, -1));
}

The following C++ sample displays ( as tooltip ) the identifier of the anchor element from the cursor:

void OnMouseMoveSwimLane1(short Button, short Shift, long X, long Y)
{
    COleVariant vtEmpty; V_VT( &vtEmpty ) = VT_ERROR;
    m_surface.ShowToolTip( m_surface.GetAnchorFromPoint( -1, -1 ), vtEmpty, vtEmpty, vtEmpty );
}

The following VFP sample displays ( as tooltip ) the identifier of the anchor element from the cursor:

*** ActiveX Control Event ***
LPARAMETERS button, shift, x, y

with thisform
    With .SwimLane1
        .ShowToolTip(.AnchorFromPoint(-1, -1))
    EndWith
endwith


property Appearance

property SwimLane.Appearance as AppearanceEnum

Retrieves or sets the control's appearance.

Type | Description
AppearanceEnum | An AppearanceEnum expression that indicates the control's appearance, or a color expression whose last 7 bits in the high significant byte of the value indicates the index of the skin in the Appearance collection, being displayed as control's borders. For instance, if the Appearance = 0x1000000, indicates that the first skin object in the Appearance collection defines the control's border. The Client object in the skin, defines the client area of the control. The list/hierarchy/chart, scrollbars are always shown in the control's client area. The skin may contain transparent objects, and so you can define round corners. The normal.ebn file contains such of objects. Use the eXButton's Skin builder to view or change this file
Use the Appearance property to specify the control's border. Use the Add method to add new skins to the control. Use the BackColor property to specify the control's background color. Use the Background(exToolTipAppearance) property indicates the visual appearance of the borders of the tooltips. You can use the VisualDesign to change the control's visual appearance at design time.

The following VB sample changes the visual aspect of the borders of the control ( please check the above picture for round corners ):

With SwimLane1
    .BeginUpdate
        .VisualAppearance.Add &H16, "c:\temp\normal.ebn"
        .Appearance = &H16000000
        .BackColor = RGB(250, 250, 250)
    .EndUpdate
End With

The following VB.NET sample changes the visual aspect of the borders of the control:

With AxSwimLane1
    .BeginUpdate()
    .VisualAppearance.Add(&H16, "c:\temp\normal.ebn")
    .Appearance = &H16000000
    .BackColor = Color.FromArgb(250, 250, 250)
    .EndUpdate()
End With

The following C# sample changes the visual aspect of the borders of the control:

axSwimLane1.BeginUpdate();
axSwimLane1.VisualAppearance.Add(0x16, "c:\\temp\\normal.ebn");
axSwimLane1.Appearance = (EXSWIMLANELib.AppearanceEnum)0x16000000;
axSwimLane1.BackColor = Color.FromArgb(250, 250, 250);
axSwimLane1.EndUpdate();

The following C++ sample changes the visual aspect of the borders of the control:

m_g2antt.BeginUpdate();
m_g2antt.GetVisualAppearance().Add( 0x16, COleVariant( "c:\\temp\\normal.ebn" ) );
m_g2antt.SetAppearance( 0x16000000 );
m_g2antt.SetBackColor( RGB(250,250,250) );
m_g2antt.EndUpdate();

The following VFP sample changes the visual aspect of the borders of the control:

with thisform.SwimLane1
    .BeginUpdate
        .VisualAppearance.Add(0x16, "c:\temp\normal.ebn")
        .Appearance = 0x16000000
        .BackColor = RGB(250, 250, 250)
    .EndUpdate
endwith


method Arrange

method SwimLane.Arrange ([ID as Variant])
Arranges the elements, starting from giving element, based on the links.

Type | Description
ID as Variant | A long expression that specifies the identifier of the element where the arrangement should start, or missing to arrange ell elements of the control.
The Arrange( ID ) method arranges the elements starting from element with the specified ID. If missing, all linked-elements are arranged. The Auto-Arrange feature arranges automatically horizontally or vertically the elements on the surface based on their relations, so they won't intersect one with another as much as possible. The Add ( of Elements collection ) method adds a new element on the surface, while Add ( of Links collection ) adds a new link between two elements. The DefArrange property defines options to perform the arrangement of the elements.

The Arrange method changes the position of the elements determined by:

  • X property, specifies the element's x-position.
  • Y property, specifies the element's y-position.

The DefArrange property can:

  • arrange elements horizontally or vertically
  • increases or decrease the distance between arranged elements.
  • align the elements based on the incoming outgoing elements.

The following screen shot shows the elements before calling Arrange method:

The following screen shot shows the elements after calling Arrange method:


method AttachTemplate

method SwimLane.AttachTemplate (Template as Variant)
Attaches a script to the current object, including the events, from a string, file, a safe array of bytes.

Type | Description
Template as Variant | A string expression that specifies the Template to execute.
The AttachTemplate/x-script code is a simple way of calling control/object's properties, methods/events using strings. The AttachTemplate features allows you to attach a x-script code to the component. The AttachTemplate method executes x-script code ( including events ), from a string, file or a safe array of bytes. This feature allows you to run any x-script code for any configuration of the component /COM, /NET or /WPF. Exontrol owns the x-script implementation in its easiest form and it does not require any VB engine or whatever to get executed. The x-script code can be converted to several programming languages using the eXHelper tool.

The following sample opens the Windows Internet Explorer once the user clicks the control ( /COM version ):

AttachTemplate("handle Click(){ CreateObject(`internetexplorer.application`){ Visible = True; Navigate(`https://www.exontrol.com`) } } ")

This script is equivalent with the following VB code:

Private Sub SwimLane1_Click()
    With CreateObject("internetexplorer.application")
        .Visible = True
        .Navigate ("https://www.exontrol.com")
    End With
End Sub

The AttachTemplate/x-script syntax in BNF notation is defined like follows:

<x-script> := <lines>
<lines> := <line>[<eol> <lines>] | <block>
<block> := <call> [<eol>] { [<eol>] <lines> [<eol>] } [<eol>]
<eol> := ";" | "\r\n"
<line> := <dim> | <createobject> | <call> | <set> | <comment> | <handle>[<eol>]{[<eol>]<lines>[<eol>]}[<eol>]
<dim> := "DIM" <variables>
<variables> := <variable> [, <variables>]
<variable> := "ME" | <identifier>
<createobject> := "CREATEOBJECT(`"<type>"`)"
<call> := <variable> | <property> | <variable>"."<property> | <createobject>"."<property>
<property> := [<property>"."]<identifier>["("<parameters>")"]
<set> := <call> "=" <value>
<property> := <identifier> | <identifier>"("[<parameters>]")"
<parameters> := <value> [","<parameters>]
<value> := <boolean> | <number> | <color> | <date> | <string> | <createobject> | <call>
<boolean> := "TRUE" | "FALSE"
<number> := "0X"<hexa> | ["-"]<integer>["."<integer>]
<digit10> := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<digit16> := <digit10> | A | B | C | D | E | F
<integer> := <digit10>[<integer>]
<hexa> := <digit16>[<hexa>]
<color> := "RGB("<integer>","<integer>","<integer>")"
<date> := "#"<integer>"/"<integer>"/"<integer>" "[<integer>":"<integer>":"<integer>"]"#"
<string> := '"'<text>'"' | "`"<text>"`"
<comment> := "'"<text>
<handle> := "handle " <event>
<event> := <identifier>"("[<eparameters>]")"
<eparameters> := <eparameter> [","<eparameters>]
<parameters> := <identifier>

where:

<identifier> indicates an identifier of the variable, property, method or event, and should start with a letter.
<type> indicates the type the CreateObject function creates, as a progID for /COM version or the assembly-qualified name of the type to create for /NET or /WPF version
<text> any string of characters

The Template or x-script is composed by lines of instructions. Instructions are separated by "\n\r" ( newline characters ) or ";" character.

The advantage of the AttachTemplate relative to Template / ExecuteTemplate is that the AttachTemplate can add handlers to the control events.


property AxisColor

property SwimLane.AxisColor as Color
Indicates the color to show the axis on the surface.

Type | Description
Color | A Color expression that indicates the color to show the axis lines.
Use the AxisColor property to specify the color to show the axis lines. Use the AxisStyle property to hide the axis lines or to display with a different style. Use the MinorGridWidth / MinorGridHeight property to specify the how minor grid lines are displayed/aligned. Use the ShowGridLines property to specify whether the control shows or hides the minor/major grid lines. Use the MajorGridWidth / MajorGridHeight property to specify the how major grid lines are displayed/aligned. Use the MajorGridStyle property to specify the style of the major lines. Use the MinorGridStyle property to specify the style of the minor lines. The MajorGridColor property specifies the color to show the major grid lines. The Minor GridColor property specifies the color to show the minor grid lines.

Use the AlignObjectsToGridLines property to align the elements to the grid lines. The AutoSize property of the Element specifies whether the element's size is computed based on the element's content. The CaptionAlign property specifies the alignment of the element's caption.


property AxisStyle

property SwimLane.AxisStyle as LinesStyleEnum
Specifies the style to display the axis lines.

Type | Description
LinesStyleEnum | A LinesStyleEnum expression that specifies the style to show the axis lines.
By default, the AxisStyle property is exLinesSolid + exLinesThick. Use the AxisStyle property to hide the axis lines or to display with a different style. Set the AxisStyle property on exNoLines to show no axis lines. Use the AxisColor property to specify the color to show the axis lines. Use the MinorGridWidth / MinorGridHeight property to specify the how minor grid lines are displayed/aligned. Use the ShowGridLines property to specify whether the control shows or hides the minor/major grid lines. Use the MajorGridWidth / MajorGridHeight property to specify the how major grid lines are displayed/aligned. Use the MajorGridStyle property to specify the style of the major lines. Use the MinorGridStyle property to specify the style of the minor lines. The MajorGridColor property specifies the color to show the major grid lines. The Minor GridColor property specifies the color to show the minor grid lines.

Use the AlignObjectsToGridLines property to align the elements to the grid lines. The AutoSize property of the Element specifies whether the element's size is computed based on the element's content. The CaptionAlign property specifies the alignment of the element's caption.


property BackColor

property SwimLane.BackColor as Color
Specifies the control's background color.

Type | Description
Color | A Color expression that defines the control's background color
Use the BackColor property to specify a solid color on the control's background. The Picture property to assign your logo on the control's background. The control uses the PictureDisplay property to determine how the picture is displayed on the control's background. The Background(exElementBorderColor) or Background(exElementBackColor) property specifies the default element's border or background color. The ForeColor property specifies the color to show the captions on the elements.

The following screen shot shows a logo on the control's background:


property Background

property SwimLane.Background(Part as BackgroundPartEnum) as Color
Returns or sets a value that indicates the background color for parts in the control.

Type | Description
Part as BackgroundPartEnum | A BackgroundPartEnum expression that indicates a part in the control.
Color | A Color expression that indicates the background color for a specified part. The last 7 bits in the high significant byte of the color to indicates the identifier of the skin being used. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the background's part.
The Background property specifies a background color or a visual appearance for specific parts in the control. If the Background property is 0, the control draws the part as default. Use the Add method to add new skins to the control. Use the Remove method to remove a specific skin from the control. Use the Clear method to remove all skins in the control. Use the BeginUpdate and EndUpdate methods to maintain performance while init the control. Use the Refresh method to refresh the control. For instance, use the Background(exElementBackColor) property to specify a solid color to be shown on the element's background.

The following samples remove the border for all elements:

VBA (MS Access, Excell...)

With SwimLane1
    .Background(88) = -1
    .Elements.Add "new element"
End With

VB6

With SwimLane1
    .Background(exElementBorderColor) = -1
    .Elements.Add "new element"
End With

VB.NET

With Exsurface1
    .set_Background32(exontrol.EXSWIMLANELib.BackgroundPartEnum.exElementBorderColor,-1)
    .Elements.Add("new element")
End With

VB.NET for /COM

With AxSwimLane1
    .set_Background(EXSWIMLANELib.BackgroundPartEnum.exElementBorderColor,-1)
    .Elements.Add("new element")
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
spSwimLane1->PutBackground(EXSWIMLANELib::exElementBorderColor,-1);
spSwimLane1->GetElements()->Add("new element",vtMissing,vtMissing);

C++ Builder

SwimLane1->Background[Exswimlanelib_tlb::BackgroundPartEnum::exElementBorderColor] = -1;
SwimLane1->Elements->Add(TVariant("new element"),TNoParam(),TNoParam());

C#

exswimlane1.set_Background32(exontrol.EXSWIMLANELib.BackgroundPartEnum.exElementBorderColor,-1);
exswimlane1.Elements.Add("new element",null,null);

JavaScript

<OBJECT classid="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
    SwimLane1.Background(88) = -1;
    SwimLane1.Elements.Add("new element",null,null);
</SCRIPT>

C# for /COM

axSwimLane1.set_Background(EXSWIMLANELib.BackgroundPartEnum.exElementBorderColor,-1);
axSwimLane1.Elements.Add("new element",null,null);

X++ (Dynamics Ax 2009)

public void init()
{
    ;

    super();

    exswimlane1.Background(88/*exElementBorderColor*/,-1);
    exswimlane1.Elements().Add("new element");
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    set_Background(EXSWIMLANELib.BackgroundPartEnum.exElementBorderColor,$ffffffff);
    Elements.Add('new element',Nil,Nil);
end

Delphi (standard)

with SwimLane1 do
begin
    Background[EXSWIMLANELib_TLB.exElementBorderColor] := $ffffffff;
    Elements.Add('new element',Null,Null);
end

VFP

with thisform.SwimLane1
    .Object.Background(88) = -1
    .Elements.Add("new element")
endwith

dBASE Plus

local oSwimLane

oSwimLane = form.Activex1.nativeObject
oSwimLane.Template = [Background(88) = -1] // oSwimLane.Background(88) = -1
oSwimLane.Elements.Add("new element")

XBasic (Alpha Five)

Dim oSwimLane as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
oSwimLane.Template = "Background(88) = -1" ' oSwimLane.Background(88) = -1
oSwimLane.Elements.Add("new element")

Visual Objects

oDCOCX_Exontrol1:[Background,exElementBorderColor] := -1
oDCOCX_Exontrol1:Elements:Add("new element",nil,nil)

PowerBuilder

OleObject oSwimLane

oSwimLane = ole_1.Object
oSwimLane.Background(88,-1)
oSwimLane.Elements.Add("new element")

Visual DataFlex

Procedure OnCreate
    Forward Send OnCreate
    Set ComBackground OLEexElementBorderColor to -1
    Variant voElements
    Get ComElements to voElements
    Handle hoElements
    Get Create (RefClass(cComElements)) to hoElements
    Set pvComObject of hoElements to voElements
        Get ComAdd of hoElements "new element" Nothing Nothing to Nothing
    Send Destroy to hoElements
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oSwimLane:SetProperty("Background",88/*exElementBorderColor*/,-1)
        oSwimLane:Elements():Add("new element")

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


method BeginUpdate

method SwimLane.BeginUpdate ()
Maintains performance when items are added to the control one at a time.

Type Description
This method prevents the control from painting until the EndUpdate method is called. Use the Refresh method to refresh the control.


property BorderHeight

property SwimLane.BorderHeight as Long
Sets or retrieves a value that indicates the border height of the control.

Type | Description
Long | A Long expression that specifies the height of the control's border where the element that does not fit the control's visible part are shown.
By default, the BorderHeight property is 2 pixels tall. The BorderWidth / BorderHeight properties specify the size on the margin where the overview elements are shown. The OverviewColor property specifies the color to show the elements when they do not fit the surface's visible area. The OverviewColor property has effect when the element is not fitting the surface's client area and it is shown on the border of the surface.

The following screen shot shows the how elements are shown when they are not visible in the surface's client area ( look on the border ) :


property BorderWidth

property SwimLane.BorderWidth as Long
Sets or retrieves a value that indicates the border width of the control.

Type | Description
Long | A Long expression that specifies the width of the control's border where the element that does not fit the control's visible part are shown.
By default, the BorderWidth property is 2 pixels wide. The BorderWidth / BorderHeight properties specify the size on the margin where the overview elements are shown. The OverviewColor property specifies the color to show the elements when they do not fit the surface's visible area. The OverviewColor property has effect when the element is not fitting the surface's client area and it is shown on the border of the surface.

The following screen shot shows the how elements are shown when they are not visible in the surface's client area ( look on the border ) :


method CancelLayoutChanging

method SwimLane.CancelLayoutChanging ()
Cancels the current layout changing operation.

Type Description
During the LayoutStartChaning event, you can call the CancelLayoutChanging method to cancel the specified operation. Calling the CancelLayoutChanging method anywhere else, has no effect.

The operations being signaled by the LayoutStartChanging / LayoutEndChanging events are:

  • xSurfaceMove, the user scrolls or moves the surface. The AllowMoveSurface property specifies the keys combination to allow user to move / scroll the surface.
  • exSurfaceZoom, the user magnifies or shrinks the surface. The AllowZoomSurface property specifies the keys combination to allow user to zoom the surface.
  • 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.
  • exResizeElement, the user resizes the object. The AllowResizeElement property specifies the keys combination to allow user to resize the object.
  • exMoveElement, the user moves the object. The AllowMoveElement property specifies the keys combination to allow user to move the object.
  • exSelectObject, the user clicks the object to get it selected. The AllowSelectObject property specifies the keys combination to allow user to select the object.
  • 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.
  • exCreateElement, the user creates an element on the surface. The AllowCreateElement property specifies the keys combination to allow user to create elements on the surface.
  • exEditElement, the user edits the element's caption. The Edit method edits the element.
  • 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.
  • 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. The DesignModes property specifies the modes to be displayed on the Design toolbar. The DesignMode property specifies the control's design mode. Depending on the design-mode, the user can select elements, pools or none.
  • exCreatePool, The user creates pools on the surface. The AllowCreatePool property specifies the keys combination to allow user to create pools on the surface.
  • exResizePool, The user resizes the pool from the surface. The AllowResizePool property specifies the keys combination to allow user to resize the pool.
  • exMovePool, The user moves the pool from the surface. The AllowMovePool property specifies the keys combination to allow user to move the pool.
  • 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.
  • 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.
  • 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.
  • 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.


property CanRedo

property SwimLane.CanRedo as Boolean
Retrieves a value that indicates whether the surface can perform a Redo operation.

Type | Description
Boolean | A boolean expression that specifies whether the control can perform a Redo operation
The CanRedo method indicates whether the control can perform a Redo operation. The AllowUndoRedo property enables or disables the Undo/Redo feature. The Redo redoes the next action in the control's redo queue. The Undo method undoes the last control operation. The UndoRedoQueueLength property gets or sets the maximum number of Undo/Redo actions that may be stored to the control's queue, or in other words how many operations the control's Undo/Redo manager may store.

The records of the Undo/Redo queue may contain actions in the following format:

  • "AddElement;ELEMENTID", indicates that a new element has been created
  • "RemoveElement;ELEMENTID", indicates that an element has been removed
  • "MoveElement;ELEMENTID", indicates that an element has been moved or resized
  • "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods
  • "AddLink;LINKID", indicates that a new link has been created
  • "RemoveLink;LINKID", indicates that a link has been removed
  • "UpdateLink;LINKID", specifies that one of more properties of the link has been updated, using the StartUpdateLink / EndUpdateLink methods
  • "AddPool;POOLTID", indicates that a new pool has been created
  • "RemovePool;POOLTID", indicates that a pool has been removed
  • "MovePool;POOLID", indicates that a pool has been moved or resized
  • "UpdatePool;POOLID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

Also, the Undo/Redo queue may include:

  • "StartBlock", specifies that a block of operations begins
  • "EndBlock", specifies that a block of operations ends

The LayoutStartChanging(exUndo/exRedo) / LayoutEndChanging(exUndo/exRedo) event notifies your application whenever an Undo/Redo operation is performed. The UndoListAction property lists the Undo actions that can be performed in the control. The RedoListAction property lists the Redo actions that can be performed in the control. Use the UndoRemoveAction method to remove the last actions from the undo queue. The RedoRemoveAction method removes the first action to be performed if the Redo method is invoked.


property CanUndo

property SwimLane.CanUndo as Boolean
Retrieves a value that indicates whether the surface can perform an Undo operation.

Type | Description
Boolean | A boolean expression that specifies whether the control can perform an Undo operation
The CanUndo method indicates whether the control can perform an Undo operation. The AllowUndoRedo property enables or disables the Undo/Redo feature. The Undo method undoes the last control operation. The Redo redoes the next action in the control's redo queue. The UndoRedoQueueLength property gets or sets the maximum number of Undo/Redo actions that may be stored to the control's queue, or in other words how many operations the control's Undo/Redo manager may store.

The records of the Undo/Redo queue may contain actions in the following format:

  • "AddElement;ELEMENTID", indicates that a new element has been created
  • "RemoveElement;ELEMENTID", indicates that an element has been removed
  • "MoveElement;ELEMENTID", indicates that an element has been moved or resized
  • "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods
  • "AddLink;LINKID", indicates that a new link has been created
  • "RemoveLink;LINKID", indicates that a link has been removed
  • "UpdateLink;LINKID", specifies that one of more properties of the link has been updated, using the StartUpdateLink / EndUpdateLink methods
  • "AddPool;POOLTID", indicates that a new pool has been created
  • "RemovePool;POOLTID", indicates that a pool has been removed
  • "MovePool;POOLID", indicates that a pool has been moved or resized
  • "UpdatePool;POOLID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

Also, the Undo/Redo queue may include:

  • "StartBlock", specifies that a block of operations begins
  • "EndBlock", specifies that a block of operations ends

The LayoutStartChanging(exUndo/exRedo) / LayoutEndChanging(exUndo/exRedo) event notifies your application whenever an Undo/Redo operation is performed. The UndoListAction property lists the Undo actions that can be performed in the control. The RedoListAction property lists the Redo actions that can be performed in the control. Use the UndoRemoveAction method to remove the last actions from the undo queue. The RedoRemoveAction method removes the first action to be performed if the Redo method is invoked.


property ContextMenu

property SwimLane.ContextMenu(Type as ContextMenuObjectTypeEnum) as String
Indicates the object's context menu.

Type | Description
Type as ContextMenuObjectTypeEnum | Indicates the type of the object where the context-menu should be shown.
String | A String expression that defines the items to be displayed on the context-menu ( explained bellow ). If empty, no context-menu is shown for the object.

The ContextMenu property defines the default object's context menu. The ActionContextMenu event notifies your application once an action occurs within the object's context menu. Use the AllowContextMenu property to specify the combination of keys that allows the user to open the object's context menu. The ContextMenuFont property retrieves or sets the context-menu's font. The Background(exContextMenuAppearance) property ( and related ) defines the control's context menu appearance. The AllowDesignHeader property on exDesignHeaderLock, specifies that no context-menu is allowed when user hovers the lane/header. Use the InvokeContextMenu methods ( like explained bellow ) to show programmatically the default or any custom context-menu for different objects on the surface.

The following screen shot shows the pool's context menu with a different appearance:

By default, you can provide a context-menu for the following type of objects:

  • surface ( background of ). The InvokeContextMenu method invokes programmatically the surface's default or customized context menu, and returns the identifier of the selected item.
  • pool. The InvokeContextMenu method invokes programmatically the pool's default or customized context menu, and returns the identifier of the selected item.
  • lane. The InvokeContextMenu method invokes programmatically the lane's default or customized context menu, and returns the identifier of the selected item.
  • selection ( of elements ). The InvokeContextMenu method invokes programmatically the selection's default or customized context menu, and returns the identifier of the selected item.
  • link. The InvokeContextMenu method invokes programmatically the link's default or customized context menu, and returns the identifier of the selected item.
  • element. The InvokeContextMenu method invokes programmatically the element's default or customized context menu, and returns the identifier of the selected item.

For instance, the "Item 1,Item 2,[sep],Check 1[chk],Check 2[chk]", generates the following screen shot:

For instance, the "Item 1,Item 2,Popup(Check 1[chk],Check 2[chk])", generates the following screen shot:

For instance, the "Calendar[id=20][img=0],MSChart[id=30],Record[id=40],Slider[id=50],Radio 1[id=100][typ=2][edit=],Radio 2[id=101][typ=2][edit=],Radio 3[id=102][typ=2][edit=],ComboBox[id=90]", generates the following screen shot:

The ContextMenu's syntax in BNF notation:

<ToString> ::= <ITEMS>
<ITEMS> ::= <ITEM>["("<ITEMS>")"][","<ITEMS>]
<ITEM> ::= <CAPTION>[<OPTIONS>]
<OPTIONS> ::= "["<OPTION>"]"["["<OPTIONS>"]"]
<OPTION> ::= <PROPERTY>["="<VALUE>]
<PROPERTY> ::= "img" | "himg" | "sep" | "id" | "typ" | "group" | "chk" | "button" | "align" | "spchk" | "show" | "rad" | "dis" | "showdis" | "bld" | "itl" | "stk" | "und" | "bg" | "fg" | "edittype" | "edit" | "mask" | "border" | "editwidth" | "captionwidth" | "height" | "grp" | "tfi" | "ttp" | "min" | "max" | "tick" | "freq" | "ticklabel" | "small" | "large" | "spin" | "ettp" | "float" | "close"

where the <CAPTION> is the HTML caption to be shown on the context menu item. The <VALUE> indicates the value of giving property.

  • img=<VALUE>, where <VALUE> is an integer expression, that indicates the index of the icon being displayed for the item.
  • himg=<VALUE>, where <VALUE> indicates the key of the picture to be displayed for the item.
  • sep, specifies an separator item
  • id=<VALUE>, where <VALUE> is an integer expression, that indicates the identifier of the item.
  • typ=<VALUE>, where <VALUE> could be one of the following:
    • 0 for regular items,
    • 1 for items that display a check/box (chk)
    • 2 to display radio buttons (rad)
  • group=<VALUE>, where <VALUE> could be a bit-or combination (+) of the following values:
    • 0 (exNoGroupPopup), No grouping is performed on the sub-menu, so the sub-items are shown to a float popup,
    • 1 (exGroupPopup), Groups and displays the sub-menu items on the current item, arranged from left to right
    • 2 (exNoGroupPopupFrame), Prevents showing the frame around each grouping item.
    • 4 (exGroupPopupCenter), Shows the grouping popup aligned to the center of the current item.
    • 8 (exGroupPopupRight), Shows the grouping popup aligned to the right of the current item.
    • 16 (exGroupPopupEqualSize), Shows the items that make the group of the same size
  • chk[=<VALUE>], where <VALUE> could be 0 for unchecked, or not zero for checked. The chk option makes the item to display a check box. If the <VALUE> is missing the item still displays an un-checked check box.
  • button=<VALUE>, where <VALUE> could be 0 for regular or not zero to show the item as a button.
  • align=<VALUE>, where <VALUE> could be one of the following:
    • 0 ( left ), to align the item's caption to the left
    • 1 ( center ), to center the item's caption
    • 2 ( right ), to align the item's caption to the right
  • spchk=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item's sub menu is shown only if the item is checked.
  • show=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the checked item shows as selected
  • rad=<VALUE>, where <VALUE> could be 0 for unchecked radio button or not zero to for checked radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored.
  • dis, specifies a disabled item
  • showdis=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item shows as disabled, but it is still enabled
  • bld, specifies that the item appears in bold
  • itl, specifies that the item appears in italics
  • stk, specifies that the item appears as strikeout
  • und, specifies that the item is underlined
  • bg=<VALUE>, specifies the item's background color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • fg=<VALUE>, specifies the item's foreground color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • edittype=<VALUE>, associates an edit field to the item, where <VALUE> could be one of the following values:
    • 0 ( exItemDisableEdit ), No editor is assigned to the current item.
    • 1 ( exItemEditText ), A text-box editor is assigned to the current item.
    • 2 ( exItemEditMask ), A masked text-box editor is assigned to the current item.
    • 3 ( exItemEditSlider ), A slider editor is assigned to the current item.
    • 4 ( exItemEditProgress ), A progress editor is assigned to the current item.
    • 5 ( exItemEditScrollBar ), A scrollbar editor is assigned to the current item.
    • 6 ( exItemEditColor), A color editor is assigned to the current item.
    • 7 ( exItemEditFont ), A font editor is assigned to the current item.
    • 256 (exItemEditReadOnly), specifies that the item's editor is shown as disabled. This value could be combined with one of the values from 0 to 7, 512
    • 512 ( exItemEditSpin ), A spin editor is assigned to the current item. This value could be combined with one of the values from 0 to 7, 256
  • edit=<VALUE>, specifies the caption to be shown in the item's edit field, where <VALUE> could be any string
  • mask=<VALUE>, specifies the mask to be applied on a masked editor. This option is valid for exItemEditMask edit. Use the float option to allow masking floating point numbers. See EditMask property for more details.
  • border=<VALUE>, specifies the border to be shown on the item's edit field, where <VALUE> could be one of the following:
    • 0 ( exEditBorderNone), No border is shown.
    • -1 (exEditBorderInset), shows an inset border
    • 1 (exEditBorderSingle), shows a frame border
  • editwidth=<VALUE>, specifies the width to show the edit field inside the item. where <VALUE> could be a long expression. A negative value indicates that the field goes to the end of the item
  • captionwidth=<VALUE>, specifies the width to show the HTML caption of the item. where <VALUE> could be a long expression. A negative value indicates that no limitation is applied to the item's caption, so no truncate caption is shown
  • height=<VALUE>, specifies the height to show the item, where <VALUE> could be a positive long expression
  • grp=<VALUE>, defines the radio group. It should be used when you define more groups of radio buttons. A group of radio buttons means that only one item could be checked at one time. The rad option specifies that the item displays a radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored. The <VALUE> could be any long expression.
  • ttp=<VALUE>, defines the item's tooltip. The <VALUE> could be any HTML string expression. The item's tooltip is shown when the user hovers the item.
  • min=<VALUE>, defines the minimum value of the edit field. The <VALUE> could be any long expression, and specifies the minimum value for any slider, progress, scroll, spin, or range editor.
  • max=<VALUE>, defines the maximum value of the edit field. The <VALUE> could be any long expression, and specifies the maximum value for any slider, progress, scroll, spin, or range editor.
  • tick=<VALUE>, defines where the ticks of the slider edit appear. This option is valid for exItemEditSlider edit. The <VALUE> could be one of the following values:
    • 0 ( exBottomRight ), The ticks are displayed on the bottom/right side.
    • 1 ( exTopLeft ), The ticks are displayed on the top/left side.
    • 2 ( exBoth ), The ticks are displayed on the both side.
    • 3 ( exNoTicks ), No ticks are displayed.
  • freq=<VALUE>, indicates the ratio of ticks on the slider edit. This option is valid for exItemEditSlider edit. The <VALUE> could be a positive long expression.
  • ticklabel=<VALUE>, indicates the HTML label to be displayed on slider's ticks. This option is valid for exItemEditSlider edit. Check the EditOption(exEditTickLabel) for more details.
  • small=<VALUE>, indicates the amount by which the edit's position changes when the user presses the arrow key ( left, right, or button ). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • large=<VALUE>, indicates the amount by which the edit's position changes when the user presses the CTRL + arrow key ( CTRL + left, CTRL + right). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • spin=<VALUE>, specifies the step to advance when user clicks the editor's spin.. This option is valid for exItemEditSpin edit. The <VALUE> could be a positive long expression.
  • ettp=<VALUE>, specifies the HTML tooltip to be shown when the item's value is changed. This option is valid for exItemEditSlider/exItemEditScrollBar edit. The <VALUE> could be any string expression.
  • float=<VALUE>, Specifies whether the mask field masks a floating point number. This option is valid for exItemEditMask edit. See See EditMask property for more details. The <VALUE> could be 0 for standard masking field or not zero to specify that the field is masking a floating point.
  • close=<VALUE>, Specifies the way the hosting menu is closed when the user clicks the item. If the close flag is missing, the <VALUE> is 3 (exCloseOnNonClickable), by default. The <VALUE> could be one of the following values:
    • 0 ( exCloseOnClick ), The popup menu is closing when the user clicks the item.
    • 1 ( exCloseOnDblClick ), The popup menu is closing when the user double clicks the item.
    • 2 ( exCloseOnClickOutside ), The popup menu is closing when the user clicks outside of the menu.
    • 3 ( exCloseOnNonClickable ), The popup menu is closing when the user clicks a non-clickable item ( regular items ). The non-clickable items is any item that's not a separator, popup, disabled or check or radio items, clicking a check-box item will makes the check box to change its state instead closing the context menu.

The following samples show how you can change/handle the element's context-menu when the user right-clicks the element:

VBA (MS Access, Excell...)

' ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
Private Sub SwimLane1_ActionContextMenu(ByVal Action As Long,ByVal ObjectType As Long,ByVal ObjectID As Variant,ByVal CommandID As Long,ByVal CommandChecked As Boolean,ByVal CommandCaption As Variant,ByVal CommandValue As Variant,Cancel As Boolean)
    With SwimLane1
        Debug.Print( Action )
        Debug.Print( CommandCaption )
    End With
End Sub

With SwimLane1
    .BeginUpdate
    .Elements.Add "element",0,0
    .ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
    .EndUpdate
End With

VB6

' ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
Private Sub SwimLane1_ActionContextMenu(ByVal Action As EXSWIMLANELibCtl.ContextMenuObjectActionEnum,ByVal ObjectType As EXSWIMLANELibCtl.ContextMenuObjectTypeEnum,ByVal ObjectID As Variant,ByVal CommandID As Long,ByVal CommandChecked As Boolean,ByVal CommandCaption As Variant,ByVal CommandValue As Variant,Cancel As Boolean)
    With SwimLane1
        Debug.Print( Action )
        Debug.Print( CommandCaption )
    End With
End Sub

With SwimLane1
    .BeginUpdate
    .Elements.Add "element",0,0
    .ContextMenu(exContextMenuElement) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
    .EndUpdate
End With

VB.NET

' ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
Private Sub Exswimlane1_ActionContextMenu(ByVal sender As System.Object,ByVal Action As exontrol.EXSWIMLANELib.ContextMenuObjectActionEnum,ByVal ObjectType As exontrol.EXSWIMLANELib.ContextMenuObjectTypeEnum,ByVal ObjectID As Object,ByVal CommandID As Integer,ByVal CommandChecked As Boolean,ByVal CommandCaption As Object,ByVal CommandValue As Object,ByRef Cancel As Boolean) Handles Exswimlane1.ActionContextMenu
    With Exswimlane1
        Debug.Print( Action )
        Debug.Print( CommandCaption )
    End With
End Sub

With Exswimlane1
    .BeginUpdate()
    .Elements.Add("element",0,0)
    .set_ContextMenu(exontrol.EXSWIMLANELib.ContextMenuObjectTypeEnum.exContextMenuElement,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])")
    .EndUpdate()
End With

VB.NET for /COM

' ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
Private Sub AxSwimLane1_ActionContextMenu(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_ActionContextMenuEvent) Handles AxSwimLane1.ActionContextMenu
    With AxSwimLane1
        Debug.Print( e.action )
        Debug.Print( e.commandCaption )
    End With
End Sub

With AxSwimLane1
    .BeginUpdate()
    .Elements.Add("element",0,0)
    .set_ContextMenu(EXSWIMLANELib.ContextMenuObjectTypeEnum.exContextMenuElement,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])")
    .EndUpdate()
End With

C++

// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
void OnActionContextMenuSwimLane1(long Action,long ObjectType,VARIANT ObjectID,long CommandID,BOOL CommandChecked,VARIANT CommandCaption,VARIANT CommandValue,BOOL FAR* Cancel)
{
    /*
        Copy and paste the following directives to your header file as
        it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'
        #import <ExSwimLane.dll>
        using namespace EXSWIMLANELib;
    */
    EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
    OutputDebugStringW( L"Action" );
    OutputDebugStringW( L"CommandCaption" );
}

EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
spSwimLane1->BeginUpdate();
spSwimLane1->GetElements()->Add("element",long(0),long(0));
spSwimLane1->PutContextMenu(EXSWIMLANELib::exContextMenuElement,L"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])");
spSwimLane1->EndUpdate();

C++ Builder

// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
void __fastcall TForm1::SwimLane1ActionContextMenu(TObject *Sender,Exswimlanelib_tlb::ContextMenuObjectActionEnum Action,Exswimlanelib_tlb::ContextMenuObjectTypeEnum ObjectType,Variant ObjectID,long CommandID,VARIANT_BOOL CommandChecked,Variant CommandCaption,Variant CommandValue,VARIANT_BOOL * Cancel)
{
    OutputDebugString( L"Action" );
    OutputDebugString( L"CommandCaption" );
}

SwimLane1->BeginUpdate();
SwimLane1->Elements->Add(TVariant("element"),TVariant(0),TVariant(0));
SwimLane1->ContextMenu[Exswimlanelib_tlb::ContextMenuObjectTypeEnum::exContextMenuElement] = L"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])";
SwimLane1->EndUpdate();

C#

// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
private void exswimlane1_ActionContextMenu(object sender,exontrol.EXSWIMLANELib.ContextMenuObjectActionEnum Action,exontrol.EXSWIMLANELib.ContextMenuObjectTypeEnum ObjectType,object ObjectID,int CommandID,bool CommandChecked,object CommandCaption,object CommandValue,ref bool Cancel)
{
    System.Diagnostics.Debug.Print( Action.ToString() );
    System.Diagnostics.Debug.Print( CommandCaption.ToString() );
}
//this.exswimlane1.ActionContextMenu += new exontrol.EXSWIMLANELib.exg2antt.ActionContextMenuEventHandler(this.exswimlane1_ActionContextMenu);

exswimlane1.BeginUpdate();
exswimlane1.Elements.Add("element",0,0);
exswimlane1.set_ContextMenu(exontrol.EXSWIMLANELib.ContextMenuObjectTypeEnum.exContextMenuElement,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])");
exswimlane1.EndUpdate();

JScript/JavaScript

<BODY onload="Init()">
<SCRIPT FOR="SwimLane1" EVENT="ActionContextMenu(Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)" LANGUAGE="JScript">
    alert( Action );
    alert( CommandCaption );
</SCRIPT>

<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
function Init()
{
    SwimLane1.BeginUpdate();
    SwimLane1.Elements.Add("element",0,0);
    SwimLane1.ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])";
    SwimLane1.EndUpdate();
}
</SCRIPT>
</BODY>

VBScript

<BODY onload="Init()">
<SCRIPT LANGUAGE="VBScript">
Function SwimLane1_ActionContextMenu(Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)
    With SwimLane1
        alert( Action )
        alert( CommandCaption )
    End With
End Function
</SCRIPT>

<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="VBScript">
Function Init()
    With SwimLane1
        .BeginUpdate
        .Elements.Add "element",0,0
        .ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
        .EndUpdate
    End With
End Function
</SCRIPT>
</BODY>

C# for /COM

// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
private void axSwimLane1_ActionContextMenu(object sender, AxEXSWIMLANELib._ISwimLaneEvents_ActionContextMenuEvent e)
{
    System.Diagnostics.Debug.Print( e.action.ToString() );
    System.Diagnostics.Debug.Print( e.commandCaption.ToString() );
}
//this.axSwimLane1.ActionContextMenu += new AxEXSWIMLANELib._ISwimLaneEvents_ActionContextMenuEventHandler(this.axSwimLane1_ActionContextMenu);

axSwimLane1.BeginUpdate();
axSwimLane1.Elements.Add("element",0,0);
axSwimLane1.set_ContextMenu(EXSWIMLANELib.ContextMenuObjectTypeEnum.exContextMenuElement,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])");
axSwimLane1.EndUpdate();

X++ (Dynamics Ax 2009)

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

public void init()
{
    ;

    super();

    exswimlane1.BeginUpdate();
    exswimlane1.Elements().Add("element",COMVariant::createFromInt(0),COMVariant::createFromInt(0));
    exswimlane1.ContextMenu(4/*exContextMenuElement*/,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])");
    exswimlane1.EndUpdate();
}

Delphi 8 (.NET only)

// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
procedure TWinForm1.AxSwimLane1_ActionContextMenu(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_ActionContextMenuEvent);
begin
    with AxSwimLane1 do
    begin
        OutputDebugString( e.action );
        OutputDebugString( e.commandCaption );
    end
end;

with AxSwimLane1 do
begin
    BeginUpdate();
    Elements.Add('element',TObject(0),TObject(0));
    set_ContextMenu(EXSWIMLANELib.ContextMenuObjectTypeEnum.exContextMenuElement,'Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])');
    EndUpdate();
end

Delphi (standard)

// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
procedure TForm1.SwimLane1ActionContextMenu(ASender: TObject; Action : ContextMenuObjectActionEnum;ObjectType : ContextMenuObjectTypeEnum;ObjectID : OleVariant;CommandID : Integer;CommandChecked : WordBool;CommandCaption : OleVariant;CommandValue : OleVariant;var Cancel : WordBool);
begin
    with SwimLane1 do
    begin
        OutputDebugString( Action );
        OutputDebugString( CommandCaption );
    end
end;

with SwimLane1 do
begin
    BeginUpdate();
    Elements.Add('element',OleVariant(0),OleVariant(0));
    ContextMenu[EXSWIMLANELib_TLB.exContextMenuElement] := 'Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])';
    EndUpdate();
end

VFP

*** ActionContextMenu event - Occurs when the user selects an item from the object's context menu. ***
LPARAMETERS Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel
    with thisform.SwimLane1
        DEBUGOUT( Action )
        DEBUGOUT( CommandCaption )
    endwith

with thisform.SwimLane1
    .BeginUpdate
    .Elements.Add("element",0,0)
    .Object.ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
    .EndUpdate
endwith

dBASE Plus

/*
with (this.EXSWIMLANEACTIVEXCONTROL1.nativeObject)
    ActionContextMenu = class::nativeObject_ActionContextMenu
endwith
*/
// Occurs when the user selects an item from the object's context menu.
function nativeObject_ActionContextMenu(Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)
    local oSwimLane
    oSwimLane = form.EXSWIMLANEACTIVEXCONTROL1.nativeObject
    ? Str(Action)
    ? Str(CommandCaption)
return

local oSwimLane

oSwimLane = form.EXSWIMLANEACTIVEXCONTROL1.nativeObject
oSwimLane.BeginUpdate()
oSwimLane.Elements.Add("element",0,0)
oSwimLane.Template = [ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"] // oSwimLane.ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
oSwimLane.EndUpdate()

XBasic (Alpha Five)

' Occurs when the user selects an item from the object's context menu.
function ActionContextMenu as v (Action as OLE::Exontrol.SwimLane.1::ContextMenuObjectActionEnum,ObjectType as OLE::Exontrol.SwimLane.1::ContextMenuObjectTypeEnum,ObjectID as A,CommandID as N,CommandChecked as L,CommandCaption as A,CommandValue as A,Cancel as L)
    Dim oSwimLane as P
    oSwimLane = topparent:CONTROL_ACTIVEX1.activex
    ? Action
    ? CommandCaption
end function

Dim oSwimLane as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
oSwimLane.BeginUpdate()
oSwimLane.Elements.Add("element",0,0)
oSwimLane.Template = "ContextMenu(4) = `Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])`" // oSwimLane.ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
oSwimLane.EndUpdate()

Visual Objects

METHOD OCX_Exontrol1ActionContextMenu(Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel) CLASS MainDialog
    // ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
    OutputDebugString(String2Psz( AsString(Action) ))
    OutputDebugString(String2Psz( AsString(CommandCaption) ))
RETURN NIL

oDCOCX_Exontrol1:BeginUpdate()
oDCOCX_Exontrol1:Elements:Add("element",0,0)
oDCOCX_Exontrol1:[ContextMenu,exContextMenuElement] := "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
oDCOCX_Exontrol1:EndUpdate()

PowerBuilder

/*begin event ActionContextMenu(long Action,long ObjectType,any ObjectID,long CommandID,boolean CommandChecked,any CommandCaption,any CommandValue,boolean Cancel) - Occurs when the user selects an item from the object's context menu.*/
/*
    OleObject oSwimLane
    oSwimLane = ole_1.Object
    MessageBox("Information",string( String(Action) ))
    MessageBox("Information",string( String(CommandCaption) ))
*/
/*end event ActionContextMenu*/

OleObject oSwimLane

oSwimLane = ole_1.Object
oSwimLane.BeginUpdate()
oSwimLane.Elements.Add("element",0,0)
oSwimLane.ContextMenu(4,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])")
oSwimLane.EndUpdate()

Visual DataFlex

// Occurs when the user selects an item from the object's context menu.
Procedure OnComActionContextMenu OLEContextMenuObjectActionEnum llAction OLEContextMenuObjectTypeEnum llObjectType Variant llObjectID Integer llCommandID Boolean llCommandChecked Variant llCommandCaption Variant llCommandValue Boolean llCancel
    Forward Send OnComActionContextMenu llAction llObjectType llObjectID llCommandID llCommandChecked llCommandCaption llCommandValue llCancel
    Showln llAction llCommandCaption
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 "element" 0 0 to Nothing
    Send Destroy to hoElements
    Set ComContextMenu OLEexContextMenuElement to "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
    Send ComEndUpdate
End_Procedure

XBase++

PROCEDURE OnActionContextMenu(oSwimLane,Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)
    DevOut( Transform(Action,"") )
    DevOut( Transform(CommandCaption,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oSwimLane:ActionContextMenu := {|Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel| OnActionContextMenu(oSwimLane,Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)} /*Occurs when the user selects an item from the object's context menu.*/

        oSwimLane:BeginUpdate()
        oSwimLane:Elements():Add("element",0,0)
        oSwimLane:SetProperty("ContextMenu",4/*exContextMenuElement*/,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])")
        oSwimLane:EndUpdate()

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


property ContextMenuFont

property SwimLane.ContextMenuFont as IFontDisp
Retrieves or sets the context-menu's font.

Type | Description
IFontDisp | A Font object that specifies the font to show the control's context menu.

The ContextMenuFont property retrieves or sets the context-menu's font. The Background(exContextMenuAppearance) property ( and related ) defines the control's context menu appearance. The ContextMenu property defines the default object's context menu. The ActionContextMenu event notifies your application once an action occurs within the object's context menu. Use the AllowContextMenu property to specify the combination of keys that allows the user to open the object's context menu. The AllowDesignHeader property on exDesignHeaderLock, specifies that no context-menu is allowed when user hovers the lane/header. Use the InvokeContextMenu methods ( like explained bellow ) to show programmatically the default or any custom context-menu for different objects on the surface.

The following screen shot shows the control's context menu with a different appearance:

By default, you can provide a context-menu for the following type of objects:

  • surface ( background of ). The InvokeContextMenu method invokes programmatically the surface's default or customized context menu, and returns the identifier of the selected item.
  • pool. The InvokeContextMenu method invokes programmatically the pool's default or customized context menu, and returns the identifier of the selected item.
  • lane. The InvokeContextMenu method invokes programmatically the lane's default or customized context menu, and returns the identifier of the selected item.
  • selection ( of elements ). The InvokeContextMenu method invokes programmatically the selection's default or customized context menu, and returns the identifier of the selected item.
  • link. The InvokeContextMenu method invokes programmatically the link's default or customized context menu, and returns the identifier of the selected item.
  • element. The InvokeContextMenu method invokes programmatically the element's default or customized context menu, and returns the identifier of the selected item.


property ContextMenuObjectFromID

property SwimLane.ContextMenuObjectFromID (ObjectType as ContextMenuObjectTypeEnum, [ObjectID as Variant]) as Object
Gives the context menu object based on the type and identifier.

Type | Description
ObjectType as ContextMenuObjectTypeEnum | Indicates the type of the object where the action occurs.
ObjectID as Variant | Specifies the unique identifier of the object which hosts the context menu. The ObjectID values depends on the type of the object as explained bellow.
Object | An object on the surface with giving identifier.
The ContextMenuObjectFromID(ObjectType,ObjectID) property determines the object that hosts the context-menu, such as element, link, pool and so on. The ActionContextMenu event notifies your application once an action occurs within the object's context menu. Use the ContextMenu property to provide a custom context menu for the objects on the surface. Use the AllowContextMenu property to specify the combination of keys that allows the user to open the object's context menu.

By default, you can provide a context-menu for the following type of objects:

  • surface. The ObjectID parameter is ignored. The ContextMenuObjectFromID returns a reference to the surface object itself.
  • pool. The ObjectID parameter indicates the identifier of the pool as returned by the ID property of the pool. The ContextMenuObjectFromID returns a reference to the pool object with giving identifier.
  • lane. The ObjectID parameter indicates the identifier of the lane as returned by the ID property of the lane. The ContextMenuObjectFromID returns a reference to the lane object with giving identifier.
  • selection ( of elements ). The ObjectID parameter is ignored. The ContextMenuObjectFromID returns a reference to the Elements collection.
  • link. The ObjectID parameter indicates the identifier of the link as returned by the ID property of the link. The ContextMenuObjectFromID returns a reference to the link object with giving identifier.
  • element. The ObjectID parameter indicates the identifier of the element as returned by the ID property of the link. The ContextMenuObjectFromID returns a reference to the element object with giving identifier.


property Coord

property SwimLane.Coord as CoordEnum
Specifies the type of coordinates the elements of the surface display in.

Type | Description
CoordEnum | A CoordEnum expression that specifies the type of coordinates the elements of the surface display in.
By default, the Coord property is exDefCoord, which indicates that the positive coordinates always show bottom-right to the origin. The Coord property can be used to allow the surface to display positive coordinates only.

The following screen shot shows the surface using default coordinates:

The following screen shot shows the surface using Cartesian coordinates:


property CopyTo

property SwimLane.CopyTo (File as String) as Variant
Exports the control's view to an EMF file.

Type | Description
File as String A String expression that indicates the name of the file to be saved. If present, the CopyTo property retrieves True, if the operation succeeded, else False it is failed. If the File parameter is missing or empty, the CopyTo property retrieves an one dimension safe array of bytes that contains the EMF content.

If the File parameter is not empty, the extension ( characters after last dot ) determines the graphical/ format of the file to be saved as follows:

  • *.bmp *.dib *.rle, saves the control's content in BMP format.
  • *.jpg *.jpe *.jpeg *.jfif, saves the control's content in JPEG format.
  • *.gif, , saves the control's content in GIF format.
  • *.tif *.tiff, saves the control's content in TIFF format.
  • *.png, saves the control's content in PNG format.
  • *.pdf, saves the control's content to PDF format. The File argument may carry up to 4 parameters separated by the | character in the following order: filename.pdf | paper size | margins | options. In other words, you can specify the file name of the PDF document, the paper size, the margins and options to build the PDF document. By default, the paper size is 210 mm × 297 mm ( A4 format ) and the margins are 12.7 mm 12.7 mm 12.7 mm 12.7 mm. The units for the paper size and margins can be pt for PostScript Points, mm for Millimeters, cm for Centimeters, in for Inches and px for pixels. If PostScript Points are used if unit is missing. For instance, 8.27 in x 11.69 in, indicates the size of the paper in inches. Currently, the options can be single, which indicates that the control's content is exported to a single PDF page. For instance, the CopyTo("shot.pdf|33.11 in x 46.81 in|0 0 0 0|single") exports the control's content to an A0 single PDF page, with no margins.
  • *.emf or any other extension determines the control to save the control's content in EMF format.

For instance, the CopyTo("c:\temp\snapshot.png") property saves the control's content in PNG format to snapshot.png file.
Variant | A boolean expression that indicates whether the File was successful saved, if the File parameter is not empty, or a one dimension safe array of bytes, if the File parameter is empty string.
The CopyTo method copies/exports the control's view to BMP, PNG, JPG, GIF, TIFF, PDF or EMF graphical files, including no scroll bars.
  • The BMP file format, also known as bitmap image file or device independent bitmap (DIB) file format or simply a bitmap, is a raster graphics image file format used to store bitmap digital images, independently of the display device (such as a graphics adapter)
  • The JPEG file format (seen most often with the .jpg extension) is a commonly used method of lossy compression for digital images, particularly for those images produced by digital photography.
  • The GIF ( Graphics Interchange Format ) is a bitmap image format that was introduced by CompuServe in 1987 and has since come into widespread usage on the World Wide Web due to its wide support and portability.
  • The TIFF (Tagged Image File Format) is a computer file format for storing raster graphics images, popular among graphic artists, the publishing industry, and both amateur and professional photographers in general.
  • The PNG (Portable Network Graphics) is a raster graphics file format that supports lossless data compression. PNG was created as an improved, non-patented replacement for Graphics Interchange Format (GIF), and is the most used lossless image compression format on the Internet
  • The PDF (Portable Document Format) is a file format used to present documents in a manner independent of application software, hardware, and operating systems. Each PDF file encapsulates a complete description of a fixed-layout flat document, including the text, fonts, graphics, and other information needed to display it.
  • The EMF ( Enhanced Metafile Format ) is a 32-bit format that can contain both vector information and bitmap information. This format is an improvement over the Windows Metafile Format and contains extended features, such as the following

    • Built-in scaling information
    • Built-in descriptions that are saved with the file
    • Improvements in color palettes and device independence

    The EMF format is an extensible format, which means that a programmer can modify the original specification to add functionality or to meet specific needs. You can paste this format to Microsoft Word, Excel, Front Page, Microsoft Image Composer and any application that know to handle EMF formats.

The following VB sample saves the control's content to a EMF file:

If (Control.CopyTo("c:\temp\test.emf")) Then
    MsgBox "test.emf file created, open it using the mspaint editor."
End If

The following VB sample prints the EMF content ( as bytes, File parameter is empty string ):

Dim i As Variant
For Each i In Control.CopyTo("")
    Debug.Print i
Next


property DefArrange

property SwimLane.DefArrange(Option as DefArrangeEnum) as Variant
Retrieves or sets an option for Arrange method.

Type | Description
Option as DefArrangeEnum | A DefArrangeEnum expression that specifies the property of the Arrange method to be accessed
Variant | A VARIANT expression that specifies the value of the giving property.
The DefArrange property retrieves or sets an option for Arrange method. The Arrange method arranges the elements, starting from giving element, based on the links. Changing any DefArrangeEnum properties has effect at the next Arrange call only.

For instance, you can use the DefArrange property to:

  • arrange elements horizontally or vertically
  • increases or decrease the distance between arranged elements.
  • align the elements based on the incoming outgoing elements.


property DefPoolHeaderCaptionFormat

property SwimLane.DefPoolHeaderCaptionFormat(HorizontalHeader as Boolean) as String
Specifies the default format/text of the caption to be shown on the lane's header.

Type | Description
HorizontalHeader as Boolean | A Boolean expression that specifies the horizontal or vertical header of the pool.
String | A string expression that defines the default caption of the header, when new lanes are created.
By default, the DefPoolHeaderCaptionFormat(True) property is "Phase %i", and the DefPoolHeaderCaptionFormat(False) property is "Lane %i". The %i indicates the index of the lane (1-based). The Caption property defines the caption to be shown on the header of the lane.

The following screen shot shows different caption for lanes:

The DefPoolHeaderCaptionFormat property supports the following HTML elements:

  • <b> ... </b> displays the text in bold
  • <i> ... </i> displays the text in italics
  • <u> ... </u> underlines the text
  • <s> ... </s> Strike-through text
  • <a id;options> ... </a> displays an anchor element that can be clicked. An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link.The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The control fires the AnchorClick(AnchorID, Options) event when the user clicks the anchor element. The FormatAnchor property customizes the visual effect for anchor elements.

    The control supports expandable HTML captions feature which allows you to expand(show)/collapse(hide) different information using <a ;exp=> or <a ;e64=> anchor tags. The exp/e64 field of the anchor stores the HTML line/lines to show once the user clicks/collapses/expands the caption.

    • exp, stores the plain text to be shown once the user clicks the anchor, such as <a ;exp=show lines>
    • e64, encodes in BASE64 the HTML text to be shown once the user clicks the anchor, such as <a ;e64=gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA>+</a> that displays show lines- in gray when the user clicks the + anchor. The gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA string encodes the <fgcolor 808080>show lines<a>-</a></fgcolor> The Decode64Text/Encode64Text methods of the eXPrint can be used to decode/encode e64 fields.

    Any ex-HTML caption can be transformed to an expandable-caption, by inserting the anchor ex-HTML tag. For instance, <solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3 shows the Header in underlined and bold on the first line and Line1, Line2, Line3 on the rest. The show lines is shown instead of Line1, Line2, Line3 once the user clicks the + sign.

  • <font face;size> ... </font> displays portions of text with a different font and/or different size. For instance, the <font Tahoma;12>bit</font> draws the bit text using the Tahoma font, on size 12 pt. If the name of the font is missing, and instead size is present, the current font is used with a different size. For instance, <font ;12>bit</font> displays the bit text using the current font, but with a different size.
  • <fgcolor rrggbb> ... </fgcolor> or <fgcolor=rrggbb> ... </fgcolor> displays text with a specified foreground color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <bgcolor rrggbb> ... </bgcolor> or <bgcolor=rrggbb> ... </bgcolor> displays text with a specified background color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <solidline rrggbb> ... </solidline> or <solidline=rrggbb> ... </solidline> draws a solid-line on the bottom side of the current text-line, of specified RGB color. The <solidline> ... </solidline> draws a black solid-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <dotline rrggbb> ... </dotline> or <dotline=rrggbb> ... </dotline> draws a dot-line on the bottom side of the current text-line, of specified RGB color. The <dotline> ... </dotline> draws a black dot-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <upline> ... </upline> draws the line on the top side of the current text-line (requires <solidline> or <dotline>).
  • <r> right aligns the text
  • <c> centers the text
  • <br> forces a line-break
  • <img>number[:width]</img> inserts an icon inside the text. The number indicates the index of the icon being inserted. Use the Images method to assign a list of icons to your chart. The last 7 bits in the high significant byte of the number expression indicates the identifier of the skin being used to paint the object. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the part. The width is optional and indicates the width of the icon being inserted. Using the width option you can overwrite multiple icons getting a nice effect. By default, if the width field is missing, the width is 18 pixels.
  • <img>key[:width]</img> inserts a custom size picture into the text being previously loaded using the HTMLPicture property. The Key parameter indicates the key of the picture being displayed. The Width parameter indicates a custom size, if you require to stretch the picture, else the original size of the picture is used.
  • & glyph characters as &amp; ( & ), &lt; ( < ), &gt; ( > ), &qout; ( " ) and &#number; ( the character with specified code ), For instance, the &#8364; displays the EUR character. The & ampersand is only recognized as markup when it is followed by a known letter or a #character and a digit. For instance if you want to display <b>bold</b> in HTML caption you can use &lt;b&gt;bold&lt;/b&gt;
  • <off offset> ... </off> defines the vertical offset to display the text/element. The offset parameter defines the offset to display the element. This tag is inheritable, so the offset is keep while the associated </off> tag is found. You can use the <off offset> HTML tag in combination with the <font face;size> to define a smaller or a larger font to be displayed. For instance: Text with <font ;7><off 6>subscript displays the text such as: Text with subscript The Text with <font ;7><off -6>superscript displays the text such as: Text with subscript
  • <gra rrggbb;mode;blend> ... </gra> defines a gradient text. The text color or <fgcolor> defines the starting gradient color, while the rr/gg/bb represents the red/green/blue values of the ending color, 808080 if missing as gray. The mode is a value between 0 and 4, 1 if missing, and blend could be 0 or 1, 0 if missing. The <font> HTML tag can be used to define the height of the font. Any of the rrggbb, mode or blend field may not be specified. The <gra> with no fields, shows a vertical gradient color from the current text color to gray (808080). For instance the <font ;18><gra FFFFFF;1;1>gradient-center</gra></font> generates the following picture:
  • <out rrggbb;width> ... </out> shows the text with outlined characters, where rr/gg/bb represents the red/green/blue values of the outline color, 808080 if missing as gray, width indicates the size of the outline, 1 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><out 000000><fgcolor=FFFFFF>outlined</fgcolor></out></font> generates the following picture:
  • <sha rrggbb;width;offset> ... </sha> define a text with a shadow, where rr/gg/bb represents the red/green/blue values of the shadow color, 808080 if missing as gray, width indicates the size of shadow, 4 if missing, and offset indicates the offset from the origin to display the text's shadow, 2 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><sha>shadow</sha></font> generates the following picture:

    or <font ;31><sha 404040;5;0><fgcolor=FFFFFF>outline anti-aliasing</fgcolor></sha></font> gets:


property DesignMode

property SwimLane.DesignMode as DesignModeEnum
Specifies the surface's design mode.

Type | Description
DesignModeEnum | A DesignModeEnum expression that determines the control's design-mode.
By default, the DesignMode property is exDesign, which indicates that the user can update any element or pool on the surface. For instance, if the control's DesignMode property is exDesignElements, only elements are visible for create, move, resize or edit, and so even if the user is right-clicking a pool, no context-menu for pool will be shown. In other words, the DesignMode property determines what objects on the surface are visible when the user try to create, move, resize or edit them. The DesignModes property specifies the list of design-modes to be shown on the control's toolbar. Remove the identifier 102 from the ToolBarFormat property to prevent shown the Design item in the control's toolbar.

The object's context menu is shown only, if the control's DesignMode property is not exDesignLock. Use the ContextMenu property to provide a custom context menu for the objects on the surface. Use the AllowContextMenu property to specify the combination of keys that allows the user to open the object's context menu. The AllowDesignHeader property on exDesignHeaderLock, specifies that no context-menu is allowed when user hovers the lane/header.


property DesignModes

property SwimLane.DesignModes as String
Specifies the list of design modes to be displayed on the control's toolbar.

Type | Description
String | A String expression that specifies the list of design-modes to be displayed on the Design sub-menu of the control's toolbar. The list is separated by comma character, while the inside elements shoule be of caption#designmode, where the caption is the text to be shown on the drop-down menu, while the designmode is a long expression defined by the DesignModeEnum expression.
By default, the DesignModes property is "Lock#0,Design#3,Design Element#1,Design Pool#2". The DesignModes property specifies the list of design-modes to be shown on the control's toolbar. The DesignMode property specifies the current design-mode. The ToolBarFormat property specifies the CRD format to be shown the control's toolbar. Remove the identifier 102 from the ToolBarFormat property to prevent shown the Design item in the control's toolbar.

The object's context menu is shown only, if the control's DesignMode property is not exDesignLock. Use the ContextMenu property to provide a custom context menu for the objects on the surface. Use the AllowContextMenu property to specify the combination of keys that allows the user to open the object's context menu. The AllowDesignHeader property on exDesignHeaderLock, specifies that no context-menu is allowed when user hovers the lane/header.


property EditContextMenuItems

property SwimLane.EditContextMenuItems as String
Specifies the control's context menu, while editing the event.

Type | Description
String | A string expression that indicates the items to be shown on the edit's context menu.

The edit's context menu is displayed if the user right clicks while editing the event. Use the EditContextMenuItems property to change the edit's context menu.

By default the EditContextMenuItems property is:

Command[id=57625][captionwidth=48][group=19](Undo[id=57643][align=1][button=-1][captionwidth=44],Redo[id=57644][align=1][button=-1]),Edit[id=57624][captionwidth=48][group=19](Cut[id=57635][align=1][button=-1],Copy[id=57634][align=1][button=-1],Paste[id=57637][align=1][button=-1],Delete[id=57632][align=1][button=-1],Select All[id=57642][align=1][button=-1]),format[sep][id=57623][height=13],Type[id=57622][show=1][captionwidth=28][group=19](B[id=57648][typ=1][align=1][show=1],I[id=57649][typ=1][align=1][show=1],U[id=57650][typ=1][align=1][show=1],S[id=57651][typ=1][align=1][show=1],[sep][id=57621],A[id=57760][typ=1][align=1][spchk=-1][show=1](ID[id=57761][edittype=1][editwidth=-172],Options[id=57762][edittype=1][editwidth=-72]),G[id=57715][typ=1][align=1][spchk=-1][show=1](Color[id=57717][edittype=518][border=0][editwidth=-72],Mode[id=57724][group=17](H[id=57725][typ=2][align=1][chk=1][show=1][grp=2],V[id=57726][typ=2][align=1][show=1][grp=2],FD[id=57727][typ=2][align=1][show=1][grp=2],BD[id=57728][typ=2][align=1][show=1][grp=2]),Blend Triangular Shape[id=57729][typ=1][show=-1]),O[id=57730][typ=1][align=1][spchk=-1][show=1](Color[id=57732][edittype=518][border=0][editwidth=-96],Width[id=57739][edittype=3][border=0][min=1][max=4][freq=1][editwidth=-72]),S[id=57743][typ=1][align=1][spchk=-1][show=1](Color[id=57745][edittype=518][border=0][editwidth=-72],Offset[id=57752][edittype=3][border=0][min=-8][max=+8][freq=1][editwidth=-128],Width[id=57756][edittype=3][border=0][min=2][max=+7][freq=1][editwidth=-128])),[sep][id=57620][height=4],Align[id=57619][show=1][captionwidth=24][height=26][group=19]([id=57618][group=19](Offset[id=57709][typ=1][chk][show=1][showdis][border=0][min=-32][max=+32][freq=4][editwidth=-96][height=24])),Color[id=57618][captionwidth=28][height=26][group=3](Fore[id=57685][typ=1][show=1][showdis][editwidth=-96][height=24],[sep][id=57617],Back[id=57686][typ=1][show=1][showdis][editwidth=-96][height=24]),Font[id=57617][captionwidth=28][height=26][group=3](Face[id=57701][typ=1][show=1][showdis][height=24][editwidth=-116],[sep][id=57616],Size[id=57702][typ=1][show=1][showdis][height=24][editwidth=-82][min=4][max=72][freq=4]),Misc[id=57609][captionwidth=24][group=3](Image[id=57608](Size[id=57680][edittype=515][border=0][min=16][max=128][freq=16][editwidth=-128][ticklabel=value = %i ? ''+value : ( value = vmax ? ''+value : ( value = vmin ? ''+value : '' ) )],Insert[id=57679]()))

By default, the control's context menu shows as following:

Let's say we want to remove all that grouping, and shows as a regular context menu ( just remove all the [group] from the EditContextMenuItems property, and you should get something like:

The EditContextMenuItems's syntax in BNF notation:

<EditContextMenuItems> ::= <ITEMS>
<ITEMS> ::= <ITEM>["("<ITEMS>")"][","<ITEMS>]
<ITEM> ::= <CAPTION>[<OPTIONS>]
<OPTIONS> ::= "["<OPTION>"]"["["<OPTIONS>"]"]
<OPTION> ::= <PROPERTY>["="<VALUE>]
<PROPERTY> ::= "img" | "himg" | "sep" | "id" | "typ" | "group" | "chk" | "button" | "align" | "spchk" | "show" | "rad" | "dis" | "showdis" | "bld" | "itl" | "stk" | "und" | "bg" | "fg" | "edittype" | "edit" | "mask" | "border" | "editwidth" | "captionwidth" | "height" | "grp" | "tfi" | "ttp" | "min" | "max" | "tick" | "freq" | "ticklabel" | "small" | "large" | "spin" | "ettp" | "float"

where the <CAPTION> is the HTML caption to be shown on the context menu item. The <VALUE> indicates the value of giving property.

  • img=<VALUE>, where <VALUE> is an integer expression, that indicates the index of the icon being displayed for the item.
  • himg=<VALUE>, where <VALUE> indicates the key of the picture to be displayed for the item.
  • sep, specifies an separator item
  • id=<VALUE>, where <VALUE> is an integer expression, that indicates the identifier of the item.
  • typ=<VALUE>, where <VALUE> could be one of the following:
    • 0 for regular items,
    • 1 for items that display a check/box (chk)
    • 2 to display radio buttons (rad)
  • group=<VALUE>, where <VALUE> could be a bit-or combination (+) of the following values:
    • 0 (exNoGroupPopup), No grouping is performed on the sub-menu, so the sub-items are shown to a float popup,
    • 1 (exGroupPopup), Groups and displays the sub-menu items on the current item, arranged from left to right
    • 2 (exNoGroupPopupFrame), Prevents showing the frame around each grouping item.
    • 4 (exGroupPopupCenter), Shows the grouping popup aligned to the center of the current item.
    • 8 (exGroupPopupRight), Shows the grouping popup aligned to the right of the current item.
    • 16 (exGroupPopupEqualSize), Shows the items that make the group of the same size
  • chk[=<VALUE>], where <VALUE> could be 0 for unchecked, or not zero for checked. The chk option makes the item to display a check box. If the <VALUE> is missing the item still displays an un-checked check box.
  • button=<VALUE>, where <VALUE> could be 0 for regular or not zero to show the item as a button.
  • align=<VALUE>, where <VALUE> could be one of the following:
    • 0 ( left ), to align the item's caption to the left
    • 1 ( center ), to center the item's caption
    • 2 ( right ), to align the item's caption to the right
  • spchk=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item's sub menu is shown only if the item is checked.
  • show=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the checked item shows as selected
  • rad=<VALUE>, where <VALUE> could be 0 for unchecked radio button or not zero to for checked radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored.
  • dis, specifies a disabled item
  • showdis=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item shows as disabled, but it is still enabled
  • bld, specifies that the item appears in bold
  • itl, specifies that the item appears in italics
  • stk, specifies that the item appears as strikeout
  • und, specifies that the item is underlined
  • bg=<VALUE>, specifies the item's background color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • fg=<VALUE>, specifies the item's foreground color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • edittype=<VALUE>, associates an edit field to the item, where <VALUE> could be one of the following values:
    • 0 ( exItemDisableEdit ), No editor is assigned to the current item.
    • 1 ( exItemEditText ), A text-box editor is assigned to the current item.
    • 2 ( exItemEditMask ), A masked text-box editor is assigned to the current item.
    • 3 ( exItemEditSlider ), A slider editor is assigned to the current item.
    • 4 ( exItemEditProgress ), A progress editor is assigned to the current item.
    • 5 ( exItemEditScrollBar ), A scrollbar editor is assigned to the current item.
    • 6 ( exItemEditColor), A color editor is assigned to the current item.
    • 7 ( exItemEditFont ), A font editor is assigned to the current item.
    • 256 (exItemEditReadOnly), specifies that the item's editor is shown as disabled. This value could be combined with one of the values from 0 to 7, 512
    • 512 ( exItemEditSpin ), A spin editor is assigned to the current item. This value could be combined with one of the values from 0 to 7, 256
  • edit=<VALUE>, specifies the caption to be shown in the item's edit field, where <VALUE> could be any string
  • mask=<VALUE>, specifies the mask to be applied on a masked editor. This option is valid for exItemEditMask edit. Use the float option to allow masking floating point numbers. See Masking for more information about <VALUE> of the mask option. See Masking Float for more information about <VALUE> if the float option is used.
  • border=<VALUE>, specifies the border to be shown on the item's edit field, where <VALUE> could be one of the following:
    • 0 ( exEditBorderNone), No border is shown.
    • -1 (exEditBorderInset), shows an inset border
    • 1 (exEditBorderSingle), shows a frame border
  • editwidth=<VALUE>, specifies the width to show the edit field inside the item. where <VALUE> could be a long expression. A negative value indicates that the field goes to the end of the item
  • captionwidth=<VALUE>, specifies the width to show the HTML caption of the item. where <VALUE> could be a long expression. A negative value indicates that no limitation is applied to the item's caption, so no truncate caption is shown
  • height=<VALUE>, specifies the height to show the item, where <VALUE> could be a positive long expression
  • grp=<VALUE>, defines the radio group. It should be used when you define more groups of radio buttons. A group of radio buttons means that only one item could be checked at one time. The rad option specifies that the item displays a radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored. The <VALUE> could be any long expression.
  • ttp=<VALUE>, defines the item's tooltip. The <VALUE> could be any HTML string expression. The item's tooltip is shown when the user hovers the item.
  • min=<VALUE>, defines the minimum value of the edit field. The <VALUE> could be any long expression, and specifies the minimum value for any slider, progress, scroll, spin, or range editor.
  • max=<VALUE>, defines the maximum value of the edit field. The <VALUE> could be any long expression, and specifies the maximum value for any slider, progress, scroll, spin, or range editor.
  • tick=<VALUE>, defines where the ticks of the slider edit appear. This option is valid for exItemEditSlider edit. The <VALUE> could be one of the following values:
    • 0 ( exBottomRight ), The ticks are displayed on the bottom/right side.
    • 1 ( exTopLeft ), The ticks are displayed on the top/left side.
    • 2 ( exBoth ), The ticks are displayed on the both side.
    • 3 ( exNoTicks ), No ticks are displayed.
  • freq=<VALUE>, indicates the ratio of ticks on the slider edit. This option is valid for exItemEditSlider edit. The <VALUE> could be a positive long expression.
  • ticklabel=<VALUE>, indicates the HTML label to be displayed on slider's ticks. This option is valid for exItemEditSlider edit. See Tick Label Expression for more information about <VALUE> of the ticklabel option.
  • small=<VALUE>, indicates the amount by which the edit's position changes when the user presses the arrow key ( left, right, or button ). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • large=<VALUE>, indicates the amount by which the edit's position changes when the user presses the CTRL + arrow key ( CTRL + left, CTRL + right). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • spin=<VALUE>, specifies the step to advance when user clicks the editor's spin.. This option is valid for exItemEditSpin edit. The <VALUE> could be a positive long expression.
  • ettp=<VALUE>, specifies the HTML tooltip to be shown when the item's value is changed. This option is valid for exItemEditSlider/exItemEditScrollBar edit. The <VALUE> could be any string expression.
  • float=<VALUE>, Specifies whether the mask field masks a floating point number. This option is valid for exItemEditMask edit. See Masking Float for more information about <VALUE> of mask option, if the float option is used. The <VALUE> could be 0 for standard masking field or not zero to specify that the field is masking a floating point.

ContextMenu - Masking

For instance, the following input-mask ( ext-phone )

!(999) 000 0000;1;;select=1,empty,overtype,warning=invalid character,invalid=The value you entered isn't appropriate for the input mask <b>'<%mask%>'</b> specified for this field."

indicates the following:

  • The pattern should contain 3 optional digits 999, and 7 required digits 000 0000, aligned to the right, !.
  • The second part of the input mask indicates 1, which means that all literals are included when the user leaves the field.
  • The entire field is selected when it receives the focus, select=1
  • The field supports empty value, so the user can leave the field with no content
  • The field enters in overtype mode, and insert-type mode is not allowed when user pressed the Insert key
  • If the user enters any invalid character, a warning tooltip with the message "invalid character" is displayed.
  • If the user tries to leave the field, while the field is not validated ( all 7 required digits completed ), the invalid tooltip is shown with the message "The value you entered isn't appropriate for the input mask <b>'<%mask%>'</b> specified for this field." The <%mask%> is replaced with the first part of the input mask !(999) 000 0000

The four parts of an input mask, or the Mask property supports up to four parts, separated by a semicolon (;). For instance, "`Time: `00:00:00;;0;overtype,warning=<fgcolor FF0000>invalid character,beep", indicates the pattern "00:00" with the prefix Time:, the masking character being the 0, instead _, the field enters in over-type mode, insert-type mode is not allowed, and the field beeps and displays a tooltip in red with the message invalid character when the user enters an invalid character.

Input masks are made up one mandatory part and three optional parts, and each part is separated by a semicolon (;). If a part should use the semicolon (;) it must uses the \; instead

The purpose of each part is as follows:

  1. The first part (pattern) is mandatory. It includes the mask characters or string (series of characters) along with placeholders and literal data such as, parentheses, periods, and hyphens.

    The following table lists the placeholder and literal characters for an input mask and explains how it controls data entry:

    • #, a digit, +, - or space (entry not required).
    • 0, a digit (0 through 9, entry required; plus [+] and minus [-] signs not allowed).
    • 9, a digit or space (entry not required; plus and minus signs not allowed).
    • x, a lower case hexa character, [0-9],[a-f] ( entry required )
    • X, an upper case hexa character, [0-9],[A-F] ( entry required )
    • A, any letter, digit (entry required).
    • a, any letter, digit or space (entry optional).
    • L, any letter (entry require).
    • ?, any letter or space (entry optional).
    • &, any character or a space (entry required).
    • C, any character or a space (entry optional).
    • >, any letter, converted to uppercase (entry required).
    • <, any letter, converted to lowercase (entry required).
    • *, any characters combinations
    • { min,max } (Range), indicates a number range. The syntax {min,max} (Range), masks a number in the giving range. The min and max values should be positive integers. For instance the mask {0,255} masks any number between 0 and 255.
    • [...] (Alternative), masks any characters that are contained in the [] brackets. For instance, the [abcdA-D] mask any character: a,b,c,d,A,B,C,D
    • \, indicates the escape character
    • », ( ALT + 175 ) causes the characters that follow to be converted to uppercase, until «( ALT + 174 ) is found.
    • «, ( ALT + 174 ) causes the characters that follow to be converted to lowercase, until »( ALT + 175 ) is found.
    • !, causes the input mask to fill from right to left instead of from left to right.

    Characters enclosed in double quotation ("" or ``) marks will be displayed literally. If this part should display/use the semicolon (;) character is should be included between double quotation ("" or ``) characters or as \; ( escape ).

  2. The second part is optional and refers to the embedded mask characters and how they are stored within the field. If the second part is set to 0 ( default, exClipModeLiteralsNone ), all characters are stored with the data, and if it is set to 1 (exClipModeLiteralsInclude), the literals are stored, not including the masking/placeholder characters, if 2 (exClipModeLiteralsExclude), just typed characters are stored, if 3(exClipModeLiteralsEscape), optional, required, editable and escaped entities are included. No double quoted text is included.
  3. The third part of the input mask is also optional and indicates a single character or space that is used as a placeholder. By default, the field uses the underscore (_). If you want to use another character, enter it in the third part of your mask. Only the first character is considered. If this part should display/use the semicolon (;) character is should be \; ( escape )
  4. The forth part of the input, indicates a list of options that can be applied to input mask, separated by comma(,) character.

    The known options for the forth part are:

    • float, indicates that the field is edited as a decimal number, integer. The first part of the input mask specifies the pattern to be used for grouping and decimal separators, and - if negative numbers are supported. If the first part is empty, the float is formatted as indicated by current regional settings. For instance, "##;;;float" specifies a 2 digit number in float format. The grouping, decimal, negative and digits options are valid if the float option is present.

    • grouping=value, Character used to separate groups of digits to the left of the decimal. Valid only if float is present. For instance ";;;float,grouping=" indicates that no grouping is applied to the decimal number (LOCALE_STHOUSAND)
    • decimal=value, Character used for the decimal separator. Valid only if float is present. For instance ";;;float,grouping= ,decimal=\," indicates that the decimal number uses the space for grouping digits to the left, while for decimal separator the comma character is used (LOCALE_SDECIMAL)
    • negative=value, indicates whether the decimal number supports negative numbers. The value should be 0 or 1. 1 means negative numbers are allowed. Else 0 or missing, the negative numbers are not accepted. Valid only if float is present.
    • digits=value, indicates the max number of fractional digits placed after the decimal separator. Valid only if float is present. For instance, ";;;float,digits=4" indicates a max 4 digits after decimal separator (LOCALE_IDIGITS)
    • password[=value], displays a black circle for any shown character. For instance, ";;;password", specifies that the field to be displayed as a password. If the value parameter is present, the first character in the value indicates the password character to be used. By default, the * password character is used for non-TrueType fonts, else the black circle character is used. For instance, ";;;password=*", specifies that the field to be displayed as a password, and use the * for password character. If the value parameter is missing, the default password character is used.
    • right, aligns the characters to the right. For instance, "(999) 999-9999;;;right" displays and masks a telephone number aligned to the right. readonly, the editor is locked, user can not update the content, the caret is available, so user can copy the text, excepts the password fields.
    • inserttype, indicates that the field enters in insert-type mode, if this is the first option found. If the forth part includes also the overtype option, it indicates that the user can toggle the insert/over-type mode using the Insert key. For instance, the "##:##;;0;inserttype,overtype", indicates that the field enter in insert-type mode, and over-type mode is allowed. The "##:##;;0;inserttype", indicates that the field enter in insert-type mode, and over-type mode is not allowed.
    • overtype, indicates that the field enters in over-type mode, if this is the first option found. If the forth part includes also the inserttype option, it indicates that the user can toggle the insert/over-type mode using the Insert key. For instance, the "##:##;;0;overtype,inserttype", indicates that the field enter in over-type mode, and insert-type mode is allowed. The "##:##;;0;overtype", indicates that the field enter in over-type mode, and insert-type mode is not allowed.
    • nocontext, indicates that the field provides no context menu when user right clicks the field. For instance, ";;;password,nocontext" displays a password field, where the user can not invoke the default context menu, usually when a right click occurs.
    • beep, indicates whether a beep is played once the user enters an invalid character. For instance, "00:00;;;beep" plays a beep once the user types in invalid character, in this case any character that's not a digit.
    • warning=value, indicates the html message to be shown when the user enters an invalid character. For instance, "00:00:00;;;warning=invalid character" displays a "invalid character" tooltip once the user types in invalid character, in this case any character that's not a digit. The <%mask%> keyword in value, substitute the current mask of the field, while the <%value%> keyword substitutes the current value ( including the literals ). If this option should display/use the semicolon (;) character is should be \; ( escape )
    • invalid=value, indicates the html message to be displayed when the user enters an inappropriate value for the field. If the value is missing or empty, the option has no effect, so no validation is performed. If the value is a not-empty value, the validation is performed. If the value is single space, no message is displayed and the field is keep opened while the value is inappropriate. For instance, "!(999) 000 0000;;;invalid=The value you entered isn't appropriate for the input mask <b>'<%mask%>'</b> specified for this field." displays the "The value you entered isn't appropriate for the input mask '...' specified for this field." tooltip once the user leaves the field and it is not-valid ( for instance, the field includes entities required and uncompleted ). The <%mask%> keyword in value, substitute the current mask of the field, while the <%value%> keyword substitutes the current value ( including the literals ). If this option should display/use the semicolon (;) character is should be \; ( escape ). This option can be combined with empty, validateas.
    • validateas=value, specifies the additional validation is done for the current field. If value is missing or 0 (exValidateAsNone), the option has no effect. The validateas option has effect only if the invalid option specifies a not-empty value. Currently, the value can be 1 (exValidateAsDate), which indicates that the field is validated as a date. For instance, having the mask "!00/00/0000;;0;empty,validateas=1,invalid=Invalid date!,warning=Invalid character!,select=4,overtype", indicates that the field is validate as date ( validateas=1 ).
    • empty, indicates whether the field supports empty values. This option can be used with invalid flag, which indicates that the user can leave the field if it is empty. If empty flag is present, the field displays nothing if no entity is completed ( empty ). Once the user starts typing characters the current mask is displayed. For instance, having the mask "!(999) 000 0000;;;empty,select=4,overtype,invalid=invalid phone number,beep", it specifies an empty or valid phone to be entered.
    • select=value, indicates what to select from the field when it got the focus. The value could be 0 ( nothing, exSelectNoGotFocus ), 1 ( select all, exSelectAllGotFocus ), 2 ( select the first empty and editable entity of the field, exSelectEditableGotFocus ), 3 ( moves the cursor to the beginning of the first empty and editable entity of the field, exMoveEditableGotFocus ), 4 ( select the first empty, required and editable entity of the field, exSelectRequiredEditableGotFocus ), 5 ( moves the cursor to the beginning of the first empty, required and editable entity of the field, exMoveRequiredEditableGotFocus ). For modes 2 and 4 the entire field is selected if no matching entity is found. For instance, "`Time:`XX:XX;;;select=1" indicates that the entire field ( including the Time: prefix ) is selected once it get the focus. The "`Time:`XX:XX;;;select=3", moves the cursor to first X, if empty, the second if empty, and so on

Experimental:
multiline, specifies that the field supports multiple lines.
rich, specifies that the field displays a rich type editor. By default, the standard edit field is shown
disabled, shows as disabled the field.

ContextMenu - Masking Float

The [mask=<VALUE>] property may indicate the followings, if the [float=-1] is present
  • negative number: if the first character in the mask is - ( minus ) the control supports negative numbers. Pressing the - key will toggle the sign of the number. The + sign is never displayed.
  • decimal symbol: the last character that's different than # ( digit ), or 0 (zero) indicates the decimal symbol. If it is not present the control mask a floating point number without decimals.
  • thousand symbol: the thousand symbol is the last character that's not a # ( digit ), 0 (zero) or it is not the decimal symbol as explained earlier, if present.
  • the maximum number of decimals in the number ( the # or 0 character after the decimal symbol )
  • the maximum number of digits in the integer part ( the number of # or 0 character before decimal symbol )
  • the 0 character indicates a leading-zero. The count of 0 (zero) characters before decimal character indicates the leading-zero for integer part of the control, while the count of 0 (zero) characters after the decimal separator indicates the leading-zero for decimal part of the control. For instance, the Mask on "-###,###,##0.00", while the control's Text property is 1, the control displays 1.00, if 1.1 if displays 1.10, and if empty, the 0.00 is displayed.

If the <VALUE> property is empty, the control takes the settings for the regional options like: Decimal Symbol , No. of digits after decimal, Digit grouping symbol.

Here are few samples:

The <VALUE>"-###.###.##0,00" filter floating point numbers a number for German settings ( "," is the decimal sign, "." is the thousands separator ). This format displays leading-zeros.

The <VALUE>"-###.###.###,##" filter floating point numbers a number for German settings ( "," is the decimal sign, "." is the thousands separator )

The <VALUE>"-###,###,###.##" filter floating point numbers a number for English settings ( "." is the decimal sign, "," is the thousands separator )

The <VALUE>"####" indicates a max-4 digit number ( positive ) without a decimal symbol and without digit grouping

The <VALUE>"-##.#" filters a floating point number from the -99.9 to 99.9 ( "." is the decimal sign, no thousands separator )

The <VALUE>"#,###.##" filters a floating point number from the 0 to 9,999.99 with digit grouping ( "." is the decimal sign, "," is the thousands separator ).

ContextMenu - Tick Label Expression

For instance:

  • "value", shows the values for each tick.
  • " (value=current ? '<font ;12><fgcolor=FF0000>' : '' ) + value", shows the current slider's position with a different color and font.
  • "value = current ? value : ''", shows the value for the current tick only.
  • "( value = current ? '<b><font ;10>' : '' ) + (value array 'ab bc cd de ef fg gh hi ij jk kl' split ' ')" displays different captions for slider's values.

The The <VALUE> of [ticklabel] option is a formatted expression which result may include the HTML tags.

The The <VALUE> of [ticklabel] option indicates a formatting expression that may use the following predefined keywords:

  • value gets the slider's position to be displayed
  • current gets the current slider's value.
  • vmin gets the slider's minimum value.
  • vmax gets the slider's maximum value.
  • smin gets the slider's selection minimum value.
  • smax gets the slider's selection maximum value.

The supported binary arithmetic operators are:

  • * ( multiplicity operator ), priority 5
  • / ( divide operator ), priority 5
  • mod ( reminder operator ), priority 5
  • + ( addition operator ), priority 4 ( concatenates two strings, if one of the operands is of string type )
  • - ( subtraction operator ), priority 4

The supported unary boolean operators are:

  • not ( not operator ), priority 3 ( high priority )

The supported binary boolean operators are:

  • or ( or operator ), priority 2
  • and ( or operator ), priority 1

The supported binary boolean operators, all these with the same priority 0, are :

  • < ( less operator )
  • <= ( less or equal operator )
  • = ( equal operator )
  • != ( not equal operator )
  • >= ( greater or equal operator )
  • > ( greater operator )

The supported ternary operators, all these with the same priority 0, are :

  • ? ( Immediate If operator ), returns and executes one of two expressions, depending on the evaluation of an expression. The syntax for is

"expression ? true_part : false_part"

, while it executes and returns the true_part if the expression is true, else it executes and returns the false_part. For instance, the "%0 = 1 ? 'One' : (%0 = 2 ? 'Two' : 'not found')" returns 'One' if the value is 1, 'Two' if the value is 2, and 'not found' for any other value. A n-ary equivalent operation is the case() statement, which is available in newer versions of the component.

The supported n-ary operators are (with priority 5):

  • array (at operator), returns the element from an array giving its index ( 0 base ). The array operator returns empty if the element is found, else the associated element in the collection if it is found. The syntax for array operator is

"expression array (c1,c2,c3,...cn)"

, where the c1, c2, ... are constant elements. The constant elements could be numeric, date or string expressions. For instance the "month(value)-1 array ('J','F','M','A','M','Jun','J','A','S','O','N','D')" is equivalent with "month(value)-1 case (default:''; 0:'J';1:'F';2:'M';3:'A';4:'M';5:'Jun';6:'J';7:'A';8:'S';9:'O';10:'N';11:'D')".

  • in (include operator), specifies whether an element is found in a set of constant elements. The in operator returns -1 ( True ) if the element is found, else 0 (false) is retrieved. The syntax for in operator is

"expression in (c1,c2,c3,...cn)"

, where the c1, c2, ... are constant elements. The constant elements could be numeric, date or string expressions. For instance the "value in (11,22,33,44,13)" is equivalent with "(expression = 11) or (expression = 22) or (expression = 33) or (expression = 44) or (expression = 13)". The in operator is not a time consuming as the equivalent or version is, so when you have large number of constant elements it is recommended using the in operator. Shortly, if the collection of elements has 1000 elements the in operator could take up to 8 operations in order to find if an element fits the set, else if the or statement is used, it could take up to 1000 operations to check, so by far, the in operator could save time on finding elements within a collection.

  • switch (switch operator), returns the value being found in the collection, or a predefined value if the element is not found (default). The syntax for switch operator is

"expression switch (default,c1,c2,c3,...,cn)"

, where the c1, c2, ... are constant elements, and the default is a constant element being returned when the element is not found in the collection. The constant elements could be numeric, date or string expressions. The equivalent syntax is "%0 = c 1 ? c 1 : ( %0 = c 2 ? c 2 : ( ... ? . : default) )". The switch operator is very similar with the in operator excepts that the first element in the switch is always returned by the statement if the element is not found, while the returned value is the value itself instead -1. For instance, the "%0 switch ('not found',1,4,7,9,11)" gets 1, 4, 7, 9 or 11, or 'not found' for any other value. As the in operator the switch operator uses binary searches for fitting the element, so it is quicker that iif (immediate if operator) alterative.

  • case() (case operator) returns and executes one of n expressions, depending on the evaluation of the expression ( IIF - immediate IF operator is a binary case() operator ). The syntax for case() operator is:

"expression case ([default : default_expression ; ] c1 : expression1 ; c2 : expression2 ; c3 : expression3 ;....)"

If the default part is missing, the case() operator returns the value of the expression if it is not found in the collection of cases ( c1, c2, ...). For instance, if the value of expression is not any of c1, c2, .... the default_expression is executed and returned. If the value of the expression is c1, then the case() operator executes and returns the expression1. The default, c1, c2, c3, ... must be constant elements as numbers, dates or strings. For instance, the "date(shortdate(value)) case (default:0 ; #1/1/2002#:1 ; #2/1/2002#:1; #4/1/2002#:1; #5/1/2002#:1)" indicates that only #1/1/2002#, #2/1/2002#, #4/1/2002# and #5/1/2002# dates returns 1, since the others returns 0. For instance the following sample specifies the hour being non-working for specified dates: "date(shortdate(value)) case(default:0;#4/1/2009# : hour(value) >= 6 and hour(value) <= 12 ; #4/5/2009# : hour(value) >= 7 and hour(value) <= 10 or hour(value) in(15,16,18,22); #5/1/2009# : hour(value) <= 8)" statement indicates the working hours for dates as follows:

    • #4/1/2009#, from hours 06:00 AM to 12:00 PM
    • #4/5/2009#, from hours 07:00 AM to 10:00 AM and hours 03:00PM, 04:00PM, 06:00PM and 10:00PM
    • #5/1/2009#, from hours 12:00 AM to 08:00 AM

The in, switch and case() use binary search to look for elements so they are faster then using iif and or expressions.

Obviously, the priority of the operations inside the expression is determined by ( ) parenthesis and the priority for each operator.

The supported conversion unary operators are:

  • type (unary operator) retrieves the type of the object. For instance type(%0) = 8 specifies the cells that contains string values.

    Here's few predefined types:

    • 0 - empty ( not initialized )
    • 1 - null
    • 2 - short
    • 3 - long
    • 4 - float
    • 5 - double
    • 6 - currency
    • 7 - date
    • 8 - string
    • 9 - object
    • 10 - error
    • 11 - boolean
    • 12 - variant
    • 13 - any
    • 14 - decimal
    • 16 - char
    • 17 - byte
    • 18 - unsigned short
    • 19 - unsigned long
    • 20 - long on 64 bits
    • 21 - unsigned long on 64 bites
  • str (unary operator) converts the expression to a string
  • dbl (unary operator) converts the expression to a number
  • date (unary operator) converts the expression to a date, based on your regional settings
  • dateS (unary operator) converts the string expression to a date using the format MM/DD/YYYY HH:MM:SS.

Other known operators for numbers are:

  • int (unary operator) retrieves the integer part of the number
  • round (unary operator) rounds the number ie 1.2 gets 1, since 1.8 gets 2
  • floor (unary operator) returns the largest number with no fraction part that is not greater than the value of its argument
  • abs (unary operator) retrieves the absolute part of the number ie -1 gets 1, 2 gets 2
  • value format 'flags' (binary operator) formats the value with specified flags. If flags is empty, the number is displayed as shown in the field "Number" in the "Regional and Language Options" from the Control Panel. For instance the 1000 format '' displays 1,000.00 for English format, while 1.000,00 is displayed for German format. 1000 format '2|.|3|,' will always displays 1,000.00 no matter of settings in the control panel. If formatting the number fails for some invalid parameter, the value is displayed with no formatting.

    The ' flags' for format operator is a list of values separated by | character such as 'NumDigits|DecimalSep|Grouping|ThousandSep|NegativeOrder|LeadingZero' with the following meanings:

    • NumDigits - specifies the number of fractional digits, If the flag is missing, the field "No. of digits after decimal" from "Regional and Language Options" is using.
    • DecimalSep - specifies the decimal separator. If the flag is missing, the field "Decimal symbol" from "Regional and Language Options" is using.
    • Grouping - indicates the number of digits in each group of numbers to the left of the decimal separator. Values in the range 0 through 9 and 32 are valid. The most significant grouping digit indicates the number of digits in the least significant group immediately to the left of the decimal separator. Each subsequent grouping digit indicates the next significant group of digits to the left of the previous group. If the last value supplied is not 0, the remaining groups repeat the last group. Typical examples of settings for this member are: 0 to group digits as in 123456789.00; 3 to group digits as in 123,456,789.00; and 32 to group digits as in 12,34,56,789.00. If the flag is missing, the field "Digit grouping" from "Regional and Language Options" indicates the grouping flag.
    • ThousandSep - specifies the thousand separator. If the flag is missing, the field "Digit grouping symbol" from "Regional and Language Options" is using.
    • NegativeOrder - indicates the negative number mode. If the flag is missing, the field "Negative number format" from "Regional and Language Options" is using. The valid values are 0, 1, 2, 3 and 4 with the following meanings:
      • 0 - Left parenthesis, number, right parenthesis; for example, (1.1)
      • 1 - Negative sign, number; for example, -1.1
      • 2 - Negative sign, space, number; for example, - 1.1
      • 3 - Number, negative sign; for example, 1.1-
      • 4 - Number, space, negative sign; for example, 1.1 -
    • LeadingZero - indicates if leading zeros should be used in decimal fields. If the flag is missing, the field "Display leading zeros" from "Regional and Language Options" is using. The valid values are 0, 1

Other known operators for strings are:

  • len (unary operator) retrieves the number of characters in the string
  • lower (unary operator) returns a string expression in lowercase letters
  • upper (unary operator) returns a string expression in uppercase letters
  • proper (unary operator) returns from a character expression a string capitalized as appropriate for proper names
  • ltrim (unary operator) removes spaces on the left side of a string
  • rtrim (unary operator) removes spaces on the right side of a string
  • trim (unary operator) removes spaces on both sides of a string
  • startwith (binary operator) specifies whether a string starts with specified string
  • endwith (binary operator) specifies whether a string ends with specified string
  • contains (binary operator) specifies whether a string contains another specified string
  • left (binary operator) retrieves the left part of the string
  • right (binary operator) retrieves the right part of the string
  • a mid b (binary operator) retrieves the middle part of the string a starting from b ( 1 means first position, and so on )
  • a count b (binary operator) retrieves the number of occurrences of the b in a
  • a replace b with c (double binary operator) replaces in a the b with c, and gets the result.
  • a split b, splits the a using the separator b, and returns an array. For instance, the "weekday(value) array 'Sun Mon Thu Wed Thu Fri Sat' split ' '" gets the weekday as string. This operator can be used with the array

Other known operators for dates are:

  • time (unary operator) retrieves the time of the date in string format, as specified in the control's panel.
  • timeF (unary operator) retrieves the time of the date in string format, as "HH:MM:SS". For instance the timeF(1:23 PM) returns "13:23:00"
  • shortdate (unary operator) formats a date as a date string using the short date format, as specified in the control's panel.
  • shortdateF (unary operator) formats a date as a date string using the "MM/DD/YYYY" format. For instance the shortdateF(December 31, 1971 11:00 AM) returns "12/31/1971".
  • dateF (unary operator) converts the date expression to a string expression in "MM/DD/YYYY HH:MM:SS" format.
  • longdate (unary operator) formats a date as a date string using the long date format, as specified in the control's panel.
  • year (unary operator) retrieves the year of the date (100,...,9999)
  • month (unary operator) retrieves the month of the date ( 1, 2,...,12 )
  • day (unary operator) retrieves the day of the date ( 1, 2,...,31 )
  • yearday (unary operator) retrieves the number of the day in the year, or the days since January 1st ( 0, 1,...,365 )
  • weekday (unary operator) retrieves the number of days since Sunday ( 0 - Sunday, 1 - Monday,..., 6 - Saturday )
  • hour (unary operator) retrieves the hour of the date ( 0, 1, ..., 23 )
  • min (unary operator) retrieves the minute of the date ( 0, 1, ..., 59 )
  • sec (unary operator) retrieves the second of the date ( 0, 1, ..., 59 )

The The <VALUE> of [ticklabel] option can display labels using the following built-in HTML tags:

  • <b>…</b> displays the text in bold.
  • <i>…</i> displays the text in italics.
  • <u>…</u> underlines the text.
  • <s>…</s> Strike-through text
  • <font face;size>…</font> displays portions of text with a different font and/or different size. For instance, the <font Tahoma;12>bit</font> draws the bit text using the Tahoma font, on size 12 pt. If the name of the font is missing, and instead size is present, the current font is used with a different size. For instance, <font ;12>bit</font> displays the bit text using the current font, but with a different size.
  • <fgcolor=RRGGBB>…</fgcolor> displays text with a specified foreground color. The RR, GG or BB should be hexa values and indicates red, green and blue values.
  • <bgcolor=RRGGBB>…</bgcolor> displays text with a specified background color. The RR, GG or BB should be hexa values and indicates red, green and blue values.
  • <br> a forced line-break
  • <solidline> The next line shows a solid-line on top/bottom side. If has no effect for a single line caption.
  • <dotline> The next line shows a dot-line on top/bottom side. If has no effect for a single line caption.
  • <upline> The next line shows a solid/dot-line on top side. If has no effect for a single line caption.
  • <r> Right aligns the text
  • <c> Centers the text
  • <img>number[:width]</img> inserts an icon inside the text. The number indicates the index of the icon being inserted. Use the Images method to assign a list of icons to your chart. The last 7 bits in the high significant byte of the number expression indicates the identifier of the skin being used to paint the object. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the part. The width is optional and indicates the width of the icon being inserted. Using the width option you can overwrite multiple icons getting a nice effect. By default, if the width field is missing, the width is 18 pixels.
  • <img>key[:width]</img> inserts a custom size picture into the text being previously loaded using the HTMLPicture property. The Key parameter indicates the key of the picture being displayed. The Width parameter indicates a custom size, if you require to stretch the picture, else the original size of the picture is used.
  • & glyph characters as &amp; ( & ), &lt; ( < ), &gt; ( > ), &qout; ( " ) and &#number ( the character with specified code ), For instance, the &#8364 displays the EUR character, in UNICODE configuration. The & ampersand is only recognized as markup when it is followed by a known letter or a # character and a digit. For instance if you want to display <b>bold</b> in HTML caption you can use &lt;b&gt;bold&lt;/b&gt;


property ElementFormat

property SwimLane.ElementFormat as String
Specifies the way the control shows the parts of the elements.

Type | Description
String | A String format that specified the CRD format to arrange the parts of the element. This setting is applied to all elements that has the ElementFormat property on empty
By default, the ElementFormat property is empty. Use the ElementFormat property to arrange parts of the elements in a different way. The ElementFormat property specifies the format to display parts of a specified element. The ElementFormat property is applied to all elements with the ElementFormat property on empty.

The know parts of the element are:

  • check, specifies the part where the element's checkbox is displayed. The ShowCheckBox property specifies whether the element's checkbox is shown or hidden. The CheckBoxAlign property specifies the alignment of the checkbox relative to the "check" part of the element.
  • caption, specifies the part where the element's caption is displayed. The Caption property specifies the element's HTML caption. The CaptionAlign property specifies the alignment of the caption relative to the "caption" part of the element.
  • extracaption, specifies the part where the element's extra-caption is displayed. The ExtraCaption property specifies the element's HTML extra-caption. The ExtraCaptionAlign property specifies the alignment of the extra-caption relative to the "extracaption" part of the element.
  • picture, specifies the part where the element's pictures are displayed. The Pictures property specifies the element's pictures. The PicturesAlign property specifies the alignment of the pictures relative to the "picture" part of the element.
  • extrapicture, specifies the part where the element's extra-pictures are displayed. The ExtraPictures property specifies the element's extra-pictures. The ExtraPicturesAlign property specifies the alignment of the extra-pictures relative to the "extrapicture" part of the element.
  • client, specifies the part of the element where the inside ActiveX is displayed. The Control property indicates the inside ActiveX that hosted by the element.

The parts of the elements must be included between "" in order to be recognized by the CRD format.

For instance:

  • "check" indicates that just the element's checkbox is displayed, so no matter if other are set the element displays just the checkbox ( if ShowCheckBox property is True ) and the element's Caption property.
  • "check,caption" indicates that just the element's checkbox and caption are displayed, so no matter if other are set the element displays just the checkbox ( if ShowCheckBox property is True ) and the element's Caption property.
  • "client" specifies that the whole element displays just the client part, so the inside Active control will use the entire background to display the inside ActiveX control. This indicates, that no caption, check or any other part is displayed on the element.
  • "check":18,"client", displays the element's checkbox aligned to the left on a 18-pixels wide, and displays the client on the rest of the element.
  • "18;"caption"/"client"", allows the element's Caption and the Control to be displayed.


property ElementFromPoint

property SwimLane.ElementFromPoint (X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS) as Element
Gets the Element object from the cursor.

Type | Description
X as OLE_XPOS_PIXELS | A Long expression that specifies the x-cursor position.
Y as OLE_YPOS_PIXELS | A Long expression that specifies the y-cursor position.
Element | An Element object from the cursor
The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the current cursor position. The ElementFromPosition property determines the element from the surface giving the coordinates on the surface. Use the LinkFromPoint property to get if there is any link at the specified position. The HitTestFromPoint(-1,-1) property returns the element and the hit-test code from the cursor. The ShowHandCursorOn property specifies the parts of the element that shows the hand cursor when the mouse-pointer hovers the part. The HitTestFromPoint(-1,-1) property returns the element/hit-test code from the cursor.


property ElementFromPosition

property SwimLane.ElementFromPosition (X as Long, Y as Long) as Element
Gets the Element object from the position.

Type | Description
X as Long | A Long expression that specifies the x-coordinate on the surface.
Y as Long | A Long expression that specifies the y-coordinate on the surface.
Element | An Element object from the position.
The (0,0) point indicates the origin of the surface, so the X and Y parameters must be relative to the origin of the surface. The ElementFromPoint property gets the element from the surface giving the position on the surface. Use the PointToPosition / PositionToPoint property to convert screen coordinates to surface coordinates or reverse. The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the current cursor position. The X and Y properties specifies the position of the element on the surface. The Width property specifies the width of the element, in surface coordinates. The Height property specifies the height of the element, in surface coordinates.


property Elements

property SwimLane.Elements as Elements
Retrieves the control's elements.

Type | Description
Elements | The surface's Elements collection.
The Elements property gives the access to the surface's Elements collection. The Add method adds programmatically a new element to the surface. Use the InsertControl method to insert programmatically a child element that hosts an inner ActiveX control. The control fires the AddElement event once a new element is added to the Elements collection. The AllowCreateElement property specifies the combination of keys that allows the user to create objects on the surface. The Links property gives access to the surface's Links collection. The Pools property gives access to the surface's Pools collection.


property Enabled

property SwimLane.Enabled as Boolean
Enables or disables the control.

Type | Description
Boolean | A Boolean expression that specifies whether the control is enabled or disabled.
By default, the Enabled property is True. Use the Enabled property of the control to disable the entire surface. The Enabled property changes the Enabled state of the window that hosts the surface. While the control's Enabled property is False, no mouse or key events are generated. Use the Enabled property to show the element as disabled ( grayed ). The Selectable property specifies whether the user can select the element at runtime. The Resizable property specifies whether the element can be resized at runtime.


method EndBlockUndoRedo

method SwimLane.EndBlockUndoRedo ()
Ends recording the UI operations and adds the undo/redo operations as a block, so they all can be restored at once, if Undo method is performed.

Type Description
You can use the StartBlockUndoRedo / EndBlockUndoRedo methods to group multiple Undo/Redo operations into a single-block. The GroupUndoRedoActions groups the next to current Undo/Redo Actions in a single block. A block may hold multiple Undo/Redo actions. The AllowUndoRedo property enables or disables the Undo/Redo feature. Use the GroupUndoRedoActions method to group two or more entries in the Undo/Redo queue in a single block, so when a next Undo/Redo operation is performed, multiple actions may occur. For instance, moving several elements in the same time ( multiple elements selection ) is already recorded as a single block. Use the UndoRedoQueueLength property to specify the number of entries that Undo/Redo queue may store.

A block starts with StartBlock and ends with EndBlock when listed by UndoListAction/RedoListAction property as in the following sample:

StartBlock
MoveElement;B
MoveElement;A
EndBlock


method EndUpdate

method SwimLane.EndUpdate ()
Resumes painting the control after painting is suspended by the BeginUpdate method.

Type Description
Use the Refresh method to refresh the control.


property EventParam

property SwimLane.EventParam(Parameter as Long) as Variant
Retrieves or sets a value that indicates the current's event parameter.

Type | Description
Parameter as Long | A long expression that indicates the index of the parameter being requested ie 0 means the first parameter, 1 means the second, and so on. If -1 is used the EventParam property retrieves the number of parameters. Accessing an not-existing parameter produces an OLE error, such as invalid pointer ( E_POINTER )
Variant | A VARIANT expression that specifies the parameter's value.
The EventParam method is provided to allow changing the event's parameters passed by reference, even if your environment does not support changing it ( uniPaas 1.5 (formerly known as eDeveloper), DBase, and so on ). For instance, Unipaas event-handling logic cannot update ActiveX control variables by updating the received arguments. The EventParam(0) retrieves the value of the first parameter of the event, while the EventParam(1) = 0, changes the value of the second parameter to 0 ( the operation is successfully, only if the parameter is passed by reference ). The EventParam(-1) retrieves the number of the parameters of the current event.

Let's take the event "event KeyDown (KeyCode as Integer, ByVal Shift as Integer)", where the KeyCode parameter is passed by reference. For instance, put the KeyCode parameter on 0, and the arrow keys are disabled while the control has the focus.

In most languages you will type something like:

Private Sub Control1_KeyDown(KeyCode As Integer, Shift As Integer)
    KeyCode = 0
End Sub

In case your environment does not support events with parameters by reference, you can use a code like follows:

Private Sub Control1_KeyDown(KeyCode As Integer, Shift As Integer)
    Control1.EventParam(0) = 0
End Sub

In other words, the EventParam property provides the parameters of the current event for reading or writing access, even if your environment does not allow changing parameters by reference.

Calling the EventParam property outside of an event produces an OLE error, such as pointer invalid, as its scope was designed to be used only during events.


method ExecuteTemplate

method SwimLane.ExecuteTemplate (Template as String)
Executes a template and returns the result.

Type | Description
Template as String | A Template string being executed
Return | Description
Variant | A Variant expression that indicates the result after executing the Template.
Use the ExecuteTemplate property to returns the result of executing a template file. Use the Template property to execute a template without returning any result. Use the ExecuteTemplate property to execute code by passing instructions as a string ( template string ). For instance, you can use the EXPRINT.PrintExt = CONTROL.ExecuteTemplate("me") to print the control's content.

Most of our UI components provide a Template page that's accessible in design mode. No matter what programming language you are using, you can have a quick view of the component's features using the WYSWYG Template editor.

  • Place the control to your form or dialog.
  • Locate the Properties item, in the control's context menu, in design mode. If your environment doesn't provide a Properties item in the control's context menu, please try to locate in the Properties browser.
  • Click it, and locate the Template page.
  • Click the Help button. In the left side, you will see the component, in the right side, you will see a x-script code that calls methods and properties of the control.

The control's Template page helps user to initialize the control's look and feel in design mode, using the x-script language that's easy and powerful. The Template page displays the control on the left side of the page. On the right side of the Template page, a simple editor is displayed where user writes the initialization code. The control's look and feel is automatically updated as soon as the user types new instructions. The Template script is saved to the container persistence ( when Apply button is pressed ), and it is executed when the control is initialized at runtime. Any component that provides a WYSWYG Template page, provides a Template property. The Template property executes code from a string ( template string ).

The Template script is composed by lines of instructions. Instructions are separated by "\n\r" ( newline ) characters.

An instruction can be one of the following:

  • Dim list of variables Declares the variables. Multiple variables are separated by commas. ( Sample: Dim h, h1, h2 )
  • variable = property( list of arguments ) Assigns the result of the property to a variable. The "variable" is the name of a declared variable. The "property" is the property name of the object in the context. The "list or arguments" may include variables or values separated by commas. ( Sample: h = InsertItem(0,"New Child") )
  • property( list of arguments ) = value Changes the property. The value can be a variable, a string, a number, a boolean value or a RGB value.
  • method( list of arguments ) Invokes the method. The "list or arguments" may include variables or values separated by commas.
  • { Beginning the object's context. The properties or methods called between { and } are related to the last object returned by the property prior to { declaration.
  • } Ending the object's context
  • object. property( list of arguments ).property( list of arguments ).... The .(dot) character splits the object from its property. For instance, the Columns.Add("Column1").HeaderBackColor = RGB(255,0,0), adds a new column and changes the column's header back color.

The Template supports the following general functions:

  • RGB(R,G,B) property retrieves an RGB value, where the R, G, B are byte values that indicates the R G B values for the color being specified. For instance, the following code changes the control's background color to red: BackColor = RGB(255,0,0)
  • CreateObject(progID) property creates and retrieves a single uninitialized object of the class associated with a specified program identifier.


property ExpandLinkedElements

property SwimLane.ExpandLinkedElements as Boolean
Specifies whether the linked elements are expanded or collapsed.

Type | Description
Boolean | A Boolean expression that specifies whether the control expands or collapses the descendent elements. By descending element of current element we mean any element that has a link that starts from current element and ends to this element.
By default, the ExpandLinkedElements property is False. Use the ExpandLinkedElements property to add expand/collapse glyphs next to elements that has outgoing links. The OutgoingLinks property specifies the links that starts from the element. Use the AllowMoveDescendents property to specify whether all descendents elements are moved once the focused element is moved. The Add method adds programmatically a link between two elements. Use the ShowLinksOnCollapse property to show the links between an element and collapsed elements. The ShowLinks property specifies the way the control shows the links on the surface.

The following screen shot shows the surface with ExpandLinkedElements property is True:

The following screen shot shows the surface with ExpandLinkedElements property is False ( by default ):


method FitToClient

method SwimLane.FitToClient ()
Resizes or/and moves the entire chart to fit the control's client area.

Type Description


property Font

property SwimLane.Font as IFontDisp

Retrieves or sets the control's font.

Type | Description
IFontDisp | A Font object used to paint the elements.

Use the Font property to change the control's font . Use the Refresh method to refresh the control. Use the BeginUpdate and EndUpdate method to maintain performance while adding new columns or items.

The following VB sample assigns by code a new font to the control:

With SwimLane1
    With .Font
        .Name = "Tahoma"
    End With
    .Refresh
End With

The following C++ sample assigns by code a new font to the control:

COleFont font = m_surface.GetFont();
font.SetName( "Tahoma" );
m_surface.Refresh();

the C++ sample requires definition of COleFont class ( #include "Font.h" )

The following VB.NET sample assigns by code a new font to the control:

With AxSwimLane1
    Dim font As System.Drawing.Font = New System.Drawing.Font("Tahoma", 10, FontStyle.Regular, GraphicsUnit.Point)
    .Font = font
    .CtlRefresh()
End With

The following C# sample assigns by code a new font to the control:

System.Drawing.Font font = new System.Drawing.Font("Tahoma", 10, FontStyle.Regular);
axSwimLane1.Font = font;
axSwimLane1.CtlRefresh();

The following VFP sample assigns by code a new font to the control:

with thisform.SwimLane1.Object
    .Font.Name = "Tahoma"
    .Refresh()
endwith

The following Template sample assigns by code a new font to the control:

Font
{
    Name = "Tahoma"
}


property ForeColor

property SwimLane.ForeColor as Color
Specifies the control's foreground color.

Type | Description
Color | A Color expression that defines the control's foreground color.
The ForeColor property defines the control's foreground color.. The Picture property to assign your logo on the control's background. The control uses the PictureDisplay property to determine how the picture is displayed on the control's background. The Background(exElementForeColor) property specifies the default element's foreground color. The BackColor property specifies the control's background color.


property FormatAnchor

property SwimLane.FormatAnchor(New as Boolean) as String
Specifies the visual effect for anchor elements in HTML captions.

Type | Description
New as Boolean | Boolean expression that indicates whether to specify the anchors never clicked or anchors being clicked.
String | A String expression that indicates the HTMLformat to apply to anchor elements.
By default, the FormatAnchor(True) property is "<u><fgcolor=0000FF>#" that indicates that the anchor elements ( that were never clicked ) are underlined and shown in light blue. Also, the FormatAnchor(False) property is "<u><fgcolor=000080>#" that indicates that the anchor elements are underlined and shown in dark blue. You can use the <a> anchor elements to insert hyperlinks to cells, bars or links. Use the Caption property to specify the element's caption.

The visual effect is applied to the anchor elements, if the FormatAnchor property is not empty. For instance, if you want to do not show with a new effect the clicked anchor elements, you can use the FormatAnchor(False) = "", that means that the clicked or not-clicked anchors are shown with the same effect that's specified by FormatAnchor(True). An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link. The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The control fires the AnchorClick event to notify that the user clicks an anchor element. This event is fired only if prior clicking the control it shows the hand cursor. The AnchorClick event carries the identifier of the anchor, as well as application options that you can specify in the anchor element. The hand cursor is shown when the user hovers the mouse on the anchor elements.


method GroupUndoRedoActions

method SwimLane.GroupUndoRedoActions (Count as Long)
Groups the next to current Undo/Redo Actions in a single block.

Type | Description
Count as Long | A Long expression that specifies the number of entries being grouped in a single block of actions, in the Undo/Redo queue.
The GroupUndoRedoActions groups the next to current Undo/Redo Actions in a single block. A block may hold multiple Undo/Redo actions. The AllowUndoRedo property enables or disables the Undo/Redo feature. Use the GroupUndoRedoActions method to group two or more entries in the Undo/Redo queue in a single block, so when a next Undo/Redo operation is performed, multiple actions may occur. You can use the StartBlockUndoRedo / End BlockUndoRedo methods to group multiple Undo/Redo operations into a single-block. For instance, moving several elements in the same time ( multiple elements selection ) is already recorded as a single block. Use the UndoRedoQueueLength property to specify the number of entries that Undo/Redo queue may store.

A block starts with StartBlock and ends with EndBlock when listed by UndoListAction/RedoListAction property as in the following sample:

StartBlock
MoveElement;B
MoveElement;A
EndBlock


property HeaderLaneFromPoint

property SwimLane.HeaderLaneFromPoint (X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS) as HeaderLane
Gets the HeaderLane object from the cursor.

Type | Description
X as OLE_XPOS_PIXELS | A Long expression that specifies the x-cursor position.
Y as OLE_YPOS_PIXELS | A Long expression that specifies the y-cursor position.
HeaderLane | A HeaderLane object from the cursor.
The HeaderLaneFromPoint(-1,-1) property gets the HeaderLane object from the cursor, or nothing if no HeaderLane object at the cursor position. The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the cursor position. The HitTestFromPoint(-1,-1) property returns the element and the hit-test code from the cursor. The ShowHandCursorOn property specifies the parts of the element that shows the hand cursor when the mouse-pointer hovers the part. The HitTestFromPoint(-1,-1) property returns the element/hit-test code from the cursor. Use the LinkFromPoint property to get if there is any link at the specified position. The PoolFromPoint property gets the Pool object from the cursor. The LaneFromPoint property gets the Lane object from the cursor.


property HideSel

property SwimLane.HideSel as Boolean
Returns a value that determines whether selected item appears highlighted when a control loses the focus.

Type | Description
Boolean | A Boolean expression that determines whether selected item appears highlighted when a control loses the focus.
By default, the HideSel property is True, which indicates that selected elements are not highlighted when the control loses the focus. The HideSel property specifies whether the selected elements are highlighted or not when the control loses the focus. The SingleSel property specifies whether the surface allows selecting one or multiple elements. The Selectable property of the Element object indicates whether the element is selectable or un-selectable. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The SelectionChanged event occurs once a new element is selected or unselected. The Selected property of the Element object indicates whether the element is selected or unselected. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface. Use the AllowMoveSelection property to prevent moving the entire selection when focused element is moved. Use the AllowResizeSelection property to prevent resizing the entire selection when focused element is resized. Use the AllowMoveDescendents property to prevent moving all descendents ( children and outgoing elements ) when focused element is moved.

The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectElementRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface.


property HitTestFromPoint

property SwimLane.HitTestFromPoint (X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS) as HitTest
Gets the Element object and the Hit-Test code from the cursor.

Type | Description
X as OLE_XPOS_PIXELS | A Long expression that specifies the x-cursor position.
Y as OLE_YPOS_PIXELS | A Long expression that specifies the y-cursor position.
HitTest | A HitTest object that holds information about the Element from the specified position.
The HitTestFromPoint property returns the element/hit-test code from the specified position. The HitTestFromPoint(-1,-1) property returns the element/hit-test code from the current cursor position. The ElementFromPoint property returns the element from the cursor. For instance, you can use the HitTestFromPoint property to determine whether the cursor hovers the expand/collapse glyphs, the element's checkbox, picture and so on.

The following VB sample determines if the cursor hovers the element's expand/collapse glyphs:

Private Sub SwimLane1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim h As HitTest
    Set h = SwimLane1.HitTestFromPoint(-1, -1)
    If Not h Is Nothing Then
        If (h.HitTestCode And exHitTestMask) = exHitTestGlyph Then
            Debug.Print "Expand/Collase Glyph of " & h.Element.ID
        End If
    End If
End Sub


method Home

method SwimLane.Home ()
Restores the view to the origin.

Type Description
The Home method moves the surface's scroll position to 0 and the zooming factor to 100%. The control fires the LayoutStartChanging(exSurfaceHome) / LayoutEndChanging(exSurfaceHome) event when the user clicks the Home button. The control's ScrollPos, ScrollX and ScrollY properties specify the surface's scroll position. The Zoom property specifies the current zooming factor.


property HTMLPicture

property SwimLane.HTMLPicture(Key as String) as Variant
Adds or replaces a picture in HTML captions.

Type | Description
Key as String | A String expression that indicates the key of the picture being added or replaced. If the Key property is Empty string, the entire collection of pictures is cleared.
Variant The HTMLPicture specifies the picture being associated to a key. It can be one of the followings:
  • a string expression that indicates the path to the picture file, being loaded.
  • a string expression that indicates the base64 encoded string that holds a picture object, Use the eximages tool to save your picture as base64 encoded format.
  • A Picture object that indicates the picture being added or replaced. ( A Picture object implements IPicture interface ),

If empty, the picture being associated to a key is removed. If the key already exists the new picture is replaced. If the key is not empty, and it doesn't not exist a new picture is added.

By default, the HTMLPicture collection is empty. The HTMLPicture property handles a collection of custom size picture being displayed in the HTML captions, using the <img> tags. Use the HTMLPicture property to add new pictures to be used in HTML captions. For instance, the HTMLPicture("pic1") = "c:\winnt\zapotec.bmp", loads the zapotec picture and associates the pic1 key to it. Any "<img>pic1</img>" sequence in HTML captions, displays the pic1 picture. On return, the HTMLPicture property retrieves a Picture object ( this implements the IPictureDisp interface ). The Images method specifies the list of 16x16 icons to be displayed on the control's surface. The Caption property specifies the caption of the element ( including icons, picture and so on ). Use the Pictures / ExtraPictures properties to display different pictures on the element.


property hWnd

property SwimLane.hWnd as Long

Retrieves the control's window handle.

Type | Description
Long | A long expression that indicates the control's window handle.

Use the hWnd property to get the control's main window handle. The Microsoft Windows operating environment identifies each form and control in an application by assigning it a handle, or hWnd. The hWnd property is used with Windows API calls. Many Windows operating environment functions require the hWnd of the active window as an argument.


method Images

method SwimLane.Images (Handle as Variant)
Sets at runtime the control's image list. The Handle should be a handle to an Images List Control.

Type Description
Handle as Variant The Handle parameter can be:
  • A string expression that specifies the ICO file to add. The ICO file format is an image file format for computer icons in Microsoft Windows. ICO files contain one or more small images at multiple sizes and color depths, such that they may be scaled appropriately. For instance, Images("c:\temp\copy.ico") method adds the sync.ico file to the control's Images collection (string, loads the icon using its path)
  • A string expression that indicates the BASE64 encoded string that holds the icons list. Use the Exontrol's ExImages tool to save/load your icons as BASE64 encoded format. In this case the string may begin with "gBJJ..." (string, loads icons using base64 encoded string)
  • A reference to a Microsoft ImageList control (mscomctl.ocx, MSComctlLib.ImageList type) that holds the icons to add (object, loads icons from a Microsoft ImageList control)
  • A reference to a Picture (IPictureDisp implementation) that holds the icon to add. For instance, the VB's LoadPicture (Function LoadPicture([FileName], [Size], [ColorDepth], [X], [Y]) As IPictureDisp) or LoadResPicture (Function LoadResPicture(id, restype As Integer) As IPictureDisp) returns a picture object (object, loads icon from a Picture object)
  • A long expression that identifies a handle to an Image List Control ( the Handle should be of HIMAGELIST type ). On 64-bit platforms, the Handle parameter must be a Variant of LongLong / LONG_PTR data type ( signed 64-bit (8-byte) integers ), saved under llVal field, as VT_I8 type. The LONGLONG / LONG_PTR is __int64, a 64-bit integer. For instance, in C++ you can use as Images( COleVariant( (LONG_PTR)hImageList) ) or Images( COleVariant( (LONGLONG)hImageList) ), where hImageList is of HIMAGELIST type. The GetSafeHandle() method of the CImageList gets the HIMAGELIST handle (long, loads icon from HIMAGELIST type)
The Images method assigns a list of icons to be displayed on the control's surface. The icons can be displayed on the control's using the <img>number</img> HTML tags. The ImageSize property defines the size (width/height) of the icons within the control's Images collection. The HTMLPicture property handles a collection of custom size picture being displayed in the HTML captions, using the <img>key</img> tags. The ReplaceIcon method replaces icons in the control's . The Caption property specifies the caption of the element ( including icons, picture and so on ). Use the Pictures / ExtraPictures properties to display different pictures on the element.


property ImageSize

property SwimLane.ImageSize as Long
Retrieves or sets the size of icons the control displays..

Type | Description
Long | A long expression that defines the size of icons the control displays.
By default, the ImageSize property is 16 (pixels). The ImageSize property specifies the size of icons being loaded using the Images method. The control's Images collection is cleared if the ImageSize property is changed, so it is recommended to set the ImageSize property before calling the Images method. The ImageSize property defines the size (width/height) of the icons within the control's Images collection. For instance, if the ICO file to load includes different types the one closest with the size specified by ImageSize property is loaded by Images method. The ImageSize property does NOT change the height for the control's font.


property IndentX

property SwimLane.IndentX as Long
Specifies the child elements indentation on x-axis.

Type | Description
Long | A Long expression that specifies the child elements indentation on x-axis.
By default, the IndentX is 24 pixels. Use the IndentX property to specify the indentation between child and parent elements on x-axis. The IndentY property specifies the indentation between children and parent elements on y-axis.

The following screen shot shows the tree using the default values for IndentX(24), IndentY(2) properties:

The following screen shot shows the tree using the IndentX(0), IndentY(0) properties:

The following screen shot shows the tree using the IndentX(-24), IndentY(2) properties:


property IndentY

property SwimLane.IndentY as Long
Specifies the child elements indentation on y-axis.

Type | Description
Long | A Long expression that specifies the child elements indentation on y-axis.
By default, the IndentY is 2 pixels. The IndentY property specifies the indentation between children and parent elements on y-axis. Use the IndentX property to specify the indentation between child and parent elements on x-axis.

The following screen shot shows the tree using the default values for IndentX(24), IndentY(2) properties:

The following screen shot shows the tree using the IndentX(0), IndentY(0) properties:

The following screen shot shows the tree using the IndentX(-24), IndentY(2) properties:


method InvokeContextMenu

method SwimLane.InvokeContextMenu ([ContextMenu as Variant])
Invokes programmatically the surface's default or customized context menu, and returns the identifier of the selected item.

Type | Description
ContextMenu as Variant | A String expression that defines the items to be displayed on the surface's context-menu. If empty, the default context-menu for surface [ContextMenu(exContextMenuSurface) property] is shown.
Return | Description
Variant | A Long expression that indicates the identifier of the item being selected/clicked.
The InvokeContextMenu method invokes programmatically the surface's default or customized context menu, and returns the identifier of the selected item. The ContextMenu(exContextMenuSurface) property defines the default content-menu for surface. The ActionContextMenu event notifies your application once an action occurs within the object's context menu. Use the AllowContextMenu property on exDisallow to disable default's context menu, when the user right clicks the surface. The ContextMenuFont property retrieves or sets the context-menu's font. The Background(exContextMenuAppearance) property ( and related ) defines the control's context menu appearance.

By default, the surface's context-menu shows as follows:

For instance, the InvokeContextMenu( "Item 1,Item 2,[sep],Check 1[chk],Check 2[chk]" ), generates the following screen shot:

For instance, the InvokeContextMenu( "Item 1,Item 2,Popup(Check 1[chk],Check 2[chk])" ), generates the following screen shot:

For instance, the InvokeContextMenu( "Calendar[id=20][img=0],MSChart[id=30],Record[id=40],Slider[id=50],Radio 1[id=100][typ=2][edit=],Radio 2[id=101][typ=2][edit=],Radio 3[id=102][typ=2][edit=],ComboBox[id=90]" ), generates the following screen shot:

The syntax for ContextMenu parameter in BNF notation is:

<ToString> ::= <ITEMS>
<ITEMS> ::= <ITEM>["("<ITEMS>")"][","<ITEMS>]
<ITEM> ::= <CAPTION>[<OPTIONS>]
<OPTIONS> ::= "["<OPTION>"]"["["<OPTIONS>"]"]
<OPTION> ::= <PROPERTY>["="<VALUE>]
<PROPERTY> ::= "img" | "himg" | "sep" | "id" | "typ" | "group" | "chk" | "button" | "align" | "spchk" | "show" | "rad" | "dis" | "showdis" | "bld" | "itl" | "stk" | "und" | "bg" | "fg" | "edittype" | "edit" | "mask" | "border" | "editwidth" | "captionwidth" | "height" | "grp" | "tfi" | "ttp" | "min" | "max" | "tick" | "freq" | "ticklabel" | "small" | "large" | "spin" | "ettp" | "float" | "close"

where the <CAPTION> is the HTML caption to be shown on the context menu item. The <VALUE> indicates the value of giving property.

  • img=<VALUE>, where <VALUE> is an integer expression, that indicates the index of the icon being displayed for the item.
  • himg=<VALUE>, where <VALUE> indicates the key of the picture to be displayed for the item.
  • sep, specifies an separator item
  • id=<VALUE>, where <VALUE> is an integer expression, that indicates the identifier of the item.
  • typ=<VALUE>, where <VALUE> could be one of the following:
    • 0 for regular items,
    • 1 for items that display a check/box (chk)
    • 2 to display radio buttons (rad)
  • group=<VALUE>, where <VALUE> could be a bit-or combination (+) of the following values:
    • 0 (exNoGroupPopup), No grouping is performed on the sub-menu, so the sub-items are shown to a float popup,
    • 1 (exGroupPopup), Groups and displays the sub-menu items on the current item, arranged from left to right
    • 2 (exNoGroupPopupFrame), Prevents showing the frame around each grouping item.
    • 4 (exGroupPopupCenter), Shows the grouping popup aligned to the center of the current item.
    • 8 (exGroupPopupRight), Shows the grouping popup aligned to the right of the current item.
    • 16 (exGroupPopupEqualSize), Shows the items that make the group of the same size
  • chk[=<VALUE>], where <VALUE> could be 0 for unchecked, or not zero for checked. The chk option makes the item to display a check box. If the <VALUE> is missing the item still displays an un-checked check box.
  • button=<VALUE>, where <VALUE> could be 0 for regular or not zero to show the item as a button.
  • align=<VALUE>, where <VALUE> could be one of the following:
    • 0 ( left ), to align the item's caption to the left
    • 1 ( center ), to center the item's caption
    • 2 ( right ), to align the item's caption to the right
  • spchk=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item's sub menu is shown only if the item is checked.
  • show=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the checked item shows as selected
  • rad=<VALUE>, where <VALUE> could be 0 for unchecked radio button or not zero to for checked radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored.
  • dis, specifies a disabled item
  • showdis=<VALUE>, where <VALUE> could be 0 for regular or not zero to specify whether the item shows as disabled, but it is still enabled
  • bld, specifies that the item appears in bold
  • itl, specifies that the item appears in italics
  • stk, specifies that the item appears as strikeout
  • und, specifies that the item is underlined
  • bg=<VALUE>, specifies the item's background color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • fg=<VALUE>, specifies the item's foreground color, where <VALUE> could be a RGB expression ( RGB(RR,GG,BB), where RR is the red value, the GG is the green value, and the BB is the blue value), or a long expression.
  • edittype=<VALUE>, associates an edit field to the item, where <VALUE> could be one of the following values:
    • 0 ( exItemDisableEdit ), No editor is assigned to the current item.
    • 1 ( exItemEditText ), A text-box editor is assigned to the current item.
    • 2 ( exItemEditMask ), A masked text-box editor is assigned to the current item.
    • 3 ( exItemEditSlider ), A slider editor is assigned to the current item.
    • 4 ( exItemEditProgress ), A progress editor is assigned to the current item.
    • 5 ( exItemEditScrollBar ), A scrollbar editor is assigned to the current item.
    • 6 ( exItemEditColor), A color editor is assigned to the current item.
    • 7 ( exItemEditFont ), A font editor is assigned to the current item.
    • 256 (exItemEditReadOnly), specifies that the item's editor is shown as disabled. This value could be combined with one of the values from 0 to 7, 512
    • 512 ( exItemEditSpin ), A spin editor is assigned to the current item. This value could be combined with one of the values from 0 to 7, 256
  • edit=<VALUE>, specifies the caption to be shown in the item's edit field, where <VALUE> could be any string
  • mask=<VALUE>, specifies the mask to be applied on a masked editor. This option is valid for exItemEditMask edit. Use the float option to allow masking floating point numbers. See EditMask property for more details.
  • border=<VALUE>, specifies the border to be shown on the item's edit field, where <VALUE> could be one of the following:
    • 0 ( exEditBorderNone), No border is shown.
    • -1 (exEditBorderInset), shows an inset border
    • 1 (exEditBorderSingle), shows a frame border
  • editwidth=<VALUE>, specifies the width to show the edit field inside the item. where <VALUE> could be a long expression. A negative value indicates that the field goes to the end of the item
  • captionwidth=<VALUE>, specifies the width to show the HTML caption of the item. where <VALUE> could be a long expression. A negative value indicates that no limitation is applied to the item's caption, so no truncate caption is shown
  • height=<VALUE>, specifies the height to show the item, where <VALUE> could be a positive long expression
  • grp=<VALUE>, defines the radio group. It should be used when you define more groups of radio buttons. A group of radio buttons means that only one item could be checked at one time. The rad option specifies that the item displays a radio button. Use the grp option to define the group of radio where this button should be associated, If no group of radio buttons is required, the grp could be ignored. The <VALUE> could be any long expression.
  • ttp=<VALUE>, defines the item's tooltip. The <VALUE> could be any HTML string expression. The item's tooltip is shown when the user hovers the item.
  • min=<VALUE>, defines the minimum value of the edit field. The <VALUE> could be any long expression, and specifies the minimum value for any slider, progress, scroll, spin, or range editor.
  • max=<VALUE>, defines the maximum value of the edit field. The <VALUE> could be any long expression, and specifies the maximum value for any slider, progress, scroll, spin, or range editor.
  • tick=<VALUE>, defines where the ticks of the slider edit appear. This option is valid for exItemEditSlider edit. The <VALUE> could be one of the following values:
    • 0 ( exBottomRight ), The ticks are displayed on the bottom/right side.
    • 1 ( exTopLeft ), The ticks are displayed on the top/left side.
    • 2 ( exBoth ), The ticks are displayed on the both side.
    • 3 ( exNoTicks ), No ticks are displayed.
  • freq=<VALUE>, indicates the ratio of ticks on the slider edit. This option is valid for exItemEditSlider edit. The <VALUE> could be a positive long expression.
  • ticklabel=<VALUE>, indicates the HTML label to be displayed on slider's ticks. This option is valid for exItemEditSlider edit. Check the EditOption(exEditTickLabel) for more details.
  • small=<VALUE>, indicates the amount by which the edit's position changes when the user presses the arrow key ( left, right, or button ). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • large=<VALUE>, indicates the amount by which the edit's position changes when the user presses the CTRL + arrow key ( CTRL + left, CTRL + right). This option is valid for exItemEditSlider, exItemEditScrollBar edit. The <VALUE> could be a positive long expression.
  • spin=<VALUE>, specifies the step to advance when user clicks the editor's spin.. This option is valid for exItemEditSpin edit. The <VALUE> could be a positive long expression.
  • ettp=<VALUE>, specifies the HTML tooltip to be shown when the item's value is changed. This option is valid for exItemEditSlider/exItemEditScrollBar edit. The <VALUE> could be any string expression.
  • float=<VALUE>, Specifies whether the mask field masks a floating point number. This option is valid for exItemEditMask edit. See See EditMask property for more details. The <VALUE> could be 0 for standard masking field or not zero to specify that the field is masking a floating point.
  • close=<VALUE>, Specifies the way the hosting menu is closed when the user clicks the item. If the close flag is missing, the <VALUE> is 3 (exCloseOnNonClickable), by default. The <VALUE> could be one of the following values:
    • 0 ( exCloseOnClick ), The popup menu is closing when the user clicks the item.
    • 1 ( exCloseOnDblClick ), The popup menu is closing when the user double clicks the item.
    • 2 ( exCloseOnClickOutside ), The popup menu is closing when the user clicks outside of the menu.
    • 3 ( exCloseOnNonClickable ), The popup menu is closing when the user clicks a non-clickable item ( regular items ). The non-clickable items is any item that's not a separator, popup, disabled or check or radio items, clicking a check-box item will makes the check box to change its state instead closing the context menu.


property LaneByID

property SwimLane.LaneByID ([ID as Variant]) as Lane
Gets the Lane object giving its identifier.

Type | Description
ID as Variant | A String expression that indicates the identifier of the lane, as returned by the ID property.
Lane | A Lane object being queried.
The LaneByID property returns a Lane object giving its identifier. The ID property specifies the lane's unique identifier. The Position property specifies the lane's position into the Children collection.


property LaneFromPoint

property SwimLane.LaneFromPoint (X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS) as Lane
Gets the Lane object from the cursor.

Type | Description
X as OLE_XPOS_PIXELS | A Long expression that specifies the x-cursor position.
Y as OLE_YPOS_PIXELS | A Long expression that specifies the y-cursor position.
Lane | A Lane object from the cursor.
The LaneFromPoint property gets the Lane object from the cursor, or nothing if no lane at current cursor position. The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the cursor position. The HitTestFromPoint(-1,-1) property returns the element and the hit-test code from the cursor. The ShowHandCursorOn property specifies the parts of the element that shows the hand cursor when the mouse-pointer hovers the part. The HitTestFromPoint(-1,-1) property returns the element/hit-test code from the cursor. Use the LinkFromPoint property to get if there is any link at the specified position. The PoolFromPoint property gets the Pool object from the cursor. The HeaderLaneFromPoint property gets the HeaderLane object from the cursor.


property LaneResizeType

property SwimLane.LaneResizeType as LaneResizeTypeEnum
Specifies the way the lanes get resized, when its parent/pool gets resized.

Type | Description
LaneResizeTypeEnum | A LaneResizeTypeEnum expression that specifies the way the lanes get resized, when its parent/pool gets resized.
By default, the LaneResizeType property is exLaneResizeProportionally, so the the lanes get proportionally resized, when the user resizes the pool. The LaneResizeType property specifies how the pool resizes the lanes, once the user resizes the pool ( valid for all pools ). The LaneResizeType property specifies how the pool resizes the lanes, once the user resizes the pool ( valid for a specific pool ). Use the AllowResizePool property to specify whether the pool can be resized at runtime.

The following screen shot shows the pool before resizing it:

The following screen shot shows the pool resized while the LaneResizeType property is exLaneResizeProportionally ( by default ):

The following screen shot shows the pool resized while the LaneResizeType property is exLaneResizeLast:


property Layout

property SwimLane.Layout as String
Saves or loads the control's layout, such as positions of the columns, scroll position, filtering values.

Type | Description
String | A String expression that specifies the control's layout.
You can use the Layout property to store the control's layout and to restore the layout later. For instance, you can save the control's Layout property to a file when the application is closing, and you can restore the control's layout when the application is loaded. The Layout property saves almost all of the control's properties that user can change at runtime ( like changing the column's position by drag and drop ). The Layout property does NOT save the control's data, so the Layout property should be called once you loaded the data from your database, xml or any other alternative. Once the data is loaded, you can call the Layout property to restore the View as it was saved. Before closing the application, you can call the Layout property and save the content to a file for reading next time the application is opened.

The Layout property saves/loads the following information:

  • surface's scroll position as indicated by ScrollX and ScrollY properties.
  • surface's zoom factor as indicated by the Zoom property.
  • selected elements as indicated by the Selection property

These properties are serialized to a string and encoded in BASE64 format.

The following movies show how Layout works:

  • The Layout property is used to save and restore the control's view.


property LinkFromPoint

property SwimLane.LinkFromPoint (X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS) as Link
Gets the Link object from the cursor.

Type | Description
X as OLE_XPOS_PIXELS | A Long expression that specifies the x-cursor position.
Y as OLE_YPOS_PIXELS | A Long expression that specifies the y-cursor position.
Link | A Link object from the cursor
Use the LinkFromPoint property to get if there is any link at the specified position. The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the cursor position. The HitTestFromPoint(-1,-1) property returns the element and the hit-test code from the cursor. The ShowHandCursorOn property specifies the parts of the element that shows the hand cursor when the mouse-pointer hovers the part. The HitTestFromPoint(-1,-1) property returns the element/hit-test code from the cursor.


property Links

property SwimLane.Links as Links
Retrieves the control's links.

Type | Description
Links | A Links object that indicates the surface's Links collection.
The Links property gives the access to the surface's Links collection. The Add method adds programmatically a Link object to the collection and returns a reference to the newly created object. The AllowLinkObjects property specifies the combination of keys that allows the user to link the objects. The AddLink event notifies your application once a new link is added to the Links collection. The Pools property gives access to the surface's Pools collection. The Elements property gives access to the surface's Elements collection.


property LinksArrowColor

property SwimLane.LinksArrowColor as Color
Specifies the color/visual appearance to draw the arrows of the links between the elements.

Type | Description
Color | A Color expression that defines the color to show the arrow of the links. The last 7 bits in the high significant byte of the color indicates the identifier of the skin being used to paint the part. Use the Add method to add new skins to the control. In other words, you can use the EBN objects to define a different type of arrows.
By default, the LinksArrowColor is -1, which indicates that the LinksColor property specifies the color of the arrow. The LinksArrowColor property specifies the color to show the arrow of the links. The ArrowColor property specifies the color to show the direction of the particular link. The control's LinksShowDir property specifies whether the arrow of the links is shown or hidden. The LinksWidth property specifies the size of the links and so the size of the arrow. The ShowLinks property specifies whether the surface shows or hides the links.


property LinksArrowFrameColor

property SwimLane.LinksArrowFrameColor as Color
Specifies the color to show the default frame of the arrow

Type | Description
Color | A Color expression to show the arrow's frame
By default, the LinksArrowFrameColor property is -1 which indicates that LinksArrowColor property specifies the color of the arrow's frame. The LinksArrowFrameColor property specifies the color to show the default frame of the arrow. The ArrowFrameColor property specifies the color to show the arrow's frame for a particular link. Use the LinksColor property to define the color to show all links on the surface. The Color property specifies the color for an individual link. The LinksArrowColor property specifies the color to show the arrow of the links. The control's LinksShowDir property specifies whether the arrow of the links is shown or hidden. The LinksWidth property specifies the size of the links and so the size of the arrow. The ShowLinks property specifies whether the surface shows or hides the links. The LinksArrowSize property specifies the size to show the arrow for links.


property LinksArrowSize

property SwimLane.LinksArrowSize as Long
Specifies the size to show the arrow for links

Type | Description
Long | A long expression that specifies the size of the arrow
By default, the LinksArrowSize property is -1 which indicates that LinksWidth property controls the size of the arrow. The LinksArrowSize property specifies the size to show the arrow for links. The ArrowSize property specifies the size to show the arrow for a particular link. Use the LinksColor property to define the color to show all links on the surface. The Color property specifies the color for an individual link. The LinksArrowColor property specifies the color to show the arrow of the links. The control's LinksShowDir property specifies whether the arrow of the links is shown or hidden. The LinksWidth property specifies the size of the links and so the size of the arrow. The ShowLinks property specifies whether the surface shows or hides the links. The LinksArrowFrameColor property specifies the color to show the default frame of the arrow.


property LinksColor

property SwimLane.LinksColor as Color
Specifies the color to draw the links between the elements.

Type | Description
Color | A Color expression that specifies the color to show the links between elements on the surface.
By default, the LinksColor property is RGB(0,0,0). Use the LinksColor property to define the color to show all links on the surface. The Color property specifies the color for an individual link. The LinksArrowColor property specifies the color to show the arrow of the links. The control's LinksShowDir property specifies whether the arrow of the links is shown or hidden. The LinksWidth property specifies the size of the links and so the size of the arrow. The ShowLinks property specifies whether the surface shows or hides the links.


property LinksShowDir

property SwimLane.LinksShowDir as Boolean
Specifies whether the links show or hide the direction/arrow.

Type | Description
Boolean | A Boolean expression that specifies that the arrow for all links are shown or hidden.
The LinksShowDir property specifies whether the direction for all links are shown or hidden. The ShowDir property specifies whether the arrow of the link is shown or hidden. The ArrowColor property specifies the color to show the direction of the particular link. The LinkWidth property specifies the size of the link and so the size of the arrow. The Visible property indicates whether the link is visible or hidden.


property LinksStyle

property SwimLane.LinksStyle as LinkStyleEnum
Specifies the style to draw the links between the elements.

Type | Description
LinkStyleEnum | A LinkStyleEnum expression that defines the style of the line to be shown between elements.
The LinksStyle property specifies the style of the lines/links to be shown on the surface. The Style property indicates the style of the line to be shown on a particular link. The ShowLinksType property defines the type of the link to be shown between elements on the surface. The LinksWidth property specifies the size of the links and so the size of the arrow. The ShowLinks property specifies whether the surface shows or hides the links. The control's LinksStyle property defines the style of the line to be shown on the link. The control's LinksShowDir property specifies whether the arrow of the links is shown or hidden.


property LinksWidth

property SwimLane.LinksWidth as Long
Specifies the width in pixels of the pen to draw the links between the elements.

Type | Description
Long | A Long expression that specifies the width to show the links between elements.
The LinksWidth property specifies the width of the links between elements. The Width property specifies the size of the link and so the size of the arrow. The ShowLinksType property defines the type of the link to be shown between elements on the surface. The LinksStyle property specifies the style of the lines/links to be shown on the surface. The ShowLinks property specifies whether the surface shows or hides the links. The control's LinksShowDir property specifies whether the arrow of the links is shown or hidden.


method LoadXML

method SwimLane.LoadXML (Source as Variant)
Loads an XML document from the specified location, using MSXML parser.

Type | Description
Source as Variant | An indicator of the object that specifies the source for the XML document. The object can represent a file name, a URL, an IStream, a SAFEARRAY, or an IXMLDOMDocument.
Return | Description
Boolean | A boolean expression that specifies whether the XML document is loaded without errors. If an error occurs, the method retrieves a description of the error occurred.
The LoadXML method uses the MSXML ( MSXML.DOMDocument, XML DOM Document ) parser to load XML documents, previously saved using the SaveXML method. The LoadXML method loads elements and links. The elements of the surface go to the <Elements> section, while the links go to the <Links> section. Each element goes under the <element> section, while each information about a link goes to the <link> section.

The XML Format of the file is:

- <Content Author Component Version ...>
    - <Pools>
          <Pool ID ... />
          ...
      </Pools>
    - <Elements>
          <Element ID ... />
          ...
      </Elements>
    - <Links>
          <Link ID ...>
          </Link>
      </Links>
  </Content>


property MajorGridColor

property SwimLane.MajorGridColor as Color
Indicates the color to show the major grid lines on the surface.

Type | Description
Color | A Color expression that specifies the color to show the major grid lines.
The MajorGridColor property specifies the color to show the major grid lines. Use the MajorGridStyle property to specify the style of the major lines. Use the ShowGridLines property to specify whether the control shows or hides the minor/major grid lines. Use the MajorGridWidth / MajorGridHeight property to specify the how major grid lines are displayed/aligned. Use the MinorGridWidth / MinorGridHeight property to specify the how minor grid lines are displayed/aligned. Use the MinorGridStyle property to specify the style of the minor lines. The Minor GridColor property specifies the color to show the minor grid lines. Use the AxisStyle property to hide the axis lines or to display with a different style. Use the AxisColor property to specify the color to show the axis lines.

Use the AlignObjectsToGridLines property to align the elements to the grid lines. The AutoSize property of the Element specifies whether the element's size is computed based on the element's content. The CaptionAlign property specifies the alignment of the element's caption.


property MajorGridHeight

property SwimLane.MajorGridHeight as Long
Indicates the height between two consecutive major grid lines.

Type | Description
Long | A Long expression that specifies the distance (in pixels ) between two consecutive major grid lines.
Use the MajorGridWidth / MajorGridHeight property to specify the how major grid lines are displayed/aligned. Use the MajorGridStyle property to specify the style of the major lines. Use the MinorGridStyle property to specify the style of the minor lines. The MajorGridColor property specifies the color to show the major grid lines. Use the MinorGridWidth / MinorGridHeight property to specify the how minor grid lines are displayed/aligned. Use the ShowGridLines property to specify whether the control shows or hides the minor/major grid lines. The Minor GridColor property specifies the color to show the minor grid lines. Use the AxisStyle property to hide the axis lines or to display with a different style. Use the AxisColor property to specify the color to show the axis lines.

Use the AlignObjectsToGridLines property to align the elements to the grid lines. The AutoSize property of the Element specifies whether the element's size is computed based on the element's content. The CaptionAlign property specifies the alignment of the element's caption.


property MajorGridStyle

property SwimLane.MajorGridStyle as LinesStyleEnum
Specifies the style to display the major grid lines.

Type | Description
LinesStyleEnum | A LinesStyleEnum expression that specifies the style of major grid lines.
By default, the MajorGridStyle property is exLinesDot. Use the MajorGridStyle property to specify the style of the major lines. The MajorGridColor property specifies the color to show the major grid lines. Use the ShowGridLines property to specify whether the control shows or hides the minor/major grid lines. Use the MajorGridWidth / MajorGridHeight property to specify the how major grid lines are displayed/aligned. Use the MinorGridWidth / MinorGridHeight property to specify the how minor grid lines are displayed/aligned. Use the MinorGridStyle property to specify the style of the minor lines. The Minor GridColor property specifies the color to show the minor grid lines. Use the AxisStyle property to hide the axis lines or to display with a different style. Use the AxisColor property to specify the color to show the axis lines.

Use the AlignObjectsToGridLines property to align the elements to the grid lines. The AutoSize property of the Element specifies whether the element's size is computed based on the element's content. The CaptionAlign property specifies the alignment of the element's caption.


property MajorGridWidth

property SwimLane.MajorGridWidth as Long
Indicates the width between two consecutive major grid lines.

Type | Description
Long | A Long expression that specifies the distance (in pixels ) between two consecutive major grid lines.
Use the MajorGridWidth / MajorGridHeight property to specify the how major grid lines are displayed/aligned. Use the MajorGridStyle property to specify the style of the major lines. Use the MinorGridWidth / MinorGridHeight property to specify the how minor grid lines are displayed/aligned. Use the ShowGridLines property to specify whether the control shows or hides the minor/major grid lines. Use the MinorGridStyle property to specify the style of the minor lines. The MajorGridColor property specifies the color to show the major grid lines. The Minor GridColor property specifies the color to show the minor grid lines. Use the AxisStyle property to hide the axis lines or to display with a different style. Use the AxisColor property to specify the color to show the axis lines.

Use the AlignObjectsToGridLines property to align the elements to the grid lines. The AutoSize property of the Element specifies whether the element's size is computed based on the element's content. The CaptionAlign property specifies the alignment of the element's caption.


property MinorGridColor

property SwimLane.MinorGridColor as Color
Indicates the color to show the minor grid lines on the surface.

Type | Description
Color | A Color expression that specifies the color to show the minor grid lines.
The MinorGridColor property specifies the color to show the minor grid lines. Use the MinorGridWidth / MinorGridHeight property to specify the how minor grid lines are displayed/aligned. Use the ShowGridLines property to specify whether the control shows or hides the minor/major grid lines. Use the MajorGridWidth / MajorGridHeight property to specify the how major grid lines are displayed/aligned. Use the MajorGridStyle property to specify the style of the major lines. Use the MinorGridStyle property to specify the style of the minor lines. The MajorGridColor property specifies the color to show the major grid lines. Use the AxisStyle property to hide the axis lines or to display with a different style. Use the AxisColor property to specify the color to show the axis lines.

Use the AlignObjectsToGridLines property to align the elements to the grid lines. The AutoSize property of the Element specifies whether the element's size is computed based on the element's content. The CaptionAlign property specifies the alignment of the element's caption.


property MinorGridHeight

property SwimLane.MinorGridHeight as Long
Indicates the height between two consecutive minor grid lines.

Type | Description
Long | A Long expression that specifies the distance (in pixels ) between two consecutive minor grid lines.
Use the MinorGridWidth / MinorGridHeight property to specify the how minor grid lines are displayed/aligned. Use the ShowGridLines property to specify whether the control shows or hides the minor/major grid lines. Use the MajorGridWidth / MajorGridHeight property to specify the how major grid lines are displayed/aligned. Use the MajorGridStyle property to specify the style of the major lines. Use the MinorGridStyle property to specify the style of the minor lines. The MajorGridColor property specifies the color to show the major grid lines. The Minor GridColor property specifies the color to show the minor grid lines. Use the AxisStyle property to hide the axis lines or to display with a different style. Use the AxisColor property to specify the color to show the axis lines.

Use the AlignObjectsToGridLines property to align the elements to the grid lines. The AutoSize property of the Element specifies whether the element's size is computed based on the element's content. The CaptionAlign property specifies the alignment of the element's caption.


property MinorGridStyle

property SwimLane.MinorGridStyle as LinesStyleEnum
Specifies the style to display the minor grid lines.

Type | Description
LinesStyleEnum | A LinesStyleEnum expression that specifies the style to show the minor lines.
By default, the MinorGridStyle property is exLinesDot4. Use the MinorGridStyle property to specify the style of the minor lines. The Minor GridColor property specifies the color to show the minor grid lines. Use the MinorGridWidth / MinorGridHeight property to specify the how minor grid lines are displayed/aligned. Use the ShowGridLines property to specify whether the control shows or hides the minor/major grid lines. Use the MajorGridWidth / MajorGridHeight property to specify the how major grid lines are displayed/aligned. Use the MajorGridStyle property to specify the style of the major lines. The MajorGridColor property specifies the color to show the major grid lines. Use the AxisStyle property to hide the axis lines or to display with a different style. Use the AxisColor property to specify the color to show the axis lines.

Use the AlignObjectsToGridLines property to align the elements to the grid lines. The AutoSize property of the Element specifies whether the element's size is computed based on the element's content. The CaptionAlign property specifies the alignment of the element's caption.


property MinorGridWidth

property SwimLane.MinorGridWidth as Long
Indicates the width between two consecutive minor grid lines.

Type | Description
Long | A Long expression that specifies the distance (in pixels ) between two consecutive minor grid lines.
Use the MinorGridWidth / MinorGridHeight property to specify the how minor grid lines are displayed/aligned. Use the ShowGridLines property to specify whether the control shows or hides the minor/major grid lines. Use the MajorGridWidth / MajorGridHeight property to specify the how major grid lines are displayed/aligned. Use the MajorGridStyle property to specify the style of the major lines. Use the MinorGridStyle property to specify the style of the minor lines. The MajorGridColor property specifies the color to show the major grid lines. The Minor GridColor property specifies the color to show the minor grid lines. Use the AxisStyle property to hide the axis lines or to display with a different style. Use the AxisColor property to specify the color to show the axis lines.

Use the AlignObjectsToGridLines property to align the elements to the grid lines. The AutoSize property of the Element specifies whether the element's size is computed based on the element's content. The CaptionAlign property specifies the alignment of the element's caption.


method MoveCorner

method SwimLane.MoveCorner (From as ContentAlignmentEnum, To as ContentAlignmentEnum)
Moves or scrolls the surface.

Type | Description
From as ContentAlignmentEnum | A ContentAlignmentEnum expression that indicates the point to move the surface from.
To as ContentAlignmentEnum | A ContentAlignmentEnum expression that indicates the point to move the surface to.

The MoveCorner method scrolls the surface from a corner to another. The MovePoint method of the control moves the surface from the one point to another. The ScrollTo method ensures that the element fits the surface's visible area. The control's ScrollPos, ScrollX and ScrollY properties specify the surface's scroll position. Use the ScrollTo method of the control to scroll the surface at specified position.


method MovePoint

method SwimLane.MovePoint (X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS, To as ContentAlignmentEnum)
Moves or scrolls the surface, so the cursor aligns to specified corner.

Type | Description
X as OLE_XPOS_PIXELS | A Long expression that specifies the x-coordinate on the screen to move the surface from.
Y as OLE_YPOS_PIXELS | A Long expression that specifies the y-coordinate on the screen to move the surface from.
To as ContentAlignmentEnum | A ContentAlignmentEnum expression that specifies the corner of the surface to move the surface to.
The MovePoint method of the control moves the surface from the one point to another. The MoveCorner method scrolls the surface from a corner to another. Use the ScrollTo method of the control to scroll the surface at specified position. The ScrollTo method ensures that the element fits the surface's visible area. The control's ScrollPos, ScrollX and ScrollY properties specify the surface's scroll position.


method OLEDrag

method SwimLane.OLEDrag ()
Causes a component to initiate an OLE drag/drop operation.

Type Description

The method is only for internal use.


property OLEDropMode

property SwimLane.OLEDropMode as exOLEDropModeEnum
Returns or sets how a target component handles drop operations

Type | Description
exOLEDropModeEnum | An exOLEDropModeEnum expression that indicates the OLE Drag and Drop mode. 0 means no drag and drop support, 1 means manual support.
In the /NET Assembly, you have to use the AllowDrop property as explained here:
  • https://www.exontrol.com/sg.jsp?content=support/faq/net/#dragdrop

By default, the OLEDropMode property is exOLEDropNone. Curently, the control supports only manual OLE Drag and Drop operation.

See the OLEStartDrag and OLEDragDrop events for more details about implementing drag and drop operations into the ExSwimLane control.


property OverviewColor

property SwimLane.OverviewColor as Color
Specifies the color to show objects outside of the surface's client area.

Type | Description
Color | A Color expression that specifies the overview color.
By default, the OverviewColor property is RGB(190,190,190), If the control's OverviewColor property is -1, no elements is shown on the border. Use the OverviewColor property of the Element to specify a different color to be shown for specific elements. The OverviewColor property has effect when the element is not fitting the surface's client area and it is shown on the border of the surface. The BorderWidth / BorderHeight properties specify the size on the margin where the overview elements are shown.

The following screen shot shows the how elements are shown when they are not visible in the surface's client area ( look on the border ) :

The following screen shot shows the elements when they are visible on the surface's client area:


property Picture

property SwimLane.Picture as IPictureDisp
Retrieves or sets a graphic to be displayed in the control.

Type | Description
IPictureDisp | A Picture object that's displayed on the control's background.
By default, the control has no picture associated. Use the Picture property to assign your logo on the control's background. The control uses the PictureDisplay property to determine how the picture is displayed on the control's background. The BackColor property specifies a solid color to be shown on the control's background. The Picture property specifies a picture to be displayed on the element's background.

The following screen shot shows a logo on the control's background:


property PictureDisplay

property SwimLane.PictureDisplay as PictureDisplayEnum
Retrieves or sets a value that indicates the way how the graphic is displayed on the control's background

Type | Description
PictureDisplayEnum | A PictureDisplayEnum expression that indicates the way the control arranges the picture on the control's background.
The control uses the PictureDisplay property to determine how the picture is displayed on the control's background. By default, the control has no picture associated. Use the Picture property to assign your logo on the control's background. The BackColor property specifies a solid color to be shown on the control's background. The Picture property specifies a picture to be displayed on the element's background.


method PointToPosition

method SwimLane.PointToPosition (X as Long, Y as Long)
Converts display coordinates to element's position.

Type | Description
X as Long | A Long expression that determines the x-coordinate on the screen. On return it gets the x-coordinate on the surface.
Y as Long | A Long expression that determines the y-coordinate on the screen. On return it gets the y-coordinate on the surface.
Use the PointToPosition / PositionToPoint property to convert screen coordinates to surface coordinates or reverse. The PointToPosition / PositionToPoint convert the giving point based on the ScrollX, ScrollY and Zoom conditions ( scroll position and the zooming factor of the surface ). The ElementFromPoint property gets the element from the surface giving the position on the surface. The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the current cursor position.


property PoolFromPoint

property SwimLane.PoolFromPoint (X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS) as Pool
Gets the Pool object from the cursor.

Type | Description
X as OLE_XPOS_PIXELS | A Long expression that specifies the x-cursor position.
Y as OLE_YPOS_PIXELS | A Long expression that specifies the y-cursor position.
Pool | A Pool object from the cursor.
The PoolFromPoint(-1,-1) property gets the Pool object from the cursor, or nothing if no pool at the cursor position. The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the cursor position. The HitTestFromPoint(-1,-1) property returns the element and the hit-test code from the cursor. The ShowHandCursorOn property specifies the parts of the element that shows the hand cursor when the mouse-pointer hovers the part. The HitTestFromPoint(-1,-1) property returns the element/hit-test code from the cursor. Use the LinkFromPoint property to get if there is any link at the specified position. The HeaderLaneFromPoint property gets the HeaderLane object from the cursor. The LaneFromPoint property gets the Lane object from the cursor.


property Pools

property SwimLane.Pools as Pools
Retrieves the control's pools.

Type | Description
Pools | A Pools objects that holds the Pool objects on the surface.
The Pools property retrieves the control's Pools collection. The AllowCreatePool property specifies the combination of keys that allows the user to create objects on the surface. Set the AllowCreatePool property on exDisallow to prevent creating new pools at runtime. The Add method adds programmatically a new pool on the surface. The AddPool event notifies your application once a new new pool is added to the Pools collection. The CreatePool event occurs when the user creates the pool on the surface. The PoolFromPoint property gets the pool from the cursor. The Links property gives access to the surface's Links collection. The Elements property gives access to the surface's Elements collection.


method PositionToPoint

method SwimLane.PositionToPoint (X as Long, Y as Long)
Converts element's position to display coordinates.

Type | Description
X as Long | A Long expression that determines the x-coordinate on the surface. On return it gets the x-coordinate on the screen.
Y as Long | A Long expression that determines the y-coordinate on the surface. On return it gets the y-coordinate on the screen.
Use the PointToPosition / PositionToPoint property to convert screen coordinates to surface coordinates or reverse. The PointToPosition / PositionToPoint convert the giving point based on the ScrollX, ScrollY and Zoom conditions ( scroll position and the zooming factor of the surface ) . The (0,0) point indicates the origin of the surface, so the X and Y parameters must be relative to the origin of the surface. The ElementFromPoint property gets the element from the surface giving the position on the surface. The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the current cursor position.


method Redo

method SwimLane.Redo ()
Redoes the next action in the surface's Redo queue.

Type Description
The Redo redoes the next action in the control's redo queue. The AllowUndoRedo property enables or disables the Undo/Redo feature. The CanRedo method indicates whether the control can perform a Redo operation. The Undo method undoes the last control operation. The UndoRedoQueueLength property gets or sets the maximum number of Undo/Redo actions that may be stored to the control's queue, or in other words how many operations the control's Undo/Redo manager may store.

The records of the Undo/Redo queue may contain actions in the following format:

  • "AddElement;ELEMENTID", indicates that a new element has been created
  • "RemoveElement;ELEMENTID", indicates that an element has been removed
  • "MoveElement;ELEMENTID", indicates that an element has been moved or resized
  • "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods
  • "AddLink;LINKID", indicates that a new link has been created
  • "RemoveLink;LINKID", indicates that a link has been removed
  • "UpdateLink;LINKID", specifies that one of more properties of the link has been updated, using the StartUpdateLink / EndUpdateLink methods
  • "AddPool;POOLTID", indicates that a new pool has been created
  • "RemovePool;POOLTID", indicates that a pool has been removed
  • "MovePool;POOLID", indicates that a pool has been moved or resized
  • "UpdatePool;POOLID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

Also, the Undo/Redo queue may include:

  • "StartBlock", specifies that a block of operations begins (initiated by StartBlockUndoRedo method)
  • "EndBlock", specifies that a block of operations ends (initiated by End BlockUndoRedo method)

The LayoutStartChanging(exUndo/exRedo) / LayoutEndChanging(exUndo/exRedo) event notifies your application whenever an Undo/Redo operation is performed. The UndoListAction property lists the Undo actions that can be performed in the control. The RedoListAction property lists the Redo actions that can be performed in the control. Use the UndoRemoveAction method to remove the last actions from the undo queue. The RedoRemoveAction method removes the first action to be performed if the Redo method is invoked.


property RedoListAction

property SwimLane.RedoListAction ([Action as Variant], [Count as Variant]) as String
Lists the Redo actions that can be performed on the surface.

Type | Description
Action as Variant [optional] A long expression that specifies the action being listed. If missing or -1, all actions are listed.

The Action parameter can be one of the following:

  • exUndoRedoAddElement(13) ~ "AddElement;ELEMENTID", indicates that a new element has been created
  • exUndoRedoRemoveElement(14) ~ "RemoveElement;ELEMENTID", indicates that an element has been removed
  • exUndoRedoMoveElement(15) ~ "MoveElement;ELEMENTID", indicates that an element has been moved or resized
  • exUndoRedoUpdateElement(16) ~ "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods
  • exUndoRedoAddLink(10) ~ "AddLink;LINKID", indicates that a new link has been created
  • exUndoRedoRemoveLink(11) ~ "RemoveLink;LINKID", indicates that a link has been removed
  • exUndoRedoUpdateLink(12) ~ "UpdateLink;LINKID", specifies that one of more properties of the link has been updated, using the StartUpdateLink / EndUpdateLink methods
  • exUndoRedoAddPool(20) ~ "AddPool;POOLID", indicates that a new pool has been created
  • exUndoRedoRemovePool(21) ~ "RemovePool;POOLID", indicates that a pool has been removed
  • exUndoRedoMovePool(22) ~ "MovePool;POOLID", indicates that a pool has been moved or resized
  • exUndoRedoUpdatePool(23) ~ "UpdatePool;POOLTID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

For instance, RedoListAction(12) shows only AddElement actions in the redo stack.
Count as Variant | [optional] A long expression that indicates the number of actions being listed. If missing or -1, all actions are listed. For instance, RedoListAction(12,1) shows only the last AddElement action being added to the redo stack
String | A String expression that lists the Redo actions that may be performed.
The RedoListAction property lists the Redo actions that can be performed in the control. The AllowUndoRedo property enables or disables the Undo/Redo feature. The UndoListAction property lists the Undo actions that can be performed in the control. Use the UndoRemoveAction method to remove the last actions from the undo queue. The RedoRemoveAction method removes the first action to be performed if the Redo method is invoked. The LayoutStartChanging(exUndo/exRedo) / LayoutEndChanging(exUndo/exRedo) event notifies your application whenever an Undo/Redo operation is performed.

The records of the Undo/Redo queue may contain actions in the following format:

  • "AddElement;ELEMENTID", indicates that a new element has been created
  • "RemoveElement;ELEMENTID", indicates that an element has been removed
  • "MoveElement;ELEMENTID", indicates that an element has been moved or resized
  • "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods
  • "AddLink;LINKID", indicates that a new link has been created
  • "RemoveLink;LINKID", indicates that a link has been removed
  • "UpdateLink;LINKID", specifies that one of more properties of the link has been updated, using the StartUpdateLink / EndUpdateLink methods
  • "AddPool;POOLTID", indicates that a new pool has been created
  • "RemovePool;POOLTID", indicates that a pool has been removed
  • "MovePool;POOLID", indicates that a pool has been moved or resized
  • "UpdatePool;POOLID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

Also, the Undo/Redo queue may include:

  • "StartBlock", specifies that a block of operations begins (initiated by StartBlockUndoRedo method)
  • "EndBlock", specifies that a block of operations ends (initiated by End BlockUndoRedo method)

Here's a sample how the result of RedoListAction method looks like:

AddElement;1
UpdateElement;A
AddElement;2
UpdateElement;B
AddLink;1
UpdateLink;Akak
MoveElement;B
StartBlock
MoveElement;3
AddElement;3
EndBlock


method RedoRemoveAction

method SwimLane.RedoRemoveAction ([Action as Variant], [Count as Variant])
Removes the last redo actions that can be performed on the surface.

Type | Description
Action as Variant [optional] A long expression that specifies the action being remove. If missing or -1, all actions are removed.

The Action parameter can be one of the following:

  • exUndoRedoAddElement(13) ~ "AddElement;ELEMENTID", indicates that a new element has been created
  • exUndoRedoRemoveElement(14) ~ "RemoveElement;ELEMENTID", indicates that an element has been removed
  • exUndoRedoMoveElement(15) ~ "MoveElement;ELEMENTID", indicates that an element has been moved or resized
  • exUndoRedoUpdateElement(16) ~ "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods
  • exUndoRedoAddLink(10) ~ "AddLink;LINKID", indicates that a new link has been created
  • exUndoRedoRemoveLink(11) ~ "RemoveLink;LINKID", indicates that a link has been removed
  • exUndoRedoUpdateLink(12) ~ "UpdateLink;LINKID", specifies that one of more properties of the link has been updated, using the StartUpdateLink / EndUpdateLink methods
  • exUndoRedoAddPool(20) ~ "AddPool;POOLID", indicates that a new pool has been created
  • exUndoRedoRemovePool(21) ~ "RemovePool;POOLID", indicates that a pool has been removed
  • exUndoRedoMovePool(22) ~ "MovePool;POOLID", indicates that a pool has been moved or resized
  • exUndoRedoUpdatePool(23) ~ "UpdatePool;POOLTID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

For instance, RedoRemoveAction(12) removes only AddElement actions from the redo stack.
Count as Variant | [optional] A long expression that indicates the number of actions to remove. If missing or -1, all actions are removed. For instance, RedoRemoveAction(12,1) removes only the last AddElement action from the redo stack
The RedoRemoveAction method removes the first action to be performed if the Redo method is invoked. Use the RedoRemoveAction() ( with no parameters ) to remove all redo actions. Use the UndoRemoveAction method to remove the last action from the undo queue. The AllowUndoRedo property enables or disables the Undo/Redo feature. The UndoListAction property lists the Undo actions that can be performed in the control. The RedoListAction property lists the Redo actions that can be performed in the control. The LayoutStartChanging(exUndo/exRedo) / LayoutEndChanging(exUndo/exRedo) event notifies your application whenever an Undo/Redo operation is performed.

The records of the Undo/Redo queue may contain actions in the following format:

  • "AddElement;ELEMENTID", indicates that a new element has been created
  • "RemoveElement;ELEMENTID", indicates that an element has been removed
  • "MoveElement;ELEMENTID", indicates that an element has been moved or resized
  • "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods
  • "AddLink;LINKID", indicates that a new link has been created
  • "RemoveLink;LINKID", indicates that a link has been removed
  • "UpdateLink;LINKID", specifies that one of more properties of the link has been updated, using the StartUpdateLink / EndUpdateLink methods
  • "AddPool;POOLTID", indicates that a new pool has been created
  • "RemovePool;POOLTID", indicates that a pool has been removed
  • "MovePool;POOLID", indicates that a pool has been moved or resized
  • "UpdatePool;POOLID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

Also, the Undo/Redo queue may include:

  • "StartBlock", specifies that a block of operations begins (initiated by StartBlockUndoRedo method)
  • "EndBlock", specifies that a block of operations ends (initiated by End BlockUndoRedo method)


method Refresh

method SwimLane.Refresh ()
Refreses the control.

Type Description


method RemoveSelection

method SwimLane.RemoveSelection ()
Removes the elements in the selection.

Type Description


method ReplaceIcon

method SwimLane.ReplaceIcon ([Icon as Variant], [Index as Variant])
Adds a new icon, replaces an icon or clears the control's image list.

Type | Description
Icon as Variant | A long expression that indicates the icon's handle.
Index as Variant | A long expression that indicates the index where icon is inserted.
Return | Description
Long | A long expression that indicates the index of the icon in the images collection
Use the ReplaceIcon property to add, remove or replace an icon in the control's images collection. Also, the ReplaceIcon property can clear the images collection. Use the Images method to attach a image list to the control. The ImageSize property defines the size (width/height) of the icons within the control's Images collection. The user can add images at design time, by drag and drop files to control's images holder. The ShowImageList property available for the /COM shows or hides the control's images holder at design mode. Use the Pictures / ExtraPictures properties to display different pictures on the element.

The following VB sample adds a new icon to control's images list:

i = ExSwimLane1.ReplaceIcon( LoadPicture("d:\icons\help.ico").Handle), i specifies the index where the icon is added

The following VB sample replaces an icon into control's images list::

i = ExSwimLane1.ReplaceIcon( LoadPicture("d:\icons\help.ico").Handle, 0), i is zero, so the first icon is replaced.

The following VB sample removes an icon from control's images list:

ExSwimLane1.ReplaceIcon 0, i, i specifies the index of icon removed.

The following VB clears the control's icons collection:

ExSwimLane1.ReplaceIcon 0, -1


method SaveXML

method SwimLane.SaveXML (Destination as Variant)
Saves the control's content as XML document to the specified location, using the MSXML parser.

Type Description
Destination as Variant This object can represent a file name, an XML document object, or a custom object that supports persistence as follows:
  • String - Specifies the file name. Note that this must be a file name, rather than a URL. The file is created if necessary and the contents are entirely replaced with the contents of the saved document. For example:

    SwimLane1.SaveXML("sample.xml")

  • Reference to a String member - Saves the control's content to the string member. Note that the string member must be empty, before calling the SaveXML method. For example:

    Dim s As String
    SwimLane1.SaveXML s

    In VB.NET for /NET assembly, you should call such as :

    Dim s As String = String.Empty
    Exsurface1.SaveXML(s)

    In C# for /NET assembly, you should call such as :

    string s = string.Empty;
    exswimlane1.SaveXML(ref s);

  • XML Document Object. For example:

    Dim xmldoc as Object
    Set xmldoc = CreateObject("MSXML.DOMDocument")
    SwimLane1.SaveXML(xmldoc)

  • Custom object supporting persistence - Any other custom COM object that supports QueryInterface for IStream, IPersistStream, or IPersistStreamInit can also be provided here and the document will be saved accordingly. In the IStream case, the IStream::Write method will be called as it saves the document; in the IPersistStream case, IPersistStream::Load will be called with an IStream that supports the Read, Seek, and Stat methods.

Return | Description
Boolean | A Boolen expression that specifies whether saving the XML document was ok.
The SaveXML method uses the MSXML ( MSXML.DOMDocument, XML DOM Document ) parser to save the control's data in XML documents. The LoadXML method loads XML documents being created with SaveXML method. The elements of the surface go to the <Elements> section, while the links go to the <Links> section. Each element goes under the <element> section, while each information about a link goes to the <link> section.

The XML Format of the file is:

- <Content Author Component Version ...>
    - <Pools>
          <Pool ID ... />
          ...
      </Pools>
    - <Elements>
          <Element ID ... />
          ...
      </Elements>
    - <Links>
          <Link ID ...>
          </Link>
      </Links>
  </Content>


property ScrollPos

property SwimLane.ScrollPos(Vertical as Boolean) as Long
Specifies the vertical/horizontal scroll position.

Type | Description
Vertical as Boolean | A Boolean expression that specifies the surface's vertical or horizontal posituion
Long | A long expression that specifies the scroll position.
The control's ScrollPos, ScrollX and ScrollY properties specify the surface's scroll position. The ScrollX property is equivalent with ScrollPos(False), and the ScrollY property is equivalent with the ScrollPos(True). Use the ScrollTo method of the control to scroll the surface at specified position. The MovePoint method of the control moves the surface from the one point to another. The MoveCorner method scrolls the surface from a corner to another. The ScrollTo method ensures that the element fits the surface's visible area. The AllowMoveSurface property specifies the combination of keys that allows the user to move the surface.


method ScrollTo

method SwimLane.ScrollTo (X as Long, Y as Long)
Scrolls the surface to giving position.

Type | Description
X as Long | A Long expression that specifies the x-position where the surface should be scrolled.
Y as Long | A Long expression that specifies the y-position where the surface should be scrolled.
Use the ScrollTo method of the control to scroll the surface at specified position. The MovePoint method of the control moves the surface from the one point to another. The MoveCorner method scrolls the surface from a corner to another. The ScrollTo method ensures that the element fits the surface's visible area. The control's ScrollPos, ScrollX and ScrollY properties specify the surface's scroll position.


property ScrollX

property SwimLane.ScrollX as Long
Indicates the x-scrolling position of the surface.

Type | Description
Long | A Long expression that specifies the x-scroll position.
The control's ScrollPos, ScrollX and ScrollY properties specify the surface's scroll position. The ScrollX property is equivalent with ScrollPos(False), and the ScrollY property is equivalent with the ScrollPos(True). Use the ScrollTo method of the control to scroll the surface at specified position. The MovePoint method of the control moves the surface from the one point to another. The MoveCorner method scrolls the surface from a corner to another. The ScrollTo method ensures that the element fits the surface's visible area. The AllowMoveSurface property specifies the combination of keys that allows the user to move the surface.


property ScrollY

property SwimLane.ScrollY as Long
Indicates the y-scrolling position of the surface.

Type | Description
Long | A Long expression that specifies the y-scroll position.

The control's ScrollPos, ScrollX and ScrollY properties specify the surface's scroll position. The ScrollX property is equivalent with ScrollPos(False), and the ScrollY property is equivalent with the ScrollPos(True). Use the ScrollTo method of the control to scroll the surface at specified position. The MovePoint method of the control moves the surface from the one point to another. The MoveCorner method scrolls the surface from a corner to another. The ScrollTo method ensures that the element fits the surface's visible area. The AllowMoveSurface property specifies the combination of keys that allows the user to move the surface.


property SelCount

property SwimLane.SelCount as Long
Indicates the number of elements being selected on the surface.

Type | Description
Long | A Long expression that specifies the number of selected elements.
The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface. The Selection property sets or gets a safe array of selected elements. The SelectionChanged event occurs once a new element is selected or unselected. The Selected property of the Element object indicates whether the element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable.

The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectElementRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface.


method SelectAll

method SwimLane.SelectAll ()
Selects all selectable elements in the control.

Type Description
The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface. The SelectionChanged event occurs once a new element is selected or unselected. The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The Selected property of the Element object indicates whether the element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable.

The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectElementRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface.


property Selection

property SwimLane.Selection as Variant
Returns or sets a safe array of selected elements on the surface.

Type | Description
Variant | A Safe-Array of Element objects. If calling the Set property the Safe-Array may contains the ID of the Elements to be selected, like: Selection = Array("1", "2"), which indicates that the elements with the ID, "1" and "2" are selected. The Selection method can be used to enumerate the selected elements using the for each statements.
The Selection property sets or gets a safe array of selected elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface. The SelectionChanged event occurs once a new element is selected or unselected. The Selected property of the Element object indicates whether the element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable.

The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectElementRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface.


property SelectObjectColor

property SwimLane.SelectObjectColor as Color
Indicates the color to show the selected objects.

Type | Description
Color | A Color expression that specifies the color to show the selected elements while the control has the focus.
The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectElementRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The SelectionChanged event occurs once a new element is selected or unselected. The Selected property of the Element object indicates whether the element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable.

The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface.

The following screen shot shows the selected elements ( default, SelectObjectStyle property exLinesSolid + exLinesThick, SelectObjectColor indicates a solid color ):

The following screen shot shows the selected elements ( default, SelectObjectStyle property exNoLines, SelectObjectColor indicates a solid color ):

The following screen shot shows the selected elements ( default, SelectObjectStyle property exLinesSolid + exLinesThick, SelectObjectColor indicates an EBN color ):

The following screen shot shows the selected elements ( default, SelectObjectStyle property exNoLines, SelectObjectColor indicates an EBN color ):


property SelectObjectColorInactive

property SwimLane.SelectObjectColorInactive as Color
Indicates the color to show the selected objects, when the surface is not active/focused.

Type | Description
Color | A Color expression that specifies the color to show the selected elements while the control is not focused.
The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectElementRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The SelectionChanged event occurs once a new element is selected or unselected. The Selected property of the Element object indicates whether the element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable.

The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface.


property SelectObjectStyle

property SwimLane.SelectObjectStyle as LinesStyleEnum
Specifies the style to display the selected object.

Type | Description
LinesStyleEnum | A LinesStyleEnum expression that specifies the style of the line to be shown on the selected elements.
By default, the The SelectObjectStyle property is exLinesSolid + exLinesThick. If the SelectObjectStyle property is exNoLines, no lines are shown around the selected elements. The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). Use the Background(exSelectElementRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface.

The following screen shot shows the selected elements ( default, SelectObjectStyle property exLinesSolid + exLinesThick, SelectObjectColor indicates a solid color ):

The following screen shot shows the selected elements ( default, SelectObjectStyle property exNoLines, SelectObjectColor indicates a solid color ):

The following screen shot shows the selected elements ( default, SelectObjectStyle property exLinesSolid + exLinesThick, SelectObjectColor indicates an EBN color ):

The following screen shot shows the selected elements ( default, SelectObjectStyle property exNoLines, SelectObjectColor indicates an EBN color ):


property SelectObjectTextColor

property SwimLane.SelectObjectTextColor as Color
Indicates the color to show the text for selected objects.

Type | Description
Color | A Color expression that specifies the foreground color for selected elements. The -1 indicates that no foreground is changed for selected elements.
By default, the SelectObjectTextColor property is -1, which indicates no foreground color is changed for selected elements. The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectElementRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The SelectionChanged event occurs once a new element is selected or unselected. The Selected property of the Element object indicates whether the element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable.

The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface.


property SelectObjectTextColorInactive

property SwimLane.SelectObjectTextColorInactive as Color
Indicates the color to show the text for selected objects, when the surface is not active/focused.

Type | Description
Color | A Color expression that specifies the foreground color for selected elements. The -1 indicates that no foreground is changed for selected elements.
By default, the SelectObjectTextColorInactive property is -1, which indicates no foreground color is changed for selected elements. The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectElementRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The SelectionChanged event occurs once a new element is selected or unselected. The Selected property of the Element object indicates whether the element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable.

The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface.


property SelElement

property SwimLane.SelElement (Index as Long) as Element
Gets the element being selected giving its index in the selection.

Type | Description
Index as Long | A Long expression that specifies the index of selected element to be accessed. The Index is a positive number between 0 and (SelCount - 1) property
Element | An Element object that specifies the selected element
The SelElement property returns the selected element based on its index in the selected elements collection. The SelCount property counts the number of selected elements. The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface. The Selection property sets or gets a safe array of selected elements. The SelectionChanged event occurs once a new element is selected or unselected. The Selected property of the Element object indicates whether the element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable.

The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectElementRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface.


property ShowElements

property SwimLane.ShowElements as Boolean
Retrieves or sets a value that indicates whether the elements are visible or hidden.

Type | Description
Boolean | A Boolean expression that specifies whether the elements are visible or hidden.
By default, the ShowElements property is True. The ShowElements property retrieves or sets a value that indicates whether the elements are visible or hidden. The ShowLinks property specifies whether the control shows or hides the links between elements. The ShowPools property specifies whether the control shows or hides the pools on the surface. Use the Visible property to hide an element. Use the Remove method to remove an element. If the element is not visible, any incoming or outgoing links are not visible as well. The OutgoingLinks property specifies the list of links that starts from the current element. The IncomingLinks property specifies the list of links that ends on the current element.


property ShowGridLines

property SwimLane.ShowGridLines as Boolean
Shows or hides the grid lines in the control.

Type | Description
Boolean | A Boolean expression that specifies whether the minor/major grid lines are shown or hidden.
By default, the ShowGridLines property is True. Use the ShowGridLines property to specify whether the control shows or hides the minor/major grid lines. Use the MinorGridWidth / MinorGridHeight property to specify the how minor grid lines are displayed/aligned. Use the MajorGridWidth / MajorGridHeight property to specify the how major grid lines are displayed/aligned. Use the MajorGridStyle property to specify the style of the major lines. Use the MinorGridStyle property to specify the style of the minor lines. The MajorGridColor property specifies the color to show the major grid lines. The Minor GridColor property specifies the color to show the minor grid lines. Use the AxisStyle property to hide the axis lines or to display with a different style. Use the AxisColor property to specify the color to show the axis lines.

Use the AlignObjectsToGridLines property to align the elements to the grid lines. The AutoSize property of the Element specifies whether the element's size is computed based on the element's content. The CaptionAlign property specifies the alignment of the element's caption.


property ShowImageList

property SwimLane.ShowImageList as Boolean
Specifies whether the control's image list window is visible or hidden.

Type | Description
Boolean | A boolean expression that specifies whether the control's image list window is visible or hidden.
The property is available for /COM version only, and only at design mode. By default, the ShowImageList property is False. Use the ShowImageList property to show the control's images list window. The control's images list window is visible only at design time. Use the Images method to associate an images list control to the control. Use the ReplaceIcon method to add, remove or clear icons in the control's images collection, at runtime. Use the Pictures / ExtraPictures properties to display different pictures on the element.


property ShowLinks

property SwimLane.ShowLinks as ShowExtendedLinksEnum
Retrieves or sets a value that indicates whether the links between elements are visible or hidden.

Type | Description
ShowExtendedLinksEnum | A ShowExtendedLinksEnum expression that specifies whether the links on the surface are shown or hidden.
By default, the ShowLinks property is exShowExtendedLinks + exShowLinksFront. The ShowLinks property specifies the way the control shows the links on the surface. Use the ShowLinks property to hide the links on the surface. Use the ShowLinks property to show the links on the control's background rather than front. Use the Visible property of the Link to hide a specific link. Use the ShowLinksOnCollapse property to show the links between an element and collapsed elements. The ExpandLinkedElements property specifies whether the elements displays the expand/collapse glyphs when the element has outgoing elements ( the OutgoingLinks property specifies the links that starts from the element ).

The following screen shot shows the links on the surface ( when the ShowLinks property is exShowExtendedLinks + exShowCrossLinksRect):

The following screen shot shows the links on the surface ( when the ShowLinks property is exShowLinks ):


property ShowLinksColor

property SwimLane.ShowLinksColor(Links as ShowLinksEnum) as Color
Retrieves or sets a value that indicates the color to display the links based on the user selection.

Type | Description
Links as ShowLinksEnum | A ShowLinksEnum expression that indicates the color of incoming, outgoing or collapsed links is changed.
Color | A Color expression that specifies the color to show the related links.
The ShowLinksColor property specifies a color to show the incoming, outgoing or collapsed links. The Color property specifies the color to show the entire link. For instance, Use the ShowLinksColor(exShowLinksStartsFrom) / ShowLinksStyle(exShowLinksStartsFrom) / ShowLinksWidth(exShowLinksStartsFrom) properties to mark the outgoing links of selected elements. The control fires the SelectionChanged event when a new element is selected or unselected.

The following screen shot shows the incoming links (red ):


property ShowLinksOnCollapse

property SwimLane.ShowLinksOnCollapse as Boolean
Specifies whether the links for collapsed elements are shown or hidden.

Type | Description
Boolean | A Boolean expression that specifies whether the links of collapsed elements are shown or hidden.
By default, ShowLinksOnCollapse property is True. Use the ShowLinksOnCollapse property to show the links between collapsed elements. The ExpandLinkedElements property specifies whether the elements displays the expand/collapse glyphs when the element has outgoing elements ( the OutgoingLinks property specifies the links that starts from the element ). Use the Visible property of the Link to hide a specific link. The ShowLinksColor(exShowCollapsedLinks) / ShowLinksStyle( exShowCollapsedLinks) / ShowLinksWidth(exShowCollapsedLinks) property specifies how the collapsed links are shown.

The following screen shot shows a link between two child elements, when both parents are expanded:

Having the ShowLinksOnCollapse property on True, the following screen shot shows the link when one parent is collapsed:

Having the ShowLinksOnCollapse property on True, the following screen shot shows the link when both parents are collapsed:

In other words, the ShowLinksOnCollapse property allows you to still display the links for collapsed elements. A collapsed link is shown between expanded and visible elements.


property ShowLinksStyle

property SwimLane.ShowLinksStyle(Links as ShowLinksEnum) as LinkStyleEnum
Retrieves or sets a value that indicates the style to display the links based on the user selection.

Type | Description
Links as ShowLinksEnum | A ShowLinksEnum expression that indicates the width of incoming, outgoing or collapsed links is changed.
LinkStyleEnum | A LinkStyleEnum expression that specifies the style of the line to show the related links.
The ShowLinksStyle property specifies the style to show the incoming, outgoing or collapsed links. The Style property indicates the style of the line to be shown on a particular link. Use the ShowLinksColor(exShowLinksStartsFrom) / ShowLinksStyle(exShowLinksStartsFrom) / ShowLinksWidth(exShowLinksStartsFrom) properties to mark the outgoing links of selected elements. The control fires the SelectionChanged event when a new element is selected or unselected. The OutgoingLinks property specifies the list of links that starts from the current element. The IncomingLinks property specifies the list of links that ends on the current element.

The following screen shot shows the outgoing links with a different style:


property ShowLinksType

property SwimLane.ShowLinksType as ShowLinkTypeEnum
Specifies how the links are displayed between the elements.

Type | Description
ShowLinkTypeEnum | A ShowLinkTypeEnum expression that defines the type of the link to be show between elements.
The ShowLinksType property defines the type of the link to be shown between elements on the surface. The ShowLinkType property specifies a different type of link between two elements. Use the LinksColor property to define the color to show all links on the surface. The control's LinksShowDir property specifies whether the arrow of the links is shown or hidden. The LinksWidth property specifies the size of the links and so the size of the arrow. The ShowLinks property specifies whether the surface shows or hides the links. The control's LinksStyle property defines the style of the line to be shown on the link.

The following screen shot shows the exLinkRectangular type:

The following screen shot shows the exLinkRound type:

The following screen shot shows the exLinkDirect type:

The following screen shot shows the exLinkStraight type:


property ShowLinksWidth

property SwimLane.ShowLinksWidth(Links as ShowLinksEnum) as Long
Retrieves or sets a value that indicates the width to display the links based on the user selection.

Type | Description
Links as ShowLinksEnum | A ShowLinksEnum expression that indicates the width of incoming, outgoing or collapsed links is changed.
Long | A Long expression that specifies the width of related links.
The ShowLinksWidth property specifies the width to show the incoming, outgoing or collapsed links. The Width property specifies the width of a particular link. Use the ShowLinksColor(exShowLinksStartsFrom) / ShowLinksStyle(exShowLinksStartsFrom) / ShowLinksWidth(exShowLinksStartsFrom) properties to mark the outgoing links of selected elements. The control fires the SelectionChanged event when a new element is selected or unselected. The OutgoingLinks property specifies the list of links that starts from the current element. The IncomingLinks property specifies the list of links that ends on the current element.

The following screen shot shows the outgoing links (red ):


property ShowPools

property SwimLane.ShowPools as Boolean
Retrieves or sets a value that indicates whether the pools are visible or hidden.

Type | Description
Boolean | A Boolean expression that specifies whether the pools are visible or hidden.
By default, the ShowPools property is True. The ShowPools property specifies whether the control shows or hides the pools on the surface. The ShowElements property retrieves or sets a value that indicates whether the elements are visible or hidden. The ShowLinks property specifies whether the control shows or hides the links between elements.


method ShowToolTip

method SwimLane.ShowToolTip (ToolTip as String, [Title as Variant], [Alignment as Variant], [X as Variant], [Y as Variant])
Shows the specified tooltip at given position.

Type Description
ToolTip as String The ToolTip parameter can be any of the following:
  • NULL(BSTR) or "<null>"(string) to indicate that the tooltip for the object being hovered is not changed
  • A String expression that indicates the description of the tooltip, that supports built-in HTML format (adds, replaces or changes the object's tooltip)
Title as Variant The Title parameter can be any of the following:
  • missing (VT_EMPTY, VT_ERROR type) or "<null>"(string) the title for the object being hovered is not changed.
  • A String expression that indicates the title of the tooltip (no built-in HTML format) (adds, replaces or changes the object's title)
Alignment as Variant A long expression that indicates the alignment of the tooltip relative to the position of the cursor. If missing (VT_EMPTY, VT_ERROR) the alignment of the tooltip for the object being hovered is not changed.

The Alignment parameter can be one of the following:

  • 0 - exTopLeft
  • 1 - exTopRight
  • 2 - exBottomLeft
  • 3 - exBottomRight
  • 0x10 - exCenter
  • 0x11 - exCenterLeft
  • 0x12 - exCenterRight
  • 0x13 - exCenterTop
  • 0x14 - exCenterBottom

By default, the tooltip is aligned relative to the top-left corner (0 - exTopLeft).

X as Variant Specifies the horizontal position to display the tooltip as one of the following:
  • missing (VT_EMPTY, VT_ERROR type), indicates that the tooltip is shown on its default position / current cursor position (ignored)
  • -1, indicates the current horizontal position of the cursor (current x-position)
  • a numeric expression that indicates the horizontal screen position to show the tooltip (fixed screen x-position)
  • a string expression that indicates the horizontal displacement relative to default position to show the tooltip (moved)
Y as Variant Specifies the vertical position to display the tooltip as one of the following:
  • missing (VT_EMPTY, VT_ERROR type), indicates that the tooltip is shown on its default position / current cursor position (ignored)
  • -1, indicates the current vertical position of the cursor (current y-position)
  • a numeric expression that indicates the vertical screen position to show the tooltip (fixed screen y-position)
  • a string expression that indicates the vertical displacement relative to default position to show the tooltip (displacement)
Use the ShowToolTip method to display a custom tooltip at specified position or to update the object's tooltip, title or position. You can call the ShowToolTip method during the MouseMove event. Use the ToolTipPopDelay property specifies the period in ms of time the ToolTip remains visible if the mouse pointer is stationary within a control. The ToolTipDelay property specifies the time in ms that passes before the ToolTip appears. Use the ToolTipWidth property to specify the width of the tooltip window. Use the ToolTipFont property to change the tooltip's font. Use the Background(exToolTipAppearance) property indicates the visual appearance of the borders of the tooltips. Use the Background(exToolTipBackColor) property indicates the tooltip's background color. Use the Background(exToolTipForeColor) property indicates the tooltip's foreground color.

For instance:

  • ShowToolTip(`<null>`,`<null>`,,`+8`,`+8`), shows the tooltip of the object moved relative to its default position
  • ShowToolTip(`<null>`,`new title`), adds, changes or replaces the title of the object's tooltip
  • ShowToolTip(`new content`), adds, changes or replaces the object's tooltip
  • ShowToolTip(`new content`,`new title`), shows the tooltip and title at current position
  • ShowToolTip(`new content`,`new title`,,`+8`,`+8`), shows the tooltip and title moved relative to the current position
  • ShowToolTip(`new content`,``,,128,128), displays the tooltip at a fixed position
  • ShowToolTip(``,``), hides the tooltip

The ToolTip parameter supports the built-in HTML format like follows:

  • <b> ... </b> displays the text in bold
  • <i> ... </i> displays the text in italics
  • <u> ... </u> underlines the text
  • <s> ... </s> Strike-through text
  • <a id;options> ... </a> displays an anchor element that can be clicked. An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link.The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The control fires the AnchorClick(AnchorID, Options) event when the user clicks the anchor element. The FormatAnchor property customizes the visual effect for anchor elements.

    The control supports expandable HTML captions feature which allows you to expand(show)/collapse(hide) different information using <a ;exp=> or <a ;e64=> anchor tags. The exp/e64 field of the anchor stores the HTML line/lines to show once the user clicks/collapses/expands the caption.

    • exp, stores the plain text to be shown once the user clicks the anchor, such as <a ;exp=show lines>
    • e64, encodes in BASE64 the HTML text to be shown once the user clicks the anchor, such as <a ;e64=gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA>+</a> that displays show lines- in gray when the user clicks the + anchor. The gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA string encodes the <fgcolor 808080>show lines<a>-</a></fgcolor> The Decode64Text/Encode64Text methods of the eXPrint can be used to decode/encode e64 fields.

    Any ex-HTML caption can be transformed to an expandable-caption, by inserting the anchor ex-HTML tag. For instance, <solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3 shows the Header in underlined and bold on the first line and Line1, Line2, Line3 on the rest. The show lines is shown instead of Line1, Line2, Line3 once the user clicks the + sign.

  • <font face;size> ... </font> displays portions of text with a different font and/or different size. For instance, the <font Tahoma;12>bit</font> draws the bit text using the Tahoma font, on size 12 pt. If the name of the font is missing, and instead size is present, the current font is used with a different size. For instance, <font ;12>bit</font> displays the bit text using the current font, but with a different size.
  • <fgcolor rrggbb> ... </fgcolor> or <fgcolor=rrggbb> ... </fgcolor> displays text with a specified foreground color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <bgcolor rrggbb> ... </bgcolor> or <bgcolor=rrggbb> ... </bgcolor> displays text with a specified background color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <solidline rrggbb> ... </solidline> or <solidline=rrggbb> ... </solidline> draws a solid-line on the bottom side of the current text-line, of specified RGB color. The <solidline> ... </solidline> draws a black solid-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <dotline rrggbb> ... </dotline> or <dotline=rrggbb> ... </dotline> draws a dot-line on the bottom side of the current text-line, of specified RGB color. The <dotline> ... </dotline> draws a black dot-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <upline> ... </upline> draws the line on the top side of the current text-line (requires <solidline> or <dotline>).
  • <r> right aligns the text
  • <c> centers the text
  • <br> forces a line-break
  • <img>number[:width]</img> inserts an icon inside the text. The number indicates the index of the icon being inserted. Use the Images method to assign a list of icons to your chart. The last 7 bits in the high significant byte of the number expression indicates the identifier of the skin being used to paint the object. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the part. The width is optional and indicates the width of the icon being inserted. Using the width option you can overwrite multiple icons getting a nice effect. By default, if the width field is missing, the width is 18 pixels.
  • <img>key[:width]</img> inserts a custom size picture into the text being previously loaded using the HTMLPicture property. The Key parameter indicates the key of the picture being displayed. The Width parameter indicates a custom size, if you require to stretch the picture, else the original size of the picture is used.
  • & glyph characters as &amp; ( & ), &lt; ( < ), &gt; ( > ), &qout; ( " ) and &#number; ( the character with specified code ), For instance, the &#8364; displays the EUR character. The & ampersand is only recognized as markup when it is followed by a known letter or a #character and a digit. For instance if you want to display <b>bold</b> in HTML caption you can use &lt;b&gt;bold&lt;/b&gt;
  • <off offset> ... </off> defines the vertical offset to display the text/element. The offset parameter defines the offset to display the element. This tag is inheritable, so the offset is keep while the associated </off> tag is found. You can use the <off offset> HTML tag in combination with the <font face;size> to define a smaller or a larger font to be displayed. For instance: Text with <font ;7><off 6>subscript displays the text such as: Text with subscript The Text with <font ;7><off -6>superscript displays the text such as: Text with subscript
  • <gra rrggbb;mode;blend> ... </gra> defines a gradient text. The text color or <fgcolor> defines the starting gradient color, while the rr/gg/bb represents the red/green/blue values of the ending color, 808080 if missing as gray. The mode is a value between 0 and 4, 1 if missing, and blend could be 0 or 1, 0 if missing. The <font> HTML tag can be used to define the height of the font. Any of the rrggbb, mode or blend field may not be specified. The <gra> with no fields, shows a vertical gradient color from the current text color to gray (808080). For instance the <font ;18><gra FFFFFF;1;1>gradient-center</gra></font> generates the following picture:
  • <out rrggbb;width> ... </out> shows the text with outlined characters, where rr/gg/bb represents the red/green/blue values of the outline color, 808080 if missing as gray, width indicates the size of the outline, 1 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><out 000000><fgcolor=FFFFFF>outlined</fgcolor></out></font> generates the following picture:
  • <sha rrggbb;width;offset> ... </sha> define a text with a shadow, where rr/gg/bb represents the red/green/blue values of the shadow color, 808080 if missing as gray, width indicates the size of shadow, 4 if missing, and offset indicates the offset from the origin to display the text's shadow, 2 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><sha>shadow</sha></font> generates the following picture:

    or <font ;31><sha 404040;5;0><fgcolor=FFFFFF>outline anti-aliasing</fgcolor></sha></font> gets:


property SingleSel

property SwimLane.SingleSel as Boolean
Returns or sets a value that indicates whether the user can select one or more objects.

Type | Description
Boolean | A Boolean expression that specifies whether the control supports single or multiple selection.
By default, the SingleSel property is False, which indicates that multiple elements can be selected. The SingleSel property specifies whether the surface allows selecting one or multiple elements. The Selectable property of the Element object indicates whether the element is selectable or un-selectable. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The SelectionChanged event occurs once a new element is selected or unselected. The Selected property of the Element object indicates whether the element is selected or unselected. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface. Use the AllowMoveSelection property to prevent moving the entire selection when focused element is moved. Use the AllowResizeSelection property to prevent resizing the entire selection when focused element is resized. Use the AllowMoveDescendents property to prevent moving all descendents ( children and outgoing elements ) when focused element is moved. The HideSel property specifies whether the selected elements are highlighted or not when the control loses the focus.

The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectElementRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface.


method StartBlockUndoRedo

method SwimLane.StartBlockUndoRedo ()
Starts recording the UI operations as a block of undo/redo operations.

Type Description
You can use the StartBlockUndoRedo / EndBlockUndoRedo methods to group multiple Undo/Redo operations into a single-block. The GroupUndoRedoActions groups the next to current Undo/Redo Actions in a single block. A block may hold multiple Undo/Redo actions. The AllowUndoRedo property enables or disables the Undo/Redo feature. Use the GroupUndoRedoActions method to group two or more entries in the Undo/Redo queue in a single block, so when a next Undo/Redo operation is performed, multiple actions may occur. For instance, moving several elements in the same time ( multiple elements selection ) is already recorded as a single block. Use the UndoRedoQueueLength property to specify the number of entries that Undo/Redo queue may store.

A block starts with StartBlock and ends with EndBlock when listed by UndoListAction/RedoListAction property as in the following sample:

StartBlock
MoveElement;B
MoveElement;A
EndBlock


property Template

property SwimLane.Template as String
Specifies the control's template.

Type | Description
String | A string expression that defines the control's template

The control's template uses the X-Script language to initialize the control's content. Use the Template property page of the control to update the control's Template property. Use the Template property to execute code by passing instructions as a string ( template string ). Use the ExecuteTemplate property to get the result of executing a template script.

Most of our UI components provide a Template page that's accessible in design mode. No matter what programming language you are using, you can have a quick view of the component's features using the WYSWYG Template editor.

  • Place the control to your form or dialog.
  • Locate the Properties item, in the control's context menu, in design mode. If your environment doesn't provide a Properties item in the control's context menu, please try to locate in the Properties browser.
  • Click it, and locate the Template page.
  • Click the Help button. In the left side, you will see the component, in the right side, you will see a x-script code that calls methods and properties of the control.

The control's Template page helps user to initialize the control's look and feel in design mode, using the x-script language that's easy and powerful. The Template page displays the control on the left side of the page. On the right side of the Template page, a simple editor is displayed where user writes the initialization code. The control's look and feel is automatically updated as soon as the user types new instructions. The Template script is saved to the container persistence ( when Apply button is pressed ), and it is executed when the control is initialized at runtime. Any component that provides a WYSWYG Template page, provides a Template property. The Template property executes code from a string ( template string ).

The Template script is composed by lines of instructions. Instructions are separated by "\n\r" ( newline ) characters.

An instruction can be one of the following:

  • Dim list of variables Declares the variables. Multiple variables are separated by commas. ( Sample: Dim h, h1, h2 )
  • variable = property( list of arguments ) Assigns the result of the property to a variable. The "variable" is the name of a declared variable. The "property" is the property name of the object in the context. The "list or arguments" may include variables or values separated by commas. ( Sample: h = InsertItem(0,"New Child") )
  • property( list of arguments ) = value Changes the property. The value can be a variable, a string, a number, a boolean value or a RGB value.
  • method( list of arguments ) Invokes the method. The "list or arguments" may include variables or values separated by commas.
  • { Beginning the object's context. The properties or methods called between { and } are related to the last object returned by the property prior to { declaration.
  • } Ending the object's context
  • object. property( list of arguments ).property( list of arguments ).... The .(dot) character splits the object from its property. For instance, the Columns.Add("Column1").HeaderBackColor = RGB(255,0,0), adds a new column and changes the column's header back color.

The Template supports the following general functions:

  • RGB(R,G,B) property retrieves an RGB value, where the R, G, B are byte values that indicates the R G B values for the color being specified. For instance, the following code changes the control's background color to red: BackColor = RGB(255,0,0)
  • CreateObject(progID) property creates and retrieves a single uninitialized object of the class associated with a specified program identifier


property TemplateDef

property SwimLane.TemplateDef as Variant
Defines inside variables for the next Template/ExecuteTemplate call.

Type | Description
Variant | A string expression that indicates the Dim declaration, or any Object expression to be assigned to previously declared variables.
The TemplateDef property has been added to allow programming languages such as dBASE Plus to set control's properties with multiple parameters. It is known that programming languages such as dBASE Plus or XBasic from AlphaFive, does not support setting a property with multiple parameters. In other words, these programming languages does not support something like Property(Parameters) = Value, so our controls provide an alternative using the TemplateDef method. The first call of the TemplateDef should be a declaration such as "Dim a,b" which means the next 2 calls of the TemplateDef defines the variables a and b. The next call should be Template or ExecuteTemplate property which can use the variable a and b being defined previously.

So, calling the TemplateDef property should be as follows:

with (Control)
    TemplateDef = [Dim var_Column]
    TemplateDef = var_Column
    Template = [var_Column.Def(4) = 255]
endwith

This sample allocates a variable var_Column, assigns the value to the variable ( the second call of the TemplateDef ), and the Template call uses the var_Column variable ( as an object ), to call its Def property with the parameter 4.

Let's say we need to define the background color for a specified column, so we need to call the Def(exCellBackColor) property of the column, to define the color for all cells in the column.

The following VB6 sample shows setting the Def property such as:

With Control
    .Columns.Add("Column 1").Def(exCellBackColor) = 255
    .Columns.Add "Column 2"
    .Items.AddItem 0
    .Items.AddItem 1
    .Items.AddItem 2
End With

In dBASE Plus, calling the Def(4) has no effect, instead using the TemplateDef helps you to use properly the Def property as follows:

local Control,var_Column

Control = form.Activex1.nativeObject
// Control.Columns.Add("Column 1").Def(4) = 255
var_Column = Control.Columns.Add("Column 1")
with (Control)
    TemplateDef = [Dim var_Column]
    TemplateDef = var_Column
    Template = [var_Column.Def(4) = 255]
endwith
Control.Columns.Add("Column 2")
Control.Items.AddItem(0)
Control.Items.AddItem(1)
Control.Items.AddItem(2)

The equivalent sample for XBasic in A5, is as follows:

Dim Control as P
Dim var_Column as P

Control = topparent:CONTROL_ACTIVEX1.activex
' Control.Columns.Add("Column 1").Def(4) = 255
var_Column = Control.Columns.Add("Column 1")
Control.TemplateDef = "Dim var_Column"
Control.TemplateDef = var_Column
Control.Template = "var_Column.Def(4) = 255"

Control.Columns.Add("Column 2")
Control.Items.AddItem(0)
Control.Items.AddItem(1)
Control.Items.AddItem(2)

The samples just call the Column.Def(4) = Value, using the TemplateDef. The first call of TemplateDef property is "Dim var_Column", which indicates that the next call of the TemplateDef will defines the value of the variable var_Column, in other words, it defines the object var_Column. The last call of the Template property uses the var_Column member to use the x-script and so to set the Def property so a new color is being assigned to the column.

The TemplateDef, Template and ExecuteTemplate support x-script language ( Template script of the Exontrols ), like explained bellow:

The Template or x-script is composed by lines of instructions. Instructions are separated by "\n\r" ( newline characters ) or ";" character. The ; character may be available only for newer versions of the components.

An x-script instruction/line can be one of the following:

  • Dim list of variables Declares the variables. Multiple variables are separated by commas. ( Sample: Dim h, h1, h2 )
  • variable = property( list of arguments ) Assigns the result of the property to a variable. The "variable" is the name of a declared variable. The "property" is the property name of the object in the context. The "list or arguments" may include variables or values separated by commas. ( Sample: h = InsertItem(0,"New Child") )
  • property( list of arguments ) = value Changes the property. The value can be a variable, a string, a number, a boolean value or a RGB value.
  • method( list of arguments ) Invokes the method. The "list or arguments" may include variables or values separated by commas.
  • { Beginning the object's context. The properties or methods called between { and } are related to the last object returned by the property prior to { declaration.
  • } Ending the object's context
  • object. property( list of arguments ).property( list of arguments ).... The .(dot) character splits the object from its property. For instance, the Columns.Add("Column1").HeaderBackColor = RGB(255,0,0), adds a new column and changes the column's header back color.

The x-script may uses constant expressions as follow:

  • boolean expression with possible values as True or False
  • numeric expression may starts with 0x which indicates a hexa decimal representation, else it should starts with digit, or +/- followed by a digit, and . is the decimal separator. Sample: 13 indicates the integer 13, or 12.45 indicates the double expression 12,45
  • date expression is delimited by # character in the format #mm/dd/yyyy hh:mm:ss#. Sample: #31/12/1971# indicates the December 31, 1971
  • string expression is delimited by " or ` characters. If using the ` character, please make sure that it is different than ' which allows adding comments inline. Sample: "text" indicates the string text.

Also , the template or x-script code may support general functions as follows:

  • Me property indicates the original object.
  • RGB(R,G,B) property retrieves an RGB value, where the R, G, B are byte values that indicates the R G B values for the color being specified. For instance, the following code changes the control's background color to red: BackColor = RGB(255,0,0)
  • LoadPicture(file) property loads a picture from a file or from BASE64 encoded strings, and returns a Picture object required by the picture properties.
  • CreateObject(progID) property creates and retrieves a single uninitialized object of the class associated with a specified program identifier.


method TemplatePut

method SwimLane.TemplatePut (NewVal as Variant)
Defines inside variables for the next Template/ExecuteTemplate call.

Type | Description
NewVal as Variant | A string expression that indicates the Dim declaration, or any Object expression to be assigned to previously declared variables.
The TemplatePut method / TemplateDef property has been added to allow programming languages such as dBASE Plus to set control's properties with multiple parameters. It is known that programming languages such as dBASE Plus or XBasic from AlphaFive, does not support setting a property with multiple parameters. In other words, these programming languages does not support something like Property(Parameters) = Value, so our controls provide an alternative using the TemplateDef / TemplatePut method. The first call of the TemplateDef should be a declaration such as "Dim a,b" which means the next 2 calls of the TemplateDef defines the variables a and b. The next call should be Template or ExecuteTemplate property which can use the variable a and b being defined previously.

The TemplateDef, TemplatePut, Template and ExecuteTemplate support x-script language ( Template script of the Exontrols ), like explained bellow:

The Template or x-script is composed by lines of instructions. Instructions are separated by "\n\r" ( newline characters ) or ";" character. The ; character may be available only for newer versions of the components.

An x-script instruction/line can be one of the following:

  • Dim list of variables Declares the variables. Multiple variables are separated by commas. ( Sample: Dim h, h1, h2 )
  • variable = property( list of arguments ) Assigns the result of the property to a variable. The "variable" is the name of a declared variable. The "property" is the property name of the object in the context. The "list or arguments" may include variables or values separated by commas. ( Sample: h = InsertItem(0,"New Child") )
  • property( list of arguments ) = value Changes the property. The value can be a variable, a string, a number, a boolean value or a RGB value.
  • method( list of arguments ) Invokes the method. The "list or arguments" may include variables or values separated by commas.
  • { Beginning the object's context. The properties or methods called between { and } are related to the last object returned by the property prior to { declaration.
  • } Ending the object's context
  • object. property( list of arguments ).property( list of arguments ).... The .(dot) character splits the object from its property. For instance, the Columns.Add("Column1").HeaderBackColor = RGB(255,0,0), adds a new column and changes the column's header back color.

The x-script may uses constant expressions as follow:

  • boolean expression with possible values as True or False
  • numeric expression may starts with 0x which indicates a hexa decimal representation, else it should starts with digit, or +/- followed by a digit, and . is the decimal separator. Sample: 13 indicates the integer 13, or 12.45 indicates the double expression 12,45
  • date expression is delimited by # character in the format #mm/dd/yyyy hh:mm:ss#. Sample: #31/12/1971# indicates the December 31, 1971
  • string expression is delimited by " or ` characters. If using the ` character, please make sure that it is different than ' which allows adding comments inline. Sample: "text" indicates the string text.

Also , the template or x-script code may support general functions as follows:

  • Me property indicates the original object.
  • RGB(R,G,B) property retrieves an RGB value, where the R, G, B are byte values that indicates the R G B values for the color being specified. For instance, the following code changes the control's background color to red: BackColor = RGB(255,0,0)
  • LoadPicture(file) property loads a picture from a file or from BASE64 encoded strings, and returns a Picture object required by the picture properties.
  • CreateObject(progID) property creates and retrieves a single uninitialized object of the class associated with a specified program identifier.


property ToolBarCaption

property SwimLane.ToolBarCaption(ID as Long) as String
Specifies the HTML caption of the giving ToolBar in the control's toolbar.

Type | Description
ID as Long A Long expression that indicates the identifier of the caption/field being changed. The predefined identifiers are:
  • 100, Home (restores the view to the origin)
  • 101, Zoom (changes the zooming factor of the surface)
  • 102, Design (specifies the surface's design mode)
  • 103, Undo (undoes the last control operation, enabled only if the Undo operation is possible)
  • 104, Redo (redoes the next action in the control's redo queue, enabled only if the Undo operation is possible)
String | A string expression that indicates the caption or field's value.
Use the ToolBarCaption property to change captions in the control's toolbar. The ToolBarToolTip property specifies the button's tooltip. The ToolBarImages method loads icons to be displayed on the control's toolbar. The ToolBarHTMLPicture property loads custom-sized pictures to be displayed on the control's toolbar using the <img> HTML tag. Use the ToolBarFormat property to customize the control's toolbar such as adding new buttons, icons, pictures or HTML captions to control's toolbar. The control fires the ToolBarClick event when the user clicks a button in the control's toolbar. For exToolBar... values ( any value greater that 100 ), # character splits the button's label and it's identifier ( SelectedID parameter ). For instance, if the ToolBarCaption(200) = "Letter#1", the button with the identifier 200 displays the "Letter" label, while the 1 is carried to SelectedID parameter of the ToolBarClick event when it is fired. If the ToolBarCaption property includes vbCrLF ( "\r\n" sequence ), the associated buttons displays a drop down field. Use the ToolBarRefresh method to refresh the control's toolbar.

The ToolBarCaption property supports the following HTML elements:

  • <b> ... </b> displays the text in bold
  • <i> ... </i> displays the text in italics
  • <u> ... </u> underlines the text
  • <s> ... </s> Strike-through text
  • <a id;options> ... </a> displays an anchor element that can be clicked. An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link.The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The control fires the AnchorClick(AnchorID, Options) event when the user clicks the anchor element. The FormatAnchor property customizes the visual effect for anchor elements.

    The control supports expandable HTML captions feature which allows you to expand(show)/collapse(hide) different information using <a ;exp=> or <a ;e64=> anchor tags. The exp/e64 field of the anchor stores the HTML line/lines to show once the user clicks/collapses/expands the caption.

    • exp, stores the plain text to be shown once the user clicks the anchor, such as <a ;exp=show lines>
    • e64, encodes in BASE64 the HTML text to be shown once the user clicks the anchor, such as <a ;e64=gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA>+</a> that displays show lines- in gray when the user clicks the + anchor. The gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA string encodes the <fgcolor 808080>show lines<a>-</a></fgcolor> The Decode64Text/Encode64Text methods of the eXPrint can be used to decode/encode e64 fields.

    Any ex-HTML caption can be transformed to an expandable-caption, by inserting the anchor ex-HTML tag. For instance, <solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3 shows the Header in underlined and bold on the first line and Line1, Line2, Line3 on the rest. The show lines is shown instead of Line1, Line2, Line3 once the user clicks the + sign.

  • <font face;size> ... </font> displays portions of text with a different font and/or different size. For instance, the <font Tahoma;12>bit</font> draws the bit text using the Tahoma font, on size 12 pt. If the name of the font is missing, and instead size is present, the current font is used with a different size. For instance, <font ;12>bit</font> displays the bit text using the current font, but with a different size.
  • <fgcolor rrggbb> ... </fgcolor> or <fgcolor=rrggbb> ... </fgcolor> displays text with a specified foreground color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <bgcolor rrggbb> ... </bgcolor> or <bgcolor=rrggbb> ... </bgcolor> displays text with a specified background color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <solidline rrggbb> ... </solidline> or <solidline=rrggbb> ... </solidline> draws a solid-line on the bottom side of the current text-line, of specified RGB color. The <solidline> ... </solidline> draws a black solid-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <dotline rrggbb> ... </dotline> or <dotline=rrggbb> ... </dotline> draws a dot-line on the bottom side of the current text-line, of specified RGB color. The <dotline> ... </dotline> draws a black dot-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <upline> ... </upline> draws the line on the top side of the current text-line (requires <solidline> or <dotline>).
  • <r> right aligns the text
  • <c> centers the text
  • <br> forces a line-break
  • <img>number[:width]</img> inserts an icon inside the text. The number indicates the index of the icon being inserted. Use the Images method to assign a list of icons to your chart. The last 7 bits in the high significant byte of the number expression indicates the identifier of the skin being used to paint the object. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the part. The width is optional and indicates the width of the icon being inserted. Using the width option you can overwrite multiple icons getting a nice effect. By default, if the width field is missing, the width is 18 pixels.
  • <img>key[:width]</img> inserts a custom size picture into the text being previously loaded using the HTMLPicture property. The Key parameter indicates the key of the picture being displayed. The Width parameter indicates a custom size, if you require to stretch the picture, else the original size of the picture is used.
  • & glyph characters as &amp; ( & ), &lt; ( < ), &gt; ( > ), &qout; ( " ) and &#number; ( the character with specified code ), For instance, the &#8364; displays the EUR character. The & ampersand is only recognized as markup when it is followed by a known letter or a #character and a digit. For instance if you want to display <b>bold</b> in HTML caption you can use &lt;b&gt;bold&lt;/b&gt;
  • <off offset> ... </off> defines the vertical offset to display the text/element. The offset parameter defines the offset to display the element. This tag is inheritable, so the offset is keep while the associated </off> tag is found. You can use the <off offset> HTML tag in combination with the <font face;size> to define a smaller or a larger font to be displayed. For instance: Text with <font ;7><off 6>subscript displays the text such as: Text with subscript The Text with <font ;7><off -6>superscript displays the text such as: Text with subscript
  • <gra rrggbb;mode;blend> ... </gra> defines a gradient text. The text color or <fgcolor> defines the starting gradient color, while the rr/gg/bb represents the red/green/blue values of the ending color, 808080 if missing as gray. The mode is a value between 0 and 4, 1 if missing, and blend could be 0 or 1, 0 if missing. The <font> HTML tag can be used to define the height of the font. Any of the rrggbb, mode or blend field may not be specified. The <gra> with no fields, shows a vertical gradient color from the current text color to gray (808080). For instance the <font ;18><gra FFFFFF;1;1>gradient-center</gra></font> generates the following picture:
  • <out rrggbb;width> ... </out> shows the text with outlined characters, where rr/gg/bb represents the red/green/blue values of the outline color, 808080 if missing as gray, width indicates the size of the outline, 1 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><out 000000><fgcolor=FFFFFF>outlined</fgcolor></out></font> generates the following picture:
  • <sha rrggbb;width;offset> ... </sha> define a text with a shadow, where rr/gg/bb represents the red/green/blue values of the shadow color, 808080 if missing as gray, width indicates the size of shadow, 4 if missing, and offset indicates the offset from the origin to display the text's shadow, 2 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><sha>shadow</sha></font> generates the following picture:

    or <font ;31><sha 404040;5;0><fgcolor=FFFFFF>outline anti-aliasing</fgcolor></sha></font> gets:


property ToolBarFormat

property SwimLane.ToolBarFormat as String
Specifies the CRD format to arrange the buttons inside the control's toolbar.

Type | Description
String | A String expression that specifies the CRD format to control's toolbar.
By default, the ToolBarFormat property is "-1,100,102,101" and arranges the toolbar as in the following screen shot. If empty, the control's toolbar displays no buttons.

The predefined identifiers for ToolBarFormat property are:
  • 100, Home (restores the view to the origin)
  • 101, Zoom (changes the zooming factor of the surface)
  • 102, Design (specifies the surface's design mode)
  • 103, Undo (undoes the last control operation, enabled only if the Undo operation is possible)
  • 104, Redo (redoes the next action in the control's redo queue, enabled only if the Undo operation is possible)
Use the ToolBarFormat property to add new buttons, to display icons, pictures, or any other HTML caption. The ToolBarCaption property specifies the caption of the button. The ToolBarToolTip property specifies the button's tooltip. The control fires the ToolBarClick event when the user clicks a button in the control's toolbar. The control fires the ToolBarAnchorClick event when the user clicks an hyperlink element. The ToolBarRefresh method refreshes the control's toolbar.

For instance, the following screen show shows the control's toolbar when ToolBarFormat property is "-1,100,101,1000"

If the ToolBarCaption(1000) property is set as "<sha ;;0>custom" the control's toolbar shows as:


property ToolBarHTMLPicture

property SwimLane.ToolBarHTMLPicture(Key as String) as Variant
Adds or replaces a picture in toolbar's HTML captions.

Type | Description
Key as String | A String expression that indicates the key of the picture being added or replaced. If the Key property is Empty string, the entire collection of pictures is cleared.
Variant The HTMLPicture specifies the picture being associated to a key. It can be one of the followings:
  • a string expression that indicates the path to the picture file, being loaded.
  • a string expression that indicates the base64 encoded string that holds a picture object, Use the eximages tool to save your picture as base64 encoded format.
  • A Picture object that indicates the picture being added or replaced. ( A Picture object implements IPicture interface ),

If empty, the picture being associated to a key is removed. If the key already exists the new picture is replaced. If the key is not empty, and it doesn't not exist a new picture is added.

By default, the ToolBarHTMLPicture collection is empty. The ToolBarHTMLPicture property handles a collection of custom size picture being displayed in the HTML captions, using the <img> tags. Use the ToolBarHTMLPicture property to add new pictures to be used in HTML captions. For instance, the ToolBarHTMLPicture("pic1") = "c:\winnt\zapotec.bmp", loads the zapotec picture and associates the pic1 key to it. Any "<img>pic1</img>" sequence in HTML captions, displays the pic1 picture. On return, the ToolBarHTMLPicture property retrieves a Picture object ( this implements the IPictureDisp interface ). The ToolBarImages method specifies the list of 16x16 icons to be displayed on the control's toolbar. The ToolBarCaption property specifies the caption of the button ( including icons, picture and so on ).


method ToolBarImages

method SwimLane.ToolBarImages (Handle as Variant)
Sets at runtime the toolbar's image list. The Handle should be a handle to an Images List Control.

Type | Description
Handle as Variant | A long expression that identifies a handle to an Image list ( the Handle should be of HIMAGELIST type ) or a string expression that indicates the base64 encoded string that holds the icons list. Use the eximages tool to save your icons as base64 encoded format.
The ToolBarImages method assigns a list of icons to be displayed on the control's toolbar. The icons can be displayed on the control's toolbar using the <img>number</img> HTML tags.The ToolBarHTMLPicture property handles a collection of custom size picture being displayed in the HTML captions, using the <img>key</img> tags. The ToolBarReplaceIcon method replaces icons in the control's toolbar. The ToolBarCaption property specifies the caption of the button ( including icons, picture and so on ).


method ToolBarRefresh

method SwimLane.ToolBarRefresh ()
Refreshes the control's toolbar.

Type Description
Use the ToolBarRefresh method to refresh the control's toolbar. The ToolBarCaption property specifies the caption of the button ( including icons, picture and so on ).


method ToolBarReplaceIcon

method SwimLane.ToolBarReplaceIcon ([Icon as Variant], [Index as Variant])
Adds a new icon, replaces an icon or clears the toolbar's image list.

Type | Description
Icon as Variant | A long expression that indicates the icon's handle. By default, the Icon parameter is 0, if it is missing.
Index as Variant | A long expression that indicates the index where icon is inserted. By default, the Index parameter is -1, if it is missing.
Return | Description
Long | A long expression that indicates the index of the icon in the images collection
Use the ToolBarReplaceIcon property to add, remove or replace an icon in the toolbar's images collection. Also, the ToolBarReplaceIcon property can clear the toolbar's images collection. Use the ToolBarImages method to attach an image list to the toolbar.

The following sample shows how to add a new icon to toolbar's images list:

i = SwimLane1.ToolBarReplaceIcon( LoadPicture("d:\icons\help.ico").Handle), in this case the i specifies the index where the icon was added

The following sample shows how to replace an icon into toolbar's images list::

i = SwimLane1.ToolBarReplaceIcon( LoadPicture("d:\icons\help.ico").Handle, 0), in this case the i is zero, because the first icon was replaced.

The following sample shows how to remove an icon from toolbar's images list:

SwimLane1.ToolBarReplaceIcon 0, i, in this case the i must be the index of the icon that follows to be removed

The following sample shows how to clear the toolbar's icons collection:

SwimLane1.ToolBarReplaceIcon 0, -1


property ToolBarToolTip

property SwimLane.ToolBarToolTip(ID as Long) as String
Specifies the HTML tooltip of the giving item in the control's toolbar.

Type | Description
ID as Long A Long expression that indicates the identifier of the tooltip/field being changed. The predefined identifiers are:
  • 100, Home (restores the view to the origin)
  • 101, Zoom (changes the zooming factor of the surface)
  • 102, Design (specifies the surface's design mode)
  • 103, Undo (undoes the last control operation, enabled only if the Undo operation is possible)
  • 104, Redo (redoes the next action in the control's redo queue, enabled only if the Undo operation is possible)
String | A string expression that indicates the HTML tooltip of the field in the control's toobar.
The ToolBarToolTip property assigns a tooltip to be displayed when mouse-pointer hovers a field in the control's toolbar. The ToolBarImages method loads icons to be displayed on the control's toolbar. The ToolBarHTMLPicture property loads custom-sized pictures to be displayed on the control's toolbar using the <img> HTML tag. Use the ToolBarCaption property to change captions in the control's toolbar.

The ToolBarToolTip property supports the following HTML elements:

  • <b> ... </b> displays the text in bold
  • <i> ... </i> displays the text in italics
  • <u> ... </u> underlines the text
  • <s> ... </s> Strike-through text
  • <a id;options> ... </a> displays an anchor element that can be clicked. An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link.The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The control fires the AnchorClick(AnchorID, Options) event when the user clicks the anchor element. The FormatAnchor property customizes the visual effect for anchor elements.

    The control supports expandable HTML captions feature which allows you to expand(show)/collapse(hide) different information using <a ;exp=> or <a ;e64=> anchor tags. The exp/e64 field of the anchor stores the HTML line/lines to show once the user clicks/collapses/expands the caption.

    • exp, stores the plain text to be shown once the user clicks the anchor, such as <a ;exp=show lines>
    • e64, encodes in BASE64 the HTML text to be shown once the user clicks the anchor, such as <a ;e64=gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA>+</a> that displays show lines- in gray when the user clicks the + anchor. The gA8ABmABnABjABvABshIAOQAEAAHAAGESikWio+ABzABohp3iELABpABuABljYAgRhAEaFsqAAvAEsjUCmUEg0IhUMhUPjQAAEBA string encodes the <fgcolor 808080>show lines<a>-</a></fgcolor> The Decode64Text/Encode64Text methods of the eXPrint can be used to decode/encode e64 fields.

    Any ex-HTML caption can be transformed to an expandable-caption, by inserting the anchor ex-HTML tag. For instance, <solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3 shows the Header in underlined and bold on the first line and Line1, Line2, Line3 on the rest. The show lines is shown instead of Line1, Line2, Line3 once the user clicks the + sign.

  • <font face;size> ... </font> displays portions of text with a different font and/or different size. For instance, the <font Tahoma;12>bit</font> draws the bit text using the Tahoma font, on size 12 pt. If the name of the font is missing, and instead size is present, the current font is used with a different size. For instance, <font ;12>bit</font> displays the bit text using the current font, but with a different size.
  • <fgcolor rrggbb> ... </fgcolor> or <fgcolor=rrggbb> ... </fgcolor> displays text with a specified foreground color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <bgcolor rrggbb> ... </bgcolor> or <bgcolor=rrggbb> ... </bgcolor> displays text with a specified background color. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <solidline rrggbb> ... </solidline> or <solidline=rrggbb> ... </solidline> draws a solid-line on the bottom side of the current text-line, of specified RGB color. The <solidline> ... </solidline> draws a black solid-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <dotline rrggbb> ... </dotline> or <dotline=rrggbb> ... </dotline> draws a dot-line on the bottom side of the current text-line, of specified RGB color. The <dotline> ... </dotline> draws a black dot-line on the bottom side of the current text-line. The rr/gg/bb represents the red/green/blue values of the color in hexa values.
  • <upline> ... </upline> draws the line on the top side of the current text-line (requires <solidline> or <dotline>).
  • <r> right aligns the text
  • <c> centers the text
  • <br> forces a line-break
  • <img>number[:width]</img> inserts an icon inside the text. The number indicates the index of the icon being inserted. Use the Images method to assign a list of icons to your chart. The last 7 bits in the high significant byte of the number expression indicates the identifier of the skin being used to paint the object. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the part. The width is optional and indicates the width of the icon being inserted. Using the width option you can overwrite multiple icons getting a nice effect. By default, if the width field is missing, the width is 18 pixels.
  • <img>key[:width]</img> inserts a custom size picture into the text being previously loaded using the HTMLPicture property. The Key parameter indicates the key of the picture being displayed. The Width parameter indicates a custom size, if you require to stretch the picture, else the original size of the picture is used.
  • & glyph characters as &amp; ( & ), &lt; ( < ), &gt; ( > ), &qout; ( " ) and &#number; ( the character with specified code ), For instance, the &#8364; displays the EUR character. The & ampersand is only recognized as markup when it is followed by a known letter or a #character and a digit. For instance if you want to display <b>bold</b> in HTML caption you can use &lt;b&gt;bold&lt;/b&gt;
  • <off offset> ... </off> defines the vertical offset to display the text/element. The offset parameter defines the offset to display the element. This tag is inheritable, so the offset is keep while the associated </off> tag is found. You can use the <off offset> HTML tag in combination with the <font face;size> to define a smaller or a larger font to be displayed. For instance: Text with <font ;7><off 6>subscript displays the text such as: Text with subscript The Text with <font ;7><off -6>superscript displays the text such as: Text with subscript
  • <gra rrggbb;mode;blend> ... </gra> defines a gradient text. The text color or <fgcolor> defines the starting gradient color, while the rr/gg/bb represents the red/green/blue values of the ending color, 808080 if missing as gray. The mode is a value between 0 and 4, 1 if missing, and blend could be 0 or 1, 0 if missing. The <font> HTML tag can be used to define the height of the font. Any of the rrggbb, mode or blend field may not be specified. The <gra> with no fields, shows a vertical gradient color from the current text color to gray (808080). For instance the <font ;18><gra FFFFFF;1;1>gradient-center</gra></font> generates the following picture:
  • <out rrggbb;width> ... </out> shows the text with outlined characters, where rr/gg/bb represents the red/green/blue values of the outline color, 808080 if missing as gray, width indicates the size of the outline, 1 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><out 000000><fgcolor=FFFFFF>outlined</fgcolor></out></font> generates the following picture:
  • <sha rrggbb;width;offset> ... </sha> define a text with a shadow, where rr/gg/bb represents the red/green/blue values of the shadow color, 808080 if missing as gray, width indicates the size of shadow, 4 if missing, and offset indicates the offset from the origin to display the text's shadow, 2 if missing. The text color or <fgcolor> defines the color to show the inside text. The <font> HTML tag can be used to define the height of the font. For instance the <font ;31><sha>shadow</sha></font> generates the following picture:

    or <font ;31><sha 404040;5;0><fgcolor=FFFFFF>outline anti-aliasing</fgcolor></sha></font> gets:


property ToolBarVisible

property SwimLane.ToolBarVisible as Boolean
Shows or hides control's toolbar.

Type | Description
Boolean | A Boolean expression that specifies whether the control's toolbar is visible or hidden.
By default, the ToolBarVisible property is True. Use the ToolBarVisible property to hide the control's toolbar. Use the ToolBarFormat property to customize the control's toolbar, by adding new buttons or drop-down fields to the control's toolbar. The ToolBarCaption property specifies the HTML caption to be shown on fields of the control's toolbar. The ToolBarToolTip property assigns a tooltip to a field on the control's toolbar. The ToolBarClick event occurs once the user selects/clicks a field in the control's toolbar. The ToolBarAnchorClick event notifies your application if an anchor element is clicked on the control's toolbar. The ToolbarRefresh method refreshes the control's toolbar.

The following screen shot shows the control's default toolbar:


property ToolTipDelay

property SwimLane.ToolTipDelay as Long
Specifies the time in ms that passes before the ToolTip appears.

Type | Description
Long | A long expression that specifies the time in ms that passes before the ToolTip appears.
If the ToolTipDelay or ToolTipPopDelay property is 0, the control displays no tooltips. The ToolTipPopDelay property specifies the period in ms of time the ToolTip remains visible if the mouse pointer is stationary within a control. Use the ToolTipWidth property to specify the width of the tooltip window. Use the ToolTipFont property to assign a font for the control's tooltip. Use the Background(exToolTipAppearance) property indicates the visual appearance of the borders of the tooltips. Use the Background(exToolTipBackColor) property indicates the tooltip's background color. Use the Background(exToolTipForeColor) property indicates the tooltip's foreground color. The ToolTip/ToolTipTitle property of the Element defines the element's tooltip. The ToolTip property of the Link defines the link's tooltip. Use the ShowToolTip method to programmatically show a custom tooltip.


property ToolTipFont

property SwimLane.ToolTipFont as IFontDisp
Retrieves or sets the tooltip's font.

Type | Description
IFontDisp | A Font object that defines the font to show the control's tooltip. You can use the <font> HTML tag to define a different font for parts of the tooltip.
Use the ToolTipFont property to assign a font for the control's tooltip. If the ToolTipDelay or ToolTipPopDelay property is 0, the control displays no tooltips. The ToolTipPopDelay property specifies the period in ms of time the ToolTip remains visible if the mouse pointer is stationary within a control. Use the ToolTipWidth property to specify the width of the tooltip window. Use the Background(exToolTipAppearance) property indicates the visual appearance of the borders of the tooltips. Use the Background(exToolTipBackColor) property indicates the tooltip's background color. Use the Background(exToolTipForeColor) property indicates the tooltip's foreground color. The ToolTip/ToolTipTitle property of the Element defines the element's tooltip. The ToolTip property of the Link defines the link's tooltip. Use the ShowToolTip method to programmatically show a custom tooltip.


property ToolTipPopDelay

property SwimLane.ToolTipPopDelay as Long
Specifies the period in ms of time the ToolTip remains visible if the mouse pointer is stationary within a control.

Type | Description
Long | A long expression that specifies the period in ms of time the ToolTip remains visible if the mouse pointer is stationary within a control.
If the ToolTipDelay or ToolTipPopDelay property is 0, the control displays no tooltips. The ToolTipPopDelay property specifies the period in ms of time the ToolTip remains visible if the mouse pointer is stationary within a control. Use the ToolTipWidth property to specify the width of the tooltip window. Use the ToolTipFont property to assign a font for the control's tooltip. Use the Background(exToolTipAppearance) property indicates the visual appearance of the borders of the tooltips. Use the Background(exToolTipBackColor) property indicates the tooltip's background color. Use the Background(exToolTipForeColor) property indicates the tooltip's foreground color. The ToolTip/ToolTipTitle property of the Element defines the element's tooltip. The ToolTip property of the Link defines the link's tooltip. Use the ShowToolTip method to programmatically show a custom tooltip.


property ToolTipWidth

property SwimLane.ToolTipWidth as Long
Specifies a value that indicates the width of the tooltip window, in pixels.

Type | Description
Long | A long expression that indicates the width of the tooltip window.

Use the ToolTipWidth property to specify the width of the tooltip window. If the ToolTipDelay or ToolTipPopDelay property is 0, the control displays no tooltips. The ToolTipPopDelay property specifies the period in ms of time the ToolTip remains visible if the mouse pointer is stationary within a control. Use the ToolTipFont property to assign a font for the control's tooltip. Use the Background(exToolTipAppearance) property indicates the visual appearance of the borders of the tooltips. Use the Background(exToolTipBackColor) property indicates the tooltip's background color. Use the Background(exToolTipForeColor) property indicates the tooltip's foreground color. The ToolTip/ToolTipTitle property of the Element defines the element's tooltip. The ToolTip property of the Link defines the link's tooltip. Use the ShowToolTip method to programmatically show a custom tooltip.


method Undo

method SwimLane.Undo ()
Performs the last Undo operation.

Type Description
The Undo method undoes the last control operation. The AllowUndoRedo property enables or disables the Undo/Redo feature. The CanUndo method indicates whether the control can perform an Undo operation. The Redo redoes the next action in the control's redo queue. The UndoRedoQueueLength property gets or sets the maximum number of Undo/Redo actions that may be stored to the control's queue, or in other words how many operations the control's Undo/Redo manager may store.

The records of the Undo/Redo queue may contain actions in the following format:

  • "AddElement;ELEMENTID", indicates that a new element has been created
  • "RemoveElement;ELEMENTID", indicates that an element has been removed
  • "MoveElement;ELEMENTID", indicates that an element has been moved or resized
  • "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods
  • "AddLink;LINKID", indicates that a new link has been created
  • "RemoveLink;LINKID", indicates that a link has been removed
  • "UpdateLink;LINKID", specifies that one of more properties of the link has been updated, using the StartUpdateLink / EndUpdateLink methods
  • "AddPool;POOLTID", indicates that a new pool has been created
  • "RemovePool;POOLTID", indicates that a pool has been removed
  • "MovePool;POOLID", indicates that a pool has been moved or resized
  • "UpdatePool;POOLID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

Also, the Undo/Redo queue may include:

  • "StartBlock", specifies that a block of operations begins (initiated by StartBlockUndoRedo method)
  • "EndBlock", specifies that a block of operations ends (initiated by End BlockUndoRedo method)

The LayoutStartChanging(exUndo/exRedo) / LayoutEndChanging(exUndo/exRedo) event notifies your application whenever an Undo/Redo operation is performed. The UndoListAction property lists the Undo actions that can be performed in the control. The RedoListAction property lists the Redo actions that can be performed in the control. Use the UndoRemoveAction method to remove the last actions from the undo queue. The RedoRemoveAction method removes the first action to be performed if the Redo method is invoked.


property UndoListAction

property SwimLane.UndoListAction ([Action as Variant], [Count as Variant]) as String
Lists the Undo actions that can be performed on the surface.

Type | Description
Action as Variant [optional] A long expression that specifies the action being listed. If missing or -1, all actions are listed.

The Action parameter can be one of the following:

  • exUndoRedoAddElement(13) ~ "AddElement;ELEMENTID", indicates that a new element has been created
  • exUndoRedoRemoveElement(14) ~ "RemoveElement;ELEMENTID", indicates that an element has been removed
  • exUndoRedoMoveElement(15) ~ "MoveElement;ELEMENTID", indicates that an element has been moved or resized
  • exUndoRedoUpdateElement(16) ~ "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods
  • exUndoRedoAddLink(10) ~ "AddLink;LINKID", indicates that a new link has been created
  • exUndoRedoRemoveLink(11) ~ "RemoveLink;LINKID", indicates that a link has been removed
  • exUndoRedoUpdateLink(12) ~ "UpdateLink;LINKID", specifies that one of more properties of the link has been updated, using the StartUpdateLink / EndUpdateLink methods
  • exUndoRedoAddPool(20) ~ "AddPool;POOLID", indicates that a new pool has been created
  • exUndoRedoRemovePool(21) ~ "RemovePool;POOLID", indicates that a pool has been removed
  • exUndoRedoMovePool(22) ~ "MovePool;POOLID", indicates that a pool has been moved or resized
  • exUndoRedoUpdatePool(23) ~ "UpdatePool;POOLTID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

For instance, UndoListAction(12) shows only AddElement actions in the undo stack.
Count as Variant | [optional] A long expression that indicates the number of actions being listed. If missing or -1, all actions are listed. For instance, UndoListAction(12,1) shows only the last AddElement action being added to the undo stack
String | A String expression that lists the Undo actions that may be performed.
The UndoListAction property lists the Undo actions that can be performed in the control. The AllowUndoRedo property enables or disables the Undo/Redo feature. The RedoListAction property lists the Redo actions that can be performed in the control. Use the UndoRemoveAction method to remove the last actions from the undo queue. The RedoRemoveAction method removes the first action to be performed if the Redo method is invoked. The LayoutStartChanging(exUndo/exRedo) / LayoutEndChanging(exUndo/exRedo) event notifies your application whenever an Undo/Redo operation is performed.

The records of the Undo/Redo queue may contain actions in the following format:

  • "AddElement;ELEMENTID", indicates that a new element has been created
  • "RemoveElement;ELEMENTID", indicates that an element has been removed
  • "MoveElement;ELEMENTID", indicates that an element has been moved or resized
  • "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods
  • "AddLink;LINKID", indicates that a new link has been created
  • "RemoveLink;LINKID", indicates that a link has been removed
  • "UpdateLink;LINKID", specifies that one of more properties of the link has been updated, using the StartUpdateLink / EndUpdateLink methods
  • "AddPool;POOLTID", indicates that a new pool has been created
  • "RemovePool;POOLTID", indicates that a pool has been removed
  • "MovePool;POOLID", indicates that a pool has been moved or resized
  • "UpdatePool;POOLID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

Also, the Undo/Redo queue may include:

  • "StartBlock", specifies that a block of operations begins (initiated by StartBlockUndoRedo method)
  • "EndBlock", specifies that a block of operations ends (initiated by End BlockUndoRedo method)

Here's a sample how the result of UndoListAction method looks like:

StartBlock
MoveElement;3
AddElement;3
EndBlock
MoveElement;B
UpdateLink;Akak
AddLink;1
UpdateElement;B
AddElement;2
UpdateElement;A
AddElement;1


property UndoRedoQueueLength

property SwimLane.UndoRedoQueueLength as Long
Gets or sets the maximum number of Undo/Redo actions that may be stored to the surface's queue.

Type | Description
Long | A Long expression that specifies the length of the Undo/Redo queue. If -1, the queue is unlimited, 0 allows no entries in the Undo/Redo queue (Undo/Redo is disabled).
By default, the UndoRedoQueueLength property is -1. The AllowUndoRedo property enables or disables the Undo/Redo feature. Use the UndoRedoQueueLength property to specify the number of entries that Undo/Redo queue may store. For instance, if the UndoRedoQueueLength property is 1, the control retains only the last chart operation. Changing the UndoRedoQueueLength property may change the current Undo/Redo queue based on the new length. The length being specified, does not affect the blocks in the queue. A block may hold multiple Undo/Redo actions. Use the GroupUndoRedoActions method to group two or more entries in the Undo/Redo queue in a single block, so when a next Undo/Redo operation is performed, multiple actions may occur. For instance, moving several elements in the same time ( multiple elements selection ) is already recorded as a single block.


method UndoRemoveAction

method SwimLane.UndoRemoveAction ([Action as Variant], [Count as Variant])
Removes the last undo actions that can be performed on the surface.

Type | Description
Action as Variant [optional] A long expression that specifies the action being remove. If missing or -1, all actions are removed.

The Action parameter can be one of the following:

  • exUndoRedoAddElement(13) ~ "AddElement;ELEMENTID", indicates that a new element has been created
  • exUndoRedoRemoveElement(14) ~ "RemoveElement;ELEMENTID", indicates that an element has been removed
  • exUndoRedoMoveElement(15) ~ "MoveElement;ELEMENTID", indicates that an element has been moved or resized
  • exUndoRedoUpdateElement(16) ~ "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods
  • exUndoRedoAddLink(10) ~ "AddLink;LINKID", indicates that a new link has been created
  • exUndoRedoRemoveLink(11) ~ "RemoveLink;LINKID", indicates that a link has been removed
  • exUndoRedoUpdateLink(12) ~ "UpdateLink;LINKID", specifies that one of more properties of the link has been updated, using the StartUpdateLink / EndUpdateLink methods
  • exUndoRedoAddPool(20) ~ "AddPool;POOLID", indicates that a new pool has been created
  • exUndoRedoRemovePool(21) ~ "RemovePool;POOLID", indicates that a pool has been removed
  • exUndoRedoMovePool(22) ~ "MovePool;POOLID", indicates that a pool has been moved or resized
  • exUndoRedoUpdatePool(23) ~ "UpdatePool;POOLTID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

For instance, UndoRemoveAction(12) removes only AddElement actions from the undo stack.
Count as Variant | [optional] A long expression that indicates the number of actions to remove. If missing or -1, all actions are removed. For instance, UndoRemoveAction(12,1) removes only the last AddElement action from the undo stack
Use the UndoRemoveAction method to remove the last action from the undo queue. Use the UndoRemoveAction() ( with no parameters ) to remove all undo actions. The RedoRemoveAction method removes the first action to be performed if the Redo method is invoked. The AllowUndoRedo property enables or disables the Undo/Redo feature. The UndoListAction property lists the Undo actions that can be performed in the control. The RedoListAction property lists the Redo actions that can be performed in the control. The LayoutStartChanging(exUndo/exRedo) / LayoutEndChanging(exUndo/exRedo) event notifies your application whenever an Undo/Redo operation is performed.

The records of the Undo/Redo queue may contain actions in the following format:

  • "AddElement;ELEMENTID", indicates that a new element has been created
  • "RemoveElement;ELEMENTID", indicates that an element has been removed
  • "MoveElement;ELEMENTID", indicates that an element has been moved or resized
  • "UpdateElement;ELEMENTID", indicates that one or more properties of the element has been updated, using the StartUpdateElement / EndUpdateElement methods
  • "AddLink;LINKID", indicates that a new link has been created
  • "RemoveLink;LINKID", indicates that a link has been removed
  • "UpdateLink;LINKID", specifies that one of more properties of the link has been updated, using the StartUpdateLink / EndUpdateLink methods
  • "AddPool;POOLTID", indicates that a new pool has been created
  • "RemovePool;POOLTID", indicates that a pool has been removed
  • "MovePool;POOLID", indicates that a pool has been moved or resized
  • "UpdatePool;POOLID", indicates that one or more properties of the pool has been updated, using the StartUpdatePool / EndUpdatePool methods

Also, the Undo/Redo queue may include:

  • "StartBlock", specifies that a block of operations begins (initiated by StartBlockUndoRedo method)
  • "EndBlock", specifies that a block of operations ends (initiated by End BlockUndoRedo method)


method UnselectAll

method SwimLane.UnselectAll ()
Unselects all elements in the control.

Type Description
Use the UnselectAll method to unselect all elements on the surface. The SelectAll method selects all elements in the chart. The SelectionChanged event occurs once a new element is selected or unselected. The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The Selected property of the Element object indicates whether the element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable.

The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectElementRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface.


property Version

property SwimLane.Version as String
Retrieves the control's version.

Type | Description
String | A String expression that specifies the version of the control you are running.
The Version property specifies the version of the control you are running.


property VisualAppearance

property SwimLane.VisualAppearance as Appearance
Retrieves the control's appearance.

Type | Description
Appearance | The Appearance object holds a collection of skins.
The component lets the user changes its visual appearance using skins, each one providing an additional visual experience that enhances viewing pleasure. Skins are relatively easy to build and put on any part of the control. You can use the VisualDesign property to design the visual appearance of the control at design mode.


property VisualDesign

property SwimLane.VisualDesign as String
Invokes the control's VisualAppearance designer.

Type | Description
String | A String expression that encodes the control's Visual Appearance.
By default, the VisualDesign property is "". The VisualDesign property helps you to define fast and easy the control's visual appearance using the XP-Theme elements or EBN objects. The VisualDesign property can be accessed on design mode, and it can be used to design the visual appearance of different parts of the control by drag and drop XP or EBN elements. The VisualAppearance designer returns an encoded string that can be used to define different looks, just by calling the VisualDesign = encoded_string. If you require removing the current visual appearance, you can call the VisualDesign on "" ( empty string ). The VisualDesign property encodes EBN or XP-Theme nodes, using the Add method of the Appearance collection being accessed through the VisualAppearance property.
  • For the /COM version, click the control in Design mode, select the Properties, and choose the "Visual Design" page.
  • For the /NET version, select the VisualDesign property in the Properties browser, and then click ... so the "Visual Design" page is displayed.
  • The /WPF version does not provide a VisualAppearance designer, instead you can use the values being generated by the /COM or /NET to apply the same visual appearance.
  • Click here [image] to watch a movie on how you define the control's visual appearance using the XP-Theme
  • Click here [image] to watch a movie on how you define the control's visual appearance using the EBN files.

The left panel, should be user to add your EBN or XP-Theme elements. Once you add them drag and drop the EBN or XP-Theme element from the left side to the part which visual appearance you want to change.

The following picture shows the control's VisualDesign form ( empty ):

The following picture shows the control's VisualDesign form after applying some EBN objects:


property Zoom

property SwimLane.Zoom as Double
Specifies the current zooming factor of the surface.

Type | Description
Double | A Numeric expression that specifies the current zooming factor of the surface.
The Zoom property specifies the surface's current zooming factor. The control fires the LayoutStartChanging(exSurfaceZoom) / LayoutEndChanging(exSurfaceZoom) event when the user zooms the surface. The ZoomLevels property specifies the zooming factors to be displayed on the control's toolbar. The ZoomMin, ZoomMax and ZoomStep determines the range of the zooming to be used, if the ZoomLevels property is empty. Use the ToolBarFormat property to customize the control's toolbar. The ZoomLevels property specifies the zooming factors to be displayed on the control's toolbar. The AllowZoomSurface property specifies the combination of keys that allows the user to magnify or shrink the surface. The AllowZoomWheelSurface property specifies whether the user can zoom the surface by rotating the mouse wheel.

The following samples shows how you can prevent zooming the surface:

VBA (MS Access, Excell...)

With SwimLane1
    .AllowZoomSurface = 0
    .AllowZoomWheelSurface = False
    .ToolBarFormat = "-1,100"
End With

VB6

With SwimLane1
    .AllowZoomSurface = exDisallow
    .AllowZoomWheelSurface = False
    .ToolBarFormat = "-1,100"
End With

VB.NET

With Exsurface1
    .AllowZoomSurface = exontrol.EXSWIMLANELib.AllowKeysEnum.exDisallow
    .AllowZoomWheelSurface = False
    .ToolBarFormat = "-1,100"
End With

VB.NET for /COM

With AxSwimLane1
    .AllowZoomSurface = EXSWIMLANELib.AllowKeysEnum.exDisallow
    .AllowZoomWheelSurface = False
    .ToolBarFormat = "-1,100"
End With

C++

/*
    Copy and paste the following directives to your header file as
    it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'

    #import <ExSwimLane.dll>
    using namespace EXSWIMLANELib;
*/
EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
spSwimLane1->PutAllowZoomSurface(EXSWIMLANELib::exDisallow);
spSwimLane1->PutAllowZoomWheelSurface(VARIANT_FALSE);
spSwimLane1->PutToolBarFormat(L"-1,100");

C++ Builder

SwimLane1->AllowZoomSurface = Exswimlanelib_tlb::AllowKeysEnum::exDisallow;
SwimLane1->AllowZoomWheelSurface = false;
SwimLane1->ToolBarFormat = L"-1,100";

C#

exswimlane1.AllowZoomSurface = exontrol.EXSWIMLANELib.AllowKeysEnum.exDisallow;
exswimlane1.AllowZoomWheelSurface = false;
exswimlane1.ToolBarFormat = "-1,100";

JavaScript

<OBJECT classid="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
    SwimLane1.AllowZoomSurface = 0;
    SwimLane1.AllowZoomWheelSurface = false;
    SwimLane1.ToolBarFormat = "-1,100";
</SCRIPT>

C# for /COM

axSwimLane1.AllowZoomSurface = EXSWIMLANELib.AllowKeysEnum.exDisallow;
axSwimLane1.AllowZoomWheelSurface = false;
axSwimLane1.ToolBarFormat = "-1,100";

X++ (Dynamics Ax 2009)

public void init()
{
    ;

    super();

    exswimlane1.AllowZoomSurface(0/*exDisallow*/);
    exswimlane1.AllowZoomWheelSurface(false);
    exswimlane1.ToolBarFormat("-1,100");
}

Delphi 8 (.NET only)

with AxSwimLane1 do
begin
    AllowZoomSurface := EXSWIMLANELib.AllowKeysEnum.exDisallow;
    AllowZoomWheelSurface := False;
    ToolBarFormat := '-1,100';
end

Delphi (standard)

with SwimLane1 do
begin
    AllowZoomSurface := EXSWIMLANELib_TLB.exDisallow;
    AllowZoomWheelSurface := False;
    ToolBarFormat := '-1,100';
end

VFP

with thisform.SwimLane1
    .AllowZoomSurface = 0
    .AllowZoomWheelSurface = .F.
    .ToolBarFormat = "-1,100"
endwith

dBASE Plus

local oSwimLane

oSwimLane = form.Activex1.nativeObject
oSwimLane.AllowZoomSurface = 0
oSwimLane.AllowZoomWheelSurface = false
oSwimLane.ToolBarFormat = "-1,100"

XBasic (Alpha Five)

Dim oSwimLane as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
oSwimLane.AllowZoomSurface = 0
oSwimLane.AllowZoomWheelSurface = .f.
oSwimLane.ToolBarFormat = "-1,100"

Visual Objects

oDCOCX_Exontrol1:AllowZoomSurface := exDisallow
oDCOCX_Exontrol1:AllowZoomWheelSurface := false
oDCOCX_Exontrol1:ToolBarFormat := "-1,100"

PowerBuilder

OleObject oSwimLane

oSwimLane = ole_1.Object
oSwimLane.AllowZoomSurface = 0
oSwimLane.AllowZoomWheelSurface = false
oSwimLane.ToolBarFormat = "-1,100"

Visual DataFlex

Procedure OnCreate
    Forward Send OnCreate
    Set ComAllowZoomSurface to OLEexDisallow
    Set ComAllowZoomWheelSurface to False
    Set ComToolBarFormat to "-1,100"
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oSwimLane:AllowZoomSurface := 0/*exDisallow*/
        oSwimLane:AllowZoomWheelSurface := .F.
        oSwimLane:ToolBarFormat := "-1,100"

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


property ZoomLevels

property SwimLane.ZoomLevels as String
Specifies the list of zooming factors to be displayed on the control's toolbar.

Type | Description
String | A String expression that specifies the zoom factors available on the surface, separated by comma characters.
By default, the ZoomLevels property is "25,35,50,75,100,150,200,300,400". The ZoomLevels property specifies the zooming factors to be displayed on the control's toolbar. If the ZoomLevels property is empty, the ZoomMin, ZoomMax and ZoomStep determines the range of the zooming to be used. Use the ToolBarFormat property to customize the control's toolbar. The Zoom property specifies the surface's current zooming factor. The AllowZoomSurface property specifies the combination of keys that allows the user to magnify or shrink the surface. The AllowZoomWheelSurface property specifies whether the user can zoom the surface by rotating the mouse wheel. The control fires the LayoutStartChanging(exSurfaceZoom) / LayoutEndChanging(exSurfaceZoom) event when the user zooms the surface.


property ZoomMax

property SwimLane.ZoomMax as Double
Specifies the maximum zooming factor of the surface.

Type | Description
Double | A Numeric expression that specifies the max value for the Zoom property.
By default, the ZoomMax property is 400. the ZoomMin, ZoomMax and ZoomStep determines the range of the zooming to be used, if the ZoomLevels property is empty. Use the ToolBarFormat property to customize the control's toolbar. The ZoomLevels property specifies the zooming factors to be displayed on the control's toolbar. The Zoom property specifies the surface's current zooming factor. The AllowZoomSurface property specifies the combination of keys that allows the user to magnify or shrink the surface. The AllowZoomWheelSurface property specifies whether the user can zoom the surface by rotating the mouse wheel. The control fires the LayoutStartChanging(exSurfaceZoom) / LayoutEndChanging(exSurfaceZoom) event when the user zooms the surface.


property ZoomMin

property SwimLane.ZoomMin as Double
Specifies the minimum zooming factor of the surface.

Type | Description
Double | A Numeric expression that specifies the min value for the Zoom property.
By default, the ZoomMin property is 20. the ZoomMin, ZoomMax and ZoomStep determines the range of the zooming to be used, if the ZoomLevels property is empty. Use the ToolBarFormat property to customize the control's toolbar. The ZoomLevels property specifies the zooming factors to be displayed on the control's toolbar. The Zoom property specifies the surface's current zooming factor. The AllowZoomSurface property specifies the combination of keys that allows the user to magnify or shrink the surface. The AllowZoomWheelSurface property specifies whether the user can zoom the surface by rotating the mouse wheel. The control fires the LayoutStartChanging(exSurfaceZoom) / LayoutEndChanging(exSurfaceZoom) event when the user zooms the surface.


property ZoomStep

property SwimLane.ZoomStep as Double
Specifies the step to increase or decrease the zooming factor of the surface, while the user rotates the mouse wheel.

Type | Description
Double | A Numeric expression that specifies the step value for the Zoom property.
By default, the ZoomStep property is 10. the ZoomMin, ZoomMax and ZoomStep determines the range of the zooming to be used, if the ZoomLevels property is empty. Use the ToolBarFormat property to customize the control's toolbar. The ZoomLevels property specifies the zooming factors to be displayed on the control's toolbar. The Zoom property specifies the surface's current zooming factor. The AllowZoomSurface property specifies the combination of keys that allows the user to magnify or shrink the surface. The AllowZoomWheelSurface property specifies whether the user can zoom the surface by rotating the mouse wheel. The control fires the LayoutStartChanging(exSurfaceZoom) / LayoutEndChanging(exSurfaceZoom) event when the user zooms the surface.


ExSwimLane events
Tip The /COM object can be placed on a HTML page (with usage of the HTML object tag: <object classid="clsid:...">) using the class identifier: {AFA73FCE-6609-4062-AE6A-4BAD6D96A025}. The object's program identifier is: "Exontrol.SwimLane". The /COM object module is: "ExSwimLane.dll"
The eXSwimlane lets you draw swim lane diagrams. A swim lane (or swimlane diagram) is a visual element used in process flow diagrams, or flowcharts, that visually distinguishes job sharing and responsibilities for sub-processes of a business process. Swim lanes may be arranged either horizontally or vertically. The ExSwimlane library lets the user changes its visual appearance using skins, each one providing an additional visual experience that enhances viewing pleasure. The eXSwimlane supports the following events:

Name | Description
ActionContextMenu | Occurs when the user selects an item from the object's context menu.
AddElement | A new element has been added to the surface.
AddLink | A new link has been added to the links collection.
AddPool | A new pool has been added to the surface.
AllowLink | Occurs when the user links an element with another element.
AnchorClick | Occurs when an anchor element is clicked.
CheckElement | The element's Checked property has been changed.
Click | Occurs when the user presses and then releases the left mouse button over the control.
CreateElement | The user creates at runtime a new element.
CreateLink | The user creates at runtime a new link.
CreatePool | The user creates at runtime a new pool.
DblClick | Occurs when the user dblclk the left mouse button over an object.
Event | Notifies the application once the control fires an event.
HandCursorClick | The uses clicks a part of the element that shows the had cursor.
KeyDown | Occurs when the user presses a key while an object has the focus.
KeyPress | Occurs when the user presses and releases an ANSI key.
KeyUp | Occurs when the user releases a key while an object has the focus.
LayoutEndChanging | Notifies your application once the control's layout has been changed.
LayoutStartChanging | Occurs when the control's layout is about to be changed.
MouseDown | Occurs when the user presses a mouse button.
MouseMove | Occurs when the user moves the mouse.
MouseUp | Occurs when the user releases a mouse button.
OLECompleteDrag | Occurs when a source component is dropped onto a target component, informing the source component that a drag action was either performed or canceled
OLEDragDrop | Occurs when a source component is dropped onto a target component when the source component determines that a drop can occur.
OLEDragOver | Occurs when one component is dragged over another.
OleEvent | Occurs once an inside control fires an event.
OLEGiveFeedback | Allows the drag source to specify the type of OLE drag-and-drop operation and the visual feedback.
OLESetData | Occurs on a drag source when a drop target calls the GetData method and there is no data in a specified format in the OLE drag-and-drop DataObject.
OLEStartDrag | Occurs when the OLEDrag method is called.
RClick | Occurs once the user right clicks the control.
RemoveElement | An element has been removed from the surface.
RemoveLink | The link is removed from the links collection.
RemovePool | A pool has been removed from the surface.
SelectionChanged | Notifies your application that the control's selection has been changed.
ToolBarAnchorClick | Occurs when an anchor element is clicked, on the control's toolbar.
ToolBarClick | Occurs when the user clicks a button in the toolbar.


event ActionContextMenu

event ActionContextMenu (Action as ContextMenuObjectActionEnum, ObjectType as ContextMenuObjectTypeEnum, ObjectID as Variant, CommandID as Long, CommandChecked as Boolean, CommandCaption as Variant, CommandValue as Variant, Cancel as Boolean)
Occurs when the user selects an item from the object's context menu.

Type | Description
Action as ContextMenuObjectActionEnum | A ContextMenuObjectActionEnum expression that specifies the action occurred in the control's context menu.
ObjectType as ContextMenuObjectTypeEnum | Indicates the type of the object where the action occurs. The ContextMenuObjectFromID property determines the object that hosts the context-menu, such as element, link, pool and so on.
ObjectID as Variant | Specifies the unique identifier of the object which hosts the context menu. The ContextMenuObjectFromID property determines the object that hosts the context-menu, such as element, link, pool and so on.
CommandID as Long | A long expression that specifies the identifier of the item being selected or clicked.
CommandChecked as Boolean | A boolean expression that specifies whether the item is checked or unchecked. For instance, if the item has associated a check-box, the CommandChecked parameter determines the state of the item's checkbox.
CommandCaption as Variant | A String expression that indicates the caption being shown on the item. The CommandCaption parameter specifies the item's label. Use the CommandValue parameter to determine the item's value.
CommandValue as Variant | A VARIANT expression that specifies the item's value. For instance, if the item displays a text-box, it indicates the value being displayed in the item's edit field.
Cancel as Boolean | A Boolean expression that determines whether the default action should continue. This parameter has effect for the default items of the object's context menu.
The ActionContextMenu event notifies your application once an action occurs within the object's context menu. For instance, you can use the ActionContextMenu event to perform a specified operation once the user clicks/changes/selects an item from the control's context menu. The ContextMenuObjectFromID(ObjectType,ObjectID) property determines the object that hosts the context-menu, such as element, link, pool and so on. Use the ContextMenu property to provide a custom context menu for the objects on the surface. Use the AllowContextMenu property to specify the combination of keys that allows the user to open the object's context menu. The LayoutStartChanging(exActionContextMenuObject) / LayoutEndChanging(exActionContextMenuObject) events occurs once the user selects/clicks an item.

By default, you can provide a context-menu for the following type of objects:

  • surface ( background of )
  • pool
  • lane
  • selection ( of elements )
  • link
  • element

The object's context menu is shown only, if the control's DesignMode property is not exDesignLock. For instance, if the control's DesignMode property is exDesignElements, no pools is visible when the user is trying to right-click the pool ( no design-mode for pools ).

Syntax for ActionContextMenu event, /NET version, on:

private void ActionContextMenu(object sender,exontrol.EXSWIMLANELib.ContextMenuObjectActionEnum Action,exontrol.EXSWIMLANELib.ContextMenuObjectTypeEnum ObjectType,object ObjectID,int CommandID,bool CommandChecked,object CommandCaption,object CommandValue,ref bool Cancel)
{
}

Private Sub ActionContextMenu(ByVal sender As System.Object,ByVal Action As exontrol.EXSWIMLANELib.ContextMenuObjectActionEnum,ByVal ObjectType As exontrol.EXSWIMLANELib.ContextMenuObjectTypeEnum,ByVal ObjectID As Object,ByVal CommandID As Integer,ByVal CommandChecked As Boolean,ByVal CommandCaption As Object,ByVal CommandValue As Object,ByRef Cancel As Boolean) Handles ActionContextMenu
End Sub

Syntax for ActionContextMenu event, /COM version, on:

private void ActionContextMenu(object sender, AxEXSWIMLANELib._ISwimLaneEvents_ActionContextMenuEvent e)
{
}

void OnActionContextMenu(long Action,long ObjectType,VARIANT ObjectID,long CommandID,BOOL CommandChecked,VARIANT CommandCaption,VARIANT CommandValue,BOOL FAR* Cancel)
{
}

void __fastcall ActionContextMenu(TObject *Sender,Exswimlanelib_tlb::ContextMenuObjectActionEnum Action,Exswimlanelib_tlb::ContextMenuObjectTypeEnum ObjectType,Variant ObjectID,long CommandID,VARIANT_BOOL CommandChecked,Variant CommandCaption,Variant CommandValue,VARIANT_BOOL * Cancel)
{
}

procedure ActionContextMenu(ASender: TObject; Action : ContextMenuObjectActionEnum;ObjectType : ContextMenuObjectTypeEnum;ObjectID : OleVariant;CommandID : Integer;CommandChecked : WordBool;CommandCaption : OleVariant;CommandValue : OleVariant;var Cancel : WordBool);
begin
end;

procedure ActionContextMenu(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_ActionContextMenuEvent);
begin
end;

begin event ActionContextMenu(long Action,long ObjectType,any ObjectID,long CommandID,boolean CommandChecked,any CommandCaption,any CommandValue,boolean Cancel)
end event ActionContextMenu

Private Sub ActionContextMenu(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_ActionContextMenuEvent) Handles ActionContextMenu
End Sub

Private Sub ActionContextMenu(ByVal Action As EXSWIMLANELibCtl.ContextMenuObjectActionEnum,ByVal ObjectType As EXSWIMLANELibCtl.ContextMenuObjectTypeEnum,ByVal ObjectID As Variant,ByVal CommandID As Long,ByVal CommandChecked As Boolean,ByVal CommandCaption As Variant,ByVal CommandValue As Variant,Cancel As Boolean)
End Sub

Private Sub ActionContextMenu(ByVal Action As Long,ByVal ObjectType As Long,ByVal ObjectID As Variant,ByVal CommandID As Long,ByVal CommandChecked As Boolean,ByVal CommandCaption As Variant,ByVal CommandValue As Variant,Cancel As Boolean)
End Sub

LPARAMETERS Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel

PROCEDURE OnActionContextMenu(oSwimLane,Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)
RETURN

Syntax for ActionContextMenu event, /COM version (others), on:

<SCRIPT EVENT="ActionContextMenu(Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function ActionContextMenu(Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)
End Function
</SCRIPT>

Procedure OnComActionContextMenu OLEContextMenuObjectActionEnum llAction OLEContextMenuObjectTypeEnum llObjectType Variant llObjectID Integer llCommandID Boolean llCommandChecked Variant llCommandCaption Variant llCommandValue Boolean llCancel
    Forward Send OnComActionContextMenu llAction llObjectType llObjectID llCommandID llCommandChecked llCommandCaption llCommandValue llCancel
End_Procedure

METHOD OCX_ActionContextMenu(Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel) CLASS MainDialog
RETURN NIL

void onEvent_ActionContextMenu(int _Action,int _ObjectType,COMVariant _ObjectID,int _CommandID,boolean _CommandChecked,COMVariant _CommandCaption,COMVariant _CommandValue,COMVariant /*bool*/ _Cancel)
{
}

function ActionContextMenu as v (Action as OLE::Exontrol.SwimLane.1::ContextMenuObjectActionEnum,ObjectType as OLE::Exontrol.SwimLane.1::ContextMenuObjectTypeEnum,ObjectID as A,CommandID as N,CommandChecked as L,CommandCaption as A,CommandValue as A,Cancel as L)
end function

function nativeObject_ActionContextMenu(Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)
return

The following samples show how you can change/handle the element's context-menu when the user right-clicks the element:

VBA (MS Access, Excell...)

' ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
Private Sub SwimLane1_ActionContextMenu(ByVal Action As Long,ByVal ObjectType As Long,ByVal ObjectID As Variant,ByVal CommandID As Long,ByVal CommandChecked As Boolean,ByVal CommandCaption As Variant,ByVal CommandValue As Variant,Cancel As Boolean)
    With SwimLane1
        Debug.Print( Action )
        Debug.Print( CommandCaption )
    End With
End Sub

With SwimLane1
    .BeginUpdate
    .Elements.Add "element",0,0
    .ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
    .EndUpdate
End With

VB6

' ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
Private Sub SwimLane1_ActionContextMenu(ByVal Action As EXSWIMLANELibCtl.ContextMenuObjectActionEnum,ByVal ObjectType As EXSWIMLANELibCtl.ContextMenuObjectTypeEnum,ByVal ObjectID As Variant,ByVal CommandID As Long,ByVal CommandChecked As Boolean,ByVal CommandCaption As Variant,ByVal CommandValue As Variant,Cancel As Boolean)
    With SwimLane1
        Debug.Print( Action )
        Debug.Print( CommandCaption )
    End With
End Sub

With SwimLane1
    .BeginUpdate
    .Elements.Add "element",0,0
    .ContextMenu(exContextMenuElement) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
    .EndUpdate
End With

VB.NET

' ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
Private Sub Exswimlane1_ActionContextMenu(ByVal sender As System.Object,ByVal Action As exontrol.EXSWIMLANELib.ContextMenuObjectActionEnum,ByVal ObjectType As exontrol.EXSWIMLANELib.ContextMenuObjectTypeEnum,ByVal ObjectID As Object,ByVal CommandID As Integer,ByVal CommandChecked As Boolean,ByVal CommandCaption As Object,ByVal CommandValue As Object,ByRef Cancel As Boolean) Handles Exswimlane1.ActionContextMenu
    With Exswimlane1
        Debug.Print( Action )
        Debug.Print( CommandCaption )
    End With
End Sub

With Exswimlane1
    .BeginUpdate()
    .Elements.Add("element",0,0)
    .set_ContextMenu(exontrol.EXSWIMLANELib.ContextMenuObjectTypeEnum.exContextMenuElement,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])")
    .EndUpdate()
End With

VB.NET for /COM

' ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
Private Sub AxSwimLane1_ActionContextMenu(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_ActionContextMenuEvent) Handles AxSwimLane1.ActionContextMenu
    With AxSwimLane1
        Debug.Print( e.action )
        Debug.Print( e.commandCaption )
    End With
End Sub

With AxSwimLane1
    .BeginUpdate()
    .Elements.Add("element",0,0)
    .set_ContextMenu(EXSWIMLANELib.ContextMenuObjectTypeEnum.exContextMenuElement,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])")
    .EndUpdate()
End With

C++

// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
void OnActionContextMenuSwimLane1(long Action,long ObjectType,VARIANT ObjectID,long CommandID,BOOL CommandChecked,VARIANT CommandCaption,VARIANT CommandValue,BOOL FAR* Cancel)
{
    /*
        Copy and paste the following directives to your header file as
        it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'
        #import <ExSwimLane.dll>
        using namespace EXSWIMLANELib;
    */
    EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
    OutputDebugStringW( L"Action" );
    OutputDebugStringW( L"CommandCaption" );
}

EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
spSwimLane1->BeginUpdate();
spSwimLane1->GetElements()->Add("element",long(0),long(0));
spSwimLane1->PutContextMenu(EXSWIMLANELib::exContextMenuElement,L"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])");
spSwimLane1->EndUpdate();

C++ Builder

// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
void __fastcall TForm1::SwimLane1ActionContextMenu(TObject *Sender,Exswimlanelib_tlb::ContextMenuObjectActionEnum Action,Exswimlanelib_tlb::ContextMenuObjectTypeEnum ObjectType,Variant ObjectID,long CommandID,VARIANT_BOOL CommandChecked,Variant CommandCaption,Variant CommandValue,VARIANT_BOOL * Cancel)
{
    OutputDebugString( L"Action" );
    OutputDebugString( L"CommandCaption" );
}

SwimLane1->BeginUpdate();
SwimLane1->Elements->Add(TVariant("element"),TVariant(0),TVariant(0));
SwimLane1->ContextMenu[Exswimlanelib_tlb::ContextMenuObjectTypeEnum::exContextMenuElement] = L"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])";
SwimLane1->EndUpdate();

C#

// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
private void exswimlane1_ActionContextMenu(object sender,exontrol.EXSWIMLANELib.ContextMenuObjectActionEnum Action,exontrol.EXSWIMLANELib.ContextMenuObjectTypeEnum ObjectType,object ObjectID,int CommandID,bool CommandChecked,object CommandCaption,object CommandValue,ref bool Cancel)
{
    System.Diagnostics.Debug.Print( Action.ToString() );
    System.Diagnostics.Debug.Print( CommandCaption.ToString() );
}
//this.exswimlane1.ActionContextMenu += new exontrol.EXSWIMLANELib.exg2antt.ActionContextMenuEventHandler(this.exswimlane1_ActionContextMenu);

exswimlane1.BeginUpdate();
exswimlane1.Elements.Add("element",0,0);
exswimlane1.set_ContextMenu(exontrol.EXSWIMLANELib.ContextMenuObjectTypeEnum.exContextMenuElement,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])");
exswimlane1.EndUpdate();

JScript/JavaScript

<BODY onload="Init()">
<SCRIPT FOR="SwimLane1" EVENT="ActionContextMenu(Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)" LANGUAGE="JScript">
    alert( Action );
    alert( CommandCaption );
</SCRIPT>

<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
function Init()
{
    SwimLane1.BeginUpdate();
    SwimLane1.Elements.Add("element",0,0);
    SwimLane1.ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])";
    SwimLane1.EndUpdate();
}
</SCRIPT>
</BODY>

VBScript

<BODY onload="Init()">
<SCRIPT LANGUAGE="VBScript">
Function SwimLane1_ActionContextMenu(Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)
    With SwimLane1
        alert( Action )
        alert( CommandCaption )
    End With
End Function
</SCRIPT>

<OBJECT CLASSID="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="VBScript">
Function Init()
    With SwimLane1
        .BeginUpdate
        .Elements.Add "element",0,0
        .ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
        .EndUpdate
    End With
End Function
</SCRIPT>
</BODY>

C# for /COM

// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
private void axSwimLane1_ActionContextMenu(object sender, AxEXSWIMLANELib._ISwimLaneEvents_ActionContextMenuEvent e)
{
    System.Diagnostics.Debug.Print( e.action.ToString() );
    System.Diagnostics.Debug.Print( e.commandCaption.ToString() );
}
//this.axSwimLane1.ActionContextMenu += new AxEXSWIMLANELib._ISwimLaneEvents_ActionContextMenuEventHandler(this.axSwimLane1_ActionContextMenu);

axSwimLane1.BeginUpdate();
axSwimLane1.Elements.Add("element",0,0);
axSwimLane1.set_ContextMenu(EXSWIMLANELib.ContextMenuObjectTypeEnum.exContextMenuElement,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])");
axSwimLane1.EndUpdate();

X++ (Dynamics Ax 2009)

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

public void init()
{
    ;

    super();

    exswimlane1.BeginUpdate();
    exswimlane1.Elements().Add("element",COMVariant::createFromInt(0),COMVariant::createFromInt(0));
    exswimlane1.ContextMenu(4/*exContextMenuElement*/,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])");
    exswimlane1.EndUpdate();
}

Delphi 8 (.NET only)

// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
procedure TWinForm1.AxSwimLane1_ActionContextMenu(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_ActionContextMenuEvent);
begin
    with AxSwimLane1 do
    begin
        OutputDebugString( e.action );
        OutputDebugString( e.commandCaption );
    end
end;

with AxSwimLane1 do
begin
    BeginUpdate();
    Elements.Add('element',TObject(0),TObject(0));
    set_ContextMenu(EXSWIMLANELib.ContextMenuObjectTypeEnum.exContextMenuElement,'Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])');
    EndUpdate();
end

Delphi (standard)

// ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
procedure TForm1.SwimLane1ActionContextMenu(ASender: TObject; Action : ContextMenuObjectActionEnum;ObjectType : ContextMenuObjectTypeEnum;ObjectID : OleVariant;CommandID : Integer;CommandChecked : WordBool;CommandCaption : OleVariant;CommandValue : OleVariant;var Cancel : WordBool);
begin
    with SwimLane1 do
    begin
        OutputDebugString( Action );
        OutputDebugString( CommandCaption );
    end
end;

with SwimLane1 do
begin
    BeginUpdate();
    Elements.Add('element',OleVariant(0),OleVariant(0));
    ContextMenu[EXSWIMLANELib_TLB.exContextMenuElement] := 'Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])';
    EndUpdate();
end

VFP

*** ActionContextMenu event - Occurs when the user selects an item from the object's context menu. ***
LPARAMETERS Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel
    with thisform.SwimLane1
        DEBUGOUT( Action )
        DEBUGOUT( CommandCaption )
    endwith

with thisform.SwimLane1
    .BeginUpdate
    .Elements.Add("element",0,0)
    .Object.ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
    .EndUpdate
endwith

dBASE Plus

/*
with (this.EXSWIMLANEACTIVEXCONTROL1.nativeObject)
    ActionContextMenu = class::nativeObject_ActionContextMenu
endwith
*/
// Occurs when the user selects an item from the object's context menu.
function nativeObject_ActionContextMenu(Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)
    local oSwimLane
    oSwimLane = form.EXSWIMLANEACTIVEXCONTROL1.nativeObject
    ? Str(Action)
    ? Str(CommandCaption)
return

local oSwimLane

oSwimLane = form.EXSWIMLANEACTIVEXCONTROL1.nativeObject
oSwimLane.BeginUpdate()
oSwimLane.Elements.Add("element",0,0)
oSwimLane.Template = [ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"] // oSwimLane.ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
oSwimLane.EndUpdate()

XBasic (Alpha Five)

' Occurs when the user selects an item from the object's context menu.
function ActionContextMenu as v (Action as OLE::Exontrol.SwimLane.1::ContextMenuObjectActionEnum,ObjectType as OLE::Exontrol.SwimLane.1::ContextMenuObjectTypeEnum,ObjectID as A,CommandID as N,CommandChecked as L,CommandCaption as A,CommandValue as A,Cancel as L)
    Dim oSwimLane as P
    oSwimLane = topparent:CONTROL_ACTIVEX1.activex
    ? Action
    ? CommandCaption
end function

Dim oSwimLane as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
oSwimLane.BeginUpdate()
oSwimLane.Elements.Add("element",0,0)
oSwimLane.Template = "ContextMenu(4) = `Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])`" // oSwimLane.ContextMenu(4) = "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
oSwimLane.EndUpdate()

Visual Objects

METHOD OCX_Exontrol1ActionContextMenu(Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel) CLASS MainDialog
    // ActionContextMenu event - Occurs when the user selects an item from the object's context menu.
    OutputDebugString(String2Psz( AsString(Action) ))
    OutputDebugString(String2Psz( AsString(CommandCaption) ))
RETURN NIL

oDCOCX_Exontrol1:BeginUpdate()
oDCOCX_Exontrol1:Elements:Add("element",0,0)
oDCOCX_Exontrol1:[ContextMenu,exContextMenuElement] := "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
oDCOCX_Exontrol1:EndUpdate()

PowerBuilder

/*begin event ActionContextMenu(long Action,long ObjectType,any ObjectID,long CommandID,boolean CommandChecked,any CommandCaption,any CommandValue,boolean Cancel) - Occurs when the user selects an item from the object's context menu.*/
/*
    OleObject oSwimLane
    oSwimLane = ole_1.Object
    MessageBox("Information",string( String(Action) ))
    MessageBox("Information",string( String(CommandCaption) ))
*/
/*end event ActionContextMenu*/

OleObject oSwimLane

oSwimLane = ole_1.Object
oSwimLane.BeginUpdate()
oSwimLane.Elements.Add("element",0,0)
oSwimLane.ContextMenu(4,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])")
oSwimLane.EndUpdate()

Visual DataFlex

// Occurs when the user selects an item from the object's context menu.
Procedure OnComActionContextMenu OLEContextMenuObjectActionEnum llAction OLEContextMenuObjectTypeEnum llObjectType Variant llObjectID Integer llCommandID Boolean llCommandChecked Variant llCommandCaption Variant llCommandValue Boolean llCancel
    Forward Send OnComActionContextMenu llAction llObjectType llObjectID llCommandID llCommandChecked llCommandCaption llCommandValue llCancel
    Showln llAction llCommandCaption
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 "element" 0 0 to Nothing
    Send Destroy to hoElements
    Set ComContextMenu OLEexContextMenuElement to "Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])"
    Send ComEndUpdate
End_Procedure

XBase++

PROCEDURE OnActionContextMenu(oSwimLane,Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)
    DevOut( Transform(Action,"") )
    DevOut( Transform(CommandCaption,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oSwimLane:ActionContextMenu := {|Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel| OnActionContextMenu(oSwimLane,Action,ObjectType,ObjectID,CommandID,CommandChecked,CommandCaption,CommandValue,Cancel)} /*Occurs when the user selects an item from the object's context menu.*/

        oSwimLane:BeginUpdate()
        oSwimLane:Elements():Add("element",0,0)
        oSwimLane:SetProperty("ContextMenu",4/*exContextMenuElement*/,"Simple,Value[edit=123],[sep],Popup(Check 1[chk],Check 2[chk=1])")
        oSwimLane:EndUpdate()

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


event AddElement

event AddElement (Element as Element)
A new element has been added to the surface.

Type | Description
Element as Element | An Element object being added to the Elements collection.
The AddElement event notifies your application once a new element has been added to the Elements collection. The Add method adds a new element to the Elements collection. The CreateElement event notifies your application when the user creates at runtime the element on the surface. You can use the AddElement event to change properties of the added element to default values or to associate any extra data to the added element.

The order of the events when the user creates the element at runtime is:

  • LayoutStartChanging(exCreateElement), the user clicks on the surface
  • AddElement, adds the new element to the Elements collection
  • CreateElement, the user ends creating the object
  • LayoutEndChanging(exCreateElement), the user un-clicks the surface

The AddElement event may be called during the LoadXML method.

Syntax for AddElement event, /NET version, on:

private void AddElement(object sender,exontrol.EXSWIMLANELib.Element Element)
{
}

Private Sub AddElement(ByVal sender As System.Object,ByVal Element As exontrol.EXSWIMLANELib.Element) Handles AddElement
End Sub

Syntax for AddElement event, /COM version, on:

private void AddElement(object sender, AxEXSWIMLANELib._ISwimLaneEvents_AddElementEvent e)
{
}

void OnAddElement(LPDISPATCH Element)
{
}

void __fastcall AddElement(TObject *Sender,Exswimlanelib_tlb::IElement *Element)
{
}

procedure AddElement(ASender: TObject; Element : IElement);
begin
end;

procedure AddElement(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_AddElementEvent);
begin
end;

begin event AddElement(oleobject Element)
end event AddElement

Private Sub AddElement(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_AddElementEvent) Handles AddElement
End Sub

Private Sub AddElement(ByVal Element As EXSWIMLANELibCtl.IElement)
End Sub

Private Sub AddElement(ByVal Element As Object)
End Sub

LPARAMETERS Element

PROCEDURE OnAddElement(oSwimLane,Element)
RETURN

Syntax for AddElement event, /COM version (others), on:

<SCRIPT EVENT="AddElement(Element)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function AddElement(Element)
End Function
</SCRIPT>

Procedure OnComAddElement Variant llElement
    Forward Send OnComAddElement llElement
End_Procedure

METHOD OCX_AddElement(Element) CLASS MainDialog
RETURN NIL

void onEvent_AddElement(COM _Element)
{
}

function AddElement as v (Element as OLE::Exontrol.SwimLane.1::IElement)
end function

function nativeObject_AddElement(Element)
return


event AddLink

event AddLink (Link as Link)
A new link has been added to the links collection.

Type | Description
Link as Link | A Link object being added to the Links collection.
The AddLink event notifies your application once a new link has been added to the Links collection. The Add method adds a new link to the Links collection. The CreateLink event notifies your application when the user links two elements on the surface. You can use the AddLink event to change properties of the added link to default values or to associate any extra data to the added link. The AllowLink event occurs when user links two elements to specify whether the link is allowed.

The order of the events when the user links two elements at runtime is:

  • LayoutStartChanging(exLinkObjects), the user clicks on the surface
  • AllowLink, occurs to specify whether the link between two elements is possible.
  • AddLink, adds the new link to the Links collection
  • CreateLink, the user ends creating the link
  • LayoutEndChanging(exLinkObjects), the user un-clicks the surface

The AddLink event may be called during the LoadXML method.

Syntax for AddLink event, /NET version, on:

private void AddLink(object sender,exontrol.EXSWIMLANELib.Link Link)
{
}

Private Sub AddLink(ByVal sender As System.Object,ByVal Link As exontrol.EXSWIMLANELib.Link) Handles AddLink
End Sub

Syntax for AddLink event, /COM version, on:

private void AddLink(object sender, AxEXSWIMLANELib._ISwimLaneEvents_AddLinkEvent e)
{
}

void OnAddLink(LPDISPATCH Link)
{
}

void __fastcall AddLink(TObject *Sender,Exswimlanelib_tlb::ILink *Link)
{
}

procedure AddLink(ASender: TObject; Link : ILink);
begin
end;

procedure AddLink(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_AddLinkEvent);
begin
end;

begin event AddLink(oleobject Link)
end event AddLink

Private Sub AddLink(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_AddLinkEvent) Handles AddLink
End Sub

Private Sub AddLink(ByVal Link As EXSWIMLANELibCtl.ILink)
End Sub

Private Sub AddLink(ByVal Link As Object)
End Sub

LPARAMETERS Link

PROCEDURE OnAddLink(oSwimLane,Link)
RETURN

Syntax for AddLink event, /COM version (others), on:

<SCRIPT EVENT="AddLink(Link)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function AddLink(Link)
End Function
</SCRIPT>

Procedure OnComAddLink Variant llLink
    Forward Send OnComAddLink llLink
End_Procedure

METHOD OCX_AddLink(Link) CLASS MainDialog
RETURN NIL

void onEvent_AddLink(COM _Link)
{
}

function AddLink as v (Link as OLE::Exontrol.SwimLane.1::ILink)
end function

function nativeObject_AddLink(Link)
return


event AddPool

event AddPool (Pool as Pool)
A new pool has been added to the surface.

Type | Description
Pool as Pool | An Pool object being added to the Pools collection.
The AddPool event notifies your application once a new pool has been added to the Pools collection. The Add method adds a new pool to the Pools collection. The CreatePool event notifies your application when the user creates at runtime the pool on the surface. You can use the AddPool event to change properties of the added pool to default values or to associate any extra data to the added pool.

The order of the events when the user creates the pool at runtime is:

  • LayoutStartChanging(exCreatePool), the user clicks on the surface
  • AddPool, adds the new pool to the Pools collection
  • CreatePool, the user ends creating the object
  • LayoutEndChanging(exCreatePool), the user un-clicks the surface

The AddPool event may be called during the LoadXML method.

Syntax for AddPool event, /NET version, on:

private void AddPool(object sender,exontrol.EXSWIMLANELib.Pool Pool)
{
}

Private Sub AddPool(ByVal sender As System.Object,ByVal Pool As exontrol.EXSWIMLANELib.Pool) Handles AddPool
End Sub

Syntax for AddPool event, /COM version, on:

private void AddPool(object sender, AxEXSWIMLANELib._ISwimLaneEvents_AddPoolEvent e)
{
}

void OnAddPool(LPDISPATCH Pool)
{
}

void __fastcall AddPool(TObject *Sender,Exswimlanelib_tlb::IPool *Pool)
{
}

procedure AddPool(ASender: TObject; Pool : IPool);
begin
end;

procedure AddPool(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_AddPoolEvent);
begin
end;

begin event AddPool(oleobject Pool)
end event AddPool

Private Sub AddPool(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_AddPoolEvent) Handles AddPool
End Sub

Private Sub AddPool(ByVal Pool As EXSWIMLANELibCtl.IPool)
End Sub

Private Sub AddPool(ByVal Pool As Object)
End Sub

LPARAMETERS Pool

PROCEDURE OnAddPool(oSwimLane,Pool)
RETURN

Syntax for AddPool event, /COM version (others), on:

<SCRIPT EVENT="AddPool(Pool)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function AddPool(Pool)
End Function
</SCRIPT>

Procedure OnComAddPool Variant llPool
    Forward Send OnComAddPool llPool
End_Procedure

METHOD OCX_AddPool(Pool) CLASS MainDialog
RETURN NIL

void onEvent_AddPool(COM _Pool)
{
}

function AddPool as v (Pool as OLE::Exontrol.SwimLane.1::IPool)
end function

function nativeObject_AddPool(Pool)
return


event AllowLink

event AllowLink (ElementFrom as Element, ElementTo as Element, Cancel as Boolean)
Occurs when the user links an element with another element.

Type | Description
ElementFrom as Element | An Element object that specifies where the link starts from.
ElementTo as Element | An Element object that specifies where the link ends to.
Cancel as Boolean | A Boolean expression that specifies whether the operation is canceled or allowed, or if the link will or will not be added.
The AllowLink event occurs when user links two elements to specify whether the link is allowed. For instance, you can use the PathTo property of the Element object to check if there is a path from an element to another, so avoid cycles. The CreateLink event occurs when the user links two elements on the surface. The AllowLinkObjects property specifies the keys combination to let the user links two elements on the surface, the ElementFrom property specifies the element where the link starts, where the ElementTo property specifies ending element of the link. Prior to CreateLink event the control fires the AddLink event that indicates that the link has been added to the Links collection. You can use the Remove method to remove the link. The Background(exLinkObjectsInvalidColor) property specifies the color to show the invalid link. The Background(exLinkObjectsValidColor) property specifies the color to show the valid link.

The following VB sample prevents adding cycles to the chart:

Private Sub SwimLane1_AllowLink(ByVal ElementFrom As EXSWIMLANELibCtl.IElement, ByVal ElementTo As EXSWIMLANELibCtl.IElement, Cancel As Boolean)
    Cancel = ElementTo.PathTo(ElementFrom)
End Sub

The order of the events when the user links two elements at runtime is:

  • LayoutStartChanging(exLinkObjects), the user clicks on the surface
  • AllowLink, occurs to specify whether the link between two elements is possible.
  • AddLink, adds the new link to the Links collection
  • CreateLink, the user ends creating the link
  • LayoutEndChanging(exLinkObjects), the user un-clicks the surface

The AllowLink event is not called during the LoadXML method.

Syntax for AllowLink event, /NET version, on:

private void AllowLink(object sender,exontrol.EXSWIMLANELib.Element ElementFrom,exontrol.EXSWIMLANELib.Element ElementTo,ref bool Cancel)
{
}

Private Sub AllowLink(ByVal sender As System.Object,ByVal ElementFrom As exontrol.EXSWIMLANELib.Element,ByVal ElementTo As exontrol.EXSWIMLANELib.Element,ByRef Cancel As Boolean) Handles AllowLink
End Sub

Syntax for AllowLink event, /COM version, on:

private void AllowLink(object sender, AxEXSWIMLANELib._ISwimLaneEvents_AllowLinkEvent e)
{
}

void OnAllowLink(LPDISPATCH ElementFrom,LPDISPATCH ElementTo,BOOL FAR* Cancel)
{
}

void __fastcall AllowLink(TObject *Sender,Exswimlanelib_tlb::IElement *ElementFrom,Exswimlanelib_tlb::IElement *ElementTo,VARIANT_BOOL * Cancel)
{
}

procedure AllowLink(ASender: TObject; ElementFrom : IElement;ElementTo : IElement;var Cancel : WordBool);
begin
end;

procedure AllowLink(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_AllowLinkEvent);
begin
end;

begin event AllowLink(oleobject ElementFrom,oleobject ElementTo,boolean Cancel)
end event AllowLink

Private Sub AllowLink(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_AllowLinkEvent) Handles AllowLink
End Sub

Private Sub AllowLink(ByVal ElementFrom As EXSWIMLANELibCtl.IElement,ByVal ElementTo As EXSWIMLANELibCtl.IElement,Cancel As Boolean)
End Sub

Private Sub AllowLink(ByVal ElementFrom As Object,ByVal ElementTo As Object,Cancel As Boolean)
End Sub

LPARAMETERS ElementFrom,ElementTo,Cancel

PROCEDURE OnAllowLink(oSwimLane,ElementFrom,ElementTo,Cancel)
RETURN

Syntax for AllowLink event, /COM version (others), on:

<SCRIPT EVENT="AllowLink(ElementFrom,ElementTo,Cancel)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function AllowLink(ElementFrom,ElementTo,Cancel)
End Function
</SCRIPT>

Procedure OnComAllowLink Variant llElementFrom Variant llElementTo Boolean llCancel
    Forward Send OnComAllowLink llElementFrom llElementTo llCancel
End_Procedure

METHOD OCX_AllowLink(ElementFrom,ElementTo,Cancel) CLASS MainDialog
RETURN NIL

void onEvent_AllowLink(COM _ElementFrom,COM _ElementTo,COMVariant /*bool*/ _Cancel)
{
}

function AllowLink as v (ElementFrom as OLE::Exontrol.SwimLane.1::IElement,ElementTo as OLE::Exontrol.SwimLane.1::IElement,Cancel as L)
end function

function nativeObject_AllowLink(ElementFrom,ElementTo,Cancel)
return


event AnchorClick

event AnchorClick (AnchorID as String, Options as String)
Occurs when an anchor element is clicked.

Type | Description
AnchorID as String | A string expression that indicates the identifier of the anchor.
Options as String | A string expression that specifies options of the anchor element.
The control fires the AnchorClick event to notify that the user clicks an anchor element. An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link. The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The AnchorClick event is fired only if prior clicking the control it shows the hand cursor. For instance, if the cell is disabled, the hand cursor is not shown when hovers the anchor element, and so the AnchorClick event is not fired. Use the FormatAnchor property to specify the visual effect for anchor elements. For instance, if the user clicks the anchor <a1>anchor</a>, the control fires the AnchorClick event, where the AnchorID parameter is 1, and the Options parameter is empty. Also, if the user clicks the anchor <a 1;yourextradata>anchor</a>, the AnchorID parameter of the AnchorClick event is 1, and the Options parameter is "yourextradata". Use the Caption or ExtraCaption property to display hyperlinks or anchors in the element. Use the Caption property to assign a caption/hyperlink to a link.

Syntax for AnchorClick event, /NET version, on:

private void AnchorClick(object sender,string AnchorID,string Options)
{
}

Private Sub AnchorClick(ByVal sender As System.Object,ByVal AnchorID As String,ByVal Options As String) Handles AnchorClick
End Sub

Syntax for AnchorClick event, /COM version, on:

private void AnchorClick(object sender, AxEXSWIMLANELib._ISwimLaneEvents_AnchorClickEvent e)
{
}

void OnAnchorClick(LPCTSTR AnchorID,LPCTSTR Options)
{
}

void __fastcall AnchorClick(TObject *Sender,BSTR AnchorID,BSTR Options)
{
}

procedure AnchorClick(ASender: TObject; AnchorID : WideString;Options : WideString);
begin
end;

procedure AnchorClick(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_AnchorClickEvent);
begin
end;

begin event AnchorClick(string AnchorID,string Options)
end event AnchorClick

Private Sub AnchorClick(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_AnchorClickEvent) Handles AnchorClick
End Sub

Private Sub AnchorClick(ByVal AnchorID As String,ByVal Options As String)
End Sub

Private Sub AnchorClick(ByVal AnchorID As String,ByVal Options As String)
End Sub

LPARAMETERS AnchorID,Options

PROCEDURE OnAnchorClick(oSwimLane,AnchorID,Options)
RETURN

Syntax for AnchorClick event, /COM version (others), on:

<SCRIPT EVENT="AnchorClick(AnchorID,Options)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function AnchorClick(AnchorID,Options)
End Function
</SCRIPT>

Procedure OnComAnchorClick String llAnchorID String llOptions
    Forward Send OnComAnchorClick llAnchorID llOptions
End_Procedure

METHOD OCX_AnchorClick(AnchorID,Options) CLASS MainDialog
RETURN NIL

void onEvent_AnchorClick(str _AnchorID,str _Options)
{
}

function AnchorClick as v (AnchorID as C,Options as C)
end function

function nativeObject_AnchorClick(AnchorID,Options)
return


event CheckElement

event CheckElement (Element as Element)
The element's Checked property has been changed.

Type | Description
Element as Element | An Element object that specifies the element being checked or un-checked.
The CheckElement event notifies your application once the user clicks the element's check-box. The ShowCheckBox property specifies whether the element displays the check-box. The Checked property indicates whether the element is checked or unchecked. Use the CheckBoxAlign property to align the element's checkbox. The Background( exCheckBoxState0) Specifies the visual appearance for the check box in 0 state. The Background(exCheckBoxState1) Specifies the visual appearance for the check box in 1 state.

Syntax for CheckElement event, /NET version, on:

private void CheckElement(object sender,exontrol.EXSWIMLANELib.Element Element)
{
}

Private Sub CheckElement(ByVal sender As System.Object,ByVal Element As exontrol.EXSWIMLANELib.Element) Handles CheckElement
End Sub

Syntax for CheckElement event, /COM version, on:

private void CheckElement(object sender, AxEXSWIMLANELib._ISwimLaneEvents_CheckElementEvent e)
{
}

void OnCheckElement(LPDISPATCH Element)
{
}

void __fastcall CheckElement(TObject *Sender,Exswimlanelib_tlb::IElement *Element)
{
}

procedure CheckElement(ASender: TObject; Element : IElement);
begin
end;

procedure CheckElement(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_CheckElementEvent);
begin
end;

begin event CheckElement(oleobject Element)
end event CheckElement

Private Sub CheckElement(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_CheckElementEvent) Handles CheckElement
End Sub

Private Sub CheckElement(ByVal Element As EXSWIMLANELibCtl.IElement)
End Sub

Private Sub CheckElement(ByVal Element As Object)
End Sub

LPARAMETERS Element

PROCEDURE OnCheckElement(oSwimLane,Element)
RETURN

Syntax for CheckElement event, /COM version (others), on:

<SCRIPT EVENT="CheckElement(Element)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function CheckElement(Element)
End Function
</SCRIPT>

Procedure OnComCheckElement Variant llElement
    Forward Send OnComCheckElement llElement
End_Procedure

METHOD OCX_CheckElement(Element) CLASS MainDialog
RETURN NIL

void onEvent_CheckElement(COM _Element)
{
}

function CheckElement as v (Element as OLE::Exontrol.SwimLane.1::IElement)
end function

function nativeObject_CheckElement(Element)
return


event Click ()
Occurs when the user presses and then releases the left mouse button over the control.

Type Description
The Click event notifies your application once the user clicks the surface. Use a MouseDown or MouseUp event procedure to specify actions that will occur when a mouse button is pressed or released. Unlike the Click and DblClick events, MouseDown and MouseUp events lets you distinguish between the left, right, and middle mouse buttons. You can also write code for mouse-keyboard combinations that use the SHIFT, CTRL, and ALT keyboard modifiers. The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the cursor position. The HitTestFromPoint property returns the element and the hit-test code from the cursor. You can use the Edit method to edit the element's caption or extra caption. The HandCursorClick event notifies once the user clicks a part of the element ( which shows a hand cursor when the pointer hovers it ).

Syntax for Click event, /NET version, on:

private void Click(object sender)
{
}

Private Sub Click(ByVal sender As System.Object) Handles Click
End Sub

Syntax for Click event, /COM version, on:

private void ClickEvent(object sender, EventArgs e)
{
}

void OnClick()
{
}

void __fastcall Click(TObject *Sender)
{
}

procedure Click(ASender: TObject; );
begin
end;

procedure ClickEvent(sender: System.Object; e: System.EventArgs);
begin
end;

begin event Click()
end event Click

Private Sub ClickEvent(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClickEvent
End Sub

Private Sub Click()
End Sub

Private Sub Click()
End Sub

LPARAMETERS nop

PROCEDURE OnClick(oSwimLane)
RETURN

Syntax for Click event, /COM version (others), on:

<SCRIPT EVENT="Click()" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function Click()
End Function
</SCRIPT>

Procedure OnComClick
    Forward Send OnComClick
End_Procedure

METHOD OCX_Click() CLASS MainDialog
RETURN NIL

void onEvent_Click()
{
}

function Click as v ()
end function

function nativeObject_Click()
return


event CreateElement

event CreateElement (Element as Element)
The user creates at runtime a new element.

Type | Description
Element as Element | An Element object being created.
The CreateElement event occurs when the user creates the element on the surface. The AllowCreateElement property specifies the keys combination to let the user creates the elements at runtime. Prior to CreateElement event the AddElement event is fired to notify that the element has been added to the Elements collection. The CreateElement event is not fired when you add programmatically the element calling the Add method. For instance, you can call the Element.Edit method during the CreateElement to let the user edits the element's caption once a new element is created. You can call the Remove method to remove the newly created element.

The order of the events when the user creates the element at runtime is:

  • LayoutStartChanging(exCreateElement), the user clicks on the surface
  • AddElement, adds the new element to the Elements collection
  • CreateElement, the user ends creating the object
  • LayoutEndChanging(exCreateElement), the user un-clicks the surface

The CreateElement event is not called during the LoadXML method.

Syntax for CreateElement event, /NET version, on:

private void CreateElement(object sender,exontrol.EXSWIMLANELib.Element Element)
{
}

Private Sub CreateElement(ByVal sender As System.Object,ByVal Element As exontrol.EXSWIMLANELib.Element) Handles CreateElement
End Sub

Syntax for CreateElement event, /COM version, on:

private void CreateElement(object sender, AxEXSWIMLANELib._ISwimLaneEvents_CreateElementEvent e)
{
}

void OnCreateElement(LPDISPATCH Element)
{
}

void __fastcall CreateElement(TObject *Sender,Exswimlanelib_tlb::IElement *Element)
{
}

procedure CreateElement(ASender: TObject; Element : IElement);
begin
end;

procedure CreateElement(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_CreateElementEvent);
begin
end;

begin event CreateElement(oleobject Element)
end event CreateElement

Private Sub CreateElement(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_CreateElementEvent) Handles CreateElement
End Sub

Private Sub CreateElement(ByVal Element As EXSWIMLANELibCtl.IElement)
End Sub

Private Sub CreateElement(ByVal Element As Object)
End Sub

LPARAMETERS Element

PROCEDURE OnCreateElement(oSwimLane,Element)
RETURN

Syntax for CreateElement event, /COM version (others), on:

<SCRIPT EVENT="CreateElement(Element)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function CreateElement(Element)
End Function
</SCRIPT>

Procedure OnComCreateElement Variant llElement
    Forward Send OnComCreateElement llElement
End_Procedure

METHOD OCX_CreateElement(Element) CLASS MainDialog
RETURN NIL

void onEvent_CreateElement(COM _Element)
{
}

function CreateElement as v (Element as OLE::Exontrol.SwimLane.1::IElement)
end function

function nativeObject_CreateElement(Element)
return

The following VB sample calls the Edit method once a new element is created:

Private Sub SwimLane1_CreateElement(ByVal Element As EXSWIMLANELibCtl.IElement)
    With Element
        .AutoSize = True
        .Caption = "new " & SwimLane1.Elements.Count
        .Edit exEditCaption
    End With
End Sub

The following VB sample creates an element that hosts the Exontrol.Button control:

Private Sub SwimLane1_CreateElement(ByVal Element As EXSWIMLANELibCtl.IElement)
    With Element
        .Type = exElementHostControl
        .ElementFormat = """client"""
        .Control = "Exontrol.Button"
        With .Object
            .Caption = "<sha ;;0>Button " & SwimLane1.Elements.Count
        End With
    End With
End Sub


event CreateLink

event CreateLink (Link as Link)
The user creates at runtime a new link.

Type | Description
Link as Link | A Link object being created.
The CreateLink event occurs when the user links two elements on the surface. The AllowLinkObjects property specifies the keys combination to let the user links two elements on the surface, the ElementFrom property specifies the element where the link starts, where the ElementTo property specifies ending element of the link. Prior to CreateLink event the control fires the AddLink event that indicates that the link has been added to the Links collection. You can use the Remove method to remove the link. The AllowLink event occurs when user links two elements to specify whether the link is allowed. The Background( exLinkObjectsInvalidColor) property specifies the color to show the invalid link. The Background(exLinkObjectsValidColor) property specifies the color to show the valid link.

The order of the events when the user links two elements at runtime is:

  • LayoutStartChanging(exLinkObjects), the user clicks on the surface
  • AllowLink, occurs to specify whether the link between two elements is possible.
  • AddLink, adds the new link to the Links collection
  • CreateLink, the user ends creating the link
  • LayoutEndChanging(exLinkObjects), the user un-clicks the surface

The CreateLink event is not called during the LoadXML method.

Syntax for CreateLink event, /NET version, on:

private void CreateLink(object sender,exontrol.EXSWIMLANELib.Link Link)
{
}

Private Sub CreateLink(ByVal sender As System.Object,ByVal Link As exontrol.EXSWIMLANELib.Link) Handles CreateLink
End Sub

Syntax for CreateLink event, /COM version, on:

private void CreateLink(object sender, AxEXSWIMLANELib._ISwimLaneEvents_CreateLinkEvent e)
{
}

void OnCreateLink(LPDISPATCH Link)
{
}

void __fastcall CreateLink(TObject *Sender,Exswimlanelib_tlb::ILink *Link)
{
}

procedure CreateLink(ASender: TObject; Link : ILink);
begin
end;

procedure CreateLink(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_CreateLinkEvent);
begin
end;

begin event CreateLink(oleobject Link)
end event CreateLink

Private Sub CreateLink(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_CreateLinkEvent) Handles CreateLink
End Sub

Private Sub CreateLink(ByVal Link As EXSWIMLANELibCtl.ILink)
End Sub

Private Sub CreateLink(ByVal Link As Object)
End Sub

LPARAMETERS Link

PROCEDURE OnCreateLink(oSwimLane,Link)
RETURN

Syntax for CreateLink event, /COM version (others), on:

<SCRIPT EVENT="CreateLink(Link)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function CreateLink(Link)
End Function
</SCRIPT>

Procedure OnComCreateLink Variant llLink
    Forward Send OnComCreateLink llLink
End_Procedure

METHOD OCX_CreateLink(Link) CLASS MainDialog
RETURN NIL

void onEvent_CreateLink(COM _Link)
{
}

function CreateLink as v (Link as OLE::Exontrol.SwimLane.1::ILink)
end function

function nativeObject_CreateLink(Link)
return


event CreatePool

event CreatePool (Pool as Pool)
The user creates at runtime a new pool.

Type | Description
Pool as Pool | An Pool object being created.
The CreatePool event occurs when the user creates the pool on the surface. The AllowCreatePool property specifies the keys combination to let the user creates the pools at runtime. Prior to CreatePool event the AddPool event is fired to notify that the pool has been added to the Pools collection. The CreatePool event is not fired when you add programmatically the pool calling the Add method. You can call the Remove method to remove the newly created pool.

The order of the events when the user creates the pool at runtime is:

  • LayoutStartChanging(exCreatePool), the user clicks on the surface
  • AddPool, adds the new pool to the Pools collection
  • CreatePool, the user ends creating the object
  • LayoutEndChanging(exCreatePool), the user un-clicks the surface

The CreatePool event is not called during the LoadXML method.

Syntax for CreatePool event, /NET version, on:

private void CreatePool(object sender,exontrol.EXSWIMLANELib.Pool Pool)
{
}

Private Sub CreatePool(ByVal sender As System.Object,ByVal Pool As exontrol.EXSWIMLANELib.Pool) Handles CreatePool
End Sub

Syntax for CreatePool event, /COM version, on:

private void CreatePool(object sender, AxEXSWIMLANELib._ISwimLaneEvents_CreatePoolEvent e)
{
}

void OnCreatePool(LPDISPATCH Pool)
{
}

void __fastcall CreatePool(TObject *Sender,Exswimlanelib_tlb::IPool *Pool)
{
}

procedure CreatePool(ASender: TObject; Pool : IPool);
begin
end;

procedure CreatePool(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_CreatePoolEvent);
begin
end;

begin event CreatePool(oleobject Pool)
end event CreatePool

Private Sub CreatePool(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_CreatePoolEvent) Handles CreatePool
End Sub

Private Sub CreatePool(ByVal Pool As EXSWIMLANELibCtl.IPool)
End Sub

Private Sub CreatePool(ByVal Pool As Object)
End Sub

LPARAMETERS Pool

PROCEDURE OnCreatePool(oSwimLane,Pool)
RETURN

Syntax for CreatePool event, /COM version (others), on:

<SCRIPT EVENT="CreatePool(Pool)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function CreatePool(Pool)
End Function
</SCRIPT>

Procedure OnComCreatePool Variant llPool
    Forward Send OnComCreatePool llPool
End_Procedure

METHOD OCX_CreatePool(Pool) CLASS MainDialog
RETURN NIL

void onEvent_CreatePool(COM _Pool)
{
}

function CreatePool as v (Pool as OLE::Exontrol.SwimLane.1::IPool)
end function

function nativeObject_CreatePool(Pool)
return

The following VB sample shows only the top header of the pool when the user creates a pool :

Private Sub SwimLane1_CreatePool(ByVal Pool As EXSWIMLANELibCtl.IPool)
    With Pool
        .HeaderVisible(exHeaderTop) = True
        .HeaderVisible(exHeaderBottom) = False
        .HeaderVisible(exHeaderLeft) = False
        .HeaderVisible(exHeaderRight) = False
    End With
End Sub

The following VB sample adds by default 4-horizontal lanes when user creates a pool at runtime:

Private Sub SwimLane1_CreatePool(ByVal Pool As EXSWIMLANELibCtl.IPool)
    With Pool
        .Lane(exLaneHorizontal).Children.Count = 4
        .HeaderVisible(exHeaderTop) = False
        .HeaderVisible(exHeaderBottom) = False
        .HeaderVisible(exHeaderLeft) = True
        .HeaderVisible(exHeaderRight) = False
    End With
End Sub


event DblClick

event DblClick (Shift as Integer, X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS)
Occurs when the user dblclk the left mouse button over an object.

Type | Description
Shift as Integer | An integer that corresponds to the state of the SHIFT, CTRL, and ALT keys.
X as OLE_XPOS_PIXELS | A single that specifies the current X location of the mouse pointer. The x values is always expressed in container coordinates
Y as OLE_YPOS_PIXELS | A single that specifies the current Y location of the mouse pointer. The y values is always expressed in container coordinates
The DblClick event is fired when the user double clicks the control. Use a MouseDown or MouseUp event procedure to specify actions that will occur when a mouse button is pressed or released. The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the cursor position. The HitTestFromPoint property returns the element and the hit-test code from the cursor. You can use the Edit method to edit the element's caption or extra caption. Use the AllowCreateElement property to specify the keys combination so the user creates the elements in the surface. By default, the control creates a new element once the user double clicks the surface.

Syntax for DblClick event, /NET version, on:

private void DblClick(object sender,short Shift,int X,int Y)
{
}

Private Sub DblClick(ByVal sender As System.Object,ByVal Shift As Short,ByVal X As Integer,ByVal Y As Integer) Handles DblClick
End Sub

Syntax for DblClick event, /COM version, on:

private void DblClick(object sender, AxEXSWIMLANELib._ISwimLaneEvents_DblClickEvent e)
{
}

void OnDblClick(short Shift,long X,long Y)
{
}

void __fastcall DblClick(TObject *Sender,short Shift,int X,int Y)
{
}

procedure DblClick(ASender: TObject; Shift : Smallint;X : Integer;Y : Integer);
begin
end;

procedure DblClick(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_DblClickEvent);
begin
end;

begin event DblClick(integer Shift,long X,long Y)
end event DblClick

Private Sub DblClick(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_DblClickEvent) Handles DblClick
End Sub

Private Sub DblClick(Shift As Integer,X As Single,Y As Single)
End Sub

Private Sub DblClick(ByVal Shift As Integer,ByVal X As Long,ByVal Y As Long)
End Sub

LPARAMETERS Shift,X,Y

PROCEDURE OnDblClick(oSwimLane,Shift,X,Y)
RETURN

Syntax for DblClick event, /COM version (others), on:

<SCRIPT EVENT="DblClick(Shift,X,Y)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function DblClick(Shift,X,Y)
End Function
</SCRIPT>

Procedure OnComDblClick Short llShift OLE_XPOS_PIXELS llX OLE_YPOS_PIXELS llY
    Forward Send OnComDblClick llShift llX llY
End_Procedure

METHOD OCX_DblClick(Shift,X,Y) CLASS MainDialog
RETURN NIL

void onEvent_DblClick(int _Shift,int _X,int _Y)
{
}

function DblClick as v (Shift as N,X as OLE::Exontrol.SwimLane.1::OLE_XPOS_PIXELS,Y as OLE::Exontrol.SwimLane.1::OLE_YPOS_PIXELS)
end function

function nativeObject_DblClick(Shift,X,Y)
return


event Event

event Event (EventID as Long)
Notifies the application once the control fires an event.

Type | Description
EventID as Long | A Long expression that specifies the identifier of the event. Each internal event of the control has an unique identifier. Use the EventParam(-2) to display entire information about fired event ( such as name, identifier, and properties ). The EventParam(-1) retrieves the number of parameters of fired event
The Event notification occurs ANY time the control fires an event. This is useful for X++, which does not support event with parameters passed by reference. Also, this could be useful for C++ Builder or Delphi, which does not handle properly the events with parameters of VARIANT type.

In X++ the "Error executing code: FormActiveXControl (data source), method ... called with invalid parameters" occurs when handling events that have parameters passed by reference. Passed by reference, means that in the event handler, you can change the value for that parameter, and so the control will takes the new value, and use it. The X++ is NOT able to handle properly events with parameters by reference, so we have the solution.

The solution is using and handling the Event notification and EventParam method., instead handling the event that gives the "invalid parameters" error executing code.

If you are not familiar with what a type library means just handle the Event of the control as follows:

// Notifies the application once the control fires an event.
void onEvent_Event(int _EventID)
{
    print exswimlane1.EventParam(-2).toString();
}

This code allows you to display the information for each event of the control being fired as in the list bellow:

"MouseMove/-606( 1 , 0 , 145 , 36 )" VT_BSTR
"BeforeDrawPart/54( 2 , -1962866148 , =0 , =0 , =0 , =0 , =false )" VT_BSTR
"AfterDrawPart/55( 2 , -1962866148 , 0 , 0 , 0 , 0 )" VT_BSTR
"MouseMove/-606( 1 , 0 , 145 , 35 )" VT_BSTR

Each line indicates an event, and the following information is provided: the name of the event, its identifier, and the list of parameters being passed to the event. The parameters that starts with = character, indicates a parameter by reference, in other words one that can changed during the event handler.

In conclusion, anytime the X++ fires the "invalid parameters." while handling an event, you can use and handle the Event notification and EventParam methods of the control

Syntax for Event event, /NET version, on:

private void Event(object sender,int EventID)
{
}

Private Sub Event(ByVal sender As System.Object,ByVal EventID As Integer) Handles Event
End Sub

Syntax for Event event, /COM version, on:

private void Event(object sender, AxEXSWIMLANELib._ISwimLaneEvents_EventEvent e)
{
}

void OnEvent(long EventID)
{
}

void __fastcall Event(TObject *Sender,long EventID)
{
}

procedure Event(ASender: TObject; EventID : Integer);
begin
end;

procedure Event(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_EventEvent);
begin
end;

begin event Event(long EventID)
end event Event

Private Sub Event(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_EventEvent) Handles Event
End Sub

Private Sub Event(ByVal EventID As Long)
End Sub

Private Sub Event(ByVal EventID As Long)
End Sub

LPARAMETERS EventID

PROCEDURE OnEvent(oSwimLane,EventID)
RETURN

Syntax for Event event, /COM version (others), on:

<SCRIPT EVENT="Event(EventID)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function Event(EventID)
End Function
</SCRIPT>

Procedure OnComEvent Integer llEventID
    Forward Send OnComEvent llEventID
End_Procedure

METHOD OCX_Event(EventID) CLASS MainDialog
RETURN NIL

void onEvent_Event(int _EventID)
{
}

function Event as v (EventID as N)
end function

function nativeObject_Event(EventID)
return


event HandCursorClick

event HandCursorClick (Element as Element, Hit as ShowHandCursorOnEnum, Key as Variant)
The uses clicks a part of the element that shows the had cursor.

Type | Description
Element as Element | An Element object being clicked.
Hit as ShowHandCursorOnEnum | A ShowHandCursorOnEnum expression that specifies the part of the element being clicked.
Key as Variant | A VARIANT expression that specifies the key associated with the part being clicked. For instance, if the Hit indicates the exShowHandCursorCheck flag, the Key parameter specifies the element's checkbox state.
The HandCursorClick event notifies once the user clicks a part of the element ( which shows a hand cursor when the pointer hovers it ). The ShowHandCursorOn property specifies the parts of the element that shows the hand cursor when the mouse-pointer hovers the part. The Hit parameter specifies the part of the element being clicked, while the Key parameter specifies a value associated with the part being clicked as listed bellow:
  • exShowHandCursorCheck -> key specifies the Element.Checked property.
  • exShowHandCursorAnchor -> key specifies the identifier of the anchor element such as <a id;options> anchor </a>
  • exShowHandCursorPicture -> key specifies the name of the picture being clicked ( HTMLPicture property )
  • exShowHandCursorIcon - key specifies the index of the icon being clicked ( Images method )

The above flags can be combined with the following flags:

  • exShowHandCursorCaption, indicates that the part being clicked belong to the element's caption.
  • exShowHandCursorExtraCaption, indicates that the part being clicked belong to the element's extra caption.
  • exShowHandCursorPictures, indicates that the part being clicked belong to the element's pictures.
  • exShowHandCursorExtraPictures, indicates that the part being clicked belong to the element's extra pictures.

The HandCursorClick event occurs also if an anchor element is clicked so you can handle the AnchorClick event too. You can use the HitTestFromPoint property to determine whether the cursor hovers the expand/collapse glyphs, the element's checkbox, picture and so on.

Syntax for HandCursorClick event, /NET version, on:

private void HandCursorClick(object sender,exontrol.EXSWIMLANELib.Element Element,exontrol.EXSWIMLANELib.ShowHandCursorOnEnum Hit,object Key)
{
}

Private Sub HandCursorClick(ByVal sender As System.Object,ByVal Element As exontrol.EXSWIMLANELib.Element,ByVal Hit As exontrol.EXSWIMLANELib.ShowHandCursorOnEnum,ByVal Key As Object) Handles HandCursorClick
End Sub

Syntax for HandCursorClick event, /COM version, on:

private void HandCursorClick(object sender, AxEXSWIMLANELib._ISwimLaneEvents_HandCursorClickEvent e)
{
}

void OnHandCursorClick(LPDISPATCH Element,long Hit,VARIANT Key)
{
}

void __fastcall HandCursorClick(TObject *Sender,Exswimlanelib_tlb::IElement *Element,Exswimlanelib_tlb::ShowHandCursorOnEnum Hit,Variant Key)
{
}

procedure HandCursorClick(ASender: TObject; Element : IElement;Hit : ShowHandCursorOnEnum;Key : OleVariant);
begin
end;

procedure HandCursorClick(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_HandCursorClickEvent);
begin
end;

begin event HandCursorClick(oleobject Element,long Hit,any Key)
end event HandCursorClick

Private Sub HandCursorClick(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_HandCursorClickEvent) Handles HandCursorClick
End Sub

Private Sub HandCursorClick(ByVal Element As EXSWIMLANELibCtl.IElement,ByVal Hit As EXSWIMLANELibCtl.ShowHandCursorOnEnum,ByVal Key As Variant)
End Sub

Private Sub HandCursorClick(ByVal Element As Object,ByVal Hit As Long,ByVal Key As Variant)
End Sub

LPARAMETERS Element,Hit,Key

PROCEDURE OnHandCursorClick(oSwimLane,Element,Hit,Key)
RETURN

Syntax for HandCursorClick event, /COM version (others), on:

<SCRIPT EVENT="HandCursorClick(Element,Hit,Key)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function HandCursorClick(Element,Hit,Key)
End Function
</SCRIPT>

Procedure OnComHandCursorClick Variant llElement OLEShowHandCursorOnEnum llHit Variant llKey
    Forward Send OnComHandCursorClick llElement llHit llKey
End_Procedure

METHOD OCX_HandCursorClick(Element,Hit,Key) CLASS MainDialog
RETURN NIL

void onEvent_HandCursorClick(COM _Element,int _Hit,COMVariant _Key)
{
}

function HandCursorClick as v (Element as OLE::Exontrol.SwimLane.1::IElement,Hit as OLE::Exontrol.SwimLane.1::ShowHandCursorOnEnum,Key as A)
end function

function nativeObject_HandCursorClick(Element,Hit,Key)
return

The following samples shows how you can handle clicking an icon or a picture of the element:

VBA (MS Access, Excell...)

' HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
Private Sub SwimLane1_HandCursorClick(ByVal Element As Object,ByVal Hit As Long,ByVal Key As Variant)
    With SwimLane1
        Debug.Print( Key )
    End With
End Sub

With SwimLane1
    .Images "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" & _
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" & _
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" & _
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" & _
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA="
    .HTMLPicture("pic1") = "c:\exontrol\images\zipdisk.gif"
    .HTMLPicture("pic2") = "c:\exontrol\images\auction.gif"
    With .Elements.Add("Caption")
        .Pictures = "1,2/pic1/pic2"
        .PicturesAlign = 33
        .ShowHandCursorOn = 771 ' ShowHandCursorOnEnum.exShowHandCursorExtraPictures Or ShowHandCursorOnEnum.exShowHandCursorPictures Or ShowHandCursorOnEnum.exShowHandCursorIcon Or ShowHandCursorOnEnum.exShowHandCursorPicture
        .CaptionAlign = 1
    End With
End With

VB6

' HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
Private Sub SwimLane1_HandCursorClick(ByVal Element As EXSWIMLANELibCtl.IElement,ByVal Hit As EXSWIMLANELibCtl.ShowHandCursorOnEnum,ByVal Key As Variant)
    With SwimLane1
        Debug.Print( Key )
    End With
End Sub

With SwimLane1
    .Images "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" & _
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" & _
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" & _
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" & _
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA="
    .HTMLPicture("pic1") = "c:\exontrol\images\zipdisk.gif"
    .HTMLPicture("pic2") = "c:\exontrol\images\auction.gif"
    With .Elements.Add("Caption")
        .Pictures = "1,2/pic1/pic2"
        .PicturesAlign = exBottomCenter
        .ShowHandCursorOn = ShowHandCursorOnEnum.exShowHandCursorExtraPictures Or ShowHandCursorOnEnum.exShowHandCursorPictures Or ShowHandCursorOnEnum.exShowHandCursorIcon Or ShowHandCursorOnEnum.exShowHandCursorPicture
        .CaptionAlign = exTopCenter
    End With
End With

VB.NET

' HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
Private Sub Exswimlane1_HandCursorClick(ByVal sender As System.Object,ByVal Element As exontrol.EXSWIMLANELib.Element,ByVal Hit As exontrol.EXSWIMLANELib.ShowHandCursorOnEnum,ByVal Key As Object) Handles Exswimlane1.HandCursorClick
    With Exswimlane1
        Debug.Print( Key )
    End With
End Sub

With Exswimlane1
    .Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" & _
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" & _
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" & _
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" & _
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
    .set_HTMLPicture("pic1","c:\exontrol\images\zipdisk.gif")
    .set_HTMLPicture("pic2","c:\exontrol\images\auction.gif")
    With .Elements.Add("Caption")
        .Pictures = "1,2/pic1/pic2"
        .PicturesAlign = exontrol.EXSWIMLANELib.ContentAlignmentEnum.exBottomCenter
        .ShowHandCursorOn = exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorExtraPictures Or exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPictures Or exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorIcon Or exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPicture
        .CaptionAlign = exontrol.EXSWIMLANELib.ContentAlignmentEnum.exTopCenter
    End With
End With

VB.NET for /COM

' HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
Private Sub AxSwimLane1_HandCursorClick(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_HandCursorClickEvent) Handles AxSwimLane1.HandCursorClick
    With AxSwimLane1
        Debug.Print( e.key )
    End With
End Sub

With AxSwimLane1
    .Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" & _
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" & _
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" & _
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" & _
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
    .set_HTMLPicture("pic1","c:\exontrol\images\zipdisk.gif")
    .set_HTMLPicture("pic2","c:\exontrol\images\auction.gif")
    With .Elements.Add("Caption")
        .Pictures = "1,2/pic1/pic2"
        .PicturesAlign = EXSWIMLANELib.ContentAlignmentEnum.exBottomCenter
        .ShowHandCursorOn = EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorExtraPictures Or EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPictures Or EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorIcon Or EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPicture
        .CaptionAlign = EXSWIMLANELib.ContentAlignmentEnum.exTopCenter
    End With
End With

C++

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
void OnHandCursorClickSwimLane1(LPDISPATCH Element,long Hit,VARIANT Key)
{
    /*
        Copy and paste the following directives to your header file as
        it defines the namespace 'EXSWIMLANELib' for the library: 'ExSwimLane 1.0 Control Library'
        #import <ExSwimLane.dll>
        using namespace EXSWIMLANELib;
    */
    EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
    OutputDebugStringW( L"Key" );
}

EXSWIMLANELib::ISwimLanePtr spSwimLane1 = GetDlgItem(IDC_SWIMLANE1)->GetControlUnknown();
spSwimLane1->Images(_bstr_t("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0") +
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" +
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" +
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
spSwimLane1->PutHTMLPicture(L"pic1","c:\\exontrol\\images\\zipdisk.gif");
spSwimLane1->PutHTMLPicture(L"pic2","c:\\exontrol\\images\\auction.gif");
EXSWIMLANELib::IElementPtr var_Element = spSwimLane1->GetElements()->Add("Caption",vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
    var_Element->PutPictures(L"1,2/pic1/pic2");
    var_Element->PutPicturesAlign(EXSWIMLANELib::exBottomCenter);
    var_Element->PutShowHandCursorOn(EXSWIMLANELib::ShowHandCursorOnEnum(EXSWIMLANELib::exShowHandCursorExtraPictures | EXSWIMLANELib::exShowHandCursorPictures | EXSWIMLANELib::exShowHandCursorIcon | EXSWIMLANELib::exShowHandCursorPicture));
    var_Element->PutCaptionAlign(EXSWIMLANELib::exTopCenter);

C++ Builder

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
void __fastcall TForm1::SwimLane1HandCursorClick(TObject *Sender,Exswimlanelib_tlb::IElement *Element,Exswimlanelib_tlb::ShowHandCursorOnEnum Hit,Variant Key)
{
    OutputDebugString( L"Key" );
}

SwimLane1->Images(TVariant(String("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0") +
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" +
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" +
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA="));
SwimLane1->HTMLPicture[L"pic1"] = TVariant("c:\\exontrol\\images\\zipdisk.gif");
SwimLane1->HTMLPicture[L"pic2"] = TVariant("c:\\exontrol\\images\\auction.gif");
Exswimlanelib_tlb::IElementPtr var_Element = SwimLane1->Elements->Add(TVariant("Caption"),TNoParam(),TNoParam(),TNoParam(),TNoParam(),TNoParam());
    var_Element->Pictures = L"1,2/pic1/pic2";
    var_Element->PicturesAlign = Exswimlanelib_tlb::ContentAlignmentEnum::exBottomCenter;
    var_Element->ShowHandCursorOn = Exswimlanelib_tlb::ShowHandCursorOnEnum::exShowHandCursorExtraPictures | Exswimlanelib_tlb::ShowHandCursorOnEnum::exShowHandCursorPictures | Exswimlanelib_tlb::ShowHandCursorOnEnum::exShowHandCursorIcon | Exswimlanelib_tlb::ShowHandCursorOnEnum::exShowHandCursorPicture;
    var_Element->CaptionAlign = Exswimlanelib_tlb::ContentAlignmentEnum::exTopCenter;

C#

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
private void exswimlane1_HandCursorClick(object sender,exontrol.EXSWIMLANELib.Element Element,exontrol.EXSWIMLANELib.ShowHandCursorOnEnum Hit,object Key)
{
    System.Diagnostics.Debug.Print( Key.ToString() );
}
//this.exswimlane1.HandCursorClick += new exontrol.EXSWIMLANELib.exg2antt.HandCursorClickEventHandler(this.exswimlane1_HandCursorClick);

exswimlane1.Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" +
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" +
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" +
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
exswimlane1.set_HTMLPicture("pic1","c:\\exontrol\\images\\zipdisk.gif");
exswimlane1.set_HTMLPicture("pic2","c:\\exontrol\\images\\auction.gif");
exontrol.EXSWIMLANELib.Element var_Element = exswimlane1.Elements.Add("Caption",null,null,null,null,null);
    var_Element.Pictures = "1,2/pic1/pic2";
    var_Element.PicturesAlign = exontrol.EXSWIMLANELib.ContentAlignmentEnum.exBottomCenter;
    var_Element.ShowHandCursorOn = exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorExtraPictures | exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPictures | exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorIcon | exontrol.EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPicture;
    var_Element.CaptionAlign = exontrol.EXSWIMLANELib.ContentAlignmentEnum.exTopCenter;

JavaScript

<SCRIPT FOR="SwimLane1" EVENT="HandCursorClick(Element,Hit,Key)" LANGUAGE="JScript">
    alert( Key );
</SCRIPT>

<OBJECT classid="clsid:AFA73FCE-6609-4062-AE6A-4BAD6D96A025" id="SwimLane1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
    SwimLane1.Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" +
    "/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" +
    "/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" +
    "x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
    "NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
    SwimLane1.HTMLPicture("pic1") = "c:\\exontrol\\images\\zipdisk.gif";
    SwimLane1.HTMLPicture("pic2") = "c:\\exontrol\\images\\auction.gif";
    var var_Element = SwimLane1.Elements.Add("Caption",null,null,null,null,null);
        var_Element.Pictures = "1,2/pic1/pic2";
        var_Element.PicturesAlign = 33;
        var_Element.ShowHandCursorOn = 771;
        var_Element.CaptionAlign = 1;
</SCRIPT>

C# for /COM

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
private void axSwimLane1_HandCursorClick(object sender, AxEXSWIMLANELib._ISwimLaneEvents_HandCursorClickEvent e)
{
    System.Diagnostics.Debug.Print( e.key.ToString() );
}
//this.axSwimLane1.HandCursorClick += new AxEXSWIMLANELib._ISwimLaneEvents_HandCursorClickEventHandler(this.axSwimLane1_HandCursorClick);

axSwimLane1.Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0" +
"/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1" +
"/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qO" +
"x3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
axSwimLane1.set_HTMLPicture("pic1","c:\\exontrol\\images\\zipdisk.gif");
axSwimLane1.set_HTMLPicture("pic2","c:\\exontrol\\images\\auction.gif");
EXSWIMLANELib.Element var_Element = axSwimLane1.Elements.Add("Caption",null,null,null,null,null);
    var_Element.Pictures = "1,2/pic1/pic2";
    var_Element.PicturesAlign = EXSWIMLANELib.ContentAlignmentEnum.exBottomCenter;
    var_Element.ShowHandCursorOn = EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorExtraPictures | EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPictures | EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorIcon | EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPicture;
    var_Element.CaptionAlign = EXSWIMLANELib.ContentAlignmentEnum.exTopCenter;

X++ (Dynamics Ax 2009)

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
void onEvent_HandCursorClick(COM _Element,int _Hit,COMVariant _Key)
{
    ;
    print( _Key );
}

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

    super();

    var_s = "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/";
    var_s = var_s + "oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/";
    var_s = var_s + "wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx";
    var_s = var_s + "3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN";
    var_s = var_s + "AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=";
    exswimlane1.Images(COMVariant::createFromStr(var_s));
    exswimlane1.HTMLPicture("pic1","c:\\exontrol\\images\\zipdisk.gif");
    exswimlane1.HTMLPicture("pic2","c:\\exontrol\\images\\auction.gif");
    var_Element = COM::createFromObject(exswimlane1.Elements()).Add("Caption"); com_Element = var_Element;
        com_Element.Pictures("1,2/pic1/pic2");
        com_Element.PicturesAlign(33/*exBottomCenter*/);
        com_Element.ShowHandCursorOn(771/*exShowHandCursorExtraPictures | exShowHandCursorPictures | exShowHandCursorIcon | exShowHandCursorPicture*/);
        com_Element.CaptionAlign(1/*exTopCenter*/);
}

Delphi 8 (.NET only)

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
procedure TWinForm1.AxSwimLane1_HandCursorClick(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_HandCursorClickEvent);
begin
    with AxSwimLane1 do
    begin
        OutputDebugString( e.key );
    end
end;

with AxSwimLane1 do
begin
    Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/' +
    'oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/' +
    'wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx' +
    '3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' +
    'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
    set_HTMLPicture('pic1','c:\exontrol\images\zipdisk.gif');
    set_HTMLPicture('pic2','c:\exontrol\images\auction.gif');
    with Elements.Add('Caption',Nil,Nil,Nil,Nil,Nil) do
    begin
        Pictures := '1,2/pic1/pic2';
        PicturesAlign := EXSWIMLANELib.ContentAlignmentEnum.exBottomCenter;
        ShowHandCursorOn := Integer(EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorExtraPictures) Or Integer(EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPictures) Or Integer(EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorIcon) Or Integer(EXSWIMLANELib.ShowHandCursorOnEnum.exShowHandCursorPicture);
        CaptionAlign := EXSWIMLANELib.ContentAlignmentEnum.exTopCenter;
    end;
end

Delphi (standard)

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
procedure TForm1.SwimLane1HandCursorClick(ASender: TObject; Element : IElement;Hit : ShowHandCursorOnEnum;Key : OleVariant);
begin
    with SwimLane1 do
    begin
        OutputDebugString( Key );
    end
end;

with SwimLane1 do
begin
    Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/' +
    'oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/' +
    'wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx' +
    '3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' +
    'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
    HTMLPicture['pic1'] := 'c:\exontrol\images\zipdisk.gif';
    HTMLPicture['pic2'] := 'c:\exontrol\images\auction.gif';
    with Elements.Add('Caption',Null,Null,Null,Null,Null) do
    begin
        Pictures := '1,2/pic1/pic2';
        PicturesAlign := EXSWIMLANELib_TLB.exBottomCenter;
        ShowHandCursorOn := Integer(EXSWIMLANELib_TLB.exShowHandCursorExtraPictures) Or Integer(EXSWIMLANELib_TLB.exShowHandCursorPictures) Or Integer(EXSWIMLANELib_TLB.exShowHandCursorIcon) Or Integer(EXSWIMLANELib_TLB.exShowHandCursorPicture);
        CaptionAlign := EXSWIMLANELib_TLB.exTopCenter;
    end;
end

VFP

*** HandCursorClick event - The uses clicks a part of the element that shows the had cursor. ***
LPARAMETERS Element,Hit,Key
    with thisform.SwimLane1
        DEBUGOUT( Key )
    endwith

with thisform.SwimLane1
    var_s = "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/"
    var_s = var_s + "oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/"
    var_s = var_s + "wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx"
    var_s = var_s + "3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN"
    var_s = var_s + "AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA="
    .Images(var_s)
    .Object.HTMLPicture("pic1") = "c:\exontrol\images\zipdisk.gif"
    .Object.HTMLPicture("pic2") = "c:\exontrol\images\auction.gif"
    with .Elements.Add("Caption")
        .Pictures = "1,2/pic1/pic2"
        .PicturesAlign = 33
        .ShowHandCursorOn = 771 && ShowHandCursorOnEnum.exShowHandCursorExtraPictures Or ShowHandCursorOnEnum.exShowHandCursorPictures Or ShowHandCursorOnEnum.exShowHandCursorIcon Or ShowHandCursorOnEnum.exShowHandCursorPicture
        .CaptionAlign = 1
    endwith
endwith

dBASE Plus

/*
with (this.ACTIVEX1.nativeObject)
    HandCursorClick = class::nativeObject_HandCursorClick
endwith
*/
// The uses clicks a part of the element that shows the had cursor.
function nativeObject_HandCursorClick(Element,Hit,Key)
    local oSwimLane
    oSwimLane = form.Activex1.nativeObject
    ? Str(Key)
return

local oSwimLane,var_Element

oSwimLane = form.Activex1.nativeObject
oSwimLane.Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oSwimLane.Template = [HTMLPicture("pic1") = "c:\exontrol\images\zipdisk.gif"] // oSwimLane.HTMLPicture("pic1") = "c:\exontrol\images\zipdisk.gif"
oSwimLane.Template = [HTMLPicture("pic2") = "c:\exontrol\images\auction.gif"] // oSwimLane.HTMLPicture("pic2") = "c:\exontrol\images\auction.gif"
var_Element = oSwimLane.Elements.Add("Caption")
    var_Element.Pictures = "1,2/pic1/pic2"
    var_Element.PicturesAlign = 33
    var_Element.ShowHandCursorOn = 771 /*exShowHandCursorExtraPictures | exShowHandCursorPictures | exShowHandCursorIcon | exShowHandCursorPicture*/
    var_Element.CaptionAlign = 1

XBasic (Alpha Five)

' The uses clicks a part of the element that shows the had cursor.
function HandCursorClick as v (Element as OLE::Exontrol.SwimLane.1::IElement,Hit as OLE::Exontrol.SwimLane.1::ShowHandCursorOnEnum,Key as A)
    Dim oSwimLane as P
    oSwimLane = topparent:CONTROL_ACTIVEX1.activex
    ? Key
end function

Dim oSwimLane as P
Dim var_Element as P

oSwimLane = topparent:CONTROL_ACTIVEX1.activex
oSwimLane.Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oSwimLane.Template = "HTMLPicture(\"pic1\") = \"c:\exontrol\images\zipdisk.gif\"" ' oSwimLane.HTMLPicture("pic1") = "c:\exontrol\images\zipdisk.gif"
oSwimLane.Template = "HTMLPicture(\"pic2\") = \"c:\exontrol\images\auction.gif\"" ' oSwimLane.HTMLPicture("pic2") = "c:\exontrol\images\auction.gif"
var_Element = oSwimLane.Elements.Add("Caption")
    var_Element.Pictures = "1,2/pic1/pic2"
    var_Element.PicturesAlign = 33
    var_Element.ShowHandCursorOn = 771 'exShowHandCursorExtraPictures + exShowHandCursorPictures + exShowHandCursorIcon + exShowHandCursorPicture
    var_Element.CaptionAlign = 1

Visual Objects

METHOD OCX_Exontrol1HandCursorClick(Element,Hit,Key) CLASS MainDialog
    // HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
    OutputDebugString(String2Psz( AsString(Key) ))
RETURN NIL

local var_Element as IElement

oDCOCX_Exontrol1:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oDCOCX_Exontrol1:[HTMLPicture,"pic1"] := "c:\exontrol\images\zipdisk.gif"
oDCOCX_Exontrol1:[HTMLPicture,"pic2"] := "c:\exontrol\images\auction.gif"
var_Element := oDCOCX_Exontrol1:Elements:Add("Caption",nil,nil,nil,nil,nil)
    var_Element:Pictures := "1,2/pic1/pic2"
    var_Element:PicturesAlign := exBottomCenter
    var_Element:ShowHandCursorOn := exShowHandCursorExtraPictures | exShowHandCursorPictures | exShowHandCursorIcon | exShowHandCursorPicture
    var_Element:CaptionAlign := exTopCenter

PowerBuilder

/*begin event HandCursorClick(oleobject Element,long Hit,any Key) - The uses clicks a part of the element that shows the had cursor.*/
/*
    OleObject oSwimLane
    oSwimLane = ole_1.Object
    MessageBox("Information",string( String(Key) ))
*/
/*end event HandCursorClick*/

OleObject oSwimLane,var_Element

oSwimLane = ole_1.Object
oSwimLane.Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oSwimLane.HTMLPicture("pic1","c:\exontrol\images\zipdisk.gif")
oSwimLane.HTMLPicture("pic2","c:\exontrol\images\auction.gif")
var_Element = oSwimLane.Elements.Add("Caption")
    var_Element.Pictures = "1,2/pic1/pic2"
    var_Element.PicturesAlign = 33
    var_Element.ShowHandCursorOn = 771 /*exShowHandCursorExtraPictures | exShowHandCursorPictures | exShowHandCursorIcon | exShowHandCursorPicture*/
    var_Element.CaptionAlign = 1

Visual DataFlex

// The uses clicks a part of the element that shows the had cursor.
Procedure OnComHandCursorClick Variant llElement OLEShowHandCursorOnEnum llHit Variant llKey
    Forward Send OnComHandCursorClick llElement llHit llKey
    Showln llKey
End_Procedure

Procedure OnCreate
    Forward Send OnCreate
    Send ComImages "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA="
    Set ComHTMLPicture "pic1" to "c:\exontrol\images\zipdisk.gif"
    Set ComHTMLPicture "pic2" to "c:\exontrol\images\auction.gif"
    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 "Caption" Nothing Nothing Nothing Nothing Nothing to voElement
        Handle hoElement
        Get Create (RefClass(cComElement)) to hoElement
        Set pvComObject of hoElement to voElement
            Set ComPictures of hoElement to "1,2/pic1/pic2"
            Set ComPicturesAlign of hoElement to OLEexBottomCenter
            Set ComShowHandCursorOn of hoElement to (OLEexShowHandCursorExtraPictures + OLEexShowHandCursorPictures + OLEexShowHandCursorIcon + OLEexShowHandCursorPicture)
            Set ComCaptionAlign of hoElement to OLEexTopCenter
        Send Destroy to hoElement
    Send Destroy to hoElements
End_Procedure

XBase++

PROCEDURE OnHandCursorClick(oSwimLane,Element,Hit,Key)
    DevOut( Transform(Key,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
     LOCAL oForm
    LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
    LOCAL oElement
    LOCAL oSwimLane

    oForm := XbpDialog():new( AppDesktop() )
    oForm:drawingArea:clipChildren := .T.
    oForm:create( ,,{100,100}, {640,480},, .F. )
    oForm:close  := {|| PostAppEvent( xbeP_Quit )}

    oSwimLane := XbpActiveXControl():new( oForm:drawingArea )
    oSwimLane:CLSID  := "Exontrol.SwimLane.1" /*{AFA73FCE-6609-4062-AE6A-4BAD6D96A025}*/
    oSwimLane:create(,, {10,60},{610,370} )

        oSwimLane:HandCursorClick := {|Element,Hit,Key| OnHandCursorClick(oSwimLane,Element,Hit,Key)} /*The uses clicks a part of the element that shows the had cursor.*/

        oSwimLane:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
        oSwimLane:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
        oSwimLane:SetProperty("HTMLPicture","pic2","c:\exontrol\images\auction.gif")
        oElement := oSwimLane:Elements():Add("Caption")
            oElement:Pictures := "1,2/pic1/pic2"
            oElement:PicturesAlign := 33/*exBottomCenter*/
            oElement:ShowHandCursorOn := 771/*exShowHandCursorExtraPictures+exShowHandCursorPictures+exShowHandCursorIcon+exShowHandCursorPicture*/
            oElement:CaptionAlign := 1/*exTopCenter*/

    oForm:Show()
    DO WHILE nEvent != xbeP_Quit
        nEvent := AppEvent( @mp1, @mp2, @oXbp )
        oXbp:handleEvent( nEvent, mp1, mp2 )
    ENDDO
RETURN


event KeyDown

event KeyDown (KeyCode as Integer, Shift as Integer)
Occurs when the user presses a key while an object has the focus.

Type | Description
KeyCode as Integer | An integer that represent the key code
Shift as Integer | An integer that corresponds to the state of the SHIFT, CTRL, and ALT keys at the time of the event. The shift argument is a bit field with the least-significant bits corresponding to the SHIFT key (bit 0), the CTRL key (bit 1), and the ALT key (bit 2). These bits correspond to the values 1, 2, and 4, respectively. Some, all, or none of the bits can be set, indicating that some, all, or none of the keys are pressed. For example, if both CTRL and ALT are pressed, the value of shift is 6.
Use KeyDown and KeyUp event procedures if you need to respond to both the pressing and releasing of a key. You test for a condition by first assigning each result to a temporary integer variable and then comparing shift to a bit mask. Use the And operator with the shift argument to test whether the condition is greater than 0, indicating that the modifier was pressed, as in this example:

ShiftDown = (Shift And 1) > 0
CtrlDown = (Shift And 2) > 0
AltDown = (Shift And 4) > 0
In a procedure, you can test for any combination of conditions, as in this example:
If AltDown And CtrlDown Then

You can use the Edit method of the Element object to starts editing the element's Caption or ExtraCaption.

Syntax for KeyDown event, /NET version, on:

private void KeyDown(object sender,ref short KeyCode,short Shift)
{
}

Private Sub KeyDown(ByVal sender As System.Object,ByRef KeyCode As Short,ByVal Shift As Short) Handles KeyDown
End Sub

Syntax for KeyDown event, /COM version, on:

private void KeyDownEvent(object sender, AxEXSWIMLANELib._ISwimLaneEvents_KeyDownEvent e)
{
}

void OnKeyDown(short FAR* KeyCode,short Shift)
{
}

void __fastcall KeyDown(TObject *Sender,short * KeyCode,short Shift)
{
}

procedure KeyDown(ASender: TObject; var KeyCode : Smallint;Shift : Smallint);
begin
end;

procedure KeyDownEvent(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_KeyDownEvent);
begin
end;

begin event KeyDown(integer KeyCode,integer Shift)
end event KeyDown

Private Sub KeyDownEvent(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_KeyDownEvent) Handles KeyDownEvent
End Sub

Private Sub KeyDown(KeyCode As Integer,Shift As Integer)
End Sub

Private Sub KeyDown(KeyCode As Integer,ByVal Shift As Integer)
End Sub

LPARAMETERS KeyCode,Shift

PROCEDURE OnKeyDown(oSwimLane,KeyCode,Shift)
RETURN

Syntax for KeyDown event, /COM version (others), on:

<SCRIPT EVENT="KeyDown(KeyCode,Shift)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function KeyDown(KeyCode,Shift)
End Function
</SCRIPT>

Procedure OnComKeyDown Short llKeyCode Short llShift
    Forward Send OnComKeyDown llKeyCode llShift
End_Procedure

METHOD OCX_KeyDown(KeyCode,Shift) CLASS MainDialog
RETURN NIL

void onEvent_KeyDown(COMVariant /*short*/ _KeyCode,int _Shift)
{
}

function KeyDown as v (KeyCode as N,Shift as N)
end function

function nativeObject_KeyDown(KeyCode,Shift)
return


event KeyPress

event KeyPress (KeyAscii as Integer)
Occurs when the user presses and releases an ANSI key.

Type | Description
KeyAscii as Integer | An integer that returns a standard numeric ANSI keycode
The KeyPress event lets you immediately test keystrokes for validity or for formatting characters as they are typed. Changing the value of the keyascii argument changes the character displayed. Use KeyDown and KeyUp event procedures to handle any keystroke not recognized by KeyPress, such as function keys, editing keys, navigation keys, and any combinations of these with keyboard modifiers. Unlike the KeyDown and KeyUp events, KeyPress does not indicate the physical state of the keyboard; instead, it passes a character. KeyPress interprets the uppercase and lowercase of each character as separate key codes and, therefore, as two separate characters.

Syntax for KeyPress event, /NET version, on:

private void KeyPress(object sender,ref short KeyAscii)
{
}

Private Sub KeyPress(ByVal sender As System.Object,ByRef KeyAscii As Short) Handles KeyPress
End Sub

Syntax for KeyPress event, /COM version, on:

private void KeyPressEvent(object sender, AxEXSWIMLANELib._ISwimLaneEvents_KeyPressEvent e)
{
}

void OnKeyPress(short FAR* KeyAscii)
{
}

void __fastcall KeyPress(TObject *Sender,short * KeyAscii)
{
}

procedure KeyPress(ASender: TObject; var KeyAscii : Smallint);
begin
end;

procedure KeyPressEvent(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_KeyPressEvent);
begin
end;

begin event KeyPress(integer KeyAscii)
end event KeyPress

Private Sub KeyPressEvent(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_KeyPressEvent) Handles KeyPressEvent
End Sub

Private Sub KeyPress(KeyAscii As Integer)
End Sub

Private Sub KeyPress(KeyAscii As Integer)
End Sub

LPARAMETERS KeyAscii

PROCEDURE OnKeyPress(oSwimLane,KeyAscii)
RETURN

Syntax for KeyPress event, /COM version (others), on:

<SCRIPT EVENT="KeyPress(KeyAscii)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function KeyPress(KeyAscii)
End Function
</SCRIPT>

Procedure OnComKeyPress Short llKeyAscii
    Forward Send OnComKeyPress llKeyAscii
End_Procedure

METHOD OCX_KeyPress(KeyAscii) CLASS MainDialog
RETURN NIL

void onEvent_KeyPress(COMVariant /*short*/ _KeyAscii)
{
}

function KeyPress as v (KeyAscii as N)
end function

function nativeObject_KeyPress(KeyAscii)
return


event KeyUp

event KeyUp (KeyCode as Integer, Shift as Integer)
Occurs when the user releases a key while an object has the focus.

Type | Description
KeyCode as Integer | An integer that represent the key code.
Shift as Integer | An integer that corresponds to the state of the SHIFT, CTRL, and ALT keys at the time of the event. The shift argument is a bit field with the least-significant bits corresponding to the SHIFT key (bit 0), the CTRL key (bit 1), and the ALT key (bit 2). These bits correspond to the values 1, 2, and 4, respectively. Some, all, or none of the bits can be set, indicating that some, all, or none of the keys are pressed. For example, if both CTRL and ALT are pressed, the value of shift is 6.
Use the KeyUp event procedure to respond to the releasing of a key.

Syntax for KeyUp event, /NET version, on:

private void KeyUp(object sender,ref short KeyCode,short Shift)
{
}

Private Sub KeyUp(ByVal sender As System.Object,ByRef KeyCode As Short,ByVal Shift As Short) Handles KeyUp
End Sub

Syntax for KeyUp event, /COM version, on:

private void KeyUpEvent(object sender, AxEXSWIMLANELib._ISwimLaneEvents_KeyUpEvent e)
{
}

void OnKeyUp(short FAR* KeyCode,short Shift)
{
}

void __fastcall KeyUp(TObject *Sender,short * KeyCode,short Shift)
{
}

procedure KeyUp(ASender: TObject; var KeyCode : Smallint;Shift : Smallint);
begin
end;

procedure KeyUpEvent(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_KeyUpEvent);
begin
end;

begin event KeyUp(integer KeyCode,integer Shift)
end event KeyUp

Private Sub KeyUpEvent(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_KeyUpEvent) Handles KeyUpEvent
End Sub

Private Sub KeyUp(KeyCode As Integer,Shift As Integer)
End Sub

Private Sub KeyUp(KeyCode As Integer,ByVal Shift As Integer)
End Sub

LPARAMETERS KeyCode,Shift

PROCEDURE OnKeyUp(oSwimLane,KeyCode,Shift)
RETURN

Syntax for KeyUp event, /COM version (others), on:

<SCRIPT EVENT="KeyUp(KeyCode,Shift)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function KeyUp(KeyCode,Shift)
End Function
</SCRIPT>

Procedure OnComKeyUp Short llKeyCode Short llShift
    Forward Send OnComKeyUp llKeyCode llShift
End_Procedure

METHOD OCX_KeyUp(KeyCode,Shift) CLASS MainDialog
RETURN NIL

void onEvent_KeyUp(COMVariant /*short*/ _KeyCode,int _Shift)
{
}

function KeyUp as v (KeyCode as N,Shift as N)
end function

function nativeObject_KeyUp(KeyCode,Shift)
return


event LayoutEndChanging

event LayoutEndChanging (Operation as LayoutChangingEnum)
Notifies your application once the control's layout has been changed.

Type | Description
Operation as LayoutChangingEnum | A LayoutChangingEnum expression that specifies the operation that ends.
The LayoutEndChanging event notifies that the specified operation ends. The LayoutStartChanging event occurs once the user starts an operation on the surface, like creating / adding a new element to the surface. During the LayoutStartChaning event, you can call the CancelLayoutChanging method to cancel the specified operation.

The operations being signaled by the LayoutStartChanging / LayoutEndChanging events are:

  • exSurfaceMove, the user scrolls or moves the surface. The AllowMoveSurface property specifies the keys combination to allow user to move / scroll the surface.
  • exSurfaceZoom, the user magnifies or shrinks the surface. The AllowZoomSurface property specifies the keys combination to allow user to zoom the surface.
  • 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.
  • exResizeElement, the user resizes the object. The AllowResizeElement property specifies the keys combination to allow user to resize the object.
  • exMoveElement, the user moves the object. The AllowMoveElement property specifies the keys combination to allow user to move the object.
  • exSelectObject, the user clicks the object to get it selected. The AllowSelectObject property specifies the keys combination to allow user to select the object.
  • 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.
  • exCreateElement, the user creates an element on the surface. The AllowCreateElement property specifies the keys combination to allow user to create elements on the surface.
  • exEditElement, the user edits the element's caption. The Edit method edits the element.
  • 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.
  • 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. The DesignModes property specifies the modes to be displayed on the Design toolbar. The DesignMode property specifies the control's design mode. Depending on the design-mode, the user can select elements, pools or none.
  • exCreatePool, The user creates pools on the surface. The AllowCreatePool property specifies the keys combination to allow user to create pools on the surface.
  • exResizePool, The user resizes the pool from the surface. The AllowResizePool property specifies the keys combination to allow user to resize the pool.
  • exMovePool, The user moves the pool from the surface. The AllowMovePool property specifies the keys combination to allow user to move the pool.
  • 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.
  • 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.
  • 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.
  • 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.

For instance, the following events occur when user creates an element on the surface:

  • LayoutStartChanging(exCreateElement), the user clicks on the surface
  • AddElement, adds the new element to the Elements collection
  • CreateElement, the user ends creating the object
  • LayoutEndChanging(exCreateElement), the user un-clicks the surface

Syntax for LayoutEndChanging event, /NET version, on:

private void LayoutEndChanging(object sender,exontrol.EXSWIMLANELib.LayoutChangingEnum Operation)
{
}

Private Sub LayoutEndChanging(ByVal sender As System.Object,ByVal Operation As exontrol.EXSWIMLANELib.LayoutChangingEnum) Handles LayoutEndChanging
End Sub

Syntax for LayoutEndChanging event, /COM version, on:

private void LayoutEndChanging(object sender, AxEXSWIMLANELib._ISwimLaneEvents_LayoutEndChangingEvent e)
{
}

void OnLayoutEndChanging(long Operation)
{
}

void __fastcall LayoutEndChanging(TObject *Sender,Exswimlanelib_tlb::LayoutChangingEnum Operation)
{
}

procedure LayoutEndChanging(ASender: TObject; Operation : LayoutChangingEnum);
begin
end;

procedure LayoutEndChanging(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_LayoutEndChangingEvent);
begin
end;

begin event LayoutEndChanging(long Operation)
end event LayoutEndChanging

Private Sub LayoutEndChanging(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_LayoutEndChangingEvent) Handles LayoutEndChanging
End Sub

Private Sub LayoutEndChanging(ByVal Operation As EXSWIMLANELibCtl.LayoutChangingEnum)
End Sub

Private Sub LayoutEndChanging(ByVal Operation As Long)
End Sub

LPARAMETERS Operation

PROCEDURE OnLayoutEndChanging(oSwimLane,Operation)
RETURN

Syntax for LayoutEndChanging event, /COM version (others), on:

<SCRIPT EVENT="LayoutEndChanging(Operation)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function LayoutEndChanging(Operation)
End Function
</SCRIPT>

Procedure OnComLayoutEndChanging OLELayoutChangingEnum llOperation
    Forward Send OnComLayoutEndChanging llOperation
End_Procedure

METHOD OCX_LayoutEndChanging(Operation) CLASS MainDialog
RETURN NIL

void onEvent_LayoutEndChanging(int _Operation)
{
}

function LayoutEndChanging as v (Operation as OLE::Exontrol.SwimLane.1::LayoutChangingEnum)
end function

function nativeObject_LayoutEndChanging(Operation)
return


event LayoutStartChanging

event LayoutStartChanging (Operation as LayoutChangingEnum)
Occurs when the control's layout is about to be changed.

Type | Description
Operation as LayoutChangingEnum | A LayoutChangingEnum expression that specifies the operation that begins.
The LayoutStartChanging event occurs once the user starts an operation on the surface, like creating / adding a new element to the surface. During the LayoutStartChaning event, you can call the CancelLayoutChanging method to cancel the specified operation. The LayoutEndChanging event notifies that the specified operation ends.

The operations being signaled by the LayoutStartChanging / LayoutEndChanging events are:

  • exSurfaceMove, the user scrolls or moves the surface. The AllowMoveSurface property specifies the keys combination to allow user to move / scroll the surface.
  • exSurfaceZoom, the user magnifies or shrinks the surface. The AllowZoomSurface property specifies the keys combination to allow user to zoom the surface.
  • 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.
  • exResizeElement, the user resizes the object. The AllowResizeElement property specifies the keys combination to allow user to resize the object.
  • exMoveElement, the user moves the object. The AllowMoveElement property specifies the keys combination to allow user to move the object.
  • exSelectObject, the user clicks the object to get it selected. The AllowSelectObject property specifies the keys combination to allow user to select the object.
  • 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.
  • exCreateElement, the user creates an element on the surface. The AllowCreateElement property specifies the keys combination to allow user to create elements on the surface.
  • exEditElement, the user edits the element's caption. The Edit method edits the element.
  • 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.
  • 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. The DesignModes property specifies the modes to be displayed on the Design toolbar. The DesignMode property specifies the control's design mode. Depending on the design-mode, the user can select elements, pools or none.
  • exCreatePool, The user creates pools on the surface. The AllowCreatePool property specifies the keys combination to allow user to create pools on the surface.
  • exResizePool, The user resizes the pool from the surface. The AllowResizePool property specifies the keys combination to allow user to resize the pool.
  • exMovePool, The user moves the pool from the surface. The AllowMovePool property specifies the keys combination to allow user to move the pool.
  • 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.
  • 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.
  • 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.
  • 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.

For instance, the following events occur when user creates an element on the surface:

  • LayoutStartChanging(exCreateElement), the user clicks on the surface
  • AddElement, adds the new element to the Elements collection
  • CreateElement, the user ends creating the object
  • LayoutEndChanging(exCreateElement), the user un-clicks the surface

Syntax for LayoutStartChanging event, /NET version, on:

private void LayoutStartChanging(object sender,exontrol.EXSWIMLANELib.LayoutChangingEnum Operation)
{
}

Private Sub LayoutStartChanging(ByVal sender As System.Object,ByVal Operation As exontrol.EXSWIMLANELib.LayoutChangingEnum) Handles LayoutStartChanging
End Sub

Syntax for LayoutStartChanging event, /COM version, on:

private void LayoutStartChanging(object sender, AxEXSWIMLANELib._ISwimLaneEvents_LayoutStartChangingEvent e)
{
}

void OnLayoutStartChanging(long Operation)
{
}

void __fastcall LayoutStartChanging(TObject *Sender,Exswimlanelib_tlb::LayoutChangingEnum Operation)
{
}

procedure LayoutStartChanging(ASender: TObject; Operation : LayoutChangingEnum);
begin
end;

procedure LayoutStartChanging(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_LayoutStartChangingEvent);
begin
end;

begin event LayoutStartChanging(long Operation)
end event LayoutStartChanging

Private Sub LayoutStartChanging(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_LayoutStartChangingEvent) Handles LayoutStartChanging
End Sub

Private Sub LayoutStartChanging(ByVal Operation As EXSWIMLANELibCtl.LayoutChangingEnum)
End Sub

Private Sub LayoutStartChanging(ByVal Operation As Long)
End Sub

LPARAMETERS Operation

PROCEDURE OnLayoutStartChanging(oSwimLane,Operation)
RETURN

Syntax for LayoutStartChanging event, /COM version (others), on:

<SCRIPT EVENT="LayoutStartChanging(Operation)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function LayoutStartChanging(Operation)
End Function
</SCRIPT>

Procedure OnComLayoutStartChanging OLELayoutChangingEnum llOperation
    Forward Send OnComLayoutStartChanging llOperation
End_Procedure

METHOD OCX_LayoutStartChanging(Operation) CLASS MainDialog
RETURN NIL

void onEvent_LayoutStartChanging(int _Operation)
{
}

function LayoutStartChanging as v (Operation as OLE::Exontrol.SwimLane.1::LayoutChangingEnum)
end function

function nativeObject_LayoutStartChanging(Operation)
return


event MouseDown

event MouseDown (Button as Integer, Shift as Integer, X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS)
Occurs when the user presses a mouse button.

Type | Description
Button as Integer | An integer that identifies the button that was pressed to cause the event
Shift as Integer | An integer that corresponds to the state of the SHIFT, CTRL, and ALT keys when the button specified in the button argument is pressed or released.
X as OLE_XPOS_PIXELS | A single that specifies the current X location of the mouse pointer. The X value is always expressed in container coordinates.
Y as OLE_YPOS_PIXELS | A single that specifies the current Y location of the mouse pointer. The Y value is always expressed in container coordinates.
Use a MouseDown or MouseUp event procedure to specify actions that will occur when a mouse button is pressed or released. Unlike the Click and DblClick events, MouseDown and MouseUp events lets you distinguish between the left, right, and middle mouse buttons. You can also write code for mouse-keyboard combinations that use the SHIFT, CTRL, and ALT keyboard modifiers. The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the cursor position. The HitTestFromPoint(-1,-1) property returns the element and the hit-test code from the cursor. The HandCursorClick event notifies once the user clicks a part of the element ( which shows a hand cursor when the pointer hovers it ).

Syntax for MouseDown event, /NET version, on:

private void MouseDownEvent(object sender,short Button,short Shift,int X,int Y)
{
}

Private Sub MouseDownEvent(ByVal sender As System.Object,ByVal Button As Short,ByVal Shift As Short,ByVal X As Integer,ByVal Y As Integer) Handles MouseDownEvent
End Sub

Syntax for MouseDown event, /COM version, on:

private void MouseDownEvent(object sender, AxEXSWIMLANELib._ISwimLaneEvents_MouseDownEvent e)
{
}

void OnMouseDown(short Button,short Shift,long X,long Y)
{
}

void __fastcall MouseDown(TObject *Sender,short Button,short Shift,int X,int Y)
{
}

procedure MouseDown(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
end;

procedure MouseDownEvent(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_MouseDownEvent);
begin
end;

begin event MouseDown(integer Button,integer Shift,long X,long Y)
end event MouseDown

Private Sub MouseDownEvent(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_MouseDownEvent) Handles MouseDownEvent
End Sub

Private Sub MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)
End Sub

Private Sub MouseDown(ByVal Button As Integer,ByVal Shift As Integer,ByVal X As Long,ByVal Y As Long)
End Sub

LPARAMETERS Button,Shift,X,Y

PROCEDURE OnMouseDown(oSwimLane,Button,Shift,X,Y)
RETURN

Syntax for MouseDown event, /COM version (others), on:

<SCRIPT EVENT="MouseDown(Button,Shift,X,Y)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function MouseDown(Button,Shift,X,Y)
End Function
</SCRIPT>

Procedure OnComMouseDown Short llButton Short llShift OLE_XPOS_PIXELS llX OLE_YPOS_PIXELS llY
    Forward Send OnComMouseDown llButton llShift llX llY
End_Procedure

METHOD OCX_MouseDown(Button,Shift,X,Y) CLASS MainDialog
RETURN NIL

void onEvent_MouseDown(int _Button,int _Shift,int _X,int _Y)
{
}

function MouseDown as v (Button as N,Shift as N,X as OLE::Exontrol.SwimLane.1::OLE_XPOS_PIXELS,Y as OLE::Exontrol.SwimLane.1::OLE_YPOS_PIXELS)
end function

function nativeObject_MouseDown(Button,Shift,X,Y)
return


event MouseMove

event MouseMove (Button as Integer, Shift as Integer, X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS)
Occurs when the user moves the mouse.

Type | Description
Button as Integer | An integer that corresponds to the state of the mouse buttons in which a bit is set if the button is down.
Shift as Integer | An integer that corresponds to the state of the SHIFT, CTRL, and ALT keys.
X as OLE_XPOS_PIXELS | A single that specifies the current X location of the mouse pointer. The x values is always expressed in container coordinates
Y as OLE_YPOS_PIXELS | A single that specifies the current Y location of the mouse pointer. The y values is always expressed in container coordinates
The MouseMove event is generated continually as the mouse pointer moves across objects. Unless another object has captured the mouse, an object recognizes a MouseMove event whenever the mouse position is within its borders. The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the cursor position. The HitTestFromPoint(-1,-1) property returns the element and the hit-test code from the cursor. The ShowHandCursorOn property specifies the parts of the element that shows the hand cursor when the mouse-pointer hovers the part. The HitTestFromPoint(-1,-1) property returns the element/hit-test code from the cursor. Use the LinkFromPoint property to get if there is any link at the specified position. The PoolFromPoint property gets the Pool object from the cursor. The HeaderLaneFromPoint property gets the HeaderLane object from the cursor. The LaneFromPoint property gets the Lane object from the cursor.

Syntax for MouseMove event, /NET version, on:

private void MouseMoveEvent(object sender,short Button,short Shift,int X,int Y)
{
}

Private Sub MouseMoveEvent(ByVal sender As System.Object,ByVal Button As Short,ByVal Shift As Short,ByVal X As Integer,ByVal Y As Integer) Handles MouseMoveEvent
End Sub

Syntax for MouseMove event, /COM version, on:

private void MouseMoveEvent(object sender, AxEXSWIMLANELib._ISwimLaneEvents_MouseMoveEvent e)
{
}

void OnMouseMove(short Button,short Shift,long X,long Y)
{
}

void __fastcall MouseMove(TObject *Sender,short Button,short Shift,int X,int Y)
{
}

procedure MouseMove(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
end;

procedure MouseMoveEvent(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_MouseMoveEvent);
begin
end;

begin event MouseMove(integer Button,integer Shift,long X,long Y)
end event MouseMove

Private Sub MouseMoveEvent(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_MouseMoveEvent) Handles MouseMoveEvent
End Sub

Private Sub MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)
End Sub

Private Sub MouseMove(ByVal Button As Integer,ByVal Shift As Integer,ByVal X As Long,ByVal Y As Long)
End Sub

LPARAMETERS Button,Shift,X,Y

PROCEDURE OnMouseMove(oSwimLane,Button,Shift,X,Y)
RETURN

Syntax for MouseMove event, /COM version (others), on:

<SCRIPT EVENT="MouseMove(Button,Shift,X,Y)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function MouseMove(Button,Shift,X,Y)
End Function
</SCRIPT>

Procedure OnComMouseMove Short llButton Short llShift OLE_XPOS_PIXELS llX OLE_YPOS_PIXELS llY
    Forward Send OnComMouseMove llButton llShift llX llY
End_Procedure

METHOD OCX_MouseMove(Button,Shift,X,Y) CLASS MainDialog
RETURN NIL

void onEvent_MouseMove(int _Button,int _Shift,int _X,int _Y)
{
}

function MouseMove as v (Button as N,Shift as N,X as OLE::Exontrol.SwimLane.1::OLE_XPOS_PIXELS,Y as OLE::Exontrol.SwimLane.1::OLE_YPOS_PIXELS)
end function

function nativeObject_MouseMove(Button,Shift,X,Y)
return

The following VB sample determines if the cursor hovers the element's expand/collapse glyphs:

Private Sub SwimLane1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim h As HitTest
    Set h = SwimLane1.HitTestFromPoint(-1, -1)
    If Not h Is Nothing Then
        If (h.HitTestCode And exHitTestMask) = exHitTestGlyph Then
            Debug.Print "Expand/Collase Glyph of " & h.Element.ID
        End If
    End If
End Sub


event MouseUp

event MouseUp (Button as Integer, Shift as Integer, X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS)
Occurs when the user releases a mouse button.

Type | Description
Button as Integer | An integer that identifies the button that was pressed to cause the event
Shift as Integer | An integer that corresponds to the state of the SHIFT, CTRL, and ALT keys when the button specified in the button argument is pressed or released.
X as OLE_XPOS_PIXELS | A single that specifies the current X location of the mouse pointer. The x values is always expressed in container coordinates.
Y as OLE_YPOS_PIXELS | A single that specifies the current Y location of the mouse pointer. The y values is always expressed in container coordinates.
Use a MouseDown or MouseUp event procedure to specify actions that will occur when a mouse button is pressed or released. Unlike the Click and DblClick events, MouseDown and MouseUp events lets you distinguish between the left, right, and middle mouse buttons. You can also write code for mouse-keyboard combinations that use the SHIFT, CTRL, and ALT keyboard modifiers. The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the cursor position. The HitTestFromPoint(-1,-1) property returns the element and the hit-test code from the cursor. The HandCursorClick event notifies once the user clicks a part of the element ( which shows a hand cursor when the pointer hovers it ).

Syntax for MouseUp event, /NET version, on:

private void MouseUpEvent(object sender,short Button,short Shift,int X,int Y)
{
}

Private Sub MouseUpEvent(ByVal sender As System.Object,ByVal Button As Short,ByVal Shift As Short,ByVal X As Integer,ByVal Y As Integer) Handles MouseUpEvent
End Sub

Syntax for MouseUp event, /COM version, on:

private void MouseUpEvent(object sender, AxEXSWIMLANELib._ISwimLaneEvents_MouseUpEvent e)
{
}

void OnMouseUp(short Button,short Shift,long X,long Y)
{
}

void __fastcall MouseUp(TObject *Sender,short Button,short Shift,int X,int Y)
{
}

procedure MouseUp(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
end;

procedure MouseUpEvent(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_MouseUpEvent);
begin
end;

begin event MouseUp(integer Button,integer Shift,long X,long Y)
end event MouseUp

Private Sub MouseUpEvent(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_MouseUpEvent) Handles MouseUpEvent
End Sub

Private Sub MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single)
End Sub

Private Sub MouseUp(ByVal Button As Integer,ByVal Shift As Integer,ByVal X As Long,ByVal Y As Long)
End Sub

LPARAMETERS Button,Shift,X,Y

PROCEDURE OnMouseUp(oSwimLane,Button,Shift,X,Y)
RETURN

Syntax for MouseUp event, /COM version (others), on:

<SCRIPT EVENT="MouseUp(Button,Shift,X,Y)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function MouseUp(Button,Shift,X,Y)
End Function
</SCRIPT>

Procedure OnComMouseUp Short llButton Short llShift OLE_XPOS_PIXELS llX OLE_YPOS_PIXELS llY
    Forward Send OnComMouseUp llButton llShift llX llY
End_Procedure

METHOD OCX_MouseUp(Button,Shift,X,Y) CLASS MainDialog
RETURN NIL

void onEvent_MouseUp(int _Button,int _Shift,int _X,int _Y)
{
}

function MouseUp as v (Button as N,Shift as N,X as OLE::Exontrol.SwimLane.1::OLE_XPOS_PIXELS,Y as OLE::Exontrol.SwimLane.1::OLE_YPOS_PIXELS)
end function

function nativeObject_MouseUp(Button,Shift,X,Y)
return


event OLECompleteDrag

event OLECompleteDrag (Effect as Long)
Occurs when a source component is dropped onto a target component, informing the source component that a drag action was either performed or canceled

Type | Description
Effect as Long | A long set by the source object identifying the action that has been performed, thus allowing the source to take appropriate action if the component was moved (such as the source deleting data if it is moved from one component to another.
The OLECompleteDrag event is the final event to be called in an OLE drag/drop operation. This event informs the source component of the action that was performed when the object was dropped onto the target component. The target sets this value through the effect parameter of the OLEDragDrop event. Based on this, the source can then determine the appropriate action it needs to take. For example, if the object was moved into the target (exDropEffectMove), the source needs to delete the object from itself after the move. The control supports only manual OLE drag and drop events. In order to enable OLE drag and drop feature into control you have to set the OLEDropMode and OLEDrag properties.

The settings for Effect are:

  • exOLEDropEffectNone (0), Drop target cannot accept the data, or the drop operation was cancelled
  • exOLEDropEffectCopy (1), Drop results in a copy of data from the source to the target. The original data is unaltered by the drag operation.
  • exOLEDropEffectMove (2), Drop results in data being moved from drag source to drop source. The drag source should remove the data from itself after the move.

Syntax for OLECompleteDrag event, /NET version, on:

// OLECompleteDrag event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

// OLECompleteDrag event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

Syntax for OLECompleteDrag event, /COM version, on:

private void OLECompleteDrag(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OLECompleteDragEvent e)
{
}

void OnOLECompleteDrag(long Effect)
{
}

void __fastcall OLECompleteDrag(TObject *Sender,long Effect)
{
}

procedure OLECompleteDrag(ASender: TObject; Effect : Integer);
begin
end;

procedure OLECompleteDrag(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_OLECompleteDragEvent);
begin
end;

begin event OLECompleteDrag(long Effect)
end event OLECompleteDrag

Private Sub OLECompleteDrag(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OLECompleteDragEvent) Handles OLECompleteDrag
End Sub

Private Sub OLECompleteDrag(ByVal Effect As Long)
End Sub

Private Sub OLECompleteDrag(ByVal Effect As Long)
End Sub

LPARAMETERS Effect

PROCEDURE OnOLECompleteDrag(oSwimLane,Effect)
RETURN

Syntax for OLECompleteDrag event, /COM version (others), on:

<SCRIPT EVENT="OLECompleteDrag(Effect)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function OLECompleteDrag(Effect)
End Function
</SCRIPT>

Procedure OnComOLECompleteDrag Integer llEffect
    Forward Send OnComOLECompleteDrag llEffect
End_Procedure

METHOD OCX_OLECompleteDrag(Effect) CLASS MainDialog
RETURN NIL

// OLECompleteDrag event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

function OLECompleteDrag as v (Effect as N)
end function

function nativeObject_OLECompleteDrag(Effect)
return


event OLEDragDrop

event OLEDragDrop (Data as ExDataObject, Effect as Long, Button as Integer, Shift as Integer, X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS)
Occurs when a source component is dropped onto a target component when the source component determines that a drop can occur.

Type | Description
Data as ExDataObject | An ExDataObject object containing formats that the source will provide and, in addition, possibly the data for those formats. If no data is contained in the ExDataObject, it is provided when the control calls the GetData method. The SetData and Clear methods cannot be used here.
Effect as Long | A Long set by the target component identifying the action that has been performed (if any), thus allowing the source to take appropriate action if the component was moved (such as the source deleting the data). The possible values are listed in bellow.
Button as Integer | An integer which acts as a bit field corresponding to the state of a mouse button when it is depressed. The left button is bit 0, the right button is bit 1, and the middle button is bit 2. These bits correspond to the values 1, 2, and 4, respectively. It indicates the state of the mouse buttons; some, all, or none of these three bits can be set, indicating that some, all, or none of the buttons are depressed
Shift as Integer | An integer which acts as a bit field corresponding to the state of the SHIFT, CTRL, and ALT keys when they are depressed. The SHIFT key is bit 0, the CTRL key is bit 1, and the ALT key is bit 2. These bits correspond to the values 1, 2, and 4, respectively. The shift parameter indicates the state of these keys; some, all, or none of the bits can be set, indicating that some, all, or none of the keys are depressed. For example, if both the CTRL and ALT keys were depressed, the value of shift would be 6.
X as OLE_XPOS_PIXELS | A single that specifies the current X location of the mouse pointer. The X value is always expressed in container coordinates
Y as OLE_YPOS_PIXELS | A single that specifies the current Y location of the mouse pointer. The Y value is always expressed in container coordinates.
In the /NET Assembly, you have to use the DragDrop event as explained here:
  • https://www.exontrol.com/sg.jsp?content=support/faq/net/#dragdrop

The OLEDragDrop event is fired when the user has dropped files or clipboard information into the control. Use the OLEDropMode property on exOLEDropManual to enable OLE drop and drop support.

The settings for Effect are:

  • exOLEDropEffectNone (0), Drop target cannot accept the data, or the drop operation was cancelled
  • exOLEDropEffectCopy (1), Drop results in a copy of data from the source to the target. The original data is unaltered by the drag operation.
  • exOLEDropEffectMove (2), Drop results in data being moved from drag source to drop source. The drag source should remove the data from itself after the move.

Syntax for OLEDragDrop event, /NET version, on:

// OLEDragDrop event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

// OLEDragDrop event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

Syntax for OLEDragDrop event, /COM version, on:

private void OLEDragDrop(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OLEDragDropEvent e)
{
}

void OnOLEDragDrop(LPDISPATCH Data,long FAR* Effect,short Button,short Shift,long X,long Y)
{
}

void __fastcall OLEDragDrop(TObject *Sender,Exswimlanelib_tlb::IExDataObject *Data,long * Effect,short Button,short Shift,int X,int Y)
{
}

procedure OLEDragDrop(ASender: TObject; Data : IExDataObject;var Effect : Integer;Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
end;

procedure OLEDragDrop(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_OLEDragDropEvent);
begin
end;

begin event OLEDragDrop(oleobject Data,long Effect,integer Button,integer Shift,long X,long Y)
end event OLEDragDrop

Private Sub OLEDragDrop(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OLEDragDropEvent) Handles OLEDragDrop
End Sub

Private Sub OLEDragDrop(ByVal Data As EXSWIMLANELibCtl.IExDataObject,Effect As Long,ByVal Button As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single)
End Sub

Private Sub OLEDragDrop(ByVal Data As Object,Effect As Long,ByVal Button As Integer,ByVal Shift As Integer,ByVal X As Long,ByVal Y As Long)
End Sub

LPARAMETERS Data,Effect,Button,Shift,X,Y

PROCEDURE OnOLEDragDrop(oSwimLane,Data,Effect,Button,Shift,X,Y)
RETURN

Syntax for OLEDragDrop event, /COM version (others), on:

<SCRIPT EVENT="OLEDragDrop(Data,Effect,Button,Shift,X,Y)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function OLEDragDrop(Data,Effect,Button,Shift,X,Y)
End Function
</SCRIPT>

Procedure OnComOLEDragDrop Variant llData Integer llEffect Short llButton Short llShift OLE_XPOS_PIXELS llX OLE_YPOS_PIXELS llY
    Forward Send OnComOLEDragDrop llData llEffect llButton llShift llX llY
End_Procedure

METHOD OCX_OLEDragDrop(Data,Effect,Button,Shift,X,Y) CLASS MainDialog
RETURN NIL

// OLEDragDrop event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

function OLEDragDrop as v (Data as OLE::Exontrol.SwimLane.1::IExDataObject,Effect as N,Button as N,Shift as N,X as OLE::Exontrol.SwimLane.1::OLE_XPOS_PIXELS,Y as OLE::Exontrol.SwimLane.1::OLE_YPOS_PIXELS)
end function

function nativeObject_OLEDragDrop(Data,Effect,Button,Shift,X,Y)
return

The following VB sample adds a new item when the user drags a file ( Open the Windows Explorer, click and drag a file to the control ) :

Private Sub SwimLane1_OLEDragDrop(Index As Integer, ByVal Data As EXSWIMLANELibCtl.IExDataObject, Effect As Long, ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Data.GetFormat(exCFFiles) Then
        Data.GetData (exCFFiles)
        Dim strFile As String
        strFile = Data.Files(0)
        'Adds a new item to the control
        SwimLane1(Index).Visible = False
        With SwimLane1(Index)
        .BeginUpdate
            Dim i As HITEM
            i = .Items.AddItem(strFile)
            .Items.EnsureVisibleItem i
        .EndUpdate
        End With
        SwimLane1(Index).Visible = True
    End If
End Sub

The following VC sample inserts a child item for each file that user drags:

#import <exswimlane.dll> rename( "GetItems", "exGetItems" )

#include "Items.h"
void OnOLEDragDropSwimLane1(LPDISPATCH Data, long FAR* Effect, short Button, short Shift, long X, long Y)
{
    EXSWIMLANELib::IExDataObjectPtr spData( Data );
    if ( spData != NULL )
        if ( spData->GetFormat( EXSWIMLANELib::exCFFiles ) )
        {
            CItems items = m_swimlane.GetItems();
            // Gets the handle of the item where the files will be inserted
            long c = 0, h = 0, nParentItem = m_swimlane.GetItemFromPoint( X, Y, &c, &h );
            if ( nParentItem == 0 )
                if ( c != 0 )
                    nParentItem = items.GetCellItem( c );
            EXSWIMLANELib::IExDataObjectFilesPtr spFiles( spData->Files );
            if ( spFiles->Count > 0 )
            {
                m_swimlane.BeginUpdate();
                COleVariant vtMissing; vtMissing.vt = VT_ERROR;
                for ( long i = 0; i < spFiles->Count; i++ )
                    items.InsertItem( nParentItem, vtMissing, COleVariant( spFiles->GetItem( i ).operator const char *() ) );
                if ( nParentItem )
                    items.SetExpandItem( nParentItem, TRUE );
                m_swimlane.EndUpdate();
            }

        }
}

The #import statement imports definition for the ExDataObject and ExDataObjectFiles objects. If the exswimlane.dll file is located in another folder than the system folder, the path to the file must be specified. The sample gets the item where the files were dragged and insert all files in that position, as child items, if case.

The following VB.NET sample inserts a child item for each file that user drags:

Private Sub AxSwimLane1_OLEDragDrop(ByVal sender As Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OLEDragDropEvent) Handles AxSwimLane1.OLEDragDrop
    If e.data.GetFormat(EXSWIMLANELib.exClipboardFormatEnum.exCFFiles) Then
        If (e.data.Files.Count > 0) Then
            AxSwimLane1.BeginUpdate()
            With AxSwimLane1.Items
                Dim iParent As Integer, c As Integer, hit As EXSWIMLANELib.HitTestInfoEnum
                iParent = AxSwimLane1.get_ItemFromPoint(e.x, e.y, c, hit)
                If iParent = 0 Then
                    If Not c = 0 Then
                        iParent = .CellItem(c)
                    End If
                End If
                Dim i As Long
                For i = 0 To e.data.Files.Count - 1
                    .InsertItem(iParent, , e.data.Files(i))
                Next
                If Not (iParent = 0) Then
                    .ExpandItem(iParent) = True
                End If
            End With
            AxSwimLane1.EndUpdate()
        End If
    End If
End Sub

The following C# sample inserts a child item for each file that user drags:

private void axSwimLane1_OLEDragDrop(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OLEDragDropEvent e)
{
    if ( e.data.GetFormat( Convert.ToInt16(EXSWIMLANELib.exClipboardFormatEnum.exCFFiles) ) )
        if ( e.data.Files.Count > 0 )
        {
            EXSWIMLANELib.HitTestInfoEnum hit;
            int c = 0, iParent = axSwimLane1.get_ItemFromPoint( e.x, e.y, out c, out hit );
            if ( iParent == 0 )
                if ( c != 0 )
                    iParent = axSwimLane1.Items.get_CellItem( c );

            axSwimLane1.BeginUpdate();
            for ( int i = 0; i < e.data.Files.Count; i++ )
                axSwimLane1.Items.InsertItem( iParent,"", e.data.Files[i].ToString() );
            if ( iParent != 0 )
                axSwimLane1.Items.set_ExpandItem( iParent, true );
            axSwimLane1.EndUpdate();
        }
}

The following VFP sample inserts a child item for each file that user drags:

*** ActiveX Control Event ***
LPARAMETERS data, effect, button, shift, x, y

local c, hit, iParent
c = 0
hit = 0
if ( data.GetFormat( 15 ) ) && exCFFiles
    if ( data.Files.Count() > 0 )
        with thisform.SwimLane1.Items
            iParent = thisform.SwimLane1.ItemFromPoint( x, y, @c, @hit )

            thisform.SwimLane1.BeginUpdate()
            for i = 0 to data.files.Count() - 1
                .InsertItem( iParent, "", data.files(i) )
            next
            if ( iParent != 0 )
                .DefaultItem = iParent
                .ExpandItem( 0 ) = .t.
            endif
            thisform.SwimLane1.EndUpdate()
        endwith
    endif
endif


event OLEDragOver

event OLEDragOver (Data as ExDataObject, Effect as Long, Button as Integer, Shift as Integer, X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS, State as Integer)
Occurs when one component is dragged over another.

Type | Description
Data as ExDataObject | An ExDataObject object containing formats that the source will provide and, in addition, possibly the data for those formats. If no data is contained in the ExDataObject, it is provided when the control calls the GetData method. The SetData and Clear methods cannot be used here
Effect as Long | A Long set by the target component identifying the action that has been performed (if any), thus allowing the source to take appropriate action if the component was moved (such as the source deleting the data). The possible values are listed bellow.
Button as Integer | An integer which acts as a bit field corresponding to the state of a mouse button when it is depressed. The left button is bit 0, the right button is bit 1, and the middle button is bit 2. These bits correspond to the values 1, 2, and 4, respectively. It indicates the state of the mouse buttons; some, all, or none of these three bits can be set, indicating that some, all, or none of the buttons are depressed.
Shift as Integer | These bits correspond to the values 1, 2, and 4, respectively. The shift parameter indicates the state of these keys; some, all, or none of the bits can be set, indicating that some, all, or none of the keys are depressed. For example, if both the CTRL and ALT keys were depressed, the value of shift would be 6.
X as OLE_XPOS_PIXELS | A single that specifies the current X location of the mouse pointer. The X value is always expressed in container coordinates
Y as OLE_YPOS_PIXELS | A single that specifies the current Y location of the mouse pointer. The Y value is always expressed in container coordinates.
State as Integer | An integer that corresponds to the transition state of the control being dragged in relation to a target form or control. The possible values are listed bellow.
The settings for effect are:
  • exOLEDropEffectNone (0), Drop target cannot accept the data, or the drop operation was cancelled
  • exOLEDropEffectCopy (1), Drop results in a copy of data from the source to the target. The original data is unaltered by the drag operation.
  • exOLEDropEffectMove (2), Drop results in data being moved from drag source to drop source. The drag source should remove the data from itself after the move.

The settings for state are:

  • exOLEDragEnter (0), Source component is being dragged within the range of a target.
  • exOLEDragLeave (1), Source component is being dragged out of the range of a target.
  • exOLEOLEDragOver (2), Source component has moved from one position in the target to another.

Note If the state parameter is 1, indicating that the mouse pointer has left the target, then the x and y parameters will contain zeros.
The source component should always mask values from the effect parameter to ensure compatibility with future implementations of ActiveX components. As a precaution against future problems, drag sources and drop targets should mask these values appropriately before performing any comparisons.
For example, a source component should not compare an effect against, say, exOLEDropEffectCopy, such as in this manner:

If Effect = exOLEDropEffectCopy...
Instead, the source component should mask for the value or values being sought, such as this:
If Effect And exOLEDropEffectCopy = exOLEDropEffectCopy...
-or-
If (Effect And exOLEDropEffectCopy)...
This allows for the definition of new drop effects in future versions while preserving backwards compatibility with your existing code.
The control supports only manual OLE drag and drop events.

Syntax for OLEDragOver event, /NET version, on:

// OLEDragOver event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

// OLEDragOver event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

Syntax for OLEDragOver event, /COM version, on:

private void OLEDragOver(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OLEDragOverEvent e)
{
}

void OnOLEDragOver(LPDISPATCH Data,long FAR* Effect,short Button,short Shift,long X,long Y,short State)
{
}

void __fastcall OLEDragOver(TObject *Sender,Exswimlanelib_tlb::IExDataObject *Data,long * Effect,short Button,short Shift,int X,int Y,short State)
{
}

procedure OLEDragOver(ASender: TObject; Data : IExDataObject;var Effect : Integer;Button : Smallint;Shift : Smallint;X : Integer;Y : Integer;State : Smallint);
begin
end;

procedure OLEDragOver(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_OLEDragOverEvent);
begin
end;

begin event OLEDragOver(oleobject Data,long Effect,integer Button,integer Shift,long X,long Y,integer State)
end event OLEDragOver

Private Sub OLEDragOver(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OLEDragOverEvent) Handles OLEDragOver
End Sub

Private Sub OLEDragOver(ByVal Data As EXSWIMLANELibCtl.IExDataObject,Effect As Long,ByVal Button As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single,ByVal State As Integer)
End Sub

Private Sub OLEDragOver(ByVal Data As Object,Effect As Long,ByVal Button As Integer,ByVal Shift As Integer,ByVal X As Long,ByVal Y As Long,ByVal State As Integer)
End Sub

LPARAMETERS Data,Effect,Button,Shift,X,Y,State

PROCEDURE OnOLEDragOver(oSwimLane,Data,Effect,Button,Shift,X,Y,State)
RETURN

Syntax for OLEDragOver event, /COM version (others), on:

<SCRIPT EVENT="OLEDragOver(Data,Effect,Button,Shift,X,Y,State)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function OLEDragOver(Data,Effect,Button,Shift,X,Y,State)
End Function
</SCRIPT>

Procedure OnComOLEDragOver Variant llData Integer llEffect Short llButton Short llShift OLE_XPOS_PIXELS llX OLE_YPOS_PIXELS llY Short llState
    Forward Send OnComOLEDragOver llData llEffect llButton llShift llX llY llState
End_Procedure

METHOD OCX_OLEDragOver(Data,Effect,Button,Shift,X,Y,State) CLASS MainDialog
RETURN NIL

// OLEDragOver event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

function OLEDragOver as v (Data as OLE::Exontrol.SwimLane.1::IExDataObject,Effect as N,Button as N,Shift as N,X as OLE::Exontrol.SwimLane.1::OLE_XPOS_PIXELS,Y as OLE::Exontrol.SwimLane.1::OLE_YPOS_PIXELS,State as N)
end function

function nativeObject_OLEDragOver(Data,Effect,Button,Shift,X,Y,State)
return


event OleEvent

event OleEvent (Element as Element, Ev as OleEvent)
Occurs once an inside control fires an event.

Type | Description
Element as Element | An Element object that hosts the ActiveX control.
Ev as OleEvent | A OleEvent object that contains information about the event.
The ExSwimLane component supports ActiveX hosting. The Type property on exElementHostControl, specifies that the element hosts an inside control. The Control property specifies the program identifier of the control to be hosted. In case you are inserting a runtime-licensed control you must specify the License property, prior calling the Control property. The Object property specifies the object being hosted ( a reference to the inside ActiveX control ). The OleEvent event occurs once an inner control fires an event. Use the ToString property of the OleEvent object to display general information about the fired event.

The following screen shot shows the Exontrol.Grid on the surface:

Syntax for OleEvent event, /NET version, on:

private void OleEvent(object sender,exontrol.EXSWIMLANELib.Element Element,exontrol.EXSWIMLANELib.OleEvent Ev)
{
}

Private Sub OleEvent(ByVal sender As System.Object,ByVal Element As exontrol.EXSWIMLANELib.Element,ByVal Ev As exontrol.EXSWIMLANELib.OleEvent) Handles OleEvent
End Sub

Syntax for OleEvent event, /COM version, on:

private void OleEvent(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OleEventEvent e)
{
}

void OnOleEvent(LPDISPATCH Element,LPDISPATCH Ev)
{
}

void __fastcall OleEvent(TObject *Sender,Exswimlanelib_tlb::IElement *Element,Exswimlanelib_tlb::IOleEvent *Ev)
{
}

procedure OleEvent(ASender: TObject; Element : IElement;Ev : IOleEvent);
begin
end;

procedure OleEvent(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_OleEventEvent);
begin
end;

begin event OleEvent(oleobject Element,oleobject Ev)
end event OleEvent

Private Sub OleEvent(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OleEventEvent) Handles OleEvent
End Sub

Private Sub OleEvent(ByVal Element As EXSWIMLANELibCtl.IElement,ByVal Ev As EXSWIMLANELibCtl.IOleEvent)
End Sub

Private Sub OleEvent(ByVal Element As Object,ByVal Ev As Object)
End Sub

LPARAMETERS Element,Ev

PROCEDURE OnOleEvent(oSwimLane,Element,Ev)
RETURN

Syntax for OleEvent event, /COM version (others), on:

<SCRIPT EVENT="OleEvent(Element,Ev)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function OleEvent(Element,Ev)
End Function
</SCRIPT>

Procedure OnComOleEvent Variant llElement Variant llEv
    Forward Send OnComOleEvent llElement llEv
End_Procedure

METHOD OCX_OleEvent(Element,Ev) CLASS MainDialog
RETURN NIL

void onEvent_OleEvent(COM _Element,COM _Ev)
{
}

function OleEvent as v (Element as OLE::Exontrol.SwimLane.1::IElement,Ev as OLE::Exontrol.SwimLane.1::IOleEvent)
end function

function nativeObject_OleEvent(Element,Ev)
return

The following VB sample adds a command button:

With SwimLane1
    With .Elements
        With .Add("activex hosting")
            .Type = exElementHostControl
            .Control = "Forms.CommandButton.1"
        End With
    End With
End With

The following sample displays information about fired event:

Private Sub SwimLane1_OleEvent(ByVal Element As EXSWIMLANELibCtl.IElement, ByVal Ev As EXSWIMLANELibCtl.IOleEvent)
    Debug.Print Ev.ToString()
End Sub


event OLEGiveFeedback

event OLEGiveFeedback (Effect as Long, DefaultCursors as Boolean)
Allows the drag source to specify the type of OLE drag-and-drop operation and the visual feedback.

Type | Description
Effect as Long | A long integer set by the target component in the OLEDragOver event specifying the action to be performed if the user drops the selection on it. This allows the source to take the appropriate action (such as giving visual feedback). The possible values are listed bellow.
DefaultCursors as Boolean | Boolean value that determines whether to use the default mouse cursor, or to use a user-defined mouse cursor.True (default) = use default mouse cursor.False = do not use default cursor. Mouse cursor must be set with the MousePointer property of the Screen object
The settings for Effect are:
  • exOLEDropEffectNone (0), Drop target cannot accept the data, or the drop operation was cancelled
  • exOLEDropEffectCopy (1), Drop results in a copy of data from the source to the target. The original data is unaltered by the drag operation.
  • exOLEDropEffectMove (2), Drop results in data being moved from drag source to drop source. The drag source should remove the data from itself after the move.

If there is no code in the OLEGiveFeedback event, or if the defaultcursors parameter is set to True, the mouse cursor will be set to the default cursor provided by the control. The source component should always mask values from the effect parameter to ensure compatibility with future implementations of ActiveX components. As a precaution against future problems, drag sources and drop targets should mask these values appropriately before performing any comparisons.

For example, a source component should not compare an effect against, say, exOLEDropEffectCopy, such as in this manner:
If Effect = exOLEDropEffectCopy...
Instead, the source component should mask for the value or values being sought, such as this:
If Effect And exOLEDropEffectCopy = exOLEDropEffectCopy...
-or-
If (Effect And exOLEDropEffectCopy)...
This allows for the definition of new drop effects in future versions while preserving backwards compatibility with your existing code.
The control supports only manual OLE drag and drop events.

Syntax for OLEGiveFeedback event, /NET version, on:

// OLEGiveFeedback event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

// OLEGiveFeedback event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

Syntax for OLEGiveFeedback event, /COM version, on:

private void OLEGiveFeedback(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OLEGiveFeedbackEvent e)
{
}

void OnOLEGiveFeedback(long Effect,BOOL FAR* DefaultCursors)
{
}

void __fastcall OLEGiveFeedback(TObject *Sender,long Effect,VARIANT_BOOL * DefaultCursors)
{
}

procedure OLEGiveFeedback(ASender: TObject; Effect : Integer;var DefaultCursors : WordBool);
begin
end;

procedure OLEGiveFeedback(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_OLEGiveFeedbackEvent);
begin
end;

begin event OLEGiveFeedback(long Effect,boolean DefaultCursors)
end event OLEGiveFeedback

Private Sub OLEGiveFeedback(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OLEGiveFeedbackEvent) Handles OLEGiveFeedback
End Sub

Private Sub OLEGiveFeedback(ByVal Effect As Long,DefaultCursors As Boolean)
End Sub

Private Sub OLEGiveFeedback(ByVal Effect As Long,DefaultCursors As Boolean)
End Sub

LPARAMETERS Effect,DefaultCursors

PROCEDURE OnOLEGiveFeedback(oSwimLane,Effect,DefaultCursors)
RETURN

Syntax for OLEGiveFeedback event, /COM version (others), on:

<SCRIPT EVENT="OLEGiveFeedback(Effect,DefaultCursors)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function OLEGiveFeedback(Effect,DefaultCursors)
End Function
</SCRIPT>

Procedure OnComOLEGiveFeedback Integer llEffect Boolean llDefaultCursors
    Forward Send OnComOLEGiveFeedback llEffect llDefaultCursors
End_Procedure

METHOD OCX_OLEGiveFeedback(Effect,DefaultCursors) CLASS MainDialog
RETURN NIL

// OLEGiveFeedback event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

function OLEGiveFeedback as v (Effect as N,DefaultCursors as L)
end function

function nativeObject_OLEGiveFeedback(Effect,DefaultCursors)
return


event OLESetData

event OLESetData (Data as ExDataObject, Format as Integer)
Occurs on a drag source when a drop target calls the GetData method and there is no data in a specified format in the OLE drag-and-drop DataObject.

Type | Description
Data as ExDataObject | An ExDataObject object in which to place the requested data. The component calls the SetData method to load the requested format.
Format as Integer | An integer specifying the format of the data that the target component is requesting. The source component uses this value to determine what to load into the ExDataObject object.

The OLESetData is not implemented

Syntax for OLESetData event, /NET version, on:

// OLESetData event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

// OLESetData event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

Syntax for OLESetData event, /COM version, on:

private void OLESetData(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OLESetDataEvent e)
{
}

void OnOLESetData(LPDISPATCH Data,short Format)
{
}

void __fastcall OLESetData(TObject *Sender,Exswimlanelib_tlb::IExDataObject *Data,short Format)
{
}

procedure OLESetData(ASender: TObject; Data : IExDataObject;Format : Smallint);
begin
end;

procedure OLESetData(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_OLESetDataEvent);
begin
end;

begin event OLESetData(oleobject Data,integer Format)
end event OLESetData

Private Sub OLESetData(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OLESetDataEvent) Handles OLESetData
End Sub

Private Sub OLESetData(ByVal Data As EXSWIMLANELibCtl.IExDataObject,ByVal Format As Integer)
End Sub

Private Sub OLESetData(ByVal Data As Object,ByVal Format As Integer)
End Sub

LPARAMETERS Data,Format

PROCEDURE OnOLESetData(oSwimLane,Data,Format)
RETURN

Syntax for OLESetData event, /COM version (others), on:

<SCRIPT EVENT="OLESetData(Data,Format)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function OLESetData(Data,Format)
End Function
</SCRIPT>

Procedure OnComOLESetData Variant llData Short llFormat
    Forward Send OnComOLESetData llData llFormat
End_Procedure

METHOD OCX_OLESetData(Data,Format) CLASS MainDialog
RETURN NIL

// OLESetData event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

function OLESetData as v (Data as OLE::Exontrol.SwimLane.1::IExDataObject,Format as N)
end function

function nativeObject_OLESetData(Data,Format)
return


event OLEStartDrag

event OLEStartDrag (Data as ExDataObject, AllowedEffects as Long)
Occurs when the OLEDrag method is called.

Type | Description
Data as ExDataObject | An ExDataObject object containing formats that the source will provide and, optionally, the data for those formats. If no data is contained in the ExDataObject, it is provided when the control calls the GetData method. The programmer should provide the values for this parameter in this event. The SetData and Clear methods cannot be used here.
AllowedEffects as Long | A long containing the effects that the source component supports. The possible values are listed in Settings. The programmer should provide the values for this parameter in this event
In the /NET Assembly, you have to use the DragEnter event as explained here:
  • https://www.exontrol.com/sg.jsp?content=support/faq/net/#dragdrop
The settings for AllowEffects are:
  • exOLEDropEffectNone (0), Drop target cannot accept the data, or the drop operation was cancelled
  • exOLEDropEffectCopy (1), Drop results in a copy of data from the source to the target. The original data is unaltered by the drag operation.
  • exOLEDropEffectMove (2), Drop results in data being moved from drag source to drop source. The drag source should remove the data from itself after the move.

The source component should logically Or together the supported values and places the result in the AllowedEffects parameter. The target component can use this value to determine the appropriate action (and what the appropriate user feedback should be). You may wish to defer putting data into the ExDataObject object until the target component requests it. This allows the source component to save time. If the user does not load any formats into the ExDataObject, then the drag/drop operation is canceled. Use exCFFiles and Files property to add files to the drag and drop data object.

The idea of drag and drop in exSwimLane control is the same as in other controls. To start accepting drag and drop sources the exSwimLane control should have the OLEDropMode to exOLEDropManual. Once that is is set, the exSwimLane starts accepting any drag and drop sources.

The first step is if you want to be able to drag items from your exSwimLane control to other controls the idea is to handle the OLE_StartDrag event. The event passes an object ExDataObject (Data) as argument. The Data and AllowedEffects can be changed only in the OLEStartDrag event. The OLE_StartDrag event is fired when user is about to drag items from the control. The AllowedEffect parameter and SetData property must be set to continue drag and drop operation, as in the following samples:

Syntax for OLEStartDrag event, /NET version, on:

// OLEStartDrag event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

// OLEStartDrag event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

Syntax for OLEStartDrag event, /COM version, on:

private void OLEStartDrag(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OLEStartDragEvent e)
{
}

void OnOLEStartDrag(LPDISPATCH Data,long FAR* AllowedEffects)
{
}

void __fastcall OLEStartDrag(TObject *Sender,Exswimlanelib_tlb::IExDataObject *Data,long * AllowedEffects)
{
}

procedure OLEStartDrag(ASender: TObject; Data : IExDataObject;var AllowedEffects : Integer);
begin
end;

procedure OLEStartDrag(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_OLEStartDragEvent);
begin
end;

begin event OLEStartDrag(oleobject Data,long AllowedEffects)
end event OLEStartDrag

Private Sub OLEStartDrag(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OLEStartDragEvent) Handles OLEStartDrag
End Sub

Private Sub OLEStartDrag(ByVal Data As EXSWIMLANELibCtl.IExDataObject,AllowedEffects As Long)
End Sub

Private Sub OLEStartDrag(ByVal Data As Object,AllowedEffects As Long)
End Sub

LPARAMETERS Data,AllowedEffects

PROCEDURE OnOLEStartDrag(oSwimLane,Data,AllowedEffects)
RETURN

Syntax for OLEStartDrag event, /COM version (others), on:

<SCRIPT EVENT="OLEStartDrag(Data,AllowedEffects)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function OLEStartDrag(Data,AllowedEffects)
End Function
</SCRIPT>

Procedure OnComOLEStartDrag Variant llData Integer llAllowedEffects
    Forward Send OnComOLEStartDrag llData llAllowedEffects
End_Procedure

METHOD OCX_OLEStartDrag(Data,AllowedEffects) CLASS MainDialog
RETURN NIL

// OLEStartDrag event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

function OLEStartDrag as v (Data as OLE::Exontrol.SwimLane.1::IExDataObject,AllowedEffects as N)
end function

function nativeObject_OLEStartDrag(Data,AllowedEffects)
return

The following VB sample drags data from a control to another, by registering a new clipboard format:

Private Sub SwimLane1_OLEStartDrag(Index As Integer, ByVal Data As EXSWIMLANELibCtl.IExDataObject, AllowedEffects As Long)

    ' We are going to add two clipboard formats: text and "EXSWIMLANE" clipboard format.
    ' We need to use RegisterClipboardFormat API function in order to register our
    ' clipboard format. One cliboard format is enough, but the sample shows
    ' how to filter in OLEDragDrop event the other clipboard formats

    ' Builds a string that contains each cell's caption on a new line
    Dim n As Long
    Dim s As String
    With SwimLane1(Index)
        s = Index & vbCrLf ' Saves the source
        For n = 0 To .Columns.Count - 1
            s = s & .Items.CellCaption(.Items.SelectedItem(0), n) & vbCrLf
        Next
    End With

    AllowedEffects = 0
    ' Checks whether the selected item has a parent
    If (SwimLane1(Index).Items.ItemParent(SwimLane1(Index).Items.SelectedItem(0)) <> 0) Then
        AllowedEffects = 1
    End If
    ' Sets the text clipboard format
    Data.SetData s, exCFText

    ' Builds an array of bytes, and copy there all characters in the s string.
    ' Passes the array to the SetData method.
    ReDim v(Len(s)) As Byte
    For n = 0 To Len(s) - 1
        v(n) = Asc(Mid(s, n + 1, 1))
    Next
    Data.SetData v, RegisterClipboardFormat("EXSWIMLANE")

End Sub

The code fills data for two types of clipboard formats: text ( CF_TEXT ) and "EXSWIMLANE" registered clipboard format. The registered clipboard format must be an array of bytes. As you can see we have used the RegisterClipboardFormat API function, and it should be declared like:

Private Declare Function RegisterClipboardFormat Lib "user32" Alias "RegisterClipboardFormatA" (ByVal lpString As String) As Integer

The second step is accepting OLE drag and drop source objects. That means, if you would like to let your control accept drag and drop objects, you have to handle the OLEDragDrop event. It gets as argument an object Data that stores the drag and drop information. The next sample shows how handle the OLEDragDrop event:

Private Sub SwimLane1_OLEDragDrop(Index As Integer, ByVal Data As EXSWIMLANELibCtl.IExDataObject, Effect As Long, ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    ' Checks whether the clipboard format is our. Since we have registered the clipboard in the
    ' OLEStartData format we now its format, so we can handle this type of clip formats.
    If (Data.GetFormat(RegisterClipboardFormat("EXSWIMLANE"))) Then
        ' Builds the saved string from the array passed
        Dim s As String
        Dim v() As Byte
        Dim n As Integer
        v = Data.GetData(RegisterClipboardFormat("EXSWIMLANE"))
        For n = LBound(v) To UBound(v)
            s = s + Chr(v(n))
        Next
        Debug.Print s

        'Adds a new item to the control, and sets the cells captions like we saved, line by line
        SwimLane1(Index).Visible = False
        With SwimLane1(Index)
            .BeginUpdate
            Dim i As HITEM
            Dim item As String
            Dim nCur As Long
            i = .Items.AddItem()
            nCur = InStr(1, s, vbCrLf) + Len(vbCrLf) ' Jumps the source
            For n = 0 To .Columns.Count - 1
                Dim nnCur As Long
                nnCur = InStr(nCur, s, vbCrLf)
                .Items.CellCaption(i, n) = Mid(s, nCur, nnCur - nCur)
                nCur = nnCur + Len(vbCrLf)
            Next
            .Items.CellImage(i, "EmployeeID") = Int(.Items.CellCaption(i, "EmployeeID"))
            .Items.SetParent i, h(Index, Int(.Items.CellCaption(i, "EmployeeID")) - 1)
            .Items.EnsureVisibleItem i
            .EndUpdate
        End With
        SwimLane1(Index).Visible = True
    End If
End Sub

The following VC sample copies the selected items to the clipboard, as soon as the user starts dragging the items:

#import <exswimlane.dll> rename( "GetItems", "exGetItems" )

#include "Items.h"
#include "Columns.h"

static CString V2S( VARIANT* pv, LPCTSTR szDefault = _T("") )
{
    if ( pv )
    {
        if ( pv->vt == VT_ERROR )
            return szDefault;

        COleVariant vt;
        vt.ChangeType( VT_BSTR, pv );
        return V_BSTR( &vt );
    }
    return szDefault;
}

void OnOLEStartDragSwimLane1(LPDISPATCH Data, long FAR* AllowedEffects)
{
    CItems items = m_swimlane.GetItems();
    long nCount = items.GetSelectCount(), nColumnCount = m_swimlane.GetColumns().GetCount();
    if ( nCount > 0 )
    {
        *AllowedEffects = /*exOLEDropEffectCopy */ 1;
        EXSWIMLANELib::IExDataObjectPtr spData( Data );
        if ( spData !=NULL )
        {
            CString strData;
            for ( long i = 0; i < nCount; i++ )
            {
                COleVariant vtItem( items.GetSelectedItem( i ) );
                for ( long j = 0; j < nColumnCount; j++ )
                    strData += V2S( &items.GetCellCaption( vtItem, COleVariant( j ) ) ) + "\t";
            }
            strData += "\r\n";
            spData->SetData( COleVariant( strData ), COleVariant( (long)EXSWIMLANELib::exCFText) );
        }
    }
}

The sample saves data as CF_TEXT format ( EXSWIMLANELib::exCFText ). The data is a text, where each item is separated by "\r\n" ( new line ), and each cell is separated by "\t" ( TAB charcater ). Of course, data can be saved as you want. The sample only gives an idea of what and how it could be done. The sample uses the #import statement to import the control's type library, including definitions for ExDataObject and ExDataObjectFiles that are required to fill data to be dragged. If your exswimlane.dll file is located in another place than your system folder, the path to the exswimlane.dll file needs to be specified, else compiler errors occur.

The following VB.NET sample copies the selected items to the clipboard, as soon as the user starts dragging the items:

Private Sub AxSwimLane1_OLEStartDrag(ByVal sender As Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_OLEStartDragEvent) Handles AxSwimLane1.OLEStartDrag
    With AxSwimLane1.Items
        If (.SelectCount > 0) Then
            e.allowedEffects = 1 'exOLEDropEffectCopy
            Dim i As Integer, j As Integer, strData As String, nColumnCount As Long = AxSwimLane1.Columns.Count
            For i = 0 To .SelectCount - 1
                For j = 0 To nColumnCount - 1
                    strData = strData + .CellCaption(.SelectedItem(i), j) + Chr(Keys.Tab)
                Next
            Next
            strData = strData + vbCrLf
            e.data.SetData(strData, EXSWIMLANELib.exClipboardFormatEnum.exCFText)
        End If
    End With
End Sub

The following C# sample copies the selected items to the clipboard, as soon as the user starts dragging the items:

private void axSwimLane1_OLEStartDrag(object sender, AxEXSWIMLANELib._ISwimLaneEvents_OLEStartDragEvent e)
{
    int nCount = axSwimLane1.Items.SelectCount;
    if ( nCount > 0 )
    {
        int nColumnCount = axSwimLane1.Columns.Count;
        e.allowedEffects = /*exOLEDropEffectCopy*/ 1;
        string strData = "";
        for ( int i =0 ; i < nCount; i++ )
        {
            for ( int j = 0; j < nColumnCount; j++ )
            {
                object strCell = axSwimLane1.Items.get_CellCaption(axSwimLane1.Items.get_SelectedItem(i), j);
                strData +=  ( strCell != null ? strCell.ToString() : "" ) + "\t";
            }
            strData += "\r\n";
        }
        e.data.SetData( strData, EXSWIMLANELib.exClipboardFormatEnum.exCFText );
    }
}

The following VFP sample copies the selected items to the clipboard, as soon as the user starts dragging the items:

*** ActiveX Control Event ***
LPARAMETERS data, allowedeffects

local sData, nColumnCount, i, j
with thisform.SwimLane1.Items
    if ( .SelectCount() > 0 )
        allowedeffects = 1 && exOLEDropEffectCopy
        sData = ""
        nColumnCount = thisform.SwimLane1.Columns.Count
        for i = 0 to .SelectCount - 1
            for j = 0 to nColumnCount
                sData = sData + .CellCaption( .SelectedItem(i), j ) + chr(9)
            next
            sData = sData + chr(10)+ chr(13)
        next
        data.SetData( sData, 1 ) && exCFText
    endif
endwith


event RClick ()
Occurs once the user right clicks the control.

Type Description
The RClick event notifies when the user right clicks the control. The ElementFromPoint(-1,-1) property returns the element from the cursor or nothing if no element at the cursor position. The HitTestFromPoint property returns the element and the hit-test code from the cursor. You can use the Edit method to edit the element's caption or extra caption. The HandCursorClick event notifies once the user clicks a part of the element ( which shows a hand cursor when the pointer hovers it ).

Syntax for RClick event, /NET version, on:

private void RClick(object sender)
{
}

Private Sub RClick(ByVal sender As System.Object) Handles RClick
End Sub

Syntax for RClick event, /COM version, on:

private void RClick(object sender, EventArgs e)
{
}

void OnRClick()
{
}

void __fastcall RClick(TObject *Sender)
{
}

procedure RClick(ASender: TObject; );
begin
end;

procedure RClick(sender: System.Object; e: System.EventArgs);
begin
end;

begin event RClick()
end event RClick

Private Sub RClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RClick
End Sub

Private Sub RClick()
End Sub

Private Sub RClick()
End Sub

LPARAMETERS nop

PROCEDURE OnRClick(oSwimLane)
RETURN

Syntax for RClick event, /COM version (others), on:

<SCRIPT EVENT="RClick()" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function RClick()
End Function
</SCRIPT>

Procedure OnComRClick
    Forward Send OnComRClick
End_Procedure

METHOD OCX_RClick() CLASS MainDialog
RETURN NIL

void onEvent_RClick()
{
}

function RClick as v ()
end function

function nativeObject_RClick()
return


event RemoveElement

event RemoveElement (Element as Element)
An element has been removed from the surface.

Type | Description
Element as Element | An Element object that specifies the element being removed from the Elements collection.
The RemoveElement event occurs once the element has been removed from the Elements collection. Use the RemoveElement event to release any extra data associated with the element. Use the Remove method to remove a specific element from the Elements collection. Use the RemoveSelection method to remove the selected elements. Use the Clear method to remove all elements from the surface. Removing and element removes the incoming and outgoing links as well.

Syntax for RemoveElement event, /NET version, on:

private void RemoveElement(object sender,exontrol.EXSWIMLANELib.Element Element)
{
}

Private Sub RemoveElement(ByVal sender As System.Object,ByVal Element As exontrol.EXSWIMLANELib.Element) Handles RemoveElement
End Sub

Syntax for RemoveElement event, /COM version, on:

private void RemoveElement(object sender, AxEXSWIMLANELib._ISwimLaneEvents_RemoveElementEvent e)
{
}

void OnRemoveElement(LPDISPATCH Element)
{
}

void __fastcall RemoveElement(TObject *Sender,Exswimlanelib_tlb::IElement *Element)
{
}

procedure RemoveElement(ASender: TObject; Element : IElement);
begin
end;

procedure RemoveElement(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_RemoveElementEvent);
begin
end;

begin event RemoveElement(oleobject Element)
end event RemoveElement

Private Sub RemoveElement(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_RemoveElementEvent) Handles RemoveElement
End Sub

Private Sub RemoveElement(ByVal Element As EXSWIMLANELibCtl.IElement)
End Sub

Private Sub RemoveElement(ByVal Element As Object)
End Sub

LPARAMETERS Element

PROCEDURE OnRemoveElement(oSwimLane,Element)
RETURN

Syntax for RemoveElement event, /COM version (others), on:

<SCRIPT EVENT="RemoveElement(Element)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function RemoveElement(Element)
End Function
</SCRIPT>

Procedure OnComRemoveElement Variant llElement
    Forward Send OnComRemoveElement llElement
End_Procedure

METHOD OCX_RemoveElement(Element) CLASS MainDialog
RETURN NIL

void onEvent_RemoveElement(COM _Element)
{
}

function RemoveElement as v (Element as OLE::Exontrol.SwimLane.1::IElement)
end function

function nativeObject_RemoveElement(Element)
return


event RemoveLink

event RemoveLink (Link as Link)
The link is removed from the links collection.

Type | Description
Link as Link | A Link object that specifies the link to be removed.
The RemoveLink event notifies your application once a link has been removed from the Links collection. The Remove method removes a specific link from the Links collection. Use the Clear method to remove all links from the surface. The IncomingLinks property returns a safe array of incoming links ( links that ends on the element ). The OutgoingLinks property returns a safe array of outgoing links ( links that starts from the element ).

Syntax for RemoveLink event, /NET version, on:

private void RemoveLink(object sender,exontrol.EXSWIMLANELib.Link Link)
{
}

Private Sub RemoveLink(ByVal sender As System.Object,ByVal Link As exontrol.EXSWIMLANELib.Link) Handles RemoveLink
End Sub

Syntax for RemoveLink event, /COM version, on:

private void RemoveLink(object sender, AxEXSWIMLANELib._ISwimLaneEvents_RemoveLinkEvent e)
{
}

void OnRemoveLink(LPDISPATCH Link)
{
}

void __fastcall RemoveLink(TObject *Sender,Exswimlanelib_tlb::ILink *Link)
{
}

procedure RemoveLink(ASender: TObject; Link : ILink);
begin
end;

procedure RemoveLink(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_RemoveLinkEvent);
begin
end;

begin event RemoveLink(oleobject Link)
end event RemoveLink

Private Sub RemoveLink(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_RemoveLinkEvent) Handles RemoveLink
End Sub

Private Sub RemoveLink(ByVal Link As EXSWIMLANELibCtl.ILink)
End Sub

Private Sub RemoveLink(ByVal Link As Object)
End Sub

LPARAMETERS Link

PROCEDURE OnRemoveLink(oSwimLane,Link)
RETURN

Syntax for RemoveLink event, /COM version (others), on:

<SCRIPT EVENT="RemoveLink(Link)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function RemoveLink(Link)
End Function
</SCRIPT>

Procedure OnComRemoveLink Variant llLink
    Forward Send OnComRemoveLink llLink
End_Procedure

METHOD OCX_RemoveLink(Link) CLASS MainDialog
RETURN NIL

void onEvent_RemoveLink(COM _Link)
{
}

function RemoveLink as v (Link as OLE::Exontrol.SwimLane.1::ILink)
end function

function nativeObject_RemoveLink(Link)
return


event RemovePool

event RemovePool (Pool as Pool)
A pool has been removed from the surface.

Type | Description
Pool as Pool | An Pool object that specifies the pool being removed from the Pools collection.
The RemovePool event occurs once the pool has been removed from the Pools collection. Use the RemovePool event to release any extra data associated with the pool. Use the Remove method to remove a specific pool from the Pools collection. Use the Clear method to remove all pools from the surface. Removing and pool removes the incoming and outgoing links as well.

Syntax for RemovePool event, /NET version, on:

private void RemovePool(object sender,exontrol.EXSWIMLANELib.Pool Pool)
{
}

Private Sub RemovePool(ByVal sender As System.Object,ByVal Pool As exontrol.EXSWIMLANELib.Pool) Handles RemovePool
End Sub

Syntax for RemovePool event, /COM version, on:

private void RemovePool(object sender, AxEXSWIMLANELib._ISwimLaneEvents_RemovePoolEvent e)
{
}

void OnRemovePool(LPDISPATCH Pool)
{
}

void __fastcall RemovePool(TObject *Sender,Exswimlanelib_tlb::IPool *Pool)
{
}

procedure RemovePool(ASender: TObject; Pool : IPool);
begin
end;

procedure RemovePool(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_RemovePoolEvent);
begin
end;

begin event RemovePool(oleobject Pool)
end event RemovePool

Private Sub RemovePool(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_RemovePoolEvent) Handles RemovePool
End Sub

Private Sub RemovePool(ByVal Pool As EXSWIMLANELibCtl.IPool)
End Sub

Private Sub RemovePool(ByVal Pool As Object)
End Sub

LPARAMETERS Pool

PROCEDURE OnRemovePool(oSwimLane,Pool)
RETURN

Syntax for RemovePool event, /COM version (others), on:

<SCRIPT EVENT="RemovePool(Pool)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function RemovePool(Pool)
End Function
</SCRIPT>

Procedure OnComRemovePool Variant llPool
    Forward Send OnComRemovePool llPool
End_Procedure

METHOD OCX_RemovePool(Pool) CLASS MainDialog
RETURN NIL

void onEvent_RemovePool(COM _Pool)
{
}

function RemovePool as v (Pool as OLE::Exontrol.SwimLane.1::IPool)
end function

function nativeObject_RemovePool(Pool)
return


event SelectionChanged ()
Notifies your application that the control's selection has been changed.

Type Description
The SelectionChanged event occurs once a new element is selected or unselected. The Selected property of the Element object indicates whether the element is selected or unselected. The Selectable property of the Element object indicates whether the element is selectable or un-selectable.

The SelectObjectColor / SelectObjectTextColor property specifies the colors to show the selected elements ( while the control has the focus ). The SelectObjectColorInactive / SelectObjectTextColorInactive property specifies the color to show the selected elements ( while the control is not focused ). The SelectObjectStyle property specifies the style to show the selected elements ( like changing the element's background/foreground colors, showing a border around the selected elements, and so on ). Use the Background(exSelectObjectRectColor) property to specify the color to show the rectangle that highlights the elements that intersect the dragging rectangle.

The SingleSel property specifies whether the surface allows selecting one or multiple elements. The SelCount property counts the number of selected elements. The SelElement property returns the selected element based on its index in the selected elements collection. The Selection property sets or gets a safe array of selected elements. The AllowSelectObject property indicates the keys combination to allow user selecting new elements. The AllowSelectObjectRect property specifies the keys combination so the user can select the elements from the dragging rectangle. The AllowSelectNothing property indicates whether the selection is cleared once the user clicks any empty area on the surface. The SelectAll method selects all elements in the chart. Use the UnselectAll method to unselect all elements on the surface.

Syntax for SelectionChanged event, /NET version, on:

private void SelectionChanged(object sender)
{
}

Private Sub SelectionChanged(ByVal sender As System.Object) Handles SelectionChanged
End Sub

Syntax for SelectionChanged event, /COM version, on:

private void SelectionChanged(object sender, EventArgs e)
{
}

void OnSelectionChanged()
{
}

void __fastcall SelectionChanged(TObject *Sender)
{
}

procedure SelectionChanged(ASender: TObject; );
begin
end;

procedure SelectionChanged(sender: System.Object; e: System.EventArgs);
begin
end;

begin event SelectionChanged()
end event SelectionChanged

Private Sub SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SelectionChanged
End Sub

Private Sub SelectionChanged()
End Sub

Private Sub SelectionChanged()
End Sub

LPARAMETERS nop

PROCEDURE OnSelectionChanged(oSwimLane)
RETURN

Syntax for SelectionChanged event, /COM version (others), on:

<SCRIPT EVENT="SelectionChanged()" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function SelectionChanged()
End Function
</SCRIPT>

Procedure OnComSelectionChanged
    Forward Send OnComSelectionChanged
End_Procedure

METHOD OCX_SelectionChanged() CLASS MainDialog
RETURN NIL

void onEvent_SelectionChanged()
{
}

function SelectionChanged as v ()
end function

function nativeObject_SelectionChanged()
return

The following VB sample enumerates the incoming elements ( of selected elements ):

Private Sub SwimLane1_SelectionChanged()
    With SwimLane1
        Dim s As Variant
        For Each s In .Selection
            Debug.Print "Incomming Elements of " & s.ID & "are: "
            With s
                For Each i In .IncomingLinks
                    Debug.Print i.ElementFrom.ID
                Next
            End With
        Next
    End With
End Sub

The following VB sample enumerates the outgoing elements ( of selected elements ):

Private Sub SwimLane1_SelectionChanged()
    With SwimLane1
        Dim s As Variant
        For Each s In .Selection
            Debug.Print "Outgoing Elements of " & s.ID & "are: "
            With s
                For Each i In .OutgoingLinks
                    Debug.Print i.ElementTo.ID
                Next
            End With
        Next
    End With
End Sub


event ToolBarAnchorClick

event ToolBarAnchorClick (AnchorID as String, Options as String)
Occurs when an anchor element is clicked, on the control's toolbar.

Type | Description
AnchorID as String | A string expression that indicates the identifier of the anchor
Options as String | A string expression that specifies options of the anchor element.
The control fires the ToolBarAnchorClick event to notify that the user clicks an anchor element ( being displayed on the control's toobar ). An anchor is a piece of text or some other object (for example an image) which marks the beginning and/or the end of a hypertext link. The <a> element is used to mark that piece of text (or inline image), and to give its hypertextual relationship to other documents. The ToolBarAnchorClick event is fired only if prior clicking the control it shows the hand cursor. The control fires the ToolBarAnchorClick event when the user clicks an hyperlink element. The ToolBarCaption property specifies the caption of the button. Use the ToolBarRefresh method to refresh the control's toolbar. The ToolBarToolTip property specifies the button's tooltip. The control fires the ToolBarClick event when the user clicks a button in the surface's toolbar.

Syntax for ToolBarAnchorClick event, /NET version, on:

private void ToolBarAnchorClick(object sender,string AnchorID,string Options)
{
}

Private Sub ToolBarAnchorClick(ByVal sender As System.Object,ByVal AnchorID As String,ByVal Options As String) Handles ToolBarAnchorClick
End Sub

Syntax for ToolBarAnchorClick event, /COM version, on:

private void ToolBarAnchorClick(object sender, AxEXSWIMLANELib._ISwimLaneEvents_ToolBarAnchorClickEvent e)
{
}

void OnToolBarAnchorClick(LPCTSTR AnchorID,LPCTSTR Options)
{
}

void __fastcall ToolBarAnchorClick(TObject *Sender,BSTR AnchorID,BSTR Options)
{
}

procedure ToolBarAnchorClick(ASender: TObject; AnchorID : WideString;Options : WideString);
begin
end;

procedure ToolBarAnchorClick(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_ToolBarAnchorClickEvent);
begin
end;

begin event ToolBarAnchorClick(string AnchorID,string Options)
end event ToolBarAnchorClick

Private Sub ToolBarAnchorClick(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_ToolBarAnchorClickEvent) Handles ToolBarAnchorClick
End Sub

Private Sub ToolBarAnchorClick(ByVal AnchorID As String,ByVal Options As String)
End Sub

Private Sub ToolBarAnchorClick(ByVal AnchorID As String,ByVal Options As String)
End Sub

LPARAMETERS AnchorID,Options

PROCEDURE OnToolBarAnchorClick(oSwimLane,AnchorID,Options)
RETURN

Syntax for ToolBarAnchorClick event, /COM version (others), on:

<SCRIPT EVENT="ToolBarAnchorClick(AnchorID,Options)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function ToolBarAnchorClick(AnchorID,Options)
End Function
</SCRIPT>

Procedure OnComToolBarAnchorClick String llAnchorID String llOptions
    Forward Send OnComToolBarAnchorClick llAnchorID llOptions
End_Procedure

METHOD OCX_ToolBarAnchorClick(AnchorID,Options) CLASS MainDialog
RETURN NIL

void onEvent_ToolBarAnchorClick(str _AnchorID,str _Options)
{
}

function ToolBarAnchorClick as v (AnchorID as C,Options as C)
end function

function nativeObject_ToolBarAnchorClick(AnchorID,Options)
return


event ToolBarClick

event ToolBarClick (ID as Long, SelectedID as Long)
Occurs when the user clicks a button in the toolbar.

Type | Description
ID as Long | A Long expression that specifies the identifier of the button/selector being clicked.
SelectedID as Long | A long expression that specifies the identifier being selected. ( the identifier being specified by the second part of the ToolBarCaption property [separated by # character ] ). For instance, if the ToolBarCaption property is "Letter#1234" the button displays the "Letter" label, the SelectedID parameter is 1234 if the user clicks the button or selects the item in a drop down field.
The control fires the ToolBarClick event when the user clicks a button or selects a value in the control's toolbar. The ToolBarCaption property specifies the caption of the button. The ToolBarToolTip property specifies the button's tooltip. Use the ToolBarRefresh method to refresh the control's toolbar. Use the ToolBarFormat property to add new buttons, to display icons, pictures, or any other HTML caption.

The following screen shot shows the control's default toolbar:

For instance, clicking the Home button, generates the ToolBarClick(100) event. Instead selecting a new value from the zoom field ( drop-down field ), generates ToolBarClick(101,zoom) where the zoom is the zoom-factor being chosen.

Syntax for ToolBarClick event, /NET version, on:

private void ToolBarClick(object sender,int ID,int SelectedID)
{
}

Private Sub ToolBarClick(ByVal sender As System.Object,ByVal ID As Integer,ByVal SelectedID As Integer) Handles ToolBarClick
End Sub

Syntax for ToolBarClick event, /COM version, on:

private void ToolBarClick(object sender, AxEXSWIMLANELib._ISwimLaneEvents_ToolBarClickEvent e)
{
}

void OnToolBarClick(long ID,long SelectedID)
{
}

void __fastcall ToolBarClick(TObject *Sender,long ID,long SelectedID)
{
}

procedure ToolBarClick(ASender: TObject; ID : Integer;SelectedID : Integer);
begin
end;

procedure ToolBarClick(sender: System.Object; e: AxEXSWIMLANELib._ISwimLaneEvents_ToolBarClickEvent);
begin
end;

begin event ToolBarClick(long ID,long SelectedID)
end event ToolBarClick

Private Sub ToolBarClick(ByVal sender As System.Object, ByVal e As AxEXSWIMLANELib._ISwimLaneEvents_ToolBarClickEvent) Handles ToolBarClick
End Sub

Private Sub ToolBarClick(ByVal ID As Long,ByVal SelectedID As Long)
End Sub

Private Sub ToolBarClick(ByVal ID As Long,ByVal SelectedID As Long)
End Sub

LPARAMETERS ID,SelectedID

PROCEDURE OnToolBarClick(oSwimLane,ID,SelectedID)
RETURN

Syntax for ToolBarClick event, /COM version (others), on:

<SCRIPT EVENT="ToolBarClick(ID,SelectedID)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function ToolBarClick(ID,SelectedID)
End Function
</SCRIPT>

Procedure OnComToolBarClick Integer llID Integer llSelectedID
    Forward Send OnComToolBarClick llID llSelectedID
End_Procedure

METHOD OCX_ToolBarClick(ID,SelectedID) CLASS MainDialog
RETURN NIL

void onEvent_ToolBarClick(int _ID,int _SelectedID)
{
}

function ToolBarClick as v (ID as N,SelectedID as N)
end function

function nativeObject_ToolBarClick(ID,SelectedID)
return