2024 novelties brochure: Common novelties
See the 929 new features (PDF)
New: interactive guided tour generator
One of the major new features of version 2024 is the new "Guided Tour" generator, which lets you easily offer a help function that your users are used to and appreciate.
What is a "guided tour"?
A Guided Tour presents a series of features, displayed in a tooltip in the current window or page. A Guided Tour introduces the end-user to new features in the version, or to specific functionalities, or guides the user through each step of a process. A guided tour can also be used as a tutorial.. The display and navigation process is managed automatically.
How to create a guided tour: a powerful new wizard
Creating a Guided Tour is easy. Note that a Guided Tour is created in the same way in WINDEV, WEBDEV and WINDEV Mobile. Simply perform the following steps: - Open the window or page in which the Guided Tour is to start.
- Launch the guided tour generation wizard.
- Define the general parameters of the Guided Tour: behavior and look.
- Create a step for each field to be presented:
- Visually select the field,
- Define title and text to be displayed,
- Possibly define specific behaviors for this stage: different color halo, etc.
- Click on GO to test this Guided Tour.
- It's all over!
Total automation.
Wizard details
The wizard makes it easy to create a Guided Tour. On the left, the steps, in the Middle the parameters of the selected step, on the right the preview of the choices made. Among the parameters available in the wizard: General:- Choice of bubble, color, margin, transparency,
- Field highlighting: rectangle or halo, GFI,
- Action when clicking outside the hightlighted field: cancel or go to next step or do nothing.
By stages:- Enter title and bubble text.
The 3 types of Guided Tour
A Guided Tour can take 3 forms: - Traditional guided tour,
- Guided use (or Tuto),
- Persistent tooltip.
The wizard allows you to create 3 types of Guided Tour. - A traditional Guided Tour is a series of speech bubbles that appear at predefined intervals or after user intervention: click on a button, Next/Back, press space, etc.
Features are presented one after another.
- A Guided Use (or Tutorial) presents an action to be performed (enter zip code, etc.); when this action is completed, the next step bubble is displayed.
Step changes are triggered here by user actions in the application.
- A persistent Tooltip is displayed until the user closes it.
This display is useful, for example, as a reminder of safety instructions, a business rule or to introduce an important new feature.
Traditional guided tour: nothing to code
You don't need to develop anything to implement a traditional Guided Tour. The wizard generates the necessary source code and automatically pastes it into the Initialization Processing of the relevant window or page. You can freely edit this code. It is therefore possible to develop specific treatments. To this end, new types and properties are introduced in version 2024.
Guided tour :
The customization of a guided tour by programming is very powerful, and relies on 2 new WLanguage types. These types make it easy to program the many settings available for the Guided Tour. Type GuidedTour is used to: - define all general properties common to all stages of a guided tour,
- define the step array.
The GuidedTourStep type is used to define properties specific to a stage. Steps can be added, modified or deleted by programming. Numerous new properties complete these functions.
Guided tour :
New type properties enable fine-tuning of behavior. | | | | | ActionTarget | ActionOutsideTarget | Tooltip.ActionAllowed | Tooltip.BackgroundColor | | Tooltip.InternalWindow | Tooltip.Margin | Tooltip.Markdown | Tooltip.Mode | | Tooltip.InternalPage | Target | Description | AutomaticValidationTimeout | | Effect.Grow | Effect.Round | Effect.Color | Effect.AnimationDuration | | Effect.Shape | Effect.Margin | Effect.Opacity | Effect.Type | | Identifier | Index | Initialization | Ending | | Title | Version | Step [ ] | |
Guided tour: new keyword
The new MaVisiteGuidée keyword provides access to the Guided Tour currently being displayed: access properties, add or delete stages, change stages, etc.
Additional actions to those proposed by the wizard via programming
Everything defined by the Guided Tour Assistant can be modified by programming.. Many additional options are available through programming: - Display or not the Previous/Next buttons, and the close cross,
- Highlighting a group of fields,
- Frequency of appearance (by version number, every month, every n launches, etc.),
- Modification of the stage array,
- Code to be executed before and/or after each step,
- The bubble on one field may also be displayed only when entering another field,
- Fields can be populated programmatically according to an end-user action on the bubble,
- Markdown support,
- etc
A reminder: a Guided Tour uses the same WLanguage code in WINDEV, WEBDEV and WINDEV Mobile.
An example of code
Example of code generated by the wizard: General parameters of the guided tour and First step: MyNews is TO GuidedVisit
MyNewFeatures.Identifier = "ERP VISIT"
AStage is TO GuidedTourStage
OneStep.Target = BTN_Partner..Name
UneÉtape.Titre = "Share Button"
OneStep.Description = "Quick action that allows the document to be shared through other platforms"
MyNews.Step.Add(OneStep)
...
MyNews.Start()
Example of custom code for setting effects: MyNews.Effect.Type = gttHalo
MyNews.Effect.Shape = vgfCircle
MyNews.Effect.AnimationDuration = 1 s
MyNew.Effect.Opacity = 80
Guided tour :
The bubble displayed by the Guided Tour is fully customizable. Simply use an Internal Window or an Internal Page. Several models are available. Fields can be added, etc.
Themes and theme
As you know, Themes and Ambiences allow you to select and apply a UI theme to a project. Theme applies to applications, while themes apply to websites. If necessary, you can dissociate the control from the theme or theme, or override the style of the control. In version 2024, you no longer need to override styles. A new method consists of duplicating an existing theme or ambience, renaming it, and then directly modifying the styles natively, without having to override them. This makes it easier to define styles. Please note that once duplicated, the theme or ambience no longer benefits from any updates provided by PC SOFT.
7 new Smart controls
Version 2024 offers 7 new Smart controls: - Display Markdown documents,
- Display FAQ,
- Sliding cards,
- Label to be entered,
- Non-blocking Upload control,
- Signature tactile,
- Digital input with slider.
You'll find these Smart controls directly in the corresponding sections: new features 220 to 221 for WINDEV 2024, 488 to 490 for WINDEV Mobile 2024, and 763 to 772 for WEBDEV 2024.
Word Processing control :
In version 2024, the Word Processing control field supports the checkboxes. These checkboxes can be programmed and their status retrieved (checked or unchecked).. The Unicode characters used to represent the ticks are also programmable.
Word Processing control :
In version 2024, the Word Processing control now lets you choose the writing direction: left to right, or right to left.
Word Processing control :!
With version 2024, you can now choose which option bar to use: either the standard bar (a ribbon packed with options), or the less intrusive mini toolbar. See new feature 228.
Spreadsheet control :
Internet links in spreadsheet cells become clickable.
Spreadsheet control :
In version 2024, cell notes can now be accessed programmatically, in both read and write mode.
PDF: PDF Reader control displays attachments and bookmarks
In version 2024, the PDF Reader control displays the list of attachments by default.. The bookmarks list is also displayed.
New Chart control :
A new type of graph appears in version 2024: the Waffle graph. This type of chart shows progress towards a goal or percentage of completion. It consists of a grid of small cells, where colored cells represent the data. A chart can have one or more categories.
Multiple graphs can be assembled to compare different series.
New Chart control Waffle :
Programming the Chart control Waffle field is the same as programming the Chart control Waffle field. The usual WLanguage gr functions family can be used to manipulate this type of graph.
Column chart :
The default appearance of column charts has been modernized. And new parameters are introduced for finer customization: rounding on bars, etc.
Graph :
A new AAF allows end-users to modify graph bounds and scale. This avoids unused empty zones based on actual data.
Offer electronic signatures in your applications and websites
It is now common for individuals or businesses to sign contracts electronically. To comply with regulations, an electronic signature must be validated by a trusted site. In Europe, this regulation is called eIDAS.. Version 2024 makes it easy to include this capability in all your applications and sites.
Three types of electronic signatures
There are 3 types of electronic signatures: - Simple Electronic Signature (SES),
- Advanced Electronic Signature (AES),
- Qualified Electronic Signature (QES),
To sum up, the simple signature doesn't verify much (to be used with trusted interlocutors), the advanced signature sends a verification code by SMS, and the qualified signature verifies the identity of the signatory. Qualified electronic signatures are only form of electronic signature that is considered equivalent to a handwritten signature.
The steps involved in an electronic signature
The basic principle of an electronic signature: - Create the document to be signed: PDF, HTML, Docx,
- Upload the document to the service provider,
- Send list of signatories: name, email, Phone, etc,
- Each recipient receives the document, and signs it,
- The issuer of the document recovers it signed, and can send a copy.
There are a number of possible operating methods, depending on the case: - recipient for information only,
- type of identification: none, SMS, ID, etc,
- number of documents,
- delay,
- etc.
Easy-to-use functions
WLanguage functions are delivered as an internal component, along with their source code. The functions allow you to: - Set the signature level,
- Send one or more documents to Docusign, to a recipient (name, email, Phone number, etc.), for signature or for information,
- Define the location of the signature in the document,
- Find out if a document has been signed, and who hasn't,
- Get signing dates/times,
- Retrieve signed documents,
- Cancel the operation.
All aspects of verification, emailing, text messaging, ID verification and document storage are fully handled by the service provider (in this case, Docusign).
A wizard generates the code
To simplify development, an intuitive wizard generates the necessary code.
Access to all APIs
To handle special cases, all the APIs provided by Docusign can be accessed via a WLanguage call.
Billing
Docusign offers several types of subscriptions, giving access to different types of signatures. The type of subscription to choose is an "API subscription". Contracts include a fixed number of signatures per month. When SMS validation is chosen, an additional cost is incurred. This information is accurate at the time of printing, but may change according to developments at Docusign.
All providers can be used :
Docusign is supported by default, but all other solutions (YouSign, Certeurope, etc.) can also be used by calling a REST or SOAP API in WLanguage. There is no limit.
Image editor :
In version 2024, the Image Editor control displays horizontal and vertical rulers. It is also possible to position guides on these rules.
Image editor :
- Move layers using the keyboard,
- Handles in work area,
- Improved text input procedure.
Don't duplicate your projects: a single environment
As you know, it is possible to use WINDEV, WEBDEV and WINDEV Mobile in the same environment. Project elements are immediately common to all 3 platforms: database schemas, queries, reports, procedures, classes, code, etc. Windows, pages and mobile 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. In the 2024 version, the environment benefits from developments that are useful in everyday life. Remember: you must of course have a license for the software in question.
Transform existing WINDEV elements into a SaaS application
A widespread need is to transform a Windows application (or parts of applications) into a SaaS application. Simply call WLanguage functions of the SaaS family for license management, etc. WINDEV 2024 lets you use the default SaaS administration site to manage an application in SaaS mode.
Several database schemas in a single project
In version 2024, you can use multiple database schemas in a single project.
Helping to optimize structures
Database schema Editor detects potential description optimizations. For example, when a field is defined with a large size, and this field is not an index, the Database Schema Editor suggests transforming the field type into Memo. This reduces disk occupation on the server, and increases reading speed.
Table and field names :
In version 2024, the Database Schema Editor allows you to change the case of all tables (tables) and item (column) names, to lower case or 1st letter uppercase or all uppercase.
Item editing window
The column editing window now offers right-click cut/copy/paste operations.
Figma :
Figma is an online design tool that allows you to create designs and prototypes in various fields, in particular for websites and applications. Version 2024 of WINDEV, WEBDEV and WINDEV Mobile transforms FIGMA documents into windows and pages, and generates the corresponding fields while respecting their graphic appearance.
The Figma principle
Figma is a vector graphics tool. The designer creates rectangles, circles, lines, etc. and texts and applies numerous parameters to them. Elements can only be modified programmatically, and can overlap each other. Everything is contained within given frames. Designs can be accessed via a URL, which requires authentication.
How it works
To create one or more windows (or pages) in WINDEV (or WEBDEV), simply: - create a FIGMA account (license is not required*),
- ask the designer to share the document to be imported,
- select the import option in WINDEV (or WEBDEV),
- specify the page and frame to be imported,
- WINDEV creates a new window (WEBDEV a page),
- WINDEV (or WEBDEV) visualizes content and analyzes document structure,
- the developer selects the graphic elements making up a field drawn by the designer,
- under WINDEV (or WEBDEV), fields are created in real time in the window (or on the page),
- conditions of use may change and depend on the Figma license on the day you use the feature.
Field generation
For each selected shape or set of shapes, the editor lets you define a field type. The developer then specifies each element making up the field: its label, its input field, and any decorations... It is possible not to import a field, or part of a field: for example, a lorem ipsum label. If required, a Figma image of the field can be imported into the window or page. The necessary styles are automatically created.
Positioning respected
The fields created respect the positioning of the Figma document.
The "UI elements" > "controls" association is preserved
The association between graphic elements and created fields is preserved. If the Figma model is modified, simply process the new objects. Existing objects already associated are retained.
7 tabs :
A universal magnifying glass appears in all 7 tabs. The magnifying glass allows you to search for attributes present everywhere in each tab of the "7 tabs": labels, labels of buttons used in the 7 tabs, contents of scrolled combos, contents of edit controls, etc. Thanks to this magnifying glass, searches are exhaustive. There's no need to scroll through the tabs one by one to find an option you rarely use. The number of occurrences is displayed, when the information is in another tab, that tab is hightlighted, etc.
Organize your documents in the document bar
In the environment's document bar, you can organize elements in the order of your choice.
Windows resource management
Windows, even in version 11, has resource limits. Depending on the resources available in Windows, the oldest project elements open in the editor will be closed if necessary.
Faster compilation of multilingual projects
Compilation of multilingual projects is much faster in version 2024. The gain can be as much as 75%.
Model :
In version 2024, a page or window template can inherit several templates.
Share internal components between projects with different compilation options
In version 2024, each Internal Component has its own compilation options. This makes it easy to share Internal Components with projects using different options. This is particularly useful when a recent Internal Component has enabled specific compilation options.
Alignment :
A new alignment option lets you space selected fields horizontally or vertically in a single operation, by specifying a spacing expressed in pixels.
Project creation: simplified UI
The project creation UI has been drastically simplified in version 2024.
Project styles :
The project style viewer shows the number of times each style has been used via a badge. Clicking on the badge displays the list of uses. This allows you to delete unused styles or standardize styles that are rarely used.
Forgotten validation button? Environment adds it
A validation button reacts when the end-user uses the Enter key. Some windows or pages may not have a validation button. It's usually an oversight. In version 2024, when the editor detects the absence of a button defined in Validation and the label of a button contains the text "OK", "Validate", "Connect", a UI warning is generated. Clicking on the not happy smiley sets this button to Validate. The same treatment is applied to "Cancel" buttons.
Miscellaneous
- The environment language automatically adapts to the system language: English, French or Spanish.
Obsolete image in a site
WEBDEV offers the "Automatic" image mode. This type of image uses an optimal algorithm that increases site speed. Static Audit version 2024 detects images that are not in automation mode: Static, Dynamic, Generated, etc.
Detection of the use of 2 data sources with the same name
Historically, it was possible to use the names of data sources as identifiers. The use of 2 data sources with the same name was authorized. In some cases, this can lead to unexpected behaviour.. Version 2024 signals the simultaneous use of 2 data sources with the same name. Dynamic Audit then reports that there is a compiler option that prohibits the use of the data source name as an identifier.
Search the Project Management Hub database
In version 2024, a new search mode allows you to search the entire Control Center database: tasks, incidents, requirements, etc.
Kanban task management
The Project Management Hub offers an additional way of visualizing and manipulating a developer's tasks using Kanban. This gives you an overview of the progress of your tasks, and allows you to modify their status with a simple drag & drop.
Miscellaneous
- Tagging requirements,
- For each requirement, a developer is designated as responsible. When the manager switches his last task to "Completed" mode, and if there are still tasks to be completed for other developers, then the Control Center offers to insert an integration task.
- Optimized completion of the list of requirements.
Dossier: new covers available
The presentation of the folder has evolved and now offers a wider choice of covers.
Action plan administrator :
An environment variable now shows its value when displayed in the action plan settings.
Action plan editor
In version 2024, copy/paste makes its appearance in the action plan editor.
Password security :
When a user creates a password, User Groupware guides the user through the password's security level. The aim of this display is to encourage end-users to strengthen their passwords.
Miscellaneous
- The new WLanguage function gpwListUser lists all users.
GIT :
Now you can create a GIT repository for a project directly from within the environment.
GIT :
The GIT access password and personal access token are memorized by the environment from one development session to the next, to ensure smooth operation.
Environmental image editor :
The environment's Image Editor control benefits from the new features introduced in version 2024: animated GIFs, scan, etc.
Simplified language selection UI
WDMSG 2024 features a much more intuitive language selection UI: the reference language is clearly indicated, the list of languages to be extracted is multi-selectable with a simple right-click, etc.
Partial branch deferral :
In version 2024, the branch deferral function enables partial deferral: it is now possible to cherry-pick one of the reintegrations carried out in a branch. It is no longer necessary to carry over the entire branch.
Accelerating branch creation :
Version 2024 boosts branch creation speed, especially when using a remote SCM. The gain can reach a factor of X5.
Numerous optimizations in current SCM operations
All SCM operations are faster in version 2024: reintegration time, file deletion, item recovery, administrator launch, etc.
Freer branch creation
In version 2024, it is now possible to create branches on a directory that does not contain any projects. Very useful for a directory containing resources: images, procedure collections, components, etc. This makes it easier to share resources between several projects.
Directory sharing between several projects
In version 2024, it becomes possible to share an entire directory.
Automatic generation of reintegration comments in the SCM (IA)
When reintegrating into the SCM, each developer had to enter a description of the changes made to all the reintegrated elements.. In version 2024, the version 2024 Code Editor can do this for you.. See new feature 135. Note: this feature requires an OpenAI account.
SCM: miscellaneous
- Base compaction option after purging.
Automatic correction of typing errors
Well, no The code editor fixes it for you. The input wizard offers logical options even in the event of a typing error.
An interactive info bubble
A new bubble appears in the 2024 version. This bubble appears when hovering over variables and procedures The bubble displays the type of element hovered over and other useful information, allowing you to reach the declaration of the element hovered over or to view the element's cross -references (all uses).
Custom coloring of a variable, procedure or method
This custom coloring allows you to hightlight: - calls to a specific procedure,
- procedure output parameters,
- a variable to be handled with care,
- an overridden function to restore its original color.
Custom coloring is performed using either RGB components or color constants in the code editor.
Hashtags :
In version 2024, it is now possible to insert meta-data into code hashtags: name of developer, date, etc. This enables even more personalized searches and filters. When a search is performed, a window opens with all the metadata used in the project. All you have to do is select the elements and the type of search.
Multilingual channel wizard
A new wizard displays and manages all the channels used in the project: single, multiline, multilingual. Numerous filters are available. This allows you, for example, to view all non-multilingual strings in a multilingual project, and check whether each string needs to be translated or not. In this case, a selection can be made multilingual with a simple right-click.
Errors displayed directly in the code
In version 2024, errors and warnings can be displayed directly in the code. A red banner marks the line, and the error label is displayed directly in the line concerned. No need to hover over the error to see its details, or spend time nodding up and down the screen to consult the error pane! This presentation is appreciated by many developers.
Doxygen
Creating a procedure automatically generates a comment: function description, parameters, return values, etc. In version 2024, this comment can be generated using Doxygen syntax. For more details, see:
Miscellaneous
- The search window also features a vertical layout.
Performance database schema between 2 breakpoints
In version 2024, the debugger can analyze performance between 2 "Performance breakpoints".
Miscellaneous
- The debugger reports access to a JSON member that does not exist.
An integrated DevOps environment
WINDEV, WEBDEV and WINDEV Mobile version 2024 form an increasingly cohesive DevOps environment. You have all the functionalities you need to implement a DevOps approach: no more fragmentation due to heterogeneous tools. You have all the built-in tools you need to manage DevOps methodology: lifecycle management, sprints, testing, continuous integration, deployment, continuous delivery, operations, customer feedback, etc.
Line and letter spacing management
In version 2024, the Report Editor lets you specify a value for: - the line spacing,
- lettering,
of each printed field. This allows the presentation to be adapted to your wishes and to the new standards.
Report editor: miscellaneous
- Improved search in print preview.
Support for ONNX format templates
WLanguage's pattern detection AI uses templates. In addition to the models supplied as standard, external models can be used. The ONNX model format is now supported in addition to Caffe, Tensorflow and Darknet.
Null management
In version 2024, the WLanguage supports "Null" values on all types. This makes it possible to manipulate Nullable database fields (columns) more directly. The variables become "nullable". All WLanguage types become Nullable: integers, strings, money, dates, times, etc. A variable that can be Nullable must be declared with the extension attribute <Nullable> or its shortcut: a question mark added after the type. For example int? Conditions on null variables meet expected standards. Historical Null management retained for compatibility. New operators ??, ??* and ?. to manage behavior in the event of a null value. To avoid unwanted implicit conversions, the compiler generates an error when a Nullable variable is assigned to a non-Nullable variable. Some examples of WLanguage code:
n is int<nullable>
n is int?
another value IF Null
v is int = n?? 0
v is int = n?? *
s is string? = "Hello world!"
Binding & variable Null
Nullable variables make it easier to create a field or memory binding between a database and a class. Null variable management is now standardized.
Create your own WLangage types :
Example: your application handles prices: price of a material, a commodity, a quantity, etc. An example is the price of powder, defined in grams, with 4 decimal places. Rather than defining the corresponding variable in type numeric and having to specify the number of digits after the decimal point each time, in version 2024 it becomes possible to create a type PrixPoudre and then to define variables in the project using this type PrixPoudre. No risk of error in the number of decimal places. The code is automatically clearer and more standardized. Compilation attributes defined on the type are preserved on all variables of this type. The types created are then used as native language types. In our example, we can create an array at PowderPrice. PrixPoudre is type: numeric (5,4)
PROCEDURE CalculCoutColorant( PoidsAProduire is real, CouleurRAL is int ): PowderPrice
Another, more advanced example is the possibility of defining a Callback type, which specifies the number and type of parameters, and the return value expected by the callback ("delegate"). Callbacks will therefore necessarily have the expected number of parameters, and the expected return value.
Immutability
A variable with the Immutable attribute can only be assigned once, and never modified again. Unlike a constant, this variable can be conditionally initialized in the code. Immutability is also available for procedure parameters.
Conditional compilation: 2 evolutions
Conditional compilation upgraded to version 2024. You can write. <COMPILE SI CST_MODE_APPLI EXISTE> This makes it possible, for example, to compile different code in a. It is now possible to enclose an entire procedure with a <COMPILE IF> statement This allows the procedure to be completely excluded from compilation.
Dropbox, GoogleDrive and OneDrive access functions
3 new WLanguage types have been added: gglDrive, oDrive, dpDrive. The new family of WLanguage functions Drivexxx can be used to perform the following operations on files stored on drives. Here are some of the available features: - list the contents of a folder,
- download,
- upload,
- copy,
- delete,
- rename,
- move,
- etc.
Practical: the code is generic and does not depend on the service used. Standard syntax. MyDrive is Drive
DriveUploadFile(MyDrive, "C:\DocumentsATraiter\CR-489-884.pdf", "/My documents/2023/")
Prefix syntax: MyDrive is Drive
MyDrive.UploadFile("C:\DocsToProcess\CR-489-884.pdf", "/My documents/2023/")
Natural path and URL construction
In version 2024, you can build strings containing file paths by separating elements with “+” and “/” characters. Example: FilePath is string = Drive/Folder/Queue
FilePath is string = Folder/Queue
Uncompress RAR5
The standard RAR5 file decompression format is now available.
Associative arrays :
Assembly functions are now available on associative arrays:
The field type is specified in field type variables
In version 2024, field types can be typed as follows. The code becomes clearer, and the wizard is more precise. Automatic safety, no possibility of changing incompatible parameters. Example:
Add your own functions to controls
In version 2024, you can define your own functions for a specific type of control using prefix syntax. Example:
Your own functions will appear in the code completion suggestions.
Overriding functions on fields :
Overriding functions acting on fields is now available in both classic and prefix syntax.
Administrative ID verification :
The syntactic validity of a tax identification number can be checked using the new WLanguage function VerifyTaxNumber prefixed with the country concerned. For example: France.CheckTaxNumberTo date, the following country identifiers are managed: - France,
- Canada,
- Switzerland,
- Belgium,
- United States,
- Spain,
- Italy,
- Germany,
- Brazil.
What type of processor is used in the PC?
Some very specific processes (drivers, etc.) require knowledge of the processor type in order to perform low-level processing. The new constant SysProcesseurNatif identifies the type of processor used on the execution machine: x64, ARM, etc.
oAuth
2 useful new features for oAuth appear in version 2024: - PKCE authentication protocol is managed.
- an oAuth token can be generated from JSON content.
JWT identification protocol
JWT is a standard that enables safe and secure communication between two parties. The JWT (Json Web Token) identification protocol is natively supported by WLanguage version 2024.
DNS query
In version 2024, DNS queries are made easy thanks to the new DNSQuery function: - IP associated with a domain name,
- sub-domains associated with a domain,
- information about "records": A, AAAA, CNAME, PT, R, etc.
- search on a particular DNS or on the first one found.
A procedure that expects several parameters? use an array, it's automatic
In version 2024, the parameters of a procedure that expects different parameters (and not an array), can be contained in an array that will be parsed by the WLanguage function ArrayToParameters to extract these parameters. Calling up the procedure is much simpler.
Additional chain delimiter: `.
Is there a grave accent at the end of the title above? That's normal, that's the extra delimiter! In addition to the historical string delimiter, " (double quote), the "grave accent" delimiter has been added. The purpose of this separator is to avoid double quotes, and to ensure that [% works regardless of the project options.. sCodeHtml is string = `<p style="color:red;">`
%, Modulo
The Modulo operator now accepts the % operator as a synonym.
And" operator, "or" operator, ask for the switchboard!
The operators AND and OR can abandon their historical operation, to perform evaluations in an optimized way: when the first element is decisive, the second element is not evaluated. This new behavior is available through the compiler options. All newly created projects have this option by default.
New type :
A new type for formatting numbers has been introduced: NumericFormat. Properties of this type can be used to specify the number of digits after the decimal point, separators, etc. A code wizard makes the task even easier. Code sample: PriceFormat is NumericFormat
PriceFormat.DigitsAfterPoint = 2
PriceFormat.Prefix = "$"
PriceFormat.DecimalSeparator = "."
PriceFormat.DecimalSeparator = ","
PriceFormat.Sign = nfsMinusIfNegative
Price is string
Price = NumericToString(16945201.986, PriceFormat)
Code coloring in your UI
WLanguage code in plain text? Would you like to display it in a window or on a page of your application? Ask for syntax coloring! The new Type WLanguage WLanguageCodeFormatting is your friend. Are supported: - code indentation,
- translation,
- the right break,
- theme (light or dark),
- etc.
Syntax highlighting can be performed in HTML. A customized CSS style sheet is generated, making it reusable.
Miscellaneous
- New syntax for fReadLine to callback.
- Push notification functions are available in prefix syntax.
pcsCloud.net: your development cloud, your deployment cloud
Applications: - WEBDEV Application Server to host WEBDEV websites,
- Cluster of WEBDEV Application Servers,
- WEBDEV Application Server to provide web services,
- SaaS platform,
- Your own Private Store for your WINDEV applications and WINDEV Mobile apps,
Telemetry: Data: - HFSQL server to access databases,
- HFSQL Spare, to set up HFSQL backup servers,
- Universal data replication server,
- Mobile User Groupware,
Development environment Project Virtualization Platform: private SCM, Control Centers, Dictionaries. GDSDrive and HFSQLDrive are specialized clouds: - for SCM data sharing,
- for hosting HFSQL databases.
Favorite fields: a practical new feature
It often happens that the developer recreates the same fields, with the same style and the same code (or more or less) throughout a project, without wishing to use a template or Internal Window. For example, the "OK" and "Cancel" buttons. Most developers tend to copy an existing control from another page or window, paste it and then edit it. Favorite controls make this whole process much simpler. Version 2024 of the environment allows you to define a field or set of fields as a "Favorite field".. Creating a Favourite Field is as easy as right-clicking.
This Favourite field will then be automatically proposed in the field selection UI, at the top of the list. A favorite field stores information about: - size,
- style,
- code.Once the Favourite field has been positioned in the window or page, you can freely modify its parameters. No need to override its features.
When a Favourite field is created, it automatically appears at the top of the list of fields of the same type. It is possible to choose in which list(s) a favorite field appears, which is useful for a Favorite field composed of several fields.
A favorite field can be a group of fields
A Favorite control can be composed of multiple controls. For example, an Edit control with an associated filter button.
Share favorite fields
Favorite controls within a project are accessible to all project contributors. You can share Favorite controls between different projects. You can also copy Favorite controls from one project to another.
How to use a favorite field
A new button in the ribbon opens a list with all your Favorite controls, classified according to the tags defined when they were created. Favourite fields are also included in the list of fields by type, according to the choice made at creation. Favorite controls appear at the top of the list. Then, you can simply drag and drop them onto the current window or page.
Large web service calls :
In some cases, the response time for web services created with WINDEV or WEBDEV of significant size (several hundred classes) could be high. In version 2024, calls to this type of web service are drastically optimized: response time is almost immediate, as with other web services, and CPU consumption is greatly reduced.
NTLM and DIGEST authentication
NTLM and DIGEST are secure authentication methods for Web servers. Some REST Webservices may require NTLM or DIGEST authentication. In version 2024, these types of authentication are natively integrated. Please note, however, that NTLM is no longer recommended.
Miscellaneous
- The new httpTraceInfo constant for the httpRequest type allows you to get the cURL and OpenSSL log files.
XML signature :
Version 2024 allows XML files to be signed using "elliptic curve" signatures. the following formats are supported: - RSA SHA384,
- RSA SHA512,
- ECDSA SHA224,
- ECDSA SHA256,
- ECDSA SHA384,
- ECDSA SHA512.
Note: ECDSA is the public-key electronic signature algorithm used by Bitcoin. For more details, see the characteristics of the xmlSignature variable type.
New XMLVerifySignature function
Litter (cat?) attributes
New attributes available for class members. The <get>, <protected get>, etc. attributes are used to determine if members are accessible in read, write or read/write mode; as well as their scope.
Extension method on classes
In version 2024, you can now add your own methods to shared classes, without having to modify the class code. Other projects using this class are therefore not affected by the modifications.
Immutable classes
An immutable class can be considered as a kind of constant. All class members become immutable: once assigned (in the constructor), they can no longer be modified.
Binding :
In version 2024, the compiler detects and reports a mapping that links a member to a topic that has differences: - different sizes,
- ANSI/Unicode string,
- different type,
- etc.
This type of error can occur when modifying a data description (database schema).
Python
Version 2024 now allows you to manage objects passed as parameters or retrieved by a Python procedure.
C#
Entering source code in C# no longer requires the presence of a C# assembly in the project.
AI in the code editor
Version 2024 of the Code Editor explains existing code, and generates procedure documentation. Simply click on an icon to generate the explanatory text! The editor encapsulates the use of GPT for this purpose.
Auto-generated WLanguage code explanation
Are you copying code from another developer? Very old code? Don't understand what the code does? Ask the Code Editor! The Code Editor provides a clear, concise explanation of natural language processing. Simply select the code you want to explain.
Auto-generated procedure documentation
The Code Editor lets you generate the procedure header comment from existing procedure code: - description of each parameter,
- return value of the procedure,
- description of procedure processing.
The comment is generated in historical or Doxygen format. This comment is also used by the code editor to provide context-sensitive assistance when typing the calling code.
Automatic generation of the reintegration comment in the SCM
When re-entering the SCM, it is best practice to enter a description of the changes made.. Version 2024's Code Editor can also generate this description for the developer.
Language of the HFSQL server
The HFSQL server can display messages visible to the end user. In version 2024, these messages are displayed if possible in the customer's language: French, English, Spanish.
HFSQL server replication
To handle special cases of physical corruption of replication files (.HYL), the new WLanguage function HRSIgnoreError and an option in the HFSQL Control Center can be used to ignore the corrupted part of the file. This option, to be used with discretion, may prove useful in the operating phase.
HFSQL Docker
The Docker image of the HFSQL server is now available in Debian 12, as a multilingual version.
Miscellaneous
The HQueryExecuted function lets you know if a request has already been executed. - The automatic modification of tables ("modif auto") allows you to change the type of a field from Password to String (passwords are not retrieved),
- Server backup: configurable default directory,
- You can retrieve the list of monitored files using the WLanguage function HListWatchedFiles.
- Stored procedure: arrays can now be passed as parameters.
Complex query :
The execution speed of complex queries is increased in version 2024.
Order Returning
The SQL command Returning, which returns values on insert, modify or delete requests, is supported in version 2024. Useful, for example, for retrieving automatic identifiers for lines inserted by the query.
Table renaming with "Alter Table Rename"
Tables can now be renamed using the Alter Table Rename command.
SubDate, Date_Sub, ADDDATE, etc.
For compatibility with certain databases, the commands Date_Sub, ADDDATE, SubDate and Date_ADD are now supported in version 2024.
Faster IsNull order
The IsNull command is faster in version 2024.
27 new SQL functions
27 new SQL functions appear in version 2024. | | | VALUE | Replace a value with another constant value. | | LOREM_IPSUM | Replaces a string with a Lorem ipsum of the desired size. | | NOISE | Returns a value between -x% and +x% of the original value. | | PARTIAL | Partially replaces characters in a string. | | PROCEDURE | Allows you to use a procedure to anonymize data. | | RANDOM_DATE_BETWEEN | To obtain a random value within a date range. | | RANDOM_INT_BETWEEN | Allows you to obtain a random value within an integer interval. | SQL functions dedicated to spatial data. | | | ST_AERA | Calculates the area occupied by a geometry. | | ST_CONTAINS | Finds out whether a geometry (in 2 dimensions or geographic coordinates) is contained within another geometry (in 2 dimensions or geographic coordinates), i.e. whether all points of the geometry to be compared are contained within the reference geometry without exception. | | ST_COVEREDBY | Finds out whether ALL the points contained in the first geometry are contained in the second geometry, or whether at least one of the points in the first geometry is not part of the second geometry. | | ST_COVERS | Finds out whether ALL points in the second geometry are contained in the first geometry, or whether at least one point in the second geometry is not part of the first geometry. | | ST_CROSSES | Determines whether one of the two geometries has some of its interior points in common with the second geometry (and not necessarily all of its points). The intersection represented by these points in common must meet two conditions:- the dimension of this intersection must be smaller than the dimensions of the geometries being compared.
- this intersection must not be equal to one of the geometries being compared.
| | ST_DIFFERENCE | Returns a geometry corresponding to the difference between the two geometries passed as parameters. | | ST_DISTANCE | Calculates the distance between 2 geometries (in 2 dimensions or geographic coordinates). This distance is expressed in the unit of measurement specified when defining the geometry. | | ST_EQUALS | Finds out whether 2 geometries (in 2 dimensions or geographic coordinates) are identical, i.e. whether they have the same dimension and whether the points defined occupy the same area. | | ST_GEOMFROMTEXT | Converts geometry described as a string into 2-dimensional geometry. | | ST_INTERSECTION | Returns a geometry representing the entire area included in the two input shapes. | | ST_INTERSECTS | Finds out whether 2 geometries (in 2 dimensions or geographic coordinates) have points in common. This command calculates the common area (intersection) between the two geometries. | | ST_LENGTH | Returns the length in meters of a linear geometry. A linear geometry (or linestring) is a geometry composed of several connected points. The geometry must be composed of at least two points. The set of points must not form a closed geometry, i.e. a polygon.
The length is obtained from the sum of each line making up the linestring. | | ST_MAKEPOLYGON | Returns a polygon whose outer ring is the first geometry entered, optionally with holes. | | ST_OVERLAPS | Determines whether the dimension of the geometry resulting from the intersection of the 2 geometries is equal to the dimension of the compared geometries, but different from each of the compared geometries. | | ST_PERIMETER | Returns the perimeter in meters of the specified geometry. The perimeter is calculated by adding each segment that makes up the boundary of the geometry. | | ST_SIMPLIFY | Returns a 'simplified' geometry of the specified geometry. The new geometry is calculated using the Ramer-Douglas-Peucker algorithm, with the specified tolerance. | | ST_SYMDIFFERENCE | Returns a geometry corresponding to the union of 2 geometries passed in parameter, from which are subtracted the shapes corresponding to the points common to the 2 geometries. | | ST_TOUCHES | Determines whether two geometries have at least one of the external points describing their respective contours in common. | | ST_UNION | Returns a geometry corresponding to the union between two geometries. This geometry corresponds to the fusion of the 2 geometries. | | ST_WITHIN | Finds out whether the first geometry lies within the second geometry, i.e. whether ALL the points making up the first geometry are contained within the second geometry. |
Your HFSQL databases in the Cloud in 3 clicks
HFSQLDrive lets you easily and immediately host your databases (your tables) in the Cloud. A mobile app that stores data in the cloud is also at your disposal. Attractive flat rate subscription. Get it now!
Boosted synchronization speed
A cluster is synchronized in real time, with the aim of keeping every node up to date, so it's resistant to failures and Windows Updates! A cluster also optimizes reading performance. In version 2024, HFSQL Cluster significantly improves its synchronization performance when a node is restarted.
Miscellaneous
- The WLanguage function hCopyFile is available in cluster mode.
- Secure encryption support.
Note
Don't confuse anonymization with pseudonymization. Pseudonymization is a reversible operation that does not provide 100% protection for the information processed. Anonymization is not reversible, and therefore cannot be used to retrieve original data.
Why anonymize?
Data masking helps you prevent sensitive data exposure by hiding it from certain users. Data masking also makes it possible to secure information and prevent it from spreading. This technique helps you meet GDPR requirements. Note: anonymization should not be confused with pseudonymization, see above.
What can be anonymized?
Anonymization is easily performed, in a very detailed way, by heading (by column). Text (string and text memo), Integer, Real and Date field types accept anonymization.
The 5 rules of anonymization
Each item can be anonymized according to 5 different rules: - noise: returns the original value with a variable deviation.
- fixed value: always returns the same value.
- random value: returns a random value.
- partial replacement: replaces only a specified part of the field.
- customized: the value is returned by your code, present in a stored procedure.
Examples of each method on a text and on a number: Dupont >>> not applicable 1230 >> 1385 Dupont >>> Name 1230 >> 1111 Dupont >>> efvb458/ 1230 >> 743 Dupont >>> DxxxxT 1230 >> 1xx0 Dupont >>> 2335874 1230 >> 6
How to mask data?
To anonymize fields in a database table, simply use the Database schema Editor (Database schema). Simply specify the anonymization rule in the 7 tabs of the field definition.
It is also possible to anonymize a database using the new SQL functions: ADDMasked, noise, value, random_XXX_between, partial, procedure. Note that when a table (table) contains at least one anonymized field, the table must be encrypted.
Who can read?
For security reasons, by default, any access to an anonymized section of a table returns the anonymized content. It is not possible to read the original value, either in the HFSQL Control Center or by programming. To authorize reading of the original content, you must have "de-anonymize a field" (UNMASK) rights to the table. In this case, the server returns the original data.
Transparent programming
In all cases, the initial value of an anonymized field is retained by the server, which is why the table (the table) must be encrypted. WLanguage functions hModify, etc. have no effect on an anonymized field: they never modify the value of an anonymized field. No risk of overwriting the initial value. It is not possible to search, sort or filter anonymized items without the appropriate rights.
Maximum security
All anonymized field use cases are taken into account: stored calculated fields, materialized views, backups, table exports, etc... It is not possible to launch a backup of the table without "de-anonymize a field" rights.
Note
HFSQL version 2024 supports geometric and geographic data. You can store this data in HFSQL databases and perform SQL queries such as: "list of parcels over which a given road passes" or "list of schools within a 1 km radius".
What is spatial data?
Spatial data can be used to describe: - position,
- geometry,
- extension.
objects in space (in the sense of "terrestrial space"). Spatial data can be used to store points of interest (feeders, restaurants, hotels), "route" data such as roads, rivers, lakes (as in Connemara) or surfaces such as properties (land registry), forests, mountains, administrative zones, etc. This type of data is necessary for the creation of a GIS. Spatial data is geographic and geometric information (see below).
How to describe spatial data :
Two coordinate systems are used, depending on the application: - geometric coordinates (2D, geometry),
- geographic coordinates (latitude/longitude, GPS, geography).
Geometric 2D coordinates can be used over short distances (up to 50 km). Since the earth is round (yes, it is), it is necessary to use the geographic coordinate system to take into account the curvature of the planet for greater distances. These spatial data can be manipulated using new WLanguage types. For the Geometry system (2D), you benefit from the new types Point2D, Polygon2D, Linestring2D, etc. The new MultiXXX type can store a set of previous types. These types are also available for the geographic system: PointGeo, PolygonGeo, LinestringGeo, etc.
How do I retrieve spatial data?
There are several ways to retrieve spatial data. Data can: - be entered directly by the developer,
- be the result of user input (e.g. entering contact details),
- be imported from hardware (GPS tracker),
- from GPX files,
- be downloaded from files published online (in France, notably data.gouv.fr and apicarto.ign.fr).
A simple smartphone can provide GPS (i.e. geographic) positions and tracks. For France, for example, the apicarto.ign.fr website provides useful data: - register,
- map of wine appellations,
- natural spaces and protected areas,
- urban plans,
- defense and security zones,
- geographical contours of the académies,
- and many others.
New WLanguage functions for serializing and deserializing new types. Numerous formats are supported: JSON, XML, CSV, text, etc.
Calculation functions for spatial data
Specific operations can be performed on spatial data: calculation of plot areas, road lengths, perimeters, stored shapes, etc. It is also possible to perform operations on several data sets, such as calculating distances, finding nearest neighbors, calculating the union or intersection of several geographic zones, etc. The new WLanguage function family geometry is available for this purpose (see new feature 372, sorted alphabetically).
How do you store spatial data?
Spatial index for faster queries
To optimize performance on spatial queries, HFSQL has introduced spatial indexes. Spatial indexes enable very large volumes of data to be processed rapidly, an essential feature given the size of the data
of most spatial data sets. To describe a spatial index, just click on it in the Database Schema Editor (Database schema).
Queries on spatial data
You can create a query like: "find the 5 nearest charging stations to my location", or "count the number of plots of land in town XYZ within 800 meters of a school, with a surface area of at least 400m²". Queries are written in SQL, or generated by the Query Editor. 20 new SQL commands for setting desired conditions: distance, area, intersection, etc.
Adding tables
HFSQL Spare is a near real-time server backup solution. In version 2024, adding a table to a Spare database is automatic: simply add the table to the source database. No further handling is required.
Faster display of table contents
table content display optimized in Control Center version 2024 :. For example, memos are not systematically loaded and viewed.
Line display (recording) in form mode
The new type of record display (line) in File mode makes viewing and editing the contents of this record much more user-friendly.
Miscellaneous
- The double-click no longer unwinds the line,
- Adapt column widths to content,
- Multiline display with choice of maximum number of lines,
- Merge Content and Search tabs,
- SQL order management Returning.
Note
Numerous Native Connectors are available for third-party databases: Oracle, SQL Server, AS/400, DB2, MySQL, PostgreSQL, SQLite, xBase, MariaDB, Informix, Progress, Sybase, etc. These Native Connectors facilitate programming (binding etc). They are evolving into the 2024 version.
Native connector: non-blocking stored procedures
In multithreaded programming, execution of a stored procedure immediately gives control back to the other threads accessing the native connector. Application speed is boosted.
Native connector :
In version 2024, native connectors handle all aspects of multithreaded programming. A query on a database using a native connector executed in a thread no longer blocks other threads simultaneously accessing the database. Speed is boosted.
Image docker :
In version 2024, native SQL Server and Oracle connectors can be contained in a Docker image: very useful for WEBDEV Docker images (see new feature 933). Reminder: a Native Connector license is required for each Docker image.
Miscellaneous
- The SQL command Returning is recognized in Oracle, MariaDB and PostgreSQL Native Connectors.
Select queries *
Queries like SELECT* are now allowed from within the Query Editor.
Miscellaneous
- Generation of WLanguage Structures corresponding to the result of a query,
- Sorting parameters can be set in Union queries.
MQTT 5 support
MQTT is a messaging (data transfer) protocol adapted to machines. The new version 5 of MQTT is supported in version 2024.
MQTT :
Certificate errors can now be ignored.
MODBUS and WEBDEV
MODBUS functions are now also available in WEBDEV.
Note
The European Union has chosen to generalize electronic invoicing.
Evolution of the exchange format
Electronic invoicing becomes mandatory in many countries, including France. The exchange format is generally based on JSON structures. Version 2024 boosts support for JSON format, to enable secure transfers.
My health space
In France, the "Dossier Médical Partagé" (DMP - shared medical file) is being used more and more. The Dossier is associated with the management of the policyholder's Carte Vitale. The Carte Vitale gradually goes paperless. WINDEV 2024 offers functions for reading the QR Code associated with dematerialization.
Bitcoin blockchain access functions
In version 2024, the new BitcoinXXX family of functions provides information on the Bitcoin blockchain: blockchain size, hrate, last block mining date, etc.
Note
The Telemetry concept enables you to collect and aggregate nominative or anonymous information on the actual use made of your applications: selected menu choices, functionalities used, processing and request times, any bugs, hours of use, and so on. Telemetry also allows you to determine the hardware configuration and OS version of end users. PCSCLOUD.NET offers immediate installation of a telemetry server.
Administrator
Version 2024 features an intuitive administration page that brings together all maintenance and administration operations: - change password,
- change of database connection,
- deleting an application,
- etc.
Create an automation test of an application without its source code
WINDEV's standard test automation is a highly appreciated tool. In the 2024 version, its use becomes even more universal. No need to manipulate the source project of the application to be tested. The automation test(s) can be generated using only the. Scripts for automation tests are generated and can be used independently.
Test automation launched via command line
In version 2024, it is now possible to script the launch of automatic tests.
Certificate expiry alert
In version 2024, the Robot detects TLS certificate expiry dates, and triggers an alert if necessary.
HTTP request monitoring
HTTP request monitoring now lets you add parameters to the HTTP headers of these test requests.
Redis
The new RedisDisconnect function allows you to disconnect from the base without having to terminate the process.
This page is also available for…
|
|
|