In Delphi or Lazarus the application object is somewhat anonymous. It remains in the background and keeps track of forms, and most developers rarely access it directly.

In Quartex Pascal the application object is much more central, and it does more than just keep track of forms and modal states.


Since HTML5 is so widely used today, it needs to handle and work with a plethora of displays and habits. The difference in behavior between say, an Android tablet and a full desktop browser is significant.

Not just in how large forms can be but also in how page navigation is expected to behave and look.


  • In a typical mobile application (be it for a tablet, phone or embedded devices) people expect forms to slide in and out of view.
    They expect there to be a header with back and forward buttons (depending on the situation), and often there is a toolbar with easy access to functions at the bottom.


  • On ordinary "websites" meant for laptops and PC's users expect ordinary vertical scrolling, often with animations that trigger as something scrolls into or out of view.
    Maybe with a sticky header that remains untouched by the content being scrolled.


  • Large web applications that has a lot of functionality operates best with floating windows, almost like a real windows desktop. Where you can open several windows
    at once, move them around, minimize or maximize them. The desktop environment provides a familiar UI experience that people already know how to use.
    So for large systems, such as invoicing systems, Photoshop in the browser and similar solutions, a windowing like environment is needed.


Quartex solves this by the use of application models, which is simply different implementations of the application object that behaves differently.


So instead of having a simple TQTXApplication object that is supposed to cater for everything, we instead inherit out from that and implement form navigation differently for each model type.