Smart Mobile Studio Enterprise beta2 Retail

Smart Mobile Studio Enterprise beta2 Retail
Smart Mobile Studio Enterprise beta2 Retail

You have reached the home of Smart Mobile Studio, a very exciting project that allows you to write ordinary Pascal in the flavour made famous by Delphi and Free Pascal, but generate feature rich, cutting edge HTML5 web applications ready for the mobile market.The fundamental difference between Smart and other rapid application development (RAD) systems is that Smart does not rely on a server. You author the project just like you would do in Delphi or Visual Studio and it’s instantly converted into high-speed jаvascript. Our philosophy is that the browser is the new operative system. The code generated by our compiler is ready to run on your iPhone or any HTML5 web-kit empowered device.

Rapid application development

The phrase rapid application development was a concept made famous by Borland Delphi (now Embarcadero Delphi) nearly two decades ago. Delphi came with an impressive library of ready to use components, re-usable classes and functions that set a new standard in productivity. Delphi is still knocking out killer apps even today and is experiencing somewhat of a revival in the IT community. The visual component library and the fact that you can easily re-use and extend these controls means that you can do more in less time. You focus on writing your app rather than wasting time re-inventing the wheel over and over again.

One example of what RAD is all about is a lesson we ourselves learned when venturing into the mobile software development business. Our very first project was a handy database driven time tracking app. The app itself is fairly humble, yet it took over two months of actual work to get it right (not to mention the time it took learning a new platform, a new language and new rules). That very same application can be re-created in Smart in less than two days. That is a substantial difference and the financial benefit speaks for itself.
We bring the power of Pascal to the browser

Smart Mobile Studio brings RAD to jР°vascript. You get a rich set of controls, classes and functions that will save you time, money and a lot of frustration. Object Pascal as a language also brings features to jР°vascript that are hard to achieve even for seasoned web developers. Among the most noteworthy features are:

Concurrent data-types
True object inheritance
Virtual and abstract methods
Var parameters
Published properties
Reusable components
Class helpers
Record helpers
and much, much more…
This means that a traditional HTML5 project which, under native jР°vascript would involve thousands of lines of code, is a piece of cake under Smart. As a language object pascal is easy on the eyes, easy to learn, easy to work with, and has excellent support in the IT community. Beginners will discover a language that has stood the test of time with unparalleled elegance.

What’s new?
Following list reflects just the most important changes:

New TW3ScrollControl, TW3ScrollBox
Supports MomentumScroll
Supports touch
Supports both scroll bars and indicators
New TW3ListBox
Supports desktop and mobile devices
Very fast
Can have huge number of lines
Dynamic item draw
Only draws visible lines
Can be customized with onshowItem to produce TVirtualListBox-kind of features
New events for “refresh by pulling list down”:
Old one renamed: TW3ListView
New TW3Label
Very fast
Supports Word wrap, autosize and both horizontal and vertical alignments
New control: TW3CheckListBox
New control: TW3TabControl
Smooth scrolling and tab changes
New control: TW3BitBtn
Fixes a lot of problems when dealing with mouse and touch events
Events firing at multiple controls
Mouse getting stuck while releasing mouse button outside of the browser window
Listens to both mouse and touch events
Can convert touch events to mouse events, so one only has to listen to onmousedown, onmousemove and onmouseup
New events for scrollable controls:
New properties for TW3CustomControl:
SimulateMouseEvents: SMS generates onmousedown, onmouseup and onmousemove events also from touch events.
TransparentEvents: If true, events are passed to the parent control.
IDE: Bug fixes and improvements

Changelog since beta1


– Prevent whole page from being dragged down/up in iOS.
– TW3TabControl: New property AllowSwipe, to control if tabs can be changed by swiping sideways.
– Bug fix to TW3CustomControl.SetNativeScrolling.


– New Ragnarok message framework.
– Lots of changes and improvements to the websocket server.
– Use the latest node.js engine and get rid of the framework.
– SQLite3 import api: Nodejs.SQLite3.pas
– Lots of imporvements to TApplication object.
– Lots of improvements and bug fixes to the WebSocket server
– TW3DirectoryWatch moved to SmartNJ.Device.Storage.Watch.pas
– New logfile using write-stream in append mode: SmartNJ.LogFile.pas

– New base-classes for a unified DB Framework: System.DB.pas
– All Base64 and UTF8 encoding implemented in Smart Pascal code instead of external js.
– Added OnChildAdded/Removed events to TW3TagContainer.
– New TIniFile-class: System.IniFile.pas
– TW3TagObj.FreeAfter, which can be used to free components after a delay.
– Src property published in TW3IFrame
– TW3ScrollControl to lock scrolling direction to the detected direction.
– Can be controlled with ScrollController.LockMovementDirection -property.
– Improvements and bug fixes to TW3ListBox
– Added InvalidateVisible for a quick and full repaint.
– Added horizontal scrolling if ItemWidth is wider than the listbox.
– Improvements and bug fixes to TW3EditBox and TW3Memo
– Fix text selection bug in Firefox.
– Add MaxLength-property.
– New function TString.EncodeTags, which converts tags and dangerous characters to safe html symbols.
– EventManager: Prevent extra mouse events if onclick was generated from touch events.
– TabControl:
– Prevent from calling InitializeForm twize, if the tab was a form.
– Improve tab header resizing.
– ListBox:
– Change TagValue to Variant.
– Fixed mouse handling bugs in the ACE editor.
– Bug fixes to font measurement.

– Implemented ‘static’ linking of javascript files: {$I ‘file.js’}

Users of Guests are not allowed to comment this publication.