Child pages
  • JSPart

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
{hidden}
DO NOT EDIT THE CONTENT OF THIS PAGE DIRECTLY, UNLESS YOU KNOW WHAT YOU'RE DOING.
		THE STRUCTURE OF THE CONTENT IS VITAL IN BEING ABLE TO EXTRACT CHANGES FROM THE PAGE AND MERGE THEM BACK INTO SERVOY SOURCE{hidden}
{sub-section:description|text=}{sub-section}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:padding=0px|width=80px}{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:padding=0px|width=80px}{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}{table}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:padding=0px|width=80px}{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:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Constants Details{th}{tr}{tbody:id=BODY|class=node}{tr:id=name}{td}h6.BODY{td}{tr}{tr:id=des}{td}{sub-section:BODY_des|text=|trigger=button}{sub-section}{sub-section:BODY_des|trigger=none|class=sIndent}Constant use for specifying the type of form parts. 

This is the default part that is repeated for each record (being 
displayed and/or printed).{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:BODY_snc|text=|trigger=button}{sub-section}{sub-section:BODY_snc|trigger=none|class=sIndent} Replace with version info{sub-sectiontd}{tdtr}{tr}{builder-show}{builder-show:permission=edit:id=prs}{td}*Parameters*\\{td}{tr}{tr:id=prsret}{td}*ParametersReturns*\\{sub-section:BODY_prs|text=|trigger=button}{sub-section}{sub-section:BODY_prs|trigger=none|[Number]{td}{tr}{tr:id=see}{td}*Also see*\\{div:class=sIndent}{sub-sectiondiv}{td}{tr}{builder-show}{tr:id=retlink}{td}*ReturnsExternal links*\\{sub-section:BODY_ret|text=|trigger=button}{sub-section}{sub-section:BODY_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=seediv:class=sIndent}{div}{td}{tr}{tr:id=sam}{td}*Also seeSample*\\{sub-section:BODY_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:BODY_see|trigger=none}{sub-sectioncode:language=javascript}
var body = form.newPart(JSPart.BODY, 320);
{code}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=linktr:class=lastDetailRow}{td}{td}*External links*\\{sub-section:BODY_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:BODY_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show{tr}{tbody}{tbody:id=FOOTER|class=node}{tr:id=name}{td}h6.FOOTER{td}{tr}{tr:id=sam}{td}*Sample*\\{sub-section:BODY_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:BODY_sam|trigger=none}{code:language=javascript}
var body = form.newPart(JSPart.BODY, 320);
{code}{sub-section}{div}des}{td}Constant use for specifying the type of form parts.

A footer is displayed at the bottom of each page when printed ad can
contain summaries of the current selection of records. In List view, the 
footer is displayed at the bottom of the list of records.{td}{tr}{tr:id=snc}{td}*Since*\\ Replace with version info{td}{tr}{tr:id=prs}{td}*Parameters*\\{td}{tr}{tr:classid=lastDetailRowret}{td}*Returns*\\[Number]{td}{tr}{tbody}{tbodytr:id=FOOTER|class=node}{tr:id=name}{td}h6.FOOTERsee}{td}*Also see*\\{div:class=sIndent}{div}{td}{tr}{tr:id=deslink}{td}{sub-section:FOOTER_des|text=|trigger=button}{sub-section}{sub-section:FOOTER_des|trigger=none|class=sIndent*External links*\\{div:class=sIndent}{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|class=node}{tr:id=name}{td}h6.HEADER{td}{tr}{tr:id=des}{td}Constant use for specifying the type of form parts. 

A footerheader is displayed at the bottomtop of each page when printed adand can contain
summaries of the current selection of records. In List view, the 
footerheader is
displayed atabove the bottom of the list of records.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:FOOTER_snc|text=|trigger=button}{sub-section}{sub-section:FOOTER_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:FOOTER_prs|text=|trigger=button}{sub-section}{sub-section:FOOTER_prs|trigger=none|class=sIndent}{sub-section}td}{tr}{tr:id=ret}{td}*Returns*\\[Number]{td}{tr}{builder-show}{tr:id=retsee}{td}*ReturnsAlso see*\\{sub-section:FOOTER_ret|text=|trigger=button}{sub-section}{sub-section:FOOTER_ret|trigger=none|div:class=sIndent}[Number]{sub-section{div}{td}{tr}{builder-show:permission=edit}{tr:id=seelink}{td}*AlsoExternal seelinks*\\{sub-section:FOOTER_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:FOOTER_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{div:class=sIndent}{div}{td}{tr}{tr:id=linksam}{td}*External linksSample*\\{sub-section:FOOTER_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:FOOTER_link|trigger=none}{sub-sectioncode:language=javascript}
var header = form.newPart(JSPart.HEADER, 80);
{code}{div}{td}{tr}{builder-show}{tr:idclass=samlastDetailRow}{td}*Sample*\\{sub-section:FOOTER_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:FOOTER_sam|trigger=none}{code:language=javascript}
var footer = form.newPart(JSPart.FOOTER, 440);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=HEADERLEADING_GRAND_SUMMARY|class=node}{tr:id=name}{td}h6.HEADERLEADING_GRAND_SUMMARY{td}{tr}{tr:id=des}{td}{sub-section:HEADER_des|text=|trigger=button}{sub-section}{sub-section:HEADER_des|trigger=none|class=sIndent}Constant use Constant use for specifying the type of form parts. 

A headerLeading isGrand displayedSummary atcan thebe topplaced ofbefore eachthe pagebody when printed andpart. It can contain
summariessummary offields thethat currentwill selectiongenerate of records. In List viewsummaries for the header is
displayed above the list of records.{sub-section}entire foundset.{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:HEADER_snc|text=|trigger=button}{sub-section}{sub-section:HEADER_snc|trigger=none|class=sIndent}  Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:HEADER_prs|text=|trigger=button}{sub-section}{sub-section:HEADER_prs|trigger=none|class=sIndent}{sub-section}td}{tr}{tr:id=ret}{td}*Returns*\\[Number]{td}{tr}{builder-show}{tr:id=retsee}{td}*ReturnsAlso see*\\{sub-section:HEADER_ret|text=|trigger=button}{sub-section}{sub-section:HEADER_ret|trigger=none|div:class=sIndent}[Number]{sub-section{div}{td}{tr}{builder-show:permission=edit}{tr:id=seelink}{td}*AlsoExternal seelinks*\\{sub-section:HEADER_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:HEADER_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=linksam}{td}*External linksSample*\\{sub-section:HEADER_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:HEADER_link|trigger=none}{sub-sectioncode:language=javascript}
var leadingGrandSummary = form.newPart(JSPart.LEADING_GRAND_SUMMARY, 120);
{code}{div}{td}{tr}{builder-show}{tr:idclass=samlastDetailRow}{td}*Sample*\\{sub-section:HEADER_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:HEADER_sam|trigger=none}{code:language=javascript}
var header = form.newPart(JSPart.HEADER, 80);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=LEADING_GRAND_SUMMARY|class=node}{tr:id={td}{tr}{tbody}{tbody:id=LEADING_SUBSUMMARY|class=node}{tr:id=name}{td}h6.LEADING_GRAND_SUMMARYSUBSUMMARY{td}{tr}{tr:id=des}{td}{sub-section:LEADING_GRAND_SUMMARY_des|text=|trigger=button}{sub-section}{sub-section:LEADING_GRAND_SUMMARY_des|trigger=none|class=sIndent}Constant use for specifying the type of form Constant use for specifying the type of form parts. 

A Leading GrandSubsummary Summary can be placed before the body part. ItThere can contain
summary fields that will generate summaries for the entire foundset.{sub-section}{td}{tr}{builder-show:permission=edit be multiple Leading Subsummaries
per form. Each Subsummary part has a set of Group By fields which are used to group data together.
Each Subsummary part can contain summary fields, which will be printed once for each group of data.{td}{tr}{tr:id=snc}{td}*Since*\\{sub-section:LEADING_GRAND_SUMMARY_snc|text=|trigger=button}{sub-section}{sub-section:LEADING_GRAND_SUMMARY_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:LEADING_GRAND_SUMMARY_prs|text=|trigger=button}{sub-section}{sub-section:LEADING_GRAND_SUMMARY_prs|trigger=none|{td}{tr}{tr:id=ret}{td}*Returns*\\[Number]{td}{tr}{tr:id=see}{td}*Also see*\\{div:class=sIndent}{sub-sectiondiv}{td}{tr}{builder-show}{tr:id=retlink}{td}*ReturnsExternal links*\\{sub-section:LEADING_GRAND_SUMMARY_ret|text=|trigger=button}{sub-section}{sub-section:LEADING_GRAND_SUMMARY_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:LEADING_GRAND_SUMMARY_see|text=|trigger=button}{sub-section}{div:class=sIndent}{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{sub-section:LEADING_GRAND_SUMMARY_see|trigger=none}{sub-sectioncode:language=javascript}
var leadingSubsummary = form.newPart(JSPart.LEADING_SUBSUMMARY, 160);
{code}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=linktr:class=lastDetailRow}{td}{td}*External links*\\{sub-section:LEADING_GRAND_SUMMARY_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:LEADING_GRAND_SUMMARY_link|trigger=none}{sub-section}{div}{{tr}{tbody}{tbody:id=TITLE_FOOTER|class=node}{tr:id=name}{td}h6.TITLE_FOOTER{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:LEADING_GRAND_SUMMARY_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:LEADING_GRAND_SUMMARY_sam|trigger=none}{code:language=javascript}
var leadingGrandSummary = form.newPart(JSPart.LEADING_GRAND_SUMMARY, 120);
{code}{sub-section}{div}des}{td}Constant use for specifying the type of form parts. 

Appears once on the first page of a printed report. If a Footer is available, it is
replaced by the Title Footer on the first page.{td}{tr}{tr:id=snc}{td}*Since*\\ Replace with version info{td}{tr}{tr:id=prs}{td}*Parameters*\\{td}{tr}{tr:classid=lastDetailRowret}{td}*Returns*\\[Number]{td}{tr}{tbody}{tbodytr:id=LEADING_SUBSUMMARY|class=node}{tr:id=name}{td}h6.LEADING_SUBSUMMARYsee}{td}*Also see*\\{div:class=sIndent}{div}{td}{tr}{tr:id=deslink}{td}{sub-section:LEADING_SUBSUMMARY_des|text=|trigger=button}{sub-section}{sub-section:LEADING_SUBSUMMARY_des|trigger=none|class=sIndent}Constant use for specifying the type of form parts. 

A Leading Subsummary can be placed before the body part. There can be multiple Leading Subsummaries
per form. Each Subsummary part has a set of Group By fields which are used to group data together.
Each Subsummary part can contain summary fields, which will be printed once for each group of data.{sub-section}{td}{tr}{builder-show:permission=edit}{*External links*\\{div:class=sIndent}{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|class=node}{tr:id=name}{td}h6.TITLE_HEADER{td}{tr}{tr:id=des}{td}Constant use for specifying the type of form parts. 

Appears only once on the first page of a printed report or on top of the first screen
of a foundset. If a Header is available it is replace by the Title Header on the first
page.{td}{tr}{tr:id=snc}{td}*Since*\\{sub-section:LEADING_SUBSUMMARY_snc|text=|trigger=button}{sub-section}{sub-section:LEADING_SUBSUMMARY_snc|trigger=none|class=sIndent} Replace with version info{sub-sectiontd}{tdtr}{tr}{builder-show}{builder-show:permission=edit:id=prs}{td}*Parameters*\\{td}{tr}{tr:id=prsret}{td}*ParametersReturns*\\{sub-section:LEADING_SUBSUMMARY_prs|text=|trigger=button}{sub-section}{sub-section:LEADING_SUBSUMMARY_prs|trigger=none|[Number]{td}{tr}{tr:id=see}{td}*Also see*\\{div:class=sIndent}{sub-sectiondiv}{td}{tr}{builder-show}{tr:id=retlink}{td}*ReturnsExternal links*\\{sub-section:LEADING_SUBSUMMARY_ret|text=|trigger=button}{sub-section}{sub-section:LEADING_SUBSUMMARY_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=editdiv:class=sIndent}{div}{td}{tr}{tr:id=seesam}{td}*Also seeSample*\\{sub-section:LEADING_SUBSUMMARY_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:LEADING_SUBSUMMARY_see|trigger=none}{sub-sectioncode:language=javascript}
var titleHeader = form.newPart(JSPart.TITLE_HEADER, 40);
{code}{div}{td}{tr}{builder-show}{builder-show:permission=edittr:class=lastDetailRow}{td}{td}{tr:id=link}{td}*External links*\\{sub-section:LEADING_SUBSUMMARY_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:LEADING_SUBSUMMARY_link|trigger=none}{sub-section}{div}{td}{tr}{builder-showtbody}{tbody:id=TRAILING_GRAND_SUMMARY|class=node}{tr:id=name}{td}h6.TRAILING_GRAND_SUMMARY{td}{tr}{tr:id=sam}{td}*Sample*\\{sub-section:LEADING_SUBSUMMARY_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:LEADING_SUBSUMMARY_sam|trigger=none}{code:language=javascript}
var leadingSubsummary = form.newPart(JSPart.LEADING_SUBSUMMARY, 160);
{code}{sub-section}{div}des}{td}Constant use for specifying the type of form parts. 

A Trailing Grand Summary can be placed after the body part. It can contain
summary fields that will generate summaries for the entire foundset.{td}{tr}{tr:id=snc}{td}*Since*\\ Replace with version info{td}{tr}{tr:id=prs}{td}*Parameters*\\{td}{tr}{tr:classid=lastDetailRowret}{td}*Returns*\\[Number]{td}{tr}{tbody}{tbodytr:id=TITLE_FOOTER|class=node}{tr:id=name}{td}h6.TITLE_FOOTERsee}{td}*Also see*\\{div:class=sIndent}{div}{td}{tr}{tr:id=deslink}{td}{sub-section:TITLE_FOOTER_des|text=|trigger=button}{sub-section}{sub-section:TITLE_FOOTER_des|trigger=none|class=sIndent}Constant use for specifying the type of form parts. 

Appears once on the first page of a printed report. If a Footer is available, it is
replaced by the Title Footer on the first page.{sub-section*External links*\\{div:class=sIndent}{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}{builder-showtr:permissionclass=editlastDetailRow}{tr:id=snctd}{td}*Since*\\{sub-section:TITLE_FOOTER_snc|text=|trigger=button}{sub-section}{sub-section:TITLE_FOOTER_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit{tr}{tbody}{tbody:id=TRAILING_SUBSUMMARY|class=node}{tr:id=name}{td}h6.TRAILING_SUBSUMMARY{td}{tr}{tr:id=prs}{td}*Parameters*\\{sub-section:TITLE_FOOTER_prs|text=|trigger=button}{sub-section}{sub-section:TITLE_FOOTER_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:TITLE_FOOTER_ret|text=|trigger=button}{sub-section}{sub-section:TITLE_FOOTER_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:TITLE_FOOTER_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TITLE_FOOTER_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:TITLE_FOOTER_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TITLE_FOOTER_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:TITLE_FOOTER_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TITLE_FOOTER_sam|trigger=none}{code:language=javascript}
var titleFooter = form.newPart(JSPart.TITLE_FOOTER, 500);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=TITLE_HEADER|class=node}{tr:id=name}{td}h6.TITLE_HEADER{td}{tr}{tr:id=des}{td}{sub-section:TITLE_HEADER_des|text=|trigger=button}{sub-section}{sub-section:TITLE_HEADER_des|trigger=none|class=sIndent}Constant use for specifying the type of form parts. 

Appears only once on the first page of a printed report or on top of the first screen
of a foundset. If a Header is available it is replace by the Title Header on the first
page.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:TITLE_HEADER_snc|text=|trigger=button}{sub-section}{sub-section:TITLE_HEADER_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:TITLE_HEADER_prs|text=|trigger=button}{sub-section}{sub-section:TITLE_HEADER_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:TITLE_HEADER_ret|text=|trigger=button}{sub-section}{sub-section:TITLE_HEADER_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:TITLE_HEADER_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TITLE_HEADER_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:TITLE_HEADER_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TITLE_HEADER_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:TITLE_HEADER_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TITLE_HEADER_sam|trigger=none}{code:language=javascript}
var titleHeader = form.newPart(JSPart.TITLE_HEADER, 40);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=TRAILING_GRAND_SUMMARY|class=node}{tr:id=name}{td}h6.TRAILING_GRAND_SUMMARY{td}{tr}{tr:id=des}{td}{sub-section:TRAILING_GRAND_SUMMARY_des|text=|trigger=button}{sub-section}{sub-section:TRAILING_GRAND_SUMMARY_des|trigger=none|class=sIndent}Constant use for specifying the type of form parts. 

A Trailing Grand Summary can be placed after the body part. It can contain
summary fields that will generate summaries for the entire foundset.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:TRAILING_GRAND_SUMMARY_snc|text=|trigger=button}{sub-section}{sub-section:TRAILING_GRAND_SUMMARY_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:TRAILING_GRAND_SUMMARY_prs|text=|trigger=button}{sub-section}{sub-section:TRAILING_GRAND_SUMMARY_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:TRAILING_GRAND_SUMMARY_ret|text=|trigger=button}{sub-section}{sub-section:TRAILING_GRAND_SUMMARY_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:TRAILING_GRAND_SUMMARY_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TRAILING_GRAND_SUMMARY_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:TRAILING_GRAND_SUMMARY_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TRAILING_GRAND_SUMMARY_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:TRAILING_GRAND_SUMMARY_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TRAILING_GRAND_SUMMARY_sam|trigger=none}{code:language=javascript}
var trailingGrandSummary = form.newPart(JSPart.TRAILING_GRAND_SUMMARY, 400);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=TRAILING_SUBSUMMARY|class=node}{tr:id=name}{td}h6.TRAILING_SUBSUMMARY{td}{tr}{tr:id=des}{td}{sub-section:TRAILING_SUBSUMMARY_des|text=|trigger=button}{sub-section}{sub-section:TRAILING_SUBSUMMARY_des|trigger=none|class=sIndent}Constant use for specifying the type of form parts. 

A Trailing Subsummary can be placed before the body part. There can be multiple Trailing Subsummaries
per form. Each Subsummary part has a set of Group By fields which are used to group data together.
Each Subsummary part can contain summary fields, which will be printed once for each group of data.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:TRAILING_SUBSUMMARY_snc|text=|trigger=button}{sub-section}{sub-section:TRAILING_SUBSUMMARY_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:TRAILING_SUBSUMMARY_prs|text=|trigger=button}{sub-section}{sub-section:TRAILING_SUBSUMMARY_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:TRAILING_SUBSUMMARY_ret|text=|trigger=button}{sub-section}{sub-section:TRAILING_SUBSUMMARY_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:TRAILING_SUBSUMMARY_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TRAILING_SUBSUMMARY_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:TRAILING_SUBSUMMARY_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TRAILING_SUBSUMMARY_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:TRAILING_SUBSUMMARY_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TRAILING_SUBSUMMARY_sam|trigger=none}{code:language=javascript}
var trailingSubsummary = form.newPart(JSPart.TRAILING_SUBSUMMARY, 360);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}\\ 

{table:id=property|class=servoy sDetail}{colgroup}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Property Details{th}{tr}{tbody:id=allowBreakAcrossPageBounds|class=node}{tr:id=name}{td}h6.allowBreakAcrossPageBounds{td}{tr}{tr:id=des}{td}{sub-section:allowBreakAcrossPageBounds_des|text=|trigger=button}{sub-section}{sub-section:allowBreakAcrossPageBounds_des|trigger=none|class=sIndent}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. 

NOTE: Make sure to set this option when you are printing more than one page per record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:allowBreakAcrossPageBounds_snc|text=|trigger=button}{sub-section}{sub-section:allowBreakAcrossPageBounds_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:allowBreakAcrossPageBounds_prs|text=|trigger=button}{sub-section}{sub-section:allowBreakAcrossPageBounds_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:allowBreakAcrossPageBounds_ret|text=|trigger=button}{sub-section}{sub-section:allowBreakAcrossPageBounds_ret|trigger=none|class=sIndent}[Boolean]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:allowBreakAcrossPageBounds_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:allowBreakAcrossPageBounds_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:allowBreakAcrossPageBounds_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:allowBreakAcrossPageBounds_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:allowBreakAcrossPageBounds_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:allowBreakAcrossPageBounds_sam|trigger=none}{code:language=javascript}
var body = form.newPart(JSPart.BODY, 320);
body.allowBreakAcrossPageBounds = true;
body.discardRemainderAfterBreak = true;
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=background|class=node}{tr:id=name}{td}h6.background{td}{tr}{tr:id=des}{td}{sub-section:background_des|text=|trigger=button}{sub-section}{sub-section:background_des|trigger=none|class=sIndent}The background color of the form part. 

NOTE: When no background color has been set, the default background 
color will be determined by the Look and Feel (LAF) that has been selected 
in Application Preferences.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:background_snc|text=|trigger=button}{sub-section}{sub-section:background_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:background_prs|text=|trigger=button}{sub-section}{sub-section:background_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:background_ret|text=|trigger=button}{sub-section}{sub-section:background_ret|trigger=none|class=sIndent}[String]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:background_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:background_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:background_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:background_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:background_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:background_sam|trigger=none}{code:language=javascript}
var body = form.newPart(JSPart.BODY, 320);
body.background = 'green';
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=discardRemainderAfterBreak|class=node}{tr:id=name}{td}h6.discardRemainderAfterBreak{td}{tr}{tr:id=des}{td}{sub-section:discardRemainderAfterBreak_des|text=|trigger=button}{sub-section}{sub-section:discardRemainderAfterBreak_des|trigger=none|class=sIndent}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.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:discardRemainderAfterBreak_snc|text=|trigger=button}{sub-section}{sub-section:discardRemainderAfterBreak_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:discardRemainderAfterBreak_prs|text=|trigger=button}{sub-section}{sub-section:discardRemainderAfterBreak_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:discardRemainderAfterBreak_ret|text=|trigger=button}{sub-section}{sub-section:discardRemainderAfterBreak_ret|trigger=none|class=sIndent}[Boolean]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:discardRemainderAfterBreak_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:discardRemainderAfterBreak_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:discardRemainderAfterBreak_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:discardRemainderAfterBreak_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:discardRemainderAfterBreak_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:discardRemainderAfterBreak_sam|trigger=none}{code:language=javascript}
var body = form.newPart(JSPart.BODY, 320);
body.allowBreakAcrossPageBounds = true;
body.discardRemainderAfterBreak = true;
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=groupbyDataProviderIDs|class=node}{tr:id=name}{td}h6.groupbyDataProviderIDs{td}{tr}{tr:id=des}{td}{sub-section:groupbyDataProviderIDs_des|text=|trigger=button}{sub-section}{sub-section:groupbyDataProviderIDs_des|trigger=none|class=sIndent}For Leading Subsummary or Trailing Subsummary parts, one or more
dataproviders can be added as Break (GroupBy) dataproviders. The
Leading/Trailing Subsummary parts will be displayed once for each
resulted group of data.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:groupbyDataProviderIDs_snc|text=|trigger=button}{sub-section}{sub-section:groupbyDataProviderIDs_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:groupbyDataProviderIDs_prs|text=|trigger=button}{sub-section}{sub-section:groupbyDataProviderIDs_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:groupbyDataProviderIDs_ret|text=|trigger=button}{sub-section}{sub-section:groupbyDataProviderIDs_ret|trigger=none|class=sIndent}[String]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:groupbyDataProviderIDs_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:groupbyDataProviderIDs_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:groupbyDataProviderIDs_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:groupbyDataProviderIDs_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:groupbyDataProviderIDs_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:groupbyDataProviderIDs_sam|trigger=none}{code:language=javascript}
var leadingSubsummary = form.newPart(JSPart.LEADING_SUBSUMMARY, 160);
leadingSubsummary.groupbyDataProviderIDs = 'my_table_text';
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=height|class=node}{tr:id=name}{td}h6.height{td}{tr}{tr:id=des}{td}{sub-section:height_des|text=|trigger=button}{sub-section}{sub-section:height_des|trigger=none|class=sIndent}The height of a selected part; specified in pixels. 

This height property is the lowerbound as its ending Y value (0 == top of the form).{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:height_snc|text=|trigger=button}{sub-section}{sub-section:height_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:height_prs|text=|trigger=button}{sub-section}{sub-section:height_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:height_ret|text=|trigger=button}{sub-section}{sub-section:height_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:height_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:height_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:height_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:height_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:height_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:height_sam|trigger=none}{code:language=javascript}
var part = form.newPart(JSPart.HEADER, 100);
part.height = 200;
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=pageBreakAfterOccurrence|class=node}{tr:id=name}{td}h6.pageBreakAfterOccurrencedes}{td}Constant use for specifying the type of form parts. 

A Trailing Subsummary can be placed before the body part. There can be multiple Trailing Subsummaries
per form. Each Subsummary part has a set of Group By fields which are used to group data together.
Each Subsummary part can contain summary fields, which will be printed once for each group of data.{td}{tr}{tr:id=snc}{td}*Since*\\ Replace with version info{td}{tr}{tr:id=prs}{td}*Parameters*\\{td}{tr}{tr:id=ret}{td}*Returns*\\[Number]{td}{tr}{tr:id=see}{td}*Also see*\\{div:class=sIndent}{div}{td}{tr}{tr:id=link}{td}*External links*\\{div:class=sIndent}{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:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Property Details{th}{tr}{tbody:id=allowBreakAcrossPageBounds|class=node}{tr:id=name}{td}h6.allowBreakAcrossPageBounds{td}{tr}{tr:id=des}{td}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. 

NOTE: Make sure to set this option when you are printing more than one page per record.{td}{tr}{tr:id=snc}{td}*Since*\\ Replace with version info{td}{tr}{tr:id=prs}{td}*Parameters*\\{td}{tr}{tr:id=ret}{td}*Returns*\\[Boolean]{td}{tr}{tr:id=see}{td}*Also see*\\{div:class=sIndent}{div}{td}{tr}{tr:id=deslink}{td}{sub-section:pageBreakAfterOccurrence_des|text=|trigger=button}{sub-section}{sub-section:pageBreakAfterOccurrence_des|trigger=none|class=sIndent}A page break will be inserted after a specified number of occurences of a selected part.{sub-section*External links*\\{div:class=sIndent}{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}{builder-showtr:permissionclass=editlastDetailRow}{tr:id=snctd}{td}*Since*\\{sub-section:pageBreakAfterOccurrence_snc|text=|trigger=button}{sub-section}{sub-section:pageBreakAfterOccurrence_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{tr}{tbody}{tbody:id=background|class=node}{tr:id=name}{td}h6.background{td}{tr}{builder-show}{builder-show:permission=edittr:id=des}{td}The background color of the form part. 

NOTE: When no background color has been set, the default background 
color will be determined by the Look and Feel (LAF) that has been selected 
in Application Preferences.{td}{tr}{tr:id=prssnc}{td}*ParametersSince*\\{sub-section:pageBreakAfterOccurrence_prs|text=|trigger=button}{sub-section}{sub-section:pageBreakAfterOccurrence_prs|trigger=none|class=sIndent}{sub-section}{ Replace with version info{td}{tr}{builder-show}{tr:id=retprs}{td}*ReturnsParameters*\\{sub-section:pageBreakAfterOccurrence_ret|text=|trigger=button}{sub-section}{sub-section:pageBreakAfterOccurrence_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-showtr:permission=editid=ret}{td}*Returns*\\[String]{td}{tr}{tr:id=see}{td}*Also see*\\{sub-section:pageBreakAfterOccurrence_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:pageBreakAfterOccurrence_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:pageBreakAfterOccurrence_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:pageBreakAfterOccurrence_link|trigger=none}{sub-section}{div:class=sIndent}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:pageBreakAfterOccurrence_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:pageBreakAfterOccurrence_sam|trigger=none}{code:language=javascript}
var body = form.newPart(JSPart.BODY, 320);
body.pageBreakAfterOccurrencebackground = 2'green';
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=pageBreakBeforediscardRemainderAfterBreak|class=node}{tr:id=name}{td}h6.pageBreakBeforediscardRemainderAfterBreak{td}{tr}{tr:id=des}{td}{sub-section:pageBreakBefore_des|text=|trigger=button}{sub-section}{sub-section:pageBreakBefore_des|trigger=none|class=sIndent}When set, a page break will be inserted before each occurrence of a selected part.{sub-section}{td}{tr}{builder-show:permission=editWhen 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}{tr:id=snc}{td}*Since*\\{sub-section:pageBreakBefore_snc|text=|trigger=button}{sub-section}{sub-section:pageBreakBefore_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:pageBreakBefore_prs|text=|trigger=button}{sub-section}{sub-section:pageBreakBefore_prs|trigger=none|class=sIndent}{sub-section}td}{tr}{tr:id=ret}{td}*Returns*\\[Boolean]{td}{tr}{builder-show}{tr:id=retsee}{td}*ReturnsAlso see*\\{sub-section:pageBreakBefore_ret|text=|trigger=button}{sub-section}{sub-section:pageBreakBefore_ret|trigger=none|class=sIndent}[Boolean]{sub-sectiondiv:class=sIndent}{div}{td}{tr}{tr:id=link}{td}*External links*\\{div:class=sIndent}{div}{td}{tr}{builder-show:permission=edit}{tr:id=seesam}{td}*Also seeSample*\\{sub-section:pageBreakBefore_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:pageBreakBefore_see|trigger=none}{sub-section}{divdiv: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}{builder-showtbody}{builder-show:permission=edittbody:id=groupbyDataProviderIDs|class=node}{tr:id=linkname}{td}*External links*\\{sub-section:pageBreakBefore_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:pageBreakBefore_link|trigger=none}{sub-section}{div}{h6.groupbyDataProviderIDs{td}{tr}{tr:id=des}{td}For Leading Subsummary or Trailing Subsummary parts, one or more
dataproviders can be added as Break (GroupBy) dataproviders. The
Leading/Trailing Subsummary parts will be displayed once for each
resulted group of data.{td}{tr}{builder-show}{tr:id=samsnc}{td}*SampleSince*\\{sub-section:pageBreakBefore_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:pageBreakBefore_sam|trigger=none}{code:language=javascript}
var leadingSubsummary = form.newPart(JSPart.LEADING_SUBSUMMARY, 160);
leadingSubsummary.groupbyDataProviderIDs = 'my_table_text';
leadingSubsummary.pageBreakBefore = true;
{code}{sub-section}{div}\\ Replace with version info{td}{tr}{tr:id=prs}{td}*Parameters*\\{td}{tr}{tr:classid=lastDetailRowret}{td}*Returns*\\[String]{td}{tr}{tbody}{tbodytr:id=restartPageNumber|class=node}{tr:id=name}{td}h6.restartPageNumbersee}{td}*Also see*\\{div:class=sIndent}{div}{td}{tr}{tr:id=deslink}{td}{sub-section:restartPageNumber_des|text=|trigger=button}{sub-section}{sub-section:restartPageNumber_des|trigger=none|class=sIndent}When set, page numbering will be restarted after each occurrence of a selected part.{sub-section*External links*\\{div:class=sIndent}{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}{builder-showtr:permissionclass=editlastDetailRow}{tr:id=snctd}{td}*Since*\\{sub-section:restartPageNumber_snc|text=|trigger=button}{sub-section}{sub-section:restartPageNumber_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{tr}{tbody}{tbody:id=height|class=node}{tr:id=name}{td}h6.height{td}{tr}{builder-show}{builder-show:permission=edittr:id=des}{td}The height of a selected part; specified in pixels. 

This height property is the lowerbound as its ending Y value (0 == top of the form).{td}{tr}{tr:id=prssnc}{td}*ParametersSince*\\{sub-section:restartPageNumber_prs|text=|trigger=button}{sub-section}{sub-section:restartPageNumber_prs|trigger=none|class=sIndent}{sub-section}{ Replace with version info{td}{tr}{builder-show}{tr:id=retprs}{td}*ReturnsParameters*\\{sub-section:restartPageNumber_ret|text=|trigger=button}{sub-section}{sub-section:restartPageNumber_ret|trigger=none|class=sIndent}[Boolean]{sub-section}{td}{tr}{builder-showtr:permission=editid=ret}{td}*Returns*\\[Number]{td}{tr}{tr:id=see}{td}*Also see*\\{sub-section:restartPageNumber_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:restartPageNumber_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:restartPageNumber_link|text=|trigger=button}{sub-section}div:class=sIndent}{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{sub-section:restartPageNumber_link|trigger=none}{sub-sectioncode:language=javascript}
var part = form.newPart(JSPart.HEADER, 100);
part.height = 200;
{code}{div}{td}{tr}{builder-show}{tr:id=samclass=lastDetailRow}{td}{td}*Sample*\\{sub-section:restartPageNumber_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:restartPageNumber_sam|trigger=none}{code:language=javascript}
var trailingSubsummary = form.newPart(JSPart.TRAILING_SUBSUMMARY, 360);
trailingSubsummary.groupbyDataProviderIDs = 'my_table_text';
trailingSubsummary.restartPageNumber = true;
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=sinkWhenLast|class=node{tr}{tbody}{tbody:id=pageBreakAfterOccurrence|class=node}{tr:id=name}{td}h6.pageBreakAfterOccurrence{td}{tr}{tr:id=des}{td}A page break will be inserted after a specified number of occurences of a selected part.{td}{tr}{tr:id=snc}{td}*Since*\\ Replace with version info{td}{tr}{tr:id=prs}{td}*Parameters*\\{td}{tr}{tr:id=nameret}{td}h6.sinkWhenLast*Returns*\\[Number]{td}{tr}{tr:id=dessee}{td}{sub-section:sinkWhenLast_des|text=|trigger=button}{sub-section}{sub-section:sinkWhenLast_des|trigger=none|class=sIndent}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.{sub-section}{td}{tr}{builder-show:permission=edit*Also see*\\{div:class=sIndent}{div}{td}{tr}{tr:id=link}{td}*External links*\\{div:class=sIndent}{div}{td}{tr}{tr:id=sncsam}{td}*SinceSample*\\{sub-section:sinkWhenLast_snc|text=|trigger=button}{sub-section}{sub-section:sinkWhenLast_snc|trigger=none|class=sIndent} Replace with version info{sub-sectiondiv: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}{builder-showtbody}{builder-show:permission=edittbody:id=pageBreakBefore|class=node}{tr:id=prsname}{td}*Parameters*\\{sub-section:sinkWhenLast_prs|text=|trigger=button}{sub-section}{sub-section:sinkWhenLast_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-showh6.pageBreakBefore{td}{tr}{tr:id=des}{td}When set, a page break will be inserted before each occurrence of a selected part.{td}{tr}{tr:id=retsnc}{td}*ReturnsSince*\\{sub-section:sinkWhenLast_ret|text=|trigger=button}{sub-section}{sub-section:sinkWhenLast_ret|trigger=none|class=sIndent}[Boolean]{sub-section} Replace with version info{td}{tr}{tr:id=prs}{td}*Parameters*\\{td}{tr}{builder-show:permission=edit}{tr:id=seeret}{td}*Also seeReturns*\\{sub-section:sinkWhenLast_see|text=|trigger=button}{sub-section}[Boolean]{td}{tr}{tr:id=see}{td}*Also see*\\{div:class=sIndent}{sub-section:sinkWhenLast_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:sinkWhenLast_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:sinkWhenLast_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:sinkWhenLast_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:sinkWhenLast_sam|trigger=none}{code:language=javascript}
var trailingGrandSummaryleadingSubsummary = form.newPart(JSPart.TRAILINGLEADING_GRAND_SUMMARYSUBSUMMARY, 400)160);
leadingSubsummary.groupbyDataProviderIDs = 'my_table_text';
trailingGrandSummaryleadingSubsummary.sinkWhenLastpageBreakBefore = true;
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}\\ 

{table:id=function|class=servoy sDetail}{colgroup}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{td}{td}{tr}{tbody}{tbody:id=getPartTyperestartPageNumber|class=node}{tr:id=name}{td}h6.getPartTyperestartPageNumber{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getPartType{span}{span:id=iets|style=float: left;}\(){spandes}{td}When set, page numbering will be restarted after each occurrence of a selected part.{td}{tr}{tr:id=snc}{td}*Since*\\ Replace with version info{td}{tr}{tr:id=prs}{td}*Parameters*\\{td}{tr}{tr:id=ret}{td}*Returns*\\[Boolean]{td}{tr}{tr:id=see}{td}*Also see*\\{div:class=sIndent}{div}{td}{tr}{tr:id=deslink}{td}{sub-section:getPartType_des|text=|trigger=button}{sub-section}{sub-section:getPartType_des|trigger=none|*External links*\\{div:class=sIndent}The type of this part.{sub-section{div}{td}{tr}{builder-show:permission=edit}{tr:id=sncsam}{td}*SinceSample*\\{sub-section:getPartType_snc|text=|trigger=button}{sub-section}{sub-section:getPartType_snc|trigger=none|class=sIndent} Replace with version info{sub-section{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}{builder-showtbody}{builder-show:permission=edittbody:id=sinkWhenLast|class=node}{tr:id=prs}name}{td}h6.sinkWhenLast{td}*Parameters*\\{sub-section:getPartType_prs|text=|trigger=button}{sub-section}{sub-section:getPartType_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr}{tr:id=des}{td}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}{tr:id=retsnc}{td}*ReturnsSince*\\{sub-section:getPartType_ret|text=|trigger=button}{sub-section}{sub-section:getPartType_ret|trigger=none|class=sIndent}[Number] -- A number representing the type of the form part.{sub-section} Replace with version info{td}{tr}{tr:id=prs}{td}*Parameters*\\{td}{tr}{builder-showtr:permission=editid=ret}{td}*Returns*\\[Boolean]{td}{tr}{tr:id=see}{td}*Also see*\\{sub-section:getPartType_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getPartType_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getPartType_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getPartType_link|trigger=none}{sub-section}{div:class=sIndent}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getPartType_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getPartType_sam|trigger=none}{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}{sub-section}{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}{table}\\ 

{table:id=function|class=servoy sDetail}{colgroup}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody}{tbody:id=getPartYOffsetgetPartType|class=node}{tr:id=name}{td}h6.getPartYOffsetgetPartType{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getPartYOffsetgetPartType{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getPartYOffset_des|text=|trigger=button}{sub-section}{sub-section:getPartYOffset_des|trigger=none|class=sIndent}The Y offset of the part on the form, this will include all the super forms parts if this form extends a form.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getPartYOffset_snc|text=|trigger=button}{sub-section}{sub-section:getPartYOffset_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getPartYOffset_prs|text=|trigger=button}{sub-section}{sub-section:getPartYOffset_prs|trigger=none|class=sIndent}{sub-sectionThe type of this part.{td}{tr}{tr:id=snc}{td}*Since*\\ Replace with version info{td}{tr}{tr:id=prs}{td}*Parameters*\\{td}{tr}{tr:id=ret}{td}*Returns*\\[Number] -- A number representing the type of the form part.{td}{tr}{tr:id=see}{td}*Also see*\\{div:class=sIndent}{div}{td}{tr}{tr:id=link}{td}*External links*\\{div:class=sIndent}{div}{td}{tr}{builder-show}{tr:id=retsam}{td}*ReturnsSample*\\{sub-section:getPartYOffset_ret|text=|trigger=button}{sub-section}{sub-section:getPartYOffset_ret|trigger=none|class=sIndent}[Number] -- A number holding the Y offset of the form part.{sub-sectiondiv: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}{builder-show:permission=edit}{tr:idclass=seelastDetailRow}{td}*Also see*\\{sub-section:getPartYOffset_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getPartYOffset_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getPartYOffset_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getPartYOffset_link|trigger=none}{sub-section}{div}{td}{tr}{tbody}{tbody:id=getPartYOffset|class=node}{tr:id=name}{td}h6.getPartYOffset{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getPartYOffset{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}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}{builder-show}{tr:id=samsnc}{td}*SampleSince*\\{sub-section:getPartYOffset_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getPartYOffset_sam|trigger=none}{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}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td Replace with version info{td}{tr}{tr:id=prs}{td}*Parameters*\\{td}{tr}{tr:id=ret}{td}*Returns*\\[Number] -- A number holding the Y offset of the form part.{td}{tr}{tr:id=see}{td}*Also see*\\{div:class=sIndent}{div}{td}{tr}{tbody}{tbodytr:id=getUUID|class=node}{tr:id=name}{td}h6.getUUIDlink}{td}*External links*\\{div:class=sIndent}{div}{td}{tr}{tr:id=sigsam}{td}{span:style=float: left; margin-right: 5px;}[UUID]{span}{span:id=iets|style=float: left; font-weight: bold;}getUUID{span}{span:id=iets|style=float: left;}\(){span*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:id=desclass=lastDetailRow}{td}{td}{sub-section:getUUID_des|text=|trigger=button}{sub-section}{sub-section:getUUID_des|trigger=none|class=sIndent}Returns the UUID of this component.{sub-section}{td}{tr}{builder-show:permission=edittr}{tbody}{tbody:id=getUUID|class=node}{tr:id=name}{td}h6.getUUID{td}{tr}{tr:id=sncsig}{td}*Since*\\{sub-section:getUUID_snc|text=|trigger=button}{sub-section}{sub-section:getUUID_snc|trigger=none|class=sIndent} Replace with version info{sub-section{span:style=float: left; margin-right: 5px;}[UUID]{span}{span:id=iets|style=float: left; font-weight: bold;}getUUID{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prsdes}{td}*Parameters*\\{sub-section:getUUID_prs|text=|trigger=button}{sub-section}{sub-section:getUUID_prs|trigger=none|class=sIndent}{sub-section}Returns the UUID of this component.{td}{tr}{tr:id=snc}{td}*Since*\\ Replace with version info{td}{tr}{builder-show}{tr:id=retprs}{td}*ReturnsParameters*\\{sub-section:getUUID_ret|text=|trigger=button}{sub-section}{sub-section:getUUID_ret|trigger=none|class=sIndent}td}{tr}{tr:id=ret}{td}*Returns*\\[UUID]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getUUID_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUUID_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getUUID_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUUID_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getUUID_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUUID_sam|trigger=none}{code:language=javascript}
var button_uuid = solutionModel.getForm("my_form").getButton("my_button").getUUID();
application.output(button_uuid.toString());
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}