We are proud to release Smart Mobile Studio 2.9.9!
This is an Alpha Version of the upcoming version 3.0.0. We’ve been making so much changes and new features, that listing them all is next to impossible.
A lot of work has been done to make this the fastest and most stable version of Smart Mobile Studio with great support for all major browsers and mobile devices.
How to download this alpha?
Simple. Click here to download the ZIP containing portable version 2.9.9.34. Unpack it into any folder.
If you have a valid Smart Mobile Studio license, copy file user.lic to that folder, too.
Start SmartMS.exe. If you don’t have a license, you can click the button “Request trial license” to get a free 35-day trial key.
You can also periodically run program SmartUpdate.exe to check if Alpha was updated.
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”:
- OnPullStart
- OnPullMove
- OnPullEnd
- 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
- EventManager
- 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:
- TW3CustomControl.OnBeginMovement
- TW3CustomControl.OnEndMovement
- TW3CustomControl.OnVerticalMovement
- TW3CustomControl.OnHorizontalMovement
- TW3CustomControl.OnAllMovement
- 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.
- Fixes a lot of problems when dealing with mouse and touch events
- IDE: Bug fixes and improvements
A lot more listed here:
https://jonlennartaasenden.wordpress.com/2017/02/06/smart-pascal-changes/
Known bugs/issues
- Project options/Linker/Add Source map results in an exception during compile.
- There are graphical glitches in the internal browser. For example: Combobox list.
While these may look weird, they do only show up in the internal browser and do not affect how your app behaves in a browser. - TW3TabHeaders does not have styling for all platforms.
- Compile and Execute while the Internal Browser window is visible results in a white window.
Just close and hit Execute again. - Styles are still not completely finished. Default style works best while other styles may have issues.
Guide for porting your old projects
If the compiler can’t find:
- TPoint, TRect or other graphics related types, add System.Types.Graphics to the uses clause.
- TW3EventRepeater, change SmartCL.Time to System.Time in the uses clause.
- TW3Component, add System.Widget to the uses clause.
- Memory buffers, change SmartCL.Buffers to System.Memory.Views in the uses clause.
- Local storage, add SmartCL.Storage.Local to the uses clause.
Code changes
- Old: Canvas.Font := ’14px sans-serif’;
New: Canvas.FontStyle := ’14px sans-serif’; - Old: Http.SetRequestHeader(‘Content-Type’, ‘application/x-www-form-urlencoded’);
New: Http.RequestHeaders[‘Content-Type’] := ‘application/x-www-form-urlencoded’; - Old: EncodeURIComponent()
New: TString.EncodeURIComponent() - Old: VariantToObj()
New: TVariant.ToObject() - Old: w3_Callback()
New: TW3Dispatch.Execute() - Old: w3_SetInterval()
New: TW3Dispatch.SetInterval() - Old: w3_ClearInterval()
New: TW3Dispatch.ClearInterval() - Old: w3_SetTimeout()
New: TW3Dispatch.SetTimeOut() - Old: w3_ClearTimeout()
New: TW3Dispatch.ClearTimeOut()
If you are using the old TW3ListBox and features that are not available in the new TW3ListBox, change all TW3ListBox -> TW3ListView.
If you are listening on mouse and touch events through Control Handle or addEventListener,
- Use standard TW3CustomControl.OnClick, OnMouseMove, OnMouseDown, OnMouseUp etc.
- If you want to also support touch events, set TW3CustomControl.SimulateMouseEvents:=True;
If you call Resize in your own code, change the call to Invalidate. Invalidate calls resize with a short delay. And if there are multiple calls to Invalidate before the timer has triggered a resize, the extra calls will be ignored resulting in a lot faster app.