Smart Mobile Studio
  • News
  • Forums
  • Download
  • Store
  • Showcases
    • Featured demos
    • The Smart Contest 2013, Round 1 – Graphics
  • Documentation
    • Get the book
    • System requirements
    • Prerequisites
    • Getting started
      • Introduction
      • Application architecture
      • The application object
      • Forms and navigation
      • Message dialogs
      • Themes and styles
    • Project types
      • Visual project
      • Game project
      • Console project
    • Layout manager
    • Networking
      • TW3HttpRequest
      • TW3JSONP
      • Loading files
  • About

The application object

Application

Application

Now that you have some idea how the VJL is organized, let’s go one step further and look at another well known object pascal object, namely good old TApplication. Just like delphi and freepascal, all smart apps have an application object. This is the very first object that is created when you execute your code in a browser (the second being the driver instance) – and it is in charge of managing forms, moving between forms (typically using a sliding effect like iPhone apps), setting up the display and keeping things properly sized.

Unlike delphi, where the desktop is ever present via the operative system, TApplication is in charge of setting up a display. This display class (TW3Display) is a normal, visual control that inherits from TW3Customcontrol – and is set to automatically fill the entire visible area of the browser. TW3Display in turn contains an instance of TW3DisplayView which is the container that actually house your form instances:

  • TApplication
    • TDocumentBody
      • TW3Display instance
        • TW3DisplayView instance
          • Form instance

It is important to understand that both TW3Display and TW3DisplayView inherit from TW3Customcontrol. As such you are free to insert your own controls into these as you see fit. TW3Display is set to organize controls in a top-down manner automatically. By adding a TW3HeaderControl (the typical iPhone header) directly into Application.Display – your header control will remain still while the forms slide in and out.

You can change the way TW3Display organizes it’s child elements by altering the ArrangeType and AutoArrange properties. Currently the following organization modes are supported:

  • dvaSizeToView: fit to browser size
  • dvaVStack: stack child controls vertically
  • dvaHStack: stack child controls horizontally

One crucial point to make about the application object, is that you must manually add the form instances to the code. When you create a new project, a unit with the project name is automatically created for you. This unit contains your application object which is unique for each program. The method ApplicationStarting() is where you create instances of your forms and add them to the application object.

Pages

  • About
  • Feature Matrix
  • Forums
  • News
  • Release History
  • Download
  • Showcases
    • The Smart Contest 2013, Round 1 – Graphics
  • Store
  • Documentation
    • Creating your own controls
    • Debugging, exceptions and error handling
    • Differences between Delphi and Smart
    • Get the book
    • Getting started
      • Introduction
      • Local storage, session storage and global storage
      • Application architecture
      • The application object
      • Forms and navigation
      • Message dialogs
      • pmSmart Box Model
      • Themes and styles
    • Layout manager
    • Networking
      • Loading files
      • TW3HttpRequest
      • TW3JSONP
    • Prerequisites
    • Real data, talking to sqLite
    • System requirements
    • Project types
      • Visual project
      • Game project
      • Console project

Archives

  • December 2019
  • December 2018
  • November 2018
  • July 2018
  • June 2018
  • February 2018
  • September 2017
  • April 2017
  • November 2016
  • October 2016
  • September 2016
  • April 2016
  • March 2016
  • January 2016
  • October 2015
  • September 2015
  • July 2015
  • April 2015
  • January 2015
  • December 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • March 2014
  • February 2014
  • January 2014
  • December 2013
  • November 2013
  • October 2013
  • August 2013
  • July 2013
  • June 2013
  • May 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012
  • November 2012
  • August 2012
  • July 2012
  • June 2012
  • May 2012
  • April 2012
  • March 2012
  • February 2012
  • January 2012
  • November 2011
  • October 2011
  • September 2011

Categories

  • Announcements (25)
  • Developers log (119)
  • Documentation (26)
  • News (104)
  • News and articles (16)

WordPress

  • Register
  • Log in
  • WordPress

Subscribe

  • Entries (RSS)
  • Comments (RSS)
© Optimale Systemer AS