Welcome to EONTROL
Exontrol is devoted to create innovative user interface components for Windows applications, on /COM, /NET or /WPF platforms, since 1999. "eXontrol" comes from e(s)pecial (c)ontrol, where sc makes the X. Software development never stops. Neither do we. Our components are and will continue to be cutting edge development tools that adapt to the needs of our customers and to the changing software development environment. On this site you find components/tools/products/samples that are used in programming languages such as JavaScript, VB, VB.NET, VBA, C++, C#, X++, VFP, Access, Excel, Word, HTML, Delphi, Smalltalk, uniPaas (eDeveloper), Clarion, Dynamics AX, Dynamics NAV, xBasic, Visual Objects, Visual Dataflex, PowerBuilder, LabVIEW, Xbase++, AutoIt, Power++, FORTH, and so on...

The following movie shows the exg2antt's histogram:

The movie shows how you can represent different activities into the control's histogram (previously, it was not possible to cumulate activities of different types into the same graph). A histogram is a graphical representation that organizes a group of data points into user-specified ranges. Each activity or task has an effort that defines the vertical-size to represent it into the control's histogram. The control supports constant or variable-efforts. The variable-effort is defined by an expression that supports value, start and end keywords.

The following movie shows how you can customize the link's path:

The video shows how you can customize the link's path using control points. 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 following movie shows the how you can check our JavaScript component:

The video shows how you can check any of our JavaScript components. JavaScript is the programming language of HTML and the Web. Recently, we have started to publish our first suite of JavaScript components. In the near future, new JavaScript components (such as pivot, gantt ) will arrive. We try as much as possible to make them compatible with the other components we already support for the past 20 years. We will keep continue to improve, maintain and support all of our components!

The following moves shows the newly Cross-Link feature:

The following movie shows how intersection of links on the surface, can display crosses, so a link from an element to another can be clear seen. The ShowExtendedLinksEnum.exShowCrossLinksRect flag in ShowLinks property, expands the junction / intersection of two or more links, with a rectangle that cross the linkst, the ShowExtendedLinksEnum.exShowCrossLinksTriangle flag in ShowLinks property, expands the junction / intersection of two or more links, with a triangle that cross the links, the ShowExtendedLinksEnum.exShowCrossLinksRect and ShowExtendedLinksEnum.exShowCrossLinksTriangle flags in ShowLinks property, expands the junction / intersection of two or more links, with a rectangle for horizontal links, and a triangle for vertical links ( mixed ).

The following moves shows the newly feature Columns floating-bar to show/hide columns:

The ColumnsFloatBarVisible property of ColumnsFloatBarVisibleEnum type, retrieves or sets a value that indicates whether the the columns float bar is visible or hidden. The ColumnsFloatBarVisibleEnum.exColumnsFloatBarVisibleIncludeCheckColumns associates a check-box for each column. The Columns floating bar displays all columns with AllowDragging property on True, and the check's box state indicates whether the column is visible or hidden. You can show or hide a column by clicking the associated check box or by pressing the SPACE key. As previously, the user can drag or drop any column in the Columns floating bar and the associated check-box is updated based on the column's Visible property. The feature will be available for the eXTree, eXGrid, eXGantt and eXG2antt, /COM, /NET and /WPF.
*Fixed: Can't click the cell's button, if it is displayed on the chart portion of the control ( Chart.ColumnsFormatLevel property, Column.Def(exCellHasButton) property, Items.CellHasButton property, ButtonClick event )
*Fixed: The predefined icon-bars such as "Summary", "Project Summary", "Milestone" or "Deadline" shows distorted on DPI applications.
*Fixed: The user can't resize the last locked-column that fit's the control's client area, if it wider (CountLockedColumns property)
*Fixed: The control scrolls more columns, if locked columns are visible and the user do horizontal page scrolling by clicking the horizontal scroll bar's background. ( CountLockedColumns property )
*Fixed: The Items.SelectItem property returns 1 instead of -1 / True value.
*Added: FormatABC method formats the A,B,C values based on the giving expression and returns the result. For instance, FormatABC("dpi") returns a numeric value that indicates the display settings ( aspect ratio ).
*Added: Expands or collapses the entire selection if the user clicks any +/- glitch, presses Left/Right/+ or- key inside the selection, while the CTRL is pressed. This option is valid, while the control's SingleSel property is False.
*Fixed: The Export method includes the visible items only, if any filter is applied to the control ( excludes the chk and sel options ).
*Fixed: The control's filter-bar caption does not update its counters, in case the FilterBarCaption property uses any of: itemcount, visibleitemcount, leafitemcount keywords.
*NEW: FilterBarCaption property supports expressions, and UI Column's Filter
*Added: The FilterBarCaption property supports expressions, so its evaluated value defines the HTML caption to be displayed on the control's filter bar. By default, the FilterBarCaption property is empty, so the control's automatically computes the filter bar's label based on the filter of each column. If no filter is selected, no filter label is generated. The FilterBarCaption property supports the following predefined keywords: value or current ( defines the control's current filter label, as it is displayed ), itemcount keyword returns the number of all items within the control, visibleitemcount keyword indicates the number of visible items within the control ( negative value indicates that the control has a filter applied, equivalent with the Items.VisibleItemCount property ), matchitemcount keyword indicates the number of items that currently matches the control's filter ( negative value indicates that the control has a filter applied, equivalent with the Items.MatchItemCount property ), promptpattern keyword specifies the currently pattern for the filter's prompt ( this is eligible, if the FilterBarPromptVisible property includes the exFilterBarPromptVisible flag ), available keyword returns a list of columns that are currently not filtered, but available to be filtered for ( Column.DisplayFilterButton property on True ) as a HTML string, allui keyword returns a HTML caption that includes all columns with Column.DisplayFilterButton property on True, including the value for each column's filter if it is filtered, all keyword returns a HTML caption that includes all columns including the value for each column's filter if it is filtered. For instance, FilterBarCaption = "`<r>` + value" aligns the filter bar's label to the right, the "value replace `[` with `<fgcolor=808080>[` replace `]` with `]</fgcolor>`" shows the column's name with a different color, "`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `<br>` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : ``)" displays the number of results in the control's filter bar and so on.
*Added: Ability to clear / select new filter value from the column's filter panel, if the user clicks the column's caption of the control's filter bar. The value, current, available, allui or all keyword of the FilterBarCaption property returns a HTML caption that includes the column's caption between [<b> and </b>] if the column is currently filtered ( shows as bold between brackets ), between <fgcolor=C0C0C0>[<s> and </s>]<fgcolor> if the column is not currently filtered ( shows in strikeout as gray between brackets ). The all, allui and available keywords uses the <fgcolor> </fgcolor> sequence (uncolored space) to separate the parts on the control's filter description. You can use predefined functions like replace to change the appearance of the column in the control's filter bar. For instance, "all replace `<s>` with `` replace `</s>` with ``" removes the strikeout effect for available and not-filtered columns, "allui replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></fgcolor></bgcolor>`" shows the filtered columns on white on a black background, "value + `<r>` + available replace `<fgcolor=C0C0C0>` with `<fgcolor=FF0000>`" shows the currently filter on the left, while the available filter on the right in red, 
*Added: The Items.MatchItemCount property retrieves the number of items that match the filter. If negative it indicates that a filter is applied, and its absolute value minus 1 specifies the count of items that match the filter criteria. If zero, no items are loaded into the control, and so no filter is applied. If positive, it indicates the total number of items within the control equivalent with the Items.ItemCount property. 
*Added: Items.VisibleItemCount property returns negative value, if the control has a filter applied. The negative value represents a formula of -( count + 1 ), where count indicates the number of matching items. For instance, if the Items.VisibleItemCount property returns -1, the count of matching items is 0, if -2, 1 matching item, if -3, 2 matching items, and so on.
*NEW: Multiple improvements for expression-like properties
*Added: a `like` b binary-operator compares the string a against the pattern b. The pattern b may contain wild-characters such as *, ?, # or [] and can have multiple patterns separated by space character. In order to have the space, or any other wild-character inside the pattern, it has to be escaped, or in other words it should be preceded by a \ character. For instance "value like `F*e`" matches all strings that start with F and ends on e, or "value like `a* b*`? indicates any strings that start with a or b character.
*Added: The 0x or 0X sequence proceed the hexa-representation of a number, in properties that support expressions. For instance, "value = 0x100" specifies whether the value is 256 ( 0x100 in hexa-representation ) 
*Added: `hex` a unary-operator converts the giving string from hexa-representation to a numeric value, or converts the giving numeric value to hexa-representation. For instance, hex(`FF`) returns 255, while the hex(255) or hex(0xFF) returns the `FF` string. The hex(hex(`FFFFFFFF`)) always returns `FFFFFFFF` string, as the second hex call converts the giving string to a number, and the first hex call converts the returned number to string representation (hexa-representation). 
*Added: a `bitand`, `bitor`, `bitxor` b binary/bitwise-operator computes the AND/OR/XOR operation on bits of a and b, and returns the unsigned value. For instance, 0x01001000 bitand 0x10111000 returns 0x00001000, 0x01001000 bitor 0x10111000 returns 0x11111000, 0x01110010 bitxor 0x10101010 returns 0x11011000.
*Added: a `bitshift` b, binary/bitwise-operator shifts every bit of a value to the left if b is negative, or to the right if b is positive, for b times, and returns the unsigned value. For instance, 128 bitshift 1 returns 64 ( dividing by 2 ) or 128 bitshift (-1) returns 256 ( multiplying by 2 )
*Added: `bitnot` x unary/bitwise-operator flips every bit of x, and returns the unsigned value. For instance, bitnot(0x00FF0000) returns 0xFF00FFFF.


Copyright 1999-2020 Exontrol. All rights reserved.