New WINDEV, WEBDEV, WINDEV Mobile 22 feature!
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WindowsLinuxPHPWEBDEV - Browser code
AndroidAndroid Widget iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Stored procedures
New control: Word processing (WP)
The "Word Processing" control (WP) is being introduced in version 22.
It's a very powerful control.
Via this new control, the end user does no longer have to exit from his application to create his common documents.
No need to install any external software on the computer.
This new control is handled by programming in WLanguage, offering extended capabilities regarding the configuration and the automation.
The WP control is WYSIWYG.
  • Read and write .DOCX
  • Create PDF, create emails
  • Create sales proposals
  • Manage the images and tables
  • Save and load your texts
  • Ability to save in HFSQL
  • Spelling checker
  • Printing
For the common tasks regarding text management, the users do no longer have to exit from their application: time saving, consistent interface, no other software to install/drive/manage.
See The Word Processing control for more details.
WP control : Standard formatting ribbon
The WP control is using a "standard" ribbon by default.
This ribbon proposes the standard features of word processing: open, save, format, zoom, edit, etc.
This ribbon can be hidden.
The ribbon displayed in the WP control can be customized (see next new feature).
See The Word Processing control for more details.
WP control : Custom formatting ribbon
A custom ribbon with 2
A custom ribbon with 2 "business" buttons: "Edit the GSC" and "Send the proposal"

The ribbon of WP control is supplied in "source" format (internal window).
Therefore, it can be customized.
For example, you can easily create a "Send the proposal" button in the ribbon of WP control directly!
You also have the ability to create a button used to find contextual data in your ERP system!
See The Word Processing control for more details.
WP control: Reading and saving standard .DOCx
The WP control reads and saves the documents in standard Docx format.
Therefore, the documents created by the WP control can be opened by the word processors that support this format: MS Word, OpenOffice, iWork, ...
Similarly, the documents created with these word processors can be opened by the WP control.
See The Word Processing control for more details.
WP control: Reading and saving in HFSQL
A .Docx file created by the WP control can be saved in a HFSQL data file (Classic, Client/Server, Cloud, embedded, cluster, ...).
This saving method allows you to manage documents as easily as the rest of data: history, archiving, search, indexing, ...
See The Word Processing control for more details.
WP control : Spelling checker
A spelling checker is supplied in French and in English.
You also have the ability to download dictionaries for many languages.
This spelling checker is included in the WP control and it can be freely distributed with your applications.
Integrated checker
Integrated checker
See The Word Processing control for more details.
WP control : Useful features
The Word Processing control in version 22 offers efficient features to the end user:
  • choice of fonts, sizes, weights, colors, uppercase mode, exponent, subscript, ...
  • page layout: paper size, page orientation, margins, borders, background color of document, ...
  • definition of paragraphs: line spacing, offset, space before/after, first line offset, alignment, justification, borders, ...
  • rulers,
  • tabulations, stops, next,
  • bullets, numbered bullets,
  • use of styles,
  • hypertext links (Internet),
  • advanced underlining (single line, double line, ...),
  • page headers and footers,
  • date insertion,
  • management of arrays,
  • copy/paste,
  • insertion of images with wrapping,
  • zoom,
  • page numbering,
  • export in PDF,
  • display of control characters,
  • undo/redo,
  • print.
See The Word Processing control for more details.
WP control : Transform the document into HTML
A document created or edited by the WP control can be saved in HTML format.
This allows you to use it in an email for example.
See The Word Processing control for more details.
WP control : Create PDF
The WP control allows you to save its content in PDF format.
The generated PDF file can be encrypted and signed.
See The Word Processing control for more details.
WP control : Print and Preview
The WP control displays its content in WYSIWYG.
Before printing the content of a WP control, you have the ability to start the print preview (like for a report).
The print is performed by iPrintDoc or by DocPrint.
See The Word Processing control for more details.
WP control: Link with the report editor
A document created with the WP control can be combined with one or more reports (the general sales conditions for example).
See The Word Processing control for more details.
WP control: Use by programming: total interaction with your applications
One of the benefits of the WP control is that it can be handled by programming, in WLanguage, like any other control.
The advanced types (document, paragraph, fragment) and their properties allow you to create, modify and retrieve texts by programming.
All the customization and configuration capabilities are available, you have total control!
You can also check by programming a content typed by the end user before printing it (the amounts for example), in order to inform him in case of inconsistencies.
The code below customizes a document with the customer name and it creates the PDF:
// Load the docx file
ProposalDoc is Document = "C:\Commercial\Template.docx"
// Replace the customer names in the document
arrFragments is array of DocFragments = DocSeek(ProposalDocument, "%CustomerName%")
FOR EACH fragment OF arrFragments
fragment..Text = Customer..Name
// Export into a PDF file
DocToPDF(ProposalDoc, "C:\Export\Proposal_" + Customer..Name + ".pdf")
Example of sophisticated WP document
Example of sophisticated WP document
Use examples:
  • Generate a sales proposal according to data stored in files
  • Insert images by programming
  • Modify the formatting
  • Prepare a text to customize
  • Find texts in archived .DOCx
  • Prepare custom mailings
See The Word Processing control for more details.
22 new features
The tables are often used in the interfaces of applications. The Table control is an essential control. In version 22, the Table control evolves according to your needs.
You will find the new features you were expecting for your tables in the following list!
A window inside a table row!
The version 22 of WINDEV allows you to define an internal window for each table row.
This window will be displayed during a click on the row, during the rollover (option) or by programming.
A click on the row moves the rows below and displays the window.
The content of this internal window is entirely free.
The detailed window can contain:
  • another table (linked to the row that was clicked),
  • customer orders,
  • order products,
  • history of sales, ...
Visual : moving materialized columns
In version 22, moving columns, resizing rows, etc. by the end user adopt a fluid visual behavior. For example, the columns moved are visualized during the move.
This small graphic "addition" delights the end users!
Canceling a move by the end user is supported (Ctrl+Z on several levels).
The visual effect allows the end user to better visualize his action
The visual effect allows the end user to better visualize his action
Customizing the treeview tables
The aspect of treeview tables can be even more customized.
Specifically, the start of row picto can be displayed or not, with automatic text repositioning.
The displayed tables are less dense.
When the pictos are kept, you can define their image and specify a display size, in order to manage custom alignments.
Treeview table with or without picto
Treeview table with or without picto
For more details, see:
Checking an entire column of check boxs in a single click
The end users will love this new feature: in version 22, you have the ability to check an entire column of check boxes in a single click (all/none)!
This behavior is also proposes for the columns of radio buttons.
There is nothing to program, it is an AAF.
Filtering a column of check boxes
This feature allows you to only display the rows whose check box is checked or the ones whose check box is unchecked.
This is useful to improve the reading of huge tables.
Images inside the table? The table is faster in 22!
A table can display data coming from "memo" items.
If these memos contained huge data, the load time could be quite long for the end user: each row had to be entirely loaded before the loading could start for the next row.
In version 22, displaying tables with memo is immediate: the content of memos is loaded in asynchronous mode and the display of rows is not slowed down.
Custom progress bars
In some cases, a table must display complex data that may take some time to be calculated. And it would be great if the display could be done sequentially.
In version 22, it is now possible to define custom progress bars (for loading in our case) via an internal window.
Display a progress bar!
Display a progress bar!
Empty table? A warning window is displayed
When a table is empty (no record and no row is displayed), an internal window allows you to display a custom message.
For example: no elements was selected, no element corresponds to the search criteria, ...
It is more useful than an empty table!
Warn the users!
Warn the users!
Totals and means? And now, Min, Max and custom formulas!
As you already know, the end user can add totals and means on the table columns.
It is a very useful AAF that is very popular.
In version 22, the end user can also display the minimum and/or maximum values for one or more columns.
And the end user can even use custom formulas that have been created by the developers beforehand.
Custom calculations
Custom calculations

For more details, see:
Anchoring controls in the breaks
Another interesting new feature of version 22: the controls in the breaks can be anchored according to a column.
When the column is resized or moved by the end user, the break control remains aligned with the column.
I want HTML in my tables!
The version 22 of WINDEV allows you to directly include HTML in the table cells (there is no need to create a container column).
The HTML attributes are interpreted: this allows you to create sophisticated presentations, by retrieving for example presentations coming from Internet.
HTML in a Table control
HTML in a Table control

Enhance the style of your tables
The version 22 of WINDEV allows you to enhance the style of your tables:
  • it is now possible to modify the color of column titles by programming
  • you now have the ability to define specific styles for the title-headers of columns
  • the captions of title-headers can be modified by programming
  • you have the ability to specify a margin for the titles
  • you can specify the thickness and the color that will be applied to each one of the 4 sides of one or more table cells.
Tables: Animated insertion
An optional animation allows you to view the insertion of rows in a table, by animating the move of the rows found below.
See the following help pages for more details:
Programming the tables : 5 useful new features
  • Two new events for programming tables are introduced in version 22.
    The new Initializing break event is used to easily define the initialization processes.
    The Collpased/Expanded event of a break allows for an even better programming.
  • It is now possible to create or redefine breaks on the table by programming.
  • The new WLanguage TableSetFocus function simulates the click on a table row by programming!
  • The new ..VisibleInExportAndPrint property is used to specify that one or more columns will not be printed.
Tables : various evolutions
  • Positioning a table row in the visible (displayed) part of the table. The new taVisible constant for TablePosition makes a table row visible in a smart way: if the row is already visible, nothing moves ; if the row is not visible, the table automatically scrolls to make the row visible.
  • A table without selection includes a magnifier on the headers.
  • The tables with title-headers include a magnifier on the headers.
  • For the tables in "Read-only" mode, the unchecked check boxes can no longer be viewed (to prevent the end user from trying to click the check box in order to check it).
More granularity!
In version 22, the granularity of schedulers and organizers gets free!
You have the ability to define a specific granularity: by day, week, two weeks, month, year and even a custom granularity. Everything becomes possible (and easy).
Business hours specific to each resource
In the same schedule, different business hours can be specified for each resource!
For example, a physician works from 8:00 AM to 6:00 PM while another one works from 9:30 AM to 9:00 PM.
You also have the ability to add unavailability periods such as a lunch break for example.
Business hours are even more specific!
In version 22, specific business hours can be specified according to the day of the week. For example, the business hours on Monday are differ from the business hours on Tuesday.
An even more customized display range
The display can be done by hiding some days (such as weekends for example) or by removing specific days (such as bank holidays), ...
A specific date can be hidden.
An even more sophisticated display
When an appointment takes place on several days, it can now be displayed in a single block, without break between the days: it looks better and it is easier to understand.
The scrollbar width can now be customized.
A custom border can frame the selected appointment.
Improved appointment display
An appointment includes a title and a detailed description. When one of these sections is empty, the other section occupies the entire available space: this allows you not to truncate a text while there is available space.
If the 2 sections are filled, their size can adapt to the content. The border can be customized.
Programming the schedulers and organizers: 3 new features
There is no limit to the processes you can program!
  • The MovingResource event prevents the end user from moving the appointment.
  • The WLanguage SchedulerSelectedRange and OrganizerSelectedRange functions allow you to retrieve the time range selected by the end user.
  • You have the ability to modify the background color, the font, the size, ... of a resource via programming.
Order in overlapping appointments!
When several appointments overlap in the same time range, you now have the ability to specify the display order of appointments via APT..Altitude.
A more powerful feature for the end users.
  • The Ctrl+Z combination allows the user to cancel the last action performed, such as moving task for example.
  • Moving an appointment into a non-visible section of the scheduler or organizer is made easier by an automatic scroll.
  • You have the ability to modify the title and content of an appointment.
The "Month" mode was enhanced
You have the ability to perform an input in the "Month" mode directly.
In "Month" mode, it is now possible to use the preset window for viewing the appointment.
The buttons for changing periods can be displayed in "Month" mode like in the other modes.
The displayed range adapts to the available space
The new "automatic range" mode automatically chooses the displayed range (month, week, day, ...) according to the period defined and to the available size.
This new mode allows you for example to propose an optimized display on a phone and on a tablet without having to code anything.
Controls: inside margins
In version 22, all types of controls can benefit from a custom margin (also called "white space", gutter, ...).
4 different margins can be specified (one for each side).
This allows you to customize each control style.
The top, bottom, left and right margins are different here!
The top, bottom, left and right margins are different here!

Spreadsheet control : 5 new features
The Spreadsheet control evolves in version 22.
It proposes 5 new features:
  • ability to name cells: SpreadsheetAddName.
  • ability to pin the panes (fix the row and column header area): SpreadsheetFreeze.
  • new Cell Modification process that is triggered when a cell is modified by the end user,
  • 2 new WLanguage functions to delete rows and/or columns: SpreadsheetDeleteLine, SpreadsheetDeleteColumn
  • 2 new properties to modify the row height and the column width: ..Height, ..Width
Repositionable notes: family of WLanguage functions
In version 22, the new family of WLanguage Note functions allows you to create by programming actions similar to the ones that can be run by the end user: create a note, save it, position it, ...
Rollover tooltip of controls : avoid spillage!
By default, the tooltip size adapts to the text to display. If the text is long, the tooltip size can be disproportionate to the control. In version 22, you have the ability to define a maximum size for the tooltip (in pixels).
Gantt: on time!
The Gantt control proposes a granularity by "month", "week", "day" or "hour".
The granularity on an hourly basis is proposed
The granularity on an hourly basis is proposed
Control ID : Windows identifier
Each control found in a WINDEV window has a unique internal WIndows identifier.
This unique identifier is persistent between 2 executions.
This identifier allows for compatibility with the tools based on these identifiers, such as Jaws for the automated interface reading aimed at vision-impaired users.
Icons : various new features
  • Icons: management of HQ display (high quality)
  • Icons: management of sheets in transparent BMP format (32 bits).
New types of series : trend line
WINDEV 22 allows you to add trend lines on existing charts.
The new WLanguage grSeriesType function is used to define the type of trend: constant, mean, linear regression.
A trend line
A trend line
Advanced customization of Line charts
In version 22, the customization of Line charts has become more sophisticated.
You could already customize the line thickness as well as its color.
In version 22, you now have the ability to customize:
  • the type of line by series (dots, dashes, ...)
  • the type of points for a series (shape, size, color, ...)
  • the type of a specific point can also be defined.
Thickness, type of line, custom points for each line
Thickness, type of line, custom points for each line

Chart : the axes move
In version 22, the axes are moving!
The axis does not necessarily starts at zero.
The position of the horizontal axis (X coordiinates) can be specified: "at the very top" or "at the very bottom".
The vertical axis (Y coordinates) can be positioned on the right of the chart.
In version 22, the marks of axes can also be orthonormal (the scale is identical for the 2 axes).
The axis is set to -40
The axis is set to -40

New type of chart: composite chart
WINDEV proposes several types of charts.
A new type of chart is being introduced in WINDEV 22.
It is the Composite chart.
This type of chart allows you to group several types of charts into a single one.
For example:
  • a bar chart with a line chart
  • several line charts with a bar chart
  • a candlestick with an area
  • ...
A composite chart that mixes bar charts, an area, line charts, ...
A composite chart that mixes bar charts, an area, line charts, ...
See Composite chart for more details.
New Composite chart : how to define it?
The new Composite chart is defined either by the "7-tab" technology, or by programming.
The type of a series displayed can be changed by programming.
The new WLanguage grSeriesType function is used to define or modify the type of series.
You have the ability to specify the colors, the opacity, the thickness, the size, etc. of elements.
See Composite chart for more details.
Chart : various new features
  • The zoom may (or may not) have a maximum limit.
  • The zoom wheel operates when hovering the control, even if the control does not have focus.
  • The new grXCoordinate, grYCoordinate, grSecondaryYCoordinate constants for the WLanguage grInfoXY function are used to retrieve the value of X and Y coordinates for the X Y position (in pixels) in the chart.
  • In the tooltip of a "Stacked column chart", the total of the stack is displayed in addition to the details of each series!
SCM DRIVE : Your SCM in the cloud in 3 clicks. share & save your projects
In version 22, including the SCM in the cloud is child's play! In just 3 clicks, you share your projects all over the world, at a an outstanding price: 2 Euros(*) per month per developer!
See new features for SCM.
In version 22, 2 different environment themes are proposed: A light theme, a dark theme.
Depending on the type of screen used, its contrast and brightness settings, depending on the lightness of the room, and according to the taste of everyone, each team member will be able to choose the theme that suits him!
Note: you have the ability to choose the "light" theme and switch the code editor into "dark" theme.
Light environment
Light environment
Dark environment
Dark environment
Depth of stacked controls in the editor
A "depth" menu is being introduced in version 22.
This menu is used to easily manage the stacked controls in the editor.
It is opened by pressing Shift + Click on stacked controls.
The menu displays a thumbnail for each control and it allows you to select these controls, with access to the popup menu of the control.
Everything found under the
Everything found under the "Sales" control: a static, a looper, and the background
A new modifier
The modifier is used to access and modify the characteristics of one or more controls.
It is a kind of a shortcut for the "7 tabs"!
In version 22, the modifier was revised and thoroughly improved.
Modifier: multiple selection
One of the anticipated new feature is the ability to modify in a single operation the characteristics (anchor, opacity, animation, size, ...) of a group of controls.
When several controls are selected, each characteristic is displayed for the group of controls: if the value is the same, it is displayed ; if the values are different, they are displayed in a combo box.
Selecting one of these values assigns it to all controls.
The modifications will be applied to all the selected controls or to the specified control
The modifications will be applied to all the selected controls or to the specified control
When the property of the selected controls has the same value for all the controls, the branch is collapsed.
If the property has different values, the branch is automatically expanded. You have the ability to type an identical value for all the controls in a single operation.
Modifier: 5 new features
  • In version 22, the modifier benefits from search and filter features.
  • A scrollbar replaces the move buttons.
  • The mouse wheel allows you to move.
  • Displaying the modifier on a 4K screen or on a large font screen is adapted to the screen resolution.
  • The modifier can act on a group of controls
My own modifier
In version 22, you have the ability to create your own modifier by selecting the features to keep visible.
Each modifier feature can be pinned in the environment.
Cross references
In version 22, the cross references get a dusting!
The interface was entirely overhauled, and it becomes much clearer and intuitive.
Anticipating the impact of a modification is much easier.
For example, a right click on an element found in the explorer displays the list of uses for this element.
The tree structure allows you to find out where the variable is used
The tree structure allows you to find out where the variable is used

Sizing: direct input
Creating a control in the editor is performed graphically with the mouse.
In some cases, it may be useful to directly type the width and height of the control in pixels: it is now possible with a simple right click on the corresponding control handle.
Reminder: it was already possible to specify these values in the "7-tab window" (that must be opened) and in the "status bar" (that is located too far down).
Let's also remember the magical F4 key that allows you to re-run the last operation (to apply the same width to several controls for example) as well as the "same height" and "same width" options in the alignment pane of the ribbon.
All these possibilities are proposed for your comfort and ease of use.
On the edit control directly: position or size to the pixel
On the edit control directly: position or size to the pixel
Rollover tooltip
The size and position tooltip of a control evolves in version 22.
It becomes more sober, it displays more information, and it does not move anymore.
Rollover tooltip
What's up with the fonts?
A small new feature in version 22 that is very useful: the interface for selecting the font is now visual.
Selecting the font
Create it: it's saved!
In version 22, as soon as a window (a page or a report) is created, it is saved.
This automated behavior allows you to benefit from all the environment automations when creating a window: automatic completion, ...
A little comfort.
An integrated image editor
We all had to retouch an image, an icon, ... You have the ability to use an external tool but it will have to be installed on the computer.
And as far as "Paint" is concerned, it is supplied with Windows and it can be useful but it does not support transparency.
The version 22 includes a mini image editor integrated to the environment.
Without exiting from the project, you now have the ability to edit your images and icons.
The main features are:
  • Cropping, Resizing
  • Symmetry, Rotation
  • Text
  • Layers, order, merge, move, visibility
  • Access to clipart icons (image catalog provided)
  • Management of formats: jpg, png, bmp, gif, tiff, ico, ...
  • Preserving transparency
  • For the buttons, the borders: generation of 5-state images (rest, rollover, pressed, grayed, focus)
  • Zoom + preview thumbnail
  • ...
A real editor entirely integrated and always ready to help
Manages almost all image formats
Preserves and manages transparency
The easy generation of "5-state" images will be very useful!
The image editor of version 22
The image editor of version 22
See Image editor for more details.
New : An integrated image editor
When you develop, you always need an image editor
With version 22, no need to use an external application: the image editor is integrated in your environment.
A ribbon and several panes give access to the features.
The image editor is connected to the SCM.
See Image editor for more details.
An editor intended for developers: "5 states", icons, transparency, ...
This image editor is intended for the developers, which means that it includes the features useful in development.
For example, the management of transparency allows you to stack different images.
And the support for the ICO format allows you to create icons for your applications!
The layers allow you to easily stack images or texts.
The easy generation of "5-state" images will be very useful!
See Image editor for more details.
Unprecedented comfort
An image to modify? Right-click the image in the window editor, the image editor is opened, you perform the modifications, you save and here you are, the image is updated in the project.
Several images can be edited at the same time.
See Image editor for more details.
Main features of image editor
  • Resizing
  • Centering
  • Rotation
  • Symmetry
  • Zoom
  • Pencil
  • Eraser
  • Lasso
  • Text, RTF text
  • Fill
  • Management of transparency (alpha layer)
  • Selection in rectangle or with lasso
  • Copy/Cut/Paste
  • Generation of a 5-state image from the current image
  • Settings of contrasts and lightness
  • Transforming a color into transparent
  • Transforming a color into another one
  • Conversion to black and white
  • Modifying the saturation
  • Modifying the hues
  • Automatic halo addition
  • Automatic addition of drop shadow
  • Backup in source image format (png, jpg, ...)
  • Backup in .wdpic format with storage of layers
  • Management of layers
  • Layer creation:
    • blank
    • from a catalog image
    • from a disk image
    • from the clipboard content
    • from another layer (duplication)
  • Moving the layer content
  • Flattening layers
  • Merging layers
  • Moving the order of layers (order of layers = z-order)
  • Pipette
  • Zoom window with move
  • "Right click .. Edit" from an Image control in a window
  • ...
See Image editor for more details.
WINDEV 22 is signed
In version 22, all the modules found in version 22 are signed.
This better respects the security policy of some companies and ensures that no virus is installed.
An environment common to WINDEV and WINDEV Mobile
In version 22, you now have the ability to open WINDEV Mobile projects in WINDEV (you must own the appropriate licenses).
You also have the ability to create a project that includes WINDEV configurations and WINDEV Mobile configurations.
To edit a WINDEV Mobile project or configuration, there is no need to exit from WINDEV and to start WINDEV Mobile.
Re-using an existing project is made easier.
The operations to performed are reduced.
Common windows
Before version 22, to edit a WINDEV window in WINDEV Mobile, you had to import it into WINDEV Mobile.
Then, you would have 2 versions of the window.
In version 22, you have the ability to directly share a window (or an internal window) between a WINDEV project and a WINDEV Mobile project, or between 2 configurations of the same project.
This is very useful for the applications intended to operate on a PC and on a tablet (Windows, iOS, Android, UWP).
The new "Adaptive Design" feature of WINDEV 22 windows is very useful here (see new feature 205).
Code, class, query, analysis, report, ... in simultaneous access
With the earlier versions, it was possible to share project elements between WINDEV and WINDEV Mobile.
But you has to switch editor all the time, to close the project and to re-open it in the other environment.
It was still very restrictive, ...
In version 22, all this is history, you have the ability to edit the windows, the code, the classes, the queries, the reports, ... from the same environment, regardless of the Windows, Linux, iOS, Android or UWP version, ...
Writing multi-platform applications is much more pleasant.
Multi-configuration compilation
In version 22, a new option allows you to specify that all the project configurations must be compiled systematically: the ones of WINDEV and WINDEV Mobile (iOS, Android, ...), at the same time.
Reminder: The project is compiled at each line break in the code editor, at each backup (Ctrl+S), ...
Therefore, the possible compilation errors in a given configuration appear immediately.
Time-tracker (time management): new look
As you already know, the editors allow you to accurately track the time spent on each project, on each task.
A time tracker is integrated in the editors.
In version 22, the time tracker was revised and improved.
Monitoring of tasks done: print
For the providers who invoice for the time spent, the version 22 of Project Monitoring Control Center allows you to print the list of tasks already done, per project and per team member.
(For the forthcoming tasks, use the Gantt chart, that indicates the links between tasks)
Details of time spent
Details of time spent
Integrated messaging
A secure messaging is integrated in the development environment. In version 22, this messaging can be directly accessed from a tab of Project Monitoring Center.
Creating reports on "looper"
In version 22, you have the ability to automatically create reports based on a looper.
Once positioned on the looper, all you have to do is create the report.
A report is generated with all the controls found in the looper.
Everything is editable and customizable.
At run time, the report is automatically filled with the looper data.
Create reports in one click

Create reports in one click
Create reports in one click

Justified Static control
The "Static" controls can now be justified.
This was an often requested feature!
Example of justified Static control

RTF control : print the tables and images
A checkmark in the 7-tab window allows you to ask for printing the tables and/or images found in an RTF document.
These elements are not printed by default.
Print in color via the mask (7-tab window)
In version 22, the definition of a display/print mask is enhanced.
You now have the ability to specify a print color.
For example, a positive number will be printed in blue while a negative number will be printed in red.
Display mask: I decide blue if positive number, red if negative number ...
Display mask: I decide blue if positive number, red if negative number...

... and the result in a table: the negative numbers can be easily identified!
... and the result in a table: the negative numbers can be easily identified!

Replacing the name of a control by its value in a caption. And now in HTML
In a caption, the report editor allows you to type the name of a control so that it is replaced by its value. All you have to do is specify the name of the control (or item, ...) between square brackets and %.
Hello Mr. [%LASTNAME%&]
In version 22, this feature is extended to the HTML controls.
Customize the HTML texts automatically
Customize the HTML texts automatically
Tooltips of editor
Tooltip in the report editor
Tooltip in the report editor

The tooltips in the report editor are enhanced.
The tooltip displays additional information for the reports:
  • corresponding WLanguage property.
  • availability in the platform (Windows, Linux, iOS, ...).
  • multilingual values.
  • ...
The Static control: unifier
The "Static" control in the report editor becomes more consistent.
It now includes the "Item", "RTF" and "HTML" controls of the report editor. The existing controls are changed into "Static with link" controls.
The report execution is not impacted, it is a more logical presentation of the source report.
Report : various
In the 7-tab window: the features not available in a configuration are grayed and a tooltip is displayed.
Displaying items
In version 22, the tems found in a data file (table column) can be displayed according to the following criteria:
  • logical order,
  • physical order in the data file,
  • alphabetical order.
A search magnifier is available.
See Creating and handling an item for more details.
Help in entering tables whose name is a reserved word
When the name of a table (data file) is a reserved word of SQL language (USER for example>), the query editor automatically adds "quotation" marks around the name to avoid syntax errors.
For example: from ‘USER'
Visual edit of expressions in the joins
The version 22 of the visual query editor allows you to visually define expressions in the joins.
This type of query could be typed in SQL code directly.
In version 22, everything becomes easier for these sophisticated queries.
Visual definition of parameters in 'group by'
The version 22 of query editor allows you to visually define parameters for the SQL ‘GROUP BY' command.
No need to type the SQL code to define these parameters.
Your SCM in the cloud in one click: SCM Drive
In version 22, installing your SCM in the cloud is child's play.
From the environment, all you have to do is click the "SCM Drive" choice, type your identifiers, specify the payment information and it's done!
2 Euros per month per developer (100 GB of storage per account), without any commitment, ...
  • Work at the office or at home
  • Automatic backup of projects
  • Sharing projects between developers
SCM in the cloud, but project sources wherever you want: on your computers and in the cloud
The sources of your projects are always found on your computers. The SCM allows you to store all versions of your projects in the cloud but you remain the guardian of your sources. The best of both worlds!
SCM: optimized for the cloud
The check-in and check-out speed as well as the operations to perform have been optimized for greater comfort when using the SCM remotely.
SCM: the diff is more confident, ...
In version 22, the Diff displays additional information.
For example, when a procedure was added, in addition to signaling it, the Diff displays the procedure code.
It is the same for the images, it displays them.
SCM: applying changes in 1 click (merge)
In a single click, the modifications made to a branch can be viewed and included in the trunk.
Example of carryover

The SCM automatically compares the source version (01A here) with the version to merge (01C) to apply these differences in version 02B.
It is no longer necessary to manually compare version 02B and version 01C to find the differences made in branch 01 in order to apply these differences.
SCM: very visible branches!
A graphic edit of branches is being introduced in version 22.
A color can be defined for each branch.
This visualization provides a synthetic vision of the project life.
A display mode allows you not to display the intermediate check-in operations for an even more synthetic vision of branches!
This new feature brings an incredible comfort of use.
Each check-in operation can become a branch (create branches later on)
You cant to create a branch from a check-in operation that was performed beforehand? It's easy, all you have to do is click the circle!
Prune the dead branches
Before version 22, removing a branch could be tedious.
In version 22, when a branch becomes useless, a right click is sufficient (as well as a confirmation) to delete this branch.
A branch can become the trunk
In some cases, a branch must become the trunk of development. The version 22 allows you to perform this operation in a single click.
Reminder about the branch color
You work on several branches at the same time, you open several editors in parallel. How to be sure to work with the proper branch?
The version 22 provides the solution: the name of the branch and its color are displayed in the same color.
Name and color of branch
Name and color of branch

The continuous integration allows you to automate the tasks that are tedious and costly in term of versionn creation: compilation, test, setup creation, file clean-up, deployment, ...
Ability to pause the robots
In version 22, you have the ability to pause the automations.
This allows the current action plan to end its execution to avoid the errors. And then, during the actual pause, be able to stop the automations: change of computer, update, etc.
You want my photograph? Of course!
The check-out of captions to translate now displays the possible image of the window that includes the caption.
Therefore, the translator can see the context where the text is found, via a screen shot of the window.
Image and textImage and text
Checking out several languages in a single operation
In version 22, WDMSG allows you to check out all the project languages (or a subset) in a single operation.
Selecting the project elements: new interface
The interface for selecting the project elements becomes even more user friendly.
The proposed tree structure is identical to the one of project explorer, with the elements in the same order.
A little more convenient.
All the manipulations are also optimized.
Automatic connection to Google, Facebook, Dropbox, Twitter, Instagram , ... (OAuth 2)
The new WLanguage AuthIdentify function allows you to connect and identify in a single code line to several applications that support the OAuth2 protocol:
  • Google
  • Facebook
  • Dropbox
  • Twitter
  • Instagram
  • Microsoft OneDrive
  • Office 365
  • Pinterest
  • Spotify
  • ...
Code sample:
MyAuthentication is OAuth2Parameters
// Information supplied by the service when saving the application
MyAuthentication..ClientID = "0123456789"
MyAuthentication..ClientSecret = "9876543210"
MyAuthentication..AuthURL = ""
MyAuthentication..TokenURL = ""
// Ask for authentication: opens the login window
MyToken is AuthToken = AuthIdentify(MyAuthentication)
Depending on the services proposed by each application, you have the ability to transmit elements to these applications.
For example: post a tweet automatically, retrieve a file from DropBox, send a photo to Instagram, ...
Include undo/redo in your applications
In version 22, you have the ability to manage the UNDO and REDO features in your applications.
The new WLanguage ActionDeclareUndo, ActionDo, ActionRedo and ActionUndo functions allows you to manage cascading UNDO and REDO.
Code sample:
// Declaration of Undo
ActionDeclareUndo(UndoOperation, Customer.CustomerID)
// Management of Undo
INTERNAL PROCEDURE UndoOperation(nCustomerID)
IF HReadSeekFirst(Csutomer, CustomerID, nCustomerID) THEN
See Managing actions with Undo/Redo for more details.
Tuple assignment = Array
In version 22, you have the ability to assign several variables from an array.
NumberOrders, NumberEstimates, NumberInvoices are int
// Retrieve values from the array
(NumberOrders, NumberEstimates, NumberInvoices)=arrDailyStats
"FOR EACH" on an array
In version 22, you have the ability to perform a FOR EACH on a static array.
Code sample:
ProductCode is string
// Browse the array of product codes
FOR EACH ProductCode OF ["RF354373","RF874257","RF143287"]
 // process
Porcedure parameter: static array
In version 22, you can directly handle an array of values passed in parameter to a procedure.
PROCEDURE ProcessProduct(ProductCodes)
// Access the 2nd code
IF ProductCodes[2] = 2487425 THEN
// Special case to manage
WLanguage functions: a dynamic array in parameter
The features that expect an array of values (HReadSeek and other functions such as: HFilter, ...) now allow a dynamic array. Therefore, this dynamic array can be filled before the call to the function.
It is always easier to prepare parameters ahead!
The ArraySeek and ArraySort functions accept the arrays of records
In version 22, the ArraySeek and ArraySort functions accept the arrays of records.
Strings: simplified string construction by programming
In the code of an application, we often have to build the content of a string. For example, "Hello Mister Moore".
In version 22, to insert the name ("Moore"), all you have to do is type the [%VariableName%] in the string.
There is no need to concatenate strings or to use StringBuild (for multilingual support).
Code sample:
// Ask for customer confirmation
IF YesNo(Yes, "Do you confirm the creation of customer [%sCustomerName%]") = No THEN
Simplified string split
The new StringSplit function allows you to split a string according to different separators and to retrieve all the sections in a single statement.
Splitting strings

Hashing strings
The ND5, SHA, TIGER and WHIRLPOOL hash formats were already supported in WLanguage.
In version 22, the Bernstein standard is also supported.
See the help about HashString and HashCheckString for more details.
Insert an image into the HTML code: Base 64, base 64 url and base 85 encoding
The new WLanguage Encode and Decode functions allow you to encode (and decode) strings, buffers, images (and anything else!) in several formats.
For example, you have the ability to transform a jpeg image into a "text" string that can be included in HTML code! In this example, there is no external file for the image!
This method also allows you to pass binary parameters to a URL.
And it can be used in several other ways ...
The lion is not an image but a source code!
The lion is not an image but a source code!

Associative arrays : access to properties
The version 22 of WLanguage allows you to directly access (without local variable) the properties of stored elements (objects, structures, controls, ...) of an associative array.
JSON natively supports the associative arrays
In version 22, the management of associative arrays when serializing and/or deserializing strings in JSON format in WLanguage classes is supported.
This allows you not to have to process the case of associative arrays.
Signature of existing PDFs
The new WLanguage PDFSign function allows you to sign an existing PDF document, created with WINDEV or with an external software.
The signature is an "approbation" signature (each reader approves).
You have the ability to insert a text and an image corresponding to the certificate.
GPS functions
The WLanguage GPS functions are now available in WINDEV 22.
Repositionable notes: family of WLanguage functions
In version 22, the new family of WLanguage Note functions allows you to run by programming actions similar to the ones that can be run by the end user: create a note, save it, position it, ...
Data source : automatic naming
A "data source" variable is identified by its name.
In case of class members, WLanguage generates a different internal name to avoid conflicts.
OOP : new syntax for calling the constructor of the base class and members
To simplify the reading of code (and to no longer confuse it with a constructor declaration), the call syntax evolves in version 22:
can be used instead of the historical syntax
base constructor(p1, p2)
The existing code is still recognized.
OOP : call to another syntax of a constructor
A constructor can have several syntaxes.
For example, a constructor can have a syntax without parameter and a syntax with parameters.
In version 22, you have the ability to call the syntax of a constructor from another syntax.
OOP : singleton
A singleton is a class instantiated once and globally.
The declaration of a singleton in the declaration code of a class becomes easier.
WLanguage: various new features
  • In version 22, you have the ability to retrieve the options found in the popup menu of control AAF via the new AafPopupMenuToString function.
  • The homonymic copy on structures is available.
  • The conditional compilation is available to distinguish between the ANSI mode and the UNICODE mode.
  • The new DeleteAllHourglass constant allows you to delete all the activated hourglasses in a single command!
The expert opinion
Replaying the automatic tests before each deployment is used to make sure that no edge effect occurs. It is a reflex that improves the quality of your software and that saves a lot of maintenance time!
A brand new editor, shinny new
In version 22, the editor of automatic tests is revamped!
The interface changes for more simplicity and more power.
Your teams will no longer have excuses for not creating automatic tests!
The tests are created visually by recording the operations performed.
The test tool is integrated and the language used (if necessary) to edit the tests is WLanguage ... that your teams already know.
See Manager of automatic tests for more details.
Test editor: simplified interface
In version 22, the interface of automatic test editor is revamped!
The interface becomes more user friendly and more powerful: for example, the tree structure is used to group the tests.
See Manager of automatic tests for more details.
Test whatever you want!
In version 22, you have the ability to create a test on anything! There is no need to associate a test with an object.
Test editor: simplified interface
See Manager of automatic tests for more details.
An error occurred in a test? It is displayed with the compilation errors. Thanks
Your teams remain in a well-known operating mode.
Everything is integrated.
See "Results of tests" pane for more details.
History of results
The history for running tests is stored in version 22.
You can see all the status reports and find all the errors that could have occurred during the previous executions.
See "Results of tests" pane for more details.
Automatic screen shot in case of test failure
A screen shot is systematically saved when an error occurs during a test.
This screen shot shows the progress of the test when triggering the error as well as the interface content.
The screen shot is stored in the history of tests (see previous new feature).
Screen shot during a test error
See "Results of tests" pane for more details.
What is code coverage?
The ode coverage is the measure regarding the coverage of tests run on an application.
Each code line run is considered as being "tested". (Which does not mean that the test is successful, it only means that the line was run).
These tests are both "manual" tests (execution of code lines during a GO for example) and automatic tests.
The code coverage is used to detect the code lines of an application that have never been run.
These code lines are found in all objects:
  • window
  • control
  • procedure
  • method
  • "section of code"
  • ...
The code coverage gives a good idea of test level regarding the application code.
Visualization of code coverage
The coverage rate is displayed in several places:
  • project dashboard
  • project explorer, for each element.
  • in the code editor directly: a color indicates the lines run.
The lines on a blue background have been run (they are considered as being checked)
The lines on a blue background have been run (they are considered as being checked)
The code coverage is aggregated between all team members via the database of Control Centers.
The statistics are also stored for each member of the team.
Consume and/or create Webservices
A WINDEV application allows you to consume SOAP Webservices and REST Webservices.
It also allows you to easily create Webservices.
The SOAP Webservices are created with WINDEV or WEBDEV.
The REST Webservices are created with WINDEV and WEBDEV (see new feature 898).
Moving procedures and methods
Before, the procedures and methods were displayed in their creation order, which could be annoying for the logical organization of code.
In version 22, you finally have the ability to move a procedure!
See Code editor: Various operations for more details.
Creating procedures with the keyboard
With the former versions, to create a procedure, you had to position with the mouse on the "proper" line in the project explorer. This could be tedious on huge projects.
In version 22, all you have to do is position at the end of a procedure and type the prototype of the procedure to create.
The new procedure is automatically created after the current procedure.
See Code editor: Various operations for more details.
Last code line? Type in full page!
Small innovation that will simplify code input at the bottom of the page: When typing code on the last line of the screen, at the bottom, the line can move up to the top of the screen (Down Arrow key).
This creates an empty input area below the line, which is more pleasant.
This is useful when adding a procedure to a set or method to a class for example.
Customize the editor
Customizing the code editor is simplified in vesion 22.
The customization parameters are saved in a file (.sco), allowing you to transmit these parameters to another computer.
Fixed font, proportional font and change of keyword colors
Fixed font, proportional font and change of keyword colors

See Coloring the WLanguage code for more details.
Code editor on black background
Regardless of the theme chosen for the environment, you have the ability to display the code on a black background.
Code editor in black
Code editor in black

See Coloring the WLanguage code for more details.
F2 (method definition): improvements
Call to method: which inheritance class to select?
In version 22, the new window for class selection is more user friendly.
Automatic code selection by block level
The code editor in version 22 allows you to automatically select blocks of code.
The Ctrl+Alt+Up Arrow combination selects the block above the cursor, as many times as necessary.
The Ctrl+Alt+Down Arrow combination deselects the block in the same way.
It becomes much easier to move a block of code (IF .. THEN .. ELSE for example)
Selecting a block of code

See Code editor: Various operations for more details.
Expand and collapse the code
In version 22, you now have the ability to collapse and expand the processes of your choice.
Collapse or expand processes

The color : 1 click or RGB 255 0 0 = red?
In the code editor, typing an RGB code displays a square with the selected color.
This allows you to correct typing errors.
A click on the colored square is used to open a color picker to change color in the code.
The square displays the color
The square displays the color

See the help about RGB for more details.
Visual scrollbar
The visual scrollbar now signals the compilation errors and the search results.
The lines containing a compilation error are highlighted in red.
The lines containing a sought element are highlighted in orange.
The red line identifies a compilation error
The red line identifies a compilation error

See Visual code scrollbar for more details.
Typing regular expressions is more easy
In version 22, you now have the ability to save your own regular expressions in the wizard in order to re-use them later.
A visual preview of the regular expression is displayed.
Store your graphic definitions of regular expressions
Store your graphic definitions of regular expressions

Automatic synchronization of explorer
In version 22, you have the ability to ask the project explorer to follow the code.
When running code in "step-by-step" mode, automatic display of dynamic audit warnings
To improve the quality of product code, the debugger in version 22 automatically displays the "Warnings" of the dynamic audit.
This signals the potential code risks.
Then, the developer chooses to process them or to ignore them.
The invisible errors become visible
The invisible errors become visible
Display of formatted JSON
When debugging a variable containing JSON, the debugger displays the JSON content with an indent.
Display of formatted XML
When debugging a variable containing XML, the debugger displays the XML content with a logical indent.
Breakpoint in a template? Stop in all the derivatived templates
In version 22, when a breakpoint is positioned in the code of a template (window or control), the debugger will stop in all the windows or controls that derive from this template.
Backup with formatting
In version 22, you have the ability to create an XML file with a presentation:
  • indent,
  • carriage return.
The "human" reading is greatly simplified!
Custom static audit
In version 22, you have the ability to to select the elements on which an audit will be run.
This is useful on huge projects in order to reduce the execution times of audit as well as the generated tips.
This is also useful when part of the application is not finalized, in order not to audit this part.
Old analyses
The static audit now identifies the analyses created with an earlier version whose internal formats are not optimized.
The audit proposes to switch the "Analyses" to current format, which significantly improves the performance in the SCM.
Dynamic audit: the processes not allowed in the threads are signaled
The dynamic audit signals the forbidden accesses to GUI from the threads.
Reminder: for synchronization reasons, a thread should not access the interface of windows. You have to go back to the main thread (with the WLanguage ExecuteMainThread function) to access the GUI.
An "application trigger" : notification of file modification
The version 22 of HFSQL allows you to call a client procedure when one of these 2 events occurs on a server:
  • modification of a data file,
  • modification of a record in the data file (table row).
This feature allows you to trigger a process (a check, an alert message, ...) whenever modifying data, including between applications.
Query : force the search key
The search keys of a query are defined and optimized by HFSQL.
In some special cases, you may want to use a specific search key.
The version 22 of HFSQL allows you to define these keys.
Caution: in this mode, the speed of queries is not automatically optimized. Therefore, this mode should only be used in special cases!
Automatic update (or not) of HFSQL server
The HFSQL server evolves regularly: when changing major version (such as the new version 22) or when releasing intermediate versions (update 1, update 2, ...).
In version 22, you have the automate the update of HFSQL servers:
  • check at regular intervals whether an update is available and install it
  • update automatically when the version number changes (21 to 22 for example).
  • ...
Custom update of a group of HFSQL servers
When managing a group of HFSQL servers, once a specific version is validated, you usually want to update all the servers in exploitation.
The version 22 allows you to perform this operation automatically.
Each server checks according to the defined frequency whether or not it must be updated according to the infrastructure manager.
If the server version installed differs from the available server version, the server is updated.
"Auto modif" (SDD) : find out what will happen in the auto modif before running it
The feature used to automatically maintain the database structure ("Auto Modif") displays more information in version 22!
Before running, the "Auto Modif" displays an information window indicating the modifications of structure that will be made.
If several successive updates must be applied (updating an earlier version), the window signals it.
Auto modif: Modifications of structures

Duplication of database: easy in 22
In version 22, a HFSQL database can be duplicated by the new WLanguage HDuplicateDatabase function.
The rights of users are also duplicated.
Speed of queried : detection of necessary keys on databases in exploitation
The version 22 of HFSQL knows how to optimize the speed of queries according to their actual use.
For the queries run on a regular basis or consuming a lot of resources, the HFSQL engine version 22 performs optimization processes in background task.
The HFSQL engine defines the keys and composite keys that will be added to optimize the performances of queries.
The keys to add are signaled to the DBA, to the project manager and to any relevant person.
The key addition must be validated before it is performed. HFSQL does not force any addition.
The gain of performances can be outstanding.
Indeed, the performances depend on the actual content of databases (and indexes) of the operating site.
Note: This feature is available in 64-bit mode, which is the most common mode.
The suggestions are directly sent to you by email
The suggestions are directly sent to you by email

Improved speed of queries : the expert opinion
Before considering the optimizations, wait until the databases are sufficiently powered.
These optimizations must not be run on test databases or on databases currently filled.
Indeed, the data found in the database influences the performance optimizations.
Therefore, you must use databases "at cruising speed" with real data in sufficient quantity.
If you are editing a software package, note that the optimizations (the additional keys to define) may change from an operating site to another one.
Improved speed of queries: implementation
When implementing the optimization process, don't forget to specify the personal details of the persons who will receive the optimization reports.
We advise you to specify the following recipients:
  • the project manager
  • the DBA
  • a customer representative.
Easy setup in Linux : DOCKER
In the Linux world, Docker is an application packaging system.
A 'Docker image' contains all the files required to run an application: a HFSQL server, a Web server, a big data database or a standard application.
An image of the HFSQL Client/Server server is available in the "docker hub" (the official site that references the images).
To create the image, a script (a docker file) is defined. This script is also supplied.
For example, this Docker container is used to deploy the HFSQL server in Amazon EC2, Microsoft Azure and on any Linux server.
Easy setup in Linux : apt-get
Another method to install applications in Linux is the ability to use the script command (Shell) apt-get.
In version 22, the HFSQL server can be automatically installed by using this command.
New supported functions
In version 22, the HFSQL Cluster supports the new functions: hLoadParameter, hSaveParameter, hDeleteParameter.
These functions are used to manage the custom parameters such as the configuration of triggers or stored procedures: recipient email, statistics to calculate, ...
New functions in SQL
The version 22 of HFSQL supports 5 new SQL commands:
GROUP BY : accepted parameter
The SQL GROUP BY command now accepts parameters.
This is useful when an expression containing a parameter is used in SELECT.
ORDER BY of items that are not found in select
You have the ability to sort an SQL query via an item that is not found in Select (item that will not be displayed).
Support for WLanguage constants in the SQL queries
The SQL queries can contain WLanguage functions.
In version 22, the WLanguage constants are also supported in the queries.
New : Dashboard
The new dashboard of HFSQL server gives an overall view of the server content.
The dashboard also allows you to act on the server parameters.
What is currently run on the server?
In version 22, the dashboard of HFSQL server displays the processes that are currently run on the server: backups, scheduled tasks, ...
This information is useful for analyzing the server load at a given time.
Improved CC ergonomics
The HFSQL Control Center is getting better with age!
In addition to the features available in version 22, the CC becomes easier to use:
  • Multi-selection
  • ...
Immediate display of "server logs"
The logs of HFSQL server contain the list of commands run by the server: queries, backups, scheduled tasks, browses, ...
In version 22, the consultation of these logs is immediate!
Retrieving a backup remotely
In version 22, you have the ability to retrieve the backup of a HFSQL server remotely.
From the HFSQL dashboard, you also have the abiilty to:
  • Encrypt a database without starting the Auto Modif
  • Enable and disable the integrity rules
  • Duplicate a database and its rights.
MongoDB is a document-oriented NoSQL database.
MongoDB stores documents in JSON format in "collections". A collection is a set of documents.
MongoDB proposes advanced methods for finding these documents.
MongoDB proposes "map reduce".
See MongoDB/GRIDFS databases for more details.
MongoDB : native connector
A new family of functions and advanced WLanguage types allows you to manage the mongoDB databases.
Connection, list of connections, information about connections, search, sort, addition, etc.
The programming is child's play in WLanguage.
See MongoDB/GRIDFS databases for more details.
MongoDB : list of functions
The new family of Mongo functions allows you to manage the MongoDB databases natively in WLanguage.
See MongoDB/GRIDFS databases for more details.
MongoDB : list of types
The new family of Mongo types allows you to enhance the programming of MongoDB databases natively in WLanguage.
See MongoDB/GRIDFS databases for more details.
MongoDB : GridFS
GridFS is a distributed file system managed by MongoDB.
The new MongoGridFS functions allow you to read, write and delete files in GridFS.
See MongoDB/GRIDFS databases for more details.
Native connector (native access) to SQL Server
In addition to the historically supported versions, the native connector to SQL Server also operates with the latest "SQL Server Native Client 11.0 and 13" client layers (from SQL Server 2014 and 2016).
Minimum required version
  • Version 22
This page is also available for…
Click [Add] to post a comment