Overview

Welcome to 3DChart version 5.0

The 3DChart v5.0 is a high quality ActiveX component, which uses the OpenGL 3D engine to display sophisticated charts with stunning visual effects. The key features of the component are:

  • 32- bit ActiveX component for Visual Basic and other ActiveX compatible environments (Visual C++, Delphi, Microsoft Office and many more)

  • Build on OpenGL technology. 3DChart simply shines on machines with OpenGL accelerated video cards.

  • Specially optimized for speed and memory performance. 3DChart can display thousands of data points with ease and at the same time is guaranteed to have a small memory footprint.

  • Easy and comprehensive and yet powerful object model - no matter what experience you have in charting you will literally be able to create complex charts in hours. With 59 objects containing 330 properties and 236 methods this is one of the most flexible charting tools in the industry.

  • State of the art Microsoft - like visual interface available at runtime.

  • Ability to display 15 chart types with lots of different style variations and unique visual effects. 3DChart enables you to create presentation quality "out of the box" charts with ease.

  • Direct connection to any ADO data source.

  • Seamless ASP integration. You can create a dynamic client side by just visually editing the component. Configuring the chart to work on ASP servers is done with a helper application - no code is required to manage you temporary and image files. Inserting the chart in the ASP page is done with one function call. 3DChart is user agent sensitive and can generate different responses to different browsers.

  • Flexible integrated legend able of displaying almost any descriptive information you want.

  • Advanced control over the axis scaling and position - there is no scale mode that we do not support and the axes can be displayed at any position you may think of.

  • Ability to display several charting types simultaneously. Here 3DChart is simply unbeatable, because it can show two charts on the same data serie as well as position the chart at any location of the floor grid.

  • Export to JPEG, PNG, Bitmap, Targa, Tiff or native Chart format.

  • The component fully uses the Nevron LLC 3D ActiveX standard. There is not a single surface on which you cannot assign an Animated Texture and material including texts! Some of the visual effects that you can generate with the standard Nevron objects are not even present in professional 3D modeling studio applications.

Enjoy using this professional ActiveX control and don’t forget to check out for more new and exciting Nevron ActiveX components.


Documentation Formating

This documentation uses the following formatting:

Object Type | Example
Method or Property | UseXValue, SetPredefinedProjection
Object | NChart
Custom type | AxisType, atLeftAxis
VB Type | Long
Example | NChart1.Redraw = True


Data Storage

Data Storage. Passing data to the 3DChart. Data Ranges

The storage of the data is the core of every charting tool. The Data Storage of the 3DChart is a three dimensional array containing NData objects. Each NData object represents an individual data point. The dimensions of the Data Storage along the x, y and z dimensions depend on the sizes of the Categories, Series and Labels collections respectively. The following figure visually represents data storage with 6 categories, 6 series and 6 levels.

What are levels and why do we need then? Some charting types (stack bars for example) need several data points on the same cell in the grid to be displayed properly. This problem has several solutions and one of them is to specify different serie for each stack and the other one is to simply have several data points at the same cell e.g data levels or simply levels.

You can gain access to a particular data point in the data storage with the help of the DataAt method of the NChart object. This method takes three parameters specifying the index of the data item in the data storage. For example if you want to access the red data item on the figure you must write the following code:

Dim data as NData
Set data = NChart1.DataAt(2, 0, 2) // Category 2, Serie 0, Level 2

While accessing the blue data item will require you to specify a different index:

Dim data as NData
Set data = NChart1.DataAt(5, 2, 3) // Category 5, Serie 2, Level 3

Just having some data in the chart data storage is not enough to create a chart – you need to present it somehow. This is achieved with the help of the presentation groups, which we will discuss in detail later in this documentation. Presentation groups need to know exactly which data from the data storage are they showing and that is why each presentation group has a NRange object. With the help of the NRange you specify a range of values from the data storage. For example if you want to specify for display the green area from figure 1, you will have to write code similar to this:

Range.BeginX = 3
Range.InfiniteX = True
Range.BeginY = 0
Range.EndY = 2
Range.BeginZ = 0
Range.EndZ = 0

Except the InfiniteX, InfiniteY and InfiniteZ the other properties of the NRange object are self explanatory - they just help you define a range of values in a three dimensional array. The InfiniteX, InfiniteY and InfiniteZ flags ignore the respective end coordinated and replace it with the biggest available one. This is very useful, since you will probably dynamically change the categories, series and levels of the data storage and it will be very inconvenient to specify an exact ending coordinate each time.

The NData items stored in the data storage might have different properties, although all NData items in the data storage have the same properties (the data storage is homogenous). The available NData properties are determined by the current data storage data type. Each data type has a major and minor type value. The major value describes the number of values that the data point has. The minor value determines whether the data point has other properties like fill effect, material, border, color, mouse response and label. The following table shows the relationship between the available properties and the data storage data types:

Data Type | Major Value | Minor Value | V1 | V2 | V3 | V4 | V5 | V6 | Color | Fill Effect | Material | Border | Mouse Response | Label
dtDataType11 | 1 | 1 | + | - | - | - | - | - | - | - | - | - | - | -
dtDataType12 | 1 | 2 | + | - | - | - | - | - | + | - | - | - | - | -
dtDataType13 | 1 | 3 | + | - | - | - | - | - | + | - | - | - | - | +
dtDataType14 | 1 | 4 | + | - | - | - | - | - | - | + | - | - | - | +
dtDataType15 | 1 | 5 | + | - | - | - | - | - | - | + | + | + | + | +
dtDataType21 | 2 | 1 | + | + | - | - | - | - | - | - | - | - | - | -
dtDataType22 | 2 | 2 | + | + | - | - | - | - | + | - | - | - | - | -
dtDataType23 | 2 | 3 | + | + | - | - | - | - | + | - | - | - | - | +
dtDataType24 | 2 | 4 | + | + | - | - | - | - | - | + | - | - | - | +
dtDataType25 | 2 | 5 | + | + | - | - | - | - | - | + | + | + | + | +
dtDataType31 | 3 | 1 | + | + | + | - | - | - | - | - | - | - | - | -
dtDataType32 | 3 | 2 | + | + | + | - | - | - | + | - | - | - | - | -
dtDataType33 | 3 | 3 | + | + | + | - | - | - | + | - | - | - | - | +
dtDataType34 | 3 | 4 | + | + | + | - | - | - | - | + | - | - | - | +
dtDataType35 | 3 | 5 | + | + | + | - | - | - | - | + | + | + | + | +
dtDataType55 | 5 | 5 | + | + | + | + | + | - | - | + | - | - | - | +
dtDataType65 | 6 | 5 | + | + | + | + | + | + | - | + | + | + | + | +

Choosing the best data type greatly depends on the chart type you want to create. In general you must try to use minor data types since they require less memory. For example if you want to display a surface chart with contour filling the only information that each data point must posses is its elevation. In this case you can safely use dtDataType11. Other charts on the other hand require more information to be displayed properly. A nice example is the Stock chart which might require up to six values for each data point. In this case you will have no choice, but to switch to dtDataType65. The default data type of the data storage is dtDataType35.

Data types with bigger major types can be used to display charts that require smaller major types, although some of the values will not be used. In this case we say that the data types are compatible. In general data types with bigger major types are compatible with data types with smaller data types.

For example: What happens if you want to display two chart types simultaneously, but they require different data types? In this case you must simply set the data storage to have the bigger data type.

The following code changes the data type of the data storage to dtDataType55:

NChart1.DataStorage.DataType = dtDataType55

Frequent changes in the sizes of the Series, Categories and Levels collections beyond the specified page size for the respective dimension may lead to frequent memory reallocations, which will slow down performance. So if you want to optimize your component for frequent changes in one of the data storage dimensions simply specify a bigger page size for this dimension. For example if you intend to frequently change the series of the component at runtime and you expect them to vary from 5 to 10 you can safely set the serie page size to 10 with the following code:

NChart1.DataStorage.SeriePageSize = 10

Of course you don’t have to deal with data storage paging if you don’t have any special speed and memory requirements. The default values of the pages are:

CategoriesPageSize = 20

SeriesPageSize = 1

LevelsPageSize = 1

As you can see frequent changes in the size of the categories will seldom require memory reallocation, while any change in the series and levels size will require memory reallocation.


Categories, Series and Levels

The dimensions of the data storage are synchronized with the sizes of three collections of NAxisParameter objects. These collections represent the Categories, Series and Levels of the 3DChart component.

As we will discuss later in this documentation the axes of the 3DChart component can operate in several modes one of which shows the labels contained in each NAxisParameter object on the corresponding axis. The Categories are displayed on the Categories axis, the Series on the Series axis and the Levels can be displayed on one of the four vertical axes.

The Categories, Series and Levels collections are accessed with the help of the Categories, Series and Levels methods of the NChart object. For example the following code creates 3 categories, 2 series and 2 levels:

‘add three categories
NChart1.Categories.Add "Category1", True
NChart1.Categories.Add "Category2", True
NChart1.Categories.Add "Category2", True

‘ add two series
NChart1.Series.Add "Serie1", True
NChart1.Series.Add "Sertie2", True

‘ add one level (there is one by default)
NChart1.Levels.Add "Level2", True

It is sometimes a burden to add categories and series one by one especially if you want to display charts with hundreds of data items. That is why the Categories, Series and Levels collection have a method called SetSize, which resizes the collection to the desired size and automatically assigns some labels to its members. For example the following code creates 100 categories and 50 series.

NChart1.Categories.SetSize 100, True
NChart1.Series.SetSize 50, True


Chart Dimensions

The size of the charting area along the x, y and z dimensions in the OpenGL rendering space is easily controlled by the ChartWidth, ChartDepth and ChartHeight properties of the NChart object. If you want for example to make more space for the categories you can increase the ChartWidth of the chart area with code similar to this:

NChart1.ChartWidth = 3


Presentation Groups

As their name suggests presentation groups help you to present ranges of values from the Data Storage in different ways. Currently the 3DChart supports the following types of presentation groups:

Bar - single or multi column chart (depending on the number of Levels specified in the presentation group range). The style of the bars can be a bar, cylinder, cone, inverted cone, pyramid, inverted pyramid or smooth edge bar with controlled edge size. The user can control the axis on which each column is scaled as well as the origin of each column.

Stack Bar Chart - classical stack bar. The number of stacks is determined by the number of data levels covered by the range of this presentation group. The style of the bars can be a bar, cylinder, cone, inverted cone, pyramid, inverted pyramid or smooth edge bar with controlled edge size.

Area - areas beginning from the chart floor. The user can specify a custom area origin as well as show drop lines.

Stack Area - stacked or stacked percent area chart. The user is able to display percent, cumulative or absolute stack values on data points

Line - line as tube, tape or simple line with value point marks. The shape of the value point marks can be a bar, cylinder, cone, inverted cone, pyramid, inverted pyramid, sphere, circle and diamond. The line can be configured as a XY plot.

Stack Line - stack or stack percent lines displayed as tube, tape or simple line with value point marks. The shape of the value point marks can be a bar, cylinder, cone, inverted cone, pyramid, inverted pyramid, sphere, circle and diamond.

Surface - surface that connects the adjacent data values. Lots of different frame and fill styles are supported.

Point - points chart. The shape of the value point marks can be a bar, cylinder, cone, inverted cone, pyramid, inverted pyramid, sphere, circle and diamond. It can also be configured as a XY or XYZ scatter plot.

Bubble - bubble chart. The shape of the bubbles can be a bar, cylinder, cone, inverted cone, pyramid, inverted pyramid, sphere, circle and diamond. The user can control the minimal and maximal bubble sizes.

Stock Chart - stock chart (Open - High - Low - Close - Volume). Lots of different stock charts are supported. The user can change the candle style to stick or bar, show the open and close values and scale the volume on a different axis. Data points can be positioned on arbitrary X position, which enables the creation of date - time stock charts.

Float Bar - floating bar. The style of the bars can be a bar, cylinder, cone, inverted cone, pyramid, inverted pyramid or smooth edge bar with controlled edge size.

Pie - pie chart. The shape of the pie segments can be a torus, pie or smooth edge pie. The user can control the begin angle, depth and pie radius.

Radar - radar chart (or also called spider chart). The user is able to show data point marks on individual data items as well as fill the area surrounded by the data points (filled area radar chart).

Polar - polar chart. The user is able to show data point marks on individual data items, control the begin angle and angle step of the radian lines.

Shmoo - shmoo chart. This chart is widely used in the semiconductor indusrty to show the device response to two or three parameters. The user can hide all fail bits and highlight the first fail ones for one ot the three possible parameters.

Each presentation group has requirements for the current major data type of data storage (presentation groups need different number of values for each data point). For example if you want to display a stock chart and the current data storage type is dtDataType35 (the default one) the visualization of the stock will fail because the stock chart needs at least 4 values at each data point in order to be displayed properly. The solution is to set the data type to a data type with major number 4 or more.

The following table describes the requirements of each presentation group.

Presentation Group | Required Major Data Type | Data Usage
Bar | 1 | Value1 is the value of the bar
Stack Bar | 1 | Value1 is the value of the stack bar
Area | 1 | Value1 is the value of the area
Stack Area | 1 | Value1 is the value of the area
Line | 1 or 2 | Value1 is the elevation of the data point. Value2 is X position if UseXValue is set to True
Stack Line | 1 | Value1 is the value of the line
Surface | 1 | Value1 is the elevation of the data point
Point | 1, 2 or 3 | Value1 is the elevation of the point Value2 is X position if UseXValue is set to True Value3 is Y position if UseYValue is set to True
Bubble | 3 | Value1 is X position of the bubble Value2 is Y position of the bubble Value3 is bubble size
Stock Chart | 4,5 or 6 | Value1 is the Open value Value2 is the High value Value3 is the Low value Value4 is the Close value Value5 is the Volume value if HasVolume is set to True Value6 is X position if UseXValue is set to True
Float Bar | 2 | Value1 is the begging of each bar Value2 is the end of each bar
Pie | 2 | Value1 is the value of the pie segment Value2 is the detachment of the pie from the center
Radar | 1 | Value1 is distance from radar center
Polar | 2 | Value1 is distance from polar center (radius) Value2 is data point rotation (angle)
Shmoo | 2 | Value1 is pass - fail bit (pass = 1, fail = 0) Value2 is hide - show bit ( hide = 1, show = 0)

All presentation groups have some properties and methods that are common for all of them. These properties are grouped in an automation object called NPresentGroupCommon. Each presentation group has an instance of that object, which is accessible with the help of the Common method.

The most important method of the NPresentGroupCommon object is the Range method. It gives you access to the NRange object connected with the presentation group, through which you can select the range of values displayed by the presentation group.

The HasTexts, FormatString, TextEx, ArrowLength, ArrowLine properties of the NPresentGroupCommon help you display formatted labels for each data point. An arrow connects the label with the data point and the user can control its length and appearance.

The EnableUniformAppearance flag and the uniform appearance collection are used from the uniform appearances to uniformly present the data.Uniform Appearances are discussed in detail in the next topic.

Each presentation group is always displayed on the Categories and Series axes and can be arbitrary assigned to one or more of the four vertical axes. The DisplayOnAxis and IsDisplayedOnAxis methods help you scale the presentation group on a different chart axis and query wheather the presenation group is scaled on a partical axis.

Sometimes the chart may go outside the charting area. In these cases you can turn on the InflateMargins flag and property scale it.

The presentation groups are contained in a collection, which can be accessed with the PresentGroups method of the NChart object.

The following code will display the data in the data storage as bars.

‘ create the bar presentation group
Dim bar As NBarPresentGroup
Set bar = NChart1.PresentGroups.Add(pgtBar)
‘ and specify that it shows the whole data storage
bar.Common.Range.InfiniteX = True
bar.Common.Range.InfiniteY = True
bar.Common.Range.InfiniteZ = True


Uniform Apperances

Uniform Appearances

The 3DChart component can be configured to extract the fill effect, material and border properties of each data point from the corresponding properties of the NData object it represents. This behavior is very flexible, since it helps you to assign different appearances to each data point. In most of the cases though it is a burden to specify the appearance of each data point - for example if you want to show a bar chart where all bars are red. In this case you can use the uniform appearances to do that. The uniform appearances are enabled by default for the majority of the presentation groups.

The uniform appearances are a collection of NAppearance objects, which are contained in a collection accessible trough the UniformAppearances method of the object. The number of appearances in each presentation group uniform appearance collection depends on the presentation group type.

Each NAppearance object has a fill effect, material, border properties and a name. When the legend is in automatic mode the presentation group can be configured to show the appearances in it. In this case the shape of the legend marks is determined automatically by the presentation group.

For some presentation groups you can add and delete appearances (e.g the collection is editable). For example if you want to display a stack bar with three stacks - red, green and blue you must add two appearances (there is one by default for the stack bar presentation groups) and set them to have the respective fill effect. For others this does not make any sense. A nice example for that is the stock present group. For this presentation group by default you have four appearance objects - for the up and down candles, for the high - low line and for the traded volume.

It is also very important to properly understand the way in which each presentation group distributes multiple uniform appearances across the items displayed by the presentation groups. Lets suppose for example that we have a bar presentation group with three categories and one level and we have two appearance objects in the uniform appearance collection. In this case the item for the first category will have the first appearance, the second category - the second appearance and the third category again the first appearance. In other words when the bar presentation group has one level multiple uniform appearance are distributed across the categories. If for example we have a bar present group with three categories but two levels, then the item for the first category and first level will have the first uniform appearance and the item for the second level the second uniform appearance. In other words uniform appearances are distributed across levels.

The following table describes the usage of the uniform appearances in the presentation groups.

Presentation Group | Default Number of Appearances | Editable Collection | Appearance Distribution | Comment
Bar | 1 | Yes | Across levels if multiple levels. Otherwise across categories | None
Stack Bar | 1 | Yes | Across levels | None
Area | 1 | Yes | Across series if multiple series. Otherwise across categories |
Stack Area | 1 | Yes | Across levels if multiple levels. Otherwise across categories |
Line | 2 | Yes | Across levels if multiple levels. Otherwise across sereis | Distribures pairs of appearances - one for the line and another for the data point
Stack Line | 2 | Yes | Across levels if multiple levels. Otherwise across sereis | Distribures pairs of appearances - one for the line and another for the data point
Surface | 1 | No | The one and only appearance is used to fill the surface. | None
Point | 1 | Yes | Across series if multiple series. Otherwise across categories | None
Bubble | 1 | Yes | Across categories |
Stock | 4 | No | 0 is up candle 1 is down candle 2 is high - low line 3 is traded volume |
Float Bar | 1 | Yes | Accross categories |
Pie | 1 | Yes | Accross categories | None
Radar | 1 | Yes | Across series if multiple series. Otherwise across categories | Distribures pairs of appearances - one for the line and another for the data point
Polar | 2 | Yes | Across series if multiple series. Otherwise across categories | Distribures pairs of appearances - one for the line and another for the data point
Shmoo | 3 | No | 0 is pass bit 1 is fail bit 2 is first fail bit |

The following code demonstrates how you can use the uniform appearances to show a stack bar chart with red, green and blue stacks.

‘ add categories, series and levels
NChart1.Categories.Add "Apples", True
NChart1.Categories.Add "Oranges", True
NChart1.Categories.Add "Pears", True
NChart1.Categories.Add "Bananas", True

NChart1.Series.Add "Fruits", True
‘ there is one level by default
NChart1.Levels.Add "Level2", True
NChart1.Levels.Add "Level3", True

‘ set data to the data items
NChart1.DataAt(0, 0, 0).Value1 = 12
NChart1.DataAt(1, 0, 0).Value1 = 8
NChart1.DataAt(2, 0, 0).Value1 = 4
NChart1.DataAt(3, 0, 0).Value1 = 9
NChart1.DataAt(0, 0, 1).Value1 = 11
NChart1.DataAt(1, 0, 1).Value1 = 10
NChart1.DataAt(2, 0, 1).Value1 = 12
NChart1.DataAt(3, 0, 1).Value1 = 13
NChart1.DataAt(0, 0, 2).Value1 = 2
NChart1.DataAt(1, 0, 2).Value1 = 3
NChart1.DataAt(2, 0, 2).Value1 = 8
NChart1.DataAt(3, 0, 2).Value1 = 4
‘ create a stack bar to show the data

Dim bar As NStackBarPresentGroup
Set bar = NChart1.PresentGroups.Add(pgtStackBar)
bar.Common.Range.InfiniteX = True

bar.Common.Range.InfiniteY = True
bar.Common.Range.InfiniteZ = True
‘ enable Uniform Appearances
bar.Common.EnableUniformAppearance = True

‘ add two appearances for the second and third stack
‘ there is one appearance by default
bar.Common.UniformAppearances.Add ("Stack2")
bar.Common.UniformAppearances.Add ("Stack3")

‘ and set the desired fill effects for the three stacks
bar.Common.UniformAppearances.GetAt(0).FillEffect.SetSolidColor vbRed
bar.Common.UniformAppearances.GetAt(1).FillEffect.SetSolidColor vbGreen
bar.Common.UniformAppearances.GetAt(2).FillEffect.SetSolidColor vbBlue


Axes

The 3DChart component has four vertical axes (Left, Back, Right and Front) positioned around the chart floor plus one categories axis and one series axis. They are all instances of the NAxis automation object. Figure 1 visually demonstrates the position of the 6 chart axes.

figure 1.

Each presentation group is initially displayed on the left vertical axis and always on the Categories and Series axes. The user can also attach a presentation group to one of the other axes, with the help of the DisplayOnAxis method of the NPresentGroupCommon object. You can query whether a presentation group is displayed on one of the vertical axes, with the help of the IsDisplayedOnAxis method of the same automation object. The axes are programmatically accessed with the help of the Axes method of the NChart object. The user can control the following aspects of the axes:

  1. Axis Appearance
    The Width property of the axis controls the way in which the axis is rendered. If the Width is bigger than 0 then the axis is wired as a bar and the control assigns fill effect, material and border properties on it. For example:

    ' shows the left axis as a red bar with a tick border
    NChart1.Axes(atLeftAxis).Width = 0.2
    NChart1.Axes(atLeftAxis).FillEffect.SetSolidColor vbRed
    NChart1.Axes(atLeftAxis).Material.SetAmbientDiffuseColor vbRed
    NChart1.Axes(atLeftAxis).Border.Width = 2

    When the Width property is set to 0 the axis is wired as a simple line and the control assigns only the border properties to it. The following example displays the left axis as a red line with width 3 pixels.

    ' show the left axis as a 3 pixel red line
    NChart1.Axes(atLeftAxis).Width = 0
    NChart1.Axes(atLeftAxis).Border.Width = 3
    NChart1.Axes(atLeftAxis).Border.Color = vbRed
  2. Axis Texts
    The contents of the texts shown by the axis are determined by the scale mode of the axis (discussed later in this topic). When the axis is switched in Value, Logarithmic or Date Time mode then the axis works like a ruler and the texts are formatted values. When the axis operates in Dimension mode then the axis texts are taken from the corresponding collection - for the Categories axis this is the Categories collection, for the Series axis this is the Series collection and for the vertical axes this is the Levels collection. The user can control the visual appearance of these texts with the help of the TextEx method, which gives you access to the NTextEx object used to display the texts.

    ' the following code makes the value texts on the left axis 3d with extrusion 0.2
    NChart1.Axes(atLeftAxis).TextEx.Use2DText = False
    NChart1.Axes(atLeftAxis).TextEx.Extrusion = 0.2
    NChart1.Axes(atLeftAxis).TextEx.FillEffect.SetSolidColor vbRed
    NChart1.Axes(atLeftAxis).TextEx.Material.SetAmbientDiffuseColor vbRed

    The axis text position must be adjusted for the different projections. Instead of doing this manually you can use the SetPredefinedTextPosition method, which receives as a parameter a predefined text position type. (patpVertical, patpHorizontalLeft and patpHorizontalRight).

    NChart1.Axes(atLeftAxis). SetPredefinedTextPosition patpVertical

    Often the text labels on the categories axis overlap, because they are too long to fit in the category space. You can solve this problem in two ways. The first one is to use the stagger texts mode which is enabled with the help of the StaggerTexts property. The offset between two adjacent texts is then controlled with the help of the StaggerOffset property.

    NChart1.Axes(atCategoriesAxis).StaggerTexts = True ' enable stagger text mode
    NChart1.Axes(atCategoriesAxis).StaggerOffset = 0.20 ' offset is 0.20 OpenGL units

    The other method is to rotate the texts to 45 or 90 degrees. The following code rotates the categories texts at 45 degrees.

    NChart1.Axes(atCategoriesAxis).TextEx.Orientation = 45
    NChart1.Axes(atCategoriesAxis).TextEx.HorzAlign = haRight
    NChart1.Axes(atCategoriesAxis).TextEx.OffsetY = 0

  3. Axis Ticks
    Each axis has major and minor ticks. The position of the ticks depends on the axis mode. The major ticks are inner and outer and their names come from the orientation they have towards the chart center. The minor ticks are drawn between the major ones on the outer side of the chart and their count can be controlled by the MinorTickCount property of the NAxis object. Both kinds of ticks are rendered as lines. The following examples shows how you can control their appearance:

    ' inner ticks with length 0.06 and red color
    NChart1.Axes(atLeftAxis).InnerTickLength = 0.06
    NChart1.Axes(atLeftAxis).InnerTickLine.Color = vbRed

    ' outer ticks with length 0.08 and blue color
    NChart1.Axes(atLeftAxis).OuterTickLength = 0.08
    NChart1.Axes(atLeftAxis).OuterTickLine.Color = vbBlue

    ' five minor ticks between each major one with length 0.05
    ' and yellow color
    NChart1.Axes(atLeftAxis).MinorTickCount = 5
    NChart1.Axes(atLeftAxis).MinorTickLength = 0.05
    NChart1.Axes(atLeftAxis).MinorTickLine.Color = vbYellow

  4. Axis Gridlines
    The gridlines of the axes are displayed on the chart walls. As well as the ticks the gridlines are major and minor. Their position is determined by the position of the corresponding tick they represent. The user can show the axis gridlines on more than one chart wall. The way in which gridlines are rendered resembles the way in which the axis is rendered. For example when you set the MajorLineWidth property to 0 the line is rendered like a simple line and the control uses only the MajorLineBorder properties to display it. Otherwise the grid line is rendered like a bar and the control assigns also the MajorLineFillEffect and MajorLineMaterial properties to it. The same is also valid for the minor lines. You can control the walls on which gridlines are displayed with the help of the SetMajorShowAtWall and SetMinorShowAtWall methods of the NAxis object. For the vertical axes these methods accept only the four vertical walls. For the Category axis these methods accept the back wall, the floor wall and the front wall. For the Series axis the same methods will accept the left wall, the chart floor and the right wall. You can also query whether a line is displayed on a particular wall with the GetMajorShowAtWall and GetMinorShowAtWall methods of the NAxis object.
    The following example hides the left axis major gridlines from the back wall and makes them red (by default the left axis gridlines are also displayed on the left wall):

    NChart1.Axes(atLeftAxis).SetMajorShowAtWall cwtBack, False
    NChart1.Axes(atLeftAxis).MajorLineBorder.Color = vbRed

  5. Axis Title
    The title of the axis is an arbitrary text accessible from the Title property of the NAxis object. The appearance of the axis title can be controlled with the NTextEx object, accessible from the TitleTextEx method. The following example sets a red title on the left axis.

    NChart1.Axes(atLeftAxis).Title = "Values"
    NChart1.Axes(atLeftAxis).TitleTextEx.Extrusion = 0.2
    NChart1.Axes(atLeftAxis).TitleTextEx.FillEffect.SetSolidColor vbRed

  6. Axis Scale
    All axes can work in four scale modes - Dimension, Value, Logarithmic and Date Time. The scale mode of the axis is controlled by the ScaleMode property. It accepts the following values asmDimension, asmValue, asmLogarithmic, asmDateTime. The following code switches the categories axis is Value scale mode:

    NChart1.Axes(atCategoriesAxis).ScaleMode = asmValue

    Independently of the axis scale mode you can invert the axis with the Inverted property.

    1. Dimension scale mode
      When the axis works in Dimension mode it shows the labels of the corresponding axis collection (Categories, Series and Levels). The maximal value of the axis is then the size of the respective collection and the minimal value is always 0. By default only the Categories and Series axes are working in this scale mode. The NumberOfDataPointsBetweenTicks property controls the number of dimensions between the major ticks on the axis. By default it is set to 1, which means for example that there is a major tick for each category. By increasing this value you can display several categories between two major ticks. The following example demonstrates how you can control number of categories displayed between two major ticks.

      NChart1.Axes(atCategoriesAxis). NumberOfDataPointsBetweenTicks = 2

      By default the data points are displayed between the ticks. Sometimes it is useful to display them exactly on the ticks. This can be done by switching off the DisplayDataPointsBetweenTicks property.

      NChart1.Axes(atCategoriesAxis). DisplayDataPointsBetweenTicks = False

    2. Value Scale Mode
      When the axis works in Value mode it works like a ruler and the minimal and maximal values that it shows are by default taken from the presentation groups shown on this axis. The type of the presentation group influences the minimal and maximal values of the axis - this means that for the same data a group bar chart and a stack bar chart will have different minimal and maximal values on the axis. If the default behavior does not satisfy your particular needs you can also set the minimal and maximal values manually with the help of the AutoMax, AutoMin, Max and Min properties. The following code scale the left axis always from 0 to 120

      NChart1.Axes(atLeftAxis).AutoMin = False
      NChart1.Axes(atLeftAxis).AutoMax = False
      NChart1.Axes(atLeftAxis).Min = 0
      NChart1.Axes(atLeftAxis).Max = 120

      If you are not satisfied by the default axis step you can manually set one with the help of the AutoStep and Step properties. The following code manually sets the step to 10.

      NChart.Axes(atLeftAxis).AutoStep = False
      NChart.Axes(atLeftAxis).Step = 10

      When the axis determines the step of the major ruler ticks it takes into account the MaxTickCount property trough which you can control the density of the ruler ticks. Although the actual number of the ruler ticks may not be equal to the value specified by the MaxTickCount property it is guarantied that it will never exceed it. When the RoundToTick property is turned on the minimal and maximal values of the axis are inflated to exactly end on a tick value. The following example changes the granularity of the axis ticks and rounds the scale to exactly end on a tick value:

      NChart1.Axes(atLeftAxis).MaxTickCount = 20
      NChart1.Axes(atLeftAxis).RoundToTick = True

      The FormatString property controls the formatting of the ruler values. By default the values are formatted with 2 decimal places, commas between the thousands and no division. The following code formats the axis texts with 1 decimal place.

      NChart1.Axes(atLeftAxis).FormatString = "%V(1,TRUE,1)"

    3. Logarithm Scale Mode
      When you switch the axis in logarithm scale mode the axis scales the values on the axis in logarithmic manner. The user is able to control the logarithm base with the help of the LogarithmBase property. The following code sets the logarithm base of the left axis to 2.

      NChart1.Axes(atLeftAxis).LogarithmBase = 2

      The step of the axis also can be switched in two modes trough the LogarithmStepMode property. The first one is lsmExponent. In this mode the ticks on the axis are exact products of the logarithm base. The user is not able to manually set axis step in this mode.

      When the step mode is switched to lsmFixed then the ticks values are increased with a fixed value (as in a normal value scale mode). The user is then able to manually set the axis step.

    4. Date Time Mode
      By its nature the Date Time scale mode is the same as the Value scale mode, but a different formatting can be applied on the ruler texts. The FormatString accepts the %D() formatting command, which takes as a parameter the desired date time formatting. For example the following code will display the category axis date-time values with the default short date format for the current machine.

      NChart1.Axes(atCategoriesAxis).FormatString = "%D(%x)"

      For more information about format strings see the Formatting Commands topic.
      In practice you will frequently need to manually set the step of the date-time axes. Instead of specifying human unreadable double values for the axis step (date and time are internally represented by double values) you can use the helper method SetStepDateTime. The user can get human readable information about the current date time step with the GetStepDateTime method. The following code sets the categories axis step to 3 days and 4 hours.

      NChart1.Axes(atCategoriesAxis).AutoStep = False
      NChart1.Axes(atCategoriesAxis).SetStepDateTime 3, 4, 0, 0 ' 3 days, 4 hours, 0 minutes, 0 seconds

      The SetMinDateTime, SetMaxDateTime, GetMinDateTime and GetMaxDateTime methods perform analogous operations to the min and max values of the axis (when they are switched in manual mode).

  7. Axis Position
    The position of the axis can be controlled in two aspects - static and dynamic.

    Static axis positioning includes the begin and end percent of the axis as well as the axis offset from its original position. The PositionOffset; PositionStartPercent; PositionEndPercent properties control the static axis positioning. Static axis positioning is very useful if you want to split the chart to two or more charts. The following image demonstrates the static axis positioning for the creation of two trend charts positioned at different elevations.

    figure 2.

    Dynamic axis positioning on the other hand is used to position the axis on a particular value of another axis. With the help of the PositionAxis method you can for example display the left axis always at value 0 of the categories axis and vice versa. The following code will cross the left and category axis at the 0.

    NChart1.Axes(atLeftAxis).PositionAxis atCategoriesAxis, 0, True
    NChart1.Axes(atCategoriesAxis).PositionAxis atLeftAxis, 0, True

    You can also use dynamic axis positioning to display the axes "before" or "after" the chart. This is achieved, when you position the desired axes at the min or max value of the series axis. If the series axis has one series the following code will position the left and categories axes at the chart back.

    NChart1.Axes(atLeftAxis).PositionAxis atSeriesAxis, 1, True
    NChart1.Axes(atCategoriesAxis).PositionAxis atSeriesAxis, 1, True

    The following image demonstrates the usage of the dynamic axis positioning.

    figure 3.

    Relateted Examples The examples located in the Examples\NChart\VB\Axis directory demonstrate the axis handling.


Axis Stripes

Stripes are one of the most useful objects when it comes to highlighting information in the chart area. They allow you to highlight a range of values associated with any of the axes by drawing a stripe at a user specified chart wall.

Each axis has a collection of NAxisStripe objects accessible with the Stripes method of the NAxis object. The following code adds one stripe to the left axis.

Dim stripe As NAxisStripe
Set stripe = NChart1.Axes(atLeftAxis).Stripes.Add()

Each NAxisStripe object holds information about the stripe begin and end values, as well as the stripe fill effect, material and walls on which it will be displayed. The user controls the begin and end values of the axis stripe with the help of the From and To properties.

stripe.From = 10
stripe.To = 30

The range of the axis stripe is automatically clamped to the current axis scale range.

The SetShowAtWall method helps you display the axis stripe at the adjacent chart walls. The vertical axis stripes accept only the four vertical chart walls. The category axis stripes accepts only the chart floor and the front and back walls. The series axis accepts the chart floor and the left and right walls. The following code shows the stripe on the back and right axes.

stripe.SetShowAtWall cwtBack, True
stripe.SetShowAtWall cwtRight, True

The FillEffect and Material methods of the NAxisStripe object help you specify the axis stripe filling. The following code makes the stripe filling blue.

stripe.FillEffect.SetSolidColor vbBlue
stripe.Material.SetAmbientDiffuseColor vbBlue

The image on figure 1 shows a typical example of the usage of axis stripes.

Related Examples. The example located in the Examples\NChart\VB\Axis\Stripes directory holds an example of the usage of stripes.


Axis Const Lines

Axis const lines are lines displayed at custom axis values. Each const line is represented by a object.

The Value property helps you specify the value on which you want to display the line. The LineProps method gives you access to the NLineProperties object controlling the visual appearance of the const line.

Each axis has a NAxisConstLineCollection object accessible trough the ConstLines method of the NAxis object.

The following code creates a red const line on the left axis displayed at value 5.

Dim line As NConstLine
Set line = NChart1.Axes(atLeftAxis).ConstLines.Add()
line.Value = 5
line.LineProps.Color = vbRed

The image on figure 1 shows a typical example of the usage of axis const lines.

figure 1

Related Examples. The example located in the Examples\NChart\VB\Axis\ConstLines directory demonstrates the usage of const lines.


Chart Walls

There are five chart walls in the 3DChart component and all of them can be arbitrary hidden. Four of them are vertical and surround the fifth one - the chart floor. They are all instances of the NChartWall object. The user gains access to individual instances with the help of the NChart object. The Walls method takes one parameter - the chart wall you want to access. Valid values are cwtLeft, cwtBack, cwtRight, cwtFront and cwtFloor. For example if you want to access the right wall you will write the following code.

Dim rightwall As NChartWall
Set rightwall = NChart1.Walls(cwtRight)

With the help of the NChartWall object the user is able to control various aspects of the chart walls including their visibility, width, fill effect, material and border properties. The code below changes some properties of the right chart wall.

rightwall.Visible = True ' show the wall
rightwall.Width = 0.10 ' make it thicker

' and set red fill effect and material
rightwall.FillEffect.SetSolidColor vbRed
rightwall.Material.SetAmbientDiffuseColor vbRed


ADO Database Integration

The 3DChart component supports database integration mode in which the data shown by the component is extracted from an ADO compatible database.

The first step is to turn on 3DChart database integration with the help of the Enable flag of the NDatabase object.

' enable database integration
Dim database As NDatabase
Set database = NChart1.GetDatabase()
database.Enable = True

The next step is to create a data source from which you will extract the data. The NDatabase object has a collection of NDataSource objects which is accessible with the help of the DataSources method.

Each data source (represented by a NDataSource object) contains connection information and the SQL statement, which should be executed. For the purpose of this topic lets assume that we have an Access database, which has a table called "Table1" and you have made a System DSN entry for this database in the ODBC manager called "temp". The TestConnection and TestSQL methods help you verify the connection and SQL information of the NDataSource.

The following code demonstrates how you can create a data source containing all the values from Table1.

' create a datasource from which to extract the data
Dim datasource As NDataSource
Set datasource = database.DataSources.Add("temp_database")
datasource.ConnectString = "DSN=temp"

If datasource.TestConnection() = False Then
MsgBox "The connect string is not valid. Check whether you created the temp System DSN in the ODBC manager."
Exit Sub
End If

' set the SQL statement
datasource.SQL = "select * from Table1"

If datasource.TestSQL() = False Then
MsgBox "The SQL statement is not valid"
NChart1.Redraw = True
Exit Sub
End If

Although you might have more than one data source created only one of them is active. Selecting the currently active data source is achieved with the CurrentDataSource property of the NDatabase object.

' select this datasource
database.CurrentDataSource = 0

Lets assume that the "Table1" table has the following fields:

Field Name | Field Type
Serie1Level1 | Number
Serie1Level2 | Number
Serie2Level1 | Number
Serie2Level2 | Number
Category | Text

Each data source has a property called CategoryField, which specifies the recordset field from which the component will extract the labels of the categories. The following piece of code sets the category field of the data source.

' category labels are extracted from the Category field

datasource.CategoryField = "Category"

Each data source has a collection of serie mappings (represented by NSerieMapping objects), which defines how many series will the chart have and from which fields of the recordset are the serie values extracted. The SerieMappings method of the NDataSource object gives you access to individual NSerieMapping objects.

Each serie mapping object has a property called LevelCount specifying the number of the data levels for this serie. The number of Levels that the data storage will have is the maximum number of serie mapping level count. For example if we have two serie mapping object with level counts 2 and 3 the data storage will have 3 levels. The following code creates two serie mapping objects with 2 levels and maps the appropriate values to the fields of the table.

' create the first serie mapping with a visible label "This year"
Dim seriemapping As NSerieMapping
Set seriemapping = datasource.SerieMappings.Add("This year", True)

' the first serie has two levels
seriemapping.LevelCount = 2

' the Value1 values of the first level are extracted from the "Serie1Level1" field
seriemapping.MapLevel 0, dvtValue1, "Serie1Level1"
seriemapping.MapLevel 1, dvtValue1, "Serie1Level2"

' create the second serie mapping
Set seriemapping = datasource.SerieMappings.Add("Last year", True)

' the second serie also has two levels
seriemapping.LevelCount = 2

seriemapping.MapLevel 0, dvtValue1, "Serie2Level1"
seriemapping.MapLevel 1, dvtValue1, "Serie2Level2"

And finally after you have created the datasource and the serie mapping you have to call the Requery method of the database object to extract the values from the database and fill the data storage with them.

NChart1.GetDatabase.Requery()

This topic uses code taken from the Database example for VB supplied with the 3DChart component.

Related Examples. The Examples\NChart\VB\Database folder contains an example demonstrating the database integration.


Configuring the legend

3DChart has an integrated legend that can display various information about the chart. The flexible design of the integrated legend helps you to customize the displayed data with ease.

The NLegend object encapsulates the legend functionality. The user can gain access to the chart legend object with the help of the Legend method of the NChart object.

Dim legend As NLegend
Set legend = NChart1.Legend()

Currently the legend can operate in three modes: lmDisabled, lmAutomatic and lmManual. To change the legend mode you must modify the LegendMode property of the NLegend object. For example the following line of VB code disables the legend:

legend.LegendMode = lmDisabled

It is easy to guess that in lmDisabled mode the legend is not displayed, but how do the other modes function?

In lmAutomatic the legend displays information supplied by the presentation groups. Each presentation group has a NPresentGroupCommon object, which has several properties concerning the legend automatic mode. The first one is ShowInLegend. It controls whether the presentation group adds any entries to the chart legend. The LegendMode property controls what data about the presentation group is displayed in the chart legend. The following table gives explanation to the different presentation group legend modes.

Legend Mode | Comment
pglmCategories | The group will add in the legend the category labels of the categories in the presentation group range. The fill effect of the legend marks will be synchronized with the fill effect of the items
pglmSeries | The group will add in the legend the serie labels of the series in the presentation group range. The fill effect of the legend marks will be synchronized with the fill effect of the items
pglmDataItems | The group will add in the legend all data items in the presentation group range and format the legend texts with the LegendFormatString
pglmUniformAppearances | The group will add the Uniform Appearances in the legend. The legend mark labels will display the names the of the Uniform Appearances.
pglmPresentationGroup | The group will add only one item in the legend and the label of this item will be the name of the presentation group.
pglmPresentationGroupCustom | The group will add group specific information

Choosing lmAutomatic is most appropriate if the information that you want to display is contained in some way in the chart e.g. when you want to display categories, series, data items, uniform appearances or presentation groups in the integrated legend.

If you want to display some other information you should choose lmManual and feed the data in the legend manually. Each legend data item is represented by a NLegendData object. The legend data items are contained in a NLegendDataItemCollection object accessible with the help of the LegendDataCollection method of the NLegend object. Each NLegendData object has properties controlling the legend mark shape, text, mark fill effect, mark border and line properties.

Important: You are not able to pass data in the legend through the object if the legend is not in lmManual state. You must also have in mind that every time you change the legend mode the legend automatically deletes all manual items. This is why for example the following code will clear the legend:

NChart1.Legend.LegendMode = lmAutomatic NChart1.Legend.LegendMode = lmManual

After choosing the legend mode you may also want to alter the position of the legend. To achieve this you must modify the LegendPlacement property. The possible values are lpBottom, lpCorner, lpTop, lpRight, lpLeft, and lpManual. The first five modes align the legend to one of the controls window's edges. In this case the distance between the legend and the window edge is controlled by the MarginX, MarginY properties. They are given in percents of the control window width and height respectively. For example the following code will position the legend in the upper right corner of the window and offset it with 10 of the window's width and height:

NChart1.Legend.LegendPlacement = lpCorner NChart1.Legend.MarginX = 10 NChart1.Legend.MarginY = 10

The lpManual mode allows you to arbitrary position the legend in the control window. In this mode the PositionX and PositionY properties move the legend along the X and Y axes.

At this point you have a configured legend. Additional customization can be achieved by modifying the NFillEffect object associated with the legend plane. You access the fill effect through the BaseFillEffect method of the NLegend object. For example:

NChart1.Legend.BaseFillEffect.SetGradient gsHorizontal, gvVariant1, vbWhite, vbBlack

will apply a gradient on the legend base. The same is valid for the legend shadow. You access the NFillEffect and NLineProperties of the shadow using the ShadowFillEffect and ShadowBorder methods of the NLegend object.

If you want to hide the legend base or shadow you may consider using the HasBase, HasShadow properties. For example:

NChart1.Legend.HasShadow = FALSE 'hides the legend shadow.

Related Examples. The example located in the Examples\NChart\VB\Legend folder demonstrates the usage of the legend.


Step by Step Guidelines

This topic discusses a simple scenario for creating a chart with the 3DChart ActiveX control. If you are interested in seeing some real code you can look at the examples for Visual Basic and Visual C++ that come along with this ActiveX product. The examples come with numerous comments describing the actual effect of the code and are a nice and useful tutorial.

  1. Initially the data storage has one level but has no categories and series.

    Example:
    NChart1.Categories.Add “New York”, True
    NChart1.Categories.Add “Chicago”, True
    NChart1.Categories.Add “Philadelphia”, True

    NChart1.Series.Add “Data 1”, True
    NChart1.Series.Add “Data 2”, True
    NChart1.Series.Add “Data 3”, True

    After those lines of code the data storage will have the following dimensions: X = 3, Y = 3, Z = 1. You can achieve the same effect from the Data Property Page.

  2. Controlling the size of the chart along the chart dimensions is easy. You can do that from the General Property Page. The following code makes the charts height bigger:

    NChart1.ChartHeight = 3

  3. Now lets change some values in the data storage. You can do that by directly editing the Data Grid in the Data Property Page or with the following commands:

    NChart1.DataAt(0, 0, 0).Value = 12
    NChart1.DataAt (1, 1, 1).Value = 6

  4. Well you have some data, so now is the time to present it somehow. Let’s create a bar chart. You can do that from the Presentation Groups Property Page by clicking the Add.. button. Then you can just follow the Add Presentation Group Wizard. Programmatically you do that with the following code:

    Dim Bar As NBarPresentGroup
    Set Bar = NChart1.PresentGroups.Add(pgtBar)

  5. Applying fill effects and materials on data points can be done in two ways. The first one directly assigns fill effects and materials on the items in the data storage:

    NChart1.DataAt(0, 0, 0).FillEffect.SetSolidColor vbRed
    NChart1.DataAt(1, 1, 1).FillEffect.SetSolidColor vbBlue
    The other one involves Uniform Appearances and is used like this:

    ‘ enable Uniform Appearances and make all bars red
    bar.Common.EnableUniformAppearance = True
    bar.Common.UniformAppearances.GetAt(0).FillEffect.SetSolidColor vbRed

  6. You can control the chart walls from the Walls Property Page or with code similar to that:

    NChart1.Walls(cwtFloor).Visible = True
    NChart1.Walls(cwtFloor).Width = 0.10
    This code for example will make the chart floor bigger.


Formatting Commands

In general there are two types of texts displayed by the 3DChart component - dynamic and static. Static texts are user specified and do not depend on the data values - for examples the labels on the categories. The other one are dynamic - for example texts on the ruler axes and the texts of each data item. The user can apply formatting on them. The formatting commands of the 3DChart component can be divided in three categories.

1. String formatting commands. These formatting commands are used when the user wants to display a user specified string in the formatted text. They do not accept any parameters. The most typical example is the format string of the data points accessible with the help of the FormatString property of the NPresentGroupCommon object. The L command there inserts the label of the data point in the formatted text.

common.FormatString = "%L"

The other usage of the String Formatting commands is to insert a new line or the special format character % in the formatted text. For example

common.FormatString = " %% %N"

will produce the % string and new line.

2. Value formatting commands. Value formatting commands are used to format double values. These commands are available in two variants. The first one has one parameter specifying the precision of the formatted value (how many digits are there after the decimal point). A typical example is the P command in the pie presentation group, which displays the percent contribution of each data item to the total amount.

pie.Common.FormatString = "%P(2) %%" 'display percent with 2 digit precision

The second variant of the of the value formatting command has three parameters - the first one is the decimal precision. The second one specifies whether the value should be formatted with commas separating the thousands. It accepts only the True and False values. The third parameter is a division value which is used to divide the value before it is displayed. This parameter can be used if you want to display data items that contain large numbers (millions for example). In this case instead of displaying the ruler axis with these large numbers you can divide the values by 1 million and add an explanatory string to the axis title stating that the values are in millions. For example:

NChart1.Axes(atLeftAxis).FormatString = "%V(2,True,1000000)" 'ruler values have 2 decimal digits after the decimal point, thousands are separated with commas and value is divided by 1 million before it is displayed

4. Date Time formatting Commands - date time formatting commands are used when you want to display date time strings in the component. They accept only one parameter, which specifies the formatting of the date time value. Following is a list of the accepted formatting parameters of the date time format command.

%a
Abbreviated weekday name

%A
Full weekday name

%b
Abbreviated month name

%B
Full month name

%c
Date and time representation appropriate for locale

%d
Day of month as decimal number (01 - 31)

%H
Hour in 24-hour format (00 - 23)

%I
Hour in 12-hour format (01 - 12)

%j
Day of year as decimal number (001 - 366)

%m
Month as decimal number (01 - 12)

%M
Minute as decimal number (00 - 59)

%p
Current locale's A.M./P.M. indicator for 12-hour clock

%S
Second as decimal number (00 - 59)

%U
Week of year as decimal number, with Sunday as first day of week (00 - 53)

%w
Weekday as decimal number (0 - 6; Sunday is 0)

%W
Week of year as decimal number, with Monday as first day of week (00 - 53)

%x
Date representation for current locale

%X
Time representation for current locale

%y
Year without century, as decimal number (00 - 99)

%Y
Year with century, as decimal number

%z, %Z
Time-zone name or abbreviation; no characters if time zone is unknown

For example setting the format parameter to %c will display the date time values in the format for the current locale.

NChart1.Axes(atCategoriesAxis).ScaleMode = smDateTime
NChart1.Axes(atCategoriesAxis).FormatString = "%D(%c)"

Formatting commands are used in many places where you need to specify the format of the data you want. The following table gives an explanation of the supported formatting commands in the different format strings

Object

Formatting Commands Supported

NAxis::FormatString

%V(dec,commas,division) - show the value as a double formatted value

%D(format) - show the value as date time

NPresentGroupCommon::FormatString

NPresentGroupCommon::LegendFormatString

%1(dec,commas,division) - show value1

%2(dec,commas,division) - show value1

%3(dec,commas,division) - show value1

%4(dec,commas,division) - show value1

%5(dec,commas,division) - show value1

%6(dec,commas,division) - show value1

%D1(format) - show value1 as date time

%D2(format) - show value2 as date time

%D3(format) - show value3 as date time

%D4(format) - show value4 as date time

%D5(format) - show value5 as date time

%D6(format) - show value6 as date time

%L - show the label of the data point

Special

%P(dec) - supported by presentation groups that display the data point percent contribution to the overall sum (pie, stack bar, stack area, stack line)

%C(dec,commas,division) - supported by presentation groups that display the current sum (cumulative value) of the data point (stack bar, stack area, stack line)

%P1(dec,commas,division), %P2(dec,commas,division) - supported by the surface to show the palette entries when the legend is in custom mode.


Bar Chart

Overview. Single and multi column bar charts are created with the help of the NBarPresentGroup object. In both cases the user is able to control the shape of the bars, their origin point and the axis on which they are scaled. The NBarPresentGroup must be created in the presentation groups collection with code similar to this:

NChart1.PresentGroups.Add pgBar

Data Requirements. Bar charts need major data type 1 (at least one value).

Data Usage. The NBarPresentGroup uses Value1 as the value of each bar

Creating Single Column Bar Charts. The NBarPresentGroup object automatically creates a single column chart if the range of the presentation group occupies only one level or the data storage itself has only one level. The following snapshot demonstrates the usage of the NBarPresentGroup to display a single column chart:

figure 1.

The style of the bars in this case is smooth edge bar. The user is able to choose from the following bar styles: Bar, Cylinder, Cone, Inverted Cone, Pyramid, Inverted Pyramid and Smooth Edge Bar. The following example changes the style to Inverted Pyramid:

Dim bar As NBarPresentGroup
Set bar = NChart1. PresentGroups.GetAt(0)
bar.BarStyle = bsInvertedPyramid

When the style of the bars is set to smooth edge bar the user is able to modify the BarEdgePercent property of the NBarPresentGroup, which controls the size of the smooth edge in percents from the smaller bar dimension (width or depth).

The width and depth of the bars is controlled with the help of the WidthPercent and DepthPercent properties respectively.

The bar chart on figure1 has different fill effects and material properties for each individual data item. Sometimes though you might need to display all the bars with only one fill effect and material. In this case you must use the uniform appearances of the NBarPresentGroup. The following code turns on the Uniform Appearances for the bar present group:

bar.Common.EnableUniformAppearance = True

By default the uniform appearances of the NBarPresentGroup have only one item. This item is used to specify the appearance of all bars within the same presentation groups and by default is initialized with red solid color fill effect and red material. if you create more items in the uniform appearance collection the NBarPresentGroup will distribute them along the categories of the chart. For example if you create one more uniform appearance the uniform appearance collection will have two items. In this case the bars located on categories 1, 3 and 5 will have uniform appearance 1 and the bars located on categories 2 and 4 will be visualized with uniform appearance 2.

Creating Multi Column Bar Charts. Multi column bar charts are automatically created when the range of the NBarPresentGroup occupies more than one level. The number of columns in each chart cell is determined by the number of the levels covered by the presentation group range. The following snapshot demonstrates the usage of the NBarPresentGroup to display a multi column chart:

figure 2.

In this case the data storage of the 3DChart component has 2 levels, 4 categories and 1serie. The items from the first level are represented by the red bars while the items from the second level are represented from the green ones.

The user can control the distance between the chart columns with the help of the GapPercent property of the NBarPresentGroup object.

In practice it is often required to show columns that represent data from different measures. Figure 2 shows the typical dollar and unit sales chart, where it is necessary to scale the units on a different axis (the so called secondary axis), because if both columns are scaled on the left axis the unit sales cylinders will be very small and the chart will become unreadable. To help you solve this problem the NBarPresentGroup object has three methods, which help you map and unmap levels of the data storage to different chart axes. If a level does not have an explicit secondary axis specified then the default present group axis is used (the left axis by default). The following code maps the unit sales (level 1) on the right chart axis:

bar.MapLevelAxis 1, atRightAxis

If you want to remove a level from a secondary axis then you can use the UnmapLevel function:

bar.UnmapLevel 1 ' Level 1 is now not mapped to any secondary axis

And finally you can query on which axis is a specific level mapped with the help of the GetLevelAxis mehtod:

Dim axis As AxisType
bar.GetLevelAxis 1, axis

In the case of multi column bar charts the uniform appearances are distributed across the levels of the chart. The chart on figure 2 has two uniform appearances with red and green fill effects and materials. The labels of these appearances are set to "Dollar Sales" and "Unit Sales" respectively. And finally the legend is instructed to show the uniform appearances:

bar.Common.LegendMode = pglmUniformAppearances

It is often required to show large numbers with small difference between one another. For example a chart with three values 1 000 001, 1 000 002, 1 000 010 will produce three bars with visually equal height because the relative difference between the data values is too small. In these cases you need to use origins to fix the problem. Two methods of the NBarPresentGroup help you deal with origins. The first is SetLevelOrigin. With it you set an origin value for a particular level and the mode in which it will be used. If the level origin mode is turned on then the origin of the bars displayed for this level will be the specified origin value. If the level origin mode is turned off then the origin will be the minimal value of the level. The following code sets the origin of the dollar sales bars to 50 (see figure 2).

bar.SetLevelOrigin 0, 50, True

If you use the same call with False for the UseOrigin parameter, then the red bars will begin from 100 (the minimum of level 0). By default the origin for all columns is 0.

Creating Horizontal Charts. Horizontal bar charts are created in the same way as vertical bar charts, but need different settings for the axis text positions and the viewer projection. The following image represents a horizontal bar chart:

figure 3.

The 3DChart component has several predefined projection types, which greatly simplify the creation of horizontal charts. The image on figure 3 was created with the pp2DHorizontalLeft predefined projection type. The following code sets this projection:

NChart1.Get3DView.SetPredefinedProjection pp2DHorizontalLeft

The axis texts also have three predefined position settings. The image on figure 3 uses patpHorizontalLeft predefined text position for the texts on the categories and front axes. The following code sets these predefined positions.

NChart1.Axes(atFrontAxis).SetPredefinedTextPosition patpHorizontalLeft
NChart1.Axes(atCategoriesAxis).SetPredefinedTextPosition patpHorizontalLeft

Related Examples. Probably the best tutorial on creating bar charts is the supplied example located in the Examples\NChart\VB\PresentationGroups\Bar directory.


Stack Bar Chart

Overview. The stack bar charts are created with the help of the NStackBarPresentGroup object. The user is able to control the width and depth of the stacks in percents of the chart cell. Stacked and Stacked Percent stack styles are supported. The shape of the stack items can be one of the following: bar, cylinder, cone, inverted cone, pyramid, inverted pyramid or smooth edge bar.

Data Requirements. Stack Bar charts need major data type 1 (at least one value).

Data Usage. The NStackBarPresentGroup uses Value1 as the value of each bar

Creating Stack Charts. Stack charts are automatically created when the range of the NStackBarPresentGroup occupy more than one data level. The following snapshot shows a smooth edge stack bar chart.

figure 1.

The width and the depth of stacks are controlled with the help of the WidthPercent and DepthPercent properties of the NStackBarPresentGroup object.

Uniform appearances are distributed across the levels. The image on figure 1 was created with the help of three uniform appearances with red, blue and green fill effects and materials. The legend of the component has also been instructed to show the uniform appearances of the presentation group with the following code:

Dim bar As NStackBarPresentGroup
Set bar = NChar1.PresentGroups.GetAt(0)
bar.Common.LegendMode = pglmUniformAppearances

Creating Stack Percent Charts. Stacked percent charts are created when you set the StackStyle property of the NStackBarPresentGroup object to ssStackedPercent. The image on figure 2 shows stacked bar chart.

figure 2

In stacked percent charts each stack represents the contribution of the value to 100% of the total bars value sum. Although the presentation group will automatically scale the axis from 0 to 100 you must manually add a percent sign to the axis texts. The following code sets the percent sign on the left axis:

NChart1.Axes(atLeftAxis).FormatString = "%V(2, TRUE, 1) %%"

The texts on each stack can also be configured to show different values. Figure 2 demonstrates the percent format command. The following code instructs the NStackPresentGroup to show the percent values on the stacks:

Dim bar As NStackBarPresentGroup
Set bar = NChart1.PresentGroups.GetAt(0)
bar.Common.HasTexts = True
bar.Common.FormatString = "%P(2) %%"

Except the percent values you can instruct the NStackPresentGroup to show cumulative values on the stack with the following code:

bar.Common.FormatString = "%C(2,TRUE,1)"

Creating Horizontal Stack Charts. Horizontal bar stack charts are created in the same way as vertical stack bar charts, but need different settings for the axis text positions and the viewer projection. The following image represents a horizontal stack bar chart:

figure 3.

The 3DChart component has several predefined projection types, which greatly simplify the creation of horizontal charts. The image on figure 3 was created with the pp2DHorizontalLeft predefined projection type. The following code sets this projection:

NChart1.Get3DView.SetPredefinedProjection pp2DHorizontalLeft

The axis texts also have three predefined position settings. The image on figure 3 uses patpHorizontalLeft predefined text position for the texts on the categories and front axes. The following code sets these predefined positions.

NChart1.Axes(atFrontAxis).SetPredefinedTextPosition patpHorizontalLeft
NChart1.Axes(atCategoriesAxis).SetPredefinedTextPosition patpHorizontalLeft

Related Examples. The example located in the Examples\NChart\VB\PresentationGroups\StackBar directory shows the usage of the NStackBarPresentGroup.


Area Chart

Overiview. Area charts are created with the help of the NAreaPresentGroup object. The user is able to control the area depth, origin and visibility of the lines between the area segments. The NAreaPresentGroup must be created in the presentation groups collection with code similar to this:

NChart1.PresentGroups.Add pgtArea

Data Requirements. Area charts require major type 1(at least one value)

Data Usage. Value1 is the value of the area.

Creating Multi Serie Area Charts. The image displayed on figure 1 demonstrates the usage of the NAreaPresentGroup object for the creation of area charts:

figure 1.

The lines between the area segments can be hidden or shown with the help of the DropLines property of the NAreaPresentGroup. The DepthPercent property controls the depth of the areas in percents of the chart cell depth.

Other two properties - UseOrigin and Origin determine the origin point of the area. By default the area chart uses origin 0.

Uniform appearances are distributed across chart series. The chart on figure one was created with three uniform appearances. The legend has also been configured to show the uniform appearances of the NAreaPresentGroup. The following code instructs the legend to show the uniform appearances of the are present group:

Dim area As NAreaPresentGroup
Set area = NChart1.PresentGroups.GetAt(0)
area.Common.LegendMode = pglmUniformAppearances

Related Examples. Tthe Examples\NChart\VB\PresentationGroups\Area directory contains an example demonstrating the usage of the NAreaPresentGroup.


Stack Area Chart

Overiview. Stack Area charts are created with the help of the NStackAreaPresentGroup object. The user is able to control the area depth, visibility of the lines between the area segments and stacking style. The NStackAreaPresentGroup must be created in the presentation groups collection with code similar to this:

NChart1.PresentGroups.Add pgtStackArea

Data Requirements. Area charts require major type 1(at least one value)

Data Usage. Value1 is the value of the area.

Creating Stack Area Charts. Stack area charts are created automatically by the NStackAreaPresentGroup object when its range occupies more than one data level. The following snapshot shows a stack area chart created with the 3DChart component.

figure 1

The uniform appearance of the NStackAreaPresentGroup are distributed along the data levels occupied by the presentation group range. The stack area chart on figure 1 has three uniform appearances with different gradient fill effects. The DropLines property of the NStackAreaPresentGroup object has been turned on. In order to show the uniform appearances in the chart legend the present group legend mode has been switched to pglmUniformAppearances.

Creating Percent Stack Area Charts. Percent stack area charts are created in the same way as ordinary stack charts, but the StackStyle property has been set to ssStackedPercent. The following image shows a percent stack area chart.

figure 2

Figure 2 also illustrates the usage of the special format string for percent stacks - the percent value. You can show the percentage of each stack area with code similar to this:

Dim area As NStackAreaPresentGroup
Set area = NChart1.PresentGroups.GetAt(0)
area.Common.HasText = True
area.Common.FormatString = "%P(0) %%"

Related examples. You can see the NStackAreaPresentGroup in action in the VB example located in Examples\NChart\VB\PresentationGroups\StackArea directory.


Line Chart

Overview. Line charts are created with the help of the NLinePresentGroup object. The line itself can be displayed in three styles: as tube, tape or simple line. The width of the line can be controlled. The NLinePresentGroup object can be instructed to display data points in various styles and the user can control their size. The position of the data items across the Category axis can be explicitly specified - this feature is very helpful if your category axis is switched in DateTime mode.

Data Requirements. Area charts require major type 1 or 2 if the UseXValue property has been turned on.

Data Usage. Value1 is the elevation of the current data point. Value2 is the X position of the data point If the UseXValue property has been turned on.

Creating Simple Line Charts. Simple line charts are automatically created from the NLinePresentGroup object. By default the style of the line is lpsTape and the data value points are not displayed. Figure 1 shows a line chart with tape style and bar data point marks.

figure 1.

You can easily change the style of the line to tube with the following code:

Dim line As NLinePresentGroup
Set line = NChart1.PresentGroups.GetAt(0)
line.LineStyle = lpsTube

The visibility of the data points is controlled by the HasValuePoints property. The following code displays the data points:

line.HasValuePoints = True

The style of the data points is controlled by the PointStyle property, and finally you can also control the width of the line and the size of the data points with the PointSize and LineWidth properties.

The uniform appearances of the NLinePresenetGroup need special explanation. First of all they are created in pairs - one for the line part of the line and one for the data point. The uniform appearances are distributed in pairs across the series occupied by the data range. The line chart on figure 1 has four uniform appearances - two for each serie. Appearances 1 and 3 define the visual effects displayed on the tapes, while appearances 2 and 4 define the visual effects applied on the data points. The following code creates two appearances and assigns visual effects on them (there are two appearances by default).

line.Common.UniformAppearances.Add "Line"
line.Common.UniformAppearances.Add "Point"

line.Common.UniformAppearances.GetAt(2).FillEffect.SetSolidColor vbRed
line.Common.UniformAppearances.GetAt(2).Material.SetAmbientDiffuseColor vbRed

line.Common.UniformAppearances.GetAt(3).FillEffect.SetSolidColor vbBlue
line.Common.UniformAppearances.GetAt(3).Material.SetAmbientDiffuseColor vbBlue

The legend of the 3DChart component can be configured to show the uniform appearance of the NLinePresentGroup. The component shows only one uniform appearance from each pair depending on the HasValuePoints property. The legend on figure 1 shows the uniform appearances applied on the data points of line. If the HasValuePoints is turned off the component will visualize only the appearances applied on the line segments and the legend will have two items with yellow and green legend marks.

Creating Date Time Line Charts. It is often required to position the value data points on irregular positions along the Categories axis. A typical example is a line chart which represents sales during the year, but the sales information has been received irregularly. Figure 2 shows a chart like this.

figure 2.

To display this chart the data storage must have a major type at least 2 (two values are required for each data point). Value1 of each data point is the elevation, while Value2 is the x position along the X axis. Value2 is not used by default, but you can turn it on with the help of the UseXValue property. The following code shows that:

Dim line As NLinePresentGroup
Set line = NChart1.PresentGroups.GetAt(0)
line.UseXValue = True

The Categories axis is by default operating in dimension scale mode. In order to scale the X values correctly you must switch the Categories axis in one of the Value Scale Modes (value, logarithmic or date time). The following code switched the Categories Axis in date time mode and applies proper formatting on the axis texts:

NChart1.Axes(atCategoriesAxis).ScaleMode = asmDateTimeScale NChart1.Axes(atCategoriesAxis).FormatString = "%D(%x)"

Figure 2 also demonstrates the usage of stagger texts to solve the overlapping category axis texts. You can turn on stagger texts with the following code:

NChart1.Axes(atCategoriesAxis).StaggerTexts = True

Related Examples. The Examples\NChart\VB\PresentationGroups\Line directory contains an example demonstrating the usage of the NLinePresentGroup object.


Stack Line Chart

Overview. Stack Line charts are created with the help of the NStackLinePresentGroup object. The line itself can be displayed in three styles as tube, tape or simple line. The width of the line can be controlled. The NStackLinePresentGroup object can be instructed to display data points in various styles and the user can control their size. Stacked and Stacked Percent stack styles are supported.

Data Requirements. Stack line charts require major type 1 (at least one value).

Data Usage. Value1 is the value of each data point.

Creating Stack Line Charts. Stack line charts are automatically created from the NStackLinePresentGroup object if the range of the group contains more than one data level. Figure 1 demonstrates a simple stack line chart.

figure 1.

The data storage on figure 1 has 1 serie, 9 categories and 2 levels. The shape of the line has been changed to tube with the following code:

Dim line As NStackLinePresentGroup
Set line = NChart1.PresentGroups.GetAt(0)
line.LineStyle = lpsTube

The data point marks has been visualized with sphere shape. The following code achieves this result:

line.HasValuePoints = True
line.PointStyle = psSphere

The uniform appearances of the NStackLinePresenetGroup are created in pairs - one for the line part of the line and one for the data point. The uniform appearances are distributed in pairs across the levels occupied by the data range. The stack line chart on figure 1 has four uniform appearances - two for each data level. Appearances 1 and 3 define the visual effects displayed on the tubes, while appearances 2 and 4 define the visual effects applied on the data points. The following code creates two appearances and assigns visual effects on them (there are two appearances by default).

line.Common.UniformAppearances.Add "Line"
line.Common.UniformAppearances.Add "Point"

line.Common.UniformAppearances.GetAt(2).FillEffect.SetSolidColor vbRed
line.Common.UniformAppearances.GetAt(2).Material.SetAmbientDiffuseColor vbRed

line.Common.UniformAppearances.GetAt(3).FillEffect.SetSolidColor vbBlue
line.Common.UniformAppearances.GetAt(3).Material.SetAmbientDiffuseColor vbBlue

The legend of the 3DChart component can be configured to show the uniform appearance of the NStackLinePresentGroup. The component shows only one uniform appearance from each pair depending on the HasValuePoints property. The legend on figure 1 shows the uniform appearances applied on the data points of line. The following code instructs the component to show the uniform appearance of the NStackLinePresentGroup:

line.Common.LegendMode = pglmUniformAppearances

If the data value points are not visualized the legend of the component will have one red and one green item each having the label assigned to the respective uniform appearance.

Creating Stack Percent Line Chart. Stack percent line charts are created in the same way as ordinary stack line charts, but you set the StackStyle property of the NStackLinePresentGroup to ssStackedPercent:

line.StackStyle = ssStackedPercent

Figure 2 shows a nice example of the stack percent line chart with displayed percents on each data point.

figure 2.

The texts on each data item show the percent contribution of each data point value to the total 100%. The following code achieves this result:

line.Common.HasTexts = True
line.Common.FormatString = "%P(0)%%" ' show the percent sign with no decimal precision

The NStackLinePresentGroup supports one more interesting text formatting command. The following code instructs the data points to show the current value sum (cumulative stack value):

line.Common.FormatString = "%C(2,TRUE,1) " ' 2 decimal places, commas on thousands and no division

Related Examples. The Examples\NChart\VB\PresentationGroups\StackLine directory contains an example demonstrating the usage of the NStackLinePresentGroup object.


Surface Chart

Overview. Surface charts are automatically created with the help of the NSurfacePresentGroup object. The surface present group supports many frame and filling variations. It can also be displayed in flat mode (contour chart) at an arbitrary vertical position.

Data Requirements. Surface charts require major type 1 (at least one value).

Data Usage. Value1 is the elevation of each data point.

Frame Styles. The NSurfacePresnentGroup object supports several frame styles including: Mesh, Contour, Mesh Contour, Dots and no frame at all. You can change the style of the frame with the FrameStyle property. The following code changes the frame style to mesh contour:

Dim surface As NSurfacePresentGroup
Set surface = NChart1.PresentGroups.GetAt(0)
surface.FrameStyle =- sfsFrameMeshContour

The user is able to render the frame with or without palette. The PaletteFrame controls this surface feature. If the PaletteFrame property is turned off the surface frame is displayed with the FrameLine properties. The following images demonstrate the different frame styles.

Meshed surface frame with no applied palette | Contour frame with applied palette.
Mesh Contour frame with applied palette | Dots frame with no palette.
Table 1

Fill Styles. The 3DChart component also supports several surface fill styles including: Mesh, Zone and no filling at all. The images on Table 1 for example are rendered with no filling at all. The fill style is controlled with the FillStyle property of the NSurfacePresentGroup. The following code enables the zone filling of the surface:

surface.FillStyle = sfsFillZone

The filling of the surface can also use a palette if the PaletteFill property is set to True. The zone filling uses palette filling by default (there is no other possible filling for zones).

When the surface is rendered in mesh style and the PaletteFill is disabled, the user is able to apply individual fill effects for every element of the surface mesh. In this mode if the Unform Appearances are enabled the user can even map a texture on the entire surface, although this operation will be time costly if the surface is rendered with big complexity.

The following table visually illustrates several types of fillings:

Mesh palette filling | Zone palette filling
Uniform mesh filling with texture | Fill effects applied on individual data items
Table 2

Palette. The 3DChart gives the user unique surface palette control. By default the surface uses automatic palette which is synchronized with the axis ticks. The advantages of this palette filling is that the component will automatically assign values to colors. Sometimes though you might to want to exactly specify the color mapped on a particular elevation. In this case you can manually set the palette entries. The first step to take in this direction is to turn off the automatic palette.

surface.AutomaticPalette = False

Several methods of the NSurfacePresentGroup help you deal with palette entries. They are PaletteAdd, PaletteGetAt, PaletteRemoveAt, PaletteRemoveAll and PaletteGetCount. The names of the methods describe exactly the effect they have on the palette. The following code creates a palette with three entries:

surface.PaletteRemoveAll
surface.PaletteAdd 10, vbRed
surface.PaletteAdd 20, vbGreen
surface.PaletteAdd 40, vbBlue

The newly created palette will map red color to value 10, green color to value 20 and blue color to value 40. As you can see one of the advantages of the custom palette is that it can map colors to irregular value intervals.

Another truly unique feature of the 3DChart surface palette is that it can be switched it smooth mode. In this mode the control gradients the palette on the surface. The following code turns on the smooth palette.

surface.SmoothPalette = True

The following images demonstrate a custom palette with disabled and enable smooth palette.

Custom palette used for the zone filling | Smooth palette used for the zone filling
Table 3

The user is also able to control the transparency of the palette with the PaletteTransparency property. The following code makes the palette 50% transparent.

surface.PaletteTransparency = 50

The following image demonstrates a transparent smooth palette zone filling.

Figure 1

Palette legend. Showing legend data items for each individual item on of the surface is not a very smart thing to do especially if the surface represents data array of thousands of elements. In most of the cases you just want to display the color mapped to a particular elevation or elevation range. That is why the surface uses the custom legend presentation type to show the current palette entries. The following code enables this legend mode.

surface.Common.LegendMode = pglmPresentationGroupCustom

The legend format string used to format the texts displayed on the legend data items supports two commands that display the palette entries. The first one is P1. The following code will show all the palette entries of the surface.

surface.Common.LegendFormatString = "%P1(2,TRUE,1)"

The other command is P2 it is used with format command P1 to show a range of values displayed with the same color. In this mode the component automatically ignores the last palette element because it is not used. The following code displays value range colors.

surface.Common.LegendFormatString = "%P1(2,TRUE,1) - %P2(2,TRUE,1)"

The pictures in Table 4 demonstrate the usage of these formatting commands to display the palette entries.

In the case of smooth palette the colors are mapped on exact values that is why we use palette legend with format P1 | Colors are mapped on value ranges that is why we use the P1 - P2 format, which does not display the last palette item (it is not used)
Table 4

Contour Chart. Contour charts are created when the DrawFlat property of the NSurfacePresentGroup is turned on.

surface.DrawFlat = True

The user is then able to position the contour at an arbitrary vertical position. Two properties control the vertical position of the control. They are PositionMode and PositionValue. The contour can be positioned in three modes: spmFloor, spmCeiling and spmCustom. When you set the PositionMode property to spmFloor or spmCeiling the component ignores the PositionValue and places the contour at the chart floor or ceiling respectively. When you set the PositionMode to spmCustom, then the contour is positioned at the specified value from PositionValue. The following code positions the surface at value 5.

surface.PositionMode = spmCustom
surface.PositionValue = 5

The following image visually represents a contour positioned at custom elevation.

Related Examples. The Examples\NChart\VB\PresentationGroups\Surface directory contains an example demonstrating the usage of the NSurfacePresentGroup object.


Point Chart

Overview. Point charts are created with the help of the NPointPresentGroup object. The user can control the point style and point size. The NPointPresentGroup can be configured to display XY and XYZ scatter charts.

Data Requirements. Point charts require major type 1, 2 or 3. Major type 2 is required when the UseXValue property is set to True. Major type 3 is required when the UseYValue property is set to True.

Data Usage. Value1 is the elevation of each data point.
Value2 is the X position of the data point if UseXValue is set to True
Value3 is the Y position of the data point if UseYValue is set to True

Creating Simple Point Charts. Simple points charts are created automatically from the NPointPresentGroup on the data range occupied by the presentation group range. The user is able to choose from the following point styles: Bar, Cylinder, Cone, Inverted Cone, Pyramid, Inverted Pyramid, Sphere, Circle and Diamond. The following code changes the point style to Sphere and sets the point size to 0.20.

Dim point As NPointPresentGroup
Set point = NChart1.PresentGroups.GetAt(0)
point.PointStyle = psSphere
point.PointSize = 0.20

The following image represents a simple points chart:

figure 1

The uniform appearances of the NPointPresentGroup are distributed across the series occupied by the presentation group range. Figure 1 has two uniform appearances, which are displayed on the chart legend. The uniform appearance collection holds one item by default. The following code creates a second uniform appearance and sets blue material and fill effect on it.

Dim appearance As NAppearance
Set appearance = point.Common.UniformAppearances.Add("Serie2")
appearance.FillEffect.SetSolidColor vbBlue
appearance.Material.SetAmbientDiffuseColor vbBlue

Creating XY and XYZ Scatter Charts. XY and XYZ Scatter Charts are created automatically from the NPointPresentGroup when you respectively set the UseXValue and UseYValue properties to True. Then the X position of the data point is extracted from Value2 and the Y position is extracted from Value3. The following code creates a XYZ scatter chart:

point.UseXValue = True
point.UseYValue = True

Because the Categories and Series axes are by default operating in dimension mode you must manually switch them to value scale mode:

NChart1.Axes(atCategoriesAxis).ScaleMode = asmValue
NChart1.Axes(atSeriesAxis).ScaleMode = asmValue

And finally it is also very useful to inflate the margins of the points so that they perfectly fit within the chart area:

point.Common.InflateMargins = True

The following picture demonstrates a XYZ scatter chart:

figure 2.

Related Examples. The Examples\NChart\VB\PresentationGroups\Point directory contains an example demonstrating the usage of the NPointPresentGroup object.


Bubble Chart

Overview. Bubble charts are created with the help of the NBubblePresentGroup object. The user can control the bubble style and bubble min and max sizes.

Data Requirements. Bubble charts require major 3

Data Usage. Value1 is the elevation of each data point.
Value2 is the X position of the data point
Value3 is the size of the bubble

Creating Simple Bubble Charts. Bubble charts are automatically created from the NBubblePresentGroup. The BubbleStyle property controls the style of the bubbles. The following bubble styles are supported: Bar, Cylinder, Cone, Inverted Cone, Pyramid, Inverted Pyramid, Sphere, Circle and Diamond. The Circle and Diamond and styles display bubbles that do not have depth dimension. This makes possible for the 3DChart component to apply Z order on them so that the bigger bubbles never overlap the smaller ones. If you want to achieve a more stunning effect you can use the Sphere bubble shape:

Dim bubble As NBubblePresentGruop
Set bubble = NChart1.PresentGroups.GetAt(0)
bubble.BubbleStyle = psSphere

The following image demonstrates the usage of the NBubblePresentGroup for the creation of bubble charts.

figure 1

You can easily change the min and max bubble sizes with the help of the MinSize and MaxSize properties of the NBarPresentGroup. The following code will instruct the chart to show the minimal bubble with size 0.2 while the biggest one will be shown with size 0.5.

bubble.MinSize = 0.2
bubble.MaxSize = 0.5

Since the Categories axis is by default operating in Dimension mode you must manually switch it in Value Scale mode. This will ensure that the X coordinates specified by Value2 of each data item are properly scaled.

It is also very useful to turn on the InflateMargins flag:

bubble.Common.InflateMargins = True

This will inflate the value range displayed by the axes with the necessary amount, so that all the bubbles fit in the chart area.

It is often required to display the axes of the component at particular value position. The most common positioning for the axes is to be crossed at each others zero value. This is achieved by the following code:

NChart1.Axes(atLeftAxis).PositionAxis atCategoriesAxis, 0, True
NChart1.Axes(atCategoriesAxis).PositionAxis atLeftAxis, 0, True

As you can see the left axis is positioned at value 0 of the categories axis, while the categories axis is positioned at value 0 of the left axis. Figure 2 shows a bubble chart with crossed axes and sphere bubble.

figure 2.

Related Examples. The Examples\NChart\VB\PresentationGroups\Bubble directory contains an example demonstrating the usage of the NBubblePresentGroup object.


Stock Chart

Overview. Stock charts are created with the help of the NStockPresentGroup presentation group. The user can control various properties of the stock chart including the style of the candle, the position of the items along the X axis (date time stock chart), visibility of the traded volume bar, visibility of the open and close stick.

Data Requirements. The NStockPresentGroup requires major data type 4. Major data type 5 is required if the HasVolume property is set to True. Major data type 6 is required if UseXValue is set to True.

Data Usage. Value1 is the Open stock value
Value2 is the High stock value
Value3 is the Low stock value
Value4 is the Close stock value
Value5 is the Traded Volume value if HasVolume has been set to True.
Value6 is the position along the X axis if UseXValue is set to True. This value is used as date - time position.

Creating Simple Stock Charts. By default the NStockPresentGroup creates a Open - High - Low - Close charts. The initial shape of the candles is csBar. The user can easily change the style of the candle with the help of the CandleStyle property.

Dim stock as NStockPresentGroup
Set stock = NChart1.PresentGroups.GetAt(0)
stock.CandleStyle = csStick

The width and depth of the candle items are controlled with the help of the CandleWidth and CandleDepthPercent properties. The CandleWidth property specifies the width of the candle in OpenGL units, while the CandleDepthPercent properties specifies the depth of the candle in percents of the floor grid cell depth. The following code changes the dimension of the candle items:

stock.CandleWidth = 0.2
stock.CandleDepthPercent = 40

Figure 1 shows a simple Open - Hi - Low - Close chart.

figure 1.

As you can see some of the items on figure 1 are painted in red while other are white. The painting color is determined by the difference between the open and close values. If the open value is bigger than the close value then the item is painted in white. On the contrary if the open value is smaller than the close value the item is painted in red.

The uniform appearances of the NStockPresentGroup need special explanation. First of all there are four entries in the uniform appearance collection - for the up and down items, for the High - Low line and for the traded volume. The red items on figure one use uniform appearance 0, while the white ones use uniform appearance 1. The High - Low line is rendered with the help of the line properties of uniform appearance 2. The following code will make the red items blue, the white items - yellow and the line -green.

stock.Common.UniformAppearances.GetAt(0).FillEffect.SetSolidColor vbBlue
stock.Common.UniformAppearances.GetAt(0).Material.SetAmbientDiffuseColor vbBlue

stock.Common.UniformAppearances.GetAt(1).FillEffect.SetSolidColor vbYellow
stock.Common.UniformAppearances.GetAt(1).Material.SetAmbientDiffuseColor vbYellow

stock.Common.UniformAppearances.GetAt(2).Border.Color vbGreen

Creating High - Low - Close and High - Low - Open Charts. These charts are simply variations of the Open - High - Low - Close chart. The first step you need to make is switch the candle style to stick:

stock.CandleStyle = csStick

Depending on the chart you want to create you must hide the Open or Close value. The following code hides the Open value.

stock.ShowOpen = False

The image on figure 2 shows a typical High - Low - Close chart.

figure 2.

Creating Date Time Traded Volume Charts. Except the Open - High - Low - Close values it is often required to show the traded volume. The traded volume is extracted from Value5. You instruct the NStockPresentGroup to show the traded volume with the following code:

stock.HasVolume = True

Because the traded volume values are from a different measure they need to be scaled on a different vertical axis. The following code scales the volume on the right axis.

stock.VolumeAxis = atRightAxis

The user is also able to control the volume bar style, width, depth percent and origin value. By default the Volume bars use origin 0. Turning off the UseVolumeOrigin property will scale the volume bars from the minimal to the maximal volume. The following code modifies some volume properties

stock.VolumeStyle = bsSmoothEdgeBar ' the style is smooth edge bar
stock.VolumeEdgePercent = 35 ' 35% from the smaller bar dimension (width or depth)
stock.VolumeWidth = 0.20 ' absolute value in OpenGL units
stock.VolumeDepthPercent = 40 ' 40% of the grid cell depth
stock.UseVolumeOrigin = True ' volume origin is 10
stock.VolumeOrigin = 10

The stock data points sometimes need to be visualized on an arbitrary position of the Categories axis. This is the case when the stock information has been received on irregular date time intervals. To solve this you need to specify the position of the stock item along the Categories axis in Value6 of each data item and turn on the UseXValue property.

stock.UseXValue = True

It is also required to manually change the scaling mode of the Categories axis to some of the value scale modes (for example DateTime). The following code changes the scale mode of the categories axis and applies proper formatting on the axis texts.

NChart1.Axes(atCategoriesAxis).ScaleMode = asmDateTime
NChart1.Axes(atCategoriesAxis).FormatString = "%D( %x)"

Since the long axis texts may overlap you can turn on the text stagger on the Categories axis.

NChart1.Axes(atCategoriesAxis).StaggerTexts = True

Also, because the stock items may go outside the chart area you may also consider turning on the InflateMargins property.

stock.Common.InflateMargins = True

The image on figure 3 represents a typical Open - High - Low - Close - Volume chart with a date time categories axis.

figure 3.

The legend on figure 3 has been configured to show the uniform appearances of the NStockPresentGruop object.

stock.Common.LegendMode = pglmUniformAppearances

Related Examples. The usage of the NStockPresentGroup object is demonstrated in the example located in the Examples\NChart\VB\PresentationGroups\Stock directory.


Float Bar Chart

Overview. Float bar charts are created with the help of the NFloatBarPresentGroup object. The style of the bars can be one of the following Bar, Cylinder, Cone, Inverted Cone, Pyramid, Inverted Pyramid and Smooth Edge Bar. The width of the bas can also be controlled.

Data Requirements. The NFloatBarPresentGroup requires major data type 2.

Data Usage. Value1 is the beginning value of the bar.
Value2 is the bar end value.

Creating Floating Bars. Floating bars are automatically created from the NFloatBarPresentGroup on the data range it occupies. The style of the bars can be controlled with the BarStyle property. The following code changes the bar style to smooth edge bar and changes the smooth edge percent to 30.

Dim floatbar As NFloatBarPresentGroup
Set floatbar = NChart1.PresentGroups.GetAt(0)
floatbar.BarStyle = bsSmoothEdgeBar
floatbar.BarEdgePercent = 30

The user is also able to control the width and depth of the bars in percents of the floor grid cell. The following code sets the bars dimensions to 60 percent of the floor grid cell.

floatbar.WidthPercent = 60
floatbar.DepthPercent = 60

It is also often required to display the floating bars horizontally. The 3DChart has several methods that make this task easy. First you need to change the projection to horizontal left:

NChart1.Get3DView.SetPredefinedProjection pp2DHorizontalLeft

And the other thing to do is change the axis text position to reflect the new projection. The following code will properly position the axis texts on the front and categories axis.

NChart1.Axes(atFrontAxis).SetPredefinedTextPosition patpHorizontalLeft
NChart1.Axes(atCategoriesAxis).SetPredefinedTextPosition patpHorizontalLeft

By default all presentation groups are initially scaled on the left chart axis. Changing the presentation group axis is achieved by the following code:

floatbar.Common.DisplayOnAxis atLeftAxis, False ' do not scale on left axis
floatbar.Common.DisplayOnAxis atFrontAxis, True ' and scale on the front axis

The following image visually represents a Horizontal Floating bar chart.

figure 1

The legend texts of the floating bars also requires some explanation. Since the values for the bar begin and end are specified as date time you would like to display them as such (not as simple values). The following code shows the items labels and begin and end dates on the 3DChart legend.

floatbar.Common.LegendFormatString = "%L %D1(%x) %D2(%x)"

Related Examples. The usage of the NFloatBarPresentGroup object is demonstrated in the example located in the Examples\NChart\VB\PresentationGroups\FloatingBars directory.


Pie Chart

Overview. Pie charts are created with the help of the NPiePresentGroup presentation group object. The style of the pies can be one of the following: Pie, Torus and Smooth Edge Pie. The user is also able to control the radius, depth and begin angles as well as the detachment of the pie segments from the pie center.

Data Requirements. The NPiePresentGroup requires major data type 2.

Data Usage. Value1 is the value of the pie segment.
Value2 is the detachment of the pie from the pie center in OpenGL units.

Creating Pie Charts. Pie charts are automatically created when the NPiePresentGroup is added to the presentation group collection. The user controls the style of the pie segments with the PieStyle property. When the pie style is set to psSmoothEdgePie the user can specify the size of the smooth edge in percents of the pie segment depth. The following code changes the style of the pie to smooth edge pie and sets the smooth edge to 30 percent.

Dim pie As NPiePresentGroup
Set pie = NChart1.PresentGroups.GetAt(0)
pie.PieStyle = psSmoothEdgePie
pie.PieEdgePercent = 30

The dimensions of the pie chart can be controlled trough the Depth and Radius properties. The BeginAngle property specifies the initial rotation of the first item.

The NPiePresentGroup is an exclusive presentation group, which means that it cannot be combined with other presentation groups and will automatically hide the chart walls and axes.

Since the standard 2DHalf projection is not very suitable for pies you may consider switching the projection to 3DTop or 2DTop with elevation 45 degrees. The following code will load the 3DTop predefined projection and will set the elevation to 45 degrees.

NChart1.Get3DView.SetPredefinedProjection pp3DTop
NChart1.Get3DView.Elevation = 45

The following image visually represents a smooth edge pie chart.

Related Examples. The usage of the NPiePresentGroup object is demonstrated in the example located in the Examples\NChart\VB\PresentationGroups\Pie directory.


Radar Chart

Overview. Radar charts (or also called spider charts) are created with the help of the NRadarPresentGroup presentation group object. The radar has as many axes as the categories occupied by the presentation group range. The user is able to visualize data point marks with custom style and size on the radar data points. Filled radar style is also supported.

Data Requirements. The NRadarPresentGroup requires major data type 1.

Data Usage. Value1 is the value of the data point (or distance from the radar center).

Creating Radar Charts. Just adding the NRadarPresentGroup to the presentation group collection automatically creates a radar chart. The properties of the radar axis and gridlines are automatically extracted from the left axis. The properties of the radar back plane are taken from the left chart wall. The user can show data point marks with various shapes and controlled size. The following code changes the radar points to pyramids with size 0.15.

Dim radar As NRadarPresentGroup
Set radar = NChart1.PresentGroups.GetAt(0)
radar.HasValuePoints = True
radar.PointStyle = psPyramid
radar.PointSize = 0.15

The user is also able to control the X and Y radius of the radar trough the XRadius and YRadius properties. The category labels are visualized at the end of each radar axis. The user can control the distance of these texts from the radar axis end with the help of the CategoryTextOffset property.

The text visualization itself is controlled by a NTextEx object to which you can gain access with the CategoryTextEx method. The following code detaches the category texts and makes their font bigger.

radar.CategoryTextOffset = 0.30
radar.CategoryTextEx.Font.Size = 15

The user can also apply solid filling to the radar area, but first he needs to switch the NRadarPresentGroup to rsFilledArea style.

radar.RadarStyle = rsFilledArea

The uniform appearances of the NRadarPresentGroup need special explanation. First of all they are created in pairs - one for the area and another for the data point. The component distributes pair of uniform appearances across the series occupied by the presentation group range. So if for example you intend to show two filled areas you must create two data series and add two more uniform appearance to the uniform appearance collection.

The image on figure 1 demonstrates a radar chart with two series and filled areas.

figure 1.

Related Examples. The usage of the NRadarPresentGroup object is demonstrated in the example located in the Examples\NChart\VB\PresentationGroups\Radar directory.


Polar Chart

Overview. Polar charts are created with the help of the NPolarPresentGroup presentation group object. The user can display value point marks with various styles and controlled size. The radian gridlines can be configured with custom begin angle and step.

Data Requirements. The NPolarPresentGroup requires major data type 2.

Data Usage. Value1 is the radius of the polar coordinate.
Value2 is the angle of the polar coordinate.

Creating Polar Charts. The NPolarPresentGroup automatically creates a polar chart when you add it to the presentation group collection. The properties of the polar axis and gridlines are automatically extracted from the left axis. The properties of the polar back plane are taken from the left chart wall. The user can show data point marks with various shapes and controlled size. The following code changes the polar points to spheres with size 0.15.

Dim polar As NRadarPresentGroup
Set polar = NChart1.PresentGroups.GetAt(0)
polar.HasValuePoints = True
polar.PointStyle = psPyramid
polar.PointSize = 0.15

The user is also able to control the X and Y radius of the polar trough the XRadius and YRadius properties. The category labels are visualized at the end of each polar axis. The user can control the distance of these texts from the polar axis end with the help of the LabelOffset property.

The polar shows the angle of the radian gridlines at the end of each radian line. The user can control the appearance of these texts trough the NTextEx object accessible with the LabelTextEx method.

The angle values can be displayed as radians and degrees. The LabelFormat property controls the format string used for the angle formatting. The following code displays the texts in degrees:

polar.LabelFormat = "%D(2)"

You can change the angle values to radians with the following code:

polar.LabelFormat = "%R(2)"

The user is able to control the radian begin angle and step with the BeginAngle and AngleStep properties of the NPolarPresentGroup object. The following code rotates the polar chart to 30 degrees and makes the radian gridlines step to 45 degrees.

polar.BeginAngle = 30
polar.AngleStep = 45

The uniform appearances of the NPolarPresentGroup need special explanation. First of all they are created in pairs - one for the line and another for the data point. The component distributes pair of uniform appearances across the series occupied by the presentation group range. So if for example you intend to show two data series you must add two more uniform appearance to the uniform appearance collection.

The image on figure 1 shows a typical polar chart.

figure 1.

Related Examples. The usage of the NPolarPresentGroup object is demonstrated in the example located in the Examples\NChart\VB\PresentationGroups\Polar directory.


Shmoo Chart

Overview. Shmoo charts are created with the NShmooPresentGroup object. Shoo charts are widely used in the semiconductor industry to show the device response to 2 or 3 parameters (2D and 3D shmoo charts). The user can show and hide individual bits as well as show the first fail ones for a particular parameter.

Data Requirements. The NShmooPresentGroup requires major data type 2.

Data Usage. Value1 is the pass - fail bit. Accepted values are 0 - fail and 1 - pass.
Value1 is the hide - show bit. Accepted values are 0 - show and 1 - hide.

Creating Shmoo Charts. Shmoo charts are automatically created when the user adds the NShmooPresentGroup object to the presentation group collection. To properly present the shmoo charts you need to manually switch the axes in dimension mode.

NChart1.Axes(atCategoriesAxis).ScaleMode = asmDimension
NChart1.Axes(atSeriesAxis).ScaleMode = asmDimension
NChart1.Axes(atLeftAxis).ScaleMode = asmDimension

It is often required to hide all fail bits. Instead of manually traversing the data storage to set the hide - show bit you can use the AllFailHidden property of the NShmooPresentGroup to do that.

Dim shmoo As NShmooPresentGroup
Set shmoo = NChart1.PresentGroups.GetAt(0)
shmoo.AllFailHidden = True

The HighlightFirstFail property of the NShmooPresentGroup switches on and off the algorithm, which highlights the first fail bits for one of the three possible parameters (chart dimensions). The following code will highlight all fail bits for the x dimension.

shmoo.HighlightFirstFail = True
shmoo.FirstFailType = fftFirstXFail

The uniform appearance collection of the NShmooPresentGroup has three entries for the pass, fail and first fail items respectively. By default the uniform appearances are enabled, but you can turn them off and set the appearances of the items manually.

The 3DChart supports custom tooltips for individual data items. By default the component displays the default tooltip which gives information about the data point index in the data storage. You can manually set a custom tooltip at a data point with code like this.

NChart1.DataAt(0,0,0).MouseResponse.SetTooltip "Hello World"

or show no tooltip at all:

NChart1.DataAt(0,0,0).MouseResponse = ""

The following image represents a typical shmoo charts.

figure 1.

Related Examples. The usage of the NShmooPresentGroup object is demonstrated in the example located in the Examples\NChart\VB\PresentationGroups\Shmoo directory.


Nevron LLC 3D ActiveX Standard

To ease the user to operate with all Nevron LLC components in an intuitive and consistent manner, we have created a set of automation objects and automation property pages, which are common to all Nevron components and that is why they were called The Nevron LLC 3D ActiveX Standard. Following is a brief description of these objects.

Fill Effects. One of the most important things in 3d imaging controls is the filling of 3d objects and surfaces. Every surface or 3D object in the components developed by Nevron has an attached NFillEffect object through which the user can control its filling from both visual and automation interfaces. The visual interface of the NFillEffect can be shown at runtime also. There are five types of fill effects:

  • Solid color - the user can also specify a standard window color and the component will automatically synchronize it with the current machine settings.

  • Gradient - 22 types of Excel like gradients.

  • Texture - apply a texture extracted from an image file. Currently the control support bitmap, GIF, JPEG, Tiff, Targa, WMF and PNG file formats.

  • Animated filling - this cool feature enables you to apply an animated texture extracted from an AVI file.

  • Pattern - 40 Excel like patterns.

The gradient, texture, animated texture and pattern filling types also have properties controlling their actual mapping on the surface. Three different map types are supported. The user can also choose from seven mapping layouts. The size and orientation of the applied filling can also be controlled. In general you will never have to deal with those properties, because the component automatically uses the best configuration for the current filling type, but they are a nice thing to have if you want to be more specific about the way you map your textures. The snapshots below show bars with different fill fill effects.

Solid Color | Gradient | Texture | Pattern

Materials. Except fill effect each 3d object has properties describing the way in which in reflects lighting. The programmer can control the surface ambient, diffuse and specular reflection colors as well as the object shininess and self - illuminance with the help of the standard NMaterial object. As far as lighting is concerned Nevron components can generally operate in two modes - with or without lightning. When the lighting is disabled then the material properties of the 3d objects and surfaces do not affect the image in any way. When lighting is turned on material properties work closely together with the fill effect to determine the final object filling. When solid color is specified as a fill effect of a particular object, only the material properties are taken into account. Other kinds of fill effects work in conjunction with material properties to determine the final surface appearance. The NMaterial object also has a visual interface, which can be displayed at runtime. The snapshots below show bars with different materials.

Smooth edge bar with red ambient and diffuse colors | Smooth edge bar with blue ambient and yellow diffuse color

Line Properties. All lines and 3d objects that have borders use the NLineProperties object to specify the line width, color and style. The NLineProperties object has a visual interface, which can be invoked at runtime. The snapshots below show lines with different color, width and style.

Dash line with green color | Line with dash dot style and red color

Frame Properties. Frame properties are used to specify frame surrounding of a particular area. The frame properties of an object are exposed to the programmer via the NFrameProperties automation object. The NFrameProperties also has a visual interface, which can be invoked at runtime. The most common usage of this object is for the surrounding of the control background.

Texts. Each text that is displayed by the Nevron LLC components has some properties controlling its appearance. These properties are exposed to the programmer via two automation objects - NText and NTextEx. The NText object controls the appearance of 2D texts only, while the NTextEx object also supports 3D texts mode. When the component visualizes 2D texts the user is able to control the font style, font size, boldness, italic and text orientation. Besides this the texts can be displayed with a back plane surronded by a frame. This feature is very useful especially in the case of labels which are primary used for displaying headers and footers. The 3D texts on the otherhand use OpenGL rendering primitives and are displayed in the 3D space of the component. The user is able to apply gradients and textures on 3D texts as well as control their extrusion.

Each of the two technologies has its advantages and drawbacks. The 2D texts are very useful when you have to display texts that must be very small (like texts with font size 9 for example), but still must be readable. Such texts appear for example on top of the bars in a bar chart or along the different axes. Another very useful feature of the 2D texts is that they always face the viewer and are independent from the current zoom factor applied on the 3D scene. You can also use alpha blending (transparency) on 2D texts. A certain disadvantage of 2D texts is that you are not able to apply more advanced fill effects like gradients, textures, animations or patters. 2D texts are also not affected by lighting.

Unlike 2D texts 3D texts are zoom dependable. Amongst the advantages of using 3D texts is that you can apply transformations (like rotations around the XYZ axes, scaling and translation). There is a normal vector associated with each 3D glyph (character) so lighting effects and material properties do influence the text visualization. The possibility to determine a 3D bounding rectangle around the text also makes the implementation of fill effects like gradients, textures, animations and patterns a trivial task. 3D texts also support transparency. All this makes 3D texts ideal when you want to display impressing texts. As you might expect there is a dark side. The first one is that when using 3D texts for displaying small texts they often become jagged and unreadable. The other one is that positioning a 3D text so that it faces the viewer is not an easy task and there is still no automated way in Nevron controls to do that.

The following table demonstrates 2d and 3d texts.

2D text with Arial bold font | 2D text with orientation 45 degrees | 2D text with a back plane
3D text with Arial bold font and gradient fill effect | 3D text with extrusion | 3D text with back plane

Import / Export functionality. The ActiveX components developed by Nevron come equipped with build in import / export capabilities provided from the NImportExport automation object. With it you can load and save the current state of the component in nsv files (the extension is an abbreviation from Nevron Save File). These save files are not only backward compatible (new versions will be able to read old save files) but are also component independent. This means that you can use the nsv file created from the 3DChart component to load the background of a 3DPieChart component for example. The nsv file can be loaded from URL addresses.

The NImportExport object also gives you the possibility to save the currently rendered image as a bitmap, png, jpeg, tiff and targa image file formats. The visual interface of this automation object is displayed with the ShowDialog method. The component also have a Import / Export verb which also displays the same dialog (in Visual Basic the verbs are shown in the menu when you click the right mouse button on the component).

3D View. Another important feature of the Nevron components is the ability to control the users view on the 3d scene. This is done trough the standard N3DView object. The Elevation, Rotation and Viewer rotation properties help you look at the scene from different positions and angles. The Zoom property helps you zoom in and out the image. The OffsetX and OffsetY properties move the image along the X and Y axes. Through the N3DView object you can also set an Orthogonal projection which is very helpful when you want to display a 2d like image. The 3DView property page visually exposes the functionality of the N3DView object of the component.

Lighting. All components developed by Nevron can have up to 8 lights to lit the scene. All lights can be individually controlled with properties specifying their lightning emission, position, light distribution and in the case of a directed light source - it's direction. Three automation objects programmatically expose this functionality - NLightModel, NLightSource and NLightCollection. The Lights property page visually exposes the functionality of these three objects. The preview window helps you visually see the result of the lights that you create.


Working with Fill effects and Materials

One of the major Nevron common objects are the NFillEffect and NMaterial. The first one is designed to apply a fill effect on a particular scene element. The fill effect defines the way an object is filled - currently it can be a solid color, gradient, texture, animation or pattern. The material on the other hand defines the way this object reflects light coming from the light sources of the scene.

When you render the scene without lighting all material properties are discarded. That’s why in this mode the only thing that defines the way an object is filled is the fill effect. When you render the scene with lighting however the material also influences the visual representation of the object. When the fill effect is solid color the roles change - the only thing that defines the color of the object is it’s material. This is the reason why some objects may appear white for example although their fill effect is solid black. To change the color of the object you should modify the material properties. For example if you want you object to appear green you should write the following code in VB:

SceneObject.Material.AllColors = vbBlack
SceneObject.Material.EmissiveColor = vbGreen

When the fill effect is a gradient, texture, animation or pattern the RGB values generated from the fill effect and the material are added together. In this case both the FillEffect and the Material properties have an impact on the visual representation of the object.

For more information on applying fill effects see the NFillEffect topic.

For more information on applying materials see the NMaterial topic.


Differences between 2D and 3D texts

Working with texts

There are two technologies that Nevron controls use to draw texts. In the documentation they are referred to as 2D and 3D texts. 2D texts (as their name suggests) are used to display text in the “usual” GDI manner. In this mode the control is generating bitmaps of the font characters. These bitmaps are then drawn on the control’s surface.

The underlying technology used for 3D texts is completely different. In this mode the control uses the wglUseFontOutlines OpenGL function. This function creates display lists for the font characters. These display lists describe the characters of the font using 3D primitives such as polygons and lines. This allows the character to be displayed in the three dimensional space and also makes possible to apply transformations like rotation, scale and translation on the text.

Each of the two technologies has its advantages and drawbacks. The 2D texts are very useful when you have to display texts that must be very small (like texts with font size 9 for example), but still must be readable. Such texts appear for example on top of the bars in a bar chart or along the different axes. Another very useful feature of the 2D texts is that they always face the viewer and are independent from the current zoom factor applied on the 3D scene. You can also use alpha blending (transparency) on 2D texts. The disadvantages related with 2D texts is that you are not able to apply more advanced fill effects like gradients, textures, animations or patters. 2D texts are also not affected by lighting.

3D texts on the other hand use 3D primitives such as polygons and lines to draw themselves on the screen. Unlike 2D texts they are zoom dependable. Amongst the advantages of using 3D texts is that you can apply transformations (like rotations around the XYZ axes, scaling and translation). There is a normal vector associated with each 3D glyph (character) so lighting effects and material properties do influence the text visualization. The possibility to determine a 3D bounding rectangle around the text also makes the implementation of fill effects like gradients, textures, animations and patterns an easy task. 3D texts also support transparency. All this makes 3D texts ideal when you want to display impressing texts. As you might expect there is a dark side. The first one is that when using 3D texts for displaying small texts they often become jagged and unreadable. The other one it that positioning a 3D text so that it faces the viewer is not easy and there is still no automated way in Nevron controls to do that.

There are two very special points related with every text object that you see displayed by the control. They are the base point and the origin point. It is essential to understand their meaning because they work together to determine the final text position on the screen. The base point is specified by the control and cannot be changed. For example when you have a bar present group it will position the base points for the texts at the tops of each bar. Another example is the categories axis which positions the base points at the major ticks. The origin point is always specified relative to the base point. For example - "twenty pixels left from the base point" or "at polar coordinates (Rotation, Elevation, Distance) from the base point" in the 3D case. This enables you to move your texts relatively from the base point.

This topic detaily discusses the working with texts with the use of the NTextEx object which is attached to almost all texts in the control.

The NTextEx object is used to control both 2D and 3D Texts. You switch the mode of the NTextEx object by modifying the Use2DText property. For example to change to 2D mode you must write the following code in VB:

TextEx.Use2DText = TRUE 'I want to use 2D (GDI like) texts

The rest of this topic is divided into three categories. The first one describes the properties common for both 2D and 3D texts. The second one is dedicated to the properties relevant when the NTextEx object is in 2D mode. And finally the last one describes the properties responsible for 3D texts. For more information see the NTextEx object description in the Object Reference.

Common properties

Font

The font property controls the font used by the text object. You can modify the font size as well as the bold and italic properties. You cannot display underlined texts, because they are not supported by the current OpenGL implementation. The following examples changes the font to "Black Arial", 12, Bold.

NTextEx.Font = "Black Arial"
NTextEx.Size = 12
NTextEx.Bold = TRUE

HasBackPlane

Controls whether the text has a background rectangle. This may be very useful if your texts merge with the background. In such cases you may consider putting a background plane behind them. This can make your texts much more readable.

NTextEx.HasBackPlane = TRUE ' I want to have a back plane behind my text

BackPlaneBound

When you have a back plane you can also control the wrapping of that plane around the text. BackPlaneBound specifies the space between the text bounding rectangle and the back plane. This property is given in OpenGL units and its default value is 0.2.

NTextEx.BackPlaneBound = 0.4 ' increase the back plane

HorzAlign, VertAlign

The HozrAlign and VertAlign properties control how the text will be aligned relative to the origin point.

FillEffect, Material, BackPlaneFillEffect, BackPlaneMaterial

These properties control the appearance of the text and the back plane. For more information see the NTextEx object description in the Object Reference.

2D Mode properties

TextOverlapsImage

When this property is FALSE the Z coordinate assigned to the 2D text will be equal to the Z coordinate of the origin point. This is why the text can be hidden if there are 3D object with a smaller Z coordinate. Otherwise the Z coordinate is 0 which results in 2D text that are always on top of the other 3D objects.

NTextEx.TextOverlapsImage = TRUE 'I want to use the Z coordinate of the origin point

OffsetX

The X offset of the text origin point from the base point.

NTextEx.OffsetX = 20 ' move the ext 20 pixels to the left

OffsetY

The Y offset of the text origin point from the base point.

NTextEx.OffsetY = 20 ' move the text 20 pixels to the bottom

Orientation

The orientation of the text in degrees.

NTextEx.Orientation = 45

3D Mode properties

OriginRotation, OriginElevation, OriginDistance

The polar coordinates of the text origin point from the text base point.

NTextEx.OriginRotation = 45
NTextEx.OriginElevation = 45
NTextEx.OriginDistance = 0.2

RotateAroundXAxis, RotateAroundYAxis, RotateAroundZAxis

The rotation of the text around the X, Y and Z axis respectively.

NTextEx.RotateAroundXAxis = 45
NTextEx.RotateAroundYAxis = 45
NTextEx.RotateAroundZAxis = 45

Extrusion

The extrusion (depth) of the 3D text characters in OpenGL units. You may consider to increase this property if you want 3D text with bigger depth

NTextEx.Extrusion = 0.5 ' set some big extrusion


Import Export Functionality

Sometimes it is very useful to be able to save the state of the component to a file or memory storage. For example if you want to implement custom Undo and allow your user to revert to some previous state. Another possible use of the export functionality is when you have an ASP server that displays graphics generated from real time data. Or maybe you want just to copy your image into the clipboard and then paste into Word (or some other text editor) and write some descriptive information about it. Or suppose that you are writing an Excel like application and want to be able to save the chart into the structured storage file used by it.

This topic will teach you how you can achieve the above tasks with the help of the NImportExport object which is supported by all Nevron components.

The import / export functionality of the component is divided into two categories - control state and image defining the nature of the data being imported or exported.

Importing and exporting the control state

The following table summarizes the import / export capabilities for the control state:

Function | File | Memory | Stream | URL | Clipboard
Import | Yes | Yes | Yes | Yes | Yes
Export | Yes | Yes | Yes | No | Yes

As you can see from the table above you can import from almost anything you can think of. The export also supports quite a lot of target medias except exporting to URL.

Loading the control state

To load the component state from a file, memory, stream or the clipboard you must use the Load member function of the NImportExport object. The function has the following definition:

Function Load(ByRef vFile As Variant) As Boolean

The type of the media is determined by the vFile type (notice that vFile is not a string but a Variant type). The following table summarizes this:

Type of vFile | Meaning
String (VT_BSTR) | The string contains the name of a file. If the string is empty then the control uses the Clipboard.
Long (VT_I4) | A memory handle allocated with the Windows GlobalAlloc API function. The control will use the memory pointed by this handle to read its state.
Stream (VT_UNKNOWN) | A pointer to an IStream interface that represents a stream in a structured storage object.

Lets illustrate the above with a few VB code snippets:

1. Load the component state from a file:

NChart1.ImportExport.Load "c:\temp\chart.nsv"

2. Load the component state from a memory handle

Dim vFile As Variant
vFile = CLng(dwHandle)
NChart1.ImportExport.Load vFile 'dwHandle must contain the chart state in a native chart format

3. Paste from the clipboard

Dim vFile As Variant
vFile = ""
NChart1.ImportExport.Load vFile

To load the component state from a URL you must use the LoadFromURL. It takes as a parameter a URL string identifying the location of the .nsv file that you want to load.

NChart1.ImportExport.LoadFromURL "http://www.myserver.com\report.nsv"

Exporting the control state

Exporting the control state is similar to importing except that you must use the Save function of the NImportExport object. It takes as a parameter a variant which determines the target media. The following examples illustrate exporting to a file, memory or the clipboard.

1. Save the component state from a file:

NChart1.ImportExport.Save "c:\temp\chart.nsv"

2. Save the component state to a memory handle

Dim vFile As Variant
vFile = CLng(dwHandle)
NChart1.ImportExport.Save vFile 'dwHandle will contain the chart state in a native chart format

There is one small detail that must be underlined here. It is that the control allocates the handle and returns it in the vFile parameter (this is why this parameter was defined as "ByRef"). This is required because you cannot know the size of the memory block required to save the component state.

3. Copy to the clipboard

Dim vFile As Variant
vFile = ""
NChart1.ImportExport.Save vFile

Exporting the control image

The ability to export images in various image formats to different medias is indespensable for every component dealing with graphics. This is why Nevron has implemented export support for the most common file formats (excluding GIF because of the licensing required by Unisys). Furthermore we have given the programmer the ability to control various format dependent parameters of the image export as well as the color depth. The last one is very important because it isolates your code from the settings of the target machine which makes your code more portable. For example you're able to generate 24 bit color images on a server with color settings of 8 bits per pixel.

The extensive support for image export in Nevron components enables them to act as server side components driven by ASP scripts. For more information on this read the topics under "Building Internet and Intranet Applications" book.

The following table illustrates the image export capabilities of the current version.

Image format | File | Memory | Stream | Clipboard | Color depth | Other options
JPEG | Yes | Yes | Yes | No | 8. 16 and 24 | Quality, Smoothing, Quantize
PNG | Yes | Yes | Yes | No | 8. 16 and 24 | Transparent
TIFF | Yes | No | No | No | 8. 16 and 24 | No
TARGA | Yes | Yes | Yes | No | 8. 16 and 24 | No
Bitmap | Yes | Yes | Yes | Yes | 8. 16 and 24 | No

As you can see TIFF support is limited only to files, because it requires some special file settings that make the implementation of TIFF export to Memory and Stream more difficult.

Bitmaps can be copied to the clipboard. They are copied to the clipboard as Bitmap handles. However because of the automatic conversion performed by Windows your application can also request a DIB (Device Independent Bitmap) when they try to paste.

To export your image in the desired format use one of the following member functions of the NImportExport object - SaveJPEGImage, SaveBitmapImage, SaveTargaImage, SaveTiffImage and SavePNGImage. They all follow the following format

Save<Format name>Image(ByRef vFile As Variant, UseWindowDimensions As Boolean, Width As Long, Height As Long, <Format specific parameters>, BitsPerPixel As Long) As Boolean

The first parameter is vFile (of type Variant). This variant's content is treated in the same way as in the import / export functions for the control state. Note that the control will perform a check whether the specified media is supported by the requested image format. If not the control will generate an error. For example if you try to export a Tiff image to the clipboard the control will complain about it by generating the following error : "Tiff export is supported only for files.".

After you specify the target media all functions require three more parameters. They are UseWindowDimensions, Width and Height. When UseWindowDimensions is set to TRUE the Width and Height parameters are discarded and the dimensions of the exported image are synchronized with the current control dimensions. Otherwise Width and Height define the size of the image. Be careful when using UseWindowDimensions because sometimes the control dimensions are invalid. For example if you instantiate your control in an ASP environment it does not have a window and control dimensions. In this case you must explicitly specify the Width and Height of the generated image.

Only PNG and JPEG allow you to modify some options of the image export. PNG allows you to modify the Transparent option. When set to TRUE the control will generate a transparent PNG image. In 16 and 24 bits per pixel transparency is achieved by adding an alpha channel to the PNG. In 8bpp because there is no alpha channel support for this mode transparency is achieved by choosing a transparent color. This leads to a small quality decrease, because you loose one color. Fortunately this is not noticeable. Transparency can be very useful when you want to generate images for web sites and want to integrate them with the web site layout. Note however that 16 and 24 bpp transparent PNGs are not supported by the current versions of IE and Netscape. This is why for this purpose it is recommended to use 8bpp PNGs.

In JPEG mode you can control the Quantize, Quality and Smoothing factors. Usually the value for Quality is 75% but you may wish to increase it to 100% if you want to render JPEGs with better quality.

Following the format specific options is the BitsPerPixel parameter which controls the color depth of the image. Nevron controls render images independently from the current video settings. This is why you can set this value to 24bpp even if your current video adapter settings specify 8 bits per pixel. The possible values for this parameter are 8, 16 and 24.

Now after we have described the parameters required by the image export functions lets look at some real code examples.

1. Generate 24bpp, 200x300, quantized, not smoothed JPEG image

NevronControl.ImportExport.SaveJPEGImage(sFileName, FALSE, 200, 300, TRUE, 100, 0, 24)

2. Generate a 24bpp, 200x200 bitmap image

NevronControl.ImportExport.SaveBitmapImage(sFileName, FALSE, 200, 200, 24)

3. Generate a 24bpp, 300x300 Targa image

NChart1.ImportExport.SaveTargaImage(sFileName, FALSE, 300, 300, 24)

4. Generate a 24bpp, 400x400 TIFF image

NevronControl.ImportExport.SaveTiffImage(sFileName, FALSE, 400, 400, 24)

5. Generate a 24bpp, 500x500, not transparent PNG image

NevronControl.ImportExport.SavePNGImage(sFileName, FALSE, 500, 400, FALSE, 24)

For more information on image export see the description of the NImportExport object in the Object Reference as well as the VB examples related with Import and Export (Examples\VB\ImportExport).


Printing

Nevron controls support two ways of printing an image generated with the OpenGL 3D engine. They provide a flexible and easy to use interface to print your charts, graphs and texts.

Printing with the NPrintManager

Printing by using the NPicture interface


Printing using the NPicture interface

Another approach on printing is to get an IPicture interface on the control and use is to draw on the Printer device. The following VB code shows this technique in practice:

Printer.CurrentX = 0
Printer.CurrentY = 0
Printer.ScaleHeight = 100
Printer.ScaleWidth = 100
Printer.PaintPicture NevronControl.Picture(), nLeft, nTop, nWidth, nHeight
Printer.EndDoc

Note that we first initialize the properties of the printer and set the number of units for the horizontal (ScaleWidth) and vertical (ScaleHeight) measurement. This ensures that we work with percent like values.

NevronControl.Picture() function retrieves an IPicture on the control. You can then use this interface to paint on a device or pass it to an Image control for example.


Printing with the NPrintManager

The component has a build in Print Manager that also provides a visual interface for configuring the NPrintManager object. To illustrate how to work with NPrintManager lets look at the following line of VB code:

NControl.PrintManager.BeginPrint

This will print a page on your default printer using the default values of the print manager. But how do you specify a more customized print configuration (for example a landscape with an image occupying the top left corner of the page)? The answer of course is by modifying the other properties of the NPrintManager object. The LeftMargin, RightMargin, TopMargin and BottomMargin properties allow you set the margins for printing. For example:

NControl.PrintManager.LeftMargin = 0
NControl.PrintManager.TopMargin = 0
NControl.PrintManager.RightMargin = 50
NControl.PrintManager.BottomMargin = 50
NControl.PrintManager.BeginPrint

Will print the control on the upper left part of the paper. Besides the position you can also modify the quality of the printing. The following code prints with better quality:

NControl.PrintManager.QualityPercent = 200
NControl.PrintManager.BeginPrint

But is as you might expect a little bit slower. For a more detailed discussion of the QualityPercent property see the NPrintManager description in the Object Reference.

To summarize the following example prints two copies of the image at the upper left corner, using landscape paper orientation and better quality:

With NControl.PrintManager
.LeftMargin = 0
.TopMargin = 0
.RightMargin = 50
.BottomMargin = 50
.PaperOrientation = poLandscape
.Copies = 2
.QualityPercent = 200
End With

NControl.PrintManager.BeginPrint


Installing on the Server

The installation of the component on your web server is easy and straightforward.

1. Make sure that your user account has the necessary privileges to perform the installation. The best case of course is if you're running under the Administrator account.

2. Run the installation utility on the server machine. It will automatically copy the control’s ocx files to the Windows system directory and register them.

3. Make sure that you can access the control's ocx file via the internet guest account - this is the account used by IIS when an ActiveX control is executed on the web server. To check whether ASP is working correctly make the following test page.

<script LANGUAGE="VBScript" RUNAT="Server">
Response.Write(Now)
</script>

For example if your test page is called TestAsp.asp and is located in the wwwroot directory when you point your browser to

http://localhost/testasp.asp

it must display the current time.

4. Make sure that the control can be instantiated safely in your asp script. The following asp code shows how to do this:

   <script LANGUAGE="VBScript" RUNAT="Server">
Set NChart1 = Server.CreateObject("3DCHART.NChart.5")
NChart1.Background.FillEffect.SetGradient 0, 0, RGB(255, 0, 0),
   RGB(255, 255, 0)
</script>

Again point your browser and if it does not display an error message this means that the component can be safely instantiated.

5. Run the NServerConfig utility located in the Program Files directory. From the Virtual web servers list select the desired web server and press the "Update server..." button. The utility will display "The server update succeeded" if everything was Ok. For more information on how to configure your webserver see the "Fine tuning your server" topics.


Building Internet and Intranet Applications

Using the Controls on the Client Side

Nevron Components support VBScript and this makes possible their embedding in ActiveX containers that use this language. When it comes to building an Internet or Intranet charting solutions there is always one question – where does the component reside – on the client or on the server machine? In this topic we will discuss the usage of Nevron components on the client side.

In this case we assume that the component is already installed on the client machine (see Deploying Nevron ActiveX Components for more information). Inserting the control in HTML pages is done with the help of the <OBJECT> tag.

Example:

   <OBJECT classid=clsid:B5CE1CD3-3AB9-11D3-9502-525400E61EDC
   height=370 id=Chart1
style="HEIGHT: 370px; LEFT: 0px; TOP: 0px; WIDTH: 492px" width=492>
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="13018">
<PARAM NAME="_ExtentY" VALUE="9790">
<PARAM NAME="_StockProps" VALUE="0">
<PARAM NAME="Windowless" VALUE="1">
<PARAM NAME="Transparent" VALUE="1">
</OBJECT>

This piece of code will add the 3DChart component in an HTML page. See the Deploying Nevron ActiveX Components to get a list of the components CLSIDs.

The first four properties are part of the standard MFC control properties. The last ones are of special interest when it comes to HTML pages. When the Windowless property is set to True the component does not have a window – it is instead displayed as a bitmap by the container. When Windowless is set to True you can also set the Transparent property to True, which will discard the currently activated background and replace it with the background of the container. This feature is very useful in HTML pages with applied background images or themes and gives the page more consistent outlook, because the chart seems to be a part of the image.

The components can be controlled programmatically with scripting and can also load their state from files located on an Internet or Intranet address. This is achieved with the help of the Load And LoadFromURL methods of the NImportExport object. You can use this feature to load the component’s state created on a server machine residing on the Intranet or the Internet.

Related Examples: Examine the Internet Explorer examples to see some real code about the usage of the components in HTML pages.


Configuring the directory structure

When the control is integrated in ASP it assumes that certain directories and files exist on the server. These directories are subdirectories of the root directory of the server and are used from the control for various purposes. The directories and their content is automatically created with the help of the NServerConfig utility.

You can see the directory structure from the main panel of the NServerConfig utility.

On the left side are enumerated the installed web servers. The right side shows the directory structure related to the component. The "Auto delete..." button invokes the "Auto delete configuration" dialog which enables you to specify when the control must delete temporary files. For more information see the "Configuring temporary file handling" topic.

The "Auto response..." button shows the "Auto response configuration" dialog. From this dialog you can configure the automatic response as well as various parameters of the image export. For more information see the "Configuring response types" topic.

The "Update server" button configures the specified web server. When you press this button the NServerConfig utility will perform the following steps:

1. Create the NevronInclude directory under wwwroot. This directory contains .inc files (server side include) containing the constants needed by Nevron components. These .inc files are needed because VBScript does not support custom types. Be very careful when coding in ASP without including an .inc file because instead of complaining that it does not recognize the custom type VBSctript will simply replace it with zero. This may lead to a lot of hard to find bugs.

2. Create the NevronTemp directory under wwwroot. This directory is used by the component to store the temporary files generated during the interaction between the client and the server. Note that this directory is created with write and create permissions to the Internet guest account used by IIS when it establishes a connection with the client. Otherwise the control will not be able to generate images on the server.

3. Create the NevronDownload directory under wwwroot. This directory contains the .cab file for the control and the client ATL control (NClientCommonControl.cab). When the control generates active response is assumes that the NevronDownload directory is created and that the NClientCommonControl.cab file is present in it. Otherwise the client browser will not be able to install the client control on the client machine. This .cab file is authenticated, time stamped and marked as safe for scripting so you do not need to worry about the security settings of the client browser.

4. Create the NevronConfig directory under wwwroot. This directory contains the NConfig.cfg file, containing the configuration settings for the different response types, the browser detection rules and the settings related with automatic temporary file handling. All controls that use the NAspManager object automatically try to load this file. If they do not succeed then you are not able to use the EmbedInHtml function of the NAspManager object.

If all the steps are accomplished without any errors the NServerConfig utility displays "Server update succeeded". Note that you can also manually configure your web site, but this approach is not recommended because you may omit some small details.


Configuring temporary file handling

In the process of interaction between the client and the server Nevron controls generate temp files that contain the requested images. You can instruct the controls to delete some of these temporary files when they are no longer needed. To do this from the NServerConfig main panel press the "Auto delete...". The following dialog box will appear:

Check the "Enable auto delete of expired temp files" check box to enable temporary file deletion for this web server. A file is expired when the time span defined by the Days, Hours, Minutes and Seconds fields expires. The server controls will perform a check for expired temporary files depending from the "Auto delete interval" value. This value defines how many response generations must be processed before starting the check. For example if this value is two this means that on every second response generation the control will clean up the NevronTemp directory from the expired temporary files.

The control determines the creation date and time of the file by using its name. The temporary file names follow a predefined format. Lets look at the following temp file name:

NCF20001203165101_32416.png

The first letter ‘N’ means Nevron and is common for all temp file names. The second letter indicates the type of the control that generated the temporary file. ‘C’ means 3DChart, ‘P’ means 3DPieChart, ‘T’ means 3DText, ‘L’ means 3DLegend and ‘O’ means 3DClock. Following is the time when the image was generated. It has the following format – YYYYMMDDHHMMSS or Year, Month, Day, Hour, Minute, Second. Afterwards come five random generated digits that ensure that if you have two controls generating images at the same time they would not generate colliding file names. At the end is the file extension. It indicates the file type and can be jpg, png, bmp, tif, tga or nim. The .nim extension means that the file is a "Nevron image map". These files are read from the client controls and contain a PNG image plus some descriptive information about it enabling the client control to emulate that the server control was installed on the client machine.


Configuring response types

Configuring the response types

From the NServerConfig main panel press the “Auto response...” button. The following dialog box will appear:

On the left side are enumerated the possible response types. You can change the response type priority by moving it with the “Move up” and “Move down” buttons. The response type at the top has the highest priority whereas the response type at the bottom has the lowest. The priority is important when the control is generating an auto response. In this case it tries to match the current browser with the browsers specified for the different response type. It begins the search from the top until it reaches the bottom response type. If a match is made then the search is terminated and the control generates a response with the found type. For example if you have specified that the control must response to IE 4.0 with a JPEG and PNG response the actual response will be JPEG (because it is higher in the list). If in the process of the search the control is unable to find a match it generates the default response. The default response is only one and is painted in red. You can change the default response from the Properties dialog box.

To specify that you want to respond to a particular browser with a certain response type select a response type and add the browsers that you want this type to respond to with the "Add browser..." and "Add custom browser..." buttons. The "Add browser..." displays the following dialog box:

From the browser type combo select the desired browser and specify the version. The "Match if bigger" instructs the control to generate a match if the version is bigger than the starting version. So far Nevron controls have build in detection for Internet Explorer and Netscape. To test your server response you can use the following user agent strings:

User agent string for IE

Mozilla/4.0 (compatible; MSIE 4.01; Windows95)

User agent string for Netscape Navigator

Mozilla/4.04 [en] (Win95; I)

User agent string for Opera

Mozilla/3.0 (compatible; Opera/3.0; Windows95/NT4)

The general rule used to detect a browser is the following - The control searches for the "compatible" word in the user agent string. If it is not present then this must be a Netscape browser. Otherwise if it also finds "MSIE" then this is Internet Explorer. If it cannot find "MSIE" then the control assumes that this is a browser from an unknown type (Other browser).

For Netscape Navigator the version information is extracted from the digits immediately following the "Mozilla" string. For IE on the other hand from the digits following the "MSIE" keyword. Version detection is not supported for the "Other browser" option.

If you want to specify another browser you must use the custom detected browser capability. The "Add custom browser..." shows a dialog box where you can type a template string that will be used to make the match. You can also use wildcards and ? characters, as well as enumerations. Following are some example template strings:

*SomeCompany*ver[4].[234]*

*SomeCompany*ver?.[234]*

The first one will generate a match for all SomeCompany's browsers that have version 4.2 4.3. and 4.4 and the second template string will generate a match for all version that have a minor version of 2, 3 or 4. Note that '*' characters are computationally expensive since they require recursive algorithms so whenever possible try to replace them with '?'.

You can also change the response type properties by selecting the response type in the tree and then pressing the “Properties...” button. Each response type has different properties. They are as follows:

- JPEG – quality percent, smoothing, bits per pixel

- PNG – transparent, bits per pixel

- TIFF – bits per pixel

- TARGA – bits per pixel

- BMP – bits per pixel

- ActiveX – show dialog progress, show tooltips, transparent, bits per pixel. The following screenshots illustrate the effect of these properties.

Download progress on a slow intranet connection.

A chart integrated with the HTML background.

Custom tooltips displayed by the client control.


Using .inc files

Before we start the discussion about the different options that you have to integrate the component in ASP you must have in mind that the language used for server side scripting (VBScript) that we've used to create the examples and that you'll probably use to code your server side scripts does not support custom types. This is why you cannot directly write and test your code in VB and then simply paste it into your asp page. If you do it however VBScript will not complain, but will instead replace all custom constants with 0.

To correct this problem you must use Server Side Include and include the .inc file supplied with the component. For example the line:

<!-- #include virtual="NevronInclude\3DChart.inc" -->

will include the 3DChart.inc file into your script. This file contains a server side script that assigns values to the custom constants.

<script RunAt="Server" Language="VBScript">
'--------------------------------------------------------------------
' Nevron Include File
' ' (c) 2000 Nevron, LLC. All Rights Reserved.
'
' Nevron Include File for VBScript/JScript
'
'--------------------------------------------------------------------

' FEType
Const fetSolidColor = 0
Const fetGradient = 1
Const fetImage = 2
Const fetAnimation = 3
Const fetPattern = 4

.........

' LegendPlacement
Const lpBottom = 0
Const lpCorner = 1
Const lpTop = 2
Const lpRight = 3
Const lpLeft = 4
Const lpManual = 5

.....

</script>


Generating static images on the server

All Nevron components can be used on the server side to generate static images in response to client requests. They can be used from any server that supports server side scripting and ActiveX. The following table summarizes the image export capabilities of the current version.

Image format | Bits per pixel | Compression | Transparent | Options
JPEG | 8, 16 and 24 | Yes | No | Quality, Smoothing, Quantize
PNG | 8, 16 and 24 | Yes | Yes | No
TIFF | 8, 16 and 24 | No | No | No
TARGA | 8, 16 and 24 | No | No | No
Bitmap | 8, 16 and 24 | No | No | No

From the table is clear that only the JPEG and PNG file formats have compression which makes them more suitable if you’re using the component to generate images that will be later posted on the web. There is one thing that you must notice here – the PNG compression does not decrease the image quality. This is a certain advantage of this format over JPEG and makes it the preferred image format for web applications. The PNG images are also smaller than their JPEG equivalents if you do not use special visual effects like gradients or lighting.

The Bitmap file format can be particularly useful if you want to be 100% sure that the client browser will be able to read the image file. Due to its easy to implement support and wide use (bitmap is the native image format for Windows) it is almost guaranteed that the client browser will support Bitmap images. The transparent feature is supported only from PNG. However you must have in mind that not all browsers do support it. The current support for the transparent feature in both IE and Netscape is poor. IE supports transparency only if the color depth is 8 bits per pixel. In this mode transparency is achieved with the use of a transparent color which leads to a small decrease in the color resolution, which fortunately is not noticeable. This makes this mode very useful if you want to render images that must be integrated into your web site layout.

There are two ways to integrate the components in your ASP script to generate static images.

1. Using the NASPManager object

This mode is easier to implement and is based on using the EmbedInHtml function in the ASP manager object. For example to insert a simle 3DChart PNG graphic in in your ASP page you must write:

<script LANGUAGE="VBScript" RUNAT="Server">
Set NChart1 = Server.CreateObject("3DCHART.NChart.5")
Response.Write(NChart1.AspManager.EmbedInHtml(400, 400, 2, "SomeID", "NChart1"))
</script>

As you can see the actual work is done with only one line of code! Of course this chart is not displaying anything useful but this is the amount of code that you need to write if you want to integrate the chart into your ASP application. The control will take care to create a temporary file and will generate a correct IMG tag that will be returned from the EmbedInHtml function. It will also release you from the burden to check when this file expires and will automatically delete it when it is no longer needed. For more information on this method see the NAspManager object documentation in the Object reference.

You must have in mind that before using the NAspManager object you must configure the web server. This is required because otherwise the control does not know the location of the NevronTemp file directory where the generated images will reside as well as parameters for the image export like the color depth for example.

You may also wonder what happens if you want to customize the IMG tag returned by the EmbedInHtml function. The solution is to modify the ImageTemplateTag property of the NAspManager object. By default it is <IMG SRC=<image_file>>. For example if you want to add a border around the image you can change it to <IMG BORDER=4 SRC=<image_file>>. The control will replace all occurances of <image_file> with the generated temporary file name.

2. Using the NImportExport object

The other approach is to use the functionality exposed from the NImportExport object. With the help of this object you can export your control to any of the image formats supported by Nevron. When you use this method you are responsible for the generation and afterwards the deletion of the temporary files.

There are a lot of strategies to generate a temp file and it is hard to tell which one is better. In this guide we'll just try to give you some useful ideas. The common in all of them is that you must implement a naming mechanism that generates unique image file names.

You can use the Session ID with a time stamp:

’generate the image file names as a concatenation of the session id and a time stamp
JPEGfile = "Chart" & Session.SessionId & Replace(Time,".","") & ".jpg"

Other useful techniques can use GUIDs or randomly generated values. After the session with the user is over the application must delete the rendered images.

Except the naming problem the usage of the NImportExport object for the creation of static images on the server is straight forward. The first thing you have to do is to create the component on the server.

' create the chart component on the server
Set NChart1 = Server.CreateObject("3DCHART.NChart.5")

After you have already created the component you can modify it’s properties and finally render the image in a JPEG file:

' render the image as a JPEG with 100% quality
NChart1.ImportExport.SaveJPEGImageFile “c:\ImageDir\Chart.jpg”, FALSE, 600, 400, True, 100, 0

Now that we have the JPEG image we can easily place it in the resulting HTML with the following code:

<img SRC=“c:\ImageDir\Chart.jpg”>


Generating active content

Today's users and programmers are not satisfied with the ability to generate a static image of a chart or other presentation graphic on the web site. They also want interactivity on the client side which will improve their web surfing experience. To achieve this Nevron has introduced the "active response". The idea of active response is simple - instead of sending a static image in the HTML response the control will send an object tag that looks like this:

   <OBJECT
   CLASSID="CLSID:87805514-AE62-11D4-BE10-525400E8E9BC" TYPE="application/x-oleobject"
     WIDTH="400" HEIGHT="400"
   ID="NChart1" CODEBASE="\NevronDownload\NClientCommonControl.cab">
<PARAM NAME="SHOWDOWNLOAD" VALUE="1">
<PARAM NAME="DATAPATH" VALUE="\NevronTemp\NCF20001211134731_49047.nim">
</OBJECT>

When the client browser reads this object tag it will perform the following steps:

1. It will check whether the control identified by the CLASSID is installed on the client machine.

2. If not it will download the cab file specified with the CODEBASE attribute (\NevronDownload\NClientCommonControl.cab), extract it and install the NClientCommonControl on the client machine. This CAB file is Authenticated and will be downloaded even if you user has set the IE security settings to High.

3. The browser will instantiate the client control and pass it the properties specified by the params attributes. The properties accepted by the client control are Showdownload and Datapath. As its name suggests when the Showdownload property is True the client control will show a progress bar indicating the download progress of the .nim file specified by the Datapath property. This can be very useful if you have a slow Internet or Intranet connection and do not want to leave your users "wondering in the dark". The Datapath property specifies the location from where to download the Nevron Image Map file (.nim). Internally the .nim file contains a PNG image and descriptive information about it that helps the client control to generate automation events and to display tooltips.

4. Once the client control finishes the download it will display the requested image and start to process mouse input from the user.

Active content on the server side

In your ASP script you generate active content by inserting the tag returned from the EmbedInHtml function into the HTML response. The following ASP code will insert an object tag into the HTML send to the user.

<script LANGUAGE="VBScript" RUNAT="Server">
Set NChart1 = Server.CreateObject("3DCHART.NChart.5")
Response.Write(NChart1.AspManager.EmbedInHtml(400, 400, 6, "NChart1"))
</script>

Of course the displayed chart will not show anything but it will be capable of displaying tooltips and generating events. Lets enhance our chart a little bit and add two data items and one presentation group.

<script LANGUAGE="VBScript" RUNAT="Server">

Set NChart1 = Server.CreateObject("3DCHART.NChart.5")
Set bar = NChart1.PresentGroups.Add(0)
bar.Common.Range.InfiniteX = True
bar.Common.Range.InfiniteY = True
bar.Common.Range.InfiniteZ = True

' show values on top of bars
bar.Common.HasTexts = True

' add cagegories and series
NChart1.Categories.Add "Apples", True
NChart1.Categories.Add "Oranges", True
NChart1.Series.Add "Fruits", True

' fill the data from the form some data
NChart1.DataAt(0, 0, 0).Value1 = 10
NChart1.DataAt(0, 0, 0).MouseResponse.SetTooltip "Apple sales"
NChart1.DataAt(0, 0, 0).MouseResponse.URL = "AppleSales.htm"
NChart1.DataAt(1, 0, 0).Value1 = 20
NChart1.DataAt(1, 0, 0).MouseResponse.SetTooltip "Orange sales"
NChart1.DataAt(1, 0, 0).MouseResponse.URL = "OrangeSales.htm"

Response.Write(NChart1.AspManager.EmbedInHtml(400, 400, 6, "NChart1"))

</script>

This time the generated chart displays a little bit more information and is capable of doing more things. Notice that in the above script we modified the NMouseResponse object attached to the data items of the chart. The code

NChart1.DataAt(0, 0, 0).MouseResponse.SetTooltip "Apple sales"

Instructs the chart to replace the standard tooltip for data item (0, 0, 0) which is "Data item X:0 Y:0 Z: 0" with the more friendly "Apple sales". Now when the user moves the mouse over the first bar the client control will display "Apple sales". The line of code immediately following after that is:

NChart1.DataAt(0, 0, 0).MouseResponse.URL = "AppleSales.htm"

It tells the client control to direct the browser to "AppleSales.htm" when the user left clicks with mouse on the bar. You can assign both relative and absolute URL paths to this property. For more information on the NMouseResponse object see the Object Reference.

Active content on the client side

As we mentioned earlier the client control can fire events that can be intercepted from client side scripts. This feature is very useful when you want to add interactivity which is client dependent. The most important things related with event handling are of course what is the ID of the control and the event's names. In the previous examples when we inserted the control in the HTML response we used the following line of code:

Response.Write(NChart1.AspManager.EmbedInHtml(400, 400, 6, "NChart1"))

The fourth parameter defines the ID of the client control. With its help you can write some client script that will be send to the client when your ASP page is processed. To start again with the most simple scenario we'll generate an empty chart and detect when the user clicks on the background.

<script LANGUAGE="VBScript" RUNAT="Server">
Set NChart1 = Server.CreateObject("3DCHART.NChart.5")
Response.Write(NChart1.AspManager.EmbedInHtml(400, 400, 6, "NChart1"))
</script>

<script LANGUAGE = "VBScript">
Sub NChart1_BackgroundMouseEvent(MouseState)
if MouseState.MouseAction = 0 then
MsgBox "You clicked on the background"
end if
</script>


Troubleshooting

This topic will provide a check list that you can try to use if you meet problems with the control's integration in ASP or HTML.

On the client side

1. The first thing to check is whether the control is installed on the machine. You can do this by launching a VB example or looking for the control CLSID in the registry. The Regedit utility which is part of Windows will help you to do this. For a list of the Nevron controls CLSIDs see the "Deploying Nevron ActiveX components" topic.

2. If the component is used in an HTML page check whether your codebase attribute points to a valid cab file.

3. If you used the separate build to build the installation program of your application then check whether the dependent dlls are correctly installed. Use the depends.exe utility supplied with Visual Studio.

On the server side

1. Again the first thing to check is whether the control is installed properly by running one of the VB examples.

2. Check whether the account used by IIS for guests has permissions to access (execute) the control ocx file.

3. If you're using the NAspManager run the NServerConfig utility and press the "Update server" button.

4. Check whether the account used by IIS for guests has permissions to write and create to the NevronTemp directory. The NServerConfig utility automatically takes care for this but in the case it fails you may assign these rights manually.

5. If you use the NImportExport object to generate static images check whether you have the UseWindow dimension set to TRUE.

6. Check whether you have included the .inc file in the ASP page.

If the problem persists please do not hesitate to contact us support@nevron.com with a detailed information about the problem. We will try to reproduce it and fix it on some of our machines ASAP.


Deploying Nevron ActiveX components

One of the most important questions related with component development is “How do I deploy my software build with the help of various components on the client machine?”. This topic main goal is to answer to this question.

Before we start to discuss the possible options for building your installation we will examine the architecture of Nevron controls and its advantages and disadvantages. The following simple diagram illustrates it:

As you can see Nevron controls use the functionality of the Windows API and the OpenGL API through the help of two object oriented wrappers. These are the MFC (Microsoft Foundation Classes) and the NOpenGL layer. NOpenGL was developed by Nevron and implements the support for the Nevron ActiveX standart features, such as the support for various image file formats, the rendering of all 3D graphics primitives, ASP integration etc.

In order to function properly the Nevron ActiveX control needs to have the underlying layers properly installed and registered. This is not an easy task because some of the DLLs maybe used by other Windows applications and you'll have to restart your machine.

We have realized this and this is why the current version supports two builds for the controls. The first one is the monolith build. It encompasses the Nevron control, the NOpenGL layer and the MFC library in only one DLL. This makes the installation process for this build very easy and error free. The other one is the separate build. If you use this build you must also take care for the installation of the MFC and NOpenGL dlls.

In addition to this the two builds come in two versions - ANSI and Unicode. The ANSI build is designed for users and developers that do not need to show Unicode characters. The big problem with Unicode is that programs compiled as Unicode will not run on Windows 95/98 systems because they do not support it. On the other hand with the Unicode version you can display Arabic, Chinese, Cyrilic, Greek, Hebrew, Japanese kana, Korean hangul and others. To indicate that the build is the Unicode version we added 'u' at the end of the .ocx or .dll file. For example 3DChartM.ocx stands for 3DChart monolith build ANSI version, whereas 3DChartMu.ocx means - 3DChart monolith build Unicode version. The installation guidelines that will follow describe how to install the ANSI version, but they are also valid for the Unicode - the only thing you'll have to do is to add the 'u' at the end of the .ocx, .dll or .cab file. By default the control installation registers the monolith ANSI version. If you need to change to the Unicode one you must register it by using the NControlConfig utility supplied with the control. For more information on this refer to the Switching between Unicode and ANSI builds topic.

Please note that we assume that OpenGL is already installed on the target machine. OpenGL comes as a standard component with Win95, Win98, Win NT 4.0 and Win2000. Only early Win95 releases do not support it. For additional information see the Installing the OpenGL library topic.

Installation with the monolith build

To indicate that the build is monolith we have added 'M' at the end of the control name. For example 3DChartM.ocx is the monolith build for 3DChart. These ocx files have no dependent dlls other than the standart Windows dlls that are guaranteed to be installed on the client machine.

1. Write your own installation program

The only step that you have to perform in your installation is to copy the ocx to the target directory and then register it. Registering is done by calling the DllRegisterServer function exposed by the control.

2. Install the controls manually

Copy the control to the target directory and then call regsvr32 to register it. The regsvr32 utility is shipped with Windows. Lets say that F is your CD-ROM drive where you have the 3DChartM.ocx. The following lines from the command prompt will register the control on a WinNT machine.

c:\copy f:\3DChartM.ocx c:\windows\system32
c:\regsvr32 c:\windows\system32\3DCharM.ocx

That's all! The control is now installed in your windows\sytem32 directory.

3. Use a .CAB file

The third way to distribute the monolith build is by using the cab file supplied with the control. This is very useful when you are developing software for company intranets or the web. When you develop for the Internet however you must consider whether to use the "active response" feature of the control because the ActiveX control send to the server is much smaller and easier to download. For more information on this issue see the topics under the "Building Internet and Intranet Applications" book in the User's Guide.

For example the following code will include the 3DPieChart in your html document. If the component is not found on your machine then IE will use the specified cab file to install the control.

<OBJECT
classid="clsid:130366B6-11B6-11D3-947E-000000000000"
codebase="c:\Program Files\Nevron\3DpieChart\Program Files\3DPieChart.cab"
height=200 width=200 id=PieChart1
</OBJECT>

The following table lists the corresponding CLSIDs for the different Nevron controls:

Control | CLSID
3DChart | B5CE1CD3-3AB9-11d3-9502-525400E61EDC
3DPieChart | 130366B6-11B6-11D3-947E-000000000000
3Dlegend | D38E5991-71C5-11d3-954D-525400E61EDC
3DClock | 730EA36A-856A-11D3-BA35-525400E61EDC
3Dtext | AC983F78-0792-11D3-BA65-9F5D8B92F109

4.Use the Package & Deployment Wizard

A lot of VB programmers use this tool to distribute their programs. Deploying the monolith build with the Package & Deployment Wizard is very easy, because the component does not have dependend dlls and it does not need a .dep file. The Package & Deployment Wizard has to include in the installation only the monolith ocx file.

5. Notes when using the component from ASP

When you use the component from ASP you must make sure that the account used for anonymous user access has permissions to execute and read the control ocx. Otherwise ASP will generate an error because it does not have the necessary rights to instantiate the control.

Installation with the separate build

Distributing the Nevron components with this build is recommended only if you need to optimize the disk usage or if your program also uses MFC and needs to install the MFC dlls anyway. If you code in VB or other scripting language we strongly recommend you to use the monolith build. This will save you a lot of time and testing.

1. Write your own installation program

This is probably the most difficult way to install the Nevron ActiveX controls, but it provides you with greater flexibility because you are in control of the installation process. Lets start with the installation of the MFC library. It requires the following dll’s

DLL | Version | Destination | Register
Olepro32.dll | 5.0.4275 or later | Windows system | Yes
Msvcrt.dll | 6.00.8397.0 or later | Windows system | No
Mfc42.dll or Mfc42u.dll (ANSI or Unicode) | 6.00.8447.0 or later | Windows system | Yes

Installing the MFC is not as straightforward as you might expect. The complications arise from the huge number of programs that may be using it. This is why when you run your software installation program there might be other programs running that use MFC. This will lock the MFC dll’s and you’ll not be able to directly replace them with the new ones. To work around this problem you’ll have to use the function MoveFileEx on WinNT or Win2000 or schedule the file for moving in the [rename] section of the wininit.ini file if you are running on Win98 or Win95. Although this may seem as a dark cloud the good news is that it may not be in your sky, because the latest versions of IE redistributes the newest MFC dll’s. Also if you are using some installation utility like InstallShield, Wise etc. it will most likely take care of this automatically so you’ll not have to worry about it. You can also see the source code of the NControlInstaller.exe – it replaces locked dlls using the above mentioned approach.

After that the installation of the control is comparatively easy. You’ll have to include the following files in order to configure the NopenGL layer.

DLL | Version | Destination | Register
NUtils.dll | 5.0.0.0 | Program destination | No
NOpenGL.dll | 5.0.0.0 | Program destination | No
NWinCtl.dll | 5.0.0.0 | Program destination | Yes
NControl.ocx | 5.0.0.0 | Program destination | Yes

Where NControl may be any of the Nevron ActiveX controls – e.g. 3DChart, 3DPieChart, 3DLegend, 3DClock or 3DText.

2. Install the controls manually

This method is easy, but it is not recommended because it is error prone. In order to install the NControl.ocx (again NControl can be any of the ActiveX controls developed by Nevron) you must follow these steps:

  1. Copy Olepro32.dll, Msvcrt.dll, Mfc42.dll, NUtils.dll, NOpenGL.dll, NWinCtl.dll and NControl.ocx to the Windows system directory. These file can be found in the Program Files subdirectory.

  2. Register Olepro32.dll, Mfc42.dll, NWinCtl.dll and NControl.ocx by calling the regsvr32.exe utility. For example the following command line registers Olepro32.dll on WinNT machine:

    D:\winnt40\system32\regsvr32 olepro32.dll

The most usual problem related with this approach is that sometimes you’re unable to copy these files to the system directory. The reason for this is that they might be locked by other applications.

3. Use the NControlInstaller.exe utility

A very convenient way to install Nevron ActiveX components is to use the NControlInstaller.exe utility. When you run NControlInstaller.exe it will automatically perform the following steps.

  1. NControlInstaller attemps to copy the file to the windows system directory. If the files cannot be copied due to some reason – most likely this is because the target files (MFC dlls) are locked the installation routine registers a special key in the registry and copies itself in the start up folder so that during the next restart it will be automatically launched. If everything was Ok then the installation program goes to step number 4. Otherwise the installation proceeds with step number 2.

  2. NControlInstaller asks the user whether he wants to restart the machine.

  3. If Yes NControlInstaller automatically reboots. Otherwise the user will have to reboot manually before executing software that uses Nevron controls.

  4. NControlInstaller registers the dll’s and performs cleanup.

The following table lists the switches for the NControlInstaller.exe and their meaning.

Switch | Meaning
MFC | Install only the MFC dlls (mfc42.dll, msvcrt.dll, olepro32.dll). This option is always turned on by default.
WARNINGS | Display install warnings.
3DCHART | Install the 3Dchart control and the MFC dll’s.
3DPIECHART | Install the 3Dpiechart control and the MFC dll’s.
3DLEGEND | Install the 3Dlegend control and the MFC dll’s.
3DCLOCK | Install the 3Dclock control and the MFC dll’s.
3DTEXT | Install the 3Dtext control and the MFC dll’s.
ALL | Combines the 3DCHART, 3DPIECHART, 3DLEGEND, 3DCLOCK and 3DTEXT setting. ALL is the default switch assumed by NControlInstaller.
NOREBOOT | Disables rebooting. When this option is on instead of rebooting the NControlInstaller finishes with a return code of 1. This indicates that the machine must be restarted.

Note that the NControlInstaller is not case sensitive and the order of the switches is not important. For example the following command line on a WinNT machine installs 3DChart (provided that the necessary file are present in the temp directory):

C:\temp\ NControlInstaller 3DCHART NOREBOOT

And disables the reboot feature. If the system needs rebooting then NControlInstaller returns 1. You can use this return code in your installation for example to display a message informing the user that he must reboot the system to complete the installation.

Also if you are an intrepid C++ developer you can modify the code of the NControlInstaller in order to fit your personal needs. The source code for the NControlInstaller can be found in the Support\NControlInstaller subdirectory.

4.Use the Package & Deployment Wizard

Deploying the separate build of Nevron ActiveX controls with the Package & Deployment Wizard has one caveat. This utility correctly recognizes that the VB project is using a Nevron control and tracks down the DLL dependencies using the .dep file supplied with the control. The main problem however is that this program operates correctly only when all programs are closed. Even in this case the msvcrt.dll is not unlocked because it is used by core windows services. The replacement of this dll is possible only by scheduling the file for replacement during restart.

To work around the problem you may consider changing the deployment directory for the Nevron control and the other dependent dlls. Instead of using the $(WinSysPath) directory you can change the destination folder to $(AppPath). This ensures that there would not be any locked dlls and the Package & Deployment Wizard will be able to copy the files without any problems.

5. Notes when using the component from ASP

When you use the component from ASP you must make sure that the account used for anonymous user access has permissions to execute and read the control ocx as well as all the depended dlls. Otherwise ASP will generate an error because it does not have the necessary permissions to instantiate the control.

FAQ about ActiveX controls installation

Q. What does it mean to register a control and why do I have to do it?

A. In general this means that you’ll have to call the DllRegisterServer function that the ActiveX control exposes. You have to do it because otherwise COM cannot locate the files associated with this ActiveX control. The following C++ code snippet illustrates this:

typedef UINT (*lpDllRegisterServer)();

  • void RegisterDLL(LPTSTR lpFileName)

{

lpDllRegisterServer DllRegisterServer;

HINSTANCE hInstance = LoadLibrary(lpFileName);

if (hInstance == NULL)

{

char szMessage[MAX_PATH + 100];

strcpy(szMessage, "Failed to load:");

strcat(szMessage, lpFileName);

MessageBox(NULL, szMessage, INSTALLER_TITLE, MB_OK);

return;

}

// register the DLL

DllRegisterServer = (lpDllRegisterServer)GetProcAddress(hInstance, "DllRegisterServer");

// check whether GetProcAddress succeeded

if (DllRegisterServer)

(DllRegisterServer)();

}

Q. Can I register a control manually (e.g. without writing special code)?

A. Yes you can do that by using the regsvr32.exe located in the windows system directory. For example the following command line on a WinNT machine registers 3DChart.ocx

C:\winnt\system32\Regsvr32 3DChart.ocx

provided that system32 contains all the dependent dlls.

Q. How do I track dependent dlls?

A. You can do that by using the Depends.exe utility supplied with Visual Studio. It tracks the dll dependencies and marks the missing dlls in red.


Switching between Unicode and ANSI builds

All Nevron controls are shipped with two builds - monolith and separate. In the monolith build the control encompasses all the dependent dlls used by the control. In the separate build the control has dependent dlls (MFC libraries and NOpenGL libraries). The two builds also have to versions - ANSI and Unicode. The reason for the existence of these versions is that some users require Unicode because they need characters that are supported by it. These include Arabic, Chinese, Cyrilic, Greek, Hebrew, Japanese kana, Korean hangul and others. To switch between the different builds you can use two techniques:

1. Use the NControlConfig utility to register the build

The NControlConfig is a very simple utility located in the NControl\Program Files directory. It accepts three parameters passed from the command prompt. The following table lists them:

Parameter | Values
Control name | 3DChart, 3DPieChart, 3DLegend, 3DText, 3DClock
Version | Unicode or ANSI
Build | Monolith or Separate

For example to register the Monolith Unicode version of 3DChart you have to type the following line from the command prompt:

d:\program files\Nevron\3DChart\Program Files\NControlConfig 3DChart Unicode Monolith

Please note that we assume that the control was installed in the d:\program files\Nevron\3DChart directory. The NControlConfig is not case sensitive but the order of the parameters is important.

2. Manually registered the required build

Of course you can always register the control manually by using the regsvr32 utility which is shipped with Windows. Have in mind that 'M' in the control name indicates that the control is monolith and 'u' at the end means that this is the Unicode version. Lets illustrate the above with a few examples:

d:\program files\Nevron\3DChart\Program Files\regsvr 3DChartu.ocx

d:\winnt\system32\regsvr 3DChartMu.ocx


Installing the OpenGL library

This topic directs you how to download the OpenGL library and install it on your machine. Please note that you only need to do this if you are running on an early Win95 OS. Later versions of Windows ship OpenGL as a standard component and on these operating systems you do not to install it. These include Win98, WinNT 3.5 and later, Win2000.

To get OpenGL95.exe which is a self extracting executable containing the dynamic link libraries for OpenGL and GLU directly from Microsoft you need to do the following:

  1. Go to the ftp site of Microsoft - ftp.microsoft.com

  2. Change to the \softlib\mslfiles directory

  3. Download OpenGL95.exe

If you want to include a setup of OpenGL library in your installation you have two options:

  1. Install the OpenGL libraries in the destination directory of your application. This ensures that you use the proper version of OpenGL.

  2. Install the OpenGL libraries in the Windows system directory and check whether the directory contains more recent libraries. In this case you should not replace them.

  3. Run OpenGL95.exe self-extracting executable. You should do this only if you are running on a Win95 machine.

We strongly recommend that you use the third approach. The first and the second ones are recommended only if you want a better control over the version of OpenGL or the installation process.

Currently Nevron controls require OpenGL 1.1 properly installed on the target machine.


OpenGL lighting model

OpenGL model

OpenGL approximates light and lighting as if light can be broken into red, green and blue components. Thus, the color of light sources is characterized by the amount of red, green and blue light they emit, and the material of surfaces is characterized by the percentage of the incoming red, green and blue components that is reflected in various directions.

In the OpenGL lighting model the light in a scene comes from several light sources. Some light comes from a particular position and some light is generally scattered around the scene. For example when you turn on a light bulb in a room, most of the light comes from the bulb, but some light comes after bouncing off one, two, three or more walls. This bounced light is called ambient light that seems to come from no particular direction, but it disappears if the light source is turned off. You can modify this light by setting the AmbientColor property of the NLightSource object. There might be a general ambient light in the scene that comes from no particular source as if it had been scattered so many times that its original source is impossible to determine. You can control this global ambient light by modifying the GlobalAmbientLight property of the NLightModel object.

In the OpenGL lighting model the light sources have an effect only when there are surfaces that absorb and reflect light. Each surface is assumed to be composed of a material with various properties. A material might emit its own light, scatter some light, or reflect light in a desired direction like a mirror.

So in general OpenGL divides the lighting in four independent components: emissive, ambient, diffuse and specular. All four of them are computed independently and then added together.

Ambient light as already mentioned is the light scattered so many times that its original light source is impossible to determine.

Diffuse light comes from a particular direction so it is brighter if it comes squarely down on a surface than if it barely glances off the surface, but once it hits the surface however it is scattered equally in all directions. You can modify the diffuse component of a particular light by modifying the DiffuseColor of the NLightSource object.

Specular light comes from a particular direction and bounces off a surface in a preferred direction. You can modify the specular component of a particular light by modifying the SpecularColor of the NLightSource object.

On the other hand materials are characterized by the percentages of light they reflect from the different light components. You can modify these percentages by changing the values of the AmbientColor, DiffuseColor and SpecularColor of the NMaterial object. In addition to this materials can also emit light. You can modify the emissive light of a material by changing the value of the EmmisiveColor property of the NMaterial object. By default this value is RGB(0, 0, 0) which means that the object does not emit any light.

In addition to this you can also modify the attenuation factors for every light source. In the real world the intensity of the light decreases as distance from the light increases. You can control this process by modifying the ConstantAttenuation, LinearAttenuation and QuadraticAttenuation properties of the NLightSource object. OpenGL attenuates a light source by multiplying the contribution of that light source by an attenuation factor using the formula:

Attenuation factor = 1 / (KC + KL * D + KQ * D * D)

Where KC is the ConstantAttenuation, KL is the LinearAttenuation and KQ is the QuadraticAttenuation and D is the distance from the light source to the object. See also the Advanced light settings Dialog topic.


Working with Lights

Lighting is one of the most impressive features that Nevron components deliver. Configuring lighting however is not an easy task. Nevron has created a set of predefined light schemes that help you configure lightning with ease. This takes only one function call and is very convenient. For example the following VB code:

ControlName.LightModel.SetLightScheme lsStandardWhite

will enable the lighting and create one light source at (15, -10, 30) with white diffuse and specular colors. The global ambient light is set to gray. To achieve the same effect without using the predefined schemes you have to write the following code:

Dim lightsource As NLightSource
NChart1.LightModel.EnableLighting = True
NChart1.LightModel.GlobalAmbientLight = RGB(125, 125, 125)
Set lightsource = NChart1.LightSourceCollection.Add("Light0")
lightsource.PositionX = 15
lightsource.PositionY = -10
lightsource.PositionZ = 30
lightsource.SpecularColor = vbWhite
lightsource.DiffuseColor = vbWhite

e.g. you save 8 lines of code.

Following is a step by step description on how to configure lighting.

  1. First of all you should tell the component that you want to render the scene with lightning. There are two ways to do that - the first one is through automation and the second one is through the Lights Property Page of the control.

    From the Lights Property Page you must check the Enable Lighting check box.

    With Automation you should write something like this in VB :

    ControlName.LightModel.EnableLighting = True
    This ensures that lightning is enabled.

  2. Now the control knows that you want to use lightning, but it still does not know anything about the lights that you want to apply to the scene. To add a light source you should do the following:

    From the Lights property page press the Add button. In the bottom left corner of the page the preview window must be black. This is because the light is not emitting light yet and it’s coordinates are (0, 0, 0). Select some color for the specular and diffuse components of the light (you do this by selecting a color from the Diffuse and Specular combo boxes) . Let’s say that you selected white for the diffuse emission and yellow for the specular emission of the light. But the Preview window is still black - this is because the light is inside the sphere of the preview. Set the position of the light source to Z = 2.0 by using the spin controls. When you position the light to (0, 0, 2) you should see a spot of light on the sphere. Now you configured one light source.

    If you want to programmatically create the same light source you should write the following code in VB:

    Dim LightSource As NLightSource
    ControlName.LightModel.EnableLighting = True

    Set LightSource = ControlName.LightSourceCollection.Add("Light1")
    LightSource.DiffuseColor = vbWhite
    LightSource.SpecularColor = vbYellow
    LightSource.PositionZ = 2

    Sometimes the scene rendered with lightning looks dark. In cases like this you can consider adding global ambient light. For a more detailed description of light types see the OpenGL lighting model topic.

    From the Lights property page you can add some global ambient color from the Global ambient light combo.

    With Automation you’ll achieve the same effect by writing the following code :

    ControlName.LightModel.GlobalAmbientLight = RGB(100, 100, 100)

    This line of code will set the global ambient light to dark gray.


Overview

It is indeed very nice to have a presentation quality chart or text displayed by your VB or web application, but often this is not enough to build a really useful program. What you may need sometimes is information passed from the component to the program that drives it.

The nature of this information can vary from a simple tooltip to an automation event but the common in all this actions is that the component is initiating them and the program simply decides whether to respond in some way or just to skip it.

We call these features interactivity features because they establish a backward connection that closes the circle of interaction - the program drives the component to display some data and then the component notifies the program about some of the actions that the user performed on it.

Interactivity features in Nevron controls are divided into two categories: Events and Mouse. The following topics will teach you how you can use them.


Events

Probably you have already asked yourself "Can I understand if the user clicked with the mouse over a certain object in the 3D space?". The answer is of course "Yes".

Every group of objects in the 3D space have an associated event that distinguishes it from the other objects. For example the data items in the integrated legend of 3DChart generate the LegendDataMouseEvent event. Lets look in more detail at this particular event to understand the general event organization in Nevron components. The event has the following declaration:

LegendDataMouseEvent(Row As Long, Col As Long, Object MouseState)

The name of the event describes the group of objects that it relates to. In our case this is "LegendData". If this group contains more then one object then the parameters of the event uniquely identify the object in the group. In the case of the LegendDataMouseEvent the Row and Col parameters specify the position of the legend data item in the legend.

The last parameter - MouseState is an automation object that describes the mouse and keyboard state when the event is generated. We will examine this object in greater detail at the end of this topic. For now let's concentrate on the easier tasks.

Turning on event firing

To turn on the event firing you must tell the control that you wish to intercept automation events. You do this by modifying the MouseMode property of the NEventManager object.

NChart1.NEventManager.MouseMode = mmEvent

After executing this line of code your control will begin to fire events in response to mouse actions. You can choose whether you want the control to respond automatically to mouse events by showing tooltips or context menus or that you want to intercept the event from your program.

Automatic actions

The following table summarizes the automatic action performed by the control in response to different mouse actions.

Mouse action | Automatic action
Left mouse click | none
Left mouse double click | context menu
Right mouse click | context menu
Right mouse double click | none
Mouse move | tooltip

Tooltips

For example if you want your control to show tooltips you must write the following code in VB:

NChart1.EventManager.MouseMode = mmEvent
NChart1.EventManager.MouseMove = erAutomatic

Now when you move your mouse over the different 3D objects you'll see that the tooltip will change. You may want to change the default tooltip value with some other one that describes the object better. This is done with the help of the NMouseResponse object attached to it. The following code snippet changes the tooltip for the background:

NChart1.Background.MouseResponse.SetTooltip "This control is COOL!"

Context menus

The control can also display context sensitive menus when the user right clicks or left double clicks on a particular object. The following code:

NChart1.EventManager.MouseMode = mmEvent
NChart1.EventManager.RMouseButtonClick = erAutomatic

enables context menus when the user right clicks on a 3D object. This picture shows context menus in action:

Intercepting events

Now comes the interesting part - the intercepting of events generated by the control. Event handlers are in fact normal procedures that are called from the control in response to mouse actions. To indicate when a certain mouse action generates an event you must set the LMouseButtonClick, LMouseButtonDoubleClick, RMouseButtonClick, RMouseButtonDoubleClick or MouseMove to erFire. For example the following simple VB script for 3DChart enables event firing and intercepts the background event.

Private Sub Form_Load()
NChart1.EventManager.MouseMode = mmEvent
NChart1.EventManager.RMouseButtonClick = erFire
End Sub

Private Sub NChart1_BackgroundMouseEvent(ByVal MouseState As Object)
MsgBox "You right clicked on the chart background"
End Sub

Suppose however that the Form_Load procedure looked like this:

Private Sub Form_Load()
NChart1.EventManager.MouseMode = mmEvent
NChart1.EventManager.RMouseButtonClick = erFire
NChart1.EventManager.LMouseButtonClick = erFire
End Sub

Now the control will generate the background event when the user right clicked and left clicked on the background. This makes the text "You right clicked on the chart background" incorrect. If you want to detect the mouse action that generated the event you may use the MouseAction member of the NMouseState object.

Private Sub NChart1_BackgroundMouseEvent(ByVal MouseState As Object)
If MouseState.MouseAction = maRMouseButtonClick Then
MsgBox "You right clicked on the chart background"
End If
End Sub

As you can see the check for the mouse action makes our message box correct again. For more information on the NMouseState object refer to the Object Reference.


Mouse

Besides generating events when the user clicks or moves the mouse the control can also change the 3D view projection parameters in response to mouse actions. Currently there are three special mouse modes supported by all Nevron components.

1. Trackball

In this mode you can adjust the polar coordinates of the viewpoint. The trackball represents the 3D scene as a sphere which you are rotating. To activate the track press the left mouse button when the mouse is over the control and then drag the mouse. The following line in VB activates the trackball:

NChart1.EventManager.MouseMode = mmTrackBall

2. Zoom

In this mode you can modify the zoom factor applied to the scene. The zoom factor ranges from 1 to 1000. 100 is the default value. Press the left mouse button and then drag the mouse over the control. Moving the mouse towards the top of the control will zoom in whereas moving the mouse to the control bottom will zoom out.

NChart1.EventManager.MouseMode = mmZoom

3. Offset

In this mode you can modify the offset of the 3D scene from the control center. Press the left mouse button and then drag the mouse over the control. The 3D scene will move in the direction of the mouse.

NChart1.EventManager.MouseMode = mmOffset


General Property Page

The Dimensions control group helps you specify the dimensions of the chart (for more information see Chart Dimensions topic).


Data Property Page

The Data Property Page provides you with a visual interface to modify the Categories, Series and Levels collections and also to edit the values of the data items contained in the Data Storage (see the Data Storage topic for more information).

The Current Level edit shows the currently edited level in the data storage.

The Data Grid shows the current level in the Data Storage. The row and column counts are synchronized with the size of the Categories and Series collections respectively. This means that every change in the size of the Categories and Series collections automatically reflects in the dimensions of the Data Grid. The headers of the rows show the labels of the Categories collection and the column headers show the labels of the Series collection. You can directly edit the values in the grid by double clicking on the desired cell.

The Value1 – Value2 – Value3 .... Label Tab controls which value of the NData objects is the Data Grid displaying.

The Color Button shows the standard Windows select color dialog, and the selected color is applied on the selected range of data items.

The Fill Effect Button shows the Select Fill Effect Dialog, and the selected fill effect is applied to the selected range of data items.

The Material Button shows the Material properties dialog, and the selected material is applied to the selected range of data in items.

The Border Props Button shows the line properties dialog for the selected range of data items in the data storage.

The Mouse... Button shows the Mouse Response dialog of the selected data points.

The Categories – Series – Levels tab specifies the currently edited axis parameter collection (see the Data Storage topic for more information).

The Add, Delete and Properties buttons are used to modify the currently edited collection.

Important! The data shown by the data property page is visualized, when you create some presentation groups from the Presentation Groups Property Page. If you try to edit the appearance of the data points in the data storage and the changes are not visualized you have to check whether the Uniform Appearances of the presentation group showing the data points are not enabled.


Presentation Groups Property Page

The presentation group property page helps you modify the presentation group collection. The Presentation Groups Grid displays the created presentation groups. Double clicking on a row in the grid displays the Property Page Sheet for the selected presentation group.

The Add Button shows the Add Present Group Wizard, which provides you with a step by step interface for creating a presentation group. The first step is of course the selection of the desired presentation group:

Step 1 - select the presentation group.

After you have selected the presentation group you want to create, the Add Present Group Wizard will sequentually show the property pages of the selected presentation group. See the Presentation Groups Property Pages topic for more information.

The Delete Button deletes the selected presentation group. You must select the whole presentation group row by clicking on the row header.

The Properties Button shows the Property Page Sheet of the selected presentation group.

Important! You must create some categories and series and set some values to the data points in the Data Property Page before you see the chart visualized.


Axes Property Page

This page controls the appearance of the axes. By double clicking on an axis in the Axis List box or by pressing the Properties button you can invoke the Axis Property Page Sheet, from where you can control various properties of the axis appearance, ticks, gridlines, scale and position.

See the Axes topic for more information.


Chart Walls Property Page

Walls Property Page

This page controls the appearance of the chart walls. By double clicking on a chart wall in the Chart Wall list box or by pressing the Properties button you can invoke the chart wall property page sheet, from where you can control the wall width, fill effect, material and border properties.

See the Chart Walls topic for more information.


Database Property Page

The Database property page supplies the user with a visual interface to connect the 3DChart component with an ADO database. See the Database Integration topic for more information. It has the following user interface controls:

Enable Database Integration check – this check enables or disables the integration of the 3DChart component with the database.

Data Source Combo – shows the currently selected data source.

Data Source Add Button – shows the Add Data Source dialog, from which you can specify connection and recordset information for the data source.

Data Source Delete Button – deletes the currently selected data source.

Data Source Properties Button – shows the data source properties dialog.

Category Mapping Label Combo – from this combo you specify the field, from which the component will extract the category labels.

Category Mapping Show Label Check – specifies whether the component shows the category labels.

Serie Mappings Grid – displays the created serie mappings.

Serie Mappings Add Button – shows the Serie Mapping dialog.

Serie Mappings Delete Button – deletes the selected serie mappings

Serie Mappings Properties Button – shows the Serie Mapping dialog for the selected serie mapping.


Legend Property Page

From this property page the user can control various properties of the 3DChart legend. The property page has the following control groups:

Legend Mode Combo - controls the mode of the legend. When you select Manual mode the control will enable the Legend Data button.

Legend Data Button – invokes the legend data dialog, through which you can manually add items to the legend.

Legend Dimensions – this group of controls helps you inflate the width and the height of the legend

Legend Expands by – this group of controls determines the legend expansion strategy. For more information see [image] LegendExpand property of NLegend object.

Has Base Check – controls the visibility of the legend base

Base Fill Effect – shows the select fill effect for the legend base

Base Frame – shows the frame properties dialog for the legend base

Has Shadow – controls the visibility of the shadow

Shadow Fill Effect – shows the select fill effect for the shadow

Shadow Frame – shows the select frame properties for the shadow

Shadow OffsetX – offsets the shadow in horizontal direction

Shadow OffsetY – offsets the shadow in vertical direction

Text Properties Button – shows the text properties dialog for the legend texts

Text Offset – controls the offset of the text from the legend mark

Mark Size – controls the size of the legend marks

Legend Placement Mode Combo – specifies the legend placement position.

Legend X Margin % - the horizontal distance of the legend to the control window. Disabled when the placement mode is Manual.

Legend Y Margin % - the vertical distance of the legend to the control window. Disabled when the placement mode is Manual.

Legend PostionX – the x position of the legend center from the center of the control window.

Legend PostionY - the y position of the legend center from the center of the control window.


Axis Property Sheet

Axis Property Page Sheet

The Axis Property Sheet supplies the user with a visual interface to edit the properties of one of the six chart axes. This property sheet can be invoked from the Axes Property Page or programmatically with the help of the ShowDialog method of the NAxis object. The sheet consists of the following property pages:

  1. General

  2. Ticks

  3. Gridlines

  4. Title

  5. Scale

  6. Position

  7. Stripes

  8. Const Lines


Axis General Property Page

The Visible Check controls the visibility of the axis

The Axis Appearance Controls Group defines the appearance of the axis. When the Width is equal to 0 the axis is visualized with the line properties accessible with the help of the Properties button. Otherwise the user is also able to apply fill effect and material on the axis with the help of the Fill Effect and Material buttons.

The Texts Controls group defines the appearance of the axis texts. The Text Properties button shows a dialog trough which you can control the visual appearance of the axis texts. When you check the Stagger Texts check box axis texts are displayed in a stagger manner. The distance between two adjacent texts is determined by the value specified in the Offset edit. Staggered texts are very useful if you want to avoid axis text overlapping.

For more information see the Axes Topic in the User Guide.


Axis Ticks Property Page

From this property page you can control the appearance of the axis ticks. The Inner Length and Outer Length edits specify the length of the inner and outer major ticks.

The Inner Line Props and Outer Line Props buttons show the dialogs controlling the appearance of the inner and outer ticks.

The Minor Ticks control group controls the appearance of the minor ticks axis ticks. From the Length edit you can specify the length of the minor ticks while the Line Props button shows a visual interface helping you to edit the line properties of the minor ticks. The Count edit determines the number of minor ticks displayed between two major ones.

See the Axes topic for more information.


Axis Gridlines Property Page

This property page helps you control the major and minor gridlines of the axis. Major gridlines are synchronized with the major axis ticks, while the minor gridlines are synchronized with the minor axis ticks. Gridlines can be visualized in two modes. When the Width edit is set to 0 the gridline is visualized as a simple line with the line properties accessible from the Border Properties button. Otherwise the gridlines can be visualized with Fill Effect and Material properties.

From Show at Wall check list box you can select the chart wall on which the gridlines will be displayed.


Axis Title Property Page

This property page supplies you with a visual interface to edit the title of the axis. The title string is entered in the Title edit control. The Title Properties button displays the properties applied on the title string.


Axis Scale Property Page

This property page controls the scale mode in which the axis operates. The current scale mode is determined by the currently active scale mode tab.

  1. Dimension Scale Mode.

    From this tab you can control the properties of the axis when it operates in dimension scale mode (the default scale mode for the Categories and Series axes). In this scale mode the axis is showing the labels of the corresponding NAxisParameterCollection (see the Axes topic for more information). The Number of data points between ticks edit specifies the number of data points between two major axis ticks. By default this values is set to 1. You may increase this value if for example you want to display several categories between two axis ticks. The Display data points between ticks check determines the position of the data point relative to the axis ticks. By default the data point is positioned between two axis ticks but if you uncheck this check the data points will be positioned exactly on the tick marks.

  2. Value Scale Mode

    From this tab you can control the properties of the axis when it is operating in value scale mode (the default scaling mode for the four vertical axes). The Range group controls the value range covered by the axis ruler. By default the minimal and maximal values of the ruler are automatically calculated from the presentation groups displayed on this axis. You can override this behavior by specifying custom min and max values. The Step of the axis is also automatically determined by default. With the help of the Max Tick Count edit you can control the density of the automatic axis step. Although the actual number of ticks generated by the axis step algorithm may not be equal to the value specified in this edit control it is guaranteed that it will never exceed it. You can also manually specify the step of the step of the axis ruler when you uncheck the Automatic Step check. The Round To Tick check instructs the axis to exactly begin and end on tick values. The Format String combo defines the format string used to display the axis ruler values (see the Formatting Commands topic for more information).

  3. Logarithmic Scale Mode

    This scale mode is similar to the Value scale mode, but the ruler values increase in logarithmic manner. You can override the default min and max values of the axis with the help of the Automatic Min, Automatic Max, Min and Max controls. The step of the logarithm scale mode can operate in several two modes. The first one is Exponent - in this scale mode the user is only able to control the densisty of the ruler axis ticks with the help of the Max Tick Count edit. When the step is configured to operate in Fixed mode (from the Step Mode combo) the user can also manually specify the step of the axis ruler. From the Base edit you can specify the desired base of the logarithm used to produce the axis scale. The Round To Tick and Format String controls perform the same functions as in Value Scale mode.

  4. DateTime Scale Mode

    Internally the DateTime Scale mode is the same as the Value Scale mode. Nevertheless we have decided to create a separate scale mode page for the date time, because we wanted to provide the user with a better visual interface to edit the manual date time min, max and step values. See the Axes topic for more information.

Indepedant from the axis scale mode you can invert the scaling order of the axis ruler with the help of the Inverted check located at the left bottom corner of the Scale Property Page.


Axis Position Property Page

figure 1

This property page controls the position of the axis. The position of the axis can be controlled in two aspects - dynamic and static.

The static axis positioning includes the start and end of the axis ruler as well as the offset of the axis from the origin position determined by the component. The Start % and End % edits specify the begin and end of the axis ruler in percents of the original axis length. For the vertical axes the initial length is the chart height, for the categories axis the initial length is the chart width and for the series axis this is the chart depth. You can change the start and end percents of the axis ruler if you want to split the chart (see the Axes topic for more information). The Offset edit specifies the offset of the axis from the original position determined by the component.

On the other hand dynamic axis position can be used to position the axis at some value represented by the other axes. The axes on which you can position a certain axis depend on the axis itself. The four vertical axes can be positioned at values displayed by the categories and series axes. The categories axis can be positioned at values displayed by the four vertical axes and the series axis. The series axis can be can be positioned at values displayed by the four vertical axes and the categories axis. By default dynamic axis positioning is not used.

You turn on dynamic axis positioning for a particular axis by turning On the Mode for this axis. As you can see on figure 1 the left axis X position is synchronized with value 0 of the categories axis (the Mode Combo is set to On), while the Y position of the left axis is not synchronized with any value of the series axis (the Value is ignored if the Mode Combo is set to Off).


Axis Stripes Property Page

This property page supplies the user with a visual interface for editing the strip lines displayed by the axis. With the help of the Add, Delete and Properties buttons you can add, delete and edit the axis stripes. The Stripes Grid displays the currently created strip lines. See the Axis Stripes topic for more information.


Axis Const Lines Property Page

This property page supplies the user with a visual interface for editing the const lines displayed by the axis. With the help of the Add, Delete and Properties buttons you can add, delete and edit the axis const lines. The Const Lines Grid displays the currently created const lines. See the Axis Const Lines topic for more information.


Presentation Groups Property Pages

Each presentation group has a visual interface which can be shown from the Presentation Groups Property Page or programmatically with the help of the ShowDialog method of the NPresentGroupCommon object. Some of the property pages are common for all presentation groups. In general they are used to visually expose the functionality of the NPresentGroupCommon object attached to every presentation group. The common property pages are:

  1. General

  2. Texts

  3. Uniform Appearance

  4. Legend

Apart from the common property pages each presentation group has group specific properties, which are visually exposed from one or more property pages. The following table summarizes the property pages of each presentation group

Presentation Group

Property Pages

Bar

  1. Options

  2. Secondary Vertical Axes

  3. Level Origin Values

Stack Bar

  1. Options

Area

  1. Options

Stack Area

  1. Options

Line

  1. Options

Stack Line

  1. Options

Surface

  1. Options

  2. Palette

Point

  1. Options

Bubble

  1. Options

Stock

  1. Options

Float Bar

  1. Options

Pie

  1. Options

Radar

  1. Options

Polar

  1. Options

Shmoo

  1. Options


Present Group General Property Page

The Name edit specifies the name of the presentation group. The legend of the component can be configured to show this string.

The Range controls group is used to determine the range of values from the data storage on which the presentation group operates. When you check the InfininteX, InfininteY and InfiniteZ checks the component ignores the respective end coordinate and replaces it with the current size of the appropriate dimension. In this way if you modify the size of the data storage you will not have to manually set the ending coordinate each time. See the Data Storage topic for more information about ranges.

From the Display on Vertical Axes check listbox you can select the axes on which you want to display this presentation group. By default all presentation groups are initially scaled on the left chart axis.

The Inflate Margins check is used to inflate the margins of the presentation group in order to fit it in the chart area of the chart. You may consider checking it if you intend to display presentation groups that you expect to go out of the chart area (bubble charts for example).


Present Group Texts Property Page

This property page controls the texts displayed on each data point.

The Has Texts check controls the visibility of the data point texts.

A line is connecting each data point and the data point text. The user can control the length of the line and the line properties with the help of the Length and Properties controls.

The Format String combo specifies the formatting of the text displayed by the data point text. See the Formatting Commands topic for more information about the supported formatting commands.

The Properties button invokes a dialog trough which you can control various properties of the data point texts including: font, font size, font style, frame, frame background and others.


Present Group Appearance Property Page

This property page controls the uniform appearance of the presentation group. See the Uniform Appearances topic for more information about the usage of Uniform Appearances.

If the Enable Uniform Appearances is checked then the uniform appearance of the presentation group are enabled and the data points are displayed with the fill effect, material and border properties of the NAppearance objects displayed in the grid.

The Add and Delete buttons add and delete appearances from the grid.

The Fill Effect, Material and Border buttons show the fill effect, material and border of the selected appearance.

The Label of the appearance can be directly edited in the grid. The legend of the component can be configured to show the uniform appearances of the presentation group.


Present Group Legend Property Page

This property page controls the appearance of the presentation group in the chart legend.

The Show In Legend check determines whether the presentation group is at all displayed in the chart legend.

The Legend Mode Combo specifies what information about this presentation group will be displayed in the legend of the chart.

The Format String Combo specifies the formatting of the legend texts. See the Formatting Commands topic for more information about the supported formatting commands.

See the Configuring the Legend topic for more information about the chart legend.


Bar Options Property Page

From this property page you can control basic bar chart options.

The Width Percent and Depth Percent control the size of the bars in percents of the chart floor grid cell.

The Gap Percent edit controls the distance between two adjacent bars in percents of the chart floor grid cell, when the bar chart shows more than one data level (multi collumn chart).

The Style combo specifies the current shape of the bars. When the Style combo is set to Smooth Edge Bar the user can control the size of the bars in percents of the bigger bar dimension (width or depth) with the help of the Edge Percent edit.


Bar Secondary Vertical Axes Property Page

This property page is used to specify the secondary scale axes for particular levels in the data storage. This feature is very useful if you intend to show multi column charts where the different columns have different measures (a typical example is the dollar - unit sales chart).

By default all bar columns are scaled on the primary presentation group axes (specified in the General Property Page). You can override this behavior by specifying a secondary axis for a particular level from the data storage (each column represents data from a different level).

Although the presentation group can have multiple primary axes, the secondary axis for a particular level can be only one. The component will not allow you to specify two secondary axes for one level.

See the Creating Bar Charts topic for more information.


Bar Level Origin Values Property Page

By default all bars are displayed with origin 0 (all bars begin from this value). You can change the origin value of a particular bar by assigning an origin value to the data level it represents.

For example the image on the screenshot demonstrates how you can set the origin values of the first and third bars to 10 and 20 respectively.

If you want the bars to begin from the minimal value possible for the corresponding data level they represent you can turn the Level Origin Mode to Off.

See the Creating Bar Charts topic for more information.


Stack Bar Options Property Page

This property page controls basic Stack Bar options.

The Width Percent and Depth Percent control the size of the bars in percents of the chart floor grid cell.

The Style combo specifies the current shape of the bars. When the Style combo is set to Smooth Edge Bar the user can control the size of the bars in percents of the bigger bar dimension (width or depth) with the help of the Edge Percent edit.

The Stack Style combo is used to specify the current stacking style. When the stack style is set to Stacked the Stack Bar displays a normal stack bar chart. When the stack style is set to Stacked Percent the stack bar displays a 100% stack chart (each bar represents the contribution to the overall stack bar sum).


Area Options Property Page

This property page controls basic Area Chart options.

The Depth Percent edit controls the depth of the area in percents of the chart floor grid cell depth.

By default the areas use origin value 0 (all areas begin from the 0). You can set a manual origin value or use no origin at all when you uncheck the Use Origin check. In this case the areas will begin from the minimal value of the presentation group.

The Drop Lines check controls the visibility of the area segment separation lines.

See the Creating Area Charts topic for more information.


Stack Area Options Property Page

This property page controls basic Stack Area Chart options.

The Depth Percent edit controls the depth of the area in percents of the chart floor grid cell depth.

The Stack Style combo is used to specify the current stacking style. When the stack style is set to Stacked the Stack Area displays a normal stack area chart. When the stack style is set to Stacked Percent the stack area displays a 100% stack chart (each area represents the contribution to the overall stack area sum).

The Drop Lines check controls the visibility of the area segment separation lines.

See the Creating Stack Area Charts topic for more information.


Line Options Property Page

From this property page you can control basic line chart options.

When you check the Use X Value check the X position of each data point is taken from Value2.

The Line Style combo specifies the shape of the line segments.

The Line Width edit specifies the width of the line segments when they are visualized as Tape or Tube.

The Has Value Points check controls the visibility of the data points marks. You can control the shape and the size of the marks with the help of the Point Style and Point Size controls.

See the Creating Line Charts topic for more information.


Stack Line Options Property Page

From this property page you can control basic stack line chart options.

The Line Style combo specifies the shape of the line segments.

The Line Width edit specifies the width of the line segments when they are visualized as Tape or Tube.

The Has Value Points check controls the visibility of the data points marks. You can control the shape and the size of the marks with the help of the Point Style and Point Size controls.

The Stack Style combo is used to specify the current stacking style. When the stack style is set to Stacked the Stack Line displays a normal stack line chart. When the stack style is set to Stacked Percent the stack line displays a 100% stack chart (each line represents the contribution to the overall stack line sum).

See the Creating Stack Line Charts topic for more information.


Surface Options Property Page

This property page controls basic surface options.

When you check the Draw Flat check the surface is displayed in flat mode (contour chart). In this mode you can control the vertical position of the contour with the help of the Position Mode and Position Value controls.

The Frame Style combo controls the style of the surface frame. When set to Mesh the component displays the mesh grid of the surface. The Contour mode displays lines at particular elevations separating the surface elevation zones. The MeshContour mode is a combination of the Mesh and Contour modes. The Dots mode displays dots at the data points.

The Palette Frame check enables the palette filling of the surface frame. If the palette filling of the frame is disabled the frame is displayed with the line properties controlled from the Frame Line button.

The Fill Style combo controls the filling of the palette. When set to Mesh each surface rectangle is individually filled. In this mode the user can apply custom fill effects on individual data points and use the uniform appearance of the surface to fill the surface. When the fill style is set to Zone the surface is displayed with zones highlighting the surface elevations. In this mode the surface is displayed only with palette filing.

The Palette Filling check enables the palette filling of the surface when the Fill Style is set to Mesh.

See the Creating Surface Charts topic for more information.


Surface Palette Property Page

This property page controls the palette applied on the surface filling and frame.

By default the surface is filled with an automatic palette, which is synchronized with the primary scale axis of the surface. You can specify a custom palette if you uncheck the Automatic check.

Turning on the Smooth check will smoothly gradient the palette on the surface.

The Transparency scroll helps you control the transparency of the palette.

See the Creating Surface Charts topic for more information.


Point Options Property Page

This property page controls basic Point Chart options.

The Style Combo specifies the shape of the points.

The Size edit controls the size of the points in OpenGL units.

When the Use X Value is checked Value2 is used as X position of the data points.

When the Use Y Value is checked Value3 is used as Y position of the data points.

See the Creating Points Charts topic for more information.


Bubble Options Property Page

This property page controls basic Bubble chart options.

The Style combo specifies the shape of the bubble.

The Max Bubble Size edit controls the size of the maximal bubble in OpenGL units.

The Min Bubble Size edit controls the size of the minimal bubble in OpenGL units.

See the Creating Bubble Charts topic for more information.


Stock Options Property Page

This property page controls basic options of the Stock present group.

When the Use X Value is check Value6 is used as X position of the data points. This is very useful if you want to display date time stock charts.

The Candle Style Combo controls the shape of the Open - Close candle. When it is set to Stick the user is able to show and hide the open and close values with the help of the Show Open and Show Close check boxes.

The Width edit specifies the width of the candle. The Depth Percent edit specifies the depth of the candle in percents of the chart floor grid cell.

The Has Volume check shows the traded volume bar.

The Volume Style combo specifies the shape of the traded volume bar. When it is set to Smooth Edge Bar the user is able to control the edge percent with the help of the Edge Percent edit.

The Width edit specifies the width of the volume bar. The Depth Percent edit specifies the depth of the volume bar in percents of the chart floor grid cell.

The Axis combo specifies the axis on which the traded volume bars will be scaled. This is necessary, because the traded volume values have a different measure from the Open - Hi - Low - Close values.

The Use Origin check and the Origin edit help you control the origin value of the traded volume

See the Creating Stock Charts topic for more information.


Float Bar Options Property Page

This property page controls basic options of the Floating Bar Chart.

The Width Percent and Depth Percent control the size of the bars in percents of the chart floor grid cell.

The Style combo specifies the current shape of the bars. When the Style combo is set to Smooth Edge Bar the user can control the size of the bars in percents of the bigger bar dimension (width or depth) with the help of the Edge Percent edit.

See the Creating Floating Bar Charts topic for more information.


Pie Options Property Page

This property page controls basic options of the Pie Chart.

The Style combo specifies the shape of the pie segments.

The Edge Percent edit specifies the size of the pie segments shape in percents of the pie depth dimension.

The Depth edit controls the depth of the pie segments.

The Radius edit controls the radius of the pie.

The Begin Angle controls the begging angle of the first pie. By default 0.

See the Creating Pie Charts topic for more information.


Radar Options Property Page

This property page controls basic radar chart options.

The Style Combo controls the style of the radar. When it is set to Lines the component displays connection lines between the radar data points. When it is set to Filled Area the component fills the area surrounded by the line connecting the data points.

The X Radius and Y Radius edits control the X and Y radius of the radar plot area.

The Has Value Points check controls the visibility of the radar data point marks. The Point Style and Point Size are used to specify the data point marks shape and size.

The Category labels are displayed at the end of each radar axis (each radar axis is connected with a respective category). From the Properties... button the user can control the visualization properties of these labels. The distance between the radar axis end and the category label origin point is determined by the Offset edit. If you want to detach the category labels from the radar axes you must simply increase this value.

See the Creating Radar Charts topic for more information.


Polar Options Property Page

This property page controls basic polar chart options.

The Dimensions control group specifies the X and Y radius of the polar plotting area.

The Value Points control group controls the visibility, shape and size of the data point marks.

The polar plotting area has radian lines at specific angles. By default they begin from angle 0 and a radian line is displayed on every 30 degrees (the step of the radian lines). You can control the radian lines begin angle and angle step with the help of the Begin Angle and Angle Step edits respectively.

At the end of each radian line the component displays the angle that the line represents. The user can detach these texts with the help of the Offset edit. From the Format combo the user specifies the formatting string of the label values - currently the values can be formatted as degrees or radians. From the Properties button you can visually edit the label appearance properties.

See the Creating Polar Charts topic for more information.


Shmoo Options Property Page

This property page controls basic Shmoo chart options.

When you check the All Fail Hidden flag the shmoo chart will automatically hide all bits that have failed.

The Highlight First Fail check enables an algorithm which highlights the first fail bits for a particular dimension - the dimension is specified by the First Fail Type Combo.

See the Creating Shmoo Charts topic for more information.


Advanced light settings Dialog

From this dialog you can modify some advanced parameters of the light source. When you check the uniform light distribution the light source distributes light in all directions. Otherwise it is emitting light in the direction specified by the direction vector. When the light source is a directional one (e.g. it is distributing light in a certain direction) you can also specify the spot cutoff angle parameter. The spot cutoff angle is defined as the maximum angle between the direction of the light and the direction from the light to the vertex being lighted. If it is greater than the spot cutoff angle, then the light is completely masked. Otherwise the spot exponent and the attenuation factors control its intensity. For more information see the OpenGL lighting model topic.


Line properties Dialog

This dialog helps you to visually edit the properties of lines and borders. It has the following interface elements:

Enable Lines Check – controls the visibility of the line

Color Combo – shows the color of the line

Style Combo – shows the line style

Width – specifies the width of the line


Material properties Dialog

From this dialog box you modify the material properties of the specified object. The properties include the ambient, diffuse, specular and the emissive colors of the material as well as the shininess. For more information on lighting see the OpenGL lighting model topic.


Predefined projections Dialog

This dialog shows the predefined projections. Click on the desired projection to see a brief description of the projection parameters.


Print preview dialog

From here you can modify the print margins, the current printer and it’s configuration and to change the number of copies being printed.

To change the paper orientation use the Portrait and Landscape radio boxes located on the left side of the Print preview dialog.

There are two ways to control the printer margins. The first one is through the spin controls that are on the right side of the margin edit controls. When you change the margins they automatically reflect the print preview image. You can also use the mouse to change the margin values. Go on the desired margin line and when the cursor changes press the left mouse button and begin dragging the margin line until you reach the desired position. Note that the mouse cursor changes to a hand when the cursor is above the control image. This indicates that you can now change all the margins simultaneously. Use the Reset to set the margins to their original values. The Proportional button synchronizes the margins with the control’s dimensions.

When you change the margin values the preview of the control image may not be up to date. To recreate the preview image press the Refresh preview image button.

The Show margins check hides or shows the margin lines.

The Quality % allows you to modify the printer quality percent parameter.

The Scale 2D fonts indicates whether 2D should be scaled when printing with a better quality. For more information see the NPrintManager topic.


Print progress Dialog

This dialog provides a visual feedback to the user about the print progress. It also displays the printer name that the control is currently printing on. Click on the cancel button if you want to interrupt the printing.


Select fill effect Dialog

This dialog allows you to control the fill effect applied to the background or the text. The dialog has five property pages as follows:

Color

Gradient

Texture

Animated texture

Pattern


Color Property Page

From this property page you can choose the solid color associated with the fill effect. The page shows the Windows basic colors.

Select the Automatic radio button if you want to synchronize the color with the current Windows settings for a window background. The color will automatically change when you change the Windows Appearance settings.

Press the Choose Color&ldots; button to select a color more precisely using the standard windows color selection dialog.

The transparency scroll bar at the bottom of the page allows you to adjust the color transparency. A value of 0 means complete opacity whereas 100 means complete transparency.


Gradient Property Page

From this property page you can choose the gradient associated with the fill effect. Currently there are 6 shading styles. Each of them has 4 variants (except the From Center shading style). Use the radio buttons to choose the desired shading style and the variant selection window to specify a variant.

The transparency scroll bar at the bottom of the page allows you to adjust the gradient transparency. A value of 0 means complete opacity whereas 100 means complete transparency.

If you uncheck the Use default check you can show the advanced fill effect settings dialog and fine tune the way in which the gradient is applied on the corresponding surface.


Texture Property Page

From this property page you can choose the texture associated with the fill effect. The supported file formats are - JPEG, GIF, TARGA, TIFF, BMP, DIB and WMF (Windows Metafile).

If you uncheck the Use default check you can show the advanced fill effect settings dialog and fine tune the way in which the texture is applied on the corresponding surface.

The transparency scroll bar at the bottom of the page allows you to adjust the texture transparency. A value of 0 means complete opacity whereas 100 means complete transparency.


Animated Texture Property Page

From this property page you can choose the animated texture associated with the fill effect. Animations are AVI files.

If you uncheck the Use default check you can show the advanced fill effect settings dialog and fine tune the way in which the animated texture is applied on the corresponding surface.

The transparency scroll bar at the bottom of the page allows you to adjust the animated texture transparency. A value of 0 means complete opacity whereas 100 means complete transparency.

Warning! Use the video speed with caution. Great speed may seriously impact the ability of the system to process messages and other user input. In general try to map smaller AVI files and use animated textures only if you have a fast processor.


Pattern Property Page

From this property page you can choose the pattern associated with the fill effect.

Use the Background and Foreground color combos to adjust these pattern parameters. The Default color Background color is black and the default Foreground color is white.

The transparency scroll bar at the bottom of the page allows you to adjust the pattern transparency. A value of 0 means complete opacity whereas 100 means complete transparency.

If you uncheck the Use default check you can show the advanced fill effect settings dialog and fine tune the way in which the pattern is applied on the corresponding surface.


Import\Export property sheet

The import export property sheet contains two property pages.

The Control state property page helps you to save and load the control state from a file, the clipboard or a URL.

The Control image property page gives you access to the image export functionality of the component.

You can show the Import\Export property sheet by right clicking on the component and then selecting Import\Export from the popup menu.

You can also show the Import\Export property sheet at runtime via the ShowDialog member of the NImportExport object.


Control state Property Page

From this property page you can load and save the control state to and from a file or the clipboard. You can also load the control state from a URL (specified in the URL field).


Control image Property Page

From this property page you can save the control to an image file. You can choose the desired file format from the "Format" combo box. The supported formats are JPEG, PNG, Bitmap, Tiff and Targa. When you check the "Use Window Dimensions" check box the exported image will have the dimensions of the control window. Otherwise it will have the dimensions specified by the Width and Height edit controls.

The Options group is changing depending on the file format, because the different file formats support different options. For example PNG supports transparency but does not have parameters such as Quality like JPEG. The Bits per pixel allows you to adjust the color depth.

In PNG mode you can also save the PNG as a Nevron Image Map (.nim) file. These files are read from client side controls. For more information see the topics under the "Building Internet and Intranet Applications" book.


Labels Property Page

The Labels Property Page exposes the functionality related with labels. From here you can Add, Delete and Edit the labels displayed in the control window. A Label is a text that is displayed always 2D and overlaps all the other images displayed by the control. If two labels overlap the label that is closer to the top of the list overlaps the other one. You can control the label priority with the spin located on the right of the Delete button.

You can edit the text displayed by the labels directly in the Labels Grid.

The Add and Delete buttons add and delete labels from the label collection. The Properties button shows the text properties dialog for the selected label in the Labels Grid, while the Mouse Response button shows the mouse response properties of the selected label.

The Add Header and Add Footer buttons help you easily add labels for the header and footer of the component.

The Horizontal and Vertical combo boxes controls the position of the label origin point inside the control window. The Offset X and Offset Y edit control the offset of the text from the origin point defined by the Horizontal and Vertical combo boxes. By default the origin point is positioned in the center of the control window with no offset (horizontal origin position = Center, vertical origin position = Center, offset X and offset Y equal to 0).


3d View Property Page

Allows you to specify the polar coordinates of the camera, the zooming factor, the projection type, the X and Y offsets of the scene from the center of the control window and the viewer rotation angle. The camera always points towards the beginning of the coordinate system.

The Rotation and Elevation edit controls specify the polar coordinates.

The Zoom edit specifies the zooming factor. Possible values vary from 1 to 1000. The default value is 100. You should increase the zoom factor when you want to display a bigger 3D scene and decrease it respectively when you want to display a smaller image.

The Viewer rotation edit specifies the rotation of the viewer coordinate system. By default this value is 0.

The Offset X and Offset Y edit controls specify the offset of the scene from the center of the control’s window. For example if you want to display the 3D image in the upper left corner you should set a negative value for the X parameter and a positive value for the Y parameter.

The Projection type combo allows you to choose between a perspective and orthogonal projections. In the case of a perspective projection you can also modify the perspective angle. The default projection type is perspective with angle 60 degrees. You can use the orthogonal projection in cases where you do not want perspective – for example when you want to display a 2D Chart, PieChart or Text. To achieve this select Orthogonal as the projection type and 90 as the Elevation degree – this will ensure that you look the scene perpendicular to the XY plane.

When using the orthogonal projection type you can also take advantage of the X depth angle and Y depth angle parameters. In a normal orthogonal projection the Z value does not affect the projected X and Y coordinates. This is why you cannot achieve a 2 and half projection. The solution is by modifying the X and Y depth angle parameters. For example for a Z value of 1 and a value of 60 degrees for the X depth angle the pixel will have an offset of 0.5 along the X direction compared to a pixel that has a zero Z coordinate.

The Perspective Percent edit controls the perspective depth (giving you the feeling that an object is near or far from the camera), when the projection type is switched in perspective mode.

The Load predefined&ldots; button shows the Predefined projections dialog that displays a list of the predefined projections supported by the control.

The Preview shows a preview image of the selected projection. You can also speed up the process of selecting a proper projection by using the mouse and the different mouse modes supported by the control. Note that when you use the Trackball, Offset or Zoom tools the proper parameters on the right side are automatically updated.


Background Property Page

The Fill Effect button allows you to specify a fill effect for the background of the control.

The Frame button helps you specify a frame for the control window.

The Mouse Response button shows the visual interface of the NMouseResponse object assigned to the background, which controls the response of the component to various user mouse actions.

Checking the Windowless control check indicates that the next time the control is activated it will try to run in windowless mode. In this mode the scene is rendered in a bitmap. Please note that some containers may not support windowless control activation. The windowless mode is very useful in conjunction with the Transparent mode. In transparent mode the control does not paint a background - instead it uses the background supplied by the control container.

Please note that when you check the Windowless control and Transparent and the control background will turn to sky blue. This is because the control is still not activated in windowless mode.


Lights Property Page

From this page you can control the lighting applied to the scene. From the Light Model section you can turn on and off the lighting, the local viewpoint lighting and select a global ambient light.

When you check the Enable lighting check the light properties are applied to the scene. Otherwise all the properties regarding the light are discarded (e.g. materials, individual lights and global ambient light).

The Enable local viewpoint lighting check allows you to control the way OpenGL performs the lighting calculations or more specifically the specular angle of the lights. When the local viewpoint lighting check is off specular reflection angles take the view direction to be parallel to and in the direction of the –z axis, regardless of the location of the vertex in eye coordinates. Otherwise specular reflections are computed from the origin of the eye coordinate system. This check is off by default. You should use local viewpoint lighting only when you want to generate a more realistic scene, because it is more computationally expensive.

The Global ambient light color combo allows you to specify the global ambient light applied on the scene.

From the Light properties section you can control the parameters of each individual light. You can control the position, the direction (note that the direction vector is not applied if you use a uniform light distribution light) and the Ambient, Diffuse and Specular light components. The Advanced&ldots; button displays the Advanced light settings Dialog that allows you modify some advanced features of the light. For a complete discussion of lighting see the OpenGL lighting model topic.


Events Property Page

The Events Property Page controls the way in which the user interacts with the control. Currently there are three modes – Disabled, Trackball and Event. You can choose the current mode by selecting the appropriate mode from the mouse mode combo. Here is a description of the modes:

Disabled – in this mode the control does not respond to user interaction in any way.

Trackball – this modes allows the user to adjust the viewpoint on the scene by simply dragging the mouse over the control.

Event – this probably is the most complex mode. When you switch to this mode you’ll also have to configure the controls response to the different messages generated by the mouse. There are three possible responses – Disabled, Automatic and Fire.

When you switch to Disabled mode for some mouse event this indicates that the event is not processed by the control.

Automatic mode indicates that the control should react automatically to the mouse event without sending an event to the programmer. Here is a description of the Automatic reactions of the controls:

- Left button click – does nothing

- Left button double click - shows a context sensitive menu for the current object.

- Right mouse click - shows a context sensitive menu for the current object.

- Right mouse button double click – does nothing

- Mouse move – shows a tooltip for the current object.

The Fire mode indicates that the control should send an event when this message occurs. The typical mouse event consist of the NMouseState object and supplementary information describing the object.


ObjectReference

N3DView

NAppearance

NAppearanceCollection

NAreaPresentGroup

NAspManager

NAxis

NAxisConstLine

NAxisConstLineCollection

NAxisParameter

NAxisParameterCollection

NAxisStripe

NAxisStripeCollection

NBackground

NBarPresentGroup

NBubblePresentGroup

NChart

NChartEvents

NChartWall

NData

NDataSource

NDataSourceCollection

NDataStorage

NDatabase

NEventManager

NFillEffect

NFloatBarPresentGroup

NFrameProperties

NImportExport

NLabel

NLabelCollection

NLegend

NLegendData

NLegendDataCollection

NLightModel

NLightSource

NLightSourceCollection

NLinePresentGroup

NLineProperties

NMaterial

NMouseResponse

NMouseState

NPiePresentGroup

NPointPresentGroup

NPolarPresentGroup

NPresentGroupCollection

NPresentGroupCommon

NPrintManager

NRadarPresentGroup

NRange

NSerieMapping

NSerieMappingCollection

NShmooPresentGroup

NStackAreaPresentGroup

NStackBarPresentGroup

NStackLinePresentGroup

NStockPresentGroup

NSurfacePresentGroup

NText

NTextEx


EnumReference

AxisScaleMode

AxisType

BarStyle

BrowserNavigate

CandleStyle

ChartWallType

DataType

DataValueType

EventResponse

FEGradientStyle

FEGradientVariant

FELayout

FEMapType

FEPatternType

FEType

FirstFailType

FrameStyle

HTMLTag

HorizontalTextAlign

LegendExpand

LegendMarkShape

LegendMode

LegendPlacement

LightScheme

LinePresentStyle

LineStyle

LogarithmStepMode

MouseAction

MouseMode

PTProjectionType

PaperOrientation

PieStyle

PointStyle

PredefinedAxisTextPosition

PredefinedProjection

PresentGroupLegendMode

PresentGroupType

RadarStyle

StackStyle

SurfaceFillStyle

SurfaceFrameStyle

SurfacePositionMode

VerticalTextAlign

WinColor


N3DView

Overview Controls the polar coordinates of the camera, the zooming factor, the projection type, the offsets of the scene, the X and Y depth angles and the viewer rotation angle. The camera always points towards the beginning of the coordinate system. The N3DView object possesses a set of 18 predefined projections that allow you to configure your projection settings with only one function call.

Properties

ProjectionType

Rotation

Elevation

Zoom

PerspectivePercent

ViewerRotationAngle

OffsetX

OffsetY

XDepthAngle

YDepthAngle

Methods

SetPredefinedProjection


NAppearance

Overview This object describes the appearance of a data point. One appearance can be applied on several data points and this helps you present your data points in an uniform matter. The data point on which the appearance is applied is determined by the presentation group showing the data point. Each presentation group has a collection of appearance objects accessible with the help of the UniformAppearances method of the NPresenentGroup common object. See the Uniform Appearance topic for more information

Properties

Label

Methods

FillEffect

Material

Border


NAppearanceCollection

Overview This collection holds the uniform appearances of the presentation group. See the Uniform Appearances topic for more information

Methods

Add

GetAt

GetByLabel

GetCount

RemoveAt


NAreaPresentGroup

Overview The NAreaPresentGroup is used for the creation of area charts. See the Area Chart topic for more information.

Properties

DepthPercent

UseOrigin

Origin

DropLines

Methods

Common


NAspManager

Overview The NAspManager controls the way a Nevron control integrates with ASP. Version 5.0 of all Nevron components supports automatic temporary file handling, browser type detection and interactive client side ActiveX controls. These small controls written in ATL bring client side functionality and enable the programmer to write client side scripting just as if the server control was installed on the client machine. At the same time they are small, easy to download and have a minimal set of dependent dlls. When the control is instantiated in ASP it automatically tries to load a configuration file for the particular Web server. This configuration file is generated by the NServerConfig executable. With the help of this utility you can instruct the control to generate browser dependent responses and to modify the parameters of the image output. The NServerConfig has an easy to use visual interface, which makes the configuration of your server component an easy task. For more information see the ASP integration topics in the User's Guide.

Properties

RootDirectory

TempDirectory

DownloadDirectory

ImageTemplateTag

EnableAutoDelete

AutoDeleteInterval

Methods

SetAutoDeleteDelay

ReloadServerSettings

EmbedInHtml


NAxis

Overview Each of the six chart axes can be controlled by an instance of this class. See the Axes topic for more information

Properties

Visible

Width

InnerTickLength

OuterTickLength

MinorTickLength

MinorTickCount

MajorLineWidth

MinorLineWidth

Title

ScaleMode

NumberOfDataPointsBetweenTicks

DisplayDataPointsBetweenTicks

StaggerTexts

StaggerOffset

AutoMax

AutoMin

AutoStep

Max

Min

Step

MaxTickCount

RoundToTick

Inverted

FormatString

LogarithmStepMode

LogarithmBase

PositionOffset

PositionStartPercent

PositionEndPercent

Methods

FillEffect

Material

Border

MajorLineFillEffect

MajorLineMaterial

MajorLineBorder

GetMajorShowAtWall

SetMajorShowAtWall

MinorLineFillEffect

MinorLineMaterial

MinorLineBorder

GetMinorShowAtWall

SetMinorShowAtWall

InnerTickLine

OuterTickLine

MinorTickLine

TextEx

TitleTextEx

SetPredefinedTextPosition

PositionAxis

Stripes

ConstLines

SetStepDateTime

GetStepDateTime

SetMinDateTime

GetMinDateTime

SetMaxDateTime

GetMaxDateTime

MouseResponse


NAxisConstLine

Overview Each constant line displayed by the six chart axes is represented with an instance of the object. It has properties controlling the line appearance and the value associated with the constant line

Properties

Value

Methods

LineProps


NAxisConstLineCollection

Overview Each axis has an instance of this object, which holds the constant lines displayed on the axis. It is accessible with the help of the ConstLines method of the NAxis object. See the Const Lines topic for more information

Methods

Add

GetAt

GetCount

RemoveAt

RemoveAll


NAxisParameter

Overview Each category, serie and level of the data storage is represented by an instance of this object in the respective collection (acessible with the Categories, Series and Levels methods of the NChart object). The labels that each NAxisParameter has, can be displayed on the respective axis when it is switched in asmDimension. By default the Categories and Series axes are operating in this mode. See Categories, Series and Levels topic for more information.

Properties

Label

ShowLabel


NAxisParameterCollection

Overview There is one NAxisParameterCollection for the categories, series and levels of the 3DChart component. See the Categories, Series and Levels topic for more information.

Methods

Add

GetAt

GetCount

RemoveAt

RemoveAll

SetSize


NAxisStripe

Overview Each axis stripe displayed by the six chart axes is represented by an instance of this object. The object itself has properties controlling the stripe begin and end values as well as it's appearance. See the Axis Stripes topic for more information

Properties

From

To

Methods

FillEffect

Material

GetShowAtWall

SetShowAtWall

ShowDialog


NAxisStripeCollection

Overview Each axis has an instance of this object, which holds the stripes of the axis. It is accessible with the help of the Stripes method of the NAxis object

Methods

Add

GetAt

GetCount

RemoveAt

RemoveAll


NBackground

Overview This object gives you access to the fill effect, frame and mouse response properties applied on the background of the control. It also controls the control windowless activation. All Nevron components support windowless activation. In this mode the control does not create a window, but instead renders itself into a bitmap. This bitmap is afterwards drawn in the control window using the Windows GDI functions.

Properties

Windowless

Transparent

Methods

FillEffect

Frame

MouseResponse


NBarPresentGroup

Overview The NBarPresentationGroup is used for the creation of single and multi column bar charts. See the Creating Bar Charts topic for more information.

Properties

WidthPercent

DepthPercent

GapPercent

BarStyle

BarEdgePercent

Methods

Common

MapLevelOnAxis

UnmapLevel

GetLevelAxis

SetLevelOrigin

GetLevelOrigin


NBubblePresentGroup

Overview The NBubblePresentGroup object is used for the creation of bubble charts. See the Bubble Chart topic for more information.

Properties

BubbleStyle

MaxSize

MinSize

Methods

Common


NChart

Overview The NChart object is the primary object of the 3DChart component. It is the object through which you can gain access to any other object in the 3DChart component.

Properties

ChartWidth

ChartDepth

ChartHeight

Redraw

Methods

DataAt

Walls

Axes

PresentGroups

Categories

Series

Levels

Database

DataStorage

ShowDialog

Get3DView

Background

LightSourceCollection

LightModel

ImportExport

EventManager

LabelCollection

Picture

PrintManager

AspManager

Legend

AboutBox


NChartEvents

Overview This interface describes the various events that the 3DChart component fires in response to mouse actions.

Methods

BackgroundMouseEvent

LabelMouseEvent

DataMouseEvent

ChartWallMouseEvent

LegendDataMouseEvent

LegendMouseEvent

AxisMouseEvent


NChartWall

Overview Each of the five chart walls can be controlled by an instance of this class. See the Chart Walls topic for more information

Properties

Visible

Width

Methods

FillEffect

Material

Border

MouseResponse


NData

Overview There is one NData object for each data point in the data storage. The supported properties from each data point depend on the currently selected data type. Since by default the current data type is set to dtDataType35 in the beginning each data point supports Value1, Value2, Value3 and label properties and the FillEffect, Material, MouseResponse and Border methods. Trying to access a not supported property (like Value5 in this case) raises an exception. See the Data Storage Topic for more information.

Properties

Value1

Value2

Value3

Value4

Value5

Value6

Label

Color

Methods

FillEffect

Material

Border

MouseResponse


NDataSource

Overview Each NDataSource object represents an ADO data source. Each data source is described with its connection string (specifying the database) and SQL string (used for the recordset creation). The SerieMappings method gives you access to the NSerieMappingCollection object holding NSerieMapping objects, which describe the way in which each serie extracts its values from the recordset fields.

Properties

Name

ConnectString

UserName

Password

SQL

CategoryField

ShowCategoryLabels

Methods

TestConnection

TestSQL

SerieMappings


NDataSourceCollection

Overview This collection holding NDataSource objects can be accessed with the help of the DataSources method of the NDatabase object. See the ADO Database Integration topic for more information.

Methods

Add

GetAt

GetCount

RemoveAt

RemoveAll


NDataStorage

Overview This object is accessible with the help of the DataStorage method of the NChart object. It controls some properties of the data storage of the component. See the Data Storage topic for more information.

Properties

DataType

CategoryPageSize

SeriePageSize

LevelPageSize


NDatabase

Overview The NDatabase object is accessible with the help of the Database method of the NChart object. It gives you access to the available data sources and controls the database integration of the component. See the ADO Database Integration topic.

Properties

Enable

CurrentDataSource

DataType

Methods

Requery

DataSources


NEventManager

Overview The NEventManager controls the way a Nevron control responds to mouse messages and movement. The mouse responses of the control can be grouped in three categories. The first one is when the control does not respond to the mouse in any way. The second category is when mouse movement impacts the 3D projection settings of the control. In this category fall the trackball, zoom and offset modes. The third category is when the projection parameters do not change, but the control reacts in some way - via a tooltip, context sensitive menu or an automation event.

Properties

LMouseButtonClick

LMouseButtonDoubleClick

RMouseButtonClick

RMouseButtonDoubleClick

MouseMove

MouseMode


NFillEffect

Overview Probably the major object in the Nevron 3D ActiveX Standard. This object controls the filling applied on the object it is attached to. The NFillEffect object packs together the properties necessary to apply solid color, gradient, texture (image), animation or pattern. You control the type of the filling by modifying the Type property. As well as modifying the filling parameters you can also specify how the filling is to be applied on the 3D object. The MapType, Layout, XScale, YScale and Rotation properties allow you to change the layout (stretched, fitted, tiled etc.) and modify the scaling and rotation of the fill effect. The Transparency property allows you to control the alpha blending of the fill effect. When lighting is turned on the FillEffect object works together with the material properties to determine the final appearance of the object. Refer to the User's Guide for more information on using the NFillEffect.

Properties

Type

EnableWindowsColor

WindowsColor

Color

GradientStyle

GradientVariant

GradientColor1

GradientColor2

ImageFileName

AnimationFileName

AnimationSpeed

PatternType

PatternForegroundColor

PatternBackgroundColor

MapType

Layout

XScale

YScale

Rotation

BlackTextureBackground

Transparency

Methods

ShowDialog

SetSolidColor

SetWindowsColor

SetGradient

SetImage

SetAnimation

SetPattern


NFloatBarPresentGroup

Overview The NFloatBarPresentGroup is used for the creation of floating bar charts. See the Float Bar Charts topic for more information.

Properties

WidthPercent

DepthPercent

BarStyle

BarEdgePercent

Methods

Common


NFrameProperties

Overview The NFrameProperties object controls the frame applied on a particular object. The frame itself consists of four elements - the outer bevel, the bevel distance, the inner bevel and the frame border. With the help of the InnerStyle and OuterStyle properties you can control inner and outer bevel style. The BevelDistance property specifies the distance between the inner and the outer bevel. The HasBorder property allows you to enable or disable the frame border. To gain a basic understanding of the way the NFrame object works go to the Background page of the control and press the "Frame..." button. This will show the frame properties applied on the control background.

Properties

OuterStyle

InnerStyle

BevelWidth

BevelDistance

HasBorder

Color

LineStyle

LineWidth

Methods

ShowDialog


NImportExport

Overview This automation object is used to save and load the component state and to export images in different picture formats. Currently the supported image formats are JPEG (.jpg), PNG (.png), Bitmap (.bmp), Targa (.tga) or TIFF (.tif). You can also instruct the control to import or export from a file, memory, storage or the clipboard. For some examples check out the VB\ImportExport samples.

Methods

Save

Load

SaveJPEGImage

SaveBitmapImage

SaveTargaImage

SaveTiffImage

SavePNGImage

LoadFromURL

ShowDialog


NLabel

Overview This object represents a label. Labels are texts that are always displayed over the 3D scene. They usually contain descriptive information about the image generated by the control. You can add labels to the scene with the help of the NLabelCollection object. The NLabel object also allows you to position the label at an arbitrary position in the control window. You specify the position (or origin point) of the label object in percents of the control window dimensions with the help of the OriginOffsetX and OriginOffsetY properties. The OriginHorzAlign specifies how the OriginOffsetX property is to be treated - as an offset from the control left side, right side or the control center. The OriginVertAlign works in the same way except that it specifies whether to align to the control's top side, bottom side or center.

Properties

Text

OriginHorzAlign

OriginVertAlign

OriginOffsetX

OriginOffsetY

Methods

TextEx

MouseResponse


NLabelCollection

Overview The NLabelCollection object represents the labels added to the 3D scene. Labels are 2D texts that are displayed always on top of all 3D scene elements. The NLabelCollection enables you to add, edit and delete labels and also to add headers and footers. Headers and footers are normal labels that are positioned at a predefined position.

Methods

Add

AddHeader

AddFooter

GetAt

RemoveAll

RemoveAt

GetCount


NLegend

Overview The NLegend object is accessible with the help of the Legend method of the NChart object. It exposes the functionality of the chart legend to the programmer.

Properties

LegendMode

LegendExpand

RowCount

ColCount

InflateCellWidth

InflateCellHeight

TextOffset

MarkSize

HasBase

HasShadow

LegendPlacement

PositionX

PositionY

MarginX

MarginY

ShadowOffsetX

ShadowOffsetY

Methods

BaseFillEffect

BaseFrame

MouseResponse

ShadowFillEffect

ShadowFrame

LegendDataCollection

Text


NLegendData

Overview Each NLegendData represents an individual legend data item. The NLegendData items are contained in a collection accessible with the help of the LegendDataCollection method of the NLegend object. See the Configuring the legend topic for more information.

Properties

Text

MarkShape

Methods

MarkFillEffect

MarkLineProperties

LineProperties

MouseResponse


NLegendDataCollection

Overview This collection holding NLegendData objects can be accessed with the help of the LegendDataCollection method of the NLegend object. See the Configuring the legend topic for more information.

Methods

Add

GetAt

RemoveAll

RemoveAt

GetCount


NLightModel

Overview The NLightModel automation object represents the light model that is global for the whole scene. The NLightModel object allows you to enable lighting and to apply predefined lighting schemes.

Properties

GlobalAmbientLight

EnableLighting

LocalViewpointLighting

Methods

SetLightScheme


NLightSource

Overview The NLightSource object represents a light source in the 3D scene. It can control the light source emission characteristics, its position and direction. You add light sources to the 3D scene with the help of the NLightSourceCollection. The number of light source is limited to eight in the current Microsoft OpenGL implementation. For more information on the way that OpenGL implements lighting see the "OpenGL lighting model" topic in the User's Guide.

Properties

Name

AmbientColor

SpecularColor

DiffuseColor

SpotCutoff

SpotExponent

ConstantAttenuation

LinearAttenuation

QuadraticAttenuation

PositionX

PositionY

PositionZ

DirectionX

DirectionY

DirectionZ


NLightSourceCollection

Overview Represents the collection of lights that are applied to the scene. With the help of this collection you can add, remove and modify the lights applied on the 3D scene. The number of lights in the current Microsoft OpenGL implementation is limited to eight. This is why you cannot add more than eight lights to the NLightSourceCollection.

Methods

Add

GetAt

RemoveAll

RemoveAt

GetCount


NLinePresentGroup

Overview The NLinePresentGroup is used for the creation of line charts. See the Line Chart topic for more information.

Properties

LineStyle

LineWidth

HasValuePoints

PointStyle

PointSize

UseXValue

Methods

Common


NLineProperties

Overview This object controls the line (or border) parameters of the object it is applied to. With its help you can modify the line style, color or width or even completely disable the lines.

Properties

EnableLines

Color

Style

Width

Methods

ShowDialog


NMaterial

Overview The NMaterial object represents the material applied on the object. Materials work together with fill effects when the scene is rendered with lighting to determine the final appearance of the object. When you render the scene without lighting the material properties have no effect on the object's appearance. For more information see the OpenGL lighting model topic in the User's Guide.

Properties

AmbientColor

SpecularColor

DiffuseColor

EmissiveColor

Shininess

Methods

ShowDialog

SetAmbientDiffuseColor

SetAllColors


NMouseResponse

Overview The NMouseResponse objects controls the way in which objects react to different mouse actions.

  • The URL relevant properties - URL, Flags, TargetFrameName, PostData and Headers work together with the client agent controls when the control is integrated in ASP. With their help you can instruct the client control to direct the browser to some URL location when the user clicks on an object that has attached NMouseResponse properties. If the URL field is empty instead of directing the browser to an empty URL the client control will generate an automation event. You can intercept this event and use client side scripting just as if you had the server control installed on the client machine.
  • The other two properteis - UseCustomTooltip and Tooltip allow you to specify a custom tooltip for the particular object. Custom tooltips are very useful when you want to display some descriptive information about a particular object in the scene.

    Properties

    URL

    Flags

    TargetFrameName

    PostData

    Headers

    UseCustomTooltip

    Tooltip

    Methods

    SetTooltip

    ShowDialog


NMouseState

Overview The NMouseState automation object represents the state of the mouse when the user clicked on some object that generates events. All the properties of this object are read-only.

Properties

MouseAction

MouseX

MouseY

HWND

LeftAlt

RightAlt

LeftShift

RightShift

LeftControl

RightControl

Alt

Shift

Control


NPiePresentGroup

Overview The NPiePresentGroup object is used for the creation of pie charts. See the Pie Chart topic for more information.

Properties

PieStyle

Depth

Radius

BeginAngle

PieEdgePercent

Methods

Common


NPointPresentGroup

Overview The NPointPresentGroup object is used for the creation of points charts. See the Point Chart topic for more information.

Properties

PointStyle

Size

UseXValue

UseYValue

Methods

Common


NPolarPresentGroup

Overview The NPolarPresentGroup object is used for the creation of polar charts. See the Polar Chart topic for more information.

Properties

XRadius

YRadius

HasValuePoints

PointStyle

PointSize

BeginAngle

AngleStep

LabelOffset

LabelFormat

Methods

Common

LabelTextEx


NPresentGroupCollection

Overview This object holds the created presentation groups. It is accessible with the help of the PresentGroups method of the NChart object. This collection is not homogenous, which means that it holds object from different types. Because of that it is up to you to explicitly cast to the appropriate type when you want to get access to a particular object in the collection. The GetTypeAt method can also be used to provide you with information about the type of a particular item in the collection.

Methods

Add

GetAt

GetCommonAt

GetTypeAt

GetCount

RemoveAt

RemoveAll

Example:

Dim bar As NBarPresentGroup
Set bar = NChart1.PresentGroups.Add(pgtBar) 'perform explicit cast to the proper type -> operation will succeed
Dim area As NAreaPresentGroup
Set area = NChart1.PresentGroups.GetAt(0) 'try to perform explicit cast to a wrong type -> operation will fail


NPresentGroupCommon

Overview Each presentation group has an instance of this object accessible from the presentation group with the help of the Common method. It groups properties and methods common for all presentation groups.

Properties

Name

HasTexts

FormatString

ArrowLength

EnableUniformAppearance

ShowInLegend

LegendMode

LegendFormatString

InflateMargins

Methods

Range

TextEx

ArrowLine

UniformAppearances

DisplayOnAxis

IsDisplayedOnAxis

CanDraw

ShowDialog


NPrintManager

Overview The NPrintManager object allows you to print your control. With its help you can enumerate the installed local printers as well as the printers in the network that you have connected to. You can also control the margins of the printed image, the paper orientation as well as some aspects of the image scaling.

Properties

LeftMargin

TopMargin

RightMargin

BottomMargin

QualityPercent

Copies

CurrentPrinter

Scale2DFonts

PaperOrientation

Methods

GetPrinterName

GetPrinterCount

BeginPrint

ShowPrintPreview

ResetMargins

SetProportionalMargins


NRadarPresentGroup

Overview The NRadarPresentGroup object is used for the creation of radar charts. See the Radar Chart topic for more information.

Properties

RadarStyle

XRadius

YRadius

HasValuePoints

PointStyle

PointSize

CategoryTextOffset

Methods

Common

CategoryTextEx


NRange

Overview The NRange object describes the ranges of values from the data storage presented by the presentation group. Each presentation group has an instance of this object which can be accessed with the help of the Range method of the NPresentGroupCommon object of the presentation group (accessible with the help of the Common method). Except the InfiniteX, InfiniteY and InfiniteZ the other properties of the NRange object are self explanatory - they just help you define a range of values in a three dimensional array. The InfiniteX, InfiniteY and InfiniteZ flags ignore the respective end coordinated and replace it with the biggest available one. This is very useful, since you will probably dynamically change the categories, series and levels of the data storage and it will be very inconvenient to specify an exact ending coordinate each time.

Properties

BeginX

BeginY

BeginZ

EndX

EndY

EndZ

InfiniteX

InfiniteY

InfiniteZ


NSerieMapping

Overview The NSerieMapping object is used to represent a serie in the database integration model. It also has methods helping you specify the fields from which individual level values will be extracted. See the Ado Database Integration topic for more information

Properties

Label

ShowLabel

LevelCount

Methods

SetLevelValueField

GetLevelValueField


NSerieMappingCollection

Overview This collection holding NSerieMapping objects can be accessed with the help of the SerieMappings method of the NDataSource object. See the ADO Database Integration topic for more information.

Methods

Add

GetAt

GetCount

RemoveAt

RemoveAll


NShmooPresentGroup

Overview The NShmooPresentGroup is used for the creation of shmoo charts. See the Shmoo Chart topic for more information.

Properties

AllFailHidden

HighlightFirstFail

FirstFailType

Methods

Common

ShowXRow

ShowYRow

ShowZRow


NStackAreaPresentGroup

Overview The NStackAreaPresentGroup is used for the creation of stack area charts. See the Stack Area Chart topic for more information.

Properties

DepthPercent

StackStyle

DropLines

Methods

Common


NStackBarPresentGroup

Overview The NStackBarPresentGroup is used for the creation of stack bar charts. See the Stack Bar Charts topic for more information.

Properties

WidthPercent

DepthPercent

BarStyle

StackStyle

BarEdgePercent

Methods

Common


NStackLinePresentGroup

Overview The NStackLinePresentGroup is used for the creation of stack line charts. See the Stack Line Charts topic for more information.

Properties

LineStyle

LineWidth

HasValuePoints

PointStyle

PointSize

StackStyle

Methods

Common


NStockPresentGroup

Overview The NStockPresentGroup object is used for the creation of stock charts. See the Stock Chart topic for more information.

Properties

CandleStyle

CandleWidth

CandleDepthPercent

VolumeStyle

VolumeWidth

VolumeDepthPercent

VolumeEdgePercent

HasVolume

UseXValue

ShowOpen

ShowClose

VolumeAxis

UseVolumeOrigin

VolumeOrigin

Methods

Common


NSurfacePresentGroup

Overview The NSurfacePresentGroup object is used for the creation of surface charts. See the Surface Chart topic for more information.

Properties

DrawFlat

PositionMode

PositionValue

AutomaticPalette

SmoothPalette

FrameStyle

PaletteFrame

FillStyle

PaletteFill

PaletteTransparency

Methods

Common

FrameLine

PaletteAdd

PaletteGetAt

PaletteRemoveAt

PaletteRemoveAll

PaletteGetCount


NText

Overview The NText object represents a 2D text. It is very similar to its bigger counterpart the NTextEx object that can work with both 2D and 3D texts. For more information see the NTextEx object.

Properties

Font

HasBackPlane

BackPlaneBound

OffsetX

OffsetY

Orientation

HorzAlign

VertAlign

Methods

FillEffect

BackPlaneFillEffect

BackPlaneFrame

ShowDialog


NTextEx

Overview Most of the objects in the 3D scene have associated texts. In many cases you need to modify the text's appearance, because you want to achieve better readability, orientation and so on. The texts controlled by the NTextEx object have two modes - 2D and 3D. You can think of 2D texts like you think about the ordinary texts that you see displayed in Windows. You can offset these texts from their original position, align them horizontally and vertically to their original position (also called origin point) and modify their Font. 3D texts on the other hand are texts that are rendered in the 3D space and are a little bit more complex to handle because it is more difficult to position them properly. Both 2D and 3D texts have their advantages and disadvantages. 2D texts are more readable when you use small fonts but you cannot apply gradients or textures on them. They also do not scale when you resize the control. You can apply gradients and textures on 3D texts, but you'll loose some readability when using small fonts with 3D texts. You control the mode of the text by using the Use2DText property.

Properties

Font

OriginRotation

OriginElevation

OriginDistance

RotateAroundXAxis

RotateAroundYAxis

RotateAroundZAxis

Extrusion

HasBackPlane

Use2DText

TextOverlapsImage

OffsetX

OffsetY

Orientation

BackPlaneBound

HorzAlign

VertAlign

Methods

FillEffect

Material

BackPlaneFillEffect

BackPlaneMaterial

BackPlaneFrame

ShowDialog


NAxisStripe


AxisScaleMode

Overview Defines the possible axis scale modes. This custom type is accepted by the ScaleMode property of the NAxis object and determines the scaling mode of the NAxis object.

Values
asmDimension = 0
asmValue = 1
asmLogarithmic = 2
asmDateTime = 3


AxisType

Overview Defines the axes of the 3DChart component. This custom type is accepted by the Axes method of the NChart object which gives you access to the desired chart axis.

Values
atLeftAxis = 0
atBackAxis = 1
atRightAxis = 2
atFrontAxis = 3
atCategoriesAxis = 4
atSeriesAxis = 5


BarStyle

Overview Defines the possible bar styles. This custom type is used in presentation groups, which display bars and is used to specify different styles for the bars

Values
bsBar = 0
bsCylinder = 1
bsCone = 2
bsInvertedCone = 3
bsPyramid = 4
bsInvertedPyramid = 5
bsSmoothEdgeBar = 6


BrowserNavigate

Overview When the control generates "active response" the different object in the 3D scene have associated URL links. When the user clicks on an object the client control will navigate the browser (IE only) to the destination URL. For more information see the NMouseResponse object in the Object Reference.

Values
bnOpenInNewWindow = 1
bnNoHistory = 2
bnNoReadFromCache = 4
bnNoWriteToCache = 8
bnAllowAutosearch = 16
bnBrowserBar = 32


CandleStyle

Overview Defines the style of the candle. This custom type is accepted by the CandleStyle property of the NStockPresentGroup object.

Values
csBar = 0
csStick = 1


ChartWallType

Overview This custom type defines the chart walls. It is passed as a parameter to the Walls method of the NChart object and determines the wall to which you want to gain access.

Values
cwtLeft = 0
cwtBack = 1
cwtRight = 2
cwtFront = 3
cwtFloor = 4


Building Internet and Intranet Applications

Nevron Components support VBScript and this makes possible their embedding in ActiveX containers that use this language. When it comes to building an Internet or Intranet charting solutions there is always one question – where does the component reside – on the client or on the server machine? In this topic we will discuss the usage of Nevron components on both the client and the server side.

  1. On The Client Side – in this case we assume that the component is already installed on the client machine (see Deploying Nevron ActiveX Components for more information). Inserting the control in HTML pages is done with the help of the <OBJECT> tag.

    Example:

    <OBJECT classid=clsid:B5CE1CD3-3AB9-11D3-9502-525400E61EDC height=370 id=Chart1
    style="HEIGHT: 370px; LEFT: 0px; TOP: 0px; WIDTH: 492px" width=492>
    <PARAM NAME="_Version" VALUE="65536">
    <PARAM NAME="_ExtentX" VALUE="13018">
    <PARAM NAME="_ExtentY" VALUE="9790">
    <PARAM NAME="_StockProps" VALUE="0">
    <PARAM NAME="Windowless" VALUE="1">
    <PARAM NAME="Transparent" VALUE="1">
    </OBJECT>

    This piece of code will add the 3DChart component in an HTML page. See the Deploying Nevron ActiveX components to get a list of the components CLSIDs.
    The first four properties are part of the standard MFC control properties. The last ones are of special interest when it comes to HTML pages. When the Windowless property is set to True the component does not have a window – it is instead displayed as a bitmap by the container. When Windowless is set to True you can also set the Transparent property to true , which will discard the currently activated background and replace it with the background of the container. This feature is very useful in HTML pages with applied background images or themes and gives the page more consistent outlook, because the chart seems to be a part of the image.

    The components can be controlled programmatically with scripting and can also load their state from files located on an Internet or Intranet address. This is achieved with the help of the LoadFile And LoadFromURL methods of the NImportExport object. You can use this feature to load the component’s state created on a server machine residing on the Intranet or the Internet.

    Examine the Internet Explorer examples to see some real code about the usage of the components in HTML pages.

  2. On The Server Side – Nevron ActiveX components can be integrated with ASP. The idea of this integration is that the component can dynamically render JPEG images as a response to user requests and place them in the resulting HTML page. Unfortunately you cannot use transparent backgrounds with ASP. The following piece of code creates the 3DChart component on the server side.

    ' create the chart component on the server
    Set NChart1 = Server.CreateObject("3DCHART.NChart.4")

    After you have already created the component you can modify it’s properties and finally render the image in a JPEG file:

    ' render the image as a JPEG with 100% quality
    NChart1.ImportExport.SaveJPEGImageFile “c:\ImageDir\Chart.jpg”, FALSE, 600, 400, True, 100, 0

    Now that we have the JPEG image we can easily place it in the resulting HTML with the following code:

    <img SRC=“c:\ImageDir\Chart.jpg”>

    Examine the ASP example that comes along with this product, to see some real code of ASP integration.

  3. Advanced ASP Integration Issues – there are cases when the server is accessed from more than one user, and the application must create the JPEG image dynamically as a response to the users requests. In this case we cannot use only one JPEG image file, because it might still be in use from another user when we try to render a new one. There are a lot of possible resolutions of this problem, but the common in all of them is that you must implement a naming mechanism that generates unique image file names. A nice idea is to use the Session ID with a time stamp:

    ’generate the image file names as a concatenation of the session id and a time stamp
    JPEGfile = "Chart" & Session.SessionId & Replace(Time,".","") & ".jpg"

    Other useful techniques can use GUIDs or randomly generated values. After the session with the user is over the application must delete the rendered images.
    There are more simple techniques that can be used to resolve the multi user problem. A nice idea is to set a maximum number of simultaneous visitors and iterated through a statically predefined number of image file names. Take a look at the ASP example that comes along with this product to see this technique in action.


Fill effect examples

To change the fill effect you must first modify the Type property to: fetSolidColor, fetGradient, fetImage, fetAnimation or fetPattern and then specify the parameter of the fill effect such as Color or ImageFileName. You can also use the shortcut functions that provide a convenient and efficient way to configure the NFIllEffect object. Using the shortcut functions is recommended because you can configure the fill effect with only one function call, which is generally faster and also ensures that you would not miss some parameters required by the fill effect.

The following pieces of VB code illustrate how to do this.

  1. Solid color

SomeObject.FillEffect.Type = fetSolidColor

SomeObject.FillEffect.Color = vbRed

-or-

SomeObject.FillEffect.SetSolidColor vbRed

  2. Gradient

SomeObject.FillEffect.Type = fetGradient

SomeObject.FillEffect.GradientStyle = gsHorizontal

SomeObject.FillEffect.GradientVariant = gvVariant3

SomeObject.FillEffect.GradientColor1 = vbYellow

SomeObject.FillEffect.GradientColor2 = vbRed

-or-

SomeObject.FillEffect.SetGradient gsHorizontal, gvVariant3, vbYellow, vbRed

  3. Texture (Image)

SomeObject.FillEffect.Type = fetImage

SomeObject.FillEffect.ImageMapType = mtMapType1

SomeObject.FillEffect.ImageFileName = “SwimmingPool.bmp"

-or-

SomeObject.FillEffect.SetImage “SwimmingPool.bmp", mtMapType1

  4. Animation

SomeObject.FillEffect.Type = fetAnimation

SomeObject.FillEffect.AnimationMapType = mtMapType0

SomeObject.FillEffect.AnimationFileName = “animation1.avi"

-or-

SomeObject.FillEffect.SetAnimation “animation1.avi", mtMapType0

  5. Pattern

SomeObject.FillEffect.Type = fetPattern

SomeObject.FillEffect.PatternType = ptDivot

SomeObject.FillEffect.PatternSize = psMedium

SomeObject.FillEffect.PatternForegroundColor = vbBlue

SomeObject.FillEffect.PatternBackgroundColor = vbRed

-or-

SomeObject.FillEffect.SetPattern ptDivot, psMedium, vbBlue, vbRed


IDL

IDL (Interface Definition Language) is a language that has its origins in OSF DCE and was originally used to define functional RPC interfaces in DCE and Microsoft RPC. Currently IDL is the best language for defining all things in COM.


NText

The NText automation object represents a 2D text. It is very much alike the NTextEx interface except that it has a simplified design and functionality. NText has the following properties and methods:

Name: Font

Type: IDispatch* - the font automation object

Description: Gives you access to the text’s font.

Name: HasBackPlane

Type: VARIANT_BOOL

Description: Indicates whether the text has a back plane. The default value for this property is FALSE.

Name: BackPlaneBound

Type: float

Description: Sometimes you may want to draw a rectangle around the text called a back plane. You must modify the BackPlaneBound property if you want to increase the size of the bounding back plane. The default value for this property is 0.20

Name: OffsetX

Type: float

Description: Controls the offset of the text along the X axis in pixels. The initial value for this property is 0.

Name: OffsetY

Type: float

Description: Controls the offset of the text along the Y axis in pixels. The initial value for this property is 0.

Name: HorzAlign

Type: HorizontalTextAlign (haCenter = 0, haLeft = 1, haRight = 2)

Description: the horizontal alignment of the text around the origin point.

Name: VertAlign

Type: VerticalTextAlign (vaCenter = 0, vaTop = 1, vaBottom = 2)

Description: the vertical alignment of the text around the origin point.

Methods:

Name: FillEffect

Parameters: None

Return Value: IDispatch* - the NFillEffect applied to the text.

Description: Gives you access the fill effect applied on the text.

Name: BackPlaneFillEffect

Parameters: None

Return Value: IDispatch* - the NFillEffect applied to the back plane.

Description: Gives you access the fill effect applied to the back plane of the text.

Name: BackPlaneLineProperties

Parameters: None

Return Value: IDispatch* - the NLIneProperties applied to back plane.

Description: Gives you access the line properties applied on the back plane.

Name: ShowDialog

Parameters: None

Return Value: VARIANT_BOOL - when FALSE indicates that no changes were made to the Text object.

Description: Shows a dialog that allows you to visually edit the NText object.


Overview

In the beginning of the Internet revolution web sites were static – meaning that they did not change their contents in response to the user’s demands. However this restriction was overcome with the introduction of different technologies for both the client and the server side. Two of them – the client side scripting and the server side scripting with ASP (Active Server Pages) will be discussed here in more detail, because they closely relate to the Internet integration strategy introduced by Nevron. This strategy is pursuing the following goals:

    • Ease of use – This is our main goal because we want to allow the programmer to concentrate on the logic of the web application rather than on the implementation details.

    • The ability to generate static images in the most common image file formats currently used. Nevron components have support for JPEG, PNG, TIFF, Targa and Bitmap. They are also do not dependent on the server video adapter or video settings, which ensures that your server side applications will produce the images with the required quality independent from the server settings. For example you can produce a true color (16bpp or 24bpp) on a server with a video adapter with only 8 bits per pixel.
    • The ability to generate active response. Today users and programmers are not satisfied if they’re only able to generate a static image on the web server. They want to be able to add client side programming to their HTML pages, which results in better interactivity. For example the server can generate a bar chart of the sales by regions and assign different URL links to bars. When the user clicks on a particular bar the client control will navigate the browser to the specified URL. You can also assign custom ToolTip’s containing descriptive information about the different chart elements.
    • Automatic temporary file handling – In the process of interaction between the client and the server the server controls generate a lot of temporary files such as JPEG, PNG or Bitmap images that can take a lot of disk space. However not all of them must be kept on the server. These files are called expired. Nevron components have a build in feature that enables them to automatically delete the expired temp files.
    • Browser detection – There are a lot of different browsers used by the Internet population these days. They differ in the extent of the support to some image file formats, support for client side scripting and ActiveX controls. Nevron controls can be configured to produce browser sensitive response. For example you can configure your component to send active response if your client is using IE or a PNG image if he is using Netscape or another browser.

All Nevron components can be used as server side components that generate images for Internet and corporate Intranet web sites. The following topics describe the necessary steps to integrate a Nevron component into your server applications.

We assume that you are familiar with:

- Internet Information Server

- Active Server Pages scripting

- HTML basics

- VBScript


 Welcome

Replace this sample help topic with your own help topic, or type Ctrl-T to add a new Help topic.


DataType

Overview Defines the data type of the data storage. See the Data Storage topic for more information.

Values
dtDataType11 = 0
dtDataType12 = 1
dtDataType13 = 2
dtDataType14 = 3
dtDataType15 = 4
dtDataType21 = 5
dtDataType22 = 6
dtDataType23 = 7
dtDataType24 = 8
dtDataType25 = 9
dtDataType31 = 10
dtDataType32 = 11
dtDataType33 = 12
dtDataType34 = 13
dtDataType35 = 14
dtDataType55 = 15
dtDataType65 = 16


DataValueType

Overview Defines the possible data values of each data point.

Values
dvtValue1 = 0
dvtValue2 = 1
dvtValue3 = 2
dvtValue4 = 3
dvtValue5 = 4
dvtValue6 = 5
dvtLabel = 6


EventResponse

Overview Defines how the controls must respond to mouse input. For more information see the NEventManager object description in the Object Reference.

Values
erDisabled = 0
erAutomatic = 1
erFire = 2


FEGradientStyle

Overview Defines the style of the gradient or in other words the way the starting color fades to the ending color. For more information see the NFillEffect object description in the Object Reference.

Values
gsHorizontal = 0
gsVertical = 1
gsDiagonalUp = 2
gsDiagonalDown = 3
gsFromCorner = 4
gsFromCenter = 5


FEGradientVariant

Overview Defines the gradient variant. Every gradient style has four different variations except the gsFromCenter style. For more information see the NFillEffect object description in the Object Reference.

Values
gvVariant1 = 0
gvVariant2 = 1
gvVariant3 = 2
gvVariant4 = 3


FELayout

Overview The layout used when mapping a texture on some object in the 3D space. For more information see the NFillEffect object description in the Object Reference.

Values
lStretched = 0
lFitted = 1
lCentered = 2
lTiled = 3
lStretchedToWidth = 4
lStretchedToHeight = 5
lCropFitted = 6


FEMapType

Overview Defines how textures are mapped on the object surface. Mapping can be relative to the viewer (mtEyeLinear) relative to the object (mtObjectLinear) or environmental (mtSphere). In mtObjectLinear you can also specify a mapping layout. mtSphere is used for special visual effects like reflection. For more information see the NFillEffect object description in the Object Reference.

Values
mtEyeLinear = 0
mtObjectLinear = 1
mtSphere = 2


FEPatternType

Overview Defines the pattern type. For more information see the NFillEffect object description in the Object Reference.

Values
ptPercent5 = 0
ptPercent10 = 1
ptPercent20 = 2
ptPercent25 = 3
ptPercent30 = 4
ptPercent40 = 5
ptPercent50 = 6
ptPercent60 = 7
ptPercent70 = 8
ptPercent75 = 9
ptPercent80 = 10
ptPercent90 = 11
ptLightDownwardDiagonal = 12
ptLightUpwardDiagonal = 13
ptDarkDownwardDiagonal = 14
ptDarkUpwardDiagonal = 15
ptWideDownwardDiagonal = 16
ptWideUpwardDiagonal = 17
ptLightVertical = 18
ptLightHorizontal = 19
ptNarrowVertical = 20
ptNarrowHorizontal = 21
ptDarkVertical = 22
ptDarkHorizontal = 23
ptDashedDownwardDiagonal = 24
ptDashedUpwardDiagonal = 25
ptDashedHorizontal = 26
ptDashedVertical = 27
ptSmallConfetti = 28
ptLargeConfetti = 29
ptZigZag = 30
ptWave = 31
ptDiagonalBrick = 32
ptHorizontalBrick = 33
ptWeave = 34
ptPlaid = 35
ptDivot = 36
ptDottedGrid = 37
ptDottedDiamond = 38
ptShingle = 39
ptTrellis = 40
ptSphere = 41
ptSmallGrid = 42
ptLargeGrid = 43
ptSmallCheckerBoard = 44
ptLargeCheckerBoard = 45
ptOutlinedDiamond = 46
ptSolidDiamond = 47


FEType

Overview Defines the possible fill effects

Values
fetSolidColor = 0
fetGradient = 1
fetImage = 2
fetAnimation = 3
fetPattern = 4


FirstFailType

Overview Defines the first fail algorithm of the NShmooPresentGroup.

Values
fftFirstXFail = 0
fftFirstYFail = 1
fftFirstZFail = 2


FrameStyle

Overview Defines the style of the frame. You may need a frame when you want your control background to be more consistent with the other Windows controls displayed by your form. For more information see the NFrameProperties object in the Object Reference.

Values
fsNone = 0
fsRaised = 1
fsSunken = 2


HorizontalTextAlign

Overview The horizontal text alignment relative to the text origin point. For more information see the NTextEx object description in the Object Reference.

Values
haCenter = 0
haLeft = 1
haRight = 2


HTMLTag

Overview Defines the returned tag type from the EmbedInHtml function when the control is used in ASP scripts. For more information see the NAspManager object in the Object Reference.

Values
tAuto = 0
tJPEG = 1
tPNG = 2
tTIFF = 3
tTARGA = 4
tBitmap = 5
tActiveX = 6


LegendExpand

Overview Defines the legend expand strategies, or in other words in which dimension will the legend grow when new items are added to the legend data item collection

Values
leRowsOnly = 0
leColsOnly = 1
leRowsFixed = 2
leColsFixed = 3


LegendMarkShape

Overview Defines the possible legend mark shapes. This custom type is accepted by the MarkShape property of the NLegendData object and is used to specify the shape of the legend mark. When the legend is operating in lmAutomatic mode the component automatically determines the appropriate legend mark shapes.

Values
lmsNone = 0
lmsRectangle = 1
lmsCircle = 2
lmsDiamond = 3
lmsTriangle = 4
lmsInvertedTriangle = 5


LegendMode

Overview This custom type is accepted by the LegendMode property and controls the mode of the 3DChart integrated legend. When the LegendMode property is set to lmDisabled the legend is not shown. In lmAutomatic mode the legend displays the presentation groups of the component. In lmManual mode the user is able to fill the legend with custom data. See the Configuring the Legend topic for more information.

Values
lmDisabled = 0
lmAutomatic = 1
lmManual = 2


LegendPlacement

Overview This custom type is used by the LegendPlacement property of the NLegend object and controls the position of the legend inside the chart window. In lpManual mode the user is able to position the legend at a custom position. See the Configuring the Legend topic for more information.

Values
lpBottom = 0
lpCorner = 1
lpTop = 2
lpRight = 3
lpLeft = 4
lpManual = 5


LightScheme

Overview Nevron controls posses nine predefined light schemes that enable you to configure your light sources with one function call.

Values
lsStandardWhite = 0
lsStandardRed = 1
lsStandardGreen = 2
lsStandardBlue = 3
lsSpotWhite = 4
lsSpotRed = 5
lsSpotGreen = 6
lsSpotBlue = 7
lsArena = 8


LinePresentStyle

Overview Defines the style of the line displayed by the NLinePresentGroup (used for line charts). This custom type is accepted by the LineStyle property of the NLinePresentGroup object.

Values
lpsTube = 0
lpsTape = 1
lpsLine = 2


LineStyle

Overview Defines the line style (or pattern).

Values
lsSolid = 0
lsDash = 1
lsDot = 2
lsDashDot = 3
lsDashDotDot = 4


LogarithmStepMode

Overview Defines the logarithm step mode, when the axis is operating in logarithmic mode.

Values
lsmExponent = 0
lsmFixed = 1


MouseAction

Overview When the control fires event it always passes as a parameter a NMouseState object defining the mouse and keyboard state at the time when the event was generated. The MouseAction enumeration defines the mouse action that caused the event. For more information see the NMouseState object description in the Object Reference.

Values
maLButtonClick = 0
maLButtonDoubleClick = 1
maRButtonClick = 2
maRButtonDoubleClick = 3
maMouseMove = 4


MouseMode

Overview Defines how the controls must respond to mouse input. For more information see the NEventManager object description in the Object Reference.

Values
mmDisabled = 0
mmTrackBall = 1
mmZoom = 2
mmOffset = 3
mmEvent = 4


Elevation

Name: Elevation

Applies To: N3DView

Type: Single

Remarks: The elevation of the viewpoint in degrees. The default value is 90 degrees which ensures that the viewer looks at the scene from the top of the Z-axis.

Example:

NevronControl.Get3DView.Elevation = 120 'modify the Elevation


OffsetX

Name: OffsetX

Applies To: N3DView

Type: Single

Remarks: Sometimes you may want to offset the 3D scene center from the control's center. An example of such a case is when you have a chart and a legend that completely occupies the right part of the control. To avoid overlapping you may consider moving the chart to the left side of the control's window. The OffsetX parameter enables you to do this. The OffsetX is given in OpenGL units. The default value for this property is 0 resulting in a centered 3D scene.

Example:

NevronControl.Get3DView.OffsetX = -1 'offset the 3D scene from the center to the left


OffsetY

Name: OffsetY

Applies To: N3DView

Type: Single

Remarks: The OffsetY property works in the same way as the OffsetX property except that it moves the 3D scene along the Y axis. For more information see the OffsetX property description.

Example:

NevronControl.Get3DView.OffsetY = -1 'offset the 3D scene from the center to the top


PerspectivePercent

Name: PerspectivePercent

Applies To: N3DView

Type: Single

Remarks: In perspective projection the projection matrix is determined as a linear combination of a perspective matrix and a linear matrix. The PerspectivePercent percent controls this process. If PerspectivePercent is 100% then the projection is perspective. If it is 0 the projection matrix is an orthogonal matrix. Thus smaller PerspectivePercent values mean less perspective. The possible values of this property vary from 0 to 100. The default value is 100.

Example:

NevronControl.Get3DView.PerspectivePercent = 50 'use perspective projection with less perspective


ProjectionType

Name: ProjectionType

Applies To: N3DView

Type: PTProjectionType

Remarks: Specifies the projection type of the camera. Possible values are ptPerspective and ptOrthogonal. ptPerspective is more suitable for 3D scenes. If you want to display a 2D scene you may consider switching to orthogonal projection. In perspective mode you can also control the perspective percent parameter. In ptOrthogonal you can modify XDepthAngle and YDepthAngle parameters that allow you to achieve 2 and a half projection.

Example:

NevronControl.Get3DView.ProjectionType = ptOrthogonal 'switch to orthogonal projection
            NevronControl.Get3DView.XDepthAngle = 46 '2 and a half projection
NevronControl.Get3DView.YDepthAngle = 45


Rotation

Name: Rotation

Applies To: N3DView

Type: Single

Remarks: The rotation of the viewpoint around the Z-axis in degrees. The default value is 270.

Example:

NevronControl.Get3DView.Rotation = 250


SetPredefinedProjection

Name: SetPredefinedProjection

Applies To: N3DView

Parameters:

PredefinedProjection nPredefinedProjection

Return Value: None

Remarks: Nevron controls posses 18 predefined projection schemes. The SetPredefinedProjection loads a predefined projection. Possible values are pp2D, pp2DHorizontalLeft, pp2DHorizontalRight, pp2DTop, pp2DTopHorizontalLeft, pp2DTopHorizontalRight, pp2DHalf ,pp2DHalfHorizontalLeft, pp2DHalfHorizontalRight, pp2DHalfTop, pp2DHalfTopHorizontalLeft, pp2DHalfTopHorizontalRight, pp3D, pp3DHorizontalLeft, pp3DHorizontalRight, pp3DTop,pp3DTopHorizontalLeft and pp3DTopHorizontalRight. To see the predefined projection you go the "3D View" property page of the control and press the "Predefined projections..." button.

Example:

NevronControl.Get3DView.SetPredefinedProjection pp2DHalfTop 'load pp2DHalfTop projection


ViewerRotationAngle

Name: ViewerRotationAngle

Applies To: N3DView

Type: Single

Remarks: The rotation of the viewer coordinate system. The default value is 0.

Example:

NevronControl.Get3DView.ViewerRotationAngle = 90 'rotate the viewer at 90 degrees


XDepthAngle

Name: XDepthAngle

Applies To: N3DView

Type: Single

Remarks: The X depth angle in degrees when using 2D projection. When you use the standard 2D projection the Z coordinate does not influence the projected coordinates, because the depth is not taken into account. To create a 2 and a half projection for example you'll need a projection that uses the Z coordinate to generate a positive or negative offset. This property controls the X offset added to the projected object coordinates.

Example:

NevronControl.Get3DView.ProjectionType = ptOrthogonal 'switch to orthogonal projection
            NevronControl.Get3DView.XDepthAngle = 45 '2 and a half projection
NevronControl.Get3DView.YDepthAngle = 45


YDepthAngle

Name: YDepthAngle

Applies To: N3DView

Type: Single

Remarks: The Y depth angle in degrees when using 2D projection. When you use the standard 2D projection the Z coordinate does not influence the projected coordinates, because the depth is not taken into account. To create a 2 and a half projection for example you'll need a projection that uses the Z coordinate to generate a positive or negative offset. This property controls the Y offset added to the projected object coordinates.

Example:

NevronControl.Get3DView.ProjectionType = ptOrthogonal 'switch to orthogonal projection
            NevronControl.Get3DView.XDepthAngle = 45 '2 and a half projection
NevronControl.Get3DView.YDepthAngle = 45


Zoom

Name: Zoom

Applies To: N3DView

Type: Single

Remarks: The zooming factor applied to the 3D scene. The possible values for this property vary from 1 to 1000. The default value is 100%.

Example:

NevronControl.Get3DView.Zoom = 125 'zoom in a little bit


Border

Name: Border

Applies To: NAppearance

Parameters: None

Return Value: Object

Remarks: The border of the appearance. The presentation group can assign this border to a data point if the Uniform Appearances of the presentation group are enabled

Example:

appearance.Border.Width = 2


FillEffect

Name: FillEffect

Applies To: NAppearance

Parameters: None

Return Value: Object

Remarks: The fill effect of the appearance. The presentation group can assign this fill effect to a data point if the Uniform Appearances of the presentation group are enabled

Example:

appearance.FillEffect.SetSolidColor = vbRed


Label

Name: Label

Applies To: NAppearance

Type: String

Remarks: The label of the appearance object. The presentation group can be configured to show this label in the legend

Example:

appearance.Label = "Some Text"


Material

Name: Material

Applies To: NAppearance

Parameters: None

Return Value: Object

Remarks: The material of the appearance. The presentation group can assign this material to a data point if the Uniform Appearances of the presentation group are enabled

Example:

appearance.Material.SetAmbientDiffuseColor = vbRed


Add

Name: Add

Applies To: NAppearanceCollection

Parameters:

String Label

Return Value: Object

Remarks: Adds a new appearance to the collection and returns the new NAppearance object.

Example:

Set appearance = collection.Add("New Item")


GetAt

Name: GetAt

Applies To: NAppearanceCollection

Parameters:

Long nIndex

Return Value: Object

Remarks: Gets the NAppearance object at the specified index.

Example:

Set appearance = collection.GetAt(0)


GetByLabel

Name: GetByLabel

Applies To: NAppearanceCollection

Parameters:

String Label

Return Value: Object

Remarks: Gets the NAppearance object which has the specified label.

Example:

Set appearance = collection.GetByLabel("New Item")


GetCount

Name: GetCount

Applies To: NAppearanceCollection

Parameters: None

Return Value: Long

Remarks: Returns the number of objects in the collection.

Example:

count = collection.GetCount()


RemoveAt

Name: RemoveAt

Applies To: NAppearanceCollection

Parameters:

Long nIndex

Return Value: None

Remarks: Removes the NAppearance object at the specified index.

Example:

collection.RemoveAt 0


Common

Name: Common

Applies To: NAreaPresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = bar.Common()


DepthPercent

Name: DepthPercent

Applies To: NAreaPresentGroup

Type: Long

Remarks: Controls the depth of area in percents of the floor grid cell depth.

Example:

area.DepthPercent = 50 'half the cell depth


DropLines

Name: DropLines

Applies To: NAreaPresentGroup

Type: Boolean

Remarks: Controls the visibility of the area separation lines.

Example:

area.DropLines = True


Origin

Name: Origin

Applies To: NAreaPresentGroup

Type: Double

Remarks: Specifies the area origin value when the UseOrigin is set to True. By default 0.

Example:

area.Origin = 10 ' areas will begin from value 10


UseOrigin

Name: UseOrigin

Applies To: NAreaPresentGroup

Type: Boolean

Remarks: When turned on the area is displayed with the origin specified by the Origin property. When turned off the area is displayed with the maximal possible origin value.

Example:

area.UseOrigin = False


AutoDeleteInterval

Name: AutoDeleteInterval

Applies To: NAspManager

Type: Long

Remarks: Controls how many response generations must be processed before performing the check for expired temporary files on the server.

Example:

Configure the control to check for expired temp files at every second file generation. A temp file is considered expired after 2 minutes from its creation.
NevronControl.AspManager.EnableAutoDelete = TRUE 'enable auto delete
NevronControl.AspManager.AutoDeleteInterval = 2
NevronControl.AspManager.SetAutoDeleteDelay 0, 0, 2, 0 'day, hour, minute, second


DownloadDirectory

Name: DownloadDirectory

Applies To: NAspManager

Type: String

Remarks: When the server control generates an active response (a response that contains an object tag), the client machine needs to know the location of the CAB file containing the client ActiveX control. If this control is not installed on the client machine the client browser will download the CAB file from the server, uncompress it and then install the ActiveX controls in it. The DownloadDirectory specifies the location of this CAB file on the server. It must be a subfolder of the RootDirectory. Note that by default this property is correctly initialized by the NServerConfig.exe and you do not need to modify it.


EmbedInHtml

Name: EmbedInHtml

Applies To: NAspManager

Parameters:

Long Width

Long Height

HTMLTag TagType

String ControlID

Return Value: String

Remarks:

  • The Width and Height parameters define the dimensions of the generated image.
  • The TagType specifies the image and tag generated in the returned HTML tag. The possible values for this property are tAuto = 0, tJPEG = 1, tPNG = 2, tTIFF = 3, tTARGA = 4, tBitmap = 5 or tActiveX.= 6. In the case of tJPEG, tPNG, tTIFF, tTARGA or tBitmap the returned tag is an image tag and the generated image has the JPEG, PNG, TIFF, TARGA or Bitmap file format. In the case of tActiveX the returned html tag is an object tag and the control generates an "active" response. You can only use the tActiveX response if the client is using a version of IE that support ActiveX controls. The tAuto type is a little bit more complex. When you use this type the control will take a decision based on the client browser's user agent string (the user agent string identifies the type of the client browser). You configure this response via the NServerConfig utility.
  • The ControlID string identifies the client control name on the client side if you used the tActiveX type or tAuto decided that it will generate a tActiveX response. You can use this name in a client side script to handle the events generated by the client ActiveX control.

    Example:

    Response.Write(NevronControl.AspManager.EmbedInHtml(400, 400, 1, "NevronControl")) ' generate a JPEG image
    Response.Write(NevronControl.AspManager.EmbedInHtml(400, 400, 2, "NevronControl")) ' generate a PNG image
    Response.Write(NevronControl.AspManager.EmbedInHtml(400, 400, 3, "NevronControl")) ' generate a TIFF image
    Response.Write(NevronControl.AspManager.EmbedInHtml(400, 400, 4, "NevronControl")) ' generate a TARGA image
    Response.Write(NevronControl.AspManager.EmbedInHtml(400, 400, 5, "NevronControl")) ' generate a Bitmap image


EnableAutoDelete

Name: EnableAutoDelete

Applies To: NAspManager

Type: Boolean

Remarks: Enables automatic temporary file deletion. Each time the control generates an image you can instruct it to check for expired temp files on the server. When the control detects an expired temp file it will automatically delete it. This ensures that you'll not waste your disk space for expired temporary files.

Example:

Configure the control to check for expired temp files at every second file generation. A temp file is considered expired after 2 minutes from its creation.
NevronControl.AspManager.EnableAutoDelete = TRUE 'enable auto delete
NevronControl.AspManager.AutoDeleteInterval = 2
NevronControl.AspManager.SetAutoDeleteDelay 0, 0, 2, 0 'day, hour, minute, second


ImageTemplateTag

Name: ImageTemplateTag

Applies To: NAspManager

Type: String

Remarks: When the server control generates an image file on the server it sends an image tag containing the generated image. The default value for this property is "<IMG SRC=<image_file>>". For example if you need to have a border around the generated image tag you can replace the ImageTemplateTag to "<IMG BORDER=4 SRC=<image_file>>". The server control will replace <image_file> with the name of the generated temp file.

Example:

In your ASP script you can modify the ImageTemplateTag:
NevronControl.AspManager.ImageTemplateTag = "<IMG BORDER=4 SRC=<image_file>>"
Response.Write(NevronControl.AspManager.EmbedInHtml(400, 400, 2, "NevronControl")) ' generate a PNG image


ReloadServerSettings

Name: ReloadServerSettings

Applies To: NAspManager

Parameters: None

Return Value: Boolean

Remarks: This function reloads the server settings that reside in the NevronConfig directory. You can modify the server settings with the help of the NServerConfig.exe utility. If you modified the RootDirectory, TempDirectory, DownloadDirectory, ImageTemplateTag, EnableAutoDelete or the AutoDeleteInterval you may wish to restore their default values.

Example:

NevronControl.AspManager.ImageTemplateTag = "<IMG BORDER=4 SRC=<image_file>>"
Response.Write(NevronControl.AspManager.EmbedInHtml(400, 400, 2, "NevronControl")) ' generate a PNG image with border
NevronControl.ReloadServerSettings
Response.Write(NevronControl.AspManager.EmbedInHtml(400, 400, 2, "NevronControl")) ' generate a PNG image without a border


RootDirectory

Name: RootDirectory

Applies To: NAspManager

Type: String

Remarks: Once the control is instantiated in ASP it will automatically load the server settings. The RootDirectory is the directory when the web root has been associated (usually wwwroot). In general you do not need to modify the RootDirectory, because the server control will not be able to generate correct object and image tags.


SetAutoDeleteDelay

Name: SetAutoDeleteDelay

Applies To: NAspManager

Parameters:

Long Day

Long Hour

Long Minute

Long Second

Return Value: None

Remarks: This functions enables you to specify when a temp file is considered obsolete and may be removed from the server. The function takes four parameters that identify a time span (day, hour, minute, second).

Example:

Configure the control to check for expired temp files at every second file generation. A temp file is considered expired after 2 minutes from its creation.
NevronControl.AspManager.EnableAutoDelete = TRUE 'enable auto delete
NevronControl.AspManager.AutoDeleteInterval = 2
NevronControl.AspManager.SetAutoDeleteDelay 0, 0, 2, 0 'day, hour, minute, second


TempDirectory

Name: TempDirectory

Applies To: NAspManager

Type: String

Remarks: This contains the directory on the server used to store the temp files generated by all Nevron components from the particular web server. This property is automatically initialized when the control is instantiated in ASP. There are cases however when you want to modify the temporary directory at runtime. Note that it must be a subfolder of the RootDirectory, because otherwise the client browser will be unable to locate the files stored in it. Note that by default this property is correctly initialized by the NServerConfig.exe and you do not need to modify it.

Example:

NevronControl.AspManager.TempDirectory = "c:\InetPub\wwwroot\MyTemp" 'change the temp file directory


AutoMax

Name: AutoMax

Applies To: NAxis

Type: Boolean

Remarks: When set to True the component automatically determines the max of the scale axis. When set to False the Max property specifies the Max value of the axis

Example:

NChart1.Axes(atLeftAxis).AutoMax = False
NChart1.Axes(atLeftAxis).Max = 200


AutoMin

Name: AutoMin

Applies To: NAxis

Type: Boolean

Remarks: When set to True the component automatically determines the min of the scale axis. When set to False the Min property specifies the Min value of the axis

Example:

NChart1.Axes(atLeftAxis).AutoMin = False
NChart1.Axes(atLeftAxis).Min = -10


AutoStep

Name: AutoStep

Applies To: NAxis

Type: Boolean

Remarks: When set to True the component automatically determines the axis step. Otherwise the step is specified by the Step property.

Example:

NChart1.Axes(atLeftAxis).AutoStep = False
NChart1.Axes(atLeftAxis).Step = 10


Border

Name: Border

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Specifies the border of the axis. If the Width property is 0, then the border properties are used for the display of the axis line.

Example:

NChart1.Axes(atRightAxis).Border.Width = 3


ConstLines

Name: ConstLines

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Gives you access to the collection of NAxisConstLine objects.

Example:

Dim lines As NAxisConstLineCollection
Set lines = NChart1.Axes(atLeftAxis).ConstLines()


DisplayDataPointsBetweenTicks

Name: DisplayDataPointsBetweenTicks

Applies To: NAxis

Type: Boolean

Remarks: Controls the position of the data point relative to the tick positions. If set to True the data point is positioned between two adjacent ticks, otherwise it is positioned exactly on the tick. In the second case you may consider turning on the InflateMargins flag of the presentation groups to fit the chart inside the chart area.

Example:

NChart1.Axes(atCategoriesAxis).DisplayDataPointsBetweenTicks = False


FillEffect

Name: FillEffect

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Specifies the fill effect of the axis. The axis has a fill effect if the Width property is bigger than 0.

Example:

NChart1.Axes(atRightAxis).FillEffect.SetSolidColor = vbRed


FormatString

Name: FormatString

Applies To: NAxis

Type: String

Remarks: Specifies the formatting of the axis texts. Supported is value (the V command) and date time formatting (the D command.). See the Formatting Commands topic for more information.

Example:

NChart1.Axes(atLeftAxis).FormatString = "%V(1,TRUE,1)" 'format with 1 decimal, commas on thousands and no division
NChart1.Axes(atRightAxis).FormatString = "%D(%x)" 'format as date time with locale format


GetMajorShowAtWall

Name: GetMajorShowAtWall

Applies To: NAxis

Parameters:

ChartWallType wall

Return Value: Boolean

Remarks: Determines whether the major gridlines are displayed at the specified chart wall.

Example:

bDisplayed = NChart1.Axes(atRightAxis).GetMajorShowAtWall(cwtLeft) ' check whether the major lines of the right axis are displayed at the left wall


GetMaxDateTime

Name: GetMaxDateTime

Applies To: NAxis

Parameters:

ByRef Long pYear

ByRef Long pMonth

ByRef Long pDay

ByRef Long pHour

ByRef Long pMin

ByRef Long pSec

Return Value: None

Remarks: Gets the current axis max value as date time values. This method can be very useful if the axis is switched in asmDateTime scale mode.

Example:

Dim nYear As Long, nMonth As Long, nDays As Long, nHours As Long, nMinutes As Long, nSeconds As Long
NChart1.Axes(atLeftAxis).GetMaxDateTime nYear, nMonth, nDay, nHour, nMin, nSec


GetMinDateTime

Name: GetMinDateTime

Applies To: NAxis

Parameters:

ByRef Long pYear

ByRef Long pMonth

ByRef Long pDay

ByRef Long pHour

ByRef Long pMin

ByRef Long pSec

Return Value: None

Remarks: Gets the current axis min value as date time values. This method can be very useful if the axis is switched in asmDateTime scale mode.

Example:

Dim nYear As Long, nMonth As Long, nDays As Long, nHours As Long, nMinutes As Long, nSeconds As Long
NChart1.Axes(atLeftAxis).GetMinDateTime nYear, nMonth, nDay, nHour, nMin, nSec


GetMinorShowAtWall

Name: GetMinorShowAtWall

Applies To: NAxis

Parameters:

ChartWallType wall

Return Value: Boolean

Remarks: Determines whether the minor gridlines are displayed at the specified chart wall.

Example:

bDisplayed = NChart1.Axes(atRightAxis).GetMinorShowAtWall(cwtLeft) ' check whether the minor lines of the right axis are displayed at the left wall


GetStepDateTime

Name: GetStepDateTime

Applies To: NAxis

Parameters:

ByRef Long pDays

ByRef Long pHours

ByRef Long pMinutes

ByRef Long pSeconds

Return Value: None

Remarks: Gets the current axis step as a date time interval. This method can be very useful if the axis is switched in asmDateTime scale mode.

Example:

Dim Days As Long, Hours As Long, Minutes As Long, Seconds As Long


InnerTickLength

Name: InnerTickLength

Applies To: NAxis

Type: Single

Remarks: Controls the length of the major inner ticks. Inner ticks are drawn towards the chart center. By default 0.04.

Example:

NChart1.Axes(atLeftAxis).InnterTickLength = 0.15 ' inner ticks are long 0.15 OpenGL units


InnerTickLine

Name: InnerTickLine

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Gives you access to the line properties applied on the inner ticks.

Example:

NChart1.Axes(atLeftAxis).InnerTickLine.Width = 2 ' inner ticks of the left axis are 2 pixels in width


Inverted

Name: Inverted

Applies To: NAxis

Type: Boolean

Remarks: When set to True the axis is scaled in inverted order.

Example:

NChart1.Axes(atLeftAxis).Inverted = True ' the scale is inverted


LogarithmBase

Name: LogarithmBase

Applies To: NAxis

Type: Single

Remarks: Specifies the logarithm base if ScaleMode is set to asmLogarithmic. See the Axes topic for more information.

Example:

NChart1.Axes(atLeftAxis).LogarithmStepMode = lsmFixed


LogarithmStepMode

Name: LogarithmStepMode

Applies To: NAxis

Type: LogarithmStepMode

Remarks: When lsmExponent the axis formats powers of the logarithm base. When lsmFixed the axis ticks increase with equal values. See the Axes topic for more information.

Example:

NChart1.Axes(atLeftAxis).LogarithmStepMode = lsmFixed


MajorLineBorder

Name: MajorLineBorder

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Specifies the border of the major lines. If the Width property is 0, then the border properties are used for the display of the major gridlines.

Example:

NChart1.Axes(atRightAxis).MajorLineBorder.Color = vbYellow


MajorLineFillEffect

Name: MajorLineFillEffect

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Specifies the fill effect of the major grid lines. The major gridlines have fill effect properties if the MajorLineWidth is bigger than 0.

Example:

NChart1.Axes(atRightAxis).MajorLineFillEffect.SetSolidColor = vbRed


MajorLineMaterial

Name: MajorLineMaterial

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Specifies the material of the major grid lines. The major gridlines have material properties if the MajorLineWidth is bigger than 0.

Example:

NChart1.Axes(atRightAxis).MajorLineMaterial.SetAmbientDiffuseColor = vbRed


MajorLineWidth

Name: MajorLineWidth

Applies To: NAxis

Type: Single

Remarks: Controls the width of major grid lines. When bigger than 0 - fill effect and material properties are applied on the lines. When set to 0 the lines are drawn using the border gridline properties

Example:

NChart1.Axes(atLeftAxis).MajorLineWidth = 0.10


Material

Name: Material

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Specifies the material of the axis. The axis has a material if the Width property is bigger than 0.

Example:

NChart1.Axes(atRightAxis).Material.SetAmbientDiffuseColor = vbRed


Max

Name: Max

Applies To: NAxis

Type: Double

Remarks: Specifies the maximal value of the axis when AutoMax property is set to True.

Example:

NChart1.Axes(atLeftAxis).AutoMax = False
NChart1.Axes(atLeftAxis).Max = 200


MaxTickCount

Name: MaxTickCount

Applies To: NAxis

Type: Long

Remarks: Specifies the maximal number of ticks when AutoStep is set to True.

Example:

NChart1.Axes(atLeftAxis).AutoStep = True
NChart1.Axes(atLeftAxis).MaxTickCount = 10 ' no more than 10 ticks on the axis scale


Min

Name: Min

Applies To: NAxis

Type: Double

Remarks: Specifies the minimal value of the axis when AutoMin property is set to True.

Example:

NChart1.Axes(atLeftAxis).AutoMin = False
NChart1.Axes(atLeftAxis).Min = -10


MinorLineBorder

Name: MinorLineBorder

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Specifies the border of the minor lines. If the Width property is 0, then the border properties are used for the display of the minor gridlines.

Example:

NChart1.Axes(atRightAxis).MinorLineBorder.Color = vbYellow


MinorLineFillEffect

Name: MinorLineFillEffect

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Specifies the fill effect of the minor grid lines. The minor gridlines have fill effect properties if the MajorLineWidth is bigger than 0.

Example:

NChart1.Axes(atRightAxis).MinorLineFillEffect.SetSolidColor = vbRed


MinorLineMaterial

Name: MinorLineMaterial

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Specifies the material of the minor grid lines. The minor gridlines have material properties if the MinorLineWidth is bigger than 0.

Example:

NChart1.Axes(atRightAxis).MinorLineMaterial.SetAmbientDiffuseColor = vbRed


MinorLineWidth

Name: MinorLineWidth

Applies To: NAxis

Type: Single

Remarks: Controls the width of minor grid lines. When bigger than 0 - fill effect and material properties are applied on the lines. When set to 0 the lines are drawn using the border gridline properties

Example:

NChart1.Axes(atLeftAxis).MinorLineWidth = 0.10


MinorTickCount

Name: MinorTickCount

Applies To: NAxis

Type: Long

Remarks: Controls the count of the minor ticks displayed between two major ones. By default 0 which means that initially the axes do not show the minor ticks.

Example:

NChart1.Axes(atLeftAxis).MinorTickCount = 10 ' 10 minor ticks between major ones


MinorTickLength

Name: MinorTickLength

Applies To: NAxis

Type: Single

Remarks: Controls the length of the minor ticks. Minor ticks are displayed between major ones are are drawn at the outer side of the chart area. By default 0.02.

Example:

NChart1.Axes(atLeftAxis).MinorTickLength = 0.10 ' minor ticks are 0.10 OpenGL units


MinorTickLine

Name: MinorTickLine

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Gives you access to the line properties applied on the minor ticks.

Example:

NChart1.Axes(atLeftAxis).MinorTickLine.Color = vbRed ' minor ticks of the left axis are red


MouseResponse

Name: MouseResponse

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Gives you access to the NMouseResponse object of the axis. The NMouseResponse properties are used when the component is used on an ASP server and define the client side response to different user actions. You can also use the NMouseResponse object to assign custom tooltips.

Example:

NChart1.Axes(atLeftAxis).MouseResponse.URL = "www.nevron.com" ' the client browser will jump to www.nevron.com when the client clicks on the left axis


NumberOfDataPointsBetweenTicks

Name: NumberOfDataPointsBetweenTicks

Applies To: NAxis

Type: Long

Remarks: Controls the number of data points that lay between two data ticks. By default 1.

Example:

NChart1.Axes(atCategoriesAxis).NumberOfDataPointsBetweenTicks = 2 ' now the chart shows 2 categories between two ticks


OuterTickLength

Name: OuterTickLength

Applies To: NAxis

Type: Single

Remarks: Controls the length of the major outer ticks. Outer ticks are drawn at the outer side of the chart area. By default 0.04.

Example:

NChart1.Axes(atLeftAxis).OuterTickLength = 0.15 ' outer ticks are long 0.15 OpenGL units


OuterTickLine

Name: OuterTickLine

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Gives you access to the line properties applied on the outer ticks.

Example:

NChart1.Axes(atLeftAxis).OuterTickLine.Color = vbBlue ' outer ticks of the left axis are blue


PositionAxis

Name: PositionAxis

Applies To: NAxis

Parameters:

AxisType SynchronizeWithAxis

Double dValue

Boolean bSynchronize

Return Value: None

Remarks: This method helps you specify a dynamic axis position based on the position of some value at another axis. By default none of the axes is synchronized with any of the other axes. The vertical axes accept only the category and serie axes as parameters. The category axis accepts the four vertical axes and the serie axis. The serie axis accepts the four vertical axes and the category axis. Setting bSynchronize to False turns of the value synchronization for the specified axis (the dValue parameter is then ignored)

Example:

NChart1.Axes(atLeftAxis).PositionAxis atCategoriesAxis, 0, True 'left axis is at 0 position of the category axis
NChart1.Axes(atLeftAxis).PositionAxis atSeriesAxis, 0, False 'left axis is not synchronized with the series axis


PositionEndPercent

Name: PositionEndPercent

Applies To: NAxis

Type: Long

Remarks: Specifies the end of the axis ruler in percents of the axis length. By default 100. Can be very useful if you want to split the chart.

Example:

NChart1.Axes(atRightAxis).PositionEndPercent = 50 'rigth ruler ends at half the chart height


PositionOffset

Name: PositionOffset

Applies To: NAxis

Type: Single

Remarks: Specifies the offset of the axis from the original position determined by the component.

Example:

NChart1.Axes(atLeftAxis).PositionOffset = 0.10 'offset left axis to 0.10 OpenGL units to the right


PositionStartPercent

Name: PositionStartPercent

Applies To: NAxis

Type: Long

Remarks: Specifies the start of the axis ruler in percents of the axis length. By default 0. Can be very useful if you want to split the chart.

Example:

NChart1.Axes(atLeftAxis).PositionStartPercent = 50 'left ruler begins from the chart height


RoundToTick

Name: RoundToTick

Applies To: NAxis

Type: Boolean

Remarks: Instruct the axis to end exactly on a tick value. This may increase the maximal value of the axis.

Example:

NChart1.Axes(atLeftAxis).RoundToTick = True ' scale ends exactly on a tick


ScaleMode

Name: ScaleMode

Applies To: NAxis

Type: AxisScaleMode

Remarks: Controls the scale mode of the axis. Currently the axes can operate in 4 axis modes. See the Axes topic for more information. The four vertical axes are initially operating in asmValue, while the Categories and Series axes are operating in asmDimension mode.

Example:

NChart1.Axes(atLeftAxis).ScaleMode = asmDimension ' the left axis is now showing the data levels of the component


SetMajorShowAtWall

Name: SetMajorShowAtWall

Applies To: NAxis

Parameters:

ChartWallType wall

Boolean bShow

Return Value: None

Remarks: Shows the major lines at the specified wall.

Example:

NChart1.Axes(atRightAxis).SetMajorShowAtWall(cwtLeft, True) ' show the major lines of the right axis at the left wall


SetMaxDateTime

Name: SetMaxDateTime

Applies To: NAxis

Parameters:

Long nYear

Long nMonth

Long nDay

Long nHour

Long nMin

Long nSec

Return Value: None

Remarks: Set the max value of the axis with the numeric equivalent of the specified date time. This method can be very useful if the axis is switched in asmDateTime scale mode.

Example:

NChart1.Axes(atLeftAxis).SetMaxDateTime 1900, 3, 4, 13, 0, 0


SetMinDateTime

Name: SetMinDateTime

Applies To: NAxis

Parameters:

Long nYear

Long nMonth

Long nDay

Long nHour

Long nMin

Long nSec

Return Value: None

Remarks: Set the min value of the axis with the numeric equivalent of the specified date time. This method can be very useful if the axis is switched in asmDateTime scale mode.

Example:

NChart1.Axes(atLeftAxis).SetMinDateTime 1900, 3, 4, 13, 0, 0


SetMinorShowAtWall

Name: SetMinorShowAtWall

Applies To: NAxis

Parameters:

ChartWallType wall

Boolean bShow

Return Value: None

Remarks: Shows the minor lines at the specified wall.

Example:

NChart1.Axes(atRightAxis).SetMinorShowAtWall(cwtLeft, True) ' show the minor lines of the right axis at the left wall


SetPredefinedTextPosition

Name: SetPredefinedTextPosition

Applies To: NAxis

Parameters:

PredefinedAxisTextPosition Position

Return Value: None

Remarks: This method helps you specify a predefined position of the axis texts. It is often used when you change the projection of the component to create horizontal charts. The patpVertical is the default axis text position. patpHorizontalLeft and patpHorizontalRight are used when you load some of the horizontal chart projection.

Example:

NChart1.Axes(atLeftAxis).SetPredefinedTextPosition patpHorizontalLeft ' prepare the left axis texts for a horizontal left chart


SetStepDateTime

Name: SetStepDateTime

Applies To: NAxis

Parameters:

Long nDays

Long nHours

Long nMinutes

Long nSeconds

Return Value: None

Remarks: Set the step of the axis with the numeric equivalent of the specified time interval. This method can be very useful if the axis is switched in asmDateTime scale mode.

Example:

NChart1.Axes(atLeftAxis).SetStepDateTime 2, 3, 5, 4 ' set the step of the left axis is 2 days, 3 hours, 5 minutes and 4 seconds


StaggerOffset

Name: StaggerOffset

Applies To: NAxis

Type: Single

Remarks: Controls the offset of the staggered texts. Increase this value if you want to separate the texts more.

Example:

NChart1.Axes(atCategoriesAxis).StaggerOffset = 0.15 ' 0.15 OpenGL units distance between two adjacent texts


StaggerTexts

Name: StaggerTexts

Applies To: NAxis

Type: Boolean

Remarks: When set to True the axis texts are displayed in a stagger manner. This feature is helpful if you want to eliminate overlapping texts

Example:

NChart1.Axes(atCategoriesAxis).StaggerTexts = True ' now category labels are displayed in a stagger manner


Step

Name: Step

Applies To: NAxis

Type: Double

Remarks: Specifies the axis step when AutoStep property is set to True.

Example:

NChart1.Axes(atLeftAxis).AutoStep = False
NChart1.Axes(atLeftAxis).Step = 10


Stripes

Name: Stripes

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Gives you access to the collection of NAxisStripe objects.

Example:

Dim stripes As NAxisStripeCollection
Set stripes = NChart1.Axes(atLeftAxis).Stripes()


TextEx

Name: TextEx

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Gives you access to the text properties applied on the axis texts.

Example:

NChart1.Axes(atLeftAxis).TextEx.Font.Size = 15 'size of text on the left axis is 15


Title

Name: Title

Applies To: NAxis

Type: String

Remarks: Controls the displayed axis title.

Example:

NChart1.Axes(atLeftAxis).Title = "Dollar Sales"


TitleTextEx

Name: TitleTextEx

Applies To: NAxis

Parameters: None

Return Value: Object

Remarks: Gives you access to the text properties applied on the axis title.

Example:

NChart1.Axes(atLeftAxis).TitleTextEx.Font.Size = 15 'size of left axis title is 15


Visible

Name: Visible

Applies To: NAxis

Type: Boolean

Remarks: This flag controls the visibility of the axis

Example:

NChart1.Axes(atBackAxis).Visible = False ' hide the back axis


Width

Name: Width

Applies To: NAxis

Type: Single

Remarks: Controls the width of the chart axis. If Width bigger than 0 the control assigns fill effect and material properties on the axis. When Width is 0 the axis is displayed as a simple line with the border properties

Example:

NChart1.Axes(atBackAxis).Width = 0


LineProps

Name: LineProps

Applies To: NAxisConstLine

Parameters: None

Return Value: Object

Remarks: Gives you access to the line properties applied on the constant line

Example:

line.LineProps.Width = 2


Value

Name: Value

Applies To: NAxisConstLine

Type: Double

Remarks: The value of the constant line. The line is displayed at this value on the corresponding axis

Example:

line.Value = 10


Add

Name: Add

Applies To: NAxisConstLineCollection

Parameters: None

Return Value: Object

Remarks: Adds a const line to the collection and returns the new NConstLine object

Example:

Set line = NChart1.Axes(atLeftAxis).ConstLines.Add()


GetAt

Name: GetAt

Applies To: NAxisConstLineCollection

Parameters:

Long nIndex

Return Value: Object

Remarks: Gets the NConstLine object at the specified index

Example:

Set line = NChart1.Axes(atLeftAxis).ConstLines.GetAt(0)


GetCount

Name: GetCount

Applies To: NAxisConstLineCollection

Parameters: None

Return Value: Long

Remarks: Returns the number of objects in the collection

Example:

count = NChart1.Axes(atLeftAxis).ConstLines.GetCount()


RemoveAll

Name: RemoveAll

Applies To: NAxisConstLineCollection

Parameters: None

Return Value: None

Remarks: Removes all const lines in the collection

Example:

NChart1.Axes(atLeftAxis).ConstLines.RemoveAll


RemoveAt

Name: RemoveAt

Applies To: NAxisConstLineCollection

Parameters:

Long nIndex

Return Value: None

Remarks: Removes the NConstLine object at the specified index

Example:

NChart1.Axes(atLeftAxis).ConstLines.RemoveAt 0


Label

Name: Label

Applies To: NAxisParameter

Type: String

Remarks: The label of the object


ShowLabel

Name: ShowLabel

Applies To: NAxisParameter

Type: Boolean

Remarks: Controls the visibility of the label


Add

Name: Add

Applies To: NAxisParameterCollection

Parameters:

String Label

Boolean ShowLabel

Return Value: Object

Remarks: Adds a new NAxisParamter with the specified Label and ShowLabel properties and returns the newly created object.

Example:

Dim param As NAxisParamter
Set param = NChart1.PresentGroups.Categories.Add("Hello", True)


GetAt

Name: GetAt

Applies To: NAxisParameterCollection

Parameters:

Long nIndex

Return Value: Object

Remarks: Get the NAxisParamter at the specified index

Example:

Dim param As NAxisParamter
Set param = NChart1.PresentGroups.Categories.GetAt()


GetCount

Name: GetCount

Applies To: NAxisParameterCollection

Parameters: None

Return Value: Long

Remarks: Retrieves the count of the objects in the collection

Example:

objcount = NChart1.Categories.GetCount()


RemoveAll

Name: RemoveAll

Applies To: NAxisParameterCollection

Parameters: None

Return Value: None

Remarks: Removes all elements in the collection.

Example:

NChart1.Categories.RemoveAll() 'remove all categories


RemoveAt

Name: RemoveAt

Applies To: NAxisParameterCollection

Parameters:

Long nIndex

Return Value: None

Remarks: Removes the element at the specified index.

Example:

NChart1.Categories.RemoveAt(0)


SetSize

Name: SetSize

Applies To: NAxisParameterCollection

Parameters:

Long nSize

Boolean bNumericLabels

Return Value: None

Remarks: Sets the size of the collection to nSize. If bNumericLabels is set to True the component automatically assigns labels to the dimensions of the component. The labels represent the index of the NAxisParameter objects in the collection.

Example:

NChart1.Categories.SetSize 100, True


FillEffect

Name: FillEffect

Applies To: NAxisStripe

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFillEffect object of the axis stripe.

Example:

stripe.FillEffect.SetSolidColor vbBlue


From

Name: From

Applies To: NAxisStripe

Type: Double

Remarks: Specifies the beginning value of the axis stripe

Example:

stripe.From = 10


GetShowAtWall

Name: GetShowAtWall

Applies To: NAxisStripe

Parameters:

ChartWallType wall

Return Value: Boolean

Remarks: Check whether the stripe is shown on the specified chart wall.

Example:

bShownOnLeftWall = stripe.GetShowAtWall(cwtLeft)


Material

Name: Material

Applies To: NAxisStripe

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFillEffect object of the axis stripe.

Example:

stripe.FillEffect.SetSolidColor vbBlue


SetShowAtWall

Name: SetShowAtWall

Applies To: NAxisStripe

Parameters:

ChartWallType wall

Boolean bDisplay

Return Value: None

Remarks: Show the stripe on the specified chart wall.

Example:

stripe.SetShowAtWall cwtBack, True


ShowDialog

Name: ShowDialog

Applies To: NAxisStripe

Parameters: None

Return Value: Boolean

Remarks: Shows the Axis Stripe visual interface. The return value indicates whether the user clicked the OK button

Example:

bOK = stripe.ShowDialog()


To

Name: To

Applies To: NAxisStripe

Type: Double

Remarks: Specifies the ending value of the axis stripe

Example:

stripe.To = 10


Add

Name: Add

Applies To: NAxisStripeCollection

Parameters: None

Return Value: Object

Remarks: Adds a stripe to the collection and returns the new NAxisStripe object

Example:

Set stripe = NChart1.Axes(atLeftAxis).Stripes.Add()


GetAt

Name: GetAt

Applies To: NAxisStripeCollection

Parameters:

Long nIndex

Return Value: Object

Remarks: Gets the NAxisStripe object at the specified index

Example:

Set stripe = NChart1.Axes(atLeftAxis).Stripes.GetAt(0)


GetCount

Name: GetCount

Applies To: NAxisStripeCollection

Parameters: None

Return Value: Long

Remarks: Returns the number of objects in the collection

Example:

count = NChart1.Axes(atLeftAxis).Stripes.GetCount()


RemoveAll

Name: RemoveAll

Applies To: NAxisStripeCollection

Parameters: None

Return Value: None

Remarks: Removes all stripes in the collection

Example:

NChart1.Axes(atLeftAxis).Stripes.RemoveAll


RemoveAt

Name: RemoveAt

Applies To: NAxisStripeCollection

Parameters:

Long nIndex

Return Value: None

Remarks: Removes the NAxisStripe object at the specified index

Example:

NChart1.Axes(atLeftAxis).Stripes.RemoveAt 0


FillEffect

Name: FillEffect

Applies To: NBackground

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFillEffect object applied on the background. Note that the transparency property of the fill effect is discarded. If you want to achieve a transparent background use the Transparent property of the Background object.

Example:

Background.FillEffect.SetGradient gsHorizontal, gvVariant1, vbWhite, vbBlack 'apply gradient filling


Frame

Name: Frame

Applies To: NBackground

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFrameProperties object applied on the background.


MouseResponse

Name: MouseResponse

Applies To: NBackground

Parameters: None

Return Value: Object

Remarks: Gives you access to the NMouseResponse properties applied on the background.


Transparent

Name: Transparent

Applies To: NBackground

Type: Boolean

Remarks: When the control is activated in windowless mode you can also instruct it to use a background supplied by the container or in other words to have a transparent background. Note that the transparent mode will decrease the control's performance because the control has to perform some additional steps.

Example:

Background.Transparent = TRUE


Windowless

Name: Windowless

Applies To: NBackground

Type: Boolean

Remarks: This property instructs the control whether to activate in windowless mode. When set to TRUE the next the time the control is activated it will not create a window, but instead will render itself into a bitmap. Make sure to modify this property before the control is activated.

Example:

Background.Windowless = TRUE


BarEdgePercent

Name: BarEdgePercent

Applies To: NBarPresentGroup

Type: Long

Remarks: Controls the edge size of the smooth edge bar (the BarStyle property must be set to bsSmoothEdgeBar) in percents of the smaller bar dimension (width or depth).

Example:

bar.BarEdgePercent = 35


BarStyle

Name: BarStyle

Applies To: NBarPresentGroup

Type: BarStyle

Remarks: Controls the style of the bars. Valid values are:

  • bsBar
  • bsCylinder
  • bsCone
  • bsInvertedCone
  • bsPyramid
  • bsInvertedPyramid
  • bsSmoothEdgeBar
    By default it is set to bsBar.

    Example:

    bar.BarStyle = bsInvertedPyramid 'bars are now displayed as pyramids


Common

Name: Common

Applies To: NBarPresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = bar.Common()


DepthPercent

Name: DepthPercent

Applies To: NBarPresentGroup

Type: Long

Remarks: Controls the depth of bars in percents of the floor grid cell depth.

Example:

bar.DepthPercent = 50 'half the cell depth


GapPercent

Name: GapPercent

Applies To: NBarPresentGroup

Type: Long

Remarks: Controls the gap between the bars in percents of the floor grid cell width.

Example:

bar.GapPercent = 10 'one tenth of the cell width


GetLevelAxis

Name: GetLevelAxis

Applies To: NBarPresentGroup

Parameters:

Long nLevel

ByRef AxisType pAxis

Return Value: Boolean

Remarks: Query on which axis is the specified level mapped. The return value indicates whether the level is mapped to any secondary axis or not. See the Bar Chart topic for more information.

Example:

Dim axis As AxisType
If bar.GetLevelAxis 1, axis Then
' level 1 is mapped on axis
Else
' level 1 is not mapped at all on axis
EndIf


GetLevelOrigin

Name: GetLevelOrigin

Applies To: NBarPresentGroup

Parameters:

Long nLevel

ByRef Double pdOrigin

ByRef Boolean pbUseOrigin

Return Value: None

Remarks: This method gives you information about the origin value and origin mode of a specified level.

Example:

Dim originvalue As Double
Dim useorigin As Boolean
bar.GetLevelOrigin 0, originvalue, useorigin


MapLevelOnAxis

Name: MapLevelOnAxis

Applies To: NBarPresentGroup

Parameters:

Long nLevel

AxisType Axis

Return Value: None

Remarks: Scales the level on the specified axis. This method can be very useful if you intend to display multi column charts and the values for the columns have different measures. See the Bar Chart topic for more information.

Example:

bar.MapLevelOnAxis 1, atRightAxis 'values from level 1 are displayed on the right axis


SetLevelOrigin

Name: SetLevelOrigin

Applies To: NBarPresentGroup

Parameters:

Long nLevel

Double dOrigin

Boolean bUseOrigin

Return Value: None

Remarks: This method helps you specify the beginning value of the bars (or the so called bar origin) on a per level basis. By default the bars use origin 0. You can change this value (dOrigin) or even turn off the bar origin (bUseOrigin = False). In this case the bars will begin from the maximal possible value. This feature is very useful if you display bar charts with big absolute values, but with small relative difference.


UnmapLevel

Name: UnmapLevel

Applies To: NBarPresentGroup

Parameters:

Long nLevel

Return Value: Boolean

Remarks: Unmaps the level from any secondary scaling axis. The return value indicates whether the level was mapped or not.

Example:

bar.UnmapLevel 1 'values from level 1 are displayed on the right axis


WidthPercent

Name: WidthPercent

Applies To: NBarPresentGroup

Type: Long

Remarks: Controls the width of bars in percents of the floor grid cell width.

Example:

bar.WidthPercent = 50 'half the cell width


BubbleStyle

Name: BubbleStyle

Applies To: NBubblePresentGroup

Type: PointStyle

Remarks: Controls the shape of the bubbles. Valid values are:

  • psBar
  • psCylinder
  • psCone
  • psInvertedCone
  • psPyramid
  • psInvertedPyramid
  • psSphere
  • psCircle
  • psDiamond

    Example:

    bubble.BubbleStyle = psSphere


Common

Name: Common

Applies To: NBubblePresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = surface.Common()


MaxSize

Name: MaxSize

Applies To: NBubblePresentGroup

Type: Single

Remarks: Controls the size of the maximal bubble in OpenGL units.

Example:

bubble.MaxSize = 0.5 'max bubble has diameter 0.5


MinSize

Name: MinSize

Applies To: NBubblePresentGroup

Type: Single

Remarks: Controls the size of the minimal bubble in OpenGL units.

Example:

bubble.MinSize = 0.5 'min bubble has diameter 0.5


AboutBox

Name: AboutBox

Applies To: NChart

Parameters: None

Return Value: None

Remarks: Shows the chart about dialog


AspManager

Name: AspManager

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NAspManager object controlling the ASP component integration


Axes

Name: Axes

Applies To: NChart

Parameters:

AxisType Type

Return Value: Object

Remarks: Gives you access to the six axes of the component. The Type argument specifies the axis you want to access. Possible values are:

  • atLeftAxis
  • atBackAxis
  • atRightAxis
  • atFrontAxis
  • atCategoriesAxis
  • atSeriesAxis
    See the Axes topic for more information.

    Example:

    NChart1.Axes(atCategoriesAxis).Visibile = False ' hide the categories axis


Background

Name: Background

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NBackground object controlling the background appearance.

Example:

NChart1.Background.FillEffect.SetSolidColor vbRed 'set red background


Categories

Name: Categories

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NAxisParameterCollection of the categories. See the Categories, Series and Levels topic for more information.

Example:

Dim param As NAxisParamter
Set param = NChart1.PresentGroups.Categories.Add("Hello", True) ' add a new categorie


ChartDepth

Name: ChartDepth

Applies To: NChart

Type: Single

Remarks: Controls the chart area depth in OpenGL units.

Example:

NChart1.ChartDepth = 2 ' make more space for the series


ChartHeight

Name: ChartHeight

Applies To: NChart

Type: Single

Remarks: Controls the chart area height in OpenGL units.

Example:

NChart1.ChartHeight = 3


ChartWidth

Name: ChartWidth

Applies To: NChart

Type: Single

Remarks: Controls the chart area width in OpenGL units.

Example:

NChart1.ChartWidth = 3 ' make more space for the categories


DataAt

Name: DataAt

Applies To: NChart

Parameters:

Long nX

Long nY

Long nZ

Return Value: Object

Remarks: Gives you access to the NData object at the specified index. nX is the category, nY is the serie and nZ is the level of the data point you want to gain access to.

Example:

NChart1.DataAt(0, 0, 0).Value1 = 10 'set Value1 to 10 for data point at first categorie, first serie and first level.


Database

Name: Database

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NDatabase object controlling the ADO database integration. See the ADO Database Integration topic for more information.

Example:

NChart1.Database.Enable = True ' enable database integration


DataStorage

Name: DataStorage

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NDataStorage object, which controls some properties of the Data Storage. See the Data Storage topic for more information.

Example:

NChart1.DataStorage.DataType = dtDataType65 ' change the data type to dtDataType65


EventManager

Name: EventManager

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NEventMangager object. It is used to configure the component response to various user actions.


Get3DView

Name: Get3DView

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the N3DView object of the componet. The N3DView object controls the 3D view projection of the scene.

Example:

NChart1.Get3DView.SetPredefinedProjection pp3D 'set 3D projection


ImportExport

Name: ImportExport

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NImportExport object trough which you can perform some import - export operations including export to image files and save and load of the component state


LabelCollection

Name: LabelCollection

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NLabelCollection object. With it you can controls the labels displayed on top of all chart elements.


Legend

Name: Legend

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NLegend object controlling the appearance of the chart integrated legend


Levels

Name: Levels

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NAxisParameterCollection of the levels. See the Categories, Series and Levels topic for more information.

Example:

Dim param As NAxisParamter
Set param = NChart1.PresentGroups.Levels.Add("Hello", True) ' add a new level


LightModel

Name: LightModel

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NLightModel object controlling some global lighting parameters.


LightSourceCollection

Name: LightSourceCollection

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NLightSourceCollection holding the light sources of the scene


Picture

Name: Picture

Applies To: NChart

Parameters: None

Return Value: ByRef IPictureDisp

Remarks: Helps you use the currently rendered image of the component in operations requiring the Picture property type. A typical example is the PaintPicture method in Visual Basic. See the Printing topic for more information.


PresentGroups

Name: PresentGroups

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the presentation groups of the component. See the Presentation Groups topic for more information.

Example:

Dim bar As NBarPresentGroup
Set bar = NChart1.PresentGroups.Add(pgtBar) 'create a bar present group


PrintManager

Name: PrintManager

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPrintManager object controlling the component build in printing functionality. See the Printing topic for more information.


Redraw

Name: Redraw

Applies To: NChart

Type: Long

Remarks: When turned off, subsequent changes do not repaint the control. If you intend to apply multiple changes, turn this flag off and when finished turn it on. This will greatly improve performance.

Example:

NChart1.Redraw = False
' do not repaint the control
'some code here
NChart1.Redraw = True 'repaint the control when finished


Series

Name: Series

Applies To: NChart

Parameters: None

Return Value: Object

Remarks: Gives you access to the NAxisParameterCollection of the series. See the Categories, Series and Levels topic for more information.

Example:

Dim param As NAxisParamter
Set param = NChart1.PresentGroups.Series.Add("Hello", True) ' add a new serie


ShowDialog

Name: ShowDialog

Applies To: NChart

Parameters: None

Return Value: None

Remarks: Shows the property pages of the component at runtime.

Example:

NChart1.ShowDialog ' show the property pages


Walls

Name: Walls

Applies To: NChart

Parameters:

ChartWallType Type

Return Value: Object

Remarks: Gives you access to the five chart walls of the component. The Type argument specifies the chart wall you want to access. Possible values are:

  • cwtLeft
  • cwtBack
  • cwtRight
  • cwtFront
  • cwtFloor
    See the Chart Walls topic for more information.

    Example:

    NChart1.Walls(cwtFloor).Visibile = False ' hide the chart floor


AxisMouseEvent

Name: AxisMouseEvent

Applies To: NChartEvents

Parameters:

AxisType ChartAxis

Object MouseState

Return Value: None

Remarks: This event is generated when the user clicks on the chart axes. The ChartAxis parameter contains the chart axis on which the user has clicked.


BackgroundMouseEvent

Name: BackgroundMouseEvent

Applies To: NChartEvents

Parameters:

Object MouseState

Return Value: None

Remarks: This event is generated when the user clicks on the component background


ChartWallMouseEvent

Name: ChartWallMouseEvent

Applies To: NChartEvents

Parameters:

ChartWallType ChartWall

Object MouseState

Return Value: None

Remarks: This event is generated when the user clicks on a chart wall. The ChartWall parameter gives you the index of the chart wall.


DataMouseEvent

Name: DataMouseEvent

Applies To: NChartEvents

Parameters:

None nX

None nY

None nZ

Object MouseState

Return Value: None

Remarks: This event is generated when the user clicks on a chart data item. The nX, nY and nZ parameters contain the index of the data item in the data storage.


LabelMouseEvent

Name: LabelMouseEvent

Applies To: NChartEvents

Parameters:

None nItemIndex

Object MouseState

Return Value: None

Remarks: This event is generated when the user clicks on a chart label


LegendDataMouseEvent

Name: LegendDataMouseEvent

Applies To: NChartEvents

Parameters:

None nRow

None nCol

Object MouseState

Return Value: None

Remarks: This event is generated when the user clicks on a legend data item


LegendMouseEvent

Name: LegendMouseEvent

Applies To: NChartEvents

Parameters:

Object MouseState

Return Value: None

Remarks: This event is generated when the user clicks on the legend


Border

Name: Border

Applies To: NChartWall

Parameters: None

Return Value: Object

Remarks: Gives you access to the NLineProperties object controlling the properties applied on the chart wall border.

Example:

NChart1.Walls(cwtFloor).Border.Width = 2 'chart wall border width


FillEffect

Name: FillEffect

Applies To: NChartWall

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFillEffect object controlling the fill effect applied on the chart wall.

Example:

NChart1.Walls(cwtFloor).FillEffect.SetSolidColor vbRed ' make the floor red


Material

Name: Material

Applies To: NChartWall

Parameters: None

Return Value: Object

Remarks: Gives you access to the NMaterial object controlling the material applied on the chart wall.

Example:

NChart1.Walls(cwtFloor).Material.SetAmbientDiffuseColor vbBlue 'chart floor is now blue when you set some lighting on the scene


MouseResponse

Name: MouseResponse

Applies To: NChartWall

Parameters: None

Return Value: Object

Remarks: Gives you access to the NMouseResponse object of the chart wall.

Example:

NChart1.Walls(cwtFloor).MouseResponse.URL = "www.nevron.com" ' the client browser will jump to www.nevron.com when the client clicks on the floor wall


Visible

Name: Visible

Applies To: NChartWall

Type: Boolean

Remarks: Controls the visibility of the chart wall,

Example:

NChart1.Walls(cwtRight).Visible = False 'hide the chart wall


Width

Name: Width

Applies To: NChartWall

Type: Single

Remarks: Controls the width of the chart wall,

Example:

NChart1.Walls(cwtBack).Width = 0.10 'make back wall thicker


Border

Name: Border

Applies To: NData

Parameters: None

Return Value: Object

Remarks: Gives you access to the Border of the data point. The border is applied on the data point if the uniform appearances of the presentation group are turned off

Example:

NChart1.DataAt(0, 0, 0).Border.Color vbYellow


Color

Name: Color

Applies To: NData

Type: OLE_COLOR

Remarks: The data point color. This property can be used as a substitute for the FillEffect of the data point, since it requires less memory and is far more effective if you intend to create charts whose data points are only filled with solid colors. This property is enabled only for minor data types 2 and 3. See the Data Storage Topic for more information.

Example:

NChart1.DataAt(0, 0, 0).Color = vbRed


FillEffect

Name: FillEffect

Applies To: NData

Parameters: None

Return Value: Object

Remarks: Gives you access to the Fill Effect of the data point. The fill effect is applied on the data point if the uniform appearances of the presentation group are turned off

Example:

NChart1.DataAt(0, 0, 0).FillEffect.SetSolidColor vbBlue


Label

Name: Label

Applies To: NData

Type: String

Remarks: The label string of the data point. Data point labels are displayed on each data point, when the HasTexts property of the NPresentGroupCommon object has been set to True and the FormatString property of the same object includes the %L formatting command.

Example:

NChart1.PresentGroups.GetAt(0).Common.HasTexts = True
NChart1.DataAt(0, 0, 0).Label = "Hello World"


Material

Name: Material

Applies To: NData

Parameters: None

Return Value: Object

Remarks: Gives you access to the Material of the data point. The material is applied on the data point if the uniform appearances of the presentation group are turned off

Example:

NChart1.DataAt(0, 0, 0).Material.SetAmbientDiffuseColor vbRed


MouseResponse

Name: MouseResponse

Applies To: NData

Parameters: None

Return Value: Object

Remarks: Gives you access to the MouseResponse of the data point. The mouse response defines behaviour of the data point to various mouse actions and takes a significant part in the creation of Internet interactive charts. It also has properties which help you specify a default tooltip.

Example:

NChart1.DataAt(0, 0, 0).MouseResponse.URL = "www.nevron.com"


Value1

Name: Value1

Applies To: NData

Type: Double

Remarks: Value 1 of the data point. This is the only property that is supported by all data types and is the most widely used one by the presentation groups.

Example:

NChart1.DataAt(0, 0, 0).Value1 = 3


Value2

Name: Value2

Applies To: NData

Type: Double

Remarks: Value 2 of the data point

Example:

NChart1.DataAt(0, 0, 0).Value2 = 4


Value3

Name: Value3

Applies To: NData

Type: Double

Remarks: Value 3 of the data point

Example:

NChart1.DataAt(0, 0, 0).Value3 = 1


Value4

Name: Value4

Applies To: NData

Type: Double

Remarks: Value 4 of the data point

Example:

NChart1.DataAt(0, 0, 0).Value4 = 3


Value5

Name: Value5

Applies To: NData

Type: Double

Remarks: Value 5 of the data point

Example:

NChart1.DataAt(0, 0, 0).Value5 = 8


Value6

Name: Value6

Applies To: NData

Type: Double

Remarks: Value 6 of the data point

Example:

NChart1.DataAt(0, 0, 0).Value6 = 9


CurrentDataSource

Name: CurrentDataSource

Applies To: NDatabase

Type: Long

Remarks: Specifies the current data source. Although you can create several data sources in the DataSources collection only one of them can be the active one.

Example:

database.CurrentDataSource = 0 ' activate the first data source


DataSources

Name: DataSources

Applies To: NDatabase

Parameters: None

Return Value: Object

Remarks: Gives you access to the collection of NDataSource objects


DataType

Name: DataType

Applies To: NDatabase

Type: DataType

Remarks: Specifies the data storage data type. When the database is imported the data storage is created with this data type.

Example:

database.DataType = dtDataType35


Enable

Name: Enable

Applies To: NDatabase

Type: Boolean

Remarks: When set to True the data storage of the component is extracted from the current data source.


Requery

Name: Requery

Applies To: NDatabase

Parameters: None

Return Value: Boolean

Remarks: Imports the database in the data storage of the component.


CategoryField

Name: CategoryField

Applies To: NDataSource

Type: String

Remarks: Specifies the field from which the category labels will be extracted

Example:

datasource.CategoryField = "Field1"


ConnectString

Name: ConnectString

Applies To: NDataSource

Type: String

Remarks: Specifies the connection string of the data source.

Example:

datasource.ConnectString = "DSN=SomeDatabase"


Name

Name: Name

Applies To: NDataSource

Type: String

Remarks: The user friendly name of the data source.

Example:

datasource.Name = "My datasource"


Password

Name: Password

Applies To: NDataSource

Type: String

Remarks: Password used when 3DChart opens the ADO connection.

Example:

datasource.Password = "PWD"


SerieMappings

Name: SerieMappings

Applies To: NDataSource

Parameters: None

Return Value: Object

Remarks: Gives you access to the NSerieMappingCollection object holding NSerieMapping objects.


ShowCategoryLabels

Name: ShowCategoryLabels

Applies To: NDataSource

Type: Boolean

Remarks: Controls the visibility of the category labels

Example:

datasource.ShowCategoryLabels = False 'category labels are not displayed


SQL

Name: SQL

Applies To: NDataSource

Type: String

Remarks: The SQL statement which will be executed.

Example:

datasource.SQL = "SELECT * FROM Table1"


TestConnection

Name: TestConnection

Applies To: NDataSource

Parameters: None

Return Value: Long

Remarks: Returns True if a valid connection string is specified.

Example:

bOK = datasource.TestConnection()


TestSQL

Name: TestSQL

Applies To: NDataSource

Parameters: None

Return Value: Long

Remarks: Returns True if a valid SQL string is specified.

Example:

bOK = datasource.TestSQL()


UserName

Name: UserName

Applies To: NDataSource

Type: String

Remarks: User name used when 3DChart opens the ADO connection.

Example:

datasource.UserName = "Admin"


Add

Name: Add

Applies To: NDataSourceCollection

Parameters:

String Name

Return Value: Object

Remarks: Adds a new data source and returns the newly created object.

Example:

Dim datasource As NDataSource
Set datasource = Database.DataSources.Add("DataSource1")


GetAt

Name: GetAt

Applies To: NDataSourceCollection

Parameters:

Long nIndex

Return Value: Object

Remarks: Returns the object at the specified index.

Example:

Dim datasource As NDataSource
Set datasource = Database.DataSources.GetAt(0)


GetCount

Name: GetCount

Applies To: NDataSourceCollection

Parameters: None

Return Value: Long

Remarks: Returns the count of object in the data source collection.

Example:

objcount = Database.DataSources.GetCount()


RemoveAll

Name: RemoveAll

Applies To: NDataSourceCollection

Parameters: None

Return Value: None

Remarks: Removes all data sources in the collection.

Example:

Database.DataSources.RemoveAll


RemoveAt

Name: RemoveAt

Applies To: NDataSourceCollection

Parameters:

Long nIndex

Return Value: None

Remarks: Removes the serie mapping at the given index.

Example:

Database.DataSources.RemoveAt 0


CategoryPageSize

Name: CategoryPageSize

Applies To: NDataStorage

Type: Long

Remarks: Controls the page size of the categories. The page size reflects the granilarity of the reserved memory for the categories. By default 20

Example:

NChart1.DataStorage.CategoryPageSize = 10


DataType

Name: DataType

Applies To: NDataStorage

Type: DataType

Remarks: Specifies the data type of the data storage. The data type determines the data values each data point has. Available values are:

  • dtDataType11
  • dtDataType12
  • dtDataType13
  • dtDataType14
  • dtDataType15
  • dtDataType21
  • dtDataType22
  • dtDataType23
  • dtDataType24
  • dtDataType25
  • dtDataType31
  • dtDataType32
  • dtDataType33
  • dtDataType34
  • dtDataType35
  • dtDataType55
  • dtDataType65
    See the Data Storage topic for more information.

    Example:

    NChart1.DataStorage.DataType = dtDataType65 'change the data type to dtDataType65


LevelPageSize

Name: LevelPageSize

Applies To: NDataStorage

Type: Long

Remarks: Controls the page size of the levels. The page size reflects the granilarity of the reserved memory for the series. By default 1

Example:

NChart1.DataStorage.SeriePageSize = 10


SeriePageSize

Name: SeriePageSize

Applies To: NDataStorage

Type: Long

Remarks: Controls the page size of the series. The page size reflects the granilarity of the reserved memory for the series. By default 1

Example:

NChart1.DataStorage.SeriePageSize = 10


LMouseButtonClick

Name: LMouseButtonClick

Applies To: NEventManager

Type: EventResponse

Remarks: Specifies the way that the control responds when the user presses the left mouse button. Possible values are erDisabled, erAutomatic and erFire. The LMouseButtonClick has effect only if the MouseMode is mmEvent.

  • erDisabled - indicates that the control should not respond to left mouse click in any way.
  • erAutomatic - indicates that the control should automatically respond to this event. The current version does nothing in response to left mouse click.
  • erFire - indicates that the control should fire an event to the control container. The event itself contains information about the object that the mouse was currently over as well as the mouse and keyboard state at the time the event was generated. For an example of the events management see the selection example supplied with the control.


LMouseButtonDoubleClick

Name: LMouseButtonDoubleClick

Applies To: NEventManager

Type: EventResponse

Remarks: Specifies the way that the control responds when the user double clicks the left mouse button. Possible values are erDisabled, erAutomatic and erFire.

  • erDisabled - indicates that the control should not respond in any way.
  • erAutomatic - shows a context menu for the object that the mouse is currently over.
  • erFire - same as LMouseButtonClick.


MouseMode

Name: MouseMode

Applies To: NEventManager

Type: MouseMode

Remarks: Specifies the mode of the mouse. Possible values are mmDisabled, mmTrackBall mmZoom, mmOffset and mmEvent.

  • mmDisabled - is this mode the control does not generate events and does not respond to mouse actions in any way.
  • mmTrackBall - in this mode the user can adjust the viewpoint by using the Virtual Track Ball. The VTB generally represents the 3D scene as a sphere which you are rotating. To activate the VTB press the left mouse button when the mouse is over the control and then drag the mouse.
  • mmZoom - this mode allows the user to modify the zoom. Pressing the left mouse when the mouse is over the control and dragging the mouse towards the control top will zoom in, while dragging to the bottom will zoom out.
  • mmOffset - in this mode the user can move the 3D scene in the control window.
  • mmEvent - in this mode the control generates events when the user moves or presses the mouse buttons. The typical format of a mouse event is ObjectNameMouseEvent(MouseState As NMouseState). The NMouseState object describes the mouse and the keyboard state at the time when the event was generated. You can also configure the control to respond to the mouse event in a predefined way. Context sensitive menus and tooltips fall in this category. For more information see the descriptions for the different mouse actions.


MouseMove

Name: MouseMove

Applies To: NEventManager

Type: EventResponse

Remarks: Specifies the way that the control responds when the user moves the mouse over the control window. Possible values are erDisabled, erAutomatic and erFire.

  • erDisabled - indicates that the control should not respond in any way.
  • erAutomatic - displays tooltips for the object that the mouse is currently over.
  • erFire - same as LMouseButtonClick.


RMouseButtonClick

Name: RMouseButtonClick

Applies To: NEventManager

Type: EventResponse

Remarks: Specifies the way that the control responds when the user presses the right mouse button. Possible values are erDisabled, erAutomatic and erFire.

  • erDisabled - indicates that the control should not respond in any way.
  • erAutomatic - shows a context menu for the object that the mouse is currently over.
  • erFire - same as LMouseButtonClick.


RMouseButtonDoubleClick

Name: RMouseButtonDoubleClick

Applies To: NEventManager

Type: EventResponse

Remarks: Specifies the way that the control responds when the user double clicks the right mouse button. Possible values are erDisabled, erAutomatic and erFire.

  • erDisabled - indicates that the control should not respond in any way.
  • erAutomatic - the current version does nothing in response to this event.
  • erFire - same as LMouseButtonClick.


AnimationFileName

Name: AnimationFileName

Applies To: NFillEffect

Type: String

Remarks: Specifies the location of the AVI file that will be used for the animated texture. This property is empty by default.

Example:

FillEffect.Type = fetAnimation
FillEffect.AnimationFileName = "c:\Windows\Clock.avi"


AnimationSpeed

Name: AnimationSpeed

Applies To: NFillEffect

Type: Long

Remarks: Controls the speed in milliseconds used to render the animated texture. The default value is 50 (which is the fastest speed supported by the component). Note that the actual speed of the rendering may be slower than the one you specified, because the control simply can not produce the new frame faster.

Example:

FillEffect.Type = fetAnimation
FillEffect.AnimationFileName = "c:\Windows\Clock.avi"
FillEffect.AnimationSpeed = 100 ' render two times slower than usual


BlackTextureBackground

Name: BlackTextureBackground

Applies To: NFillEffect

Type: Boolean

Remarks: Sometimes when you use a layout that does not fill the object entirely and some areas of the object are not filled. These areas by default are filled with black, but you can specify a different color by using the color properties (EnableWindowsColor, WindowsColor and Color). To enable this feature you must turn off the BlackTextureBackground property. The default value is TRUE.

Example:

The following example fills the unfilled areas of the bubble texture with red.
FillEffect.Type = fetImage
FillEffect.ImageFileName = "c:\Windows\Bubbles.bmp"
FillEffect.Rotation = 45
            FillEffect.BlackTextureBackground = FALSE
            FillEffect.EnableWindowsColor = FALSE
            FillEffect.Color = vbRed


Color

Name: Color

Applies To: NFillEffect

Type: OLE_COLOR

Remarks: The RGB color of the NFillEffect.

Example:

FillEffect.SetType = fetSolidColor
FillEffect.Color = RGB(255, 255, 255) 'set the color to white


EnableWindowsColor

Name: EnableWindowsColor

Applies To: NFillEffect

Type: Boolean

Remarks: Enables the synchronization of the fill effect with the Windows appearance settings.

Example:

FillEffect.SetType = fetSolidColor
FillEffect.EnableWindowsColor = TRUE 'enable synchronization
FillEffect.WindowColor = wcBtnFace 'synchronize with the button face color


GradientColor1

Name: GradientColor1

Applies To: NFillEffect

Type: OLE_COLOR

Remarks: The starting color of the gradient. The default value is white.

Example:

FillEffect.GradientStyle = gsHorizontal
FillEffect.GradientVariant = gvVariant1 'apply top to bottom gradient
FillEffect.GradientColor1 = vbWhite
FillEffect.GradientColor2 = vbBlack


GradientColor2

Name: GradientColor2

Applies To: NFillEffect

Type: OLE_COLOR

Remarks: The ending color of the gradient. The default value is black.

Example:

FillEffect.GradientStyle = gsHorizontal
FillEffect.GradientVariant = gvVariant1 'apply top to bottom gradient
FillEffect.GradientColor1 = vbWhite
FillEffect.GradientColor2 = vbBlack


GradientStyle

Name: GradientStyle

Applies To: NFillEffect

Type: FEGradientStyle

Remarks: Controls the gradient style of the NFilLEffect. The possible values are gsHorizontal, gsVertical, gsDiagonalUp, gsDiagonalDown, gsFromCorner and gsFromCenter. The default value is gsHorizontal.

Example:

The following example applies a horizontal gradient.
FillEffect.GradientStyle = gsHorizontal
FillEffect.GradientVariant = gvVariant1
FillEffect.GradientColor1 = vbWhite
FillEffect.GradientColor2 = vbBlack


GradientVariant

Name: GradientVariant

Applies To: NFillEffect

Type: FEGradientVariant

Remarks: The gradient variant of the NFillEffect. Each gradient style has different sub variants. For example the horizontal gradient style has four variants that indicate how the GradientColor1 will transfer to GradientColor2. The possible vaalues are gvVariant1, gvVariant2, gvVariant3, gvVariant4, The default value for this property is gvVariant1.

Example:

FillEffect.GradientStyle = gsHorizontal
FillEffect.GradientVariant = gvVariant1 'apply top to bottom gradient
FillEffect.GradientColor1 = vbWhite
FillEffect.GradientColor2 = vbBlack


ImageFileName

Name: ImageFileName

Applies To: NFillEffect

Type: String

Remarks: The image file that will be used as a texture. The image file must have a format that is supported by Nevron. Currently the supported file formats for reading are: Bitmap (.bmp), JPEG (.jpg), TIFF (.tif), Targa (.tga), Windows metafile (.wmf), GIF (.gif) or PNG (.png). Note that the component determines the image format by the extension of the file. This property is empty by default.

Example:

FillEffect.Type = fetImage
FillEffect.ImageFileName = "c:\Windows\Bubbles.bmp"


Layout

Name: Layout

Applies To: NFillEffect

Type: FELayout

Remarks: Controls the layout when the fill effect is a gradient, texture (image), animation or pattern and the mapping is relative to the object (object linear). Possible values for this property are lStretched, lFitted, lCentered, lTiled, lStretchedToWidth, lStretchedToHeight and lCropFitted.

Example:

FillEffect.Layout = lTiled


MapType

Name: MapType

Applies To: NFillEffect

Type: FEMapType

Remarks: Controls the mapping type when the fill effect is a gradient, texture (image), animation or pattern. The default value is object linear (mapping is relative to the object).

Example:

FillEffect.MapType = mtEyeLinear ' change the mapping to eye linear (relative to the viewer)


PatternBackgroundColor

Name: PatternBackgroundColor

Applies To: NFillEffect

Type: OLE_COLOR

Remarks: The RGB value of the pattern background color. The default value is black.

Example:

FillEffect.PatternType = ptDashedHorizontal
FillEffect.PatternBackgroundColor = vbBlack
FillEffect.PatternForegroundColor = vbWhite


PatternForegroundColor

Name: PatternForegroundColor

Applies To: NFillEffect

Type: OLE_COLOR

Remarks: The RGB value of the pattern foreground color. The default value is white.

Example:

FillEffect.PatternType = ptDashedHorizontal
FillEffect.PatternBackgroundColor = vbBlack
FillEffect.PatternForegroundColor = vbWhite


PatternType

Name: PatternType

Applies To: NFillEffect

Type: FEPatternType

Remarks: The pattern type of the fill effect.

Example:

FillEffect.PatternType = ptDashedHorizontal
FillEffect.PatternBackgroundColor = vbBlack
FillEffect.PatternForegroundColor = vbWhite


Rotation

Name: Rotation

Applies To: NFillEffect

Type: Single

Remarks: Use this property if you want to rotate the gradient, texture, animation or pattern around the center of the 3D object. Note that the effect of this property can be different depending on the Layout and MapType properties. The rotation is specified in degrees. The default value is 0 resulting in no rotation.

Example:

FillEffect.Rotation = 45 'rotate at 45 degrees


SetAnimation

Name: SetAnimation

Applies To: NFillEffect

Parameters:

String FileName

Long Speed

Return Value: None

Remarks: Use this function if you want to apply an animated texture on the object attached to this fill effect. The FileName specifies the animation location and the Speed parameter specifies the rendering speed in miliseconds. Note that this function will also reset the MapType, Layout, XScale and YScale properties to their defaults.

Example:

FillEffect.SetAnimation "c:\windows\clock.avi", 100


SetGradient

Name: SetGradient

Applies To: NFillEffect

Parameters:

FEGradientStyle nGradientStyle

FEGradientVariant nGradientVariant

OLE_COLOR Color1

OLE_COLOR Color2

Return Value: None

Remarks: Use this function if you want to apply a gradient fill effect. Note that this function will also reset the MapType, Layout, XScale and YScale properties to their defaults.

Example:

FillEffect.SetGradient gsFromCenter, gvVariant1, vbBlack, vbWhite


SetImage

Name: SetImage

Applies To: NFillEffect

Parameters:

String FileName

Return Value: None

Remarks: Use this function if you want to apply an image on the object attached to this fill effect. The FileName parameter specifies the image location. For more information see the ImageFileName property. Note that this function will also reset the MapType, Layout, XScale and YScale properties to their defaults.

Example:

FillEffect.SetImage "c:\windows\bubbles.bmp"


SetPattern

Name: SetPattern

Applies To: NFillEffect

Parameters:

FEPatternType PatternType

OLE_COLOR ForeColor

OLE_COLOR BackColor

Return Value: None

Remarks: Use this function if you want to apply a pattern on the object attached to this fill effect. Note that this function will also reset the MapType, Layout, XScale and YScale properties to their defaults.

Example:

FillEffect.SetPattern ptDarkHorizontal, vbWhite, vbBlack


SetSolidColor

Name: SetSolidColor

Applies To: NFillEffect

Parameters:

OLE_COLOR Color

Return Value: None

Remarks: Use this function if you want to apply a solid colid.

Example:

FillEffect.SetSolidColor RGB(125, 125, 125)
is equivalent to
FillEffect.Type = fetSolidColor
FillEffect.Color = RGB(125, 125, 125)


SetWindowsColor

Name: SetWindowsColor

Applies To: NFillEffect

Parameters:

WinColor nWindowsColor

Return Value: None

Remarks: Use this function if you want to synchronize the fill effect with some of the windows colors.

Example:

FillEffect.SetWindowsColor btnFace
is equivalent to
FillEffect.Type = fetSolidColor
FillEffect.EnableWindowsColor = TRUE
FillEffect.WindowsColor = wcbtnFace


ShowDialog

Name: ShowDialog

Applies To: NFillEffect

Parameters: None

Return Value: Long

Remarks: Shows the fill effect properties dialog at runtime. The returned value indicates whether the user pressed the Ok button.

Example:

FillEffect.ShowDialog


Transparency

Name: Transparency

Applies To: NFillEffect

Type: Long

Remarks: Controls the transparency of the fill effect in percents. A value of 0 means complete opacity whereas a value of 100 means complete transparency. You must have in mind that enabling transparency will impact the rendering speed. Also note that the Transparency property does not have any effects for the NFillEffect object applied on the background. For more information see the NBackground description.

Example:

FillEffect.Transparency = 50 'make the object 50% transparent


Type

Name: Type

Applies To: NFillEffect

Type: FEType

Remarks: This property controls the type of the fill effect. The possible values are fetSolidColor, fetGradient, fetImage, fetAnimation or fetPattern.

Example:

FillEffect.Type = fetGradient 'the fill effect is gradient


WindowsColor

Name: WindowsColor

Applies To: NFillEffect

Type: WinColor

Remarks: Use this property to synchronize with the Windows appearance settings. The possible values are:

  • wc3dDkShadow
  • wc3dFace
  • wcBtnFace
  • wc3dHiLight
  • wc3dHighLight
  • wcBtnHiLight
  • wcBtnHighLight
  • wc3dLight
  • wc3dShadow
  • wcBtnShadow
  • wcActiveBorder
  • wcActiveCaption
  • wcAppWorkspace
  • wcBackground
  • wcDesktop
  • wcBtnText
  • wcCaptionText
  • wcGrayText
  • wcHighLight
  • wcHighLightText
  • wcInactiveBorder
  • wcInacitveCaption
  • wcInacitveCaptionText
  • wcInfoBk
  • wcInfoText
  • wcMenu
  • wcMenuText
  • wcScrollBar
  • wcWindow
  • wcWindowFrame
  • wcWindowText

    Example:

    FillEffect.SetType = fetSolidColor
    FillEffect.EnableWindowsColor = TRUE 'enable synchronization
    FillEffect.WindowColor = wcBtnFace 'synchronize with the button face color


XScale

Name: XScale

Applies To: NFillEffect

Type: Single

Remarks: Use this property if you want to scale the gradient, texture, animation or pattern along the X axis. Note that the effect of this property can be different depending on the Layout and MapType properties. The default value is 1 (no additional scaling).

Example:

FillEffect.XScale = 2 'scale twice along the X axis


YScale

Name: YScale

Applies To: NFillEffect

Type: Single

Remarks: Use this property if you want to scale the gradient, texture (image), animation or pattern along the Y axis. Note that the effect of this property can be different depending on the Layout and MapType properties. The default value is 1 (no additional scaling).

Example:

FillEffect.YScale = 2 'scale twice along the X axis


BarEdgePercent

Name: BarEdgePercent

Applies To: NFloatBarPresentGroup

Type: Long

Remarks: Controls the edge size of the smooth edge bar in percents of the smaller bar dimension (width or depth).

Example:

floatbar.BarEdgePercent = 35


BarStyle

Name: BarStyle

Applies To: NFloatBarPresentGroup

Type: BarStyle

Remarks: Controls the style of the bars. Valid values are:

  • bsBar
  • bsCylinder
  • bsCone
  • bsInvertedCone
  • bsPyramid
  • bsInvertedPyramid
  • bsSmoothEdgeBar

    Example:

    floatbar.BarStyle = bsCone 'bars are now displayed as cones


Common

Name: Common

Applies To: NFloatBarPresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = bar.Common()


DepthPercent

Name: DepthPercent

Applies To: NFloatBarPresentGroup

Type: Long

Remarks: Controls the depth of bars in percents of the floor grid cell depth.

Example:

floatbar.DepthPercent = 50 'half the cell depth


WidthPercent

Name: WidthPercent

Applies To: NFloatBarPresentGroup

Type: Long

Remarks: Controls the width of bars in percents of the floor grid cell width.

Example:

floatbar.WidthPercent = 50 'half the cell width


BevelDistance

Name: BevelDistance

Applies To: NFrameProperties

Type: Long

Remarks: Controls the distance between the inner and the outer bevel. This property accepts values in the range [0, 10]. The default value is 0.

Example:

FrameProperties.BevelDistance = 2 ' increase the bevel distance


BevelWidth

Name: BevelWidth

Applies To: NFrameProperties

Type: Long

Remarks: Controls the width of the inner and the outer bevels. This property accepts values in the range [0, 10]. The default value is 1.

Example:

FrameProperties.BevelWidth = 2 ' increase the bevel width


Color

Name: Color

Applies To: NFrameProperties

Type: OLE_COLOR

Remarks: Controls the color of the border. The default value is black.

Example:

FrameProperties.HasBorder = TRUE ' enable border properties
FrameProperties.Color = RGB(255, 0, 0) 'red line color
FrameProperties.LineWidth = 3 'increase the width a little bit


HasBorder

Name: HasBorder

Applies To: NFrameProperties

Type: Boolean

Remarks: Enables or disables the border. When set to FALSE the Color, LineStyle and LineWidth properties are discarded.

Example:

FrameProperties.HasBorder = TRUE ' enable border properties
FrameProperties.Color = RGB(255, 0, 0) 'red line color
FrameProperties.LineWidth = 3 'increase the width a little bit


InnerStyle

Name: InnerStyle

Applies To: NFrameProperties

Type: FrameStyle

Remarks: Controls the inner style of the frame. Can be fsNone, fsRaised or fsSunken.

Example:

FrameProperties.OuterStyle = fsNone


LineStyle

Name: LineStyle

Applies To: NFrameProperties

Type: LineStyle

Remarks: Controls the line style of the border. Can be lsSolid, lsDash, lsDot, lsDashDot, lsDashDotDot. The default value is lsSolid.

Example:

FrameProperties.HasBorder = TRUE ' enable border properties
FrameProperties.Color = RGB(255, 0, 0) 'red line color
FrameProperties.LineStyle = lsDash 'change the line style to dash
            FrameProperties.LineWidth = 3 'increase the width a little bit


LineWidth

Name: LineWidth

Applies To: NFrameProperties

Type: Long

Remarks: Controls the line width of the border. This property accepts values in the range [0, 10]. The default value is 1.

Example:

FrameProperties.HasBorder = TRUE ' enable border properties
FrameProperties.Color = RGB(255, 0, 0) 'red line color
FrameProperties.LineStyle = lsDash 'change the line style to dash
            FrameProperties.LineWidth = 3 'increase the width a little bit


OuterStyle

Name: OuterStyle

Applies To: NFrameProperties

Type: FrameStyle

Remarks: Controls the outer style of the frame. Can be fsNone, fsRaised or fsSunken.

Example:

FrameProperties.OuterStyle = fsNone


ShowDialog

Name: ShowDialog

Applies To: NFrameProperties

Parameters: None

Return Value: Long

Remarks: Shows the NFrameProperties dialog at runtime. The return value indicates whether the user clicked the Ok button.

Example:

NFrameProperties.ShowDialog


Load

Name: Load

Applies To: NImportExport

Parameters:

ByRef Variant vFile

Return Value: Boolean

Remarks: Loads the control state from a file, memory handle, storage or the clipboard.

  • If the variant type is String (VT_BSTR in C++) the vFile contains the name of a file. If the variant type is String, but the string parameter is empty then the control will export the state to the clipboard in custom Nevron clipboard format.
  • In the case when the variant type is Long (VT_I4) the long parameter specifies a memory handle.
  • If the variant type is Object (VT_UNKNOWN) the pUnk parameter is a pointer to an IStream interface where the control will save its state

    Example:

    Dim vFile As Variant
    vFile = ""
    NChart1.ImportExport.Load vFile 'load the state fromt the clipboard (paste)


LoadFromURL

Name: LoadFromURL

Applies To: NImportExport

Parameters:

String bstrURL

Return Value: Boolean

Remarks: Load the control state from a URL location. This feature can be very useful if you have a server control that generates Nevron save files (.nsv) on some server and a client control that uses these save files to load and display these files.


Save

Name: Save

Applies To: NImportExport

Parameters:

ByRef Variant vFile

Return Value: Boolean

Remarks: Saves the control state to a file, memory handle, storage or the clipboard.

  • If the variant type is String (VT_BSTR in C++) the vFile contains the name of a file. If the variant type is String, but the string parameter is empty then the control will export the state to the clipboard in custom Nevron clipboard format.
  • In the case when the variant type is Long (VT_I4) the long parameter specifies a memory handle.
  • If the variant type is Object (VT_UNKNOWN) the pUnk parameter is a pointer to an IStream interface where the control will save its state

    Example:

    Dim vFile As Variant
    vFile = ""
    NChart1.ImportExport.Save vFile 'export the state to the clipboard (copy)


SaveBitmapImage

Name: SaveBitmapImage

Applies To: NImportExport

Parameters:

ByRef Variant vFile

Boolean UseWindowDimensions

None Width

None Height

None BitsPerPixel

Return Value: Boolean

Remarks: Export a bitmap image to a file, memory handle, storage or clipboard. The target media is specified by the vFile parameter.

  • If the variant type is String (VT_BSTR in C++) the vFile contains the name of a file. If the variant type is String, but the string parameter is empty then the control will export the bitmap to the clipboard.
  • In the case when the variant type is Long (VT_I4) the long parameter specifies a memory handle.
  • If the variant type is Object (VT_UNKNOWN) the pUnk parameter is a pointer to an IStream interface where the control will save the generated bitmap.
  • If the UseWindowDimensions is set to TRUE the bitmap will have the dimensions of the control in the container. Otherwise the bitmap will have the dimensions specified by the Width and Height parameters. Do not set the UseWindowDimensions to TRUE if you're using the control in ASP because the window dimensions are invalid.
  • The BitsPerPixel parameter specifies the bits used to encode each pixel. Nevron controls generate images independently from the current video setting or video adapter capabilities. Thus you may render a 24bpp on a system that supports only 8bpp. Best quality however is achieved if you synchronize the BitsPerPixel with the current video settings.

    Example:

    NevronControl.ImportExport.SaveBitmapImage(sFileName, FALSE, 200, 200, 24) 'generate a 24bpp, 200x200 bimtap image


SaveJPEGImage

Name: SaveJPEGImage

Applies To: NImportExport

Parameters:

ByRef Variant vFile

Boolean UseWindowDimensions

Long Width

Long Height

Boolean Quantize

None Quality

None Smoothing

None BitsPerPixel

Return Value: Boolean

Remarks: Export a JPEG image to a file, memory handle or storage. The target media is specified by the vFile parameter.

  • If the variant type is String (VT_BSTR in C++) the vFile contains the name of a file.
  • If the variant type is Long (VT_I4 in C++) the long parameter specifies a memory handle.
  • If the variant type is variant type is Object (VT_UNKNOWN in C++) the pUnk parameter is a pointer to an IStream interface where the control will save the generated JPEG.
  • If the UseWindowDimensions is set to TRUE the JPEG image will have the dimensions of the control in the container. Otherwise the bitmap will have the dimensions specified by the Width and Height parameters. Do not set the UseWindowDimensions to TRUE if you're using the control in ASP, because the window dimensions are invalid.
  • The BitsPerPixel parameter specifies the bits used to encode each pixel. Nevron controls generate images independently from the current video setting or video adapter capabilities. Thus you may render a 24bpp on a system that supports only 8bpp. Best quality however is achieved if you synchronize the BitsPerPixel with the current video settings.

    Example:

    NevronControl.ImportExport.SaveJPEGImage(sFileName, FALSE, 200, 300, TRUE, 100, 0, 24) 'generate 24bpp, 200x300, quantized, not smoothed JPEG image


SavePNGImage

Name: SavePNGImage

Applies To: NImportExport

Parameters:

ByRef Variant vFile

Boolean UseWindowDimensions

None Width

None Height

Boolean Transparent

None BitsPerPixel

Return Value: Boolean

Remarks: Export a PNG image to a file, memory handle or storage. The target media is specified by the vFile parameter.

  • If the variant type is String (VT_BSTR in C++) the vFile contains the name of a file.
  • If the variant type is Long (VT_I4) the long parameter specifies a memory handle.
  • In the case when the variant type is VT_UNKNOWN the pUnk parameter is a pointer to an IStream interface where the control will save the generated PNG.
  • If the UseWindowDimensions is set to TRUE the PNG image will have the dimensions of the control in the container. Otherwise the PNG image will have the dimensions specified by the Width and Height parameters. Do not set the UseWindowDimensions to TRUE if you're using the control in ASP because the window dimensions are invalid. When the Transparent parameter is TRUE the control will render a PNG image with a transparent background. Note that the current versions of IE and Netscape do not support true color transparent PNGs (16bpp and 24bpp). However both Microsoft and Netscape have announced that they will support them in the future releases. IE has support for 8bpp tranparent PNGs.
  • The BitsPerPixel parameter specifies the bits used to encode each pixel. Nevron controls generate images independently from the current video settings or video adapter capabilities. Thus you may render a 24bpp on a system that supports only 8bpp. Best quality however is achieved if you synchronize the BitsPerPixel with the current video settings.

    Example:

    NevronControl.ImportExport.SavePNGImage(sFileName, FALSE, 500, 400, FALSE, 24) 'generate a 24bpp, 500x500, not transparent PNG image


SaveTargaImage

Name: SaveTargaImage

Applies To: NImportExport

Parameters:

ByRef Variant vFile

Boolean UseWindowDimensions

None Width

None Height

None BitsPerPixel

Return Value: Boolean

Remarks: Export a Targa image to a file, memory handle or storage. The target media is specified by the vFile parameter.

  • If the variant type is String (VT_BSTR) the vFile contains the name of a file.
  • In the case when the variant type is Long (VT_I4) the long parameter specifies a memory handle.
  • If the variant type is (VT_UNKNOWN the pUnk parameter is a pointer to an IStream interface where the control will save the generated Targa image.
  • If the UseWindowDimensions is set to TRUE the Targa image will have the dimensions of the control in the container. Otherwise the JPEG image will have the dimensions specified by the Width and Height parameters. Do not set the UseWindowDimensions to TRUE if you're using the control in ASP because the window dimensions are invalid.
  • The BitsPerPixel parameter specifies the bits used to encode each pixel. Nevron controls generate images independently from the current video setting or video adapter capabilities. Thus you may render a 24bpp on a system that supports only 8bpp. Best quality however is achieved if you synchronize the BitsPerPixel with the current video settings.

    Example:

    NChart1.ImportExport.SaveTargaImage(sFileName, FALSE, 300, 300, 24) 'generate a 24bpp, 300x300 Targa image


SaveTiffImage

Name: SaveTiffImage

Applies To: NImportExport

Parameters:

ByRef Variant vFile

Boolean UseWindowDimensions

None Width

None Height

None BitsPerPixel

Return Value: Boolean

Remarks: Export a TIFF image to a file. Memory and storage export is not supported for the TIFF file format, because it requires special file settings.

  • The vFile parameter must be of type String (VT_BSTR in C++) and contain a valid file name.
  • If the UseWindowDimensions is set to TRUE the TIFF image will have the dimensions of the control in the container. Otherwise the TIFF will have the dimensions specified by the Width and Height parameters. Do not set the UseWindowDimensions to TRUE if you're using the control in ASP because the window dimensions are invalid.
  • The BitsPerPixel parameter specifies the bits used to encode each pixel. Nevron controls generate images independently from the current video setting or video adapter capabilities. Thus you may render a 24bpp on a system that supports only 8bpp. Best quality however is achieved if you synchronize the BitsPerPixel with the current video settings.

    Example:

    NevronControl.ImportExport.SaveTiffImage(sFileName, FALSE, 400, 400, 24) 'generate a 24bpp, 400x400 TIFF image


ShowDialog

Name: ShowDialog

Applies To: NImportExport

Parameters: None

Return Value: Boolean

Remarks: Show the Import/Export dialog at runtime. The return value indicates whether the user pressed the Ok button.


MouseResponse

Name: MouseResponse

Applies To: NLabel

Parameters: None

Return Value: Object

Remarks: Gives you access to the NMouseResponse object applied on the label.

Example:

Label.MouseResponse.SetTooltip "This label has a custom tooltip"


OriginHorzAlign

Name: OriginHorzAlign

Applies To: NLabel

Type: HorizontalTextAlign

Remarks: Specifies how the OriginOffsetX is to be treated - as an offset from the control's left side (haLeft), the control's right side (haRigth) or the control's center (haCenter).

Example:

Label.OriginHorzAlign = haLeft


OriginOffsetX

Name: OriginOffsetX

Applies To: NLabel

Type: Single

Remarks: The horizontal offset of the label from the left side, the right side or the control's center.

Example:

position the label at 15% from the control left top corner.
Label.OriginHorzAlign = haLeft
Label.OriginVertAlign = vaTop
Label.OriginOffsetX = 15
Label.OriginOffsetY = 15


OriginOffsetY

Name: OriginOffsetY

Applies To: NLabel

Type: Single

Remarks: The vertical offset of the label from the top side, the bottom side or the control's center.

Example:

position the label at 15% from the control left top corner.
Label.OriginHorzAlign = haLeft
Label.OriginVertAlign = vaTop
Label.OriginOffsetX = 15
Label.OriginOffsetY = 15


OriginVertAlign

Name: OriginVertAlign

Applies To: NLabel

Type: VerticalTextAlign

Remarks: Specifies how the OriginOffsetY is to be treated - as an offset from the control's top side (vaTop), the control's right side (vaRight) or the control's center (vaCenter).

Example:

Label.OriginVertAlign = vaTop


Text

Name: Text

Applies To: NLabel

Type: String

Remarks: The text displayed by the label.

Example:

Label.Text = "This is a label"


TextEx

Name: TextEx

Applies To: NLabel

Parameters: None

Return Value: Object

Remarks: Gives you access to the NTextEx applied on the label's text.

Example:

Label.TextEx.FillEffect.SetSolidColor vbWhite


Add

Name: Add

Applies To: NLabelCollection

Parameters: None

Return Value: Object

Remarks: Adds a new label to the NLabelCollection.

Example:

Dim Label As NLabel
Set Label = NevronControl.LabelCollection.Add
Label.Text = "Label"


AddFooter

Name: AddFooter

Applies To: NLabelCollection

Parameters:

String Label

Return Value: Object

Remarks: Adds a footer to the label collection. The footer position is vertically offseted at 10% from the control bottom and horizontally centered.

Example:

Dim Label As NLabel
Set Label = NevronControl.LabelCollection.AddFooter("Footer")


AddHeader

Name: AddHeader

Applies To: NLabelCollection

Parameters:

String Label

Return Value: Object

Remarks: Adds a header to the label collection. The header position is vertically offseted at 10% from the control top and horizontally centered.

Example:

Dim Label As NLabel
Set Label = NevronControl.LabelCollection.AddHeader("Header")


GetAt

Name: GetAt

Applies To: NLabelCollection

Parameters:

Long Index

Return Value: Object

Remarks: Returns the NLabel object at Index position in the NLabelCollection. The index is zero based.

Example:

Dim Label As NLabel
Set Label = NevronControl.LabelCollection.GetAt(1) 'retrieve the second label


GetCount

Name: GetCount

Applies To: NLabelCollection

Parameters: None

Return Value: Long

Remarks: Returns the count of the labels in the NLabelCollection.

Example:

for i = 0 to NevronControl.LabelCollection.GetCount
' do something
next i


RemoveAll

Name: RemoveAll

Applies To: NLabelCollection

Parameters: None

Return Value: None

Remarks: Removes all the labels from the NLabelCollection collection.

Example:

NevronControl.LabelCollection.RemoveAll 'clear the collection


RemoveAt

Name: RemoveAt

Applies To: NLabelCollection

Parameters:

Long nIndex

Return Value: None

Remarks: Removes all the label at Index position in the NLabelCollection. The Index is zero based.

Example:

NevronControl.LabelCollection.RemoveAt 0 ' remove the first one


BaseFillEffect

Name: BaseFillEffect

Applies To: NLegend

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFillEffect object controlling the fill effect applied on the legend base.


BaseFrame

Name: BaseFrame

Applies To: NLegend

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFrameProperties object controlling the frame properties applied on the legend base.


ColCount

Name: ColCount

Applies To: NLegend

Type: Long

Remarks: This property indicates the maximum number of columns that the legend contains when operating in leColsFixed mode. The default value is 10. For more information see the LegendExpand property.


HasBase

Name: HasBase

Applies To: NLegend

Type: Long

Remarks: Indicates whether the chart control should display the legend base. The initial value is TRUE. Note that when you set this property to FALSE the legend shadow is also not displayed.


HasShadow

Name: HasShadow

Applies To: NLegend

Type: Long

Remarks: Indicates whether the chart control should display the legend shadow. The initial value is TRUE.


InflateCellHeight

Name: InflateCellHeight

Applies To: NLegend

Type: Long

Remarks: Modify this property if you want to increase the height of the legend item cells. The default value is 10 pixels.


InflateCellWidth

Name: InflateCellWidth

Applies To: NLegend

Type: Long

Remarks: Modify this property if you want to increase the width of the legend item cells. The default value is 15 pixels.


LegendDataCollection

Name: LegendDataCollection

Applies To: NLegend

Parameters: None

Return Value: Object

Remarks: Gives you access to the NLegendDataCollection object which stores legend data when the legend is operating in lmManual mode.


LegendExpand

Name: LegendExpand

Applies To: NLegend

Type: LegendExpand

Remarks: Specifies the expand strategy that the legend uses when new data is added. Possible values are

  • leRowsOnly
  • leColsOnly
  • leRowsFixed
  • leColsFixed
    The initial value for this property is leRowsOnly, which indicates that the legend expands only by adding new rows and there is only one column. The reverse case is leColsOnly when there is only one row and the legend expands by adding new columns. In leRowsFixed the legend expands by adding new rows until it reaches the value RowCount (which is initially 10) and then adds a new column. The leColsFixed mode operates in a similar way except that the legend expands by adding new cols. The expand strategy does not change when you change the legend mode.


LegendMode

Name: LegendMode

Applies To: NLegend

Type: LegendMode

Remarks: Configures the mode in which the legend operates. Possible values are:

  • lmDisabled
  • lmAutomatic
  • lmManual
    The default value is lmAutomatic. In this mode the legend displays data that is supplied by the presentation groups. If you want to manually pass data to the legend you should switch the mode to lmManual and use the NLegendDataCollection object.


LegendPlacement

Name: LegendPlacement

Applies To: NLegend

Type: LegendPlacement

Remarks: Controls the position of the legend in the control’s window. The possible values are: lpBottom - the legend will be aligned to the control bottom. The legend’s offset is controlled by the MarginY property. lpCorner - the legend will be aligned to the control right and top sides. The legend’s offset is controlled by the MarginX, MarginY property. lpTop - the same as lpBottom except that alignment is made to the control top. lpRight - the legend will be aligned to the control right. The legend’s offset is controlled by the MarginX property. lpLeft - the same as lpRight except that alignment is made to the control left. lpManual - the legend position is determined by the PositionX and PositionY properties.


MarginX

Name: MarginX

Applies To: NLegend

Type: Single

Remarks: The offset of the legend from the control window when the LegendPlacement is lpCorner, lpRight or lpLeft. The default value is 5.


MarginY

Name: MarginY

Applies To: NLegend

Type: Single

Remarks: The offset of the legend from the control window when the LegendPlacement is lpCorner, lpBottom or lpTop. The default value is 5.


MarkSize

Name: MarkSize

Applies To: NLegend

Type: Long

Remarks: The size of the legend item marks in pixels. The initial value is 10.


MouseResponse

Name: MouseResponse

Applies To: NLegend

Parameters: None

Return Value: Object

Remarks: Gives you access to the NMouseResponse object controlling the mouse action performed over the legend base and shadow.


PositionX

Name: PositionX

Applies To: NLegend

Type: Single

Remarks: The position of the legend along the X axis when the LegendPlacement is lpManual. The default value is 0.


PositionY

Name: PositionY

Applies To: NLegend

Type: Single

Remarks: The position of the legend along the Y axis when the LegendPlacement is lpManual. The default value is 0.


RowCount

Name: RowCount

Applies To: NLegend

Type: Long

Remarks: This property indicates the maximum number of rows that the legend contains when operating in leRowsFixed mode. The default value is 10. For more information see the LegendExpand property


ShadowFillEffect

Name: ShadowFillEffect

Applies To: NLegend

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFillEffect object controlling the fill effect applied on the legend shadow.


ShadowFrame

Name: ShadowFrame

Applies To: NLegend

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFrameProperties object controlling the frame properties applied on the legend shadow.


ShadowOffsetX

Name: ShadowOffsetX

Applies To: NLegend

Type: Long

Remarks: The X offset of the legend shadow from the legend base in pixels. The default value is 5.


ShadowOffsetY

Name: ShadowOffsetY

Applies To: NLegend

Type: Long

Remarks: The Y offset of the legend shadow from the legend base in pixels. The default value is 5.


Text

Name: Text

Applies To: NLegend

Parameters: None

Return Value: Object

Remarks: Gives you access to the NText object controlling the text properties of the legend items texts.


TextOffset

Name: TextOffset

Applies To: NLegend

Type: Long

Remarks: The offset of the texts from the legend mark in pixels. The default value is 5.


LineProperties

Name: LineProperties

Applies To: NLegendData

Parameters: None

Return Value: Object

Remarks: The NLineProperties applied on the line that is drawn across the legend mark. Initially this property is disabled and no line is displayed, but you may consider adding a line for example if you a displaying information related with a line present group. In such cases you may even turn off the mark (by setting the MarkShape property to lmsNone) and use only the LineProperties.


MarkFillEffect

Name: MarkFillEffect

Applies To: NLegendData

Parameters: None

Return Value: Object

Remarks: Gives you access to the fill effect applied on the legend data item.

Example:

data.MarkFillEffect.SetSolidColor vbYellow


MarkLineProperties

Name: MarkLineProperties

Applies To: NLegendData

Parameters: None

Return Value: Object

Remarks: Gives you access to the line properties applied on the legend data item border.

Example:

data.MarkLineProperties.Width = 2


MarkShape

Name: MarkShape

Applies To: NLegendData

Type: LegendMarkShape

Remarks: Controls the shape of the legend data item mark. Valid values are:

  • lmsNone
  • lmsRectangle
  • lmsCircle
  • lmsDiamond
  • lmsTriangle
  • lmsInvertedTriangle

    Example:

    data.MarkShape = lmsRectangle


MouseResponse

Name: MouseResponse

Applies To: NLegendData

Parameters: None

Return Value: Object

Remarks: The MouseResponse object connected with this legend item. The MouseResponse object is used to describe interactive client side information connected with this legend item.


Text

Name: Text

Applies To: NLegendData

Type: String

Remarks: Specifies the text displayed by the legend data item.

Example:

data.Text = "Item 1"


Add

Name: Add

Applies To: NLegendDataCollection

Parameters: None

Return Value: Object

Remarks: Adds a new legend data item and returns the newly created object.

Example:

Dim data As NLegendData
Set data = NChart1.Legend.LegendDataCollection.Add()


GetAt

Name: GetAt

Applies To: NLegendDataCollection

Parameters:

Long nIndex

Return Value: Object

Remarks: Returns the object at the specified index.

Example:

Dim data As NLegendData
Set data = NChart1.Legend.LegendDataCollection.GetAt(0)


GetCount

Name: GetCount

Applies To: NLegendDataCollection

Parameters: None

Return Value: Long

Remarks: Returns the count of object in the collection.

Example:

objcount = NChart1.Legend.LegendDataCollection.GetCount()


RemoveAll

Name: RemoveAll

Applies To: NLegendDataCollection

Parameters: None

Return Value: None

Remarks: Removes all legend data items in the collection.

Example:

NChart1.Legend.LegendDataCollection.RemoveAll


RemoveAt

Name: RemoveAt

Applies To: NLegendDataCollection

Parameters:

Long nIndex

Return Value: None

Remarks: Removes the legend data item at the given index.

Example:

NChart1.Legend.LegendDataCollection.RemoveAt 0


EnableLighting

Name: EnableLighting

Applies To: NLightModel

Type: Boolean

Remarks: Turns on and off the lightning. When turned off all lighting properties (lights sources and materials) are discarded and have no effect on the rendered scene. The default value is FALSE.

Example:

NevronContro.LightModel.EnableLighting = TRUE 'enable lighting


GlobalAmbientLight

Name: GlobalAmbientLight

Applies To: NLightModel

Type: OLE_COLOR

Remarks: Specifies the ambient color that is global for the whole scene. This property takes effect only when lighting is enabled.

Example:

NevronContro.LightModel.EnableLighting = TRUE
NevronContro.LightModel.GlobalAmbientLight = RGB(50, 50, 50)


LocalViewpointLighting

Name: LocalViewpointLighting

Applies To: NLightModel

Type: Boolean

Remarks: Controls the way OpenGL calculates specular reflection angles. You can turn this property to TRUE if you want to achieve a more realistic lighting. Note that turning on this property will decrease the control's performance. The default value is FALSE.

Example:

NevronContro.LightModel.LocalViewpointLighting = TRUE


SetLightScheme

Name: SetLightScheme

Applies To: NLightModel

Parameters:

LightScheme nLightScheme

Return Value: None

Remarks: Configures the object to use a predefined light scheme. The possible values are:

  • lsStandardWhite
  • lsStandardRed
  • lsStandardGreen
  • lsStandardBlue
  • lsSpotWhite
  • lsSpotRed
  • lsSpotGreen
  • lsSpotBlue
  • lsArena
    After loading the predefined schene you can modify the light's parameters to customize the lighting effect. For a basic impression of the lighting schemes you can press the Load Predefined button in the lights property page. It will show the Predefined light schemes dialog which displays a preview of each of the light schemes.

    Example:

    NevronContro.LightModel.SetLightScheme lsStandardWhite 'load standard white light


AmbientColor

Name: AmbientColor

Applies To: NLightSource

Type: OLE_COLOR

Remarks: The RGB value of the ambient color emitted by this light source. The ambient color of the individual light sources is added to the global ambient color in the scene. In general adding ambient light makes the scene brighter.

Example:

LightSource.AmbientColor = RGB(25, 25, 25) ' add some ambient light to the 3D scene


ConstantAttenuation

Name: ConstantAttenuation

Applies To: NLightSource

Type: Single

Remarks: Specifies the constant attenuation factor for this light. For more information see the "OpenGL lighting model" topic in the User's Guide.


DiffuseColor

Name: DiffuseColor

Applies To: NLightSource

Type: OLE_COLOR

Remarks: The RGB value of the diffuse color emitted by this light source. Diffuse light comes from a particular direction so it is brighter if it comes squarely down on a surface than if it barely glances off the surface, but once it hits the surface however it is scattered equally in all directions.

Example:

LightSource.DiffuseColor = RGB(255, 255, 255) ' set the diffuse color to white


DirectionX

Name: DirectionX

Applies To: NLightSource

Type: Single

Remarks: Specifies the X value of the light direction vector. Note that property will take effect only if you are using a directed light source. To switch from a undirected to a directed light source you must specify a spot cutoff angle.

Example:

The following example configures a directed light source.
            LightSource.SpotCutoff = 45
LightSource.PositionX = 0
LightSource.PositionY = 0
LightSource.PositionZ = 3
LightSource.DirectionX = 0
LightSource.DirectionY = 0
LightSource.DirectionZ = -1


DirectionY

Name: DirectionY

Applies To: NLightSource

Type: Single

Remarks: Specifies the Y value of the light direction vector. Note that property will take effect only if you are using a directed light source. To switch from a undirected to a directed light source you must specify a spot cutoff angle.

Example:

The following example configures a directed light source.
            LightSource.SpotCutoff = 45
LightSource.PositionX = 0
LightSource.PositionY = 0
LightSource.PositionZ = 3
LightSource.DirectionX = 0
LightSource.DirectionY = 0
LightSource.DirectionZ = -1


DirectionZ

Name: DirectionZ

Applies To: NLightSource

Type: Single

Remarks: Specifies the Z value of the light direction vector. Note that property will take effect only if you are using a directed light source. To switch from a undirected to a directed light source you must specify a spot cutoff angle.

Example:

The following example configures a directed light source.
            LightSource.SpotCutoff = 45
LightSource.PositionX = 0
LightSource.PositionY = 0
LightSource.PositionZ = 3
LightSource.DirectionX = 0
LightSource.DirectionY = 0
LightSource.DirectionZ = -1


LinearAttenuation

Name: LinearAttenuation

Applies To: NLightSource

Type: Single

Remarks: Specifies the linear attenuation factor for this light. For more information see the "OpenGL lighting model" topic in the User's Guide.


Name

Name: Name

Applies To: NLightSource

Type: String

Remarks: The name of this light source. This name is supplied only for your convenience should you decide to give human readable name to your NLightSource object. It does not impact the light source parameters in any way.

Example:

LightSource.Name = "The SUN" 'set some Name


PositionX

Name: PositionX

Applies To: NLightSource

Type: Single

Remarks: Specifies the X value of the light position vector.

Example:

LightSource.PositionX = LightSource.PositionX + 2 ' move the light along the X axis


PositionY

Name: PositionY

Applies To: NLightSource

Type: Single

Remarks: Specifies the Y value of the light position vector.

Example:

LightSource.PositionY = LightSource.PositionY + 2 ' move the light along the Y axis


PositionZ

Name: PositionZ

Applies To: NLightSource

Type: Single

Remarks: Specifies the Z value of the light position vector.

Example:

LightSource.PositionZ = LightSource.PositionZ + 2 ' move the light along the Z axis


QuadraticAttenuation

Name: QuadraticAttenuation

Applies To: NLightSource

Type: Single

Remarks: Specifies the quadratic attenuation factor for this light. For more information see the "OpenGL lighting model" topic in the User's Guide.


SpecularColor

Name: SpecularColor

Applies To: NLightSource

Type: OLE_COLOR

Remarks: The RGB value of the specular color emitted by this light source. Unlike ambient light, specular light comes from a particular direction and bounces off the surfaces in the 3D scene in a preferred direction.

Example:

LightSource.SpecularColor = RGB(255, 255, 255) ' set the specular color to white


SpotCutoff

Name: SpotCutoff

Applies To: NLightSource

Type: Single

Remarks: The spot cutoff angle is the maximum value of the angle between the vector defined from the light position and the light direction and the vector defined from the light position and the object. If the value of this angle is bigger than the SpotCutoff the light becomes completely masked. With the help of this property you can achieve directed lights. For example a regular torch has a SpotCuttoff angle of around 45 degrees. When this property is set to 180.0 the light source is considered non-directional and emitting in all directions. If you set the SpotCutoff angle in the range of [0, 90] you specify that it is emitting light in the direction specified by the direction properties. All values not equal to 180 and not in the range of [0, 90] are automatically clamped to the range [0, 90].

Example:

LightSource.SpotCutoff = 80 'make the light directed.


SpotExponent

Name: SpotExponent

Applies To: NLightSource

Type: Single

Remarks: Specifies the intensity distribution of the light.. All values are automatically clamped in the range [0,128]. Effective light intensity is attenuated by the cosine of the angle between the direction of the light and the direction from the light to the vertex being lighted, raised to the power of the spot exponent. Thus, higher spot exponents result in a more focused light source. The default spot exponent is 0, resulting in uniform light distribution.


Add

Name: Add

Applies To: NLightSourceCollection

Parameters:

String Label

Return Value: Object

Remarks: Add a light to the NLightSourceCollection. Have in mind that the light will influence the 3D scene only if lighting is enabled - see the NLightModel object for more information on how to enable lighting.

Example:

This example demonstrates how you can use the NLightSourceCollection and NLightSource objects to add a light to the 3D scene:
Dim LightSource As NLightSource

NChart1.LightModel.EnableLighting = True
Set LightSource = NevronControl.LightSourceCollection.Add("Test light")
LightSource.PositionX = 0
LightSource.PositionY = 0
LightSource.PositionZ = 2

LightSource.AmbientColor = RGB(55, 55, 55)
LightSource.DiffuseColor = RGB(255, 255, 255)
LightSource.SpecularColor = RGB(255, 255, 255)


GetAt

Name: GetAt

Applies To: NLightSourceCollection

Parameters:

Long Index

Return Value: Object

Remarks: Gives you access to the light source at the specified index. Note that the collection index in zero based.

Example:

Dim LightSource As NLightSource
Set LightSource = NevronControl.LightSourceCollection.GetAt(0)
LightSource.SpecularColor = vbYellow
'modify some of the light's parameters


GetCount

Name: GetCount

Applies To: NLightSourceCollection

Parameters: None

Return Value: Long

Remarks: Returns the count the light sources in the collection. The maximum count of the light sources is limited to eight.

Example:

MsgBox "There are " + CStr(NevronControl.LightSourceCollection.GetCount) + " light sources in the scene" 'show the number of light sources


RemoveAll

Name: RemoveAll

Applies To: NLightSourceCollection

Parameters: None

Return Value: None

Remarks: Removes all light sources in the collection.

Example:

NevronControl.LightSourceCollection.RemoveAll 'clear the collection


RemoveAt

Name: RemoveAt

Applies To: NLightSourceCollection

Parameters:

Long Index

Return Value: None

Remarks: Removes the light source at the specified index.

Example:

NevronControl.LightSourceCollection.RemoveAt 0 'remove the first light source


Common

Name: Common

Applies To: NLinePresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = line.Common()


HasValuePoints

Name: HasValuePoints

Applies To: NLinePresentGroup

Type: Boolean

Remarks: Controls the visibility of the value data points marks.

Example:

line.HasValuePoints = True 'show the value point marks


LineStyle

Name: LineStyle

Applies To: NLinePresentGroup

Type: LinePresentStyle

Remarks: Controls the style of the lines. Valid values are:

  • lpsTube - the line segments are displayed as cylineders
  • lpsTape - the line segments are displayed as rectangles
  • lpsLine - the line segments are displayed as simple lines

    Example:

    line.LineStyle = lpsTube ' the line is displayed as a tube


LineWidth

Name: LineWidth

Applies To: NLinePresentGroup

Type: Single

Remarks: Controls the width of the line in OpenGL units when LineStyle is lpsTube or lpsTape.

Example:

line.LineWidth = 0.10 'the line width is 0.10 OpenGL units


PointSize

Name: PointSize

Applies To: NLinePresentGroup

Type: Single

Remarks: Controls the size of the data points in OpenGL units.

Example:

line.PointSize = 0.20


PointStyle

Name: PointStyle

Applies To: NLinePresentGroup

Type: PointStyle

Remarks: Controls the style of the data points. Valid values are:

  • psBar
  • psCylinder
  • psCone
  • psInvertedCone
  • psPyramid
  • psInvertedPyramid
  • psSphere
  • psCircle
  • psDiamond

    Example:

    line.PointStyle = psCone 'change the point style to cone


UseXValue

Name: UseXValue

Applies To: NLinePresentGroup

Type: Boolean

Remarks: Use Value2 as X coordinate of the data point. This property helps you create date time trends. You need to manually switch the categories axis in value, date time or logarithmic scale mode.

Example:

line.UseXValue = True


Color

Name: Color

Applies To: NLineProperties

Type: OLE_COLOR

Remarks: Controls the line color.

Example:

LineProperties.Color = vbWhite 'set the line's color to white


EnableLines

Name: EnableLines

Applies To: NLineProperties

Type: Boolean

Remarks: Enables the line (also called border) properties for the object.

Example:

LineProperties.EnableLines = TRUE


ShowDialog

Name: ShowDialog

Applies To: NLineProperties

Parameters: None

Return Value: Long

Remarks: Shows the Line properties dialog at runtime. The function returns TRUE if the user pressed the Ok button.

Example:

NLineProperties.ShowDialog 'show the dialog properties


Style

Name: Style

Applies To: NLineProperties

Type: LineStyle

Remarks: Controls the Style of the line properties. It can be lsSolid, lsDash, lsDot, lsDashDot or lsDashDotDot. The default value is lsSolid.

Example:

LineProperties.Style = lsDash ' change the style to dash


Width

Name: Width

Applies To: NLineProperties

Type: Long

Remarks: Controls the width of the lines in pixels. The default value is 1.

Example:

LineProperties.Width = 2 ' increase the width of the lines


AmbientColor

Name: AmbientColor

Applies To: NMaterial

Type: OLE_COLOR

Remarks: Specifies the ambient color of the object.

Example:

Material.AmbientColor = vbRed


DiffuseColor

Name: DiffuseColor

Applies To: NMaterial

Type: OLE_COLOR

Remarks: Specifies the diffuse color of the object.

Example:

Material.DiffuseColor = vbRed


EmissiveColor

Name: EmissiveColor

Applies To: NMaterial

Type: OLE_COLOR

Remarks: Specifies the emissive color of the object..

Example:

Material.EmissiveColor = vbRed 'the object will emit red light


SetAllColors

Name: SetAllColors

Applies To: NMaterial

Parameters:

OLE_COLOR Color

Return Value: None

Remarks: Modifies all the colors of the material (e.g. the ambient, the diffuse, the specular and the emissive color) simultaneously.

Example:

Material.SetAllColors vbWhite 'set the ambient, diffuse and specular colors to white


SetAmbientDiffuseColor

Name: SetAmbientDiffuseColor

Applies To: NMaterial

Parameters:

OLE_COLOR Color

Return Value: None

Remarks: Modifies the ambient and the diffuse color simultaneously.

Example:

Material.SetAmbientDiffuseColor vbWhite 'set the ambient and diffuse colors to white


Shininess

Name: Shininess

Applies To: NMaterial

Type: Single

Remarks: Controls the shininess of the material.


ShowDialog

Name: ShowDialog

Applies To: NMaterial

Parameters: None

Return Value: Long

Remarks: Shows the Material properties dialog at runtime. The return value indicates whether the user clicked the Ok button.

Example:

Material.ShowDialog 'show the material properties


SpecularColor

Name: SpecularColor

Applies To: NMaterial

Type: OLE_COLOR

Remarks: Specifies the specular color of the object.

Example:

Material.SpecularColor = vbRed


Flags

Name: Flags

Applies To: NMouseResponse

Type: Long

Remarks: The Flags property can be any combination of the BrowserNavigate flags. It specifies whether to add the URL to the history list, whether to read to or write from the cache, and whether to display the URL in a new window. For example if you use the bnOpenInNewWindow flag the browser will open the URL in a new window. The value of this property can be any combination of the bnOpenInNewWindow, bnNoHistory, bnNoReadFromCache, bnNoWriteToCache, bnAllowAutosearch or bnBrowserBar values.

Example:

MouseResponse.Flags = bnOpenInNewWindow 'open in new window


Headers

Name: Headers

Applies To: NMouseResponse

Type: String

Remarks: Specifies the HTTP headers to send to the server. These headers are added to the default Internet Explorer headers. The headers can specify things like the action required of the server, the type of data being passed to the server, or a status code. This parameter is ignored if URL is not an HTTP URL.


PostData

Name: PostData

Applies To: NMouseResponse

Type: String

Remarks: A string to be send as HTTP POST transaction with the URL. For example, the POST transaction is used to send data gathered by an HTML form. If this parameter does not specify any post data, the browser will issue an HTTP GET transaction. This parameter is ignored if URL is not an HTTP URL.


SetTooltip

Name: SetTooltip

Applies To: NMouseResponse

Parameters:

String Value

Return Value: None

Remarks: Use this function to assign a custom tooltip to the NMouseResponse. Calling SetTooltip is equivalent to setting the UseCustomTooltip to TRUE and setting the Tooltip property to the value passed as a parameter to the SetTooltip function.

Example:

MouseResponse.UseCustomTooltip = TRUE 'enable custom tooltips
MouseResponse.CustomTooltip = "Some tooltip" 'set the custom tooltip to some value
is equivalent to:
NMouseResponse.SetTooltip "Some tooltip"


ShowDialog

Name: ShowDialog

Applies To: NMouseResponse

Parameters:

ByRef Boolean pbResult

Return Value: None

Remarks: Show the NMouseResponse properties dialog at runtime. The returned value indicates whether the user clicked the Ok button.

Example:

MouseResponse.ShowDialog


TargetFrameName

Name: TargetFrameName

Applies To: NMouseResponse

Type: String

Remarks: The name of the frame in which to display the URL.


Tooltip

Name: Tooltip

Applies To: NMouseResponse

Type: String

Remarks: Specifies the custom tooltip that will be used instead of the default one if UseCustomTooltip is TRUE.

Example:

MouseResponse.UseCustomTooltip = TRUE 'enable custom tooltips
MouseResponse.CustomTooltip = "My custom tooltip" 'set the custom tooltip to some value


URL

Name: URL

Applies To: NMouseResponse

Type: String

Remarks: The URL that the client control will use to navigate the browser. You can assign both relative and absolute URL paths to this property.

Example:

MouseResponse.URL = "SomeASPPage.asp" 'directs the browser to navigate to a relative URL
MouseResponse.URL = "http://www.microsoft.com" 'jump to Microsoft


UseCustomTooltip

Name: UseCustomTooltip

Applies To: NMouseResponse

Type: Boolean

Remarks: Specifies whether the control must use the custom tooltip or not.

Example:

MouseResponse.UseCustomTooltip = TRUE 'enable custom tooltips
MouseResponse.CustomTooltip = "My custom tooltip" 'set the custom tooltip to some value


Alt

Name: Alt

Applies To: NMouseState

Type: Boolean

Remarks: Indicates that the one of the alt keys was pressed.


Control

Name: Control

Applies To: NMouseState

Type: Boolean

Remarks: Indicates that the one of the control keys was pressed.


HWND

Name: HWND

Applies To: NMouseState

Type: Long

Remarks: The windows handle of the control’s window.


LeftAlt

Name: LeftAlt

Applies To: NMouseState

Type: Boolean

Remarks: Indicates that the left alt key was pressed.


LeftControl

Name: LeftControl

Applies To: NMouseState

Type: Boolean

Remarks: Indicates that the left control key was pressed.


LeftShift

Name: LeftShift

Applies To: NMouseState

Type: Boolean

Remarks: Indicates that the left shift key was pressed.


MouseAction

Name: MouseAction

Applies To: NMouseState

Type: MouseAction

Remarks: Indicates the mouse event that generated this mouse state. The possible values are maLButtonClick, maLButtonDoubleClick, maRButtonClick, maRButtonDoubleClick, maMouseMove.


MouseX

Name: MouseX

Applies To: NMouseState

Type: Long

Remarks: The x mouse position in the control’s window when the event was generated.


MouseY

Name: MouseY

Applies To: NMouseState

Type: Long

Remarks: The y mouse position in the control’s window when the event was generated.


RightAlt

Name: RightAlt

Applies To: NMouseState

Type: Boolean

Remarks: Indicates that the right alt key was pressed.


RightControl

Name: RightControl

Applies To: NMouseState

Type: Boolean

Remarks: Indicates that the right control key was pressed.


RightShift

Name: RightShift

Applies To: NMouseState

Type: Boolean

Remarks: Indicates that the right shift key was pressed.


Shift

Name: Shift

Applies To: NMouseState

Type: Boolean

Remarks: Indicates that the one of the shift keys was pressed.


BeginAngle

Name: BeginAngle

Applies To: NPiePresentGroup

Type: Long

Remarks: Controls the begin angle of the pie segments.

Example:

pie.BeginAngle = 40


Common

Name: Common

Applies To: NPiePresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = pie.Common()


Depth

Name: Depth

Applies To: NPiePresentGroup

Type: Single

Remarks: Controls the depth of the pie segments.

Example:

pie.Depth = 0.20


PieEdgePercent

Name: PieEdgePercent

Applies To: NPiePresentGroup

Type: Long

Remarks: Controls the edge percent of the pie in percent of the pie depth. Valid when PieStyle is psSmoothEdgePie.

Example:

pie.PieEdgePercent = 40


PieStyle

Name: PieStyle

Applies To: NPiePresentGroup

Type: PieStyle

Remarks: Controls the shape of the pie segments. Valid values are:

  • psPie
  • psTorus
  • psSmoothEdgePie

    Example:

    pie.PieStyle = psSmoothEdgePie


Radius

Name: Radius

Applies To: NPiePresentGroup

Type: Single

Remarks: Controls the radius of the pie segments.

Example:

pie.Radius = 0.50


Common

Name: Common

Applies To: NPointPresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = PointGroup.Common()


PointStyle

Name: PointStyle

Applies To: NPointPresentGroup

Type: PointStyle

Remarks: Controls the point style. Valid values are:

  • psBar
  • psCylinder
  • psCone
  • psInvertedCone
  • psPyramid
  • psInvertedPyramid
  • psSphere
  • psCircle
  • psDiamond

    Example:

    point.PointStyle = psInvertedCone


Size

Name: Size

Applies To: NPointPresentGroup

Type: Single

Remarks: Controls the size of the value point marks.

Example:

point.Size = 0.20


UseXValue

Name: UseXValue

Applies To: NPointPresentGroup

Type: Boolean

Remarks: Specifies whether to use Value2 as X coordinate of the data point. You must manually switch the categories axis in value, datetime or logarithm scale mode.

Example:

point.UseXValue = True
NChart1.Axes(atCategoriesAxis).ScaleMode = asmValue


UseYValue

Name: UseYValue

Applies To: NPointPresentGroup

Type: Boolean

Remarks: Specifies whether to use Value3 as Y coordinate of the data point. You must manually switch the series axis in value, datetime or logarithm scale mode.

Example:

point.UseXValue = True
NChart1.Axes(atSeriesAxis).ScaleMode = asmValue


AngleStep

Name: AngleStep

Applies To: NPolarPresentGroup

Type: None

Remarks: Specifies the step of the polar radian lines.

Example:

polar.AngleStep = 15 ' radian line on 15 degrees


BeginAngle

Name: BeginAngle

Applies To: NPolarPresentGroup

Type: None

Remarks: Specifies the begin angle of the polar radian lines.

Example:

polar.BeginAngle = 30 'radian lines begin from 30 degrees


Common

Name: Common

Applies To: NPolarPresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = bar.Common()


HasValuePoints

Name: HasValuePoints

Applies To: NPolarPresentGroup

Type: Boolean

Remarks: Controls the visibility of the data point marks.

Example:

polar.HasValuePoints = True 'show data point marks


LabelFormat

Name: LabelFormat

Applies To: NPolarPresentGroup

Type: String

Remarks: Specifies the radian label format. Labels represent the radian line angle and can be formatted in degrees (%D(decimal_precision) format command) or radians (%R(decimal_precision) format command). See the Formatting Commands topic for more information.

Example:

polar.LabelFormat = "%R(2)" labels show radian values with 2 decimal points


LabelOffset

Name: LabelOffset

Applies To: NPolarPresentGroup

Type: Single

Remarks: Detaches the radian labels from the radian lines end.

Example:

polar.LabelOffset = 0.15 ' labels are 0.15 OpenGL units away from radian line end


LabelTextEx

Name: LabelTextEx

Applies To: NPolarPresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NTextEx object controlling the appearance of the label texts.

Example:

Dim labeltext As NTextEx
Set labeltext = polar.LabelTextEx()


PointSize

Name: PointSize

Applies To: NPolarPresentGroup

Type: Single

Remarks: Controls the size of the data points in OpenGL units.

Example:

polar.PointSize = 0.20


PointStyle

Name: PointStyle

Applies To: NPolarPresentGroup

Type: PointStyle

Remarks: Controls the style of the data point marks. Valid values are:

  • psBar
  • psCylinder
  • psCone
  • psInvertedCone
  • psPyramid
  • psInvertedPyramid
  • psSphere
  • psCircle
  • psDiamond

    Example:

    polar.PointStyle = psSphere ' data points are displayed as spheres


XRadius

Name: XRadius

Applies To: NPolarPresentGroup

Type: Single

Remarks: Controls the X radius of the polar in OpenGL units. By default 1.5.

Example:

polar.XRadius = 1


YRadius

Name: YRadius

Applies To: NPolarPresentGroup

Type: Single

Remarks: Controls the Y radius of the polar in OpenGL units. By default 1.5.

Example:

polar.YRadius = 1


Add

Name: Add

Applies To: NPresentGroupCollection

Parameters:

PresentGroupType Type

Return Value: Object

Remarks: Add a new presentation group to the collection and return the newly created presentation group object. Currently the 3DChart component supports the following presentation groups (charting types):

  • pgtBar
  • pgtStackBar
  • pgtLine
  • pgtStackLine
  • pgtArea
  • pgtStackArea
  • pgtSurface
  • pgtPoint
  • pgtBubble
  • pgtStock
  • pgtFloatBar
  • pgtPie
  • pgtRadar
  • pgtPolar
  • pgtShmoo In Visual Basic you must explicitly cast the returned object to the type you have created as shown in the example.

    Example:

    Dim bar As NBarPresentGroup
    Set bar = NChart1.PresentGroups.Add(pgtBar)


GetAt

Name: GetAt

Applies To: NPresentGroupCollection

Parameters:

Long nIndex

Return Value: Object

Remarks: Returns the presentation group at the specified index. You must explicitly cast the returned object to the proper presentation group type. You can query about the presentation group type at the specified index with the help of the GetTypeAt method of the NPresentGroupCollection.

Example:

Dim bar As NBarPresentGroup
Set bar = NChart1.PresentGroups.GetAt(0)


GetCommonAt

Name: GetCommonAt

Applies To: NPresentGroupCollection

Parameters:

Long nIndex

Return Value: Object

Remarks: Returns the NPresentGroupCommon object of the presentation group at index nIndex. This method is helpful you want to gain access to the common presentation group properties and avoid any explicit type casting.

Example:

Dim common As NPresentGroupCommon Set common = NChart1.PresentGroups.GetCommonAt(0)


GetCount

Name: GetCount

Applies To: NPresentGroupCollection

Parameters: None

Return Value: Long

Remarks: Returns the number of items in the collection.

Example:

PresGroupCount = NChart1.PresentGroups.GetCount()


GetTypeAt

Name: GetTypeAt

Applies To: NPresentGroupCollection

Parameters:

Long nIndex

Return Value: PresentGroupType

Remarks: Query about the type of the group at the given index. This method is used if you don't know the type of the presentation group at the specified index but you want to cast to the proper type.

Example:

Dim bar As NBarPresentGroup
Dim area As NAreaPresentGroup
If NChart1.PresentGroups.GetTypeAt(0) = pgtBar Then
Set bar = NChart1.PresentGroups.GetAt(0)
ElseIf NChart1.PresentGroups.GetTypeAt(0) = pgtArea Then
Set area = NChart1.PresentGroups.GetAt(0)
End If


RemoveAll

Name: RemoveAll

Applies To: NPresentGroupCollection

Parameters: None

Return Value: None

Remarks: Removes all presentation groups in the collection

Example:

NChart1.PresentGroups.RemoveAll


RemoveAt

Name: RemoveAt

Applies To: NPresentGroupCollection

Parameters:

Long nIndex

Return Value: None

Remarks: Removes the presentation group at the given index.

Example:

NChart1.PresentGroups.RemoveAt 0


ArrowLength

Name: ArrowLength

Applies To: NPresentGroupCommon

Type: Single

Remarks: Controls the length of the arrow connecting the data point and the text label.

Example:

group.Common.ArrowLength = 0.15 'texts are now 0.15 OpenGL units away from the data point


ArrowLine

Name: ArrowLine

Applies To: NPresentGroupCommon

Parameters: None

Return Value: Object

Remarks: Gives you access to the NLineProperties object controlling the appearance of the texts arrow line.

Example:

group.Common.ArrowLine.Color = vbRed 'arrow line is now red


CanDraw

Name: CanDraw

Applies To: NPresentGroupCommon

Parameters: None

Return Value: Boolean

Remarks: Query whether the group can be displayed. Possible reasons for failure are:

  • the current data type of the data storage is not compatible with the requested data type from the presentation group.
  • the presentation group has not been assigned to any of the six chart walls

    Example:

    bCanDraw = group.Common.CanDraw()


DisplayOnAxis

Name: DisplayOnAxis

Applies To: NPresentGroupCommon

Parameters:

AxisType Axis

Boolean bDisplay

Return Value: None

Remarks: Instruct the chart to scale or not the presentation group on the specified axis. If the presentation group is not displayed on any of the chart axes it is not displayed at all and the CanDraw method returns False. By default all presentation groups are displayed on the left chart axis.

Example:

group.Common.DisplayOnAxis atRightAxis, True 'scale the group on the right axis


EnableUniformAppearance

Name: EnableUniformAppearance

Applies To: NPresentGroupCommon

Type: Boolean

Remarks: Enables or disables the uniform appearances of the presentation group. See the Uniform Appearances topic for more information.

Example:

group.Common.EnableUniformAppearance = True 'enable uniform appearances for this presentation group


FormatString

Name: FormatString

Applies To: NPresentGroupCommon

Type: String

Remarks: The format string used for the data point texts. See the Formatting Commands for more information.

Example:

group.Common.FormatString = "%1(1,TRUE,1)" 'value1 formatted with 1 decimal and commas on the thousands


HasTexts

Name: HasTexts

Applies To: NPresentGroupCommon

Type: Boolean

Remarks: Controls the visibility of the texts shown on the data points.

Example:

group.Common.HasTexts = True


InflateMargins

Name: InflateMargins

Applies To: NPresentGroupCommon

Type: Boolean

Remarks: Inflates the margins of the presentation group to fit the chart area. This can be very useful if your presentation group has value data points that go outside the chart area.

Example:

group.Common.InflateMargins = True 'fit in chart area


IsDisplayedOnAxis

Name: IsDisplayedOnAxis

Applies To: NPresentGroupCommon

Parameters:

AxisType Axis

Return Value: Boolean

Remarks: Query whether the group is displayed on the specified axis.

Example:

bDisplayed = group.Common.IsDisplayedOnAxis(atRightAxis)


LegendFormatString

Name: LegendFormatString

Applies To: NPresentGroupCommon

Type: String

Remarks: The format string used for the legend data items when the legend mode is pglmDataItems or pglmPresentationGroupCustom. See the Formatting Commands for more information.

Example:

group.Common.LegendFormatString = "%1(1,TRUE,1) %L" 'value1 formatted with 1 decimal and commas on the thousands followed by data point label


LegendMode

Name: LegendMode

Applies To: NPresentGroupCommon

Type: PresentGroupLegendMode

Remarks: Controls the displayed information in the chart legend about the presentation group. The following modes are supported
- pglmCategories - legend items show the categories (their labels) occupied by the presentation group
- pglmSeries - legend items show the series (their labels) occupied by the presentation group
- pglmDataItems - legend items show the data points with the applied fill effects
- pglmUniformAppearances - legend items show the items in the uniform appearances collection
- pglmPresentationGroup - the legend has one entry for the presentation group with the presentation group name as a label
- pglmPresentationGroupCustom - the legend displays presentation group specific information

Example:

group.Common.LegendMode = pglmDataItems 'shows the data items in the legend


Name

Name: Name

Applies To: NPresentGroupCommon

Type: String

Remarks: The name of the presentation group. The legend of the item can be configured to show this name.

Example:

group.Common.Name = "Charting made easy"


Range

Name: Range

Applies To: NPresentGroupCommon

Parameters: None

Return Value: Object

Remarks: Gives you access to the NRange object controlling the range from the data storage shown by the presentation group.

Example:

group.Common.Range.InfiniteX = True 'the presentation group shows all categories


ShowDialog

Name: ShowDialog

Applies To: NPresentGroupCommon

Parameters: None

Return Value: Boolean

Remarks: Shows the property pages of the presentation group at runtime. The return value indicates whether the user clicked the Ok button. bOK = group.Common.ShowDialog()


ShowInLegend

Name: ShowInLegend

Applies To: NPresentGroupCommon

Type: Boolean

Remarks: Shows information about the presentation group in the legend. The displayed information is controlled by the LegendMode property.

Example:

group.Common.ShowInLegend = True ' show the presentation group in the legend


TextEx

Name: TextEx

Applies To: NPresentGroupCommon

Parameters: None

Return Value: Object

Remarks: Gives you access to the NTextEx object controlling the appearance of the data point texts,

Example:

group.Common.TextEx.Font.Size = 15 'make data point texts bigger


UniformAppearances

Name: UniformAppearances

Applies To: NPresentGroupCommon

Parameters: None

Return Value: Object

Remarks: Gives you access to the NUniformAppearancesCollection holding the uniform appearances of the group. Some presentation groups do not allow the user to modify the count of the uniform appearances in this collection. See the Uniform Appearances topic for more information. Set appearances = group.Common.UniformAppearances()


BeginPrint

Name: BeginPrint

Applies To: NPrintManager

Parameters: None

Return Value: None

Remarks: Starts the process of printing and displays the Print progress dialog box that provides a visual feedback. You can cancel the printing by clicking on the Cancel button.

Example:

NevronControl.PrintManager.BeginPrint 'print the control


BottomMargin

Name: BottomMargin

Applies To: NPrintManager

Type: Single

Remarks: Controls the margin of the printed image from the bottom side of the paper. The value is specified in percents. The clamping is done in the same way as with the LeftMargin property. The default value is 15%.

Example:

PrintManager.BottomMargin = 20 'increase the bottom margin


Copies

Name: Copies

Applies To: NPrintManager

Type: Long

Remarks: Specifies how many copies to be printed. You cannot specify a value smaller than 1 for this property. The default value is 1.

Example:

PrintManager.Copies = 3


CurrentPrinter

Name: CurrentPrinter

Applies To: NPrintManager

Type: Long

Remarks: Specifies the current printer. By default the current printer is the default printer for your computer. If you want to print on another one you should specify the printer index. For more information see the GetPrinterCount and GetPrinterName properties.

Example:

Dim PrinterIndex As Integer
PrinterIndex = NevronControl.PrintManager.CurrentPrinter
MsgBox "The current printer is:" + NevronControl.PrintManager.GetPrinterName(CurrentPrinter)


GetPrinterCount

Name: GetPrinterCount

Applies To: NPrintManager

Parameters: None

Return Value: Long

Remarks: Returns the numbers of the installed local and network printers.


GetPrinterName

Name: GetPrinterName

Applies To: NPrintManager

Parameters:

Long nIndex

Return Value: String

Remarks: Returns the printer name at Index. You can use this function to enumerate the installed local and network printers.


LeftMargin

Name: LeftMargin

Applies To: NPrintManager

Type: Single

Remarks: Controls the margin of the printed image from the left side of the paper. The value is specified in percents. For example if the dimensions of the page being printed is 1200x2400 logical units then 15% for this property would mean that the printed image would start from 180. Note that the value is automatically clamped to a valid one e.g. negative values are clamped to zero and if the sum of the LeftMargin and RightMargin properties exceeds 100 then the value is the maximal valid value for this property. The default value is 15%.

Example:

PrintManager.LeftMargin = 20 'increase the left margin


PaperOrientation

Name: PaperOrientation

Applies To: NPrintManager

Type: PaperOrientation

Remarks: Specifies the paper orientation. Possible values are poLandscape and poPortrait. The default value is poPortrait.

Example:

NevronControl.PrintManager,PaperOrientation = poLandscape 'change the paper orienation to landscape


QualityPercent

Name: QualityPercent

Applies To: NPrintManager

Type: Single

Remarks: Some printer devices have a better resolution than the screen. This is why when you print an image that looks smooth on the monitor it sometimes looks jagged on the printer. To correct this you may wish to increase the quality of the generated image by increasing the size of the internally generated bitmap. This increase is specified in percents and is automatically clamped to the range [100, 300]. When you increase the size of the generated image for the printer device however there are some side effects that may be undesirable for you - the most significant one is the size of the two dimensional fonts. They are always calculated in logical units and thus are dependent from the resolution of the output device.
For example suppose that you have a monitor with resolution 1024x768 which is configured to display a control with dimensions of 300x300. With these resolutions a 2D font with size 10 would be approximately 3.33% of the height of the control image. When you choose to print with quality 200% this means that internally your image would be scaled to 600x600 and thus the font height will now drop to 1.66% of the height of the generated image. This will make the 2D texts to look smaller. Fortunately there is the Scale2DFonts property. When this property is turned on (this is the default) the 2D font's size is automatically scaled and this side effect is avoided.

Example:

NevronControl.PrintManager.QualityPercent = 200 'increase the quality percent
NevronControl.PrintManager.BeginPrint


ResetMargins

Name: ResetMargins

Applies To: NPrintManager

Parameters: None

Return Value: None

Remarks: Resets the margins to their default values of 15%.

Example:

NevronControl.PrintManager.LeftMargin = 20
NevronControl.PrintManager.BeginPrint 'print with a bigger left margin
NevronControl.PrintManager.ResetMargins
NevronControl.PrintManager.BeginPrint 'print with the default margins


RightMargin

Name: RightMargin

Applies To: NPrintManager

Type: Single

Remarks: Controls the margin of the printed image from the right side of the paper. The value is specified in percents. The clamping is done in the same way as with the LeftMargin property. The default value is 15%.

Example:

PrintManager.RightMargin = 20 'increase the right margin


Scale2DFonts

Name: Scale2DFonts

Applies To: NPrintManager

Type: Boolean

Remarks: Turns on and off the automatic scaling of the 2D fonts when printing. For more information see the QualityPercent property. The default value is TRUE.

Example:

NevronControl.PrintManager.Scale2DFonts = FALSE 'disable 2D font scaling


SetProportionalMargins

Name: SetProportionalMargins

Applies To: NPrintManager

Parameters: None

Return Value: None

Remarks: Set the margins proportional to the control dimensions. To get a basic impression how this methods works click the Proportional button in the Print preview dialog box.

Example:

NevronControl.PrintManager.SetProportionalMargins
NevronControl.PrintManager.BeginPrint 'print with proportional margins
NevronControl.PrintManager.ResetMargins
NevronControl.PrintManager.BeginPrint 'print with the default margins


ShowPrintPreview

Name: ShowPrintPreview

Applies To: NPrintManager

Parameters: None

Return Value: None

Remarks: Displays the print preview dialog at runtime.

Example:

NevronControl.PrintManager.ShowPrintPreview


TopMargin

Name: TopMargin

Applies To: NPrintManager

Type: Single

Remarks: Controls the margin of the printed image from the top side of the paper. The value is specified in percents. The clamping is done in the same way as with the LeftMargin property. The default value is 15%.

Example:

PrintManager.LeftMargin = 20 'increase the top margin


CategoryTextEx

Name: CategoryTextEx

Applies To: NRadarPresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NTextEx object controlling the appearance of the category texts


CategoryTextOffset

Name: CategoryTextOffset

Applies To: NRadarPresentGroup

Type: Single

Remarks: Specifies the distance of the category texts from the end of the radar axes.

Example:

radar.CategoryTextOffset = 0.34


Common

Name: Common

Applies To: NRadarPresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = radar.Common()


HasValuePoints

Name: HasValuePoints

Applies To: NRadarPresentGroup

Type: Boolean

Remarks: Controls the visibility of the radar value points.

Example:

radar.HasValuePoints = True ' show the data points


PointSize

Name: PointSize

Applies To: NRadarPresentGroup

Type: Single

Remarks: Controls the size of the radar data points.

Example:

radar.PointSize = 0.25


PointStyle

Name: PointStyle

Applies To: NRadarPresentGroup

Type: PointStyle

Remarks: Points shape style. Valid values are:

  • psBar
  • psCylinder
  • psCone
  • psInvertedCone
  • psPyramid
  • psInvertedPyramid
  • psSphere
  • psCircle
  • psDiamond

    Example:

    radar.PointStyle = psSphere 'points like spheres


RadarStyle

Name: RadarStyle

Applies To: NRadarPresentGroup

Type: RadarStyle

Remarks: Controls the radar style. Valid values are:

  • rsLines - the radar displays connection lines between the adjacent data points.
  • rsFilledArea - the radar fills the area surronded by the data points.

    Example:

    radar.RadarStyle = rsFilledArea ' switch to filled area mode


XRadius

Name: XRadius

Applies To: NRadarPresentGroup

Type: Single

Remarks: Controls the radar x radius. By default 2.

Example:

radar.XRadius = 3


YRadius

Name: YRadius

Applies To: NRadarPresentGroup

Type: Single

Remarks: Controls the radar y radius. By default 2.

Example:

radar.YRadius = 1 'controls the Y radius


BeginX

Name: BeginX

Applies To: NRange

Type: Long

Remarks: The Begin X value of the range or in other words which is the first Category item shown by the presentation group.

Example:

Range.BeginX = 0


BeginY

Name: BeginY

Applies To: NRange

Type: Long

Remarks: The Begin Y value of the range or in other words which is the first Serie item shown by the presentation group.

Example:

Range.BeginY = 0


BeginZ

Name: BeginZ

Applies To: NRange

Type: Long

Remarks: The Begin Z value of the range or in other words which is the first Level item shown by the presentation group.

Example:

Range.BeginZ = 0


EndX

Name: EndX

Applies To: NRange

Type: Long

Remarks: The End X value of the range (final Category shown by the presentation group). Valid if InfiniteX is set to False.

Example:

range.EndX = 3


EndY

Name: EndY

Applies To: NRange

Type: Long

Remarks: The End Y value of the range (final Serie shown by the presentation group). Valid if InfiniteY is set to False.

Example:

range.EndY = 2


EndZ

Name: EndZ

Applies To: NRange

Type: Long

Remarks: The End Z value of the range (final Level shown by the presentation group). Valid if InfiniteZ is set to False.

Example:

range.EndZ = 3


InfiniteX

Name: InfiniteX

Applies To: NRange

Type: Boolean

Remarks: When set to True the range occupies all Categories values from BeginX to the last one.

Example:

range.InfiniteX = True


InfiniteY

Name: InfiniteY

Applies To: NRange

Type: Boolean

Remarks: When set to True the range occupies all Series values from BeginY to the last one.

Example:

range.InfiniteY = True


InfiniteZ

Name: InfiniteZ

Applies To: NRange

Type: Boolean

Remarks: When set to True the range occupies all Levels values from BeginZ to the last one.

Example:

range.InfiniteZ = True


GetLevelValueField

Name: GetLevelValueField

Applies To: NSerieMapping

Parameters:

Long nLevel

DataValueType Value

Return Value: String

Remarks: Gets the field of the specified level value.

Example:

field = seriemapping.GetLevelValueField(0, dvtValue1)


Label

Name: Label

Applies To: NSerieMapping

Type: String

Remarks: Label of the serie. The NAxisParamter object created when the database is imported will have its Label property set to this value.

Example:

seriemapping.Label = "Serie1"


LevelCount

Name: LevelCount

Applies To: NSerieMapping

Type: Long

Remarks: Specifies the count of levels in the serie. The number of levels in the created data storage when the database is imported is the maximal LevelCount value from all serie mapping objects. seriemapping.LevelCount = 3 ' this serie has 3 levels


SetLevelValueField

Name: SetLevelValueField

Applies To: NSerieMapping

Parameters:

Long nLevel

DataValueType Value

String Field

Return Value: None

Remarks: Maps a level value to the specified field. This means that when the database is imported the Value at nLevel in the corresponding to this object serie will be extracted from Field.

Example:

seriemapping.SetLevelValueField 0, dvtValue1, "Serie2Level1" 'Value1 from level 0 is extracted from field "Serie2Level1"


ShowLabel

Name: ShowLabel

Applies To: NSerieMapping

Type: Boolean

Remarks: Shows or hides the label of the serie. The NAxisParamter object created when the database is imported will have its ShowLabel property set to this value.

Example:

seriemapping.ShowLabel = True


Add

Name: Add

Applies To: NSerieMappingCollection

Parameters:

String Label

Boolean ShowLabel

Return Value: Object

Remarks: Adds a new serie mapping and returns the newly created object.

Example:

Dim seriemapping As NSerieMapping
Set seriemapping = seriemappingcollection.Add("Label", True)


GetAt

Name: GetAt

Applies To: NSerieMappingCollection

Parameters:

Long nIndex

Return Value: Object

Remarks: Returns the object at the specified index.

Example:

Dim seriemapping As NSerieMapping
Set seriemapping = seriemappingcollection.GetAt(0)


GetCount

Name: GetCount

Applies To: NSerieMappingCollection

Parameters: None

Return Value: Long

Remarks: Returns the count of object in the serie mapping collection. objcount = seriemappingcollection.GetCount()


RemoveAll

Name: RemoveAll

Applies To: NSerieMappingCollection

Parameters: None

Return Value: None

Remarks: Removes all serie mappings in the collection. seriemappingcollection.RemoveAll


RemoveAt

Name: RemoveAt

Applies To: NSerieMappingCollection

Parameters:

Long nIndex

Return Value: None

Remarks: Removes the serie mapping at the given index. seriemappingcollection.RemoveAt 0


AllFailHidden

Name: AllFailHidden

Applies To: NShmooPresentGroup

Type: Boolean

Remarks: Automatically hides all fail bits.

Example:

shmoo.AllFailHidden = True 'will hide all bits that are hidden


Common

Name: Common

Applies To: NShmooPresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.


FirstFailType

Name: FirstFailType

Applies To: NShmooPresentGroup

Type: FirstFailType

Remarks: Specifies the dimension for which to highlight the first fail bits. Possible values are:

  • fftFirstXFail
  • fftFirstYFail
  • fftFirstZFail

    Example:

    shmoo.FirstFailType = fftFirstXFail


HighlightFirstFail

Name: HighlightFirstFail

Applies To: NShmooPresentGroup

Type: Boolean

Remarks: The presentation group will highlight the first fail bits in one of the three dimensions (X, Y or Z) depending on the FirstFailType property. The highlighted bits are displayed with the third uniform appearace of the presentation group. See the Shmoo chart topic for more information.

Example:

shmoo.HighlightFirstFail = True


ShowXRow

Name: ShowXRow

Applies To: NShmooPresentGroup

Parameters:

None nY

None nZ

Boolean bShow

Return Value: None

Remarks: Set the show - hide bit to bShow for all categories at serie nY and level nZ


ShowYRow

Name: ShowYRow

Applies To: NShmooPresentGroup

Parameters:

None nX

None nZ

Boolean bShow

Return Value: None

Remarks: Set the show - hide bit to bShow for all series at category nX and level nZ


ShowZRow

Name: ShowZRow

Applies To: NShmooPresentGroup

Parameters:

None nX

None nY

Boolean bShow

Return Value: None

Remarks: Set the show - hide bit to bShow for all levels at category nX and serie nY


Common

Name: Common

Applies To: NStackAreaPresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = bar.Common()


DepthPercent

Name: DepthPercent

Applies To: NStackAreaPresentGroup

Type: Long

Remarks: Controls the depth of area in percents of the floor grid cell depth.

Example:

area.DepthPercent = 50 'half the cell depth


DropLines

Name: DropLines

Applies To: NStackAreaPresentGroup

Type: Boolean

Remarks: Controls the visibility of the area separation lines. area.DropLines = True


StackStyle

Name: StackStyle

Applies To: NStackAreaPresentGroup

Type: StackStyle

Remarks: Controls the stacking style of the area. Valid values are:

  • ssStacked - normal stacked area chart
  • ssStackedPercent - stacked percent chart. Each item shows the contribution to the overall item sum.

    Example:

    area.StackStyle = ssStackedPercent 'stack percent area chart


BarEdgePercent

Name: BarEdgePercent

Applies To: NStackBarPresentGroup

Type: Long

Remarks: Controls the edge size of the smooth edge bar in percents of the smaller bar dimension (width or depth).

Example:

bar.BarEdgePercent = 35


BarStyle

Name: BarStyle

Applies To: NStackBarPresentGroup

Type: BarStyle

Remarks: Controls the style of the bars. Valid values are:

  • bsBar
  • bsCylinder
  • bsCone
  • bsInvertedCone
  • bsPyramid
  • bsInvertedPyramid
  • bsSmoothEdgeBar

    Example:

    bar.BarStyle = bsInvertedPyramid 'bars are now displayed as pyramids


Common

Name: Common

Applies To: NStackBarPresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = bar.Common()


DepthPercent

Name: DepthPercent

Applies To: NStackBarPresentGroup

Type: Long

Remarks: Controls the depth of bars in percents of the floor grid cell depth.

Example:

bar.DepthPercent = 50 'half the cell depth


StackStyle

Name: StackStyle

Applies To: NStackBarPresentGroup

Type: StackStyle

Remarks: Controls the stacking style of the bars. Valid values are:
- ssStacked - normal stacked bar chart
- ssStackedPercent - stacked percent chart. Each item shows the contribution to the overall item sum.

Example:

bar.StackStyle = ssStackedPercent 'stack percent bar chart


WidthPercent

Name: WidthPercent

Applies To: NStackBarPresentGroup

Type: Long

Remarks: Controls the width of bars in percents of the floor grid cell width.

Example:

bar.WidthPercent = 50 'half the cell width


Common

Name: Common

Applies To: NStackLinePresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = bar.Common()


HasValuePoints

Name: HasValuePoints

Applies To: NStackLinePresentGroup

Type: Boolean

Remarks: Controls the visibility of the value data points marks.

Example:

line.HasValuePoints = True 'show the value point marks


LineStyle

Name: LineStyle

Applies To: NStackLinePresentGroup

Type: LinePresentStyle

Remarks: Controls the style of the lines. Valid values are

  • lpsTube - the line segements are displayed as cylineders
  • lpsTape - the line segements are displayed as rectangles
  • lpsLine - the line segements are displayed as simple lines

    Example:

    line.LineStyle = lpsTube ' the line is displayed as tube


LineWidth

Name: LineWidth

Applies To: NStackLinePresentGroup

Type: Single

Remarks: Controls the width of the line in OpenGL units when LineStyle is lpsTube or lpsTape.

Example:

line.LineWidth = 0.10 'the line width is 0.10 OpenGL units


PointSize

Name: PointSize

Applies To: NStackLinePresentGroup

Type: Single

Remarks: Controls the size of the data points in OpenGL units.

Example:

line.PointSize = 0.20


PointStyle

Name: PointStyle

Applies To: NStackLinePresentGroup

Type: PointStyle

Remarks: Controls the style of the data points. Valid values are:

  • psBar
  • psCylinder
  • psCone
  • psInvertedCone
  • psPyramid
  • psInvertedPyramid
  • psSphere
  • psCircle
  • psDiamond

    Example:

    line.PointStyle = psCone 'change the point style to cone


StackStyle

Name: StackStyle

Applies To: NStackLinePresentGroup

Type: StackStyle

Remarks: Controls the stacking style of the lines. Valid values are:

  • ssStacked - normal stacked line chart
  • ssStackedPercent - stacked percent chart. Each item shows the contribution to the overal item sum.

    Example:

    bar.StackStyle = ssStackedPercent 'stack percent line chart


CandleDepthPercent

Name: CandleDepthPercent

Applies To: NStockPresentGroup

Type: Long

Remarks: Controls the candle depth in percents of the chart floor grid depth. Valid only if the CandleStyle property is set to csBar.

Example:

stock.CandleDepthPercent = 45


CandleStyle

Name: CandleStyle

Applies To: NStockPresentGroup

Type: CandleStyle

Remarks: Controls the shape of the candle. Valid values are:

  • csBar - bar beginning from the Open value (Value1) and ending at the Close value (Value4)
  • csStick - the Open and Close values are displayed as lines and the user can show and hide them with the help of the ShowOpen and ShowClose properties

    Example:

    stock.CandleStyle = csStick


CandleWidth

Name: CandleWidth

Applies To: NStockPresentGroup

Type: Single

Remarks: Controls the width of the candle in OpenGL units.

Example:

stock.CandleWidth = 0.20 'candle is 0.20 in width


Common

Name: Common

Applies To: NStockPresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = stock.Common()


HasVolume

Name: HasVolume

Applies To: NStockPresentGroup

Type: Boolean

Remarks: Controls the visibility of the stock volume bar.

Example:

stock.HasVolume = True 'show the traded volume bar


ShowClose

Name: ShowClose

Applies To: NStockPresentGroup

Type: Boolean

Remarks: Controls the visibility of the close value. Valid if CandleStyle is csStick.

Example:

stock.ShowClose = False ' hide the close stock tick


ShowOpen

Name: ShowOpen

Applies To: NStockPresentGroup

Type: Boolean

Remarks: Controls the visibility of the open value. Valid if CandleStyle is csStick.

Example:

stock.ShowOpen = False ' hide the open stock tick


UseVolumeOrigin

Name: UseVolumeOrigin

Applies To: NStockPresentGroup

Type: Boolean

Remarks: Turns on and off volume origin. When set to True the stock uses the VolumeOrigin property. When set to False the bars begin from the maximal possible value.

Example:

stock.UseOrigin = True
stock.VolumeOrigin = 10 ' bars begin from value 10


UseXValue

Name: UseXValue

Applies To: NStockPresentGroup

Type: Boolean

Remarks: Use Value6 as X coordinate of the data point. You must manually switch the categories axis in value, datetime or logarithmic mode.

Example:

stock.UseXValue = True
NChart1.Axes(atCategoriesAxis).ScaleMode = asmValue


VolumeAxis

Name: VolumeAxis

Applies To: NStockPresentGroup

Type: AxisType

Remarks: Specifies a secondary axis for the traded volume bars. This is required because the traded volume has different measure compared to the stock open-hi-low-close values.

Example:

stock.VolumeAxis = atFrontAxis 'scale the volume bars on the front axis


VolumeDepthPercent

Name: VolumeDepthPercent

Applies To: NStockPresentGroup

Type: Long

Remarks: Controls the volume depth in percents of the chart floor grid depth.

Example:

stock.VolumeDepthPercent = 45


VolumeEdgePercent

Name: VolumeEdgePercent

Applies To: NStockPresentGroup

Type: Long

Remarks: Controls the volume edge in percents of the smaller bar dimension (width or depth). Valid only if VolumeStyle is bsSmoothEdgeBar.

Example:

stock.VolumeEdgePercent = 55


VolumeOrigin

Name: VolumeOrigin

Applies To: NStockPresentGroup

Type: Double

Remarks: Specifies the volume bars origin value when UseOrigin is set to True. By default 0.

Example:

stock.UseOrigin = True
stock.VolumeOrigin = 10 ' bars begin from value 10


VolumeStyle

Name: VolumeStyle

Applies To: NStockPresentGroup

Type: BarStyle

Remarks: Controls the shape of the volume bar. Valid values are:

  • bsBar
  • bsCylinder
  • bsCone
  • bsInvertedCone
  • bsPyramid
  • bsInvertedPyramid
  • bsSmoothEdgeBar

    Example:

    stock.VolumeStyle = bsPyramid


VolumeWidth

Name: VolumeWidth

Applies To: NStockPresentGroup

Type: Single

Remarks: Controls the width of the volume bars in OpenGL units.

Example:

stock.VolumeWidth = 0.30


AutomaticPalette

Name: AutomaticPalette

Applies To: NSurfacePresentGroup

Type: Boolean

Remarks: When set to True the component uses the automatic surface palette. The automatic palette entry count is synchronized with the tick count of the axis. When set to False the component uses a custom defined palette.

Example:

surface.AutomaticPalette = True


Common

Name: Common

Applies To: NSurfacePresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NPresentGroupCommon object of the presentation group.

Example:

Dim common As NPresentGroupCommon
Set common = surface.Common()


DrawFlat

Name: DrawFlat

Applies To: NSurfacePresentGroup

Type: Boolean

Remarks: Draws the surface in flat mode (Contour chart). The PositionMode and PositionValue properties determine the vertical position of the surface.

Example:

surface.DrawFlat = True


FillStyle

Name: FillStyle

Applies To: NSurfacePresentGroup

Type: SurfaceFillStyle

Remarks: Controls the way in which the surface is filled. Valid values are:

  • sfsFillNone - no filling at all
  • sfsFillMesh - filling is applied on the segments between 4 adjacent data points
  • sfsFillZone - filling is applied on surface elevation zones.

    Example:

    surface.FillStyle = sfsFillZone ' set zoned filling


FrameLine

Name: FrameLine

Applies To: NSurfacePresentGroup

Parameters: None

Return Value: Object

Remarks: Gives you access to the NLineProperties applied on the surface frame. The line properties affect the frame only if the PaletteFrame flag is set to False.

Example:

Dim lineprops As NLineProperties
Set lineprops = surface.FrameLine()


FrameStyle

Name: FrameStyle

Applies To: NSurfacePresentGroup

Type: SurfaceFrameStyle

Remarks: Controls the surface frame style. Supported values are:

  • sfsFrameNone - no frame at all
  • sfsFrameMesh - frame connecting the adjacent data points.
  • sfsFrameContour - contour lines at specific surface elevations
  • sfsFrameMeshContour - mixed mesh and contour frame
  • sfsFrameDots - dots at the data points

    Example:

    surface.FrameStyle = sfsFrameContour


PaletteAdd

Name: PaletteAdd

Applies To: NSurfacePresentGroup

Parameters:

Double fValue

OLE_COLOR Color

Return Value: None

Remarks: Adds an item to the custom palette of the surface present group. The custom palette is used when the AutomaticPalette property is set to False. Each entry in the custom palette specifies the color applied on a specific surface elevation. Note that internally the component sorts the palette in ascending manner so that you don't have to worry about the sequence in which you insert entries. surface.PaletteAdd 10, vbRed


PaletteFill

Name: PaletteFill

Applies To: NSurfacePresentGroup

Type: Boolean

Remarks: Turns on and off palette filling. This flag has effect only if fill style is sfsFillZone, because zone filling uses only palette filling. When set to False the filling of the surface is provided from the data points or the uniform appearances of the presentation group depending on the EnableUniformAppearances flag


PaletteFrame

Name: PaletteFrame

Applies To: NSurfacePresentGroup

Type: Boolean

Remarks: When set to True the frame is displayed with the current palette (automatic or manual). When set to False the frame is displayed with the line properties accessible with the FrameLine method.

Example:

surface.FrameLine. = sfsFrameContour


PaletteGetAt

Name: PaletteGetAt

Applies To: NSurfacePresentGroup

Parameters:

Long nIndex

ByRef Double pValue

ByRef OLE_COLOR pColor

Return Value: None

Remarks: Retrieves information about the custom palette entry at index nIndex.


PaletteGetCount

Name: PaletteGetCount

Applies To: NSurfacePresentGroup

Parameters: None

Return Value: Long

Remarks: Retrieves the number of items in the palette.

Example:

count = surface.PaletteGetCount()


PaletteRemoveAll

Name: PaletteRemoveAll

Applies To: NSurfacePresentGroup

Parameters: None

Return Value: None

Remarks: Removes all palette entries in the surface presentation group.

Example:

surface.PaletteRemoveAll


PaletteRemoveAt

Name: PaletteRemoveAt

Applies To: NSurfacePresentGroup

Parameters:

Long nIndex

Return Value: None

Remarks: Removes the palette entry at the specified index.

Example:

surface.PaletteRemoveAt 0


PaletteTransparency

Name: PaletteTransparency

Applies To: NSurfacePresentGroup

Type: Long

Remarks: This property controls the transparency of the palette applied on the surface.

Example:

surface.PaletteTransparency = 50


PositionMode

Name: PositionMode

Applies To: NSurfacePresentGroup

Type: SurfacePositionMode

Remarks: The PositionMode property controls the vertical position of the surface, when it is rendered in flat mode (DrawFlat property is set to True).

  • spmFloor - the surface is positioned at the chart floor
  • spmCeiling - the surface is positioned at the chart ceiling
  • spmCustom - the user specifies the position of the surface with the PositionValue property

    Example:

    surface.PositionMode = spmFloor


PositionValue

Name: PositionValue

Applies To: NSurfacePresentGroup

Type: Double

Remarks: The PositionValue property specifies the vertical position of the surface when PositionMode is spmCustom.

Example:

surface.PositionValue = spmFloor


SmoothPalette

Name: SmoothPalette

Applies To: NSurfacePresentGroup

Type: Boolean

Remarks: When set to True the component gradients the palette on the surface segments.

Example:

surface.SmoothPalette = True


BackPlaneBound

Name: BackPlaneBound

Applies To: NText

Type: Single

Remarks: There are cases when you want to inflate the back plane around the text. You can do this with the help of the BackPlaneBound property. This property is in OpenGL units. The default value is 0.2.

Example:

NText.BackPlaneBound = 0.5 'increase the back plane bound


BackPlaneFillEffect

Name: BackPlaneFillEffect

Applies To: NText

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFillEffect object associated with the back plane of the text.

Example:

NText.BackPlaneFillEffect.SetSolidColor vbRed ' set the back plane color to red


BackPlaneFrame

Name: BackPlaneFrame

Applies To: NText

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFrame object associated with the back plane of the text.

Example:

Text.HasBackPlane = True
Text.BackPlaneFrame.Color = vbRed
Text.BackPlaneFrame.HasBorder = True


FillEffect

Name: FillEffect

Applies To: NText

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFillEffect object associated with the text. Note that you cannot apply gradients, textures, animations or patterns to the text. 2D texts support only solid color fill effect.

Example:

NText.FillEffect.SetSolidColor vbRed ' set the text color to red


Font

Name: Font

Applies To: NText

Type: Object

Remarks: Controls the font of the text.

Example:

Text.Font.Bold = True
Text.Font.Size = 10
Text.Font.Name = "Arial black"


HasBackPlane

Name: HasBackPlane

Applies To: NText

Type: Boolean

Remarks: Turns on and of the back plane of the text. You may consider putting back planes to your texts if you want to increase their readability. For example if you have a black background and black texts and you do not enable back planes the user will not be able to read the texts because they will merge with the background.

Example:

Text.HasBackPlane = FALSE


HorzAlign

Name: HorzAlign

Applies To: NText

Type: HorizontalTextAlign

Remarks: This property enables you to control the horizontal alignment of the texts around the text origin point. The possible values are haCenter, haLeft and haRight.

Example:

NText.HorzAlign = haLeft 'align to the left


OffsetX

Name: OffsetX

Applies To: NText

Type: Long

Remarks: Controls the horizontal offset the text origin point from the text base font. The value is given in pixels. The default value is 0.

Example:

NText.OffsetX = 10 'offset to the right


OffsetY

Name: OffsetY

Applies To: NText

Type: Long

Remarks: Controls the vertical offset the text origin point from the text base font. The value is given in pixels. The default value is 0.

Example:

NText.OffsetY = 10 'offset to the bottom


Orientation

Name: Orientation

Applies To: NText

Type: Long

Remarks: Controls the orientation of the 2D texts in degrees. The default value is 0.

Example:

NText.Orientation = 45


ShowDialog

Name: ShowDialog

Applies To: NText

Parameters: None

Return Value: Long

Remarks: Shows the NText properties dialog at runtime. The return value indicates whether the user pressed the Ok button.


VertAlign

Name: VertAlign

Applies To: NText

Type: VerticalTextAlign

Remarks: This property enables you to control the vertical alignment of the texts around the text origin point. The possible values are vaCenter, vaTop, vaBottom.

Example:

NText.VertAlign = vaBottom 'align to the bottom


BackPlaneBound

Name: BackPlaneBound

Applies To: NTextEx

Type: Single

Remarks: There are cases when you want to inflate the back plane around the text. You can do this with the help of the BackPlaneBound property. This property is in OpenGL units. The default value is 0.2.

Example:

NTextEx.BackPlaneBound = 0.5 'increase the back plane bound


BackPlaneFillEffect

Name: BackPlaneFillEffect

Applies To: NTextEx

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFillEffect object associated with the back plane of the text.

Example:

NTextEx.BackPlaneFillEffect.SetSolidColor vbRed ' set the back plane color to red


BackPlaneFrame

Name: BackPlaneFrame

Applies To: NTextEx

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFrame object associated with the back plane of the text.

Example:

TextEx.HasBackPlane = True
TextEx.BackPlaneFrame.Color = vbRed
TextEx.BackPlaneFrame.HasBorder = True


BackPlaneMaterial

Name: BackPlaneMaterial

Applies To: NTextEx

Parameters: None

Return Value: Object

Remarks: Gives you access to the NMaterial object associated with the back plane of the text. The material properties take effect only when the NTextEx object is in 3D mode and lighting is enabled.

Example:

TextEx.BackPlaneMaterial.AmbientColor = RGB(25, 25, 25) 'modify the ambient material of the back plane


Extrusion

Name: Extrusion

Applies To: NTextEx

Type: Single

Remarks: Controls the extrusion of the 3D text. Increase the extrusion if you want a 3D text with bigger depth. The Extrusion is specified in OpenGL units.

Example:

TextEx.Extrusion = 0.1


FillEffect

Name: FillEffect

Applies To: NTextEx

Parameters: None

Return Value: Object

Remarks: Gives you access to the NFillEffect object associated with the text. Note that you cannot apply gradients, textures, animations or patterns to the text if it is in 2D mode.

Example:

NTextEx.FillEffect.SetSolidColor vbRed ' set the text color to red


Font

Name: Font

Applies To: NTextEx

Type: Object

Remarks: Controls the font of the text. Used for both in 2D and 3D mode.

Example:

TextEx.Font.Bold = True
TextEx.Font.Size = 10
TextEx.Font.Name = "Arial black"


HasBackPlane

Name: HasBackPlane

Applies To: NTextEx

Type: Boolean

Remarks: Turns on and of the back plane of the text. You may consider putting back planes to your texts if you want to increase their readability. For example if you have a black background and black texts you must enable the back plane because otherwise the user will not be able to read the texts - they will simply merge with the background.

Example:

TextEx.HasBackPlane = TRUE


HorzAlign

Name: HorzAlign

Applies To: NTextEx

Type: HorizontalTextAlign

Remarks: This property enables you to control the horizontal alignment of the texts around the text origin point. The possible values are haCenter, haLeft and haRight.

Example:

NTextEx.HorzAlign = haLeft 'align to the left


Material

Name: Material

Applies To: NTextEx

Parameters: None

Return Value: Object

Remarks: Gives you access to the NMaterial object associated with the text. The material properties take effect only when the NTextEx object is in 3D mode and lighting is enabled.

Example:

TextEx.Material.AmbientColor = RGB(25, 25, 25) 'modify the ambient material of the text


OffsetX

Name: OffsetX

Applies To: NTextEx

Type: Long

Remarks: Controls the horizontal offset the text origin point from the text base point. The value is given in pixels. The default value is 0.

Example:

NTextEx.OffsetX = 10 'offset to the right


OffsetY

Name: OffsetY

Applies To: NTextEx

Type: Long

Remarks: Controls the vertical offset the text origin point from the text base point. The value is given in pixels. The default value is 0.

Example:

NTextEx.OffsetY = 10 'offset to the bottom


Orientation

Name: Orientation

Applies To: NTextEx

Type: Long

Remarks: Controls the orientation of the 2D texts in degrees. The default value is 0.

Example:

NTextEx.Orientation = 45


OriginDistance

Name: OriginDistance

Applies To: NTextEx

Type: Single

Remarks: This property controls the distance of the text origin point from the base point. The base point is set by the control and cannot be changed. For example if you have a category axis it will position the base points of the texts at the coordinates of the axis ticks. By using the OriginRotation, OriginElevation and OriginDistance properties you can control the polar coordinates of the text origin point relative to the base point set by the control. This property does not impact the texts if the NTextEx object is working in 2D mode. The OriginDistance is in OpenGL units.

Example:

TextEx.OriginDistance = 0.2 'set some origin distance


OriginElevation

Name: OriginElevation

Applies To: NTextEx

Type: Single

Remarks: This property controls the elevation of the text origin point from the base point. The base point is set by the control and cannot be changed. For example if you have a category axis it will position the base points of the texts at the coordinates of the axis ticks. By using the OriginRotation, OriginElevation and OriginDistance properties you can control the polar coordinates of the text origin point relative to the base point set by the control. This property does not impact the texts if the NTextEx object is working with 2D mode.

Example:

TextEx.OriginElevation = 90 'set some elevation


OriginRotation

Name: OriginRotation

Applies To: NTextEx

Type: Single

Remarks: This property controls the rotation of the text origin point around the base point. The base point is set by the control and cannot be changed. For example if you have a category axis it will position the base points of the texts at the coordinates of the axis ticks. By using the OriginRotation, OriginElevation and OriginDistance properties you can control the polar coordinates of the text origin point relative to the base point set by the control. This property does not impact the texts if the NTextEx object is working in 2D mode.

Example:

TextEx.OriginRotation = 90 'rotate at 90 degrees


RotateAroundXAxis

Name: RotateAroundXAxis

Applies To: NTextEx

Type: Single

Remarks: Rotates the 3D text around the X axis.

Example:

TextEx.RotateAroundXAxis = 45


RotateAroundYAxis

Name: RotateAroundYAxis

Applies To: NTextEx

Type: Single

Remarks: Rotates the 3D text around the Y axis.

Example:

TextEx.RotateAroundYAxis = 45


RotateAroundZAxis

Name: RotateAroundZAxis

Applies To: NTextEx

Type: Single

Remarks: Rotates the 3D text around the Z axis.

Example:

TextEx.RotateAroundZAxis = 45


ShowDialog

Name: ShowDialog

Applies To: NTextEx

Parameters: None

Return Value: Long

Remarks: Shows the NTextEx properties dialog at runtime. The return value indicates whether the user pressed the Ok button.


TextOverlapsImage

Name: TextOverlapsImage

Applies To: NTextEx

Type: Boolean

Remarks: When the NTextEx object is in 2D mode you can choose whether your 2D texts must always overlap the 3D image or be rendered with the z coordinate of their origin point. When TextOverlapsImage is TRUE all 2D texts overlap the 3D image regardless of the origin point z coordinate. Lets look at some example - suppose that you have a bar chart with multiple categories and series and the bars from the second serie have smaller values. You want to see the values of all bars regardless whether they are visible or not - in this case you should turn on the TextOverlapsImage property of the NTextEx object associated with the bar present group.

Example:

NTextEx.TextOverlapsImage = FALSE 'render 2D texts with the z coordinate of the text origin point


Use2DText

Name: Use2DText

Applies To: NTextEx

Type: Boolean

Remarks: Controls the mode of the NTextEx object. When TRUE the NTextEx is in 2D mode otherwise the NTextEx will display 3D texts.

Example:

TextEx.Use2DText = TRUE 'I want to use 2D (GDI like) texts


VertAlign

Name: VertAlign

Applies To: NTextEx

Type: VerticalTextAlign

Remarks: This property enables you to control the vertical alignment of the texts around the text origin point. The possible values are vaCenter, vaTop, vaBottom.

Example:

NTextEx.VertAlign = vaBottom 'align to the bottom


PaperOrientation

Overview The paper orientation when printing. For more information see the NPrintManager object description in the Object Reference.

Values
poLandscape = 0
poPortrait = 1


PieStyle

Overview This custom type is used by the PieStyle property of the NPiePresentGroup object and determine the style of the of the pie segments.

Values
psPie = 0
psTorus = 1
psSmoothEdgePie = 2


PointStyle

Overview Defines the possible point shapes. This custom type is used by presentation groups that display data value points.

Values
psBar = 0
psCylinder = 1
psCone = 2
psInvertedCone = 3
psPyramid = 4
psInvertedPyramid = 5
psSphere = 6
psCircle = 7
psDiamond = 8


PredefinedAxisTextPosition

Overview This enumeration is used to define the predefined axis text positions. It is accepted by the SetPredefinedTextPosition method of the NAxis object and helps you easily position the axis text in accordance with the current projection

Values
patpVertical = 0
patpHorizontalLeft = 1
patpHorizontalRight = 2


PredefinedProjection

Overview Nevron controls posses eighteen predefined projections that enable you to set all the projection parameters with one function call.

Values
pp2D = 0
pp2DHorizontalLeft = 1
pp2DHorizontalRight = 2
pp2DTop = 3
pp2DTopHorizontalLeft = 4
pp2DTopHorizontalRight = 5
pp2DHalf = 6
pp2DHalfHorizontalLeft = 7
pp2DHalfHorizontalRight = 8
pp2DHalfTop = 9
pp2DHalfTopHorizontalLeft = 10
pp2DHalfTopHorizontalRight = 11
pp3D = 12
pp3DHorizontalLeft = 13
pp3DHorizontalRight = 14
pp3DTop = 15
pp3DTopHorizontalLeft = 16
pp3DTopHorizontalRight = 17


PresentGroupLegendMode

Overview Defines the modes in which the presentation groups fills the legend. This custom type is used by the LegendMode property of the NPresentGroup common object. See the Configuring the Legend topic for more information

Values
pglmCategories = 0
pglmSeries = 1
pglmDataItems = 2
pglmUniformAppearances = 3
pglmPresentationGroup = 4
pglmPresentationGroupCustom = 5


PresentGroupType

Overview Defines the currently supported charting types. This custom type is passed as a parameter to the Add method of the NPresentGroupCollection object and determines the type of the newly created presentation group.

Values
pgtBar = 0
pgtStackBar = 1
pgtLine = 2
pgtStackLine = 3
pgtArea = 4
pgtStackArea = 5
pgtSurface = 6
pgtPoint = 7
pgtBubble = 8
pgtStock = 9
pgtFloatBar = 10
pgtPie = 11
pgtRadar = 12
pgtPolar = 13
pgtShmoo = 14


PTProjectionType

Overview Defines the projection type. For more information see the N3DView object description in the Object Reference.

Values
ptPerspective = 0
ptOrthogonal = 1


RadarStyle

Overview Defines the possible radar styles. This custom type is accepted by the RadarStyle property of the NRadarPresentGroup object. When set to rsLines the radar is displayed as lines only. When set to rsFilledArea the radar fills the area surrounded by the lines connecting the radar data points.

Values
rsLines = 0
rsFilledArea = 1


StackStyle

Overview Controls the stack style of the stacking presentation groups

Values
ssStacked = 0
ssStackedPercent = 1


SurfaceFillStyle

Overview Controls the fill style of the surface. This custom type is accepted by the FillStyle property of the NSurfacePresentGroup object.

Values
sfsFillNone = 0
sfsFillMesh = 1
sfsFillZone = 2


SurfaceFrameStyle

Overview Controls the frame style of the surface. This custom type is accepted by the FrameStyle property of the NSurfacePresentGroup object.

Values
sfsFrameNone = 0
sfsFrameMesh = 1
sfsFrameContour = 2
sfsFrameMeshContour = 3
sfsFrameDots = 4


SurfacePositionMode

Overview Controls the possible surface position modes, which are taken into account when the surface is rendered in flat mode (contour chart)

Values
spmFloor = 0
spmCeiling = 1
spmCustom = 2


VerticalTextAlign

Overview The vertical text alignment relative to the text origin point. For more information see the NTextEx object description in the Object Reference.

Values
vaCenter = 0
vaTop = 1
vaBottom = 2


WinColor

Overview Sometimes it is very useful to synchronize the colors displayed by your control with the Windows appearance settings. The WinColor enumeration enumerates the colors from the Windows appearance settings. Form more information see the NFillEffect object description in the Object Reference.

Values
wc3dDkShadow = 0
wc3dFace = 1
wcBtnFace = 2
wc3dHiLight = 3
wc3dHighLight = 4
wcBtnHiLight = 5
wcBtnHighLight = 6
wc3dLight = 7
wc3dShadow = 8
wcBtnShadow = 9
wcActiveBorder = 10
wcActiveCaption = 11
wcAppWorkspace = 12
wcBackground = 13
wcDesktop = 14
wcBtnText = 15
wcCaptionText = 16
wcGrayText = 17
wcHighLight = 18
wcHighLightText = 19
wcInactiveBorder = 20
wcInacitveCaption = 21
wcInacitveCaptionText = 22
wcInfoBk = 23
wcInfoText = 24
wcMenu = 25
wcMenuText = 26
wcScrollBar = 27
wcWindow = 28
wcWindowFrame = 29
wcWindowText = 30