Axis1.Forms namespace reference


There are a lot of classes in the Axis1.Forms namespace, so we start with a list of classes by category. This reference omits classes that are not meant to be used from outside the namespace.

Persistent nuts (building blocks). These classes store persistent building block objects, called "nuts" in code.

  • NutBase – base class for all nuts
  • FishnetNut – trivial container for AxFishnet
  • OutsourceNut
  • ListNut
  • SlateNut ("slate" in code refers to the window building block)
  • ReportNut
  • BulkOpNut
  • LabelPrintNut
  • CodeNut
  • UserDefNut

Classes contained within persistent nuts. These classes are used by the nut classes.

  • Band - a collection of cells, contained in lists, slates, labels and reports
  • CellBase and its descendants, CellNest, CellData, CellPrompt, CellStaticText, CellStaticImage, CellParam - definition of one cell within a band
  • Hyperlink - extended hyperlink properties for cells
  • NutDataSource - defines one of several datasources for a list, hyperlink, or bulk operation

Controllers. Theses classes control layout and perform operations defined by nuts. (Partial list.)

  • DataManager - provides data to lists and handles resolving parameters
  • OutsourceLoader - loads AxDataSets based on OutsourceNut instructions. Subclasses exist for different types of loading: AxXmlOutsourceLoader, LineOutsourceLoader, MsXmlOutsourceLoader, CodeOutsourceLoader
  • BulkOpController - controls bulk operations
  • LabelPrintController - controls label printing

Windows for editing nuts

  • NutFormBase – base class
  • FishnetForm
  • OutsourceForm
  • ListForm
  • SlateEditForm - design view only
  • SlateViewForm - results view only
  • ReportEditForm - design view only
  • ReportViewForm - results view only
  • BulkOpForm
  • LabelPrintEditForm
  • CodeForm
  • UserDefForm


Container for cells on the clipboard.

void Add(CellBase c, int xbase, int ybase) - Add a cell to the collection. The argument c gets cloned, so you can continue to use the instance that you pass in. Xbase and ybase are the upper left corner of the grid position of the range being copied.

void Clear() - Clears the collection.

CellBase[] GetAll(int xbase, int ybase) - Get the items in the collection, translated to the given grid position. Each item is cloned, so you can call GetAll multiple times and get unique instances each time.


Enumeration of the selection mode in a list

  • None

  • One - one row and one column selected

  • Range - range of rows and all columns selected

  • Detail - one cell is selected in this list, and the cell is a nested list that has the selection

AxXmlOutsourceLoader : FileOutsourceLoader

Loads Axis1 formatted XML. Also see FileOutsourceLoader.

AxXmlOutsourceLoader(OutsourceNut source, bool learnMode, NutGroup nutGroup) - Constructor. LearnMode=true causes it to test for more error conditions than otherwise.


A collection of cells in a rectangle.

List<CellBase> Cells - The cells in the band.


A form that sends email.

bool ShowDialog(Form caller, DataTable dt, TextMerger tm, string toColumnName, IHelpProvider hintSink) - Show dialog and allow the user to send bulk email. Dt contains the addresses, and toColumnName identifies the column in dt that contains the address. Tm is a TextMerger instance which identifies the body text and subject (the first line of the body text is used for the subject).


Controls bulk operations.

BulkOpController(BulkOpNut opNut, AxParameterShed paramShed, AxArgumentSet paramArgs, NutGroup nutGroup) - Constructor to use when you have a BulkOpNut instance that identifies a data source. ParamArgs may be null.

BulkOpController(DataManager dm, NutGroup nutGroup) - Constructor to use when you have a DataManager instance that identifies a data source, or has already loaded the data set.

DataManager DataManager - Get the data manager, if known. This may be null until GetDataSet is called.

AxDataSet GetDataSet(bool forceReload) - Get the dataset from the data source specified by the constructor arguments.

void DoOperation(Form caller, BulkOpStep action, IHelpProvider hintSink) - Perform one bulk operation, possibly requiring user input.

BulkOpForm : NutFormBase

A form that allows editing bulk operations. See NutFormBase for usage.

BulkOpNut : NutBase

Contains instructions for bulk operations

NutDataSource DataSource - The data source to load and operate on.

List<BulkOpStep> Steps - The steps to operate.


Used in BulkOpStep. Container for two strings as follows

string TempColumnName - The column name in the intermediate data set.

string FieldName - The field name in the persistent record.


BulkOpStepKind Kind - One of the step kinds, which are listed below.

sting OtherNut - See list of kinds below.

string ReadFileName - See list of kinds below. If null, the meaning is to ask the user at run time.

string WriteFileName - See list of kinds below. If null, the meaning is to ask the user at run time.

string AffectedTableName - See list of kinds below.

string AffectedColumnName - See list of kinds below.

List<BulkOpMapping> ColumnMap - See list of kinds below.

string TypeName - See list of kinds below.

MassageKind MassageKind - See list of kinds below.

int IntArg1 - See list of kinds below.

string StringArg1 - See list of kinds below.

The kinds of operations each have different ways of using some of the public fields in BulkOpStep.

  • UserReview - Ask the user to review the intermediate data.

  • Mailmerge - Perform a mailmerge using the file named by ReadFileName and writing a file named by WriteFileName.

  • Email - Perform a user-assisted bulk email from a message file named by ReadFileName, using the intermediate table identified by AffectedTableName for the addresses, which are stored in the column named by AffectedColumnName.

  • Massage - Manipulates every row of one column in the intermediate data. The kind of massage is identified by MassageKind. IntArg1 and StringArg1 may be used for additional information depending on the massage type. The column is identified by AffectedTableName/AffectedColumnName.

  • Export - Exports data from the intermediate table named by AffectedTableName.

  • ModifyFish, CreateFish, and DeleteFish - Modifies, creates, or deletes fish for each row of the table. The table in the intermediate dataset is identified by AffectedTableName. The mapping between intermediate columns and fields in records is stored in ColumnMap. The record type affected is identified by TypeName.

  • UserDefined - Performs a user-defined action. The name of the CodeNut is identified by OtherNut, and the name of the method in that code is identified by StringArg1.


Defines one cell within a band. CellBase is abstract, so you must instantiate one of the derived classes: CellData, CellNest, CellParam, CellPrompt, CellStaticImage, or CellStaticText.

int GridX, GridY - The grid position of the cell.

int SpanX, SpanY - The number of horizontal and vertical grid cell positions occupied by this cell.

ContentAlignment Alignment - The alignment of the control or text within the cell (use TopLeft, TopMiddle, or TopRight)

Font Font - The cell font, or null to inherit from the container.

Color FontColor - The color. (cannot inherit the font color)

Color FillColor - The background color, or Color.Empty to inherit from the container.

Color LeftColor, TopColor, RightColor, BottomColor - The color of the borders, or Color.Empty to inherit from the container.

int LeftInset, TopInset, RightInset, BottomInset - The width of the borders in pixels.

Hyperlink Hyperlink - Either null, or a Hyperlink instance identifying a target nut. The target may be embedded or linked.

int MinLines - The minimum number of lines to occupy.

int MaxLines - The maximum number of lines to occupy, or 0=unlimited. If the actual height exceeds this, a scrollbar may be shown.

int Width - The cell width in pixels

CellData : CellBase

A CellBase that is used to view/edit a value from a DataRow.

string Col - The column name of the data to edit in the cell. If null or blank, editing is not allowed.

string Ctrl - The optional control string to override how the UI control is rendered to edit the data item. Note the difference between null and empty string in this field. Null means "do not override", so the control string is derived from the display type identified in the property of the record type (AxProperty.DisplayTypeName). An empty string forces an override to a default control type.

string DisplayExpr - Optional display expression, which is in effect for display only and not editing. If null, then the column value is used as the display text.

string DefaultExpr - Optional default value expression for new rows.


Enumeration of the ways a hyperlink can place target data.

  • Embed - place the target data as a nested list

  • Crowd - place the target data on the same form as the calling link

  • Link - open a new form

CellNest : CellBase

A CellBase used for nested cells. The nested cell information is in the Hyperlink property.

CellNest has no new elements; see CellBase.

CellParam : CellBase

A CellBase to show the value of a parameter.

string ParamName - The name of the parameter whose value to show or edit.

CellPrompt : CellBase

A CellBase that gets prompt text from the type definition

string Col - If Col is in the form AXISID.typename.propertyname, then the cell shows the property description.

CellStaticImage : CellBase

A CellBase containing a static image

Image Image - The image.

CellStaticText : CellBase

A CellBase containing static text

string Text - The text

CodeForm : NutFormBase

A form used to edit CodeNut instances. See NutFormBase for usage.

CodeNut : NutBase

A nut containing source code or a reference to executable file.

string SourceCode - If storing source code in the nut, then this string is the whole source code file, including at least one whole class.

string[] DependentDllSearchPaths - List of absolute paths to search for dependencies, when storing source code.

string DllPath- If storing a reference instead of source code, this is the path of the DLL (assembly) to load. The path may be absolue or relative to the database file.

string[] References - List of references to external assemblies, when storing a reference. For GAC references, include the name only. For file system references, include the absolute path.

CodeOutsourceLoader : OutsourceLoader

Contains methods to load a data set from user code.

CodeOutsourceLoader(OutsourceNut source, NutGroup nutGroup) - Constructor. Source must be an OutsourceNut that is defined using OutsourceKind.Code.


Encapsulates parsing and building cell control strings. Control strings are known as display types in the UI, and control how a cell is edited, such as with a drop down list. More specifically, display types are named control strings, while each cell can also have an override control string.

Control strings are actually stored as strings. The ControlString class is temporary, and only used to manipulate the string.

Control strings have rigid internal syntax. There are clauses separated by \n characters. Each clause has a class character, a colon character, a head token, and any number of tail tokens. Each tail token is preceded by a tab (\t).

Only one head token for each class may exist in the control string. Only the class character 'c' is supported at present. The head tokens are as follows:

  • c:list\tvalue\tvalue…– forces ctrl to be a dropdown list

  • c:list\ttruedisplay\tfalsedisplay – forces ctrl to be a dropdown listbox instead of a checkbox for bools

  • c:combo\tvalue\tvalue… – forces ctrl to be a combo box (note value=display is NOT supported for combos)

  • c:code\tvalue=display\t…– same but with different value and display

  • c:bool\ttruevalue\tfalsevalue - forces ctrl to be a checkbox

  • c:comma\tvalue\tvalue - forces ctrl to be a CommaDelimComboBox, filled with the included values

  • c:regex\tregexstring - forces ctrl to be a text box with a mask; cannot also be a list or combo

  • c:image - when type is byte[], forces ctrl to be an image saved as jpeg.

  • c:udef\tname1\tname2 - forces ctrl to be managed by an external class that derives from DataCellPainter. Name1 is the CodeNut reference, and name2 is the class name.

  • c:count\tCounterName - forces the ctrl to get its value from a counter and not be user-editable. The name is qualified (AXISID.counter)

ControlString(string cs) - Constructor.

void AddOrReplace(char classChar, ControlString.Clause clause) - Add or replace a clause in the control string.

void Remove(char classChar) - Remove a clause from the control string.

Clause Get(char classChar) - Get a clause by class character, or return null if not found.

string Build() - Return the control string.


(See ControlString)

string Head

string[] Tail


Contains helper methods for dealing with counters.

static string DisplayTypeToCounterName(AxPond mainPond, string dtypename, out AxPond counterPond) - Given a display type name (unqualified), find the unqualified name of the counter. For example, a display type name "fox" might resolve to a control string that identifies the counter name "hen". Returns null if any reference fails or the control string is not a counter-type control string.

static CounterFormatter CreateFromCounter(AxPond pond, string counterName) - Create an instance from a pond and a name of a counter in that pond.

static CounterFormatter CreateFromDisplayType(AxPond pond, string displayTypeName) - Create an instance from a pond and a name of a display type in that pond, where the display type defines a counter-type control string.

object FormatNextValue(Type targetType) - Obtain the next counter value and format it according to the counter's formatting expression, and return an object forced to the type given by targetType.

DataManager : IParamReferenceFinder

Provides data to lists and handles resolving parameters. DataManager is abstract, and the derived classes that are used depend on the type of data source: FishnetDataManager (source is fishnet), MemoryDataManager (source is preloaded dataset), OutsourceDataManager (source is DataOutsource).

The data manager may not load data immediately (depending on which derived class is used), and may only load when GetData is called.

static DataManager CreateFromDataSource(NutDataSource dataSource, NutBase owningNut, AxParameterShed paramShed, AxArgumentSet paramArgs, NutGroup nutGroup) - Creates a DataManager instance based on a NutDataSource.

AxParameterShed ParameterShed - Gets the parametershed for the data manager.

bool EverResolved - Get or set a flag indicating whether the parametershed was ever resolved. Normally you would only set this manually if you pass in a parametershed that was already resolved in outside code.

AxDataSet GetData() - Get the dataset loaded from the data source.

string[] GetColumnNames(string tablename) - Get the column names that will be available in the table. This can be called before loading.

void Unload() - Reset the data manager, so that the next time data is accessed, it is reloaded

bool ReResolve() - Resolve parameters including those whose value are already known.

FileOutsourceLoader : OutsourceLoader

Contains methods to load a data set from a file. See OutsouceLoader.

FishnetForm : NutFormBase

A form for editing a fishnet and previewing the results. See NutFormBase for usage.


Trivial container for AxFishnet

AxFishnet Content


Contains extended hyperlink properties for a cell. The Hyperlink object can be used as a link (as the name implies), in which case a cell displays some text or image; or it can be used to define what is nested in the cell.

NutBase.UsedNut Target - The nut that is embedded or the target of the link.

CellLinkMode LinkMode - The type of link. One of: Embed (show contents within referring cell), Crowd (show contents in same window but not in the cell), or Link (show contents in a new window)

NameValueCollection Args - Optional arguments to apply to the target's parametershed. Supported only for Crowd and Link modes. The names of the name-value collection are parameter names, while the values are Axisbase expressions. Args is null by default so you must instantiate it.

bool ArgsIncludeParams - If true, parameter values from the calling parametershed are copied into the arguments applied to the target. This is false by default.

NutDataSource DataSourceOverride - Optional data source to override the target's default data source. This is null by default, so you have to instantiate it.


Interface applied to a form that can show hints outside the nut forms and launch a help or bug-reporting process.

void HelpProvider_ShowHint(string hint, string searchTerms) - Show a hint with optional search terms.

void HelpProvider_GetHelp(string searchTerms, Exception ex) - Get help from an external source. This is used in the Axisbase client to direct the user to help on


Interface applied to a form that owns ListEditPanels, so that its events can be hooked up by controller classes.

void anyEditPanel_CloseClicked(object sender, EventArgs e) - Handle the clicked event on the close box of the panel.

void anyEditPanel_CommitClicked(object sender, EventArgs e) - Handle the commit menu item.

void anyEditPanel_HyperlinkClicked(ListEditPanel sender, ListController listC, CellController cc, DataRow row) - Handle a click event on a hyperlink shown within the panel.

void anyEditPanel_ReloadClicked(ListEditPanel sender, ListController listC, CellController cc, DataRow row) - Handle the reload menu item.


Interface applied to a class that can open new nut windows, which are requested from within existing nut windows.

void OpenNutWindow(NutBase nut, Form dependentMaster, NutEditingContext editingContext, AxArgumentSet seedParams, Hyperlink hy) - Open a window based on the given nut and NutEditingContext. If seedParams is not null, apply the arguments to the parametershed defined within the new window. If hy is not null, target form may use the hyperlink properties to change its behavior.


Interface applied to forms with the ability to determine if a parameter is referenced in the active parametershed.

bool ParamReference_IsReferenced(string name) - Returns true if the parameter of the given name is referenced in the active parametershed.


Controls label printing

LabelPrintController(LabelPrintNut nut, DataManager dm, Font font, NutGroup nutGroup) - Constructor. The DataManager may be constructed from the nut's DataSource. The font is the default font in case the outermost container does not define a font.

static void CalcMetrics(LabelPrintNut labelNut, out int nAcross, out int nDown) - Calculate the number of labels across and down.

List<string> GetPreviewStrings() - Return the preview strings for all non-deleted rows. The strings can be used to allow the user to select labels.

void SetupStock(int[] rowindices, int firstUsableRow, out int nPages) - Call this before printing to determine how many pages are needed. Rowindices identifies which DataRow numbers to include in the output. FirstUsableRow should be 1 if the first page of stock is complete, 2 if you want printing to strart on the second row of labels, and so on.

void Print(bool preview) - Print the labels, optionally with a preview screen.

LabelPrintEditForm : NutFormBase

A form to edit a LabelPrintNut. See NutFormBase for usage.

LabelPrintNut : NutBase

Contains label printing specifications.

PaperSize PaperSize - The System.Drawing.Printing.PaperSize identifying the paper size. Initially null.

int LabelWidth, LabelHeight, TopMargin, VertSpacing, LeftMargin, HorzSpacing - The size, margins, and spacing between labels. All measures are in 1/100 of an inch.

bool Landscape - If true, prints in landscape. PaperSize still identifies "width" as the width of the paper as it goes into the printer. For example, for a 3x8 envelope that is fed into the printer the long way, the PaperSize width is 3 in, Landscape is true, and the printing and preview will show an 8x3 envelope (8in width).

Band LabelBand - The contents of the label.

NutDataSource DataSource - The data source.

LineOutsourceLoader : OutsourceLoader

Contains methods to load line-oriented text files.


Helper class for building ListNut's quickly. Generally you have two options: either use the 4-argument constructor to build a ListNut instance with no cells, then use the Add... methods to add cells, OR use one of the constuctors that takes an AxDataTable argument to build an instance with default cells. In either case, you can call the Add... methods after constructing the instance of ListBuilder, then call Result to get the instance of ListNut.

Each time you call AddDataCell or AddNestedList, the cells are added to the next grid position; ListBuilder keeps an internal grid position variable.

int DefaultMaxLines - Change this before creating cells to make all newly created cells inherit this value for MaxLines. Default value is 8.

ListNut Result - The ListNut that is built.

ListBuilder() - No-argument constructor.

ListBuilder(NutDataSource dataSourceOverride, bool gridStyle, bool editable, NutDataSourceKind sourceKind) - Basic constructor, which does not create any cells. If dataSourceOverride is not null, it sets ListNut.DataSource to that value. If gridStyle is true, cells are created from left to right; otherwise they are created from top to bottom.

ListBuilder(AxDataTable tab, NutDataSource dataSourceOverride, bool gridStyle, bool editable, NutDataSourceKind sourceKind) - Constructor. Creates a cell for each column in the DataTable. If dataSourceOverride is not null, it sets ListNut.DataSource to that value. If gridStyle is true, cells are created from left to right; otherwise they are created from top to bottom.

ListBuilder(AxDataTable tab) - Constructor. Creates a cell for each column in the DataTable, from left to right.

CellData AddDataCell(string col, bool includePrompt) - Add a CellData instance to the list's cell collection, for the given colum name. If includePrompt is true, adds a prompt cell, either to the left of the data cell or in the header band above the data cell (depending on the value of gridStyle in the constuctor).

CellData AddDataCell(string col, bool includePrompt, string ctrlString) - Add a CellData instance to the list's cell collection, for the given colum name. If includePrompt is true, adds a prompt cell, either to the left of the data cell or in the header band above the data cell (depending on the value of gridStyle in the constuctor). CtrlString may be null or a valid control string (see ControlString class) to force the list to show a certain control when rendered.

CellNest AddNestedList(ListNut nestedList) - Add a nested list to the list's cell collection.

CellStaticText AddHeaderText(string s, int gridx, int gridy) - Add static text to the header band at the given position. (This does not advance the automatic position.)

ListEditPanel : UserControl

Control to allow a user to view a list at runtime and edit data rows. ListEditPanel contains an instance of ListViewPanel, which in turn references an instance of ListController. The visual control contains methods for handling menu items and other user interaction, while the controller handles layout and painting.

You must build a ListController instance and call Init to allow the ListEditPanel to show and edit a data set.

ListController Controller - Gets the ListController instance.

INestedScrollBarProvider NestedScrollbarProvider - Gets the ListView instance, which implements INestedScrollBarProvider.

bool CloseVisible - Gets or sets whether the close button is visible on the panel.

bool HasChanges - Gets whether there are pending unsaved changes in the data set.

bool SmallDataMode - Gets or sets whether the data set is very small. When it is small, filters and menus are hidden, which reduces the complexity of the user interface.

void Init(AxPond pond, ListController lc) - Initializes the panel. The AxPond instance is required for some editing features, such as searching for target records for a reference field.

void Reset(bool clearFilters, bool rebuildController) - Reset and/or rebuild the list and menu displays. If clearFilters is true, the filters are reverted to their default state. If rebuildController is true, performs a list layout of the data that matches the current filter.

bool StopEditingDataCell(bool forced) - Makes sure no editor is active, and the AxDataSet has all user changes applied to it. If forced is false and the active editor has an invalid value, the user is prompted to correct it. In this case, the return value is true only if the edit was successful; otherwise the editor stays active. If forced is true, any invalid entry is ignored.

ListForm : NutFormBase

Form to allow designing a list, and viewing the results in a ListEditPanel. See NutFormBase for usage.

ListNut : NutBase

A nut containing specifications for laying out a single DataTable in a list. Note that when there are nested lists, there are separate nested ListNut instances.

Band Repeater, Header, Intro, Conc - The bands that make up the list. For one-page or nonscrolling lists, the bands are rendered in this order: Intro, Header, Repeater, Conc (conclusion). When scrolling or when pages are printed, the Header band is rendered at the top of each page or window.

Color BackColor - The list background color

bool LabelsAboveDefault - A flag that notifies the UI to default the layout to a grid style, with labels above. When false, the UI is defaulted to a card style with labels on the left of each data cell.

string GroupBy1 - Name of a column (or comma delimited list of names) to pre-group by when first displaying this list.

int RepeaterStickyMargin - The number of cells in the repeater (measured down from the top) that should stick when vertical screen scrolling occurs. Sticky cells are rendered in a fixed position like a header, but they belong to a particular DataRow.

NutDataSource DataSource - The list's data source.

bool HasDataSource() - Convenience method to determine if there is a valid datasource.

bool CanEdit, CanAdd, CanDelete - Determines whether the UI allows the user to edit, add, and delete rows.

ListViewPanel : UserControl, INestedScrollBarProvider

A Control to view a list without editing. ListViewPanel is used inside ListEditPanel.

event EventHandler ControllerChanged - Occurs when the ListController property is set.

event EventHandler Scroll2 - Occurs when either scrollbar is moved.

event MouseEventHandler CellMouseDown - Occurs when a mouse button is pressed within a cell. Use HoverCell to find out which cell.

event MouseEventHandler CellMouseDrag - Occurs when a drag operation starts within a cell.

event MouseEventHandler CellDoubleClick - Occurs when the mouse is double clicked in a cell.

ListController Controller - Gets or sets the ListController instance that provides the data and layout for this view.

bool ShowSelection - If true, a shaded selection indicator is painted.

bool ShowMenuDot - If true, a menu icon is shown in the upper right of the selected cell.

void Reset() - Resizes the scrollbars and invalidate the panel.

void FocusList() - Focuses the selected cell.

Rectangle GetVisibleRect(bool includeHeader) - Gets the rectangle inside the scrollbars where the list should be painted.

Rectangle ListRect - Gets the rectangle occupied by the whole list in the coordinate system of this Control. If the vertical scrollbar is scrolled down, the Top of the rectangle will be negative. Since a list could be millions of pixels long, the rectangle size could be very large with respect to the screen size.

void Slide(int h, int v) - Slide the scrollbars h pixels horizontally and v pixels vertically.

VScrollBar GetScrollBar(CellController cc, DataRow row) - Get the scrollbar associated with a scrollable cell identified by a CellController and DataRow, or null if there is none.

int GetScrollPos(CellController cc, DataRow row, bool allowChange, Rectangle dataRect, Rectangle visibleRect, int maxValue) - Gets the scroll position of a scrollable cell. If the scrollbar does not exist, and allowChange is true, the scrollbar control is created by this call. MaxValue is the initial maximum scroll value of the created scrollbar. DataRect identifies where to place the scrollbar.

List<PaintedCellInfo> HoverCells - Gets which cell the mouse is over, or null if none.

void PaintRect(Rectangle r) - Paint the list within the given clip rectangle.

void InvalidateList() - Invalidates the list area to cause repainting.

MsXmlOutsourceLoader : OutsourceLoader

Contains methods to load a data set from a Microsoft-formatted XML data set file.

NutBase : IAxObject

Base class for all nuts. (building blocks)

string Name - The user-assigned name (without the Axis ID)

string Comment - optional comment

string isDirty - Gets whether the object was changed since last saved.

void SetDirty() - Sets the isDirty flag. Also sets the owner of this nut to dirty, if this is owned.

int SetDirtyCount - Gets the number of times SetDirty has been called. Use this to determine if a nut has changed since some known past state. The value may be positive or negative; only test this value against other values obtained from the same property.

bool IsNested - True if this is nested (owned) by another nut; false if top level.

AxPond GetPond() - Gets the pond that this nut was loaded from, OR null if the nut has not been saved.

void Save(AxPond pond) - Saves the nut. This creates or updates the fish of record type ^form, which is used to store nuts. If the nut was previously loaded from a pond, the argument must be the same pond.


Stores a nested or referenced nut. This is a nested class. It is used as part of the infrastructure that allows a nut to contain or reference (by name) another nut, and function the same regardless of which type of storage is used.

UsedNut(NutBase p) - Constructor for a nested nut.

UsedNut(string fullname) - Constructor for a referenced nut. The fullname is qualified with the Axis ID.

bool IsNested - Gets whether this is nested.

string FullName - Gets the full name of the reference, or null if the nut is nested.

NutBase Resolve(NutGroup group, NutBase owner) - Gets the instance of the used nut, regardless of which kind of storage is used. Never returns null; throws an exception if not found.


Defines one of several data sources for a list, hyperlink, or bulk operation.

NutDataSource() - Simple constructor

NutDataSource(NutDataSourceKind kind, string tabnleName, NutBase.UsedNut usedNut) - Constructor that sets three fields.

NutDataSource(NutDataSourceKind kind, string tabnleName, NutBase nut) - Constructor that sets three fields.

NutDataSourceKind Kind - See NutDataSourceKind enumeration.

NutBase.UsedNut UsedNut - If the kind is a fishnet or data outsource, then this field either contains or references the FishnetNut or OutsourceNut. Otherwise, UseNut is null.

string TableName - Identifies the table name to use when the kind is Fishnet or Outsource. When the kind is AllOfOneType, then this is the qualified record type name; it becomes the table name of the loaded DataTable.

bool IsValid - Gets whether the data source has valid settings. This only checks for which fields are non-null, not whether the referenced objects exist.


Enumeration of the different kinds of NutDataSources.

Values are None, AllOfOneType (all records of one record type), Fishnet, and Outsource.


Enumeration of the ways a form can show a nut.

  • Design - In this mode, the design is shown first.

  • ResultsFirst - In this mode, the results are shown but the design features are available. (Is not available for all nut types.)

  • ResultsOnly - In this mode, the design features are hidden.

NutFormBase : Form

Base form for all nut windows. You must create an instance of the appropriate derived class, such as ListForm, then call Execute passing a ListNut to that instance.

void Execute(NutEditingContext editingContext, NutGroup group, NutBase nut, Form mdi, INutWindowManager windowManager, IHelpProvider hintSink, AxArgumentSet seedParams, Hyperlink hy) - Show the given nut in the form. The group argument should be the group that the nut was loaded from, but if the nut is not saved, it need not be part of the group. If mdi is non-null, the form is shown as the child of the given MDI form. EditingContext determines in what mode the nut should be shown, and this is implemented differently for different nut types. The hintSink is any class that can display hints. The nutWindowManager is any class that can show other nut windows when required by this window. SeedParams is optional and will be applied to the window's parameter shed. Hy is optional and may be interpreted by derived classes.

void SetCaption() - Sets the form caption to the nut name.

bool SaveNut() - Attempts to save the nut. If there are multiple linked ponds and the nut is new, the user is asked to choose one. Duplicate names are checked. Errors are displayed. Returns true on success.

NutGroup : IFishnetLocator

Container class to cache nuts that have been loaded from one or more ponds. NutGroup can resolves references between nuts.

NutGroup(AxPond pond) - Constructor. Creates a nut group containing the nuts from the given pond and all its linked ponds.

event NutGroupItemEventHandler NutChanged, NutAdded, NutDeleted - Occurs when a nut is changed, added to, or deleted from the nut group.

AxPond MainPond - Gets the pond that was supplied in the constructor.

void NotifyDeletedNut(NutBase nut) - Notifies the group that the nut was deleted; this fires the NutDeleted event.

void NotifyDeletedNut(NutGroupItem it) - Notifies the group that the nut was deleted; this fires the NutDeleted event.

void NotifyChangedNut(NutBase nut, string axisID) - Notifies the group that the nut was changed or added; this fires the NutChanged or NutAdded event.

string[] GetAllFishnetNames() - Gets qualified the names of all fishnet nuts.

string[] GetAllByClass() - Gets the qualified names of all the nuts of the given class name.

NutGroupItem GetItem(string axisID, string name) - Gets the NutGroupItem for a nut identified by Axis ID and name. If not found, throws exception.

NutBase GetNut(string axisID, string name, Type typeCheck) - Gets a nut by name. If not found, throws exception. If typeCheck is non-null and does not match the actual type of the found nut, throws exception.

NutBase GetNut(NutGroupItem it, Type typeCheck) - Gets a nut by item instance. If not found, throws exception. If typeCheck is non-null and does not match the actual type of the found nut, throws exception.

NutBase Refresh(NutBase nut) - Reloads a nut from the pond, and returns it. This is used to roll back changes since the last save.

NutGroupItem[] GetAll() - Gets all items in alpha order. The returned instance may be manipulated by the caller.

bool DuplicateNameExists(string axisID, string name, NutBase excluding) - Determines if a duplicate name exists. Name is unqualified. If excluding is non-null, the given nut is not used as a match; so you would pass in the nut whose name is changing for this argument.


Stores one item in a NutGroup. This does not store the nut itself when first created; only the identifying information. The nut is loaded on first use and cached thereafter.

string FullName - Gets the qualified name

string Name - Gets the unqualified name

string _Class - Gets the class name, such as "AxFishnetNut"

int Key - Gets the key of the fish where the nut is stored.

string AxisID - Gets the Axis ID where the nut is stored.


Enumeration of the nut types: BulkOp, Code, Fishnet, LabelPrint, List, Outsource, Report. Slate, UserDef.


Enumeration of the kinds of data outsources - Code or File.


Enumeration of the file formats that can be loaded in a data outsource:

  • RecordPerLine - files containing one record per line, such as CSV files.

  • AxisXml - Axisbase XML.

  • MsXml - Microsoft XML.

OutsourceForm : NutFormBase

Form to define an OutsourceNut. See NutFormBase for usage.


Base class to load AxDataSets based on OutsourceNut instructions. OutsourceLoader is abstract. Also see derived classes CodeOutsourceLoader, AxXmlOutsourceLoader, MsXmlOutsourceLoader, and LineOutsourceLoader.

static OutsourceLoader Create(OutsourceNut source, bool learnMode, NutGroup nutGroup) - Creates the right kind of OutsourceLoader for the given source. If learnMode is true, its behavior is geared towards when the user is setting up the outsource.

string SuggestedTableName - Gets the suggested table name.

AxDataSet Load(bool overwriteMappings, IProgressVisualizer progress) - Loads data from the outsource. If overwriteMappings is true, the mappings in the OutsourceNut are overwritten based on guesses from the actual loaded data.

AxDataSet CreateSchema(OutsourceTable otab) - Creates an empty dataset based on the columns defined in otab.

OutsourceNut : NutBase

Nut with specifications for loading external files.

OutsourceKind Kind - Specifies the kind of outsource.

OutsourceFileFormat FileFormat - Specifies the file format, if Kind is File.

UsedNut CodeNut - Specifies the source code if Kind is Code.

string CodeMethod - Specifies the method name to call in CodeNut.

string FileName - The input file. If blank or null, the user will be asked each time.

bool Lenient - If true, the import will skip over apparently bad data.

char Delimiter - The character that separates fields in a RecordPerLine file. This may be '\t' (tab)

char Qualifier - The character that surrounds fields in a RecordPerLine file. This is normally a double-quote character.

char DecimalPoint - The character to use for a decimal point.

string DateTimePattern - The pattern to use for date and time imports; this is formatted according to .NET date and time formats, such as "M/d/yyyy".

bool FirstLineContainsFieldNames - If true, the first line of a RecordPerLine file is assumed to contain field names rather than data.

OutsourceTable TopTable - The definition of columns for the top (or only) table in the import.

List<OutsourceTable> GetAllTables() - Get all tables at all nesting levels.

ProgressForm : Form, IProgressVisualizer

Form that implements IProgressVisualizer for use during long-running operations on a single thread. This shows a progress form that blocks user input, except possibly canceling the operation. To use, you MUST call SetupAndShow, then call Finish in a finally block after finishing the operation. You can call ShowProgress any number of times during the operatio. There can be no user input of any kind during the operation.

Cancellation throws an exception, so you must trap exceptions if you allow cancellation.

The form supports collecting a log of messages that the long-running operation produces. If there are any log messages, then the form does not disappear when done, but instead shows the messages and waits for user confirmation.

void SetupAndShow(Form caller, string msg1, string msg2, bool delayedDisplay, bool allowCancel) - Setup and show the form. Msg1 is the top message, while msg2 is the lower message. Caller may be null if not known. If delayedDisplay is true, the form will not show until a half second into the operation. If allowCancel is true, the form may be canceled.

void ShowProgress(double percent, string displayValue, string logText) - Shows progress. This method should be called occasionally during the operation. Percent is a number between 0 and 1 indicating the progress bar level. DisplayValue is shown after the lower message (for example, if the lower message is "Records analyzed: " and displayValue is "3/2400", then it will show the concatenation of those strings. If logText is non null, the text will be appended to the output list.

void Finish() - Closes and disposes the form instance. Shows the log messages as a dialog if there are any.

void Finish(string doneMessage) - Closes and disposes the form instance. Shows the given message as a simple message box. Shows the log messages as a dialog if there are any.

ReportEditForm : NutFormBase

Form to allow editing a ReportNut instance. See NutFormBase for usage.

ReportNut : NutBase

A nut containing specifications for a report. A report a band for the page template and a separate band for the data.

The namespace System.Drawing.Printing is used.

PaperSize PaperSize - Specifies the paper size; this field is initially null.

Margins Margins - Specifies margins.

bool Landscape - If true, prints in landscape.

Band TemplateBand - The band that is repeated on each page. If it exceeds the page size, it is truncated.

Band StretchBand - The band that contains data, usually lists. If it exceeds the page width, it is truncated. If it exceeds the page length, new pages are created until the height is exhausted.

AxParameterShed Parameters - Report-level parameters

ReportViewForm : NutFormBase

A form that displays a report preview and allows printing. See NutFormBase for usage.

ResolverForm : Form

A form that prompts the user for parameter values.

bool ShowDialog(AxParameterShed pshed, IParamReferenceFinder referenceFinder, bool showResolved, bool canShortCircuit, AxPond mainPond) - Show the form as a dialog, and allow the user to enter parameter values. The user's actions change the AxParameterShed instance. The form may be canceled or accepted; it can only be accepted if all values are supplied. The referenceFinder should be coded with the ability to determine if a parameter value is needed in the current context; DataManager implements this functionality. If showResolved is true, all referenced parameters are shown; otherwise only those with no values are shown. If canShortCircuit is true, the method may return without showing a form, if all values are resolved.

RtfReportBuilder : TextReportBuilder

A subclass of TextReportBuilder that has specialized code for working with RTF files.

SlateEditForm : NutFormBase

A form to allow editing a SlateNut instance. See NutFormBase for usage.

SlateNut : NutBase

A nut containing specifications for a slate (window), having one band.

Band Band - The band

AxParameterShed Parameters - Slate-level parameters.

SlateViewForm : NutFormBase

A form that displays a slate (window) for runtime use. See NutFormBase for usage.


Contains methods for simple mailmerge capabilities (without loops), used for email.

The template text used in TextMerger has field codes, which are column names surrounded by # signs. For example, the template could contain "Dear #MARS.person.firstname#,".

TextMerger(string template) - Constructor. Template is the email message or other string that contains field codes.

string Build(DataRow row) - Perform substitutions of field codes based on the given row values.


Base class for mailmerge capabilities using external files. Also see XmlReportBuilder and RtfReportBuilder.

static TextReportBuilder CreateFromFile(string filename) - Creates the appropriate instance of TextReportBuilder or one of its derived classes based on the file name and contents.

void Build(AxDataSet ds, IProgressVisualizer progress) - Build the output file based on the file contents and the given dataset.

string Result - Gets the results of the build process.

void SaveAs(string filename) - Saves the results as a file.

UserDefForm : NutFormBase

A form allowing editing a UserDefNut instance. See NutFormBase for usage.

UserDefNut : NutBase

A nut containing a reference to a user-supplied code, used to build custom nut types.

NutBase.UsedNut Code - Identifies the code where the user-supplied classes exist.

NutDataSource DataSource - Optional data source; may be used depending on the requirements of the external code.

string WindowClassName - Must be nonnull when a window using this UserDefNut is opened in ResultsOnly mode. It names a class that derives from NutFormBase, and which must override the Execute method.

string CellControllerClassName - Must be nonnull when the UserDefNut is invoked by a hyperlink as a nested cell. It names the class that derives from CellController.

XmlReportBuilder : TextReportBuilder

A subclass of TextReportBuilder that has specialized code for working with XML files.

(c) 2014-2015 Divergent Labs, Inc.