{div:style=display:none}
DO NOT EDIT THE CONTENT OF THIS PAGE DIRECTLY (EXCEPT INSIDE THE DIV BELOW WITH ID=DESCRIPTION), UNLESS YOU KNOW WHAT YOU'RE DOING.
		THE STRUCTURE OF THE CONTENT IS VITAL IN BEING ABLE TO AUTO UPDATE THE CONTENT THROUGH THE DOC GENERATOR{div}
{div:id=description}{div}\\ 

{table:id=|class=servoy sReturnTypes}{tr:style=height: 30px;}{th}Return Types{th}{tr}{tr}{td}{span:class=sWordList}[ALIGNMENT]{span}{span:class=sWordList}[ANCHOR]{span}{span:class=sWordList}[BEVELTYPE]{span}{span:class=sWordList}[CURSOR]{span}{span:class=sWordList}[DEFAULTS]{span}{span:class=sWordList}[FONTSTYLE]{span}{span:class=sWordList}[JSBean]{span}{span:class=sWordList}[JSButton]{span}{span:class=sWordList}[JSCalculation]{span}{span:class=sWordList}[JSComponent]{span}{span:class=sWordList}[JSDataSourceNode]{span}{span:class=sWordList}[JSField]{span}{span:class=sWordList}[JSForm]{span}{span:class=sWordList}[JSLabel]{span}{span:class=sWordList}[JSMedia]{span}{span:class=sWordList}[JSMethod]{span}{span:class=sWordList}[JSPart]{span}{span:class=sWordList}[JSPortal]{span}{span:class=sWordList}[JSRelation]{span}{span:class=sWordList}[JSRelationItem]{span}{span:class=sWordList}[JSStyle]{span}{span:class=sWordList}[JSTab]{span}{span:class=sWordList}[JSTabPanel]{span}{span:class=sWordList}[JSValueList]{span}{span:class=sWordList}[JSVariable]{span}{span:class=sWordList}[MEDIAOPTION]{span}{span:class=sWordList}[PAGEORIENTATION]{span}{span:class=sWordList}[PRINTSLIDING]{span}{span:class=sWordList}[SCROLLBAR]{span}{span:class=sWordList}[TITLEJUSTIFICATION]{span}{span:class=sWordList}[TITLEPOSITION]{span}{span:class=sWordList}[UNITS]{span}{td}{tr}{table}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Method Summary{th}{tr}{tbody}{tr}{td}[JSComponent]{td}{td}[#cloneComponent]\(newName, component)
Makes an exact copy of the given component (JSComponent/JSField/JSLabel) and gives it a new name.{td}{tr}{tbody}{tbody}{tr}{td}[JSComponent]{td}{td}[#cloneComponent]\(newName, component, newParentForm)
Makes an exact copy of the given component (JSComponent/JSField/JSLabel), gives it a new name and moves it to a new parent form, specified as a parameter.{td}{tr}{tbody}{tbody}{tr}{td}[JSForm]{td}{td}[#cloneForm]\(newName, jsForm)
Makes an exact copy of the given form and gives it the new name.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#createBevelBorder]\(bevel_type, highlight_outer_color, highlight_inner_color, shadow_outer_color, shadow_inner_color)
Create a bevel border string.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#createEmptyBorder]\(top_width, right_width, bottom_width, left_width)
Create an empty border string.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#createEtchedBorder]\(bevel_type, highlight_color, shadow_color)
Create an etched border string.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#createFont]\(name, style, size)
Create a font string.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#createLineBorder]\(thick, color)
Create a line border string.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#createMatteBorder]\(top_width, right_width, bottom_width, left_width, color)
Create a matte border string.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#createPageFormat]\(width, height, leftmargin, rightmargin, topmargin, bottommargin)
Create a page format string.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#createPageFormat]\(width, height, leftmargin, rightmargin, topmargin, bottommargin, orientation)
Create a page format string.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#createPageFormat]\(width, height, leftmargin, rightmargin, topmargin, bottommargin, orientation, units)
Create a page format string.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#createRoundedBorder]\(top_width, right_width, bottom_width, left_width, top_color, right_color, bottom_color, left_color, rounding_radius, border_style)
Create a special matte border string.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#createSpecialMatteBorder]\(top_width, right_width, bottom_width, left_width, top_color, right_color, bottom_color, left_color, rounding_radius, dash_pattern)
Create a special matte border string.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#createTitledBorder]\(title_text, font, color, title_justification, title_position)
Create a titled border string.{td}{tr}{tbody}{tbody}{tr}{td}[JSDataSourceNode]{td}{td}[#getDataSourceNode]\(dataSource)
Gets the specified data source node and returns information about the form (see JSDataSourceNode node).{td}{tr}{tbody}{tbody}{tr}{td}[JSForm]{td}{td}[#getForm]\(name)
Gets the specified form object and returns information about the form (see JSForm node).{td}{tr}{tbody}{tbody}{tr}{td}[JSForm]\[]{td}{td}[#getForms]\()
Get an array of all forms.{td}{tr}{tbody}{tbody}{tr}{td}[JSForm]\[]{td}{td}[#getForms]\(datasource)
Get an array of forms, that are all based on datasource/servername.{td}{tr}{tbody}{tbody}{tr}{td}[JSForm]\[]{td}{td}[#getForms]\(server, tablename)
Get an array of forms, that are all based on datasource/servername and tablename.{td}{tr}{tbody}{tbody}{tr}{td}[JSMethod]{td}{td}[#getGlobalMethod]\(scopeName, name)
Gets an existing global method by the specified name.{td}{tr}{tbody}{tbody}{tr}{td}[JSMethod]\[]{td}{td}[#getGlobalMethods]\()
The list of all global methods.{td}{tr}{tbody}{tbody}{tr}{td}[JSMethod]\[]{td}{td}[#getGlobalMethods]\(scopeName)
The list of all global methods.{td}{tr}{tbody}{tbody}{tr}{td}[JSVariable]{td}{td}[#getGlobalVariable]\(scopeName, name)
Gets an existing global variable by the specified name.{td}{tr}{tbody}{tbody}{tr}{td}[JSVariable]\[]{td}{td}[#getGlobalVariables]\()
Gets an array of all global variables.{td}{tr}{tbody}{tbody}{tr}{td}[JSVariable]\[]{td}{td}[#getGlobalVariables]\(scopeName)
Gets an array of all global variables.{td}{tr}{tbody}{tbody}{tr}{td}[JSMedia]{td}{td}[#getMedia]\(name)
Gets the specified media object; can be assigned to a button/label.{td}{tr}{tbody}{tbody}{tr}{td}[JSMedia]\[]{td}{td}[#getMediaList]\()
Gets the list of all media objects.{td}{tr}{tbody}{tbody}{tr}{td}[JSRelation]{td}{td}[#getRelation]\(name)
Gets an existing relation by the specified name and returns a JSRelation Object.{td}{tr}{tbody}{tbody}{tr}{td}[JSRelation]\[]{td}{td}[#getRelations]\(datasource)
Gets an array of all relations; or an array of all global relations if the specified table is NULL.{td}{tr}{tbody}{tbody}{tr}{td}[JSRelation]\[]{td}{td}[#getRelations]\(servername, tablename)
Gets an array of all relations; or an array of all global relations if the specified table is NULL.{td}{tr}{tbody}{tbody}{tr}{td}[String]\[]{td}{td}[#getScopeNames]\()
Gets an array of all scope names used.{td}{tr}{tbody}{tbody}{tr}{td}[JSStyle]{td}{td}[#getStyle]\(name)
Gets the style specified by the given name.{td}{tr}{tbody}{tbody}{tr}{td}[JSValueList]{td}{td}[#getValueList]\(name)
Gets an existing valuelist by the specified name and returns a JSValueList Object that can be assigned to a field.{td}{tr}{tbody}{tbody}{tr}{td}[JSValueList]\[]{td}{td}[#getValueLists]\()
Gets an array of all valuelists for the currently active solution.{td}{tr}{tbody}{tbody}{tr}{td}[JSForm]{td}{td}[#newForm]\(name, superForm)
Creates a new form with the given JSForm as its super form.{td}{tr}{tbody}{tbody}{tr}{td}[JSForm]{td}{td}[#newForm]\(name, dataSource, styleName, show_in_menu, width, height)
Creates a new JSForm Object.{td}{tr}{tbody}{tbody}{tr}{td}[JSForm]{td}{td}[#newForm]\(name, serverName, tableName, styleName, show_in_menu, width, height)
Creates a new JSForm Object.{td}{tr}{tbody}{tbody}{tr}{td}[JSMethod]{td}{td}[#newGlobalMethod]\(scopeName, code)
Creates a new global method with the specified code in a scope.{td}{tr}{tbody}{tbody}{tr}{td}[JSVariable]{td}{td}[#newGlobalVariable]\(scopeName, name, type)
Creates a new global variable with the specified name and number type.{td}{tr}{tbody}{tbody}{tr}{td}[JSMedia]{td}{td}[#newMedia]\(name, bytes)
Creates a new media object that can be assigned to a label or a button.{td}{tr}{tbody}{tbody}{tr}{td}[JSRelation]{td}{td}[#newRelation]\(name, primaryDataSource, foreignDataSource, joinType)
Creates a new JSRelation Object with a specified name; includes the primary datasource, foreign datasource and the type of join for the new relation.{td}{tr}{tbody}{tbody}{tr}{td}[JSStyle]{td}{td}[#newStyle]\(name, content)
Creates a new style with the given css content string under the given name.{td}{tr}{tbody}{tbody}{tr}{td}[JSValueList]{td}{td}[#newValueList]\(name, type)
Creates a new valuelist with the specified name and number type.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#removeForm]\(name)
Removes the specified form during the persistent connected client session.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#removeGlobalMethod]\(scopeName, name)
Removes the specified global method.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#removeGlobalVariable]\(scopeName, name)
Removes the specified global variable.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#removeMedia]\(name)
Removes the media item specified by name.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#removeRelation]\(name)
Removes the relation specified by name.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#removeStyle]\(name)
Removes the specified style.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#removeValueList]\(name)
Removes the specified valuelist.{td}{tr}{tbody}{tbody}{tr}{td}[JSForm]{td}{td}[#revertForm]\(name)
Reverts the specified form to the original (blueprint) version of the form; will result in an exception error if the form is not an original form.{td}{tr}{tbody}{tbody}{tr}{td}[JSMethod]{td}{td}[#wrapMethodWithArguments]\(method, args)
Get a JSMethod instance with arguments to be assigned to an event.{td}{tr}{tbody}{table}\\ 

{table:id=function|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody:id=cloneComponent-String_JSComponent}{tr:id=name}{td}h6.cloneComponent{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSComponent]{span}{span:style=font-weight: bold;}cloneComponent{span}{span}\(newName, component){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} newName -- the new name of the cloned component
\{[JSComponent]} component -- the component to clone
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSComponent] -- the exact copy of the given component{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// get an existing field to clone.
var field = solutionModel.getForm("formWithField").getField("fieldName");
// make a clone/copy of the field
var clone = solutionModel.cloneComponent("clonedField",field);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=cloneComponent-String_JSComponent_JSForm}{tr:id=name}{td}h6.cloneComponent{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSComponent]{span}{span:style=font-weight: bold;}cloneComponent{span}{span}\(newName, component, newParentForm){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} newName -- the new name of the cloned component
\{[JSComponent]} component -- the component to clone
\{[JSForm]} newParentForm -- the new parent form
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSComponent] -- the exact copy of the given component{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// get an existing field to clone.
var field = solutionModel.getForm("formWithField").getField("fieldName");
// get the target form for the copied/cloned field
var form = solutionModel.getForm("targetForm");
// make a clone/copy of the field and re parent it to the target form.
var clone = solutionModel.cloneComponent("clonedField",field,form);
// show it
forms["targetForm"].controller.show();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=cloneForm-String_JSForm}{tr:id=name}{td}h6.cloneForm{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSForm]{span}{span:style=font-weight: bold;}cloneForm{span}{span}\(newName, jsForm){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} newName -- the new name for the form clone
\{[JSForm]} jsForm -- the form to be cloned
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSForm] -- a JSForm{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// get an existing form
var form = solutionModel.getForm("existingForm")
// make a clone/copy from it
var clone = solutionModel.cloneForm("clonedForm", form)
// add a new label to the clone
clone.newLabel("added label",50,50,80,20);
// show it
forms["clonedForm"].controller.show();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createBevelBorder-Number_String_String_String_String}{tr:id=name}{td}h6.createBevelBorder{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}createBevelBorder{span}{span}\(bevel_type, highlight_outer_color, highlight_inner_color, shadow_outer_color, shadow_inner_color){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[Number]} bevel_type -- bevel border type (SM\_BEVELTYPE.RAISED or SM\_BEVELTYPE.LOWERED)
\{[String]} highlight_outer_color -- bevel border highlight outer color
\{[String]} highlight_inner_color -- bevel border highlight inner color
\{[String]} shadow_outer_color -- bevel border shadow outer color
\{[String]} shadow_inner_color -- bevel border shadow outer color
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var form = solutionModel.getForm("someForm");
form.borderType = solutionModel.createBevelBorder(SM_BEVELTYPE.RAISED,'#ff0000','#00ff00','#ff0000','#00ff00');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createEmptyBorder-Number_Number_Number_Number}{tr:id=name}{td}h6.createEmptyBorder{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}createEmptyBorder{span}{span}\(top_width, right_width, bottom_width, left_width){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[Number]} top_width -- top width of empty border in pixels
\{[Number]} right_width -- right width of empty border in pixels
\{[Number]} bottom_width -- bottom width of empty border in pixels
\{[Number]} left_width -- left width of empty border in pixels
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var form = solutionModel.getForm("someForm");
form.borderType = solutionModel.createEmptyBorder(1,1,1,1);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createEtchedBorder-Number_String_String}{tr:id=name}{td}h6.createEtchedBorder{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}createEtchedBorder{span}{span}\(bevel_type, highlight_color, shadow_color){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[Number]} bevel_type -- bevel border type
\{[String]} highlight_color -- bevel border highlight color
\{[String]} shadow_color -- bevel border shadow color
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var form = solutionModel.getForm("someForm");
form.borderType = solutionModel.createEtchedBorder(SM_BEVELTYPE.RAISED,'#ff0000','#00ff00');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createFont-String_Number_Number}{tr:id=name}{td}h6.createFont{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}createFont{span}{span}\(name, style, size){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the name of the font
\{[Number]} style -- the style of the font (PLAIN, BOLD, ITALIC or BOLD+ITALIC)
\{[Number]} size -- the font size
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var form = solutionModel.getForm("someForm");
var component = form.getComponent("someComponent")
component.fontType = solutionModel.createFont('Arial',SM_FONTSTYLE.BOLD,14);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createLineBorder-Number_String}{tr:id=name}{td}h6.createLineBorder{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}createLineBorder{span}{span}\(thick, color){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[Number]} thick -- border thickness in pixels
\{[String]} color -- color of the line border
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var form = solutionModel.getForm("someForm");
form.borderType = solutionModel.createLineBorder(1,'#ff0000');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createMatteBorder-Number_Number_Number_Number_String}{tr:id=name}{td}h6.createMatteBorder{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}createMatteBorder{span}{span}\(top_width, right_width, bottom_width, left_width, color){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[Number]} top_width -- top width of matte border in pixels
\{[Number]} right_width -- right width of matte border in pixels
\{[Number]} bottom_width -- bottom width of matte border in pixels
\{[Number]} left_width -- left width of matte border in pixels
\{[String]} color -- border color
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var form = solutionModel.getForm("someForm");
form.borderType = solutionModel.createMatteBorder(1,1,1,1,"#00ff00");
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createPageFormat-Number_Number_Number_Number_Number_Number}{tr:id=name}{td}h6.createPageFormat{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}createPageFormat{span}{span}\(width, height, leftmargin, rightmargin, topmargin, bottommargin){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[Number]} width -- the specified width of the page to be printed.
\{[Number]} height -- the specified height of the page to be printed.
\{[Number]} leftmargin -- the specified left margin of the page to be printed.
\{[Number]} rightmargin -- the specified right margin of the page to be printed.
\{[Number]} topmargin -- the specified top margin of the page to be printed.
\{[Number]} bottommargin -- the specified bottom margin of the page to be printed.
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var form = solutionModel.getForm("someForm");
form.defaultPageFormat = solutionModel.createPageFormat(612,792,72,72,72,72,SM_ORIENTATION.PORTRAIT,SM_UNITS.PIXELS);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createPageFormat-Number_Number_Number_Number_Number_Number_Number}{tr:id=name}{td}h6.createPageFormat{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}createPageFormat{span}{span}\(width, height, leftmargin, rightmargin, topmargin, bottommargin, orientation){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[Number]} width -- the specified width of the page to be printed.
\{[Number]} height -- the specified height of the page to be printed.
\{[Number]} leftmargin -- the specified left margin of the page to be printed.
\{[Number]} rightmargin -- the specified right margin of the page to be printed.
\{[Number]} topmargin -- the specified top margin of the page to be printed.
\{[Number]} bottommargin -- the specified bottom margin of the page to be printed.
\{[Number]} orientation -- the specified orientation of the page to be printed; the default is Portrait mode
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var form = solutionModel.getForm("someForm");
form.defaultPageFormat = solutionModel.createPageFormat(612,792,72,72,72,72,SM_ORIENTATION.PORTRAIT,SM_UNITS.PIXELS);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createPageFormat-Number_Number_Number_Number_Number_Number_Number_Number}{tr:id=name}{td}h6.createPageFormat{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}createPageFormat{span}{span}\(width, height, leftmargin, rightmargin, topmargin, bottommargin, orientation, units){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[Number]} width -- the specified width of the page to be printed.
\{[Number]} height -- the specified height of the page to be printed.
\{[Number]} leftmargin -- the specified left margin of the page to be printed.
\{[Number]} rightmargin -- the specified right margin of the page to be printed.
\{[Number]} topmargin -- the specified top margin of the page to be printed.
\{[Number]} bottommargin -- the specified bottom margin of the page to be printed.
\{[Number]} orientation -- the specified orientation of the page to be printed; the default is Portrait mode
\{[Number]} units -- the specified units for the width and height of the page to be printed; the default is pixels
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var form = solutionModel.getForm("someForm");
form.defaultPageFormat = solutionModel.createPageFormat(612,792,72,72,72,72,SM_ORIENTATION.PORTRAIT,SM_UNITS.PIXELS);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createRoundedBorder-Number_Number_Number_Number_String_String_String_String_NumberArray_StringArray}{tr:id=name}{td}h6.createRoundedBorder{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}createRoundedBorder{span}{span}\(top_width, right_width, bottom_width, left_width, top_color, right_color, bottom_color, left_color, rounding_radius, border_style){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[Number]} top_width -- top width of matte border in pixels
\{[Number]} right_width -- right width of matte border in pixels
\{[Number]} bottom_width -- bottom width of matte border in pixels
\{[Number]} left_width -- left width of matte border in pixels
\{[String]} top_color -- top border color
\{[String]} right_color -- right border color
\{[String]} bottom_color -- bottom border color
\{[String]} left_color -- left border color
\{[Number]\[]} rounding_radius -- array with width/height of the arc to round the corners
\{[String]\[]} border_style -- the border styles for the four margins(top/left/bottom/left)
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var form = solutionModel.getForm("someForm");
// create a rectangle border (no rounded corners) and continous line
form.borderType = solutionModel.createSpecialMatteBorder(1,1,1,1,"#00ff00","#00ff00","#00ff00","#00ff00",0,null);
// create a border with rounded corners and dashed line (25 pixels drawn, then 25 pixels skipped)
// rounding_radius is an array of up to 8 numbers, order is: top-left,top-right,bottom-right,bottom-left (repetead twice - for width and height)
// form.borderType = solutionModel.createSpecialMatteBorder(1,1,1,1,"#00ff00","#00ff00","#00ff00","#00ff00",new Array(10,10,10,10),new Array(25,25));
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createSpecialMatteBorder-Number_Number_Number_Number_String_String_String_String_Number_NumberArray}{tr:id=name}{td}h6.createSpecialMatteBorder{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}createSpecialMatteBorder{span}{span}\(top_width, right_width, bottom_width, left_width, top_color, right_color, bottom_color, left_color, rounding_radius, dash_pattern){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[Number]} top_width -- top width of matte border in pixels
\{[Number]} right_width -- right width of matte border in pixels
\{[Number]} bottom_width -- bottom width of matte border in pixels
\{[Number]} left_width -- left width of matte border in pixels
\{[String]} top_color -- top border color
\{[String]} right_color -- right border color
\{[String]} bottom_color -- bottom border color
\{[String]} left_color -- left border color
\{[Number]} rounding_radius -- width of the arc to round the corners
\{[Number]\[]} dash_pattern -- the dash pattern of border stroke
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var form = solutionModel.getForm("someForm");
// create a rectangle border (no rounded corners) and continous line
form.borderType = solutionModel.createSpecialMatteBorder(1,1,1,1,"#00ff00","#00ff00","#00ff00","#00ff00",0,null);
// create a border with rounded corners and dashed line (25 pixels drawn, then 25 pixels skipped)
// form.borderType = solutionModel.createSpecialMatteBorder(1,1,1,1,"#00ff00","#00ff00","#00ff00","#00ff00",10,new Array(25,25));
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createTitledBorder-String_String_String_Number_Number}{tr:id=name}{td}h6.createTitledBorder{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}createTitledBorder{span}{span}\(title_text, font, color, title_justification, title_position){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} title_text -- the text from border
\{[String]} font -- title text font string
\{[String]} color -- border color
\{[Number]} title_justification -- title text justification
\{[Number]} title_position -- bevel title text position
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var form = solutionModel.getForm("someForm");
form.borderType = solutionModel.createTitledBorder('Test',solutionModel.createFont('Arial',SM_FONTSTYLE.PLAIN,10),'#ff0000',SM_TITLEJUSTIFICATION.CENTER,SM_TITLEPOSITION.TOP);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getDataSourceNode-String}{tr:id=name}{td}h6.getDataSourceNode{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSDataSourceNode]{span}{span:style=font-weight: bold;}getDataSourceNode{span}{span}\(dataSource){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} dataSource -- table data source
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSDataSourceNode] -- a JSDataSourceNode{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var dsnode = solutionModel.getDataSourceNode('db:/example_data/customers');
var c = dsnode.getCalculation("myCalculation");
application.output("Name: " + c.getName() + ", Stored: " + c.isStored());
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getForm-String}{tr:id=name}{td}h6.getForm{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSForm]{span}{span:style=font-weight: bold;}getForm{span}{span}\(name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the specified name of the form
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSForm] -- a JSForm{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var myForm = solutionModel.getForm('existingFormName');
//get the style of the form (for all other properties see JSForm node)
var styleName = myForm.styleName;
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getForms}{tr:id=name}{td}h6.getForms{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSForm]\[]{span}{span:style=font-weight: bold;}getForms{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSForm]\[] -- an array of JSForm type elements{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var forms = solutionModel.getForms()
for (var i in forms)
	application.output(forms[i].name)
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getForms-String}{tr:id=name}{td}h6.getForms{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSForm]\[]{span}{span:style=font-weight: bold;}getForms{span}{span}\(datasource){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} datasource -- the datasource or servername
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSForm]\[] -- an array of JSForm type elements{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var forms = solutionModel.getForms(datasource)
for (var i in forms)
	application.output(forms[i].name)
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getForms-String_String}{tr:id=name}{td}h6.getForms{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSForm]\[]{span}{span:style=font-weight: bold;}getForms{span}{span}\(server, tablename){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} server -- the datasource or servername
\{[String]} tablename -- the tablename
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSForm]\[] -- an array of JSForm type elements{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var forms = solutionModel.getForms(datasource,tablename)
for (var i in forms)
	application.output(forms[i].name)
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getGlobalMethod-String_String}{tr:id=name}{td}h6.getGlobalMethod{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSMethod]{span}{span:style=font-weight: bold;}getGlobalMethod{span}{span}\(scopeName, name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} scopeName -- the scope in which the method is searched
\{[String]} name -- the name of the specified global method
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSMethod] -- a JSMethod{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var method = solutionModel.getGlobalMethod('globals', 'nameOfGlobalMethod'); 
if (method != null) application.output(method.code);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getGlobalMethods}{tr:id=name}{td}h6.getGlobalMethods{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSMethod]\[]{span}{span:style=font-weight: bold;}getGlobalMethods{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSMethod]\[] -- an array of JSMethod type elements{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var methods = solutionModel.getGlobalMethods('globals'); 
for (var x in methods) 
	application.output(methods[x].getName());
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getGlobalMethods-String}{tr:id=name}{td}h6.getGlobalMethods{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSMethod]\[]{span}{span:style=font-weight: bold;}getGlobalMethods{span}{span}\(scopeName){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} scopeName -- limit to global methods of specified scope name
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSMethod]\[] -- an array of JSMethod type elements{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var methods = solutionModel.getGlobalMethods('globals'); 
for (var x in methods) 
	application.output(methods[x].getName());
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getGlobalVariable-String_String}{tr:id=name}{td}h6.getGlobalVariable{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSVariable]{span}{span:style=font-weight: bold;}getGlobalVariable{span}{span}\(scopeName, name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} scopeName -- the scope in which the variable is searched
\{[String]} name -- the specified name of the global variable
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSVariable] -- a JSVariable{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var globalVariable = solutionModel.getGlobalVariable('globals', 'globalVariableName');
application.output(globalVariable.name + " has the default value of " + globalVariable.defaultValue);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getGlobalVariables}{tr:id=name}{td}h6.getGlobalVariables{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSVariable]\[]{span}{span:style=font-weight: bold;}getGlobalVariables{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSVariable]\[] -- an array of JSVariable type elements{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var globalVariables = solutionModel.getGlobalVariables('globals');
for (var i in globalVariables)
	application.output(globalVariables[i].name + " has the default value of " + globalVariables[i].defaultValue);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getGlobalVariables-String}{tr:id=name}{td}h6.getGlobalVariables{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSVariable]\[]{span}{span:style=font-weight: bold;}getGlobalVariables{span}{span}\(scopeName){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} scopeName -- limit to global vars of specified scope name
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSVariable]\[] -- an array of JSVariable type elements{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var globalVariables = solutionModel.getGlobalVariables('globals');
for (var i in globalVariables)
	application.output(globalVariables[i].name + " has the default value of " + globalVariables[i].defaultValue);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getMedia-String}{tr:id=name}{td}h6.getMedia{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSMedia]{span}{span:style=font-weight: bold;}getMedia{span}{span}\(name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the specified name of the media object
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSMedia] -- a JSMedia element{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var myMedia = solutionModel.getMedia('button01.gif')
//now set the imageMedia property of your label or button
//myButton.imageMedia = myMedia
// OR
//myLabel.imageMedia = myMedia
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getMediaList}{tr:id=name}{td}h6.getMediaList{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSMedia]\[]{span}{span:style=font-weight: bold;}getMediaList{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSMedia]\[] -- a list with all the media objects.{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var mediaList = solutionModel.getMediaList();
if (mediaList.length != 0 && mediaList != null) {
	for (var x in mediaList) {
		application.output(mediaList[x]);
	}
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getRelation-String}{tr:id=name}{td}h6.getRelation{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSRelation]{span}{span:style=font-weight: bold;}getRelation{span}{span}\(name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the specified name of the relation
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSRelation] -- a JSRelation{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var relation = solutionModel.getRelation('name');
application.output("The primary server name is " + relation.primaryServerName);
application.output("The primary table name is " + relation.primaryTableName); 
application.output("The foreign table name is " + relation.foreignTableName); 
application.output("The relation items are " + relation.getRelationItems());
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getRelations-String}{tr:id=name}{td}h6.getRelations{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSRelation]\[]{span}{span:style=font-weight: bold;}getRelations{span}{span}\(datasource){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} datasource -- the specified name of the datasource for the specified table
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSRelation]\[] -- an array of all relations (all elements in the array are of type JSRelation){div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var relations = solutionModel.getRelations('server_name','table_name');
if (relations.length != 0)
	for (var i in relations)
		application.output(relations[i].name);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getRelations-String_String}{tr:id=name}{td}h6.getRelations{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSRelation]\[]{span}{span:style=font-weight: bold;}getRelations{span}{span}\(servername, tablename){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} servername -- the specified name of the server for the specified table
\{[String]} tablename -- the specified name of the table
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSRelation]\[] -- an array of all relations (all elements in the array are of type JSRelation){div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var relations = solutionModel.getRelations('server_name','table_name');
if (relations.length != 0)
	for (var i in relations)
		application.output(relations[i].name);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getScopeNames}{tr:id=name}{td}h6.getScopeNames{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]\[]{span}{span:style=font-weight: bold;}getScopeNames{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]\[] -- an array of String scope names{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var scopeNames = solutionModel.getScopeNames();
for (var name in scopeNames)
	application.output(name);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getStyle-String}{tr:id=name}{td}h6.getStyle{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSStyle]{span}{span:style=font-weight: bold;}getStyle{span}{span}\(name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the specified name of the style
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSStyle] -- a JSStyle{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var style = solutionModel.getStyle('my_existing_style')
style.content = 'combobox { color: #0000ff;font: italic 10pt "Verdana";}'
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getValueList-String}{tr:id=name}{td}h6.getValueList{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSValueList]{span}{span:style=font-weight: bold;}getValueList{span}{span}\(name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the specified name of the valuelist
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSValueList] -- a JSValueList object{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var myValueList = solutionModel.getValueList('myValueListHere')
//now set the valueList property of your field
//myField.valuelist = myValueList
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getValueLists}{tr:id=name}{td}h6.getValueLists{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSValueList]\[]{span}{span:style=font-weight: bold;}getValueLists{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSValueList]\[] -- an array of JSValueList objects{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var valueLists = solutionModel.getValueLists();
if (valueLists != null && valueLists.length != 0)
	for (var i in valueLists)
		application.output(valueLists[i].name);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newForm-String_JSForm}{tr:id=name}{td}h6.newForm{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSForm]{span}{span:style=font-weight: bold;}newForm{span}{span}\(name, superForm){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- The name of the new form
\{[JSForm]} superForm -- the super form that will extended from, see JSform.setExtendsForm();
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSForm] -- a new JSForm object{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//creates 2 forms with elements on them; shows the parent form, waits 2 seconds and shows the child form
var mySuperForm = solutionModel.newForm('mySuperForm', 'db:/my_server/my_table', null, false, 800, 600);
var label1 = mySuperForm.newLabel('LabelName', 20, 20, 120, 30);
label1.text = 'DataProvider';
label1.background = 'red';
mySuperForm.newTextField('myDataProvider', 140, 20, 140,20);
forms['mySuperForm'].controller.show();
application.sleep(2000);
var mySubForm = solutionModel.newForm('mySubForm', mySuperForm);
var label2 = mySuperForm.newLabel('SubForm Label', 20, 120, 120, 30);
label2.background = 'green';
forms['mySuperForm'].controller.recreateUI();
forms['mySubForm'].controller.show();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newForm-String_String_String_Boolean_Number_Number}{tr:id=name}{td}h6.newForm{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSForm]{span}{span:style=font-weight: bold;}newForm{span}{span}\(name, dataSource, styleName, show_in_menu, width, height){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the specified name of the form
\{[String]} dataSource -- the specified name of the datasource for the specified table
\{[String]} styleName -- the specified style
\{[Boolean]} show_in_menu -- if true show the name of the new form in the menu; or false for not showing
\{[Number]} width -- the width of the form in pixels
\{[Number]} height -- the height of the form in pixels
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSForm] -- a new JSForm object{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var myForm = solutionModel.newForm('newForm', 'db:/my_server/my_table', 'myStyleName', false, 800, 600)
//now you can add stuff to the form (under JSForm node)
//add a label
myForm.newLabel('Name', 20, 20, 120, 30)
//add a "normal" text entry field
myForm.newTextField('dataProviderNameHere', 140, 20, 140,20)
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newForm-String_String_String_String_Boolean_Number_Number}{tr:id=name}{td}h6.newForm{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSForm]{span}{span:style=font-weight: bold;}newForm{span}{span}\(name, serverName, tableName, styleName, show_in_menu, width, height){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the specified name of the form
\{[String]} serverName -- the specified name of the server for the specified table
\{[String]} tableName -- the specified name of the table
\{[String]} styleName -- the specified style
\{[Boolean]} show_in_menu -- if true show the name of the new form in the menu; or false for not showing
\{[Number]} width -- the width of the form in pixels
\{[Number]} height -- the height of the form in pixels
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSForm] -- a new JSForm object{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var myForm = solutionModel.newForm('newForm', 'my_server', 'my_table', 'myStyleName', false, 800, 600)
//With only a datasource:
//var myForm = solutionModel.newForm('newForm', datasource, 'myStyleName', false, 800, 600)
//now you can add stuff to the form (under JSForm node)
//add a label
myForm.newLabel('Name', 20, 20, 120, 30)
//add a "normal" text entry field
myForm.newTextField('dataProviderNameHere', 140, 20, 140,20)
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newGlobalMethod-String_String}{tr:id=name}{td}h6.newGlobalMethod{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSMethod]{span}{span:style=font-weight: bold;}newGlobalMethod{span}{span}\(scopeName, code){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} scopeName -- the scope in which the method is created
\{[String]} code -- the specified code for the global method
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSMethod] -- a JSMethod object{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var method = solutionModel.newGlobalMethod('globals', 'function myglobalmethod(){foundset.newRecord()}')
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newGlobalVariable-String_String_Number}{tr:id=name}{td}h6.newGlobalVariable{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSVariable]{span}{span:style=font-weight: bold;}newGlobalVariable{span}{span}\(scopeName, name, type){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} scopeName -- the scope in which the variable is created
\{[String]} name -- the specified name for the global variable
\{[Number]} type -- the specified number type for the global variable
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSVariable] -- a JSVariable object{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var myGlobalVariable = solutionModel.newGlobalVariable('globals', 'newGlobalVariable', JSVariable.INTEGER); 
myGlobalVariable.defaultValue = 12;
//myGlobalVariable.defaultValue = "{a:'First letter',b:'Second letter'}" // an js object, type must be media.
//myGlobalVariable.defaultValue = '"some text"'; // Use two pairs of quotes if you want to assign a String as default value.
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newMedia-String_byteArray}{tr:id=name}{td}h6.newMedia{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSMedia]{span}{span:style=font-weight: bold;}newMedia{span}{span}\(name, bytes){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- The name of the new media
\{byte[]} bytes -- The content
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSMedia] -- a JSMedia object{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var myMedia = solutionModel.newMedia('button01.gif',bytes)
//now set the imageMedia property of your label or button
//myButton.imageMedia = myMedia
// OR
//myLabel.imageMedia = myMedia
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newRelation-String_String_String_Number}{tr:id=name}{td}h6.newRelation{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSRelation]{span}{span:style=font-weight: bold;}newRelation{span}{span}\(name, primaryDataSource, foreignDataSource, joinType){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the specified name of the new relation
\{[String]} primaryDataSource -- the specified name of the primary datasource
\{[String]} foreignDataSource -- the specified name of the foreign datasource
\{[Number]} joinType -- the type of join for the new relation; JSRelation.INNER\_JOIN, JSRelation.LEFT\_OUTER\_JOIN
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSRelation] -- a JSRelation object{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var rel = solutionModel.newRelation('myRelation', myPrimaryDataSource, myForeignDataSource, JSRelation.INNER_JOIN);
application.output(rel.getRelationItems());
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newStyle-String_String}{tr:id=name}{td}h6.newStyle{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSStyle]{span}{span:style=font-weight: bold;}newStyle{span}{span}\(name, content){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the name of the new style
\{[String]} content -- the css content of the new style
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSStyle] -- a JSStyle object{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var form = solutionModel.newForm('myForm','db:/my_server/my_table',null,true,1000,800);
if (form.transparent == false)
{
	var style = solutionModel.newStyle('myStyle','form { background-color: yellow; }');
	style.text = style.text + 'field { background-color: blue; }';
	form.styleName = 'myStyle';
}
var field = form.newField('columnTextDataProvider',JSField.TEXT_FIELD,100,100,100,50);
forms['myForm'].controller.show();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newValueList-String_Number}{tr:id=name}{td}h6.newValueList{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSValueList]{span}{span:style=font-weight: bold;}newValueList{span}{span}\(name, type){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the specified name for the valuelist
\{[Number]} type -- the specified number type for the valuelist; may be JSValueList.CUSTOM\_VALUES, JSValueList.DATABASE\_VALUES, JSValueList.EMPTY\_VALUE\_ALWAYS, JSValueList.EMPTY\_VALUE\_NEVER
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSValueList] -- a JSValueList object{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var vl1 = solutionModel.newValueList("customText",JSValueList.CUSTOM_VALUES);
vl1.customValues = "customvalue1\ncustomvalue2";
var vl2 = solutionModel.newValueList("customid",JSValueList.CUSTOM_VALUES);
vl2.customValues = "customvalue1|1\ncustomvalue2|2";
var form = solutionModel.newForm("customValueListForm",controller.getDataSource(),null,true,300,300);
var combo1 = form.newComboBox("scopes.globals.text",10,10,120,20);
combo1.valuelist = vl1;
var combo2 = form.newComboBox("scopes.globals.id",10,60,120,20);
combo2.valuelist = vl2;
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeForm-String}{tr:id=name}{td}h6.removeForm{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Boolean]{span}{span:style=font-weight: bold;}removeForm{span}{span}\(name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the specified name of the form to remove
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean] -- true is form has been removed, false if form could not be removed{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//first remove it from the current history, to destroy any active form instance
var success = history.removeForm('myForm')
//removes the named form from this session, please make sure you called history.remove() first
if(success)
{
	solutionModel.removeForm('myForm')
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeGlobalMethod-String_String}{tr:id=name}{td}h6.removeGlobalMethod{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Boolean]{span}{span:style=font-weight: bold;}removeGlobalMethod{span}{span}\(scopeName, name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} scopeName -- the scope in which the method is declared
\{[String]} name -- the name of the global method to be removed
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean] -- true if the removal was successful, false otherwise{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var m1 = solutionModel.newGlobalMethod('globals', 'function myglobalmethod1(){application.output("Global Method 1");}');
var m2 = solutionModel.newGlobalMethod('globals', 'function myglobalmethod2(){application.output("Global Method 2");}');

var success = solutionModel.removeGlobalMethod('globals', 'myglobalmethod1');
if (success == false) application.output('!!! myglobalmethod1 could not be removed !!!');

var list = solutionModel.getGlobalMethods('globals');
for (var i = 0; i < list.length; i++) { 
	application.output(list[i].code);
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeGlobalVariable-String_String}{tr:id=name}{td}h6.removeGlobalVariable{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Boolean]{span}{span:style=font-weight: bold;}removeGlobalVariable{span}{span}\(scopeName, name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} scopeName -- the scope in which the variable is declared
\{[String]} name -- the name of the global variable to be removed
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean] -- true if the removal was successful, false otherwise{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var v1 = solutionModel.newGlobalVariable('globals', 'globalVar1', JSVariable.INTEGER);
var v2 = solutionModel.newGlobalVariable('globals', 'globalVar2', JSVariable.TEXT);

var success = solutionModel.removeGlobalVariable('globals', 'globalVar1');
if (success == false) application.output('!!! globalVar1 could not be removed !!!');

var list = solutionModel.getGlobalVariables('globals');
for (var i = 0; i < list.length; i++) {
	application.output(list[i].name + '[ ' + list[i].variableType + ']: ' + list[i].variableType);
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeMedia-String}{tr:id=name}{td}h6.removeMedia{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Boolean]{span}{span:style=font-weight: bold;}removeMedia{span}{span}\(name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the name of the media item to be removed
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean] -- true if the removal was successful, false otherwise{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var bytes1 = plugins.file.readFile('D:/Imgs/image1.png');
var image1 = solutionModel.newMedia('image1.png', bytes1);
var bytes2 = plugins.file.readFile('D:/Imgs/image2.jpg');
var image2 = solutionModel.newMedia('image2.jpg',bytes2);
var bytes3 = plugins.file.readFile('D:/Imgs/image3.jpg');
var image3 = solutionModel.newMedia('image3.jpg',bytes3);

var f = solutionModel.newForm("newForm",databaseManager.getDataSource('example_data', 'orders'),null,false,500,350);
var l = f.newLabel('', 20, 70, 300, 200);
l.imageMedia = image1;
l.borderType =  solutionModel.createLineBorder(4,'#ff0000');
forms["newForm"].controller.show();

var status = solutionModel.removeMedia('image1.jpg');
if (status) application.output("image1.png has been removed");
else application.output("image1.png has not been removed");

var mediaList = solutionModel.getMediaList();
for (var i = 0; i < mediaList.length; i++) {
	application.output(mediaList[i].getName() + ":" + mediaList[i].mimeType);
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeRelation-String}{tr:id=name}{td}h6.removeRelation{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Boolean]{span}{span:style=font-weight: bold;}removeRelation{span}{span}\(name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the name of the relation to be removed
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean] -- true if the removal was successful, false otherwise{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var success = solutionModel.removeRelation('myRelation');
if (success) { application.output("Relation has been removed");}
else {application.output("Relation could not be removed");}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeStyle-String}{tr:id=name}{td}h6.removeStyle{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Boolean]{span}{span:style=font-weight: bold;}removeStyle{span}{span}\(name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the name of the style to be removed
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean] -- true if the removal was successful, false otherwise{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var s = solutionModel.newStyle("smStyle1",'form { background-color: yellow; }');
var status = solutionModel.removeStyle("smStyle1");
if (status == false) application.output("Could not remove style.");
else application.output("Style removed.");
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeValueList-String}{tr:id=name}{td}h6.removeValueList{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Boolean]{span}{span:style=font-weight: bold;}removeValueList{span}{span}\(name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- name of the valuelist to be removed
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean] -- true if the removal was successful, false otherwise{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var vlName = "customValueList";
var vl = solutionModel.newValueList(vlName,JSValueList.CUSTOM_VALUES);
vl.customValues = "customvalue1\ncustomvalue2";

var status = solutionModel.removeValueList(vlName);
if (status) application.output("Removal has been done.");
else application.output("ValueList not removed.");

var vls = solutionModel.getValueLists();
if (vls != null) {
	for (var i = 0; i < vls.length; i++) {
		application.output(vls[i]);
	}
	application.output("");
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=revertForm-String}{tr:id=name}{td}h6.revertForm{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSForm]{span}{span:style=font-weight: bold;}revertForm{span}{span}\(name){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} name -- the specified name of the form to revert
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSForm] -- a JSForm object{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// revert the form to the original solution form, removing any changes done to it through the solution model.
var revertedForm = solutionModel.revertForm('myForm')
// add a label on a random place.
revertedForm.newLabel("MyLabel",Math.random()*100,Math.random()*100,80,20);
// make sure that the ui is up to date.
forms.myForm.controller.recreateUI();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=wrapMethodWithArguments-JSMethod_ObjectArray}{tr:id=name}{td}h6.wrapMethodWithArguments{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSMethod]{span}{span:style=font-weight: bold;}wrapMethodWithArguments{span}{span}\(method, args){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[JSMethod]} method -- JSMethod to be assigned to an event
\{[Object]...} args -- positional arguments
{div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSMethod] -- a JSMethod{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var str = "John's Bookstore"
var form = solutionModel.getForm('orders')
var button = form.getButton('abutton')
var method = form.getFormMethod('doit') // has 4 arguments: event (fixed), boolean, number and string
// string arguments have to be quoted, they are interpreted before the method is called
var quotedString = "'"+utils.stringReplace(str, "'", "\\'")+"'"
// list all arguments the method has, use nulls for fixed arguments (like event)
button.onAction = solutionModel.wrapMethodWithArguments(method, [null, true, 42, quotedString])
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}