Icon Product Status Update

Posted by Tim Young on Mon, Jun 18 2012
As you may already know, it's been very quiet around here lately. It tends to get that way when I've got a lot of development work to get done, and that's definitely been the case lately. The following will give you an idea of what I've been up to, as well as some information on what to expect for product releases in the next month.

Elevate Web Builder

I've finally finished up the coding on EWB (again). This round added the following enhancements, and will be the final release candidate as far as features are concerned:
  • The performance of the framework has been increased dramatically through a re-factoring of the way that the framework updates browser elements during control creation and resizing. In addition, BeginUpdate and EndUpdate methods have been added to both the TPanel and TForm controls to allow for suspending browser updates while creating or resizing many different controls at one time. All auto-create forms use these methods during initialization at application startup to drastically speed up the time it takes to create the forms and populate them with their design-time settings. Finally, the number of internal browser event handlers used for the TGrid control has been drastically reduced.

  • Both the TPanel and TForm controls now support automatic HTML form submittal. Building a submittal form is as simple as designing a form in the IDE and then calling a SubmitForm method at runtime. The IDE also logs all form submittals done through the IDE's local web server, allowing the developer the opportunity to view all form variables that were submitted for testing purposes. Finally, form submittals can be directed to a TPage control so that any output from a form submittal can be displayed to the end user, if so desired.

  • A new TFileUploadButton control for uploading files has been added, and it works seamlessly with the new form submittal functionality, and looks like a regular button on all browsers. When a file is selected via the button, an OnChange event is fired and the name of the file can be retrieved. This is useful for displaying the name of the file selected in a TEdit or TLabel control.

  • A new TSeparator control has been added for drawing separators or rectangles on forms or panels. Currently, you can only supply the fill color, but more properties will be introduced for borders, gradients, etc.

  • There is now date/time/number formatting functionality in the WebCore unit. The formatting is controlled via a global FormatSettings object that controls the short date and time formats, as well as the decimal separator for floating-point numbers. More formatting, including long date and time formats, will be provided as the product matures.

  • The following functions have been added to the built-in runtime: YearOf, MonthOf, DayOf, WeekDayOf, HourOf, MinuteOf, SecondOf, MSecondOf, TimeZoneOffset, EncodeDate, EncodeTime, EncodeDateTime, and StrReplace. Also, all date/time functions support a parameter for specifying whether local or UTC time is needed.

  • The TComboBox control now includes a Custom property that allows the developer to specify that a "..." custom button be used instead of a normal drop-down button with an arrow. When the user clicks on the custom button, an OnCustomClick event is fired for the control.

  • The TGrid control now includes a separator AllowAppends property to distinguish row appends vs. row inserts. Also, there is a new AlwaysShowEditor property that forces the editor to always be visible, a CustomCombo property for the grid columns and an OnCustomComboClick event for the grid to surface the above combo box functionality in the grid.

  • There is a new DataSet Manager in the IDE underneath the Project Manager that allows the developer to create datasets for use in the IDE during development (local web server usage required). Currently, you can define datasets for the ElevateDB and DBISAM database engines only, but more will be supported in the future. Once a dataset is defined, it can be dragged on to a form and dropped there, and all of the columns will automatically be defined for the dataset. The local web server in the IDE automatically knows how to respond to dataset requests for columns and rows, as well as the posting of transaction operations. This allows the developer to complete the full application development lifecycle without having to leave the IDE.

  • The dataset functionality has been enhanced significantly. There is now a new TDatabase component that controls all transactional operations across all datasets in an application, including new methods and events for starting, committing, and rolling back transactions. Nested transactions are supported now, which makes master-detail and multi-form database applications very easy to code. Also, loading a dataset is now as simply as a single TDatabase.Load method call, where the TDataSet instance is passed in to the method as a parameter. One can also use the TDatabase component to iterate over all datasets in the application. The TDataSet component now supports bookmarks with the SaveBookmark/GotoBookmark methods and includes the following new properties and events: AutoEdit, BeforeLoad, OnLoadError, AfterLoad, OnInitRow, and OnRowChanged.

  • There are a lot of new fixes that affect everything from the images to the grids to the compiler. I won't go into all of the details, but the main issues were with the tabbing/focusing in the framework and the way that the grid editors were working. The cache entries for the web browser are cleared when the application is run in the IDE, and that fixes a long-standing issue with the browser serving up cached versions of the application.
I've put together a couple of small videos that demonstrate the new DataSet Manager/dataset functionality and the form submittal functionality. You can see them here:

Elevate Web Builder DataSet Manager Demo

Elevate Web Builder Form Submittal Demo


There are some neat new features coming up in a 2.09 minor release for ElevateDB:
  • There is a new CONTAINS ANY operator that performs an OR of the search words specified instead of the default AND of the search words. This really helps improve the performance of queries that used to be force to join a bunch of CONTAINS conditions with an explicit OR operator.

  • The performance of both the LIKE and CONTAINS/CONTAINS ANY operators has been greatly improved, especially for partial-word searches.

  • You can execute a CREATE TABLE statement with a new FROM UPDATES clause that allows you to dump the contents of any replication updates file (.EDBUpd) to a table in order to audit its contents. It works like this:

    CREATE TEMPORARY TABLE "updatestest" FROM UPDATES "MainOffice-2010-12-14 17-57-12.0306" IN STORE MainUpdates

  • There is an OnServerProcedureEvent event in the TEDBEngine component that allows you to define built-in custom server procedures that can handle custom requests from a remote session. The TEDBSession component includes a new RemoteParams property and CallRemoteProcedure method that provides the functionality for allowing a remote session to call a custom server procedure.

  • The ElevateDB Server now includes a "named server" architecture for running multiple instances of the ElevateDB Server on the same machine. This makes it possible to deploy a single edbsrvr.exe on a server machine and start up many instances of the ElevateDB Server, each with its own configuration. This applies to running the ElevateDB Server as a service also.
In addition to the above enhancements, there are several bug fixes that will be included also. Among these, there is an important fix for the 64-bit ElevateDB ODBC Driver that fixes a major issue with the driver when used with the 64-bit version of Microsoft Office 2010.


The major improvement coming up for DBISAM is the 64-bit DBISAM Database Server and an important fix for the 64-bit DBISAM ODBC Driver that fixes a major issue with the driver when used with the 64-bit version of Microsoft Office 2010 (same issue as with ElevateDB).

Tags: Elevate Web Builder, ElevateDB, DBISAMPermanent Link

Comments Comments (9) You must be logged in to comment

Comment Steve Gill said... Reply
Wow Tim, you have been very, very busy.  Well done, that's a lot of great changes.  Looking forward to the updates.


Comment Iztok Lajovic (1) said... Reply
Congratulations! is the only word I can say after redading all this
Iztok Lajovic

Comment Uli Becker said... Reply
That is much more than I expected - can't wait to use it.

Uli Becker

Comment Roy Lambert said... Reply
It looks impressive and as soon as I finish beating my app up (right now its beating me up) I'll have a play.

My only question - when is the Android version due?

Comment Frederick Chin said... Reply
EWB looks great and I can't wait to use it.

However, the most important question I have (and probably most of your customers) is when will it be released?

Comment MalcolmC said... Reply
Tim's reply would be "when its ready"

I for one will NOT be using EWB until it is finally released.   Too many things get changed and I find (me) I get confused when something I learned is no longer available and I have to re-learn a new way of doing something.

Tim, keep up the good work.  Are you going to have data connectors for NexusDB 2 and 3?

Comment Tim Young [Elevate Software] said... Reply
Frederick: I'm working on the docs now, in-between finishing up the new EDB and DBISAM releases.  After those releases are done this week, I will be full-time on the documentation and should be able to have it done in a couple of weeks.  The documentation is about half-done right now.

Comment Tim Young [Elevate Software] said... Reply
Malcolm: Yes, any database engines that use the VCL TDataSet architecture will be the easiest to implement and will be available first, and NexusDB is one of those.

Just to reiterate, though: these are IDE-only dataset connections via the local web server in the IDE.  Deployment will still require the proper back-end code for sending out dataset JSON and consuming transactional JSON.  Fortunately, the JSON is very simple and easy to deal with, and I'm going to put together some example PHP layers to show how it is done.

Comment Frederick Chin said... Reply

Thanks for the update. The expected timeframe for EWB's release fits nicely with me since it will be after a DBISAM project I am starting.

I look forward to using EWB.