Lianja 7.2 will be the next general release expected this month.

I have uploaded Lianja 7.2Beta26 for Windows for those of you who have access to pre-release versions.

This is pre-release software so it should not be used in production.

Changes since 7.2Beta25

- Usability improvements in grid editing
- Added a new button to the Visual Component Manager. This will open an App called mycomponents (or create it if it does not exist), create a new page and then create a canvas section on the page. You should fill in the “Visual Component Details” in the attributes and the scripting language that you want to write the delegates in. You can then visually design a new component or form.
- Saving Visual Components (Canvas section with Visual Component Details) copies the saved component into the current app as well as the components directory. This provides the ability to visually design forms in LianjaScript/VFP, Python and JavaScript.

Activate the saved forms like this:

Lianja.showDialogForm("window title", "myform?props...") // if no extension defaults to a LianjaScript dbo
Lianja.showDialogForm("window title", "")
Lianja.showDialogForm("window title", "myform.js?props...")

or using special file prefixes to reference forms in other apps.

Lianja.showDialogForm("window title", "app:/mycomponents\myform?props...") // if no extension defaults to a LianjaScript dbo
Lianja.showDialogForm("window title", "app:/mycomponents\")

- Added a new section delegate initForm(). This delegate is called when a Visual Component Form is activated. You can open a database and it’s tables required by the form in this delegate. Note that activating a form will automatically PUSH / POP DATASESSION so there is no need to do this.
- oledb workarounds for VFPOLEDB driver bugs with datetime and logical fields
- Further performance improvements
- Various tickets fixed.

Changes since 7.1

- *new* You can now build forms visually in the Canvas Designer using JavaScript, LianjaScript or Python and create standalone executables from these.
- Python debugger improvements
- *new* python now provides dynamic binding to event handlers in custom Python code (same functionality as LianjaScript and JavaScript). e.g. = my_click_function
- *new* Lianja.showDialogForm("title", "componentlib.componentname?componentargs...". componentargs is a ';' separated list of objectname.attribute=value pairs. The objectname corresponds to the formitem name in the canvas section that has been saved as a component. Forms can be developed visually in LianjaScript, Python or JavaScript.
- SQL optimizer improvements and fixes resulting in an overall speed boost
- Added serveral new cryptographic hash functions. SHA-256 is a popular hashing algorithm used in Bitcoin encryption (and other blockchain applications).
-- sha256( cExp ) this returns the SHA256 cryptographic hash for the specified character string
-- sha256File( cFilename ) this returns the SHA256 cryptographic hash for the specified file
-- sha256Record( [alias] ) this returns the SHA256 cryptographic hash for the current active record
-- crc32Record( [alias] ) this returns an 8 byte hexidecimal value (A cyclic redundancy check) for the current active record
- Many Canvas Designer improvements.
- Added new function tableSeqno(cDatabase, cTable). You can use this to apply a default seqno() in client/server Web Apps. If you use seqno() in a default value for a column then when the App is generated as a Web or Mobile App seqno() will automatically be translated to use tableSeqno().
- Further "Assistant" improvements:
-- Improved "Anchor" layout support
-- Added "Order By" to allow column selection to order a section by using a field picker.
-- Added "Filter" to allow specifying of a filter using the query builder.
- Datetime date display format now defaults to the system locale. It can be changed using the SET DATEFORMAT TO "..." command.

set dateformat to "ISO" or "yyyy-MM-dd"
set dateformat to"ANSI" or "yyyy.MM.dd"
set dateformat to "JAPAN" or "yyyy/M/d"
set dateformat to "BRITISH" or "d/M/yyyy"
set dateformat to "AMERICAN" or "M/d/yyyy"
set dateformat to "GERMAN" or "dd.MM.yyyy"
set dateformat to "ITALIAN" or "dd-MM-yyyy"
set dateformat to "FRENCH" or "d/M/yyyy"
set dateformat to "YMD" or "yyyy/M/d"
set dateformat to "MDY" or "M/d/yyyy"
set dateformat to "DMY" or "d/M/yyyy"
set dateformat to "USA" or "M-d-yyyy"
- Improved SQL compatability with VFP
- Column names containing spaces in MSSQL Virtual Tables are now supported. Specify the "translatecolumnname=true" property for the Virtual Table. Column names containing _ characters can be excluded by specifying "translatecolumnnames=-name1,-name2 etc"
- Improved deployment. Select only those files you want deployed and they will be compiled if required and then deployed. Use "Preview' first to verify the files which will be deployed.
- When saving data as xml/excel (SELECT or COPY) any invalid characters are now escaped.
- You can now write to the App Builder console log from .rsp server-side code to assist debugging. Select the console worspace in the App Builder and click the "Preview live in browser" icon.
set debugout on
writeOutput( cExpression )
set debugout off
- Added the ability to redirect output to the App Builder console workspace from .rsp files. This supports arrays and objects just like the ? command does. e.g.
set debugout on
? > variable
? > _get
set debugout off
- Added new "Form" method to help in debugging custom forms
myform = createObject("form")
- Improved garbage collection.
- Numerous improvements to the "Assistant"
-- Added "Caption size and "Data size"
-- Added "Caption font" and "Data font"
-- Added "Caption alignment" and "Data alignment"
-- All attributes in the "Formitem" panel can now be edited in a popup dialog. This is useful for long test such as Choices and DataMapping.
-- Added "Layout" direction for "OptionGroups" in the "Assistant" for Form and Canvas sections.
-- Added "Multiselect" for "OptionGroups in canvas section in the "Assistant" for Form and Canvas sections.
- Virtual Table improvements.
-- Basetable added to the VT dialog to make it more intuitive.
-- VT Updates now operate with wheretype=3
- Added a new LianjaScript function gmtime(). This returns a datetime just like the datetime() function but the time is in expressed in Coordinated Universal Time (UTC).
- The "Page Builder Assistant" is now embedded in the "App Inspector" to speed up development.
- Further oledb improvements
-- Improved performance
-- Now working better with the searchbar in Desktop and Web across all fields
- Added a new App attribute "Disable success notifications". This operates in Web/Mobile Apps to disable the noise from successful operations such as updating records, upload images etc. Notifications only occur when an error occurs.
- Included a new example app example_carouselview
- Improvements to the carouselview section
-- You can now edit the parameters by clicking on the keyboard icon in the section header
-- Adding a new image positions on that image after uploading it
- Minor UI improvements
- Performance and stability improvements.
- Various bug fixes.