About the Book
This is a book about the Smart Mobile Studio (www.smartmobilestudio.com), a rapid development tool for programming HTML+JavaScript applications in Object Pascal. You can get more information about the book and the current status of each chapter at www.smartprogrammer.org.
Table of Contents
- Credits
- Introduction
- Sample Code
- Formatting Conventions
- Work in Progress
- Advertisement
- Release Notes
- 1 Prerequisites
- 2 Getting Started
- 2.1 Brief Introduction to Smart Mobile Studio
- 2.1.1 Project Types
- 2.1.2 Visual Project
- 2.1.3 Game Project
- 2.1.4 Console Project
- 2.2 Supported Browsers
- 3 Smart IDE
- 3.1 Working with Designer
- 4 Smart Pascal
- 4.1 Data Types
- 4.1.1 Base Types
- 4.1.1.1
Integer - 4.1.1.2
Float - 4.1.1.3
Boolean - 4.1.1.4
String - 4.1.1.5
Variant - 4.1.1.6 Type Mappings
- 4.1.2 Enumerations
- 4.1.3 Arrays
- 4.1.3.1 Static Arrays
- 4.1.3.2 Dynamic Arrays
- 4.1.4 Records
- 4.1.4.1 Anonymous Records
- 4.1.4.2 Default Field Values
- 4.1.5 Classes
- 4.1.5.1 Default Field Values
- 4.1.5.2 Partial Classes
- 4.1.5.3 External Classes
- 4.1.6 Interfaces
- 4.1.7 Helpers
- 4.1.8 Delegates
- 4.1.9 Closures
- 4.1.9.1 Lambdas
- 4.1.9.1.1 Lambda Functions
- 4.1.9.1.2 Lambda Statements
- 4.2 Statements
- 4.3 Operators
- 4.3.1 Operator Overloading
- 4.3.2 Helper Methods
- 4.4 Comments
- 4.5 Memory Model
- 4.6 Code Structure
- 4.6.1 Unit Namespaces
- 4.7 Property Expressions
- 4.8 Properties with Anonymous Storage
- 4.9 Contracts
- 4.10 Directives
- 4.10.1 Conditional Compilation
- 4.10.2 Code Inclusions
- 4.10.3 Errors and Messages
- 4.11 Built-in Functions
- 4.11.1 Mathematical Functions
- 4.11.2 String Functions
- 4.11.3 Date/Time Functions
- 4.12 Including JavaScript Code
- 4.12.1 Name Conflicts and Obfuscation Support
- 4.12.2 You May Be Better Without It
- 4.12.3 Implicit Parameters Structure
- 4.12.4 Variables
- 4.12.5 Handling Callbacks with Variant Methods
- 4.12.6 Handling Callbacks in an
asmsection - 4.12.7 Limitations
- 5 Programming with Smart
- 5.1 My First Smart Program
- 5.2 File Management
- 5.3 Deploying Smart Programs
- 5.4 Application Architecture
- 5.5 Forms and Navigation
- 5.5.1 Creating Secondary Forms
- 5.5.2 Navigating Between Forms
- 5.6 Message Dialogs
- 5.6.1 ShowMessage
- 5.6.2 ShowDialog
- 5.7 Modal Dialogs
- 5.7.1 ShowModal
- 5.7.2 HideModal
- 5.8 Running Code on Application Shutdown
- 5.9 Themes and Styles
- 5.10 Command-line Applications
- 5.10.1 Example
- 5.11 Writing Games
- 5.11.1 Anatomy of a Game Project
- 5.11.2 Galaxy Clock
- 5.11.3 Alternatives to the Game Project
- 6 Smart Controls
- 6.1 Overview
- 6.2 TW3TagObj
- 6.3 TW3Component
- 6.3.1 Public Methods
- 6.4 TW3MovableControl
- 6.5 TW3CustomControl
- 6.5.1 Public Methods
- 6.5.2 Public Properties
- 6.5.3 Events
- 6.5.4 Published Properties
- 6.6 TW3GraphicControl
- 6.7 Styling with CSS
- 6.8 Button
- 6.8.1 Button with Image
- 6.8.2 Sample Application
- 6.9 Checkbox
- 6.9.1 Sample Application
- 6.10 ComboBox
- 6.10.1 Sample Application
- 6.11 EditBox
- 6.11.1 Sample Application
- 6.12 Header
- 6.12.1 Sample Application
- 6.13 HTML Elements
- 6.13.1 Sample Aplication
- 6.14 Image
- 6.14.1 Sample Application
- 6.15 Label
- 6.15.1 Sample Application
- 6.16 Listbox
- 6.16.1 Listbox Styles
- 6.16.2 Sample Application
- 6.17 ListMenu
- 6.17.1 Sample Application
- 6.18 Memo
- 6.18.1 Sample Application
- 6.19 PaintBox
- 6.19.1 Sample Application
- 6.20 Panel
- 6.20.1 Sample Application
- 6.21 Progress bar
- 6.21.1 Sample Application
- 6.22 Scroll bar
- 6.22.1 Sample Application
- 6.23 Scrollbox
- 6.23.1 Sample Application
- 6.24 Scroll Control
- 6.24.1 Sample Application
- 6.25 TeeChart
- 6.26 Toggle switch
- 6.26.1 Sample Application
- 6.27 Toolbar
- 6.27.1 Sample Application
- 6.28 Toolbutton
- 6.28.1 Sample Application
- 6.29 Writing Custom Controls
- 6.29.1 TSmiley
- 6.29.2 Image Button
- 7 Smart RTL
- 7.1 RTL
- 7.2 RTL\PhoneGap
- 7.3 RTL\Steema
- 7.4 RTL\System
- 7.5 RTL\w3c
- 7.6 Libraries
- 7.7 Libraries\Box2D
- 7.8 Libraries\GLScene
- 7.9 Libraries\RemObjects
- 7.10 Libraries\SmartUnit
- 7.11 Graphics
- 7.11.1 Colour
- 7.11.2 Line
- 7.11.3 Circle
- 7.11.4 Rectangle
- 7.11.5 Curve
- 7.11.6 Transparency
- 7.11.7 Gradient
- 7.11.8 Image
- 7.11.9 Text
- 7.12 Regular Expressions
- 7.12.1 Example
- 7.12.2 A Look Inside
- 7.12.3 Creating a Regular Expression Object
- 7.12.4 Match
- 7.12.5 Search
- 7.12.6 Replace
- 7.12.7 Split
- 7.12.8 Exec
- 7.12.9 Test
- 7.12.10 RegExDemo Example
- 7.13 Browser Storage
- 7.13.1 DOM Storage
- 7.13.1.1 API
- 7.13.2 Cookies
- 7.13.2.1 API
- 7.13.3 Example
- 7.14 Accelerometer
- 7.14.1 Device Orientation
- 7.14.2 Smoothing
- 7.14.3 Calibration
- 7.14.4 Collecting Data
- 7.15 Touch and Gesture
- 7.15.1 Touch
- 7.15.2 Gesture
- 7.16 Layout Manager
- 7.16.1 Edit/Button/ListBox
- 7.16.1.1 Layout Basics
- 7.16.1.2 Resizing layouts
- 7.16.1.3 Example, Revisited
- 7.16.2 Application with a Status Bar
- 7.16.3 Portrait and Landscape
- 7.16.4 Dynamically Resizing Sublayouts
- 7.17 Networking
- 7.17.1 TW3HttpRequest Object
- 7.17.2 Loading Files
- 7.17.3 TW3JSONP Object
- 8 Debugging Smart Programs
- 9 Examples
- 9.1 Tic-Tac-Toe
- 9.2 Multi Finger Paint
- 9.3 Gesture
- 9.4 Accelerometer
- 10 PhoneGap

