The most solid version of 4D ever

warning: file_get_contents(http://www.telize.com/geoip/ [function.file-get-contents]: failed to open stream: HTTP request failed! in /var/www/www.4d.com/docs/includes/common.inc(1762) : eval()'d code on line 4.
4D's tools are used upon by thousands of developers creating solutions for the largest and smallest businesses, with millions of end-users relying on them daily. 4D v15 delivers, with power, stability, extensibility and improvements that make everyday use better for everyone from developer to end-user.


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.


Download 4D v15

View the upgrade documentation


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 features64-bit support and overall increased security. Read more below!


4D v15 has been stable from the very first release, and it will serve as the base for our upcoming major release. Hans Prange, muellerPrange GmbH & Co. - Germany


4D Write Pro

4D Write Pro

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. 


4D Write Pro


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.


Download example database


Congratulations to the development and test teams for 4D v15. I've never seen a new version of 4D that's so stable and complete! It's a real success. Eric Prunet-Foch, Pro-logiq - France


4D View Pro

4D View Pro

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.


4D view pro


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.


Enterprise advantages

LDAP support

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



Download example database


New network layer

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.


new network layer


For compatibility reasons and for expanded testing, 4D v15 is shipping with both the old and the new network stack for the time being, making it possible to switch between them based on user interface or programming language. NOTE: This is not applicable for 4D Server 64-bit for OS X, which requires the new network layer.


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.



Modern UI improvements

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).


Rounded rectangle


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.


Toolbar form


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.


Download example database


4D v15 offers interesting new features for developers. Martin Bürgel, muellerPrange GmbH & Co. - Germany


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. 


Download example database


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.


Download example database



Click count

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).


Download example database

Handle transparency when converting PICT files

4D v15 now supports image transparency for now-deprecated PICT files.


Download example database


Even more possibilities for developers

New field type: ObjectNew field

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).

Download example database

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.


4D Tag flow

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.

Download example database

Listbox long name

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.


Download example database


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.


Download example database


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.


Download example database



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. 




Download example database 
useOpenUrlParameter.zip HDI_useOpenUrlParameter.zip

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.


Export structure


Import structure



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.  


Subtable migration

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


SQL Views

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. 


Download example database


Language independence

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.


For additional details about the 4D Plug-in toolbox, please take a look at the plug-in developer reference Web site.


Analysis and optimization

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.


A tech note on this topic is available for direct download by Partners: http://kb.4d.com/assetid=77198 


Get database measures



Download example database

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


SQL Views

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.


Download example database
GetLockedRecordsInfo.zip HDI_GetLockedRecordsInfo.zip

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.


4D Debugger before/aftger

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. 


SQL Views

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

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.


Web- and mobile-ready

Is web server running?

A question you may have asked often: you can now send a command to check, indeed, Is web server running? 


Cookie!!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 mobile4D 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!


Download example database
MobileReturnSelection.zip HDI_MobileReturnSelection.4dbase.zip

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 power

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. 


SQL Views



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. 


Even better deployment

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).


Default Data

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.


default data

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.

64-bit support grows across the board

4D Server 64-bit for OS X has achieved production-level quality, having reached "final" release form as of 4D v15.1.


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.


64-bit evolution


Increased security

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.