
Contents Hide
This document details what features are currently unsupported in BrightForms on iOS devices, and also which features behave slightly differently in iOS compared to the Windows/Windows mobile platform. Please consider these differences with cross-platform applications and iOS development.
At the end of the document, there is also an explicit list of unsupported methods for reference.
Focusing/Losing Focus not applicable for controls in BrightForms iOS.
If a font is unsupported, it will render in the system default font.
Unsupported fonts will be logged as warnings in the BrightForms trace file. Supported fonts may be found via Apple iOS documentation.
Show/Hide SIP not supported for edit/combo. The SIP will always appear when a writable field is selected, and may be hidden once the keyboard's hide button is tapped on the device, or a non-editable area of the form is tapped.
Input methods offered in Windows Mobile are not supported by edit/combo.
Scrolling is performed by tapping and scrolling within controls - there are no scroll bars.
Label text is vertically centre aligned.
Horizontal scrolling is not supported.
Number Pad input is not supported.
Mask is not implemented.
Read only text is not selectable.
Auto-Scroll is only triggered by text using CHAR_CR.
Default button not supported.
A disabled image button will appear greyed if no disabled image is supplied.
The drop down component of combo boxes will open full screen for the user to make selections.
Up/Down Button property is not supported.
Custom date format will display both date and time pickers for selection in a sub-form.
String representation of DateTime objects is based off iOS locale defaults.
Listview may not be edited in real time – inserting and deleting columns not supported.
Only single selection of listview items is available.
'Headers - Drag to re-order' property is not supported.
Listview row height is determined by font size. If smaller font sizes are used, a minimum height for the row will be applied to the control.
In Windows Mobile, row values may be retrieved even when there is no row selected visually. For example, if a row is selected in the listview, but then Refresh() is called with no subsequent selection, GetCurrentRowColumnValue() will still return its values. This is not the case for BrightForms on iOS; these methods will return NULL if there is no visible selection in the listview.
Scrolling and marking up in scribble controls are facilitated by two modes, toggled by tapping and holding within the scribble bounds. Scroll mode is signified by red border.
Scribbles’ saving to BMP format is not supported.
Image data is equal when reading into Base64Binary data, but sizes may not be equal when loaded into blobs.
Closing forms is handled by the top left 'Done' button.
While there is no 'Done' button on the first form, calling Form.Close() method will reset BrightForms to the project's main form.
The system menu, user defined menus, and/or cursor navigation may be accessed by the top right 'Help' button.
Pressing the device’s home button or locking the device with BrightForms active will suspend BrightForms' processes. Any sounds to be played with the sleep screen activated will play on unlock.
With BrightForms in the background, notifications from server pushes may be retrieved. Tapping on these notifications will open/bring BrightForms to the foreground on the device.
Forms always have their title displayed.
Forms longer or wider than the screen area will be clipped. Having the soft keyboard open will allow vertical scrolling of the available space, however.
Forms always appear maximised.
Forms always have the help menu activated.
Notification events and actions are not supported.
The area of coverage of form backgrounds is based on the form's size, rather than screen size.
If a form's 'Help' property is not populated, no 'Help' option will be displayed in the 'Help' menu.
Upside-down orientation is not supported by iPhone devices.
Menu separators are not supported.
Menu items are listed under the 'Help' menu; not the menu headings themselves.
Menus may not be edited in real time with Form object methods.
Forms with many tabs may incorporate scrollable tabs at the bottom of the form. For more information, please refer to Tabbed Forms in iOS.
After a fresh install (i.e. 'No Project' to load), BrightForms displays a form that contains entry fields to edit server, user name and password settings.
Dialup functionality is not supported.
SQLite is the sole supported database type.
Trace files may be deleted via BrightForms Settings > System screen.
Projects' controls and/or fonts may be scaled manually via the Scaling functionality in the Settings > System screen.
Saving the Device ID to file via the About screen will write the device's ID to the file device_id.txt in BrightForms' documents directory. This file may be retrieved using BrightForms File Sharing.
Application tracing must be performed via Client Log Requests or via File Sharing in BrightBuilder.
When deploying files to the ‘My Documents’ folder, it is considered to be the ‘BrightProjects Folder’.
Specifying ‘BrightForms Engine Executable’ and ‘BrightForms Upgrade CAB’ options for attached files will have no effect for iOS BrightForms.
BrightForms on iOS may only sync to BrightServer instances which are version 6 or above. Previous versions of BrightServer are not supported.
The "Send server system clock for clients to synchronise" setting of BrightServer will have no effect the system clock.
BrightForms generally receives updates and deployments to applications via BrightServer over 3G/WiFi. If a new version of a project is set, syncing to the server will retrieve and unpack all the necessary project files, and give the option for users to restart BrightForms, applying the changes. However, if no connection is possible from a device to BrightServer, applications may be loaded via USB connection via the following steps:
Ensure the project to deploy has the same name as the project under 'Settings > Project > Project Name' of BrightForms. If not the same, download the BSS file from the device, replace or create the "project-name" setting to the project’s name, then re-upload the changed BSS onto the device.
Open the project in BrightBuilder, then right click it, selecting "Export Application".
Choose a clean directory and continue with the export. The project's files will be exported to the chosen path.
Close BrightForms on the device via iOS multitasking.
Open iTunes, then copy the exported files over to BrightForms Documents via File Sharing. Replace where necessary.
Restart BrightForms. The exported version of the application will load.
Due to the number of steps, it is recommended to use the wireless network connections where able, and to consider file shared utilised deployment as a last resort.
SetPath() is relative to BrightForms' home directory in iOS (see 'File' behaviour below).
Images taken by the camera will scale its largest dimension to 768px. Photos may be taken in either portrait or landscape modes.
AddAttachment() is relative to BrightForms' home directory in iOS (see 'File' behaviour below).
As iOS apps are sandboxed, files may only be created or accessed within their own home directories. As such, files are accessed in BrightForms relative to BrightForms' directory in iOS.
For example, a directory named 'temp' may be referred to by the file object by CreateDirectory("temp"), or 'file.txt' created to this directory via SaveText("/temp/file.txt"). This data is backed up and restored to and from iTunes.
Unlike Windows Mobile and Android platforms, files may be created containing wildcards '*' and/or '?' characters. Furthermore, searching for files via the 'Find' set of methods can only produce a set of files for a particular directory - for example '/' will return all files in the projects directory, while '/temp/' will return all files in the 'temp' directory.
These files may be accessed by connecting the device to a PC, and using iTunes' 'File Sharing' feature for BrightForms. For more information, please refer to the BrightForms File Sharing chapter of this document.
Communicating with the GPS object via COMs port is not supported, and therefore the Open() and SendMessage() methods do not apply to the iOS platform. Instead, use the OpenIntermediate() method, and other GPS methods to retrieve information.
Due to system limitations, the methods GetFixQuality() and GetSatellitesInView() are not supported in iOS, and will not return correct values to assess the GPS read state. Instead, the HasValidRead() method must be used to determine if the GPS has captured valid values to read.
Using the GPS on an iOS device will also prompt the user for permission to do so by the OS on first use. For more information, please refer to the Location Services chapter of this document.
Currently not supported.
Currently not supported.
Print() will generate and open reports as a PDF in preview window, while PrintPDF() will produce the same output writing to specified file.
Scanning on iOS operates using the device's camera, and is initiated via the Scanner.Scan() method. For more information, please refer to the Barcode Scanner section of the BrightForms on iOS topic.
MD5Digest method is supported. However Encrypt, Decrypt, SetAlgorithm methods are currently not supported.
GetProjectPath() will return a value relative to BrightForms' home directory in iOS (see 'File' behaviour above).
The method GetBatteryStatus() will return a value containing a number of flags describing the battery status. For example, if the battery level is high and the device is charging, the codes BATTERY_CHARGING (8) and BATTERY_HIGH (1) will be flagged bitwise, resulting in the code 9. This behaviour is as Windows spec, but is not necessarily adhered to in all Windows devices. It will always hold true in iOS.
(all methods)
SetImageQuality
SetResolution
(all methods)
SetAccountName
SetFromAddress
SetFromName
SetHost
SetPort
GetFilePath
HideBusyHourGlass
SetFilePath
ShowBusyHourGlass
ShowFileOpenDialog
ShowFileSaveDialog
EnableMenuItemByPosition
EnableMenuItemByIndex
Open
SendMessage
GetFixQuality
GetSatellitesInView
GetTrackAngle
(all methods)
(all methods)
(all methods)
GetDiskFreeSpace
GetOSMajorVersion
GetOSMinorVersion
RunProgramAndWait
GetUserAgent
SaveBitmapFile
ShowSIP
HideSIP
SetInputMethod
InsertColumn
DeleteColumn
DeleteAllColumns