xaWeb

I am pleased to announce a new project from OZ Software to develop web pages with our beloved Harbour language using CGI technology. The slogan: ‘fast and easy web development’ clearly describes the main objectives of the tool.

I have prepared an important introductory document to xaWeb (42 pages) xaWeb, which I encourage you to read carefully and in its entirety. There are many new concepts, but it really is not complicated and is worth it. However, I will give you a preview of the essential features of xaWeb:

  • Development of CGI-type executables for Windows and Linux (64 bits)
  • Independent of Xailer: Any editor can be used and it does not use any Xailer library:
    • xEdit
    • Visual Studio Code
    • Notepad++
    • Xailer IDE
  • Support for context packages such as Materialize, which allows for a good visual design without effort
  • Works as a web service
  • Session management
  • Code debugging system
  • Automatic data synchronization between CGI and HTML
  • Minimal knowledge of HTML, CSS and JavaScript required to use it
  • Support for the full power of HTML, CSS and JavaScript if you have the necessary knowledge
  • xaWeb is a commercial product from OZ Software
  • A Beta period is open to which any user who wishes can sign up

With Xailer 9 we published an important improvement in Xailer that allows the creation of CGI or console-type executables for 64-bit Linux. This was a necessary previous step to try to address the development of xaWeb, since we are aware that 99.99% of Internet servers are Linux. On the occasion of the inclusion of this important feature in Xailer, we published two articles on our WIKI in which we explained how to install WSL (Windows Linux subsystem) and how to install the Apache web server. In order to create Linux executables from the Xailer IDE, it is absolutely necessary to install WSL at least (the first step). Although the second step is more than recommended.

A few months ago, we took another step towards creating web pages for Linux, with the publication of a new file deployment plugin. This plugin allows any file that we publish in the ‘www‘ folder to be automatically deployed in WSL and on any web server via FTP. In the same way, if we create a CGI file for Linux, the plugin also deploys it both in WSL and in an FTP server of your choice.

With Xailer 9 it is also possible to create CGIs for Windows. In fact, you can have two projects that point to the same source code, each for its particular platform. The advantage of CGIs for Windows is that they can be debugged and run from the IDE. However, we believe that our CGIs will eventually run on Linux machines and so it is important that from day one, you are able to create CGIs for that platform.

xaWeb will be available soon; but I am afraid that it will not be a simple recompile of the application and that’s it. What we can assure you is that you will quickly find yourself at home and that the path to making web software is completely clear and the final result is spectacular.

We are aware that there are important aspects that scare away many potential users of xaWeb, such as:

  • Using Linux servers
  • Installing WSL to work locally with Linux
  • Learning HTML, JavaScript and CSS


The pillars of xaWeb are already finished, but it is more than likely that structural modifications will have to be made that may affect even the examples that are already done. We have waited to have a complete functional CRUD with DBF files to make this announcement. In the following link you can see some examples of what has been done so far running under a 64-bit Linux server. All the examples include the source code on xaWeb so you can take a look and be encouraged to use it when it is available.

xaWeb: All samples

Comments are open to hear your opinions and suggestions. Thank you for your time.

Kind regards

Xailer 8.1 – Help generator

The new version incorporates a complete help generator in HTML format that allows creating the help of any management application in a very simple and powerful way.

As of version 8.1, the TForm control (form) includes a new property named XHtmlHelp. When you click on the edit button in the property inspector you will be shown this HTML editing screen:

The ID corresponds to the identifier of the help page for that form and the title is the text that will be displayed at the top of the page. It is mandatory to enter some ID, however, the title is not mandatory. If you leave it blank, that page will simply not have a title and the area that the title occupies will disappear.

Our XVC version control system automatically manages the existence of these files and includes them in the repository, without you having to do anything else. If you’re using SVN, you’ll need to add the files manually via Tortoise SVN or via the command line.

Clicking on the menu option Project->Project Helps will show us the help manager, which looks like the following

On the right side, all the help assigned to each of the forms are initially shown and it is your responsibility to move them to the left side to build the table of contents. Once moved to the table of contents (left side), you can use the arrow buttons to move up, down or change its nesting in a simple way. It is not necessary that all help pages that you create appear in the table of contents.

Note that there is a button with some gears that allows you to compile the help in a single file with the extension .XHLP. Logically, said file should be incorporated as one more file of the application that you want to distribute or deliver to your client. Xailer creates with all the aids a single compressed file, with a proprietary format, only accessible through our aid manager.

In the editor you can include all the help text. It is possible to incorporate images, tables, text styles and links to web pages or any other help page. For the latter, you must use the word ‘help://‘ as a protocol. For example, if you wanted to put a link to the page ‘NewCustomer’, you would write the link as: ‘help://NewCustomer‘. That’s all.

For our entire help system to work, you only have to add a line of code at the beginning of our application, which is:

Application:oHelp := THelp():New( "MiFichero.XHLP" )

When the user presses the F1 key on any form, the help for that particular form will be displayed. For example:

There are no more excuses for making 100% professional applications. I hope you liked it.

Regards,

Xailer’s 20th anniversary

Xailer will soon be 20 years old and we want to celebrate it in style with you by presenting a very special offer that will be available throughout the month of June. For any version of Xailer we offer this offer:

  • 20% discount on upgrades
  • 40% discount on new purchases

These discounts are not cumulative with other discounts you may have.

The presentation was made in Madrid taking advantage of a meeting of xBase programmers from the Olivares 2000 Group, many of whose members have been advanced Xailer users for years.

I have taken the liberty of posting the photos of that meeting, in which you will surely recognize more than one (with a little less hair 😉 ). If any of those present prefer not to leave, leave it in comments and we will delete the photo immediately. In the same way, if anyone has photos from that day, I would love to include them.

I don’t want to end this article without talking a bit about the future of Xailer and what our short and medium term goals are, which are mainly two, but which involve a great effort and which we are sure will be very well received by the entire community:

  • Development of CGIs for Linux 64 bits using all the Xailer DataControls technology (integration with Nefele)
  • New 64-bit version of Xailer and Unicode support

Stay tuned for upcoming posts!!!

Xailer 8.1 – New HTML editor control

This new control allows you to edit HTML documents in a completely visual way and with some complexity since it allows you to include tables and images.

The control is based on the Summernote control, which is a simple editor made in JavaScript, which is especially light, hardly consumes resources and whose license allows commercial use.

This control inherits from the TWebView control which is a Microsoft Edge based web browser control that is only available for Xailer Enterprise.

No need to include any SummerNote source code, everything is self-contained. Its behavior is exactly the same as any other Xailer control.

Important note: images are saved inside the document

More shortly.

a cordial greeting

Xailer 8.1 – New control TAnimatedGif

This control allows you to display animated GIFs with absolutely no lag or stuttering. And this is because the painting is done completely at a low level and in a second thread, which has a very high degree of complexity.

With this animated GIF control there is no need to call ProcessMessages() for the control to continue painting correctly.

It is available for any version of Xailer, even the personal one.

More shortly.

a cordial greeting

Xailer 8.1 – Support of High DPI Desktop Application Development

Xailer 8.1 includes High DPI support, which allows you to get the maximum resolution out of powerful 4K monitors. To activate it you just have to set the Appliction:lDpiAware property to true at the beginning of your application execution. That is all. What this property really does is that your program recognizes the true resolution of the monitor.

When windows is running on a high-resolution monitor and scaling other than 100% is set, programs receive “adjusted” resolution feedback, not the actual resolution. In the same way, when a program sets certain coordinates in a window, windows readjusts those coordinates according to the value of the scale that it has established. For example, if windows is set to 150% scaling, when a program sets the dimensions of a window to 400×400 pixels, windows resets it to an actual size of 600×600 pixels, including all controls within it. .

This means that we do not have to worry about the scale that Windows has configured, but it has the drawback that the texts and images look blurred. When we set Application:lDpiAware to .T., our program will work with real coordinates, with no adjustments by windows. The images and texts will look perfectly sharp and in their original size, even if this means that they will appear smaller than expected. In these cases, we can use the Application:nScale property to adjust the desired scale without losing the sharpness of images and texts.

More on Xailer 8.1 shortly.

All the best

Xailer 8.1 – Enhancements on TDataset

This is a small improvement, but I think it is worth mentioning since it may interest more than one.

For the purists of the view-controller model, the use of the classic Xailer Data-controls is not appropriate, since all the editing process also occurs in the view, when it should be done in the controller. The most convenient way to avoid this problem is to use objects of type TMemDataset that return a memory recordset that is completely unbound from the table from which it came. But it has the disadvantage that the insert and edit operations are more complex since it requires the construction of the insert and update SQL strings manually. Let’s see how Xailer 8.1 solves this problem with a small example:

CLASS TControlador
  oDataSource
  METHOD RSClientes( oRs )
  METHOD ClientesUpdate( oRs, nId )
END CLASS
METHOD RsClientes( oRS as CLASS TMemdataset ) CLASS TControlador
  WITH OBJECT ::oDatasource
    IF oRs != NIL
      :QueryMemDataset("SELECT * FROM CLIENTES", "", oRs )
    ELSE
      oRs := :QueryMemDataset("SELECT * FROM CLIENTES")
    ENDIF
  END WITH 
RETURN oRs
METHOD ClientesUpdate( oRS, nId ) CLASS TControlador
  WITH OBJECT ::oDatasource
    TRY
      :BeginTrans() 
      :Execute(oRs:SqlUpdate("idCliente", nId ))
      // Aquí se pueden hacer más operaciones de forma clara  
      :CommitTrans()  
    CATCH
      :RollbackTrans()
    END
  END WITH 
RETURN NIL

The update operation is performed in the controller with the additional advantage that we can include any operation within the same transaction. For this, the new method SqlUpdate( aWhereCols, aWhereValues) is used, which creates the SQL statement with only the columns that have changed their value. As you can imagine, there is also a new method called SqlInsert().

Another of the peculiarities that this code has in its RsClientes() method that I think is very interesting is that the TMemDataset object is passed as a parameter, instead of being created in the method itself and returned as a return value, which could be the first approach that any programmer would make. This technique has a great advantage, which consists of being able to incorporate an empty TMemDataset into the form itself and even link it to a browse in which we have completely defined the columns and everything visually. If our method were responsible for creating the TMemdatset and returned it as a return value to then assign it to the browse with oBrowse:oDataset := oController:RsClientes(…) we would observe how all our browse columns would disappear since a new dataset and that causes a reset of the entire control. On the contrary, if we pass the recordset as a parameter, everything is perfectly maintained.

And that’s all, for now. Soon, more news.

All the best

Xailer 8.1: Enhancements on TWebDatasource

Xailer 8.1 will be published in the near future and in a series of short articles we will explain the new features that Xailer 8.1 will incorporate, leaving the most important ones for last. This is one of them.

The next version of Xailer 8.1 incorporates everything necessary to be able to do without any type of FTP connection. That is, all the classic operations that are carried out by FTP, such as:

  • file upload
  • file download
  • file deletion
  • file renaming
  • directory listing
  • directory creation
  • deletion of directories
  • They are included in the new TWebDataSource class.

Note: The FTP services that TWebDatasource includes are limited to the directory where the PHP module is located and its dependent directories.

The use of the FTP protocol is becoming more complex every day due to the different existing options: secure FTP through digital certificate (FTPS) that can be implicit or explicit, through SSH protocol (SFTP) or non-secure FTP. Unfortunately the support of Microsoft Windows in its WININET library for any type of FTP apart from the non-secure one is null and the most appropriate option to attack this problem would have been to use the CURL library that is available in Harbour, but its use is complicated since it requires installing quite a few DLLs. The other option would be to use CURL by command line, which has been available in Windows for a long time, but that means having to ‘launch’ a console program from our application that programmers and users don’t usually like, and neither do antivirus programs.

For all these reasons and an additional one, which is that it is practically impossible for port 80 to be closed (which is the one used by the Web), we have decided to incorporate into our TWebDatasource class all the services that any class of file handling by ftp.

But already put, we have added one more service, which is the possibility of sending emails using one of the most used libraries in PHP, which is PHPMailer. As with the database access credentials to include in the PHP file, the same is true for the credentials for sending mail. In the PHP file itself and under the XA_SendMail() function, in a very simple way and without having to know anything about PHP, you can set all the parameters you want to send emails.

We remind you that this class is only available in the Enterprise version of Xailer.

All the best

Important news in Xailer Professional

After having turned our base version of Xailer into a completely free product and having been a complete success due to its great reception. Now it’s time to promote the professional version to make it much more interesting.

From the publication of this article, Xailer Professional receives two important news:

  • The inclusion of many controls that until now were only present in the ‘Enterprise’ version, such as:
    • Native access to MySQL, MariaDB and SQLite database servers.
    • Access to WIA scanner.
    • Access to the image editor.
  • A very important reduction in its price, which goes from € 395 to € 245

And also as a launch offer for this new version. We offer Xailer Professional at an upgrade price, that is, € 145 until June 30, 2021.

No more excuses not to start using SQL databases and definitely abandon DBF files. Furthermore, Xailer’s DataControls, included in the professional version, make the process very easy and intuitive. It is never too late to make the change.

You can place your order directly from this link:

https://www.xailer.com/wp/en/xailer-order/?item=pro

Comparison of the different versions of Xailer

Xailer Personal Professional Enterprise
Classes & functions libraries for Windows
Integrated development environment
Complete documentation in English
No preferential technical support
Technical support through private forums
One year technical support and Xailer upgrades
Runtime library source code, except few internal components
Datasets components to access different database formats, DBF, ADS and SQL
WIA scanner support
Image editor
ActiveX support
MySQL & MariaDB native support
MySQlite native support
MySQlite encription support
Multithread Internet download support
Multithread support
Native Web browser control based on Webkit
Native Web browser control based on Microsoft Edge
Access to external databases trough WEB
Windows 10 stylish controls
Advanced control animation

Xailer Personal: Completely free!

Dear Xailer and Xbase users in general,

Taking advantage of these Christmas dates, we have decided to offer our personal version of Xailer completely free and for an unlimited time. We remind you that this version is fully functional and includes everything you need to make robust management applications using any existing RDD. All the power of Xailer’s IDE, such as its fast debugger, intellisense support and its ease in creating executables, are available to the programmer.

We hope this offer is well received and encourages many users of [x] Harbor, Clipper and Visual FoxPro to try our integrated development environment for xBase. We are sure they will not disappoint. We thank you in advance that you can share this news.

Best regards and Merry Christmas!