Working with the Lianja Object Model
Contents
See Also
Understanding the Lianja App Architecture
Overview
Lianja Apps are built out of pages. Pages are built out of sections. There are a wide variety of built-in sections. Form sections for example are made up of FormItems and Gadgets. So as we can see, a Lianja App consists of a hierarchy of visual elements. This hierarchy we will refer to as the Lianja Object Model (LOM).
You can consider the whole of the Lianja App Builder as a meta-framework that you can use to develop Apps with.
As a developer you can manipulate the properties and call methods on any of these visual elements in both development and runtime mode. This is accomplished using the Lianja system object in any if the supported scripting languages: Lianja/Visual FoxPro, Python, PHP or JavaScript.
The following examples are provided in Visual FoxPro syntax but they will work equally as well in Python, PHP or JavaScript.
Lianja.getElementByID()
You can obtain a reference to the visual elements that make up your App using Lianja.getElementByID(item).
Examples
To get a reference to a page with the id mypage.
oItem = Lianja.getElementByID("mypage")
To get a reference to a section with the id mysection contained within the page mypage.
oItem = Lianja.getElementByID("mypage.mysection")
To get the current text in a FormItem with the id myitem in the section mysection contained within the page mypage use the following.
oItem = Lianja.getElementByID("mypage.mysection.myitem") cValue = oItem.value
Note: The synonyms Lianja.get(item) and Lianja.findElementByID(item) are also available.
Lianja.item()
Alternatively, use Lianja.item(position) to obtain a reference to the page at the specified position. This can be used with Lianja.count, which returns the total number of pages in the current App.
Pages and Sections also support the count property and the item() method, allowing you to traverse the complete LOM.
Example
for i=1 to Lianja.count oPage = Lianja.item(i) ? oPage.id for j=1 to oPage.count oSection = oPage.item(j) ? oSection.id for k=1 to oSection.count oFormitem = oSection.item(k) ? oFormitem.id endfor endfor endfor
Lianja.getElementByControlsource()
From v5.3 the Lianja.getElementByControlsource(cSource) method offers an alternative way to reference data-bound UI formitems (Canvas Section advanced controls, fields and gadgets).
From v9.8.6, the Lianja.getElementByControlsource(cSource) method can also be used for grid columns, returning a grid Column object.
The cSource corresponds to the formitem's Data source.
Example
oItem = Lianja.getElementByControlsource("customers.customerid") cValue = oItem.value
Note: The synonym Lianja.getControlSource(cSource) is also available.