Home | Sign in | English EN
New WINDEV, WEBDEV and WINDEV Mobile 26 feature!
This content has been translated automatically. Click here to view the French version.
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WindowsLinuxPHPWEBDEV - Browser code
AndroidAndroid Widget iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Stored procedures
HTML: a universal need
The new features of the new HTML control in version 26 bring you infinite power and functionalities.
The new control is based on Chromium and uses the latest HTML technologies..
Your applications will display web pages (Part 1), your applications will generate HTML pages, your users will create or modify their HTML pages (Part 2), your applications will offer standard email management functionalities (Part 3), you will easily program powerful processes for analyzing the contents of web pages (Part 4).
Whether it's on Windows, Internet, Android or iOS, you're going to make the most of HTML.
Control native HTML display: a perfect rendering
The HTML Display control is used to display a web page.
For example, in 1 line of code, without using an external browser, your WINDEV applications can display a page of a website: help, news, technical documentation...
The HTML Display control in version 26 perfectly displays all HTML documents, created with WINDEV, WEBDEV or WINDEV Mobile or any other editor.
The latest tags are supported.
CSS style sheets are supported.
The Javascript code that may be present in the HTML content is interpreted, if you allow it.
The control displays either HTML content (a file) or remote content from a URL.
Control HTML display: Chromium technology
The control from earlier versions was based on Internet Explorer ActiveX.
The HTML display field of version 26 uses Chromium technology and does not use any external Resource to operate.: no ActiveX, no dependency on the Windows version or the browser installed on the user's machine.
A web browser in your applications
Version 26 includes the source code of a browser.
You can use, modify and customize this code to include it in your applications.
Using this type of browser will ensure that your pages will be displayed in the same way for all your users..
This browser also allows you to define a list of the sites that can be opened, which can be useful in a professional environment.
HTML display field: automatic web form filling by programming
The manipulation of the HTML "control" by programming should not be confused with the manipulation of HTML "code" by programming (Part 4).
An application may need to interact with the content of the page:
  • Trigger the click on a button by programming to automatically display the next page
  • Fill out a form by programming
  • ...
The HTML Display control in version 26 comes with new WLanguage functions:
  • Fill out an edit control
  • Fill out a form control
  • Click a button
  • Get the value of a field in a form
  • Identify a control
  • Click a radio button or check box
  • Click an option in a check box
  • ...
Control HTML display: an HTML button can execute WLanguage code
An HTML Display control can trigger the execution of WLanguage code (from a button, etc.). This WLanguage code is present in the window that contains the HTML control.
In the Javascript code of the HTML button, you just have to call the Javascript function WLExecute , passing the Procedure WLanguage and its parameters.
Interesting novelty: the WLanguage function called from the Javascript code can take several parameters.
And if necessary, you can call JavaScript code contained in the page from the WLanguage code.
New events
New programming events are introduced to manage and customize the HTML Display control.
They are added to existing events.
  • Loading Resource
    This event is used to filter the loading of an element in the page before being downloaded.
    For example: prevent loading resources that are on another domain or on unauthorized or blacklisted domains; prevent loading tracking images, etc.
  • Page change
    This event makes it possible to be notified before requesting a new page, or to memorize the sequence of pages viewed.
  • Right click on a link
    It allows displaying a popup menu, for example.
    It can also be used to prevent changing to another page.
  • Handling of control HTML content
    The HTML control can be linked to an HFSQL data file (or other): it can be "binned". The binding can be created on the whole page or on a part of the page.
    This can be useful for managing product forms, for example.
Control HTML display: Various
  • 3 new properties appear: URL, Document, MenuContext.
  • JavaScript code is executed in a secure environment ("sandbox").
  • Advanced management of 4K display.
  • The outline of the control can be configured.
Control of HTML editing: functional richness
The HTML Edit control in version 26 uses the latest HTML standards.
All HTML functionalities are recognized and can be used.
CSS code included in the HTML content is managed natively.
Control HTML editing: features
The edit control has an integrated ribbon.
You have nothing to program in your application.
This ribbon is customizable in features (you can add buttons and panes) and look..
Default options include:
  • font, size, color
  • bold, italic, underline, strikethrough...
  • import CSS styles
  • image management: moving, resizing, resizing, rotating...
  • edit links
  • undo/redo
  • copy/paste raw text, RTF, Docx, HTML
  • paste without formatting
  • save
  • print
  • export to PDF
  • emojis
  • alignment
  • indent
  • arrays
  • spelling checker
  • find/replace
  • ...
HTML edit field: switch from WYSIWYG mode to tag mode (code HEX@)
The HTML control allows you to write HTML code in WYSIWYG mode.
For advanced users (or for copy/paste masters), it is possible to switch to source mode at any time, to view HTML tags.
This makes it possible, for example, to declare a CSS sheet, insert a particular tag, paste a code snippet...
In the source mode, it is also possible to write (or paste) JavaScript code.
The HTML code is stored in UTF-8 format and is viewed in WYSIWYG..

Control HTML editing: new Wlanguage functions
The HTML Edit control is usually embedded in a window that provides automatic functionalities on the HTML content being entered, often via buttons: insert text defined by programming, insert a quote, format and insert data from the current window, insert a signature, insert a logo, position the cursor, preselect text.
Several WLanguage functions have been introduced for this purpose in version 26:
  • HTMLEditorFormatSelection: Applies formatting to the selected text: bold, italic, underlined, size, font, CSS style...
  • HTMLEditorInsert: Inserts text or HTML code at the cursor position. If a text is selected, it is replaced.
  • HTMLEditorInsertTable: Inserts an empty table at the cursor position. The number of rows and the number of columns must be specified in parameters. The end user can edit this table using the mouse.
  • HTMLEditorSelect: Positions the cursor.
Control HTML editing: new events
New events are introduced to finely manage this HTML Edit control.
  • Selection
    This new event is called each time the user selects an element in the HTML document.
    The new type WLanguage htmlSelection allows you to obtain information on the selected elements.: selected word...
  • After Loading the page
    This new event is called once the page has been fully loaded. This is useful, for example, to start an automatic page analysis.
  • Loading Resource
    This new event is called each time the page downloads an element: image, file... It allows you to check and prevent a download if necessary.
  • At each Modification
    This new event is called each time the user makes a modification in the page: input,...
HTML Email Edit control
Version 26 features a new, email-specific HTML Edit control.
This control allows your applications to include WYSIWYG rich text input using the HTML standard, which can then be recognized and displayed by all email providers.
The created HTML document can be stored in memory or on disk.
The secrets of email text
It is important to know that emails cannot contain all standard HTML or CSS elements..
Each email provider (Gmail, Yahoo, Outlook, Thunderbird, Courier, etc.) has its own limitations.
To be interpreted correctly, an email can only contain a subset of the HTML and CSS functionalities.
For example, Gmail does not support SVG and HDR images or <video> tags, Outlook does not support "Submit" buttons or HTML 5 Doctype, Yahoo does not support anchors, etc..
The HTML Email control in version 26 only allows the use of the functionalities supported by all email providers: the emails created with your applications will be displayed correctly!
Email control: the images
Images in the HTML Email control are included as attachments (images encoded in base 64 are not supported by email providers).
Easier email management
A comprehensive email management example, based on the HTML Email control and including the WLanguage source code, is provided in version 26.
For example, when replying to an email, the original message is automatically copied and indented below the reply text.
Signatures can also be inserted automatically.
Your applications will get a big boost, effortlessly!
Native programming
WLanguage allows you to handle, read and enrich an HTML document by programming, without a UI.
Two native types, 2 new functions and 285 new syntaxes (see page 50) allow you to handle HTML source code, to build a document from scratch, to modify an existing document, to add tags, to search and modify content, to add images and tables,...
You can access each node in the HTML tree natively.
You can also create or modify JavaScript code in the HTML document..
Local CSS styles can also be handled by programming in version 26.
2 native types for handle html documents
Version 26 offers advanced possibilities to handle HTML: 2 WLanguage types appear.
These native types allow you to perform all operations on an existing HTML document or one created from scratch.
The native type htmlDocument is used for handle all Document HTML.
The native type htmlNode serves handle as a node of the HTML tree.: a table, an Input field, a Meta tag...
The htmlNode type offers many properties for handle each beacon:
  • tag name
  • attribute
  • child element
  • sibling element
  • parent element
  • rank
  • ...
Example of access to a node of the HTML tree:
Document is an htmlDocument
Document.body:color = "blue"
Search for elements in the HTML document
2 new WLanguage functions allow to search for elements in the whole Document HTML: HTMLFindElementById and HTMLFindElementByName .
These functions return an Variable of htmlNode type, which allows to perform all the required processing..
Code samples
HTML programming in WLanguage is very powerful in version 26.
Here are some examples of code used to read HTML:
  • Get a company's turnover on a website
    // Get the company's turnover
    // from the HTML file used to display data in table
    DocHTML is an htmlDocument
    DocHTML = HTMLOpen("https://site.fr/page.html", fromURL)
    FOR Year = 2010 TO 2020
        element is an htmlElement = DocHTML.ChercheParID("CA_" + Year)
        TableAddLine(TABLE_CA, Year, element.value)
  • Analyze an HTML page to retrieve an invoice
    // Get the invoice URL from the HTML file
    // to download the invoice
    DocHTML is an htmlDocument = HTMLOuvre("MyFile.html", fromFile)
    element is an htmlDocument = DocHTML.ChercheParID("Facture_092020")
    URLInvoice is a string = element.attributes["href"]
    HTTPRequest( URLInvoice)
  • Browse through an HTML table
    // Browse through table rows with ID czZ4 in the HTML document
    DocHTML is an htmlDocument = HTMLOuvre("MyFile.html", fromFile)
    table is an htmlElement = DocHTML.ChercheParID("czZ4")
    FOR ALL ROW FROM table.tbody
  • Retrieving the favorite (FAV Icon) from an HTML page
    // Get the URL of the page logo
    IMG_logo = DocHTML.head.querySelector(&apos;link[rel*="icon"]&apos;).href
Here is an example of an HTML code generation program, which, based on a template, builds an HTML page to write reviews on a selection of products from a database:
// Create survey
// For new products, ask the opinion of the customers
// "Base of survey" html document
DocHTML is an htmlDocument = HTMLOuvre(SurveyModel, fromString)
// Set position on <table>
LaTable is an htmlElement <- DocHTML.ChercheParID("LaTable")
// Get "template" row (which will be deleted)
TemplateLine is an htmlElement = LaTable.TR
delete ALL(LaTable)
// For each new product
    // Create a survey row
    // with a caption: "NOMPRODUCT is a new product."
    // and an edit control already present in the template row
    ALine is an htmlElement = TemplateLine
    À.TD.label.line..Text = "Your opinion on" + Product.FreeProduct
// Add row to the HTML document
Adds(LaTable, OneLine)
// Saving the page
HTMLSave(DocHTML, "poll.html", HTMLDocumentDefault)
Map: embedding images in a map
In version 26, it becomes possible to integrate drawings and photos in a map.: a good example would be overlaying the area of a company building, using the company logo.
The image is embedded in the map, which means that when the map is zoomed in, the image also zooms in. The image size must be specified in meters.
Map: integrate geometric shapes in a map
In version 26, it also becomes possible to draw and integrate geometric shapes in a map.:
  • line
  • square
  • round
  • polygon
  • polyline (broken line)
  • ...
The shape is embedded in the map, which means that when the map is resized, the shape is resized as well.
Map: display road traffic on a map
Real-time road traffic can be displayed on a map.
On a Google map, the data comes from Google Maps.

Map: display a geographical area
By default, a map can display a given geographic area in full screen mode.
You can force the map to display only this area: the user will be able to zoom in, but will not be able to zoom out..
The area to be displayed can be specified using either its geographical coordinates or its name (city, region, country, etc.).
MapDisplayArea positions the Control map on a given geographical area (corner coordinates).
MapLimitArea limits zoom and move actions so that the defined area is always Visible.
geoGetArea accepts a street, a city, an Country and retrieves the coordinates of the zone.
Map: display a popup
The Marker s benefit from numerous additional options in version 26, including the possibility of displaying a Popup when clicking on the Marker or by programming..
This Popup can be fully customized using an Internal Window or an Internal Page.
3 new WLanguage functions are now available: MapDisplayPopup , MapClosePopup and MapPopupDisplayed .

Card: prohibit gestures on mobile phones
On mobile devices, there are 4 possible gestures on maps:
  • Pinch zoom
  • Scroll
  • Rotation
  • Tilt
In version 26, it becomes possible to prohibit some of these gestures on a card..
Card: style: dark theme
In version 26, a map can be displayed using a dark theme.
Other map themes (grey, etc.) are also available.
Map: 3D view, choice of angle...
On a map, it is possible to change by programming the position of the camera, i.e. the viewing angle of the map (0° to 45°) thanks to the Property Tilt.
It is also possible to rotate.

Map: marker cluster, automatic grouping
In version 26, the concept of "automatic cluster" appears in the charts..
Marker clusters improve the readability of a map when there are many markers in a small area. The cluster automatically groups the markers, preventing them from becoming cluttered and unreadable.
By default, a cluster is represented by a circle.
The color of this circle varies according to the number of markers it contains.
The number of markers is automatically shown in the circle.
Everything can be customized.
For a marker to be grouped in a cluster, simply assign the Property .Cluster to it. .
A new WLanguage type allows you to customize the characteristics of clusters: the type MarkerImage .
Cards: different
In version 26, the Map control benefits from other new features:
  • Ability to display a compass
  • New properties for markers Opacity , Moveable , ActionDisplacement , Altitude , Note ...
  • The MarkerImage type allows you to customize the image of the Marker.
Smart controls
Version 26 features 10 new Smart controls:
  • Help for password creation,
  • "Bank-type" PIN code input,
  • 3-dot context menu button,
  • Google reCaptcha,
  • Video control with playback buttons,
  • Phone unlock pattern,
  • Combo box with check box,
  • Token in filter mode,
  • Date and time input with the mouse,
  • Snackbar.
Control PDF Reader: page extraction
The PDF Reader control allows you to create a new PDF document that contains a set of pages (range or different pages) of a specified PDF document.
Control PDF Reader: add page
The PDF Reader control allows you to insert one or more pages at a specified location in an existing PDF document.
Control PDF reader: page deletion
The PDF Reader control allows you to delete one or more pages from an existing PDF document.
Control PDF reader: area overflown
In the Document PDF, what is the end user flying over with the mouse? The usual MouseXPos and MouseYPos functions allow to recover the mouse position.
The WLanguage PDFReaderInfoXY function returns the page number and the mouse coordinates in the page (in millimeters)..
For example, this allows you to display context information about the PDF document.
Control TT: continuous display
The Word Processing control now offers continuous text display, without page breaks. This allows for smoother reading.
WP control : miscellaneous
  • Spanish dictionary included
  • Default file save name: start of text or defined by programming
  • New function DocInfoXY.
Spreadsheet field: HEX@ multi-page spread sheet
In an XLSX file with multiple worksheets, the last worksheet used is remembered, and will be displayed next time the file is opened.
The end user can also rearrange worksheets.
Control Spreadsheet: miscellaneous
  • It is now possible to merge cells by programming.
An OCR (Optical Character Recognition) system analyzes an image to extract the text it contains.
Version 26 allows you to include native OCR functionalities in your applications and sites.
The OCR engine is a neural network, the OCR decrypts images containing text.
Take a picture of a contract with your Phone and retrieve the text in your app or in Word!
OCR is also very useful for a DMS, in order to index the contents.
A new WLanguage family: OCR
The method for retrieving a text is simple: simply pass an image (any format) or a PDF document to the OCRExtractText function.
The function OCRExtractText returns all the texts contained in Image.
All content other than text is ignored.
To analyze only a part of an image, simply specify the coordinates of the part to be analyzed.
For example:
MyRectangle is Rectangle
OCRExtractText(MyImage, MyRectangle)

OCRExtractTextBlock analyzes an image and returns a set of rectangles each containing a block of text.
OCR: language management
By default, all languages are supported.
The OCR system recognizes the following charsets:
  • latin
  • cyrillic
  • chinese
  • japanese
  • arabic
  • hebrew
  • ...
Additionally, the OCR system analyzes the resulting texts in real time and uses a language-specific model.
This model improves recognition.
The default optimized languages are English, French and Spanish.
To optimize other languages, simply integrate the training model of the corresponding neural network (available on the Internet).
Multiple languages can be supported simultaneously.
This optimization can be disabled.
New from Control Graph: vertical labels
A new option allows you to change the orientation of bar values.

New Plot: interval area
A new type of chart is introduced in version 26: the Range Area chart.
This type of graph is used to visualize a variation between a high and a low value.
The abscissa axis generally represents the time and the graph shows the evolution of the high and low values..

New control Dotted line grid graph
Graphs can now be dotted with a grid pattern: these are a lighter version of standard gridlines!

Leaving a mandatory control without filling it in
WINDEV, WEBDEV and WINDEV Mobile have always included required input fields.
If the required input field was empty, the user was unable to move to the next field.
In version 26, it is possible to exit a required input field and fill it in later: the required fields will only be verified when the window or page is validated.
A new option has been introduced in the controls 7-tab window: "Required input: Non blocking".

control with non-blocking mandatory entry: how it works
A new WLanguage function has been introduced: ValidateInput .
The function ValidateData must simply be called in the code of the validation button in the.
This function returns True or False .
Mandatory fields that are not filled in are marked with a specific style.
Highlight required input fields automatically
More specific options have been introduced to highlight required input fields. The style of a control determines how the required input will be indicated: asterisk, red border, icon...
An additional indication can be used to identify fields that have been left empty, after trying to validate the window or page.

Control mandatory entry: new, on combo, selector, switch
In version 26, in addition to Edit controls, you can set the following controls as "required fields":
  • Combo Box, Combo Box with entry
  • Selector
  • Check Box.
The styles of these controls include all the necessary graphic elements.
Invalid input mask
The verification of edit controls with an input mask also evolves.
The control style now includes the necessary elements to highlight an invalid input: Icon, wording, Border...
The input can be verified immediately, or upon window validation.
Don't duplicate your projects unnecessarily: a unique environment
As you know, it is possible to use WINDEV, WEBDEV and WINDEV Mobile in the same environment.
Project elements are immediately shared between all 3 platforms: analyses, queries, reports, procedures, classes, code,... Windows, pages and pop-up windows are in the same project.
These elements open directly in the WINDEV environment .
This allows for easy maintenance and portability of a WINDEV application to mobile and Web, without having to import or duplicate elements of the project.
Reminder: you need a license of the corresponding software products.
Syntax highlighting outside a configuration
In version 26, all open code offers syntax highlighting, even code that is not included in a configuration.
32-bit and 64-bit operation
The integration of WINDEV Mobile and WEBDEV in WINDEV worked in 64-bit mode.
In version 26, operation is also available in 32-bit mode..
This makes it possible to use an external resources (ActiveX, DLL, Native Connector, etc.) that work only in 32-bit.
Your existing WINDEV becomes a website or SaaS application
A widespread need is to transform a Windows application (or parts of applications) into a dynamic website or SaaS application.
WINDEV and WEBDEV perfectly meet this need.
In version 26, the SaaS manager has been modernized.
Style sheet naming 
In version 26, you can freely create and name your style sheets.

Multiple style sheets per project
In version 26, a project can use multiple style sheets simultaneously.
When selecting the style, it is possible to filter the style sheet(s) to be displayed by default.
Easily share style sheets 
Thanks to these new features, it becomes much easier to manage and reuse your styles without constraints.
A style sheet can be simply copied to the project directory like any other element..
Everyone will love these simplified operations!
Class generation from evaluation (mapping relational object)
It is now possible to generate a data file (table) class directly from the data model editor.
No need to go back to the project explorer.
Generate structures
It was already possible to generate a class from a data file (table) description .
In version 26, it is now possible to generate a structure instead of a class.
A more efficient environment: several simultaneous spaces
2 code windows opened side by side etc?
1 window and its code side by side? Change the selected Control, F2 and the code changes in the window next to it.
A WINDEV window and the equivalent WEBDEV page?
In version 26, these modes are automatic.
You no longer need to manually move and resize windows: That changes everything!
Each window has its own document bar.
It is possible to have more than 2 zones open simultaneously and a splitter allows to adapt the size of each window..
The workspace is now automatically reorganized.
The workspace can be divided into several horizontal or vertical windows.
In each window, you can open as many documents as you want, from any editor.
An Document can move from one zone to another by Drag&Drop.
The same document can be opened multiple times in different windows, to view simultaneously:
  • the different layers of a window or page
  • the different resolution slices of responsive pages
  • the different layouts: portrait, landscape, iOS, Android , tablet, smartphone, etc.
  • a WINDEV window and the equivalent WEBDEV page.
Scrolling the document bar with the scroll wheel
In version 26, you can navigate through the document bar using the mouse wheel: it's a very practical feature.
3X faster compile time
Buckle up... In most cases, your projects will compile 3 times faster!
This makes work significantly easier.
Boosted opening speed of the 7 tabs
We all spend a lot of time in the 7-tab windows!
These windows will now open faster to improve development workflow!
Navigating the elements: Faster CTRL+Tab!
The CTRL+TAB key combination allows you to quickly switch between open elements.
In version 26, the latency of this operation disappears.:
53 minutes saved per year!
Less operations: detach tabs from the ribbon
In version 26, you can detach a tab from the ribbon to make it permanently accessible.
This avoids switching between tabs.
For example, when working on UI, the alignment tab can be left permanently open.
You can detach multiple tabs.
Updated project explorer
In version 26, the project explorer has been made lighter and more user-friendly.
Elements of different types are clearly separated.
Right/left? Project Explorer left
It seems the mouse cursor is most often positioned on the left side of the screen.
To limit mouse movements, the explorer is now positioned by Default on the left side of the screen. And if you prefer, you can send it back to the right in 1 single operation!
Binding link editor (window, page, report)
A link editor is introduced in version 26.
This editor lists all the controls in the window, page or report, and indicates whether each control has a link, as well as which source it is linked to.
The editor also allows you to modify the link of a control or a group of controls: replace a data file with a request, for example.
You can launch a search for all the uses of a control in the code of the window/page/report.
Search on selected controls
As you know, WINDEV offers a powerful search feature in its environment. You can search for elements in the code, in 7-tab windows, in multilingual messages...
In version 26, it is possible to narrow the search down to a set of controls selected with the mouse.
The copy/paste of control s linked by programming renames the references to the control copied in the code.
Let's take the example of an Edit control followed by a "Browse" button. The code of the "Browse" button opens a file selector and assigns the file selected by the user to the Edit control. The name of the Edit control is therefore in the code of the "Browse" button.
When the Edit control and its button are copied and pasted in the same window, the new controls will automatically be renamed.
Without this method, the code of these controls would be wrong, as it would use the old control names.
In version 26, the names of controls used in programming that are copied and pasted, are automatically renamed.
Reopen an element closed by mistake: CTRL+Shift+T
During the development phase, open elements are often closed by accident: a window, a procedure, a class...
Finding it to open it again can be really annoying.
In version 26, you only need the key combination CTRL + SHIFT + T to reopen the last closed item (as in a browser)..
By pressing CTRL + SHIFT + T twice, the last 2 closed elements are opened, etc. (up to 10)..
Clipart: 10,000 new icons
The supplied clipart is enriched with 10,000 new icons in a modern, wired and black look & White.
Take a look to enrich the UI of your applications and sites!
New look of ribbon icons
The icons of the environment ribbon take a facelift and become vectorial, so even sharper.
  • All events in the project, even those in other configurations, are visible..
  • A new option allows you to list Custom-Folders of a project, if it contains more than 20.
  • It is now possible to include or exclude an element from a set of configurations in a single operation.
  • The content of the portfolios changes according to the environment that uses them.
Categorize bug tickets
You can now label bug tickets to easily classify and sort them.
Use as many labels as you want.
The same ticket can have several labels.
Examples of labels:
  • to develop
  • urgent
  • suggestion
  • accounting module
  • ...
Creation of requirements: improved UI
You can now create requirements with 3 times less clicks.
UI has been simplified.
Task list: highlighting the tasks of the requirement for which one is responsible
Each developer views their task list.
The developer filters this list according to different criteria: sprint, folder,...
When the developer is also the manager of a requirement, the tasks that belong to that requirement are highlighted.
This allows developers to better prioritize their tasks.
Warning when using old syntaxes for threads
Old syntaxes for managing threads are still supported.
In some cases, these old syntaxes do not allow closing windows and pages.
The audit identifies these old syntaxes and proposes to replace them with the modern syntax, which is richer and more secure.
Field prefix: UI compilation error
Controls that do not use a prefix defined in the code style appear in the UI errors.
This feature is not enabled by default.
Detection of missing dependencies
The audit now reports missing dependencies.
These are some of the types of dependencies that can be detected: style sheets, external libraries, documentation files, external CSS sheets, external JS codes, favorites file, internal and external component files, code style, custom fonts in the project, etc...
HashString changes according to the platform (mobile, linux)
Android and iOS handle UNICODE strings differently.
Android stores 4-byte characters (like Linux), while iOS stores 2-byte characters (like Windows).
The use of the WLanguage hashChaine function (which manipulates bytes) will therefore not give the same result depending on the platform..
The dynamic audit reports this.
Cleaner layout
The program documentation of your application now proposes to exclude the captions of properties without content.
Only the properties that have actually been used appear in the documentation.
This allows for clearer pages.
New action: site (and webservice) deployment
An action plan may now include the deployment of a site or Webservice..
A highly anticipated and practical new feature related to management task automation.
Temporarily disable an action
You can now disable an action to stop executing it, without losing its configuration.
New action: disable programming standard errors
The Software Factory now differentiates programming standard errors (zombies, etc.) from other compilation errors.
It is now possible to specifically disable these errors in order to run action plans.
The Software Factory administrator becomes significantly faster: it is much easier to use.
Login with two-factor authentication: automatic
In version 26, WINDEV, WEBDEV and WINDEV Mobile allow you to set up a login via two-factor authentication.
The User Groupware (GPU, included as standard) now supports two-factor authentication through a standard application (Google Authenticator, Microsoft Authenticator or other).
This application, to be downloaded on a mobile phone, returns a personal code on demand (valid for 30 seconds) that must be entered at login (TOTP protocol).
The GPU administrator can make two-factor authentication mandatory.
The GPU administrator can also temporarily disable two-factor authentication for a user (if the user loses their phone, for example).
The "Trust this device" option is available. After using two-factor authentication for the first time, this option allows the user to switch back to single authentication mode to facilitate connections from that specific device.
The "Trust this device" option is automatically managed.
Unified user management (MBAAS)
WINDEV's User Groupware (GPU) has always allowed direct access to the User Groupware database. This mode will work as usual.
In version 26, your WINDEV applications, WEBDEV sites and WINDEV Mobile applications can access the User Groupware through MBAAS (Webservice).
In MBaaS, data is accessed through a Webservice. This access does not require opening any particular port.
The User Groupware can then be managed via a website.
If you allow it, end users will even be able to log in to this site to manage their own profiles: change their passwords....
"Git" tab in the editor ribbon
To make Git-related actions easier, a tab with the most common Git commands is now available:
  • commit
  • pull
  • push
  • merge
  • ...

Project (WDP) in text format
The list of elements of the project is now stored in text format to merge projects more easily in Git.
Rectangular snip
The image editor now offers a a useful rectangular snip feature. You can now take a screenshot on the PC by selecting the rectangular area you want to snip.
This area can then be edited directly in the image editor.
WDTRAD: fast document loading
Documents are loaded much faster in WDTRAD.
No more coffee breaks when loading large documents. Sorry!
WDTRAD: multiselection
It becomes possible to carry out block operations thanks to multiselection. For example, if a term is changed, you can delete a series of obsolete entries in the dictionary in one go.
The search is also improved.
WDINT Spanish
In version 26, it becomes possible to select Spanish as the HEX@ translation language for the framework.
SCM: tree view of internal components
In version 26, the update window displays internal components in a tree structure.
SCM: UI improvement of branch history
The history of the elements of a branch can be viewed from the branch itself, without having to go back to the trunk.
SCM: launch action plans automatically during reintegration (CI/CD)
When one or more elements are reintegrated, one or several action plans can be started automatically.
For example:
  • start automatic tests
  • update the projects that share these elements
  • generate executables
  • run setups
  • ...
This new feature facilitates Continuous Integration & Continuous Delivery.
Developers often dive deep into their code: F2 sequels are common!
In version 26, Breadcrumbs are introduced in the code editor.
This breadcrumb trail allows you to visualize the structure of the code and to go directly to the desired level..

Light colouring: 3 colours instead of 36 shades
The code editor allows you to fine-tune syntax highlighting.
For developers who prefer a clearer view of their code, a new, simpler coloring mode has been added.
Many color shades are no longer used.
Code is easier to read.
Move with CTRL + ARROW keys
Moving with Ctrl + Arrow is now more intuitive:
  • Ctrl + Right arrow: beginning of next word
  • Ctrl + Left arrow: beginning of previous word
  • Ctrl + Shift + Right arrow: extend selection to the end of the next word
  • Ctrl + Shift + Left arrow: extend selection to the end of the previous word.
Debugger: real-time variable watch
In version 26, the debugger systematically displays the value of the variables at the end of the line.
You can avoid hundreds of operations every day!
Remote debugger: select an EXE or a service started multiple times
When doing remote debugging (with WDDebug, included as standard), the debugger must be associated with the process.
When the same EXE or service is started multiple times on the remote machine, the selection list now shows the details of the command line (often unique per process) for each instance, which makes it possible to identify each process.
An integrated devops environment
WINDEV, WEBDEV and WINDEV Mobile version 26 form an increasingly cohesive DevOps environment.
You benefit from all the necessary functionalities to implement the DevOps approach: no more scattered, barely-compatible tools.
You have all the integrated tools to manage the DevOps methodology: life cycle management, testing, continuous integration, deployment, continuous delivery, production, user feedback,...
Version 26 includes some interesting new features for Docker, robot (Watchdog), ...
Report editor: improved Gantt chart reports
Gantt chart reports have been revised and improved: task labels and recipients are included in the first column of each task, the number of days of each task is displayed,...
Better layout and legibility.
Your Gantt chart reports will look amazing!
Report editor: new control gauge
In reports, progress bars are often used to represent data, instead of bar charts, for example.
In version 26, the report editor manages "Gauge" type controls: linear and circular progress bars.
The glocales: global variables, but that in their Control
Glocal variables are global variables, but with a scope limited to the control in which they are defined: they are both Global and loCal!
When a control is copied to another window, there is no longer any risk of forgetting these variables, since they are in the control!
A Glocal variable is encapsulated in its control.
This variable is accessible from all events of the control: it is no longer necessary to define this global variable in the window.
Code becomes generally clearer.

Glocals: glocal procedures and properties
You can also define procedures and properties that are local to the control.
Thus, everything is encapsulated in the control.
The glocales: overloading the functions and properties of the language
If you give one of your procedures or properties the same name as a WLanguage function, your procedure or property will be called instead of that function.
This overrides WLanguage functions and properties: you can add a test in the function.
For example: it can be interesting to override the TableAdd function to format the data (transform an HEX@ from birth to age for example) before adding it in the table.
The glocales: derivation of native fields
By using the 3 previous new features of version 26, it becomes very easy to derive the native controls of WINDEV, WEBDEV and WINDEV Mobile.
Control courant: This
The keyword This allows access to the current control.
This makes it easier to write generic code.
Callback: incorrect prototype detection at compile time
In version 26, function calls can take a callback as parameter.
This callback expects a certain number of parameters, of a certain type.
If there is an error in these parameters, a compilation error is generated.
Gmail, office 365: logging in using Dual Authentication (IMAP, SMTP)
More and more email servers are using two-factor authentication: Gmail, for example.
In version 26, the Email functions for access to IMAP and SMTP servers support dual authentication..
When opening the Connection to the server, for security reasons (that's the goal!), the user must enter his double authentication code..
Implement dual authentication (European directive DSP2)
Reminder: the standard functionality of the User Groupware allows to set up a double authentication in your applications in an automatic way..
However, if you want to manage two-factor authentication in your applications or sites, you can use the following 3 new WLanguage functions:
TwoFactorAuthenticationGenerateTOTPKey generates the secret key passed to the third party authentication application which is on the Phone, TwoFactorAuthenticationGenerateLink generates the QRCode which will be scanned by the third party authentication application, TwoFactorAuthenticationCheckCode verifies that the code is correct. .
Tables, set operations: Union, intersection
In version 26, the WLanguage offers set functions on variables of type array:
  • Distinct, to remove duplicates
  • Union, without duplicates
  • Union, with duplicates
  • Intersection.
Regular expression in Unicode
In version 26, the WLanguage functions for handling regular expressions also work in UNICODE: Chinese, Japanese, Russian, Arabic, Hebrew....
Replacement function: a replacement grid
The WLanguage Replace function becomes more powerful.
A set of characters to be replaced can be contained in an array.
A second array will include the replacement characters.
This avoids making successive calls, going through the chain several times..
Write in an HEX@ upside down text: fInsèreTexteaudébut
You want to write information in a LOG file with the most recent information at the beginning?
The new WLanguage fInsertTextAtBeginning function is your friend!
Instead of adding data at the end of the file, this function adds it at the beginning.
Image vector SVG: modify the Image by programming
In version 26, it becomes possible to modify the content of an Image in SVG format by programming..
For example, replace a color, add or remove objects, add or modify text,...

Tokens oAuth with Duration validity: keep them alive!
An oAuth token can have a expiration time set by its author: a few minutes, for example.
Once the token expires, it can no longer be used. If the application still needs that token, it will have to request a new authentication.
To avoid this, it may be convenient to keep the token active beyond its expiration time.
This is now possible with the WLanguage AuthRefreshToken function..
New DateTimeToShape function
This new WLanguage DateTimeToString function allows you to directly transform an DateTime into a chain..
Track function: increased speed
When the trace window integrated in the editor is displayed, the speed of the trace function has been multiplied by 3.
ExceptionChangeParameter with global scope
The ExceptionChangeParameter function can now have a global scope to the project..
Zip compression feature family: 2 new features
Reminder: The Zip family of functions works with all compression methods, not just the Zip method!
The family of Zip functions is enriched with 2 new useful functions:
  • zipExtractDirectory: extracts only the contents of a given directory.
  • zipFilter: returns the list of extensions supported by the version used: zip , 7z , rar , cab , wdz , tar , tgz in version 26. useful in combination with the fSelect function.
Zip functions: the user can Cancel during extraction
To allow the Cancel end user to perform a decompression treatment, the WLanguage zipExtractAll function accepts a Callback.
By returning False in this Callback, the processing stops the extraction..
Zip & Github: support for Github's tar.gz (TGZ) format files
The compressed files returned by the Git Archive command are of a special Tar.gz type .
This specific format is supported in version 26.
New polygon type
The new Polygon type makes its appearance in the WLanguage. This type can be used, for example, to draw lines in maps, images and charts, and to define text areas using native OCR.
Write a whole book in 1 row of WLanguage
The new GenerateLorem function allows to generate a "Lorem ipsum" type text of the chosen length..
This type of text is universally used in DTP to quickly materialize a text with variable content.
This text is random, pronounceable, but has no specific meaning...
Type thread: stored return value
When using several threads at the same time, some serious skills were required to memorize the return values of the different threads.
In version 26, a variable of the type Thread automatically stores the return value that will be returned in the Procedure of the Thread.
To view this value, simple read this variable. That requires some not-so-serious skills!
Securing thread behavior
Access to a field from an thread is not recommended..
To avoid this kind of unpredictable behavior, the new <secure> attribute is available.
The Procedure of the Thread which has this attribute and which would access an control (or, less visible, which would itself call another Procedure which accesses an control), generates a WLanguage warning error..
Buffer comparison
Version 26 allows the immediate comparison of parts of buffers.
2 syntaxes are proposed; examples:
buf is an HEX@ = [0xEF,0xBB,0xBF,0xCF,0x2F]
SI buf = [0xEF,0xBB,0xBF,0xCF,0xDD] ALORS
SI buf[3 SUR 5] = [0xBF,0xCF,0x2F] ALORS
HEX@ PDF generation: image size
When generating a PDF file by programming, the size of the images included in the file is adapted to the view and print size.
Initially large images will be reduced, therefore reducing the size of the PDF file.
You can still keep the image in its original size, or specify its exact definition.
Searching for a set of characters in a string
The Position function is used to determine the position of the first character of a set of characters that are present in an array.
This function now returns 2 values (tuple): position in the string and character index in the array.
SOAP Webservice: Asynchronous Calling
Asynchronous calls to SOAP Webservices are now managed automatically.
The application is no longer blocked during the call, especially when the Webservice server does not respond!
Webservice rest: asynchronous sending
In version 26, it also becomes possible to execute HTTP and HTTPS requests asynchronously..
httpRequest: recovery of received data and headers
In version 26, it becomes possible to visualize and analyze the details of the data and headers received by a call to the httpRequest function. .
This makes it easier to perform advanced debugging operations.
The Callback provided in the httpRequest variable for the trace is called with 2 new constants: httpTraceHeadReceived and httpTraceDataReceived .
httpRequest: support of the HTTP2 standard
HTTP2 standard improves speed and safety of navigation.
In version 26, the HTTP2 standard is supported..
XML coloring in multiline strings
In the code editor, a multi-line string can contain XML code.
In version 26, you can apply syntax highlighting to this code (context menu).
Note that this option was already available for SQL, HTML and WLanguage.

sCodeXML is a string = [
           <Semaine ValeurUnique="245321"/>
           <Mois ValeurUnique="867234"/>
           <Jour ValeurUnique="35627"/>
           <Semaine ValeurUnique="2453"/>
           <Mois ValeurUnique="2387"/>
           <Jour Valeurswe="[1705,2121,2001,2083]"/>
Callback: pass a method in parameter
A function can take a Callback as parameter.
In version 26, you can pass a method of an object for this Callback parameter.
The instance of the object whose method is passed as parameter will be used.
Equality operator
The equality operator is introduced in OOP.
This operator allows the type code if object1=object2
It also allows you to search in an array for objects (function ArraySeek)..
Comparison operator
comparison operators < and > make their appearance in POO.
These operators allow easy sorting of objects (ArraySort function)..
IOT: Modbus protocol support
Modbus is a communication protocol used in electronic devices, mainly in the industrial world. It's a free protocol.
Version 26 offers support for this protocol thanks to the new WLanguage Modbus family of functions..
These functions allow slaves to read and write: robots, sensors, display supports, machines...
TCP and RTU protocols are supported.
IOT: data collection by WEBDEV server
Some sensors send data by httpRequest protocol. .
A web server is required to retrieve this data.
The WEBDEV Application Server makes it easy to collect, store and use the data received!
Version 26 includes a documented example on data collection and processing.
Reminder: data can be hosted via PcsCloud.net, your own solution or any other hosting provider.
Asynchronous execution of HFSQL query: the application is not blocked by waiting for the end of the query

In version 26, you can execute HFSQL queries asynchronously.
The application is therefore "non-blocking". The end user can continue to use the application while the query is being executed on the server.
You just have to use the new syntax of the WLanguage HExecuteQuery function allowing to pass in parameter the name of the Callback to call..
The Callback will be called as the records are received.
The number of records passed to the Callback is optimized according to many parameters: network speed, frame size, record size, server load...
RGPD: knowing by programming that an Item is RGPD
In the data model editor, you can indicate that the GDPR applies to a specific item.
In version 26, it is possible to retrieve this information by programming using the Property .RGPD on the Item.
This allows for fine-processing of sensitive data.
Search for optimization on a specified query
Need to optimize the speed of a particular query or set of queries?
Need to check if a given query has been optimized?
In version 26, it becomes possible to run the optimization search functionality (check for the presence of the necessary keys) on a specified query or set of queries..
If a set of queries is specified, any keys created will be optimized for the entire set.
To optimize the speed, simply use the WLanguage HSuggestKey function on the production site with the actual data. This function returns a status report of the same type as the one returned by the HFSQL engine.
Triggering the optimization search: on/off
It is also possible to trigger the optimization of queries that are executed from a given time (HSuggestKeyStart), to another time (HSuggestKeyEnd)..
This can be useful for optimizing the different queries executed during a particular process.
Trigger: access to the value of wage types before modification
It may be necessary to know the value of the items in the modified record before it is modified or deleted.
This is now possible with the HTriggerRecordBefore function..
Automatic cleanup of "internal" working directory
The HFSQL engine uses a working directory named INTERNAL.
In version 26, this directory is regularly emptied, so you won't have to do it anymore!.
Determine if a transaction is in progress
In version 26, it is possible to know if a transaction is in progress thanks to the WLanguage HTransactionInProgress function..
Assisted Universal Replication Editor: UI Simplified
In version 26, the universal assisted replication benefits from clearer and more intuitive help:
  • File addition plan
  • Explanation of the different options
  • Addition of connections from the replication editor
  • ...
Webhook de sauvegarde: dragonfly
A Webhook can be used to trigger the execution of a process at the end of the backup.
If an error occurs, the caption of the error is returned in addition to the error number.
The HErrorInfo function supports the constant hErrCode.
3 new SQL functions
3 new SQL manipulation functions have been added in version 26. The INTERSECT SQL command returns the records that are in the 2 specified queries (Intersection).
The three new functions are:
  • INTERSECT: Returns the records found in the 2 specified queries (intersection).
  • ANNÉE: For compatibility with SQL code in MySQL.
  • MONTH: For compatibility with SQL code in MySQL.
automatic creation of INSERT query parameters
INSERT type queries take as parameters the values of the Record headings to be added..
However, you have to create a parameter for each of these values!
In version 26, the query editor generates by Default a parameter for each of the following values.
SQL Code Editing
Any identifier (item name, parameter, etc.) selected in the query editor is highlighted wherever it is used in the code editor.
Password management for data files opened indirectly
HFSQL Spare is a near-real-time backup of a server.
HFSQL Spare now allows you to check the integrity rules of linked files that have secure encryption.
HFSQLDrive: new portal
The HFSQLDrive portal offers an improved UX:
  • Simplified configuration and creation of an HFSQLDrive database
  • Simplified configuration and creation of an SCMDrive team
  • Improved interface.
Practical aspects
The HFSQL Control Center benefits from many practical improvements.
  • Items (columns) can be displayed in either alphabetical or logical order.
  • Upon reconnection, the HFSQL Control Center automatically sets the position on the last table edited and reopens the previously opened tabs.
  • It is now possible to search in the list of replications of the server.
  • GDPR items are identified.
  • The log can be cleared from the Control Center.
Native Connector MS SQL Server Linux: useful for Docker
The Native MS SQL Server Connector (available separately) is now also available for Linux.
It allows a native connection to MS SQL Server.
It can also be used to deploy a site or a Webservice that accesses an MS SQL Server Linux database via Docker.
AS/400: maintaining nested structures defined in PCMLs
One feature stands out among the many new features of the Native AS/400 Connector (available separately): IBM program calls that take nested structures and array structures as parameter.
Discover all the new features of the Native AS/400 Connector at WINDEV.COM.
Chorus pro, to bill the French State: API news
France has made electronic invoicing mandatory for invoicing report services.
The French government has set up the Chorus Pro system to submit and monitor invoices. It is the tool for managing the expenditure and non-tax revenues of French government services.
All companies must use Chorus Pro to send their invoices to the French report services..
Version 26 takes into account the latest changes to the Chorus Pro APIs, and makes it easier to automate the invoice submission process.
DMP: the Medical Record (France)
In the medical field, France offers the DMP.
The Shared Medical Record (SMR) is a digital health record that stores and secures an individual's health information.: treatments, test results, allergies...
It allows to share this information with health professionals..
In version 26, it becomes possible to easily access the API of the medical file..
This access is via Webservice.
The DMP is a confidential Document.. Please note that you must have an approval for your software to be considered as DMP-Compatible..
Generate key as a sequence of words
Private wallet keys must be kept secret.
These are 256-bit keys.
For the handle more easily, the 2 WLanguage functions BufferToPhrase and PhraseToBuffer make it possible to transform this numerical key into a sequence of words.
These words are taken from standard dictionaries (Bip39), which are provided in English, Spanish and French.
You can use your own dictionaries.
Version labels
The data collected via telemetry is grouped by software version number.
When many versions have been deployed, it can be difficult to find your way around.
In version 26, it becomes possible to attach a descriptive label to a version number..

Manage HD & 4K screens
In earlier versions of WINDEV, automatic tests had to be run on screens with the same resolution as the one used to record such tests.
In version 26, a test can be replayed on a different Definition screen, for example a test recorded on a 4K screen can be replayed on a 1.920 x 1.200 screen..
Application monitoring without network share
In version 26, it is no longer necessary to set a network share between the machine that hosts the robot and the machines on which the applications to be monitored are run.
This simplifies the implementation of the robot.
Test frequency
It is now possible to create test frequency profiles.
Now you can change the frequency of 150 tests in one single operation!
User profile
The user profile is used to specify the means of communication that the robot must use to transmit the test report.
It also allows you to select the tests that will be displayed by default in the application.
Network administrator: selection of alert messages to be received
Network administrators can now select the type of messages they want to receive. This ensures they will receive ony relevant messages.
Managing a Webhook: automatically execute an action based on the test result
A Webhook can be associated in every test.
This Webhook allows you to launch any processing at each change of report of a test.
For example, if a serious error is detected on an operating site, it can be used to automatically display a "Maintenance in progress" page on this site, or to switch automatically to a backup server.
Delivered example: website of availability of your services
An example of a service status website (Staytus-like) is provided. This example can be associated with the robot, and show the status of the different services that are managed in the monitoring robot: messaging, IP telephony, sales site,...

For MongoDB databases, the new WLanguage MongoGridFSSendFile function returns a 2 values (tuple): a boolean and an Variable of type MongoGridFSFileInfo which allows to directly retrieve the identifier of the added HEX@.
Minimum version required
  • Version 26
This page is also available for…
Click [Add] to post a comment