PC SOFT

ONLINE HELP
FOR WINDEV, WEBDEV AND WINDEV MOBILE

Home | Sign in | English US
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Others
Stored procedures
Layout control: a control becomes invisible? The other controls move accordingly
In a window, a developer may decide to make a useless control invisible by programming.
This leaves a "hole" in the interface.
To improve the window layout, the controls found below must be moved.
Before version 23, the controls had to be repositioned by programming.
With version 23 and the new Layout control, this repositioning is automatically performed at run time: the controls found below the invisible control move up.
The Layout control (also called Stack panel) is a "container" control: it contains other controls.
Depending on the parameters of Layout control, the controls found in the Layout control can move vertically or horizontally.
The Layout control is very useful for the anchors because anchors do not fill the holes!
The Layout control also automatically manage the move of controls toward the bottom when a control is enlarged (see new feature below).
The Layout control is available in WINDEV, WEBDEV and WINDEV Mobile.
A window for typing a generic address. This window is used to type the state or the province (USA, Canada, ...).
A window for typing a generic address. This window is used to type the state or the province (USA, Canada, ...).
The same window for an European country, without the State/Province control. The control was made invisible by the application and the controls found below are automatically moved up. There is no hole in the interface.
The same window for an European country, without the State/Province control. The control was made invisible by the application and the controls found below are automatically moved up. There is no hole in the interface.
See The Layout control for more details.
Layout control: a multiline control is enlarged? The other controls move accordingly
A control can be enlarged according to the data sent by the application: multiline control, HTML content, ... or adding options into a radio button.
With version 23 and the new Layout control, the controls found below the enlarged control automatically move down.
See The Layout control for more details.
Layout control: horizontal or vertical?
A Layout control can be vertical of horizontal.
In a vertical Layout control, the controls move up or down if necessary.
In a horizontal Layout control, the controls move to the left or to the right if necessary.
Several Layout controls can be found in the same window.
By nesting the horizontal and vertical Layout controls, you have the ability to create very complex behaviors: automatic repositioning a little bit like sliding puzzles.
See The Layout control for more details.
Layout control: the operating mode
A Layout control contains "cells" created by the developer.
Each cell contains one or more controls that can be visible or not.
In a Layout control, the cells can be aligned to right or left and to top or bottom.
In the 7 tabs, the default setting of cells. Everything can be modified by programming
In the 7 tabs, the default setting of cells. Everything can be modified by programming

See The Layout control for more details.
Layout control: margins
The new Layout control is used to define the margins between cells.
The values can be modified by programming with ..MarginInterCell.
See The Layout control for more details.
Layout control: managing languages written from right to left
Several languages are written from right to left: Arabic, Hebrew, Aramaic, Syriac, Farsi (Persian), Urdu, etc.
These languages also benefit from relevant automatic moves.
See The Layout control for more details.
Image editor: your end users can edit their images
The Image control is enhanced in version 23.
We can consider that it's a new control!
In version 21, the Image controls proposes an "Edit" mode directly available in your applications.
The Image controls in "Edit" mode allows the end user to modify the images found in your applications:
  • annotation of images,
  • resize operation,
  • merge of images,
  • rotation,
  • text typed on the image,
  • image print, ...
See The Image Editor control for more details.
Image control in edit mode: operating mode
In version 23, you can allow the end user to modify a displayed image.
The option will be accessible either via a popup menu "Edit the image" (right mouse click on the image), or via a button found in the window where the image is displayed, or by being positioned in edit mode when the window is opened.
The modification can be performed according to 2 modes:
  • "in-place": the tools (ribbon and edit panes) are positioned around the image, above the current window,
  • popup window: a new large window for editing images is opened.
Image control in edit mode: standard ribbon
In edit mode, a standard ribbon allows the end user to handle the images.
All the features of Image Editor control are proposed by the ribbon.
The ribbon can be customized by programming.
Image Editor control: operations performed by programming
An image proposed in a control in "Edit" mode can be handled by programming.
The image can be retrieved, saved in a memo item, saved on disk, a text can be written on the image (copyright, ...).
See The Image Editor control for more details.
PDF reader: view the PDFs in your applications directly
The new "PDF Reader" control is used to view a PDF document in your application, without having to use an external software.
No need to start an external reader.
You definitely know what the end user will see, as well as all the other users! The support to users is simplified.
The PDF reader can be included in a window of your application (like any other control) or the PDF reader can be opened in a new window (like any standard reader).
See The PDF Reader control for more details.
PDF Reader control: useful features
In version 23, the "PDF Reader" control proposes useful features to the end user via a user-friendly ribbon:
  • reading a page
  • browsing the document
  • zoom
  • print
  • copy
  • search
  • links
  • thumbnails
  • display on 2 pages, ...
See The PDF Reader control for more details.
PDF Reader control: programming
The PDF Reader control can be programmed.
You can for example find a text in the PDF document, position it on the screen and zoom it by programming.
You also have the ability to position on a given page and to define the zoom factor.
The ribbon of PDF Reader control can be customized.
See The PDF Reader control for more details.
PDF Reader control: advanced use
The PDF Reader control allows you to define custom behaviors.
For example, your application can load a document sent by a Webservice or read in a HFSQL database.
The print can contain a text added by the application, such as "Edited for Mister XXX on XX/XX/xxxx".
See The PDF Reader control for more details.
Spreadsheet control: a spreadsheet included in your application
A useful reminder: the Spreadsheet control allows you to propose a spreadsheet in your applications (in any window of your applications).
This spreadsheet is included in your applications: there is nothing to install, the end user does not have to exit from the application.
The Spreadsheet control supports the XLSX workbooks and worksheets.
Spreadsheet control: programming: position values, get values
Another useful reminder.
A spreadsheet is available to the end user for his current operations.
The spreadsheet is a control and it can be used like any other control! You can for example fill the content by programming (from a database, from an element found in an email, from window data, from a webservice, ...).
You can also be notified and retrieve the values modified by the end user.
You even have the ability to insert calculation formulas!
Spreadsheet control: a ribbon is being introduced
In version 23, the spreadsheet benefits from an interface via ribbon.
The former interface via toolbar is still available.
The ribbon can be entirely customized.
You can program the processes of your choice, add and/or remove options and interact with your application.
You can for example add an icon to automatically insert data coming from the application database: stock, price, description, ...
Spreadsheet control: managing images
In version 21, a worksheet found in a spreadsheet can include one or more images.
This is useful for example to insert the company logo when a worksheet is used to create an estimate.
Here, the company logo was included in the worksheet of Spreadsheet control
Here, the company logo was included in the worksheet of Spreadsheet control
Spreadsheet control: automatic sum in 1 click
In version 23, the automatic sum is proposed to the end user: the most probable range is automatically selected by the Spreadsheet control.
Common spreadsheet feature
Common spreadsheet feature
Spreadsheet control: Find/Replace
In version 23, the "Find/Replace" feature is available for the end users.
Spreadsheet control: sorting columns
In version 23, the columns can be sorted.
The sort is performed on the selected range or on the entire worksheet.
Spreadsheet control: automatic data formatting
In version 23, the selection of a rectangular area can receive an automatic formatting in order for the data to be presented in a sophisticated way: table, border, header...
Quickly create a table: choose a template
Quickly create a table: choose a template
Spreadsheet control: intuitive overview of functions
Typing a formula is simplified in version 23.
The functions are classified by family.
The last functions used are proposed at the top of the list.
Spreadsheet control: "Automatic line wrap" option
The "Line wrap" option is supported in version 23.
This option can be positioned by the end user via the ribbon or by programming with the new psheetAutomaticLineWrap constant.
Spreadsheet control: opening and saving worksheets
Opening and saving worksheets is automatically managed in version 23. In the earlier versions, the developer had to program the feature.
Spreadsheet control: inserting and deleting rows and columns
In version 23, inserting rows and columns is proposed in the ribbon.
The formulas are updated.
The deletion is also supported.
Spreadsheet control: inserting and deleting cells
In version 23, you have the ability to erase (without moving), to delete (by shifting the other contents) or to insert blocks of cells.
The formulas are updated.
Spreadsheet control: zoom
The zoom is proposed in version 23.
The zoom factor can be specified.
The zoom factor can also be automatically calculated in order for the current selection to be displayed full screen.
Spreadsheet control: gridlines
The gridlines can be visible or not, on the screen and/or during the print.
This allows you to create sophisticated presentations such as estimates.
Spreadsheet control: freezing the columns
Freezing the columns means that the headers or rows and/or columns must always be visible...
When the end user performs a browse, the data is always displayed, as if "frozen"...
Freezing the columns in version 23 is child's play.
Spreadsheet control: cell mask for the numbers
In version 23, you have the ability to select a cell mask in a single click.
Spreadsheet control: horizontal and vertical alignment of cell content
The cell content can be aligned horizontally and/or vertically.
In version 23, the content can be aligned vertically (top, center, bottom).
Spreadsheet control: opening an XLSX worksheet in the Spreadsheet control
In version 23, a worksheet can be opened according to several methods.
By programming: in this case, the worksheet is directly displayed.
The end user can open a worksheet:
  • from the ribbon,
  • by performing a Drag and Drop of XLSX file from the Windows explorer to the application control.
Spreadsheet control: slanted text
In version 23, a text can be slanted in its cell.
This feature is available from the ribbon and by programming.
Spreadsheet control: naming cells
In version 23, the end user can define and use cell names: the formulas are clearer!
Typing a formula by using cell names
Typing a formula by using cell names
Spreadsheet control: print
When the end user prints a worksheet, he now has the ability to define the margins and the orientation via the ribbon.
The overlay is supported.
Spreadsheet control: other new features
In version 23, the Spreadsheet control benefits from other useful new features:
  • erasing the content while storing (or not) the formatting,
  • erasing the formatting only,
  • Two new WLanguage functions are used to reposition the worksheet to a saved location (the location during the closing or on the estimate total for example),
  • ...
Word Processing control: fully matured control
In version 23, the Word Processing control has fully matured.
The features and the operating modes proposed by this control meet the requirements of end users.
The end user can access a word processing in your application
A useful reminder: via the Word Processing control, the end users can access a word processor for their common operations from the application directly.
Word Processing control: programming
Another useful reminder: the Word Processing control can be handled by programming like any other control.
You can fill its content by programming (data coming from a database, a Webservice, a window content, ...) and retrieve the data typed by the end user.
You also have the ability to handle the Word Processing "object" by programming.
The Word Processing control handles DOCX documents.
Word Processing control: bookmarks
In version 23, the bookmarks are supported by the Word Processing control.
Let's remind you that a bookmark is an invisible mark found in a document, used to position at a specific location.
For example, a bookmark is used to insert a text at a specific position according to the content of a sales proposal.
The bookmarks can be handled by programming.
The bookmark links are also supported.
Word Processing control: RTF import
The RTF documents can be opened by the Word Processing control.
The imported RTF document is changed into DOCX document.
This feature is used to easily retrieve the existing.
Word Processing control : floating text area
In version 23, the floating text areas appear in the Word Processing control.
The end user can create rectangular areas where he can type text, insert images, tables, ...: they have their own formatting.
The text areas can be positioned anywhere in the document.
The text areas can be moved and resized.
The wrapping around these text areas can be configured.
The text areas found in existing .DOCX documents are displayed and supported.
Here, the shipping address and the invoicing address have been typed in floating text areas
Here, the shipping address and the invoicing address have been typed in floating text areas
Word Processing control: support for shapes
In version 23, the Word Processing control can create and display preset shapes: square, rectangle, ellipse, star, cylinder...
The line thickness and the colors can be customized.
Word Processing control: "HTML text" edit mode
Which end user has no email to type?
The Word Processing control in version 23 proposes a new mode for typing emails (or a formatted text) in an application control.
The sophisticated input capabilities meet the HTML standard.
There is nothing to install: no ActiveX, no external library, ...
This newsletter in HTML format was typed in the Word Processing control
This newsletter in HTML format was typed in the Word Processing control
HTML: handling WLanguage functions
The text currently typed by the end user can be handled by programming. You can:
  • insert text,
  • replace text,
  • perform a search in a database,
  • save the text in the customer form,
  • ...
The generated HTML code can be retrieved.
HTML: text input for the mobile applications

The input of HTML text in version 23 is used to type formatted texts intended to be displayed on mobile devices (smartphones, tablets) such as newspaper articles, a knowledge database...
The documents will be interpreted on the mobile device.
The documents can be stored in a HFSQL database. A record found in the HFSQL data file can contain one or more HTML and/or DOCX documents.
This simplifies the indexing of articles.
See new feature 687.
The end user can create, modify and save documents without exiting from the application
Via the Spreadsheet control and the Word Processing control, the end users can benefit from efficient and powerful office tools in your applications.
The use is performed in the application windows or in a specific window opened by the application.
Integrated PDF reader
Similarly, integrating a PDF reader in your applications simplifies the common operations and it allows you to get a similar behavior on all computers without additional module: all end users are using the same reader, in the same version!
The end user automatically sees the linked records
In a browsing table, a new option is available in version 23.
It becomes possible to expand a row to see the records of other data files linked to the selected row.

RTF table column: evolutions
In version 23, the "Line wrap" option is available in the RTF columns.
Browsing table: automatic refresh
In version 23, you have the ability to specify that a browsing table (filled by binding) is refreshed (updated) whenever the data file is modified (addition, deletion, modification).
No programming is required.
The table displaying data will be immediately refreshed all over the world! (HFSQL Client/Server).
See new feature 201.
Margins
In version 23, you have the ability to specify the table margins:
  • top margin,
  • bottom margin,
  • left margin,
  • right margin.
This allows you to create tables with an outstanding style.

Two examples of margins implemented in the table cells
Two examples of margins implemented in the table cells
New event: during a "contains" search
In version 23, a new programming event is used to program processes when the end user performs a "contains" search (funnel icon).
For example, you have the ability to display additional details about the sought element.
Table control: various evolutions
  • Positioning a table row in the visible part of the table. The new taVisible constant for TablePosition makes a table row visible in a smart way:
    • if the row is already visible, nothing moves;
    • if the row is not visible, the table automatically scrolls to make the row visible.
  • A table without selection includes a magnifier on the headers.
  • The tables with title-headers include a magnifier on the headers
  • For the tables in "Read-only" mode, the unchecked check boxes can no longer be viewed (to prevent the end user from trying to click the check box in order to check it).
A little reminder...
Let's remind you that the Scheduler, Organizer, Calendar and Gantt controls make you save time in your developments.
Programing a schedule would probably take several months for a single developer!
These controls are essential for the success of your projects!
Richer presentation by default
The creation of a Scheduler control is revolutionized.
The style matches the current trend while additional controls are automatically generated to improve the ergonomics.
These controls can be entirely configured.
Elegant borders
Several borders can be found in a Scheduler control, around each appointment for example.
For the visual aspect, these borders must be harmonious.
In version 23, these borders can be customized:
  • thickness (by side, the left side only for example),
  • style (solid line, dash, ...),
  • rounding,
  • color by side.
Horizontal alignment of X coordinates in the Scheduler control
Several alignment options are available in version 23.
It is now possible to align the days, the months and the hours horizontally.
Additional mask for the days
A new mask is being introduced in version 23: the name of month and the name of day in uppercase characters.
Positioning hours
In version 23, the positioning of hours is enhanced: for the separation line, ...
Different styles for week, day, number, ...
Before version 23, week, day and number had an identical style.
In version 23, a different style can be assigned to each element.
Separator of appointments on several days
When the appointments last several days, the separator between days becomes optional and it can be configured.
Simplified range selection
To create an appointment, the end user selects the appointment range.
This selection is simplified in version 23.
Your application becomes even more user friendly.
The selection with the mouse is smooth
The selection with the mouse is smooth
Calendar: new style
The default calendar style changes in version 23.
It is adapted to modern tastes.
The default calendar style is more modern
The default calendar style is more modern

Combo Box AAF: search
In version 23, the end user can perform a search in an expanded combo box.
Useful in huge combo boxes!
Looper control AAF: search
In version 23, the end user can perform a search in a looper.
Controls: various
  • You have the ability to configure the display duration of toast for restoring table filters.
  • You can ask to change the skin template of window at run time. In version 23, you can ask a window not to use this new skin template. This is very useful when we want to be sure that the window display will respect what was defined in the editor.
Gantt: Formatting the time scale
The Gantt control is an advanced control that represents a scheduling of inter-dependent tasks.
The time scale may differ according to the type and complexity of processes.
The Gantt control proposes a display with granularity by "month", "week", "day" or "hour".
In version 23, several additional settings are proposed for the time scale: horizontal alignment, masks, positioning, ...
The time scale can be configured
The time scale can be configured
New type of chart: 3D scatter chart
A "3D scatter" chart is used to view a set of points in a 3-dimension space.
This type of chart is used for example to represent a population according to its size, weight and age...
New type of chart: features of 3D scatter chart
The 3D Scatter chart is used to:
  • link the points or not,
  • define the type of point: cube, sphere, pyramid, ...
  • choose the colors,
  • project (or not) the points on the planes, during rollover, during click or permanently,
  • ...
The end user can make the chart turn around all axes with the mouse.
New type of chart: programming of 3D scatter chart
The new WLanguage grScatter3DXXX functions are used to fill and configure the 3D Scatter charts.
See Functions for chart management for more details.
All charts: new popup menu
In version 23, the popup menu of charts is enhanced!
First of all, with a more modern presentation.
Then, with a graphic and intuitive presentation.
The end users will love customizing their charts!
A clear popup menu
A clear popup menu
A smart "date-time" X coordinate
The automatic support for X coordinates in date-time (= a date + a time) is being introduced in version 23.
Nothing to program!
A zoom allows the end user to get more details.
You have the ability to customize the display masks of minutes, hours, days and months.
This type of automatic X coordinate operates on the Line and Bar charts.
The display and presentation of year, months and days is automatic
The display and presentation of year, months and days is automatic
Sampling
When an important amount of data is displayed in a chart, it may become illegible.
The "sampling" mode, enabled by default, is used to reduce the amount of data in order for the chart to be legible.
The algorithm selects the data to display in order to keep the data characteristics: means, maximum, ...
At the top: a chart without sub-sampling. At the bottom: the same chart with sub-sampling
At the top: a chart without sub-sampling. At the bottom: the same chart with sub-sampling

Chart: size and color of a specific point in a line...
This new feature is used to position one of more points at a specific location.
For example: an advertising schedule, the date-time for a mailshot, ...
Each shape represents an event. A click on the square can open a detailed window or a process
Each shape represents an event. A click on the square can open a detailed window or a process
Chart: displaying a specific content for a given point
In a chart, you may want to display explanations or legends on specific points.
For example, if a stock event occurs, to display the details of the share that generated the data: signature of huge contract, reorganization, ...
The version 23 allows you to display a custom content in the tooltip of a point, bar in a Bar chart or section in a Pie chart.
This precise point corresponds to the action described
This precise point corresponds to the action described
Chart: color of a specific bar in a Bar chart...
In version 23, you have the ability to change the color of one or more bars.
The purpose is to highlight a data.
One or more bars found in the Bar chart can be identified
One or more bars found in the Bar chart can be identified
Chart: 2D scatter: linked points per series
In version 23, you have the ability to link (or not) the points found in a 2D Scatter chart, for a specific series.
SCM Drive : evolutions
In version 23, SCM Drive, your SCM in the cloud from 2 Euros BT per month, proposes more new features.
For example, the database of Control Centers can be hosted by SCM Drive.
The features evolving permanently, don't forget to check the www.scmdrive.net site to discover the new features.
PCSCloud : evolutions
The offers proposed b PCSCloud, the private cloud for your developments, your applications, your Webservices and your data, also evolve permanently to meet your requirements. Check the www.pcscloud.net site for more details
Thesis
A new environment theme is proposed in version 23: a gray theme.
Therefore, three choices are available for the environment color: light, gray, dark.
Each member of your teams can chose the theme that suits him best!
Note: you have the ability to choose the "light" or "gray" theme and to switch the code editor to "dark" theme.
Naming planes
In version 23, you have the ability to name planes.
We advise you to use a name in programming rather than a subscript.
Corollary: inserting a plane in the middle of a set of existing planes does not longer require to find all the code lines that use a greater subscript fo modify them!
See The planes for more details.
Edit mode of planes
The management of planes becomes more user friendly in version 23.
An overall view of planes is proposed.
Viewing all the window planes in the editor
Viewing all the window planes in the editor
From this window, you have the ability to reorganize the planes by "Drag/Drop" or to insert new ones.
This window allows you to view all the existing planes at a glance. No need to scroll them one by one!
See The planes for more details.
Creating controls: viewing the size
In version 23, when dropping a control in the window, the size viewed corresponds to the real control size.
Depending on the location where the control is dropped, its default size adapts to the available space.
This action applies to "huge controls": table, image, tab, scheduler, looper, ...
7 tabs : choosing images from a single button
In the "7-tab" windows, the selection of images is now performed from a single button: the operations are simplified.
The image can be edited in the image editor in a single click.
Did you know it? The selection of images is used in more than 300 windows in the editors!
Diff of internal components
In version 23, you have the ability to compare 2 versions of an internal component:
  • extra or missing elements,
  • differences of controls,
  • differences of windows,
  • differences in a code,
  • ...
Provided exemples: work on a copy
When opening an example, the editor proposes to copy it into the local projects.
Therefore, any modification made to the example will not modify the initial example.
A very useful little feature!
Default harmonious colors in the skin templates
In version 23, a skin template includes series of colors that will be applied by default when creating the following types of controls:
  • scheduler,
  • organizer,
  • Gantt,
  • chart,
  • ...
The created windows look better.
The series of colors associated with a skin template are accessible in the editor and by programming.
These colors are also proposed for all the controls, in the window for color selection.
Multiple creation of tasks
In version 23, when creating a requirement, a new interface allows you to quickly create the tasks as well as the dependencies between these tasks.
The input is more structured.

Task List widget
In version 23, a new widget is being introduced in the dashboard of Project Monitoring Center.
It becomes easier to change the current task, to change the task order, to see new tasks as well as their progress...
The new
The new "Task List" widget
Merging forms
The author of a form receives notifications according to the form status: form corrected, form archived, form re-assigned...
When 2 forms are merged, the 2 original authors receive the notifications.
Propagated requirement renaming
In version 23, when renaming a requirement, all the relevant tasks are renamed as well if you want to.
Sequencing different formats
In version 23, you have the ability to sequence report with different formats.
Each report will be printed in its initial format, for example a report in A4 format and another one in A3 format, ...
The margins are supported.
Ellipsis on Static control
In a report, the length of a Static control passed by programming or by binding can exceed the length of home control.
In version 23, when the content of a Static control cannot be entirely displayed, three dots (...) are displayed at the end of control to indicate that some text was not printed.
Print preview
In version 23, previewing a report can be done without displaying the thumbnails on the left of the page. In the earlier versions, the thumbnails were displayed.
iPrintReport emails the report directly
The WLanguage iPrintReport function is used to email a report. All you have to do is specify the emailPDF constant as destination in iDestination.
In this case, the default mailer is opened on the computer, with the report in PDF format in attachment.
there is no need to use the print preview to email a report.
Report: AAF: taking a "snapshot". Smart screen shot
In version 23, in the print preview, the end user can perform a smart screen shot, a "snapshot": the displayed report content is captured, without the elements around: margins, thumbnails, ribbon, ...
This feature can be disabled by programming.
Magic selection wand
In version 23, a magic wand for area selection is being introduced.
The area selection becomes easier.
The tolerance factor can be specified.
Resizing with the mouse (CTRL + T)
In version 23, the selection can be resized with the mouse.
The resizing can be homothetic, free, ...
The
The "NEW" image is selected
The area is enlarged in homothetic way
The area is enlarged in homothetic way

Always clear images on mobile devices
The phones and the tablets have specific screen definitions.
For the same physical screen size, the definition can be low or very high.
In order for the quality of displayed images (and icons) to be as high as possible, the images should be supplied in several definitions and WINDEV Mobile will choose at run time the most appropriate image definition.
In version 23, the image editor proposes the images in the relevant resolutions.
The generated images can be modified.
The images will always be clear on all devices!
The image editor prints
In version 23, the image editor can print the edited images.
Zombie items (obsolete items)
During the life of an application, items live and die.
Before dying, they can become zombies.
Which means that the item still exists in the data description, that it can be used in the existing application code, but that the item must no longer be used when writing new code.
A zombie item takes space and therefore it should be deleted.
Zombie items are often found in the dead code.
In version 23, you have the ability to identify the zombie items in the analysis; they will be signaled when they are used.
See Zombie files and items for more details.
Automatic creation of controls
A query created in the query editor appears in the project explorer, with its output items.
The Drag/Drop of an item in a window automatically creates the control corresponding to this item.
The control type is automatically chosen according to the item type.
This control remains linked to the query by binding.
SCM Drive: remote disconnection from a computer
If you forgot to disconnect your computer before leaving the office and if you want to connect from another computer outside the office (home, customer office, ...), you have the ability to disconnect your computer from the window for connecting to SCM.
SCM: open a project branch
When opening an editor, the list of recent projects is displayed.
In version 23, the projects contained in branches are identified by the branch color and name.
A clearer presentation
A clearer presentation

SCM: searches in the history
In version 23, the SCM history allows you to perform searches in the history.
You can for example:
  • see the modifications performed by a developer between 2 dates,
  • find a specific comment,
  • find a label,
  • see the check-ins/check-outs linked to a task or to an incident,
  • ...
Checking the history is much faster.
These searches are interesting to perform audits on the development.
You will notice that a new action is available in the Continuous Integration to automate the extraction and the generation of a file containing results.
The search in the history is now very powerful
The search in the history is now very powerful

SCM: exporting the history
Any search performed in the SCM history can be exported for a later use or to be sent to someone else.
Several export formats are proposed: XLS, .fic, text, ...
SCM: you decide: manual resolution of conflicts
The developer chooses the version that will be stored
The developer chooses the version that will be stored
During multiple extractions or merges of branches, the "merge" is automatically performed if there is no conflict.
If a conflict is detected, an interface for conflict resolution appears.
This interface allows you to see what was automatically performed and solutions are proposed for each conflict.
The code is studied as well as the controls, the control properties, the analysis, ...
SCM: creating branches from local sources
In version 23, you have the ability to create branches from local sources. For example, from the copy of a project directory.
SCM: modifying version comments and labels afterward
The version comments and labels can be modified at any time from the history of versions.
SCM: migrating and creating branches without lock
In version 23, you have the ability to create several branches at the same time.
Similarly, migrating a project is not locking anymore.
Diff of action plans
In version 23, you have the ability to perform a diff between 2 action plans.
This allows you to check the modifications performed for example.
Command line of go: ability to define it
In version 23, a new action is used to define the custom or common command line used during the project GO.
Checking in several languages in a single operation
In version 23, WDMSG allows you to check back in all the project languages in a single operation.
SQL in WLanguage directly
SQL code directly in a button!
SQL code directly in a button!
This new feature that will please the developers working with SQL (see new features 151 to 154)
In version 23, you have the ability to type SQL code directly.
In version 23, the SQL code is recognized by the WLanguage code editor.
You benefit from the power of code editor:
  • syntactic coloring,
  • completion during input,
  • help in real time,
  • detection of syntax errors,
  • ...A new WLanguage type is being introduced: SQLQuery.
Typing SQL code in the editor benefits from all input helps. Here, the file items
Typing SQL code in the editor benefits from all input helps. Here, the file items
See SQL queries in WLanguage for more details.
SQL code: binding
In version 23, the binding is available on the SQL queries created in the WLanguage code.
This is used to define automatic links and to reduce the code size even more.
See SQL queries in WLanguage for more details.
88 functions become more legible. Timer(10s) is clearer than Timer(1000)!
Very useful evolution in version 23, it is now possible to specify the time unit in the WLanguage functions that expect a time in parameter.
Before version 23, each function expected a duration according to its own syntax: in milliseconds, in hundredths of a second, ...
Several errors could occurred while the code was not easy to read.
  • The code:
    Timer("refreshStats", 5 min)
    is clearer than
    Timer("refreshStats", 30000)
  • Similarly, the code:
    HTTPTimeOut(1s)
    is clearer than
    HTTPTimeOut(1000)
The former syntaxes are still recognized for backward compatibility.
The following time units are recognized:
  • day (d)
  • hour (h)
  • minute (min)
  • second (s)
  • millisecond (ms)
The following functions become more legible:
AnimationPlayAnimationPlayOnControlPropertyBTChangeVisibilityBTLEConnect
BTLEListDeviceBTListDeviceToolTipDelayCameraCapture
SensorDetectBeginningBumpsSensorDetectEndBumpsceConnectControlEnabled
ControlGrayedControlInvisibleControlVisibleChronoEnd
ChronoPauseChronoValueDDESendDDEExecute
DDEUnLinkDDELinkDDEWarmLinkDDERetrieve
DequeueDelayBeforeClosingPopDNSAddAddress
DurationToStringEmailSetTimeOutEmailGetTimeOutErrorWithTimeout
WinAnimationClosingWinAnimationOpeningWinAnimationNextfMemWait
FTPConnectGglAnalyticsAddTimingGPSDetectPositionGPSGetPosition
GPSFollowMovementHDisconnectClientHSendMessageToClientHListServer
HTTPTimeOutInfoWithTimeoutGaugeActivateLEDSwitchOn
MultimediaControlVisibleMultimediaDurationMultimediaPositionMultitask
MutexStartNetMACToIPPingActionPlanConfigure
PopupAnimateSemaphoreStartServiceWaitStatusServiceWait
EventWaitSNMPStartSessionSocketWaitForConnectionSocketConnect
SocketConnectBluetoothSocketConnectSSLSocketReadSound
sOpenSSHReadParallelTaskWaittapiCallDuring
ParallelTaskWaitAlltapiDialtapiLineDialtapiRecord
ThreadStopThreadWaitThreadWaitSignalThreadPause
TimerTimerSysUPNPFindDeviceUPNPListDevice
LockAppTimeoutVibrationTriggerVideoCaptureWiFiDetectAccessPoint
"New durations" properties
  • httpRequest.Timeout
  • httpRequest.ConnectionTimeOut
  • mqttSession.ConnectionTimeOut
  • Reminder.TimeOut
  • sshSession.ConnectionTimeOut
  • wsRequest.Timeout
  • MongoWriteConcern.Timeout
  • rssChannel.TimeToLive
"New durations" variables
  • HCS.Timeout
  • ScheduledTask.MaxRunTime
d is duration = 1h23min - yes to maximum legibility
In addition to the previous new feature, you also have the ability to specify very precise durations in a legible way.
1H23 is more legible than 4980000ms!!
IF n<23 000 000 000... It's a lot easier to read with space characters
In version 23, space characters can be used in the numbers.
The code becomes more readable with less errors.
The underscore is also accepted as separator.
1 000 000 or 1_000_000 are more legible than 1000000!
The numbers typed in hexadecimal also support this feature.
Example: 0x AB BC 12 A9 or 0x ABBC 12A9 are more legible than 0xABBC12A9
New control.function syntax (optional)
The version 23 allows you to use a new syntax prefixed by the control name.
For example, instead of:
ListAdd(Customers, NewCustomer)
you can write:
Customers.Add(NewCustomer)
In this syntax, the first element is the one onto which the function is applied.
In the code editor, when the developer types "Customers.", all the functions available for the Customers control are proposed.
Other examples:
// Adds the attachment
LIST_Attachments.Add("C:\Documents\MeetingReport.xlsx")
// Seeks in the list
nSubscript = LIST_Attachments.Seek("MeetingReport.xlsx")
WITH evolves
The WITH keyword is now available for several functions that require an ending:
  • HFilter
  • HTransaction
  • Critical sections
  • ...
BuildBrowsingTable: new option
When creating a browsing table by programming, you now have the ability to specify that the table can view the linked records from the linked data files.
SHA-3 hashing
The SHA-3 hashing standard is now supported in version 23.
This standard increases security.
AES256 encryption
The SHA-3 encryption standard is now supported in version 23. The ECB, CBC, CFB and CTR modes are supported.
This standard increases security.
Random function specific to cryptography
Random exists for a long time in WLanguage.
The cryptography processes require random numbers whose sequence cannot be reproduced.
The RandomCryptoXXX function is being introduced in version 23: it is used to create more secure cryptography processes.
Marking an EPOCH
The EPOCH standard (also called POSIX) is used to measure time, especially in the UNIX systems.
The version 23 proposes the DateTimeToEpoch and EpochToDateTime functions that are used to convert a date into EPOCH (and conversely).
Enumerations and combinations: browse them!
In version 23, you have the ability to browse the enumerations and combinations with the FOR EACH statement.
This is used for example to retrieve the list to fill an interface.
How did we do before?
For more details, see:
Square bracket on string
In version 23, WLanguage accepts the simple square brackets for the string variables.
No need to double the square bracket.
NOT IN
The new WLanguage NOT IN operator is used to check that a value is not found in a given list.
The legibility is ensured.
PDFMerge: no kidding, it's 10 times faster
In version 23, the WLanguage PDFMerge function will panic the radars!
The processing speed is increased by a factor of 10 in most cases.
PDFMerge: no kidding: the size is smashed
In version 23, the WLanguage PDFMerge function creates PDF files of extremely small size.
You'll be amazed by the result!
Zombie procedure: it exists, it must not be deleted but it must not be used anymore!
In most cases, an old code contains procedures that are used but that do no longer match the current quality standard.
The developers may have to develop a new version of procedure, that is using different parameters.
And the developers may not want to modify all the existing calls straight away.
To allow the transition, the former procedure is not deleted.
In version 23, you have the ability to specify that this procedure is obsolete: it's a zombie procedure.
To prevent from using the former procedure version, a compilation warning is generated whenever the former procedure is used.
This feature is also available for the sets of procedures and the components.
See Declaring a procedure/a function for more details.
Dominant color of image or photo
The version 23 proposes the new dDominantImageColor function that defines the dominant color of an image (displayed image or image in memory).
This is used for example to enhance the interfaces or to define the text color on a photo!
Email: images included in an HTML file
The WLanguage EmailImportHTML function manages the images included by encoding in an HTML file.
RTFToHTML function
The WLanguage RTFToHTML function manages the images and the tables.
The images are encoded in the HTML.
Printing PDFs in WLanguage
The iPrintPDF function is available in WINDEV, WINDEV Mobile and WEBDEV.
Printing a PDF document is performed in a single line.
The print preview can be displayed.
Sequencing programmed reports and PDFs
The WLanguage iSequencingAdd function can now be used to sequence programmed reports and PDF documents.
Internal procedure: assisted input
In version 23, the assisted input of parameters is enabled on the internal procedures.
Internal procedure: named parameters
In version 23, you have the ability to name the parameters during the call to the internal procedure.
Internal procedure: multiple parameters
In version 23, the multiple parameters are allowed in the internal procedures.
Call to internal sibling procedure
In version 23, you have the ability to call an internal sibling procedure (2 internal procedures in the same procedure).
Internal procedure: recursive call
In version 23, an internal procedure can call itself recursively.
Procedure: array of controls in parameter
In version 23, an array of controls can be passed in parameter to a procedure.
OOP: interfaces
You have the ability to declare interfaces, which means all the properties and methods that will be implemented.
Compared to an abstract class, an interface is easier to declare and to share.
OOP: abstract methods and properties
In the project explorer, the abstract methods and properties are identified in the derived classes.
This is used to easily find them in order to redefine them.
A new option in the popup menu ("Redefine the abstract elements") is used to redefine all the abstract elements in a single operation.
OOP: zombie class (obsolete)
In version 23, any element (procedure, global variable, constant, class, property and method) can be declared as being a zombie element (obsolete).
This allows you to know that this element must not be used anymore (but that it can not be deleted yet).
WLanguage: various new features
  • A WLanguage variable can be used in the is operator:
    IF pclObject is sClassName THEN
    // Processes ...
    END
  • Several controls can be assigned to an array of controls in a single line.
New family of TestCheck functions
The test editor includes a new family of functions in version 23.
This new family of functions is used to check several conditions and to trigger (or not) an error in the test depending on whether the condition is True or False.
For example:
TestCheckEqual is used to check that the content of 2 variables is identical.
MTOM/XOP standard
Some Webservices return binary data.
By using the standard XML protocol for returning data, the volumes sent could be very important as the binary was encoded in text format.
Therefore, a new protocol is used by some Webservices to return data in binary format: the MTOM/XOP protocol.
This protocol normalized by W3C is supported in version 23.
A gain of size about 30% can be expected for the data sent.
SQL code recognized in code editor
In version 23, the SQL code is recognized in the code editor.
You benefit from the power of code editor:
  • syntactic coloring,
  • completion during input,
  • help in real time,
  • detection of syntax errors,
  • ...
The code input becomes easier and more secure.
SQL is included in WLanguage.
SQL code: syntactic coloring
This SQL code typed benefits from the syntactic coloring: the code reading is simplified! The SQL keywords are colored.
hStart is Time = "080000"
hEnd is Time = EDT_EndTime
qryFlightsStat is SQL Query =
[
SELECT * FROM Country, Company, Flights, Passengers
WHERE Passengers.FlightsID = Flights.FlightsID
AND Company.CompanyID = Flights.CompanyID
AND Country.CountryCode = Company.CountryCode
AND
     (
Flights.DepartureAirportID = {ParamDepartureAirportID}
AND Flights.ArrivalAirportID = {ParamArrivalAirportID}
AND Flight.DATETIME BETWEEN [%hStart%] AND [%hEnd%]
     )
]
HExecuteSQLQuery(qryFlightsStat)
FOR EACH qryFlightsStat
...
END
SQL code: completion
During code input, the help on SQL keywords is enabled: the completion proposes the possible commands.
The completion also proposes the file items (the table columns) that are found in the affected file.
In the WLanguage code, the completion is also proposed on the output items of query.
The assisted SQL input
The assisted SQL input
SQL code: compilation error
Typing SQL code in the code editor allows the compiler to check the syntax of SQL code typed.
In case of error, a compilation error occurs, like for WLanguage.
Error of SQL code detected in input
Error of SQL code detected in input
Quotes, brackets and square brackets are automatically closed
In version 23, the quotes and the brackets are automatically closed.
This option can be disabled.
For example, the closing bracket is automatically generated when typing an opening bracket while the cursor is found in the middle...
This doesn't seem much but you won’t be able to live without it!
Another benefit, if the function expects no parameter, the cursor is positioned after the closing bracket...
During an input, if you type a closing bracket that is already found, this one will be ignored. This automatism is available for:
  • "
  • (
  • [
  • [%
  • <
Importing classes and sets of text procedures
The version 23 allows you to import classes or sets of procedures in text format.
This allows the development teams to create a class generator corresponding to their development architecture.
New presentation of optional processes
As you already know, the code editor proposes the common processes by default.
The other available processes were proposed in a bar at the bottom of window.
In version 23, the other processes are proposed in the last bar, therefore they are more accessible.
Help about string functions
Some WLanguage functions for handling strings are not prefixed by "String" .
For example: Left, Right, Position, NoAccent, RepeatString, etc.
In the code editor, the developer types the sought word and he checks the results proposed by the automatic completion.
In version 23, the associated functions are also proposed.
You will discover several unknown functions for handing strings.
The associated functions are proposed
The associated functions are proposed
Better help for the procedures
The code editor also proposes your procedures containing the word typed, and not only the ones that start with the word typed.
If you type Version, the code editor also proposes your procedure named ManagingVersions.
These procecures are found when typing
These procecures are found when typing "product"

Help about integers
In version 23, when declaring an Integer variable, the assisted input proposes the sub-types of integers: 8-byte integer, Unsigned integer, ...
Vertical search window

The search window can now be docked to the left or right of editor.
It is reorganized according to its location.
Legend
The code editor has a specific background color according to situations:
  • read-only code,
  • code coverage at 100%,
  • update available in SCM,
  • ...In version 23, the colors have a clear legend: you know the meaning of background color!!
Custom-folder in a set of procedures, class, ...
In version 23, you have the ability to create custom-folders in the set of procedures, in the classes and in the local procedures of window, report and page.
The procedures are well organized!
Breakpoint without stop but logged in the trace
The debugger was used to disable a breakpoint temporarily.
In version 23, you have the ability to specify that the passage via this breakpoint must be logged in the debug trace.
Ignore some functions in "step by step"
During step-by-step debug, the developer does not want to debug the content of some functions. A conversion function or a log function for example.
In version 23, a procedure can be defined as Without Step by Step, therefore it will be ignored during debug.
Relational object mapping in 1 click
The Relational Object Mapping is available since version 22.
This feature is used to separate the access to the window data.
The Relational Object Mapping is used to automatically transfer data between a data file and a class (and conversely).
In version 23, this choice is directly accessible in the explorer via a right click and in the list of classes.
XML
XML: SAX parser, optimized speed on huge files
Version 23 includes an XML "SAX" parser that is used to handle XML of several GB: for example, Open Street Map or Open Data France.
The reading speed and the memory consumption are improved on huge XML files.
Static audit: signaling the windows supporting (or not) the large fonts
A window can support (or not) the Windows "large fonts", meaning that it can automatically be enlarged proportionally to the zoom percentage.
Historically, the former windows did not support the large fonts.
Therefore, windows not supporting the automatic enlargement can be found in a project created years ago.
Version 23 of static audit signals these windows.
Dynamic audit: warning if too many copies of HFSQL context in a short time
Some processes (such as classes) can include copies of HFSQL context.
This context copy can consume memory.
If a class with the "Copy of HFSQL context" option is instantiated several times in a short time, this may impact the application and server performances.
In this case, the dynamic audit generates a warning.
Dynamic audit: warning when a request does not check the integrity
A query run on a database may not check the integrity rules.
This may be harmful...
In version 23, the dynamic audit signals that is it highly recommended to check the integrity rules. (Option to indicate to the WLanguage HExecuteQuery function).
Unalterable table: your data engraved in marble
The version 23 of HFSQL proposes the "unalterable table" feature.
These tables (data files) cannot be modified and no record (no line) can be deleted.
Any addition is permanent and it cannot be modified.
See Unalterable data files for more details.
HFSQL: unalterable table (data file)
This new feature of version 23 is used to signal that a data file cannot be modified after writing.
Once a record is added, it cannot be modified or deleted.
This type of data file is useful in the fields that require a strong traceability.
HFSQL automatically signs each record as well as the data file itself.
An unalterable file cannot be created without knowing its password: unable to delete and re-create the data file without without knowing this password.
See Unalterable data files for more details.
Unalterable table: programming
A runtime error occurs when trying to modify or delete records.
The new WLanguage HCheckUnaltered function is used to check that a data file is valid and that this file was not modified.
See Unalterable data files for more details.
Editing the data file: WDMap, HFSQL Control Center, hexadecimal editor, ...
Viewing an unalterable data file via a PC SOFT tool does not allow you to modify or delete records.
Using an hexadecimal editor is an impossible task.
See Unalterable data files for more details.
Unalterable task: Windows, Linux, iOS, Android, ...
The unalterable tables are available for the Windows, Linux, iOS and Android operating systems.
The formats are binary identical in all systems therefore the databases are cross-platforms.
The "Unalterable table" feature is available in 32 bits and 64 bits, on HFSQL Classic, HFSQL Embedded and HFSQL Client/Server.
See Unalterable data files for more details.
Keep-alive on connection: no more ghost transactions
A connection to the database can be interrupted at any time at "hardware" level: wire missing, device stand-by, WiFi connection interrupted, ...
When losing a connection, nothing is done by the TCP/IP standard. The server waits for the possible communication from client.
In version 23, you have the ability to define a time-to-live (TTL).
This allows you to define the frequency at which the server will check the client presence.
Without response from the client, the connection is closed and the current transactions are freed: no more missing connections!
See Keep-alive on connection for more details
Zombie item: item kept for backward compatibility but not to be used anymore
When a data structure is quite old, it may contain items that have been used in the past but that should not be used anymore.
However, to allow the former applications to operate, the item is not deleted.
In version 23, you have the ability to specify that an item is obsolete.
A compilation warning will be generated if the item it used.
This feature is also available for the data files.
See Zombie files and items for more details.
Scheduled task when starting the server
In version 23, you have the ability to specify that a scheduled task must be run when starting the server.
This feature can be combined with the other scheduling that may exist for the task.
Kerberos authentication (active directory, ...)
Kerberos is an authentication mode based on the use of tickets and secret keys.
This mode is used by Windows and the Active Directory.
From version 23, you have the ability to configure the HFSQL server so that it authenticates the users according to the Kerberos standard.
The Kerberos account (Active Directory, ...) is used.
Server replication
In version 23, HRSWaitForDataProcess is used to find out whether a server ended all the current replication operations toward the subscriber servers.
Dashboard for assisted universal replication by server
When a universal replication by server is defined, a dashboard is available in version 23.
This dashboard displays the following information:
  • list of pending replications on the server,
  • name of remote computer,
  • subscription date,
  • date of last synchronization,
  • size of .syn and .rpa files,
  • number of errors,
  • ...
This information can be sorted and searches can be performed in this information.
Queue of replicas to process on the server
Queue of replicas to process on the server

Assisted universal replication: define the order of files (tables)
In version 23, you have the ability to define the order in which the files (tables) will be replicated (ReplicEdit tool).
This allows you to easily manage the integrity rules.
Assisted universal replication: compress the transferred data
In version 23, the data transferred between the client and the server can be compressed.
For a network not very efficient, the impact in terms of performances is significant.
Assisted universal replication: managing the names of client computers
When changing the name of a client computer (a laptop computer is replaced by a new laptop computer for example), the server immediately includes this modification.
ODBC: Access to materialized views
An ODBC driver is supplied with HFSQL.
This ODBC driver can now be used to access the materialized views.
Checking the integrity of memo items
You already had the ability to check the integrity of memos during a reindex operation via the WLanguage HCheckMemo function.
In version 23, you have the ability to check all memos: this check is faster than a reindex operation.
Various new features
In version 23, the HFSQL Control Center evolves:
  • visualization of linked tables,
  • integrated wizard for query creation,
  • ability to create multi-file queries in HFSQL Classic,
  • creation of scheduled tasks when starting the server,
  • faster display of logs.
Reminder
As you already know, HFSQL includes a "Cluster" version.
This Cluster version can also be distributed free of charge with your applications developed in WINDEV, WEBDEV and WINDEV Mobile.
The benefit of cluster is to automatically distribute the storage and the access to data on several servers and therefore benefit from better response times and from better security. (For more details, see the documentation dedicated to HFSQL).
Support for stored procedures
In version 23, the HFSQL Cluster supports the stored procedures.
The stored procedures can be deployed and run.
New operators in SQL
Version 23 of HFSQL supports 5 new SQL operators:
  • &
  • |
  • ^
  • <<
  • >>
as well as the following syntax:
  • BitAnd,
  • BitNot,
  • BitOr,
  • BitXor,
  • BitAndNot
Via these new operators, the compatibility with external databases is ensured.
direct input of SQL code in WLanguage
In version 23, you have the ability to type SQL code in the code editor directly.
Memcached Big Data database
The version 23 of WINDEV allows you to easily use the Memcached database, in WLanguage directly.
Memcached is a Big Data database in memory to manage huge caches.
The new family of Memcached functions allows you to access the Memcached database.
See Memcached functions for more details.
Useless HCreateIfNotFound function
In version 23, the option "Automatically create the data files if they do not exist" is taken into account by the native connectors to SQL Server, Informix, Sybase, MySQL, MariaDB and PostgreSQL.
Minimum required version
  • Version 22
This page is also available for…
Comments
Click [Add] to post a comment