NEW IN 4D V15
The most solid version of 4D ever
From productivity to mobility, the best 4D ever
Thanks to 4D's R-release program, 4D v15's myriad new features have already been tested and put into production by some of 4D's most intensive users. This means that from the gate, this is the most solid, stable new release of 4D ever. We think you'll agree.
4D v15's fully tested and validated new features cover 4D Write Pro, 4D View Pro, enterprise advantages, modern UI improvements, additional possibilities for developers, analysis & optimization enhancements, Web and mobile features, SQL updates, deployment features, 64-bit support and overall increased security. Read more below !
4D v15 includes the very first step of 4D Write Pro. The first version focuses on two main topics :
- Document compatibility: Import existing 4D Write documents with a limited feature set
- HTML email: Create a 4D Write Pro document including expressions, text, and images, then modify the document, paragraph or text properties and send by email.
Existing Object and Styled Text commands are also supported to manipulate the new 4D Write Pro form object.
New commands (over fifty) are also available to create, import and export a 4D Write Pro document.
The SMTP_QuickSend command has been improved so that 4D Write Pro areas can be sent as HTML emails.
Watch this video to see how to import and format an existing 4D Write document with 4D Write Pro :
Watch this video to see how to send an email with 4D Write Pro :
Is this what 4D Write Pro will be in its final form ?
4D Write Pro is a major development for 4D, so we will take full advantage of the R-release program to deliver it on a step by step basis. With each step, both the feature set and the programming capabilities will be improved.
Download the “How Do I” database to evaluate the features already implemented in 4D Write Pro. This example also allows you to test the conversion of your documents.
First step to 4D View Pro: Independent control types per cell
Easily create flexible and powerful UIs, dialogs and widgets.
This is a powerful enhancement for the listbox object, providing you with the means to define very flexible UIs. An array of objects can now be associated with the column of a list box so that each cell can have different types of widgets according to the type of data to be displayed.
This feature is restricted to users who have purchased a 4D View license, as this is the first step toward 4D View Pro. Similar to 4D Write Pro, it is no longer a plug-in but integrated in 4D itself, and it will add new functionality as well as enhance existing parts such as listbox.
Is this what 4D View Pro will be in its final form ?
4D View Pro is a major development for 4D, so we will take full advantage of the R-release program to deliver it on a step by step basis. With each step, both the feature set and the programming capabilities will be improved.
4D v15 now supports LDAP integration, allowing you to integrate your 4D solutions with company information systems like Microsoft Active Directory. It is now possible to automatically grant access to an application using existing user credentials as defined in the company directory. This provides the end-user with the advantage of only having one password to remember for their workstation and 4D app. 4D can also query the company directory to retrieve user information such as name, email address, phone number, department, etc.
Watch this video to see how to grant access to a 4D application using Windows (LDAP) session credentials
New network layer (Preview)
The network stack has been completely rewritten in 4D v15, used to communicate between 4D Server and remote clients, as well as in commands such as HTTP client. This redesign is an investment in the future, making optimizations and further evolution possible, with a final implementation planned in coming minor and R-release versions.
For compatibility reasons and for expanded testing, 4D v15 is shipping with both the old and the new network stack for the time being (except in 4D Server 64-bit for OS X), making it possible to switch between them based on user interface or programming language.
4D Internet Commands mail content-type SMTP attachment
The command now allows you to specify the content type of each attachment, for example "application/msword", allowing the recipient of an email to open attachments in a specific application.
New property to define radius for rectangles with rounded corners
Rectangles now support customizable rounded corners. You can define them in the Form editor properties, as well as by programming language (getter/setter).
Congratulations on adding these new possibilities to the object. We've also tested the language commands and they work very well. This will allow us to provide improved interfaces to our clients. Roland Mulder - Micro-Consulting
Toolbar form window type
This new window type gives you the ability to design more flexible toolbars compared to the old application toolbar.
New "On scroll" form event
You now have more control over managing scrollingl in user interfaces with pictures or list boxes. The 4D developer can be notified with the new “On Scroll” event whenever the user scrolls a scrollable object, in particular when the user uses the mouse wheel or clicks on the scroll bar.
SVG filters with Direct2D on Windows
The SVG_Filter_Blend, SVG_Filter_Blur and SVG_Filter_Offset commands are now supported on Windows with Direct2D enabled in graphic software context.
Get the display coordinates of a listbox object
The OBJECT GET COORDINATES command can now return the coordinates of the listbox reference frame for any listbox sub-object, i.e. columns, headers or footers, in addition to the listbox object itself.
The new command LISTBOX GET CELL COORDINATES does the same for any listbox cell. For example, it gives you the ability to draw a rectangle to display the current selection from a column when clicking on the header, with correct handling of scrolling.
In the context of a mouseclick event, this function returns the number of times the user has clicked the same mouse button in quick succession (for example, 2 for a double-click).
Handle transparency when converting PICT files
4D v15 now supports image transparency for now-deprecated PICT files.
New field type: Object
After introducing the object variable in 4D v14, a new object field type is supported by the 4D database engine starting with v15.0. It is now possible for you to store objects in the data file, add/modify/remove object attributes dynamically, and also you can perform fast queries on it. Those queries will be performed using a new QUERY BY ATTRIBUTE command that works in the same way as the QUERY command (and it can be mixed with this command in case of multiple queries).
The 4D tag revolution
Use “smart templating” techniques to output your data in most any text format imaginable. JSON, XML and HTML are just the beginning. You have the power and control to build the output using a number of control loops or newly-added arbitrary parameters. You can even embed and evaluate 4D code inside your template.
Developed over ten years ago to evaluate HTML templates, the PROCESS 4D TAGS command has evolved drastically. The newest major improvements allow the command to be used for any kind of template processing, but even further, to execute complex, structured code. PROCESS 4D TAGS creates a dedicated interpreter context, containing its own set of local variables, in both interpreted and compiled mode. It allows expression execution (such as variable assignment or command execution), and even parameters can be passed to the code.
You may now dynamically add columns to a listbox. You are also now able to define object names up to 255 bytes for all form objects available in the form editor. You no longer need to be concerned about object name length when applying your naming rules/convention (e.g. using a name like xxxx_Button). You can use generic code like OBJECT SET VISIBLE(*;"@_Button";False) to hide several buttons at once.
Dynamic listbox column creation and long names for form objects
You may now dynamically add columns to a listbox.
You are also now able to define object names up to 255 bytes for all form objects available in the form editor.
You no longer need to be concerned about object name length when applying your naming rules/convention (e.g. using a name like xxxx_Button). You can use generic code like OBJECT SET VISIBLE(*;"@_Button";False) to hide several buttons at once.
Find in sorted array
The new command Find in sorted array drastically improves performance, especially in very large arrays, when the array is sorted. The command returns information that allows you to know:
- the number of occurrences, when the element has been found
- the position where the element should be inserted when the element has not been found.
Without any additional work or execution time, you can do everything by calling a single command, effectively killing two birds with one stone.
The Find in Sorted Array is extremely interesting for us. After we make the request, the addition of automatic insertion of an item not found makes this an ultra-optimal feature. Stanislas Caron - UpSide
4D View: Get cell border definition programmatically
Improved generic programming as well as a procedural reading of 4D View allow you to automatically create other documents, such as Excel XML files.
Display unsupported picture format
This new feature provides you a quick and easy way to detect unsupported picture format and update it.
4D will now display an ‘unsupported format’ picture indicating the file extension in question when any obsolete file format is detected.
New option to choose the application that opens a URL
Select the best application to open a specific file by default. The OPEN URL command accepts a new appName parameter, allowing you to designate the application to be used to open the document or URL.
Import/export a database structure programmatically
Similar to the functionality in Design mode, two new commands, IMPORT STRUCTURE and EXPORT STRUCTURE, allow you to import/export a structure via code. This feature is important for automatic testing and introspection.
High resolution 4D process scheduler
The DELAY PROCESS command now accepts smaller units, making it possible to specify a duration of less than a tick, like 1/180th of a second.
Open a database programmatically
Make it simple to perform automatic testing of your solution using multiple test databases. You may also automatically reopen a database after a compilation operation. The new OPEN DATABASE command closes the current 4D database and opens on-the-fly the database defined by filePath.
4D developers can now benefit from smooth migration from subtables to normal tables. The relation field was previously read-only, and now it can be set to allow full access to a subtable using standard field/table commands. This way, all references to a subtable can be slowly rewritten, temporarily using mixed access, avoiding having to do a complete rewrite in a single step.
Look at what on of our partners says about this feature: We have extensively tested the ability to programmatically assign id_added_by_convert fields and are confident it is rock solid. Larry Wolf
Command-line argument parser
- Use command line mode to stop/kill/start your 4D Server
- Launch 4D with a given data and structure
- Available for both OS X and Windows 4D Server
Form Get Object
The FORM GET OBJECT command has enhanced functionality in 4D v15.
4D's method editor uses the international "English-US" language by default, regardless of the 4D version or local system settings. This new default setting provides 4D developers with two main advantages:
- Facilitation of code sharing between developers, regardless of their country, regional settings, or version of 4D being used
- Add 4D methods in source control tools, which often require exports to be independent from regional settings and languages.
Additionally, OS X users may define their startup language for 4D, regardless of system language. For instance, you can start 4D in Spanish on an English Mac.
4D code stored in Unicode
4D code, as entered in method editor, will be stored as Unicode, allowing all characters (such as Japanese) to be directly used in code or for variable names. It is now easy and safe to exchange code without any problem with accents or specific language characters such as in Japanese, etc.
4D Plug-in SDK
4D plug-in developers now have easier resource management of 4D dialogs.
Get database measures
The Get database measures command returns new information regarding index usage, queries and sorts. Furthermore, you have the means to analyze and optimize the internal configuration of your database.
For example, for an index, a high number of "insertKeyCount" items and a low number of "queryCount" and "sortCount" items may indicate that and index is unnecessary.
GET ACTIVITY SNAPSHOT and Enhanced Real Time Monitor
Go deeper into your 4D Server performance analysis, and enlarge the number of simultaneous connected users without investing in new hardware, by deeper performance analysis of 4D Server.
Enhancements now available:
- Query plan info
- User/computer initiating the operation
Get locked records info
A key new Command that will permit a 4D developer to optimize and streamline mature 4D client/server solutions.
Called for a table, the GET LOCKED RECORDS INFO command returns a list of all locked records, for every user, for every process, including table record number and process information.
Show form value by object name in debugger
The increased use of dynamic variables in 4D forms (variables without a variable name, i.e. “$form.9.1”) can make debugging painful. The enhanced debugger displays object names, as well as an improved listing for subform objects, so that it is easy to identify.
Show locked record count in debugger
In both 4D Server and in 4D, in the "Watch" pane of 4D Debugger and Runtime Explorer, under each table watch icon, the count of total locked records for that table will be displayed.
Runtime Explorer improvements
The user interface has been reworked to be more consistent with the process lists from the 4D Server administration window.
Start/end process name available in debug log
New lines are added to debug log whenever a 4D process is started or stopped: now the process name is available in addition to the process ID.
Is web server running?
A question you may have asked often: you can now send a command to check, indeed, Is web server running?
New preference in WEB SET/GET OPTION
Do you want to create a Web application with session handling and keep the session alive even when switching from wi-fi to 4G? With this new option, it's now possible to disable the IP address verification in session cookies for some applications that would need to switch from 3G to wi-fi or 4G, without requiring the user to log in to the application again.
Activate HTTP cache by default
The 4D Web server cache will be set by default for any new database created.
4D Mobile: Return selection from a 4D method
Keep your business logic within 4D and save time. A new MOBILE return selection command allows a 4D method to return a selection to Wakanda. Avoid any unnecessary work on the Wakanda application development side!
4D Mobile: Get/Set 4D Mobile method properties
It is now possible to get and set 4D Mobile-related method properties when exporting and re-importing methods using METHOD GET/SET CODE.
Two new commands, METHOD GET/SET ATTRIBUTES, have also been created. They are now returning the current value of all attributes of the method specified as a C_OBJECT.
SQL performance improvements
The SQL GROUP BY/ORDER BY commands now make it about ten times faster to run a Select statement using Group by for single tables, but also for more complex cases, like joined tables.
Running a distinct Select on a non-calculated field is about 80% faster than before.
Set/Get SQL server port programmatically
Get peace of mind for automatic custom deployment: Use the new GET/SET DATABASE PARAMETER option to set or get the port used by the SQL server.
Disable/Enable triggers with ALTER DATABASE DISABLE/ENABLE CONSTRAINTS
To ease the development of bulk imports and similar operations, this command allows you to enable/disable all triggers throughout the application or for a particular table. In combination with PAUSE INDEX, it drastically increases performance for such operations.
ODBC driver support for MS SQL
4D v15 offers enhanced ODBC driver support for MS SQL Server, especially for the DTS import/export wizard.
Build Application improvements for OS X 10.9.5 and above
Generate 4D-certified solutions that are ready for the code signing rules in OS X 10.9.5 and 10.10 (Yosemite).
After a product upgrade or at first launch, 4D usually opens the “Select data file” dialog. This dialog, as the very first interaction with your application, might be confusing for the end-user.
4D v15 introduces a new feature named Default Data that is strictly designed for deploying an application. It allows you to set up a default data folder, with data file, index file (and if needed, additional files) to be automatically merged with an application build.
At startup, the 4D application will first check if the last used data file is available. If not, it checks if the build contains a default data folder. If yes, this default data is used, and then it allows you to decide what you want to do and take control. For example, you may want to present to the user with your own dialog to select or create a data file.
4D Server 64-bit for OS X has achieved production-level quality but we have decided to maintain its "Preview" label for the initial release of 4D v15 because of the major changes that have been made in the new network layer, which is mandatory for the 64-bit version on OS X.
The first R-release under 4D v14 saw the beginning of the migration to 64-bit for the OS X platform, with 4D Server 64-bit joining the Windows version. This includes a newly redesigned Quick Report engine, Label Editor, and Property List , as well as increased control over the GRAPH and GRAPH SETTINGS commands, all exclusive to the 64-bit version.
With 4D v15, 64-bit support has also been extended to the 4D for OCI, 4D Internet Commands, 4D ODBC Pro and 4D Pack plug-ins.
Open SSL update
4D v15 verifies that it is using the latest version of Open SSL in order to be compliant with the lastest security references.
Weak cipher list removal
Security for client-server communication has been improved: Weak cipher list suites have been removed and certificate key length has been increased.
NOTE: It is now possible to use your own encryption key for your secured client-server communications.
Web area preference to prevent URL drop
4D Web areas now have improved security settings that prevent direct URL dropping by default. For security reasons, changing a Web area's contents by dropping a file or a URL in the area is disallowed by default. The mouse cursor now shows a forbidden icon when the user tries to drop a file or a URL in the area.