{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 sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Constants Summary{th}{tr}{tbody}{tr}{td}[Number]{td}{td}[#BODY]
Constant use for specifying the type of form parts.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#FOOTER]
Constant use for specifying the type of form parts.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#HEADER]
Constant use for specifying the type of form parts.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#LEADING_GRAND_SUMMARY]
Constant use for specifying the type of form parts.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#LEADING_SUBSUMMARY]
Constant use for specifying the type of form parts.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#TITLE_FOOTER]
Constant use for specifying the type of form parts.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#TITLE_HEADER]
Constant use for specifying the type of form parts.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#TRAILING_GRAND_SUMMARY]
Constant use for specifying the type of form parts.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#TRAILING_SUBSUMMARY]
Constant use for specifying the type of form parts.{td}{tr}{tbody}{table}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Property Summary{th}{tr}{tbody}{tr}{td}[Boolean]{td}{td}[#allowBreakAcrossPageBounds]
When set, the remainder of a selected part that does not fit on the page currently 
being printed, will not be transported to the next page \- it will break where the page 
ends and continue on the next page.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#background]
The background color of the form part.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#discardRemainderAfterBreak]
When set, the remainder of a selected part that is broken due to the page 
ending will not be printed on the next page \- it will be discarded.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#groupbyDataProviderIDs]
For Leading Subsummary or Trailing Subsummary parts, one or more
dataproviders can be added as Break (GroupBy) dataproviders.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#height]
The height of a selected part; specified in pixels.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#pageBreakAfterOccurrence]
A page break will be inserted after a specified number of occurences of a selected part.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#pageBreakBefore]
When set, a page break will be inserted before each occurrence of a selected part.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#restartPageNumber]
When set, page numbering will be restarted after each occurrence of a selected part.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#sinkWhenLast]
When set, the last part on a page (such as a Trailing Grand Summary part) will 
"sink" to the lowest part of the page when there is free space.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#styleClass]
The Cascading Style Sheet (CSS) class name applied to the part.{td}{tr}{tbody}{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}[Number]{td}{td}[#getPartType]\()
The type of this part.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#getPartYOffset]\()
The Y offset of the part on the form, this will include all the super forms parts if this form extends a form.{td}{tr}{tbody}{tbody}{tr}{td}[UUID]{td}{td}[#getUUID]\()
Returns the UUID of this component.{td}{tr}{tbody}{table}\\ 

{table:id=constant|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Constants Details{th}{tr}{tbody:id=BODY}{tr:id=name}{td}h6.BODY{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var body = form.newPart(JSPart.BODY, 320);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=FOOTER}{tr:id=name}{td}h6.FOOTER{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var footer = form.newPart(JSPart.FOOTER, 440);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=HEADER}{tr:id=name}{td}h6.HEADER{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var header = form.newPart(JSPart.HEADER, 80);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=LEADING_GRAND_SUMMARY}{tr:id=name}{td}h6.LEADING_GRAND_SUMMARY{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var leadingGrandSummary = form.newPart(JSPart.LEADING_GRAND_SUMMARY, 120);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=LEADING_SUBSUMMARY}{tr:id=name}{td}h6.LEADING_SUBSUMMARY{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var leadingSubsummary = form.newPart(JSPart.LEADING_SUBSUMMARY, 160);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=TITLE_FOOTER}{tr:id=name}{td}h6.TITLE_FOOTER{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var titleFooter = form.newPart(JSPart.TITLE_FOOTER, 500);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=TITLE_HEADER}{tr:id=name}{td}h6.TITLE_HEADER{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var titleHeader = form.newPart(JSPart.TITLE_HEADER, 40);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=TRAILING_GRAND_SUMMARY}{tr:id=name}{td}h6.TRAILING_GRAND_SUMMARY{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var trailingGrandSummary = form.newPart(JSPart.TRAILING_GRAND_SUMMARY, 400);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=TRAILING_SUBSUMMARY}{tr:id=name}{td}h6.TRAILING_SUBSUMMARY{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var trailingSubsummary = form.newPart(JSPart.TRAILING_SUBSUMMARY, 360);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}\\ 

{table:id=property|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Property Details{th}{tr}{tbody:id=allowBreakAcrossPageBounds}{tr:id=name}{td}h6.allowBreakAcrossPageBounds{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var body = form.newPart(JSPart.BODY, 320);
body.allowBreakAcrossPageBounds = true;
body.discardRemainderAfterBreak = true;
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=background}{tr:id=name}{td}h6.background{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 body = form.newPart(JSPart.BODY, 320);
body.background = 'green';
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=discardRemainderAfterBreak}{tr:id=name}{td}h6.discardRemainderAfterBreak{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var body = form.newPart(JSPart.BODY, 320);
body.allowBreakAcrossPageBounds = true;
body.discardRemainderAfterBreak = true;
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=groupbyDataProviderIDs}{tr:id=name}{td}h6.groupbyDataProviderIDs{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 leadingSubsummary = form.newPart(JSPart.LEADING_SUBSUMMARY, 160);
leadingSubsummary.groupbyDataProviderIDs = 'my_table_text';
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=height}{tr:id=name}{td}h6.height{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var part = form.newPart(JSPart.HEADER, 100);
part.height = 200;
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=pageBreakAfterOccurrence}{tr:id=name}{td}h6.pageBreakAfterOccurrence{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var body = form.newPart(JSPart.BODY, 320);
body.pageBreakAfterOccurrence = 2;
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=pageBreakBefore}{tr:id=name}{td}h6.pageBreakBefore{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var leadingSubsummary = form.newPart(JSPart.LEADING_SUBSUMMARY, 160);
leadingSubsummary.groupbyDataProviderIDs = 'my_table_text';
leadingSubsummary.pageBreakBefore = true;
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=restartPageNumber}{tr:id=name}{td}h6.restartPageNumber{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var trailingSubsummary = form.newPart(JSPart.TRAILING_SUBSUMMARY, 360);
trailingSubsummary.groupbyDataProviderIDs = 'my_table_text';
trailingSubsummary.restartPageNumber = true;
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=sinkWhenLast}{tr:id=name}{td}h6.sinkWhenLast{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var trailingGrandSummary = form.newPart(JSPart.TRAILING_GRAND_SUMMARY, 400);
trailingGrandSummary.sinkWhenLast = true;
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=styleClass}{tr:id=name}{td}h6.styleClass{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 body = form.newPart(JSPart.BODY, 320);
body.styleClass = 'myBody';
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{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=getPartType}{tr:id=name}{td}h6.getPartType{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Number]{span}{span:style=font-weight: bold;}getPartType{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number] -- A number representing the type of the form part.{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var allParts = form.getParts()
for (var i=0; i<allParts.length; i++) {
	if (allParts[i].getPartType() == JSPart.BODY)
		application.output('body Y offset: ' + allParts[i].getPartYOffset());
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getPartYOffset}{tr:id=name}{td}h6.getPartYOffset{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Number]{span}{span:style=font-weight: bold;}getPartYOffset{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number] -- A number holding the Y offset of the form part.{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var allParts = form.getParts()
for (var i=0; i<allParts.length; i++) {
	if (allParts[i].getPartType() == JSPart.BODY)
		application.output('body Y offset: ' + allParts[i].getPartYOffset());
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getUUID}{tr:id=name}{td}h6.getUUID{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[UUID]{span}{span:style=font-weight: bold;}getUUID{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[UUID]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var button_uuid = solutionModel.getForm("my_form").getButton("my_button").getUUID();
application.output(button_uuid.toString());
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}