O'Reilly logo

Palm OS Programming, 2nd Edition by Neil Rhodes, Julie McKeehan

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Form Object APIs

These are the most important form object APIs.

Converting Between IDs and Indexes

Most Form Manager routines require a form object index, but what you’ve specified in the form resource is a form object ID. As a result, you’ll find yourself converting from IDs to indexes very often.

UInt16 FrmGetObjectIndex(const FormType *form, UInt16 formObjectID)

FrmGetObjectIndex searches through the objects in the form, returning the index of the one that matches the given object ID. You will be using this routine all the time.

UInt16 FrmGetObjectID(const FormType *form, UInt16 formObjectIndex)

FrmGetObjectID returns the ID of the form object at the specified index. It is not commonly needed.

We don’t know why the Palm OS architects thought it necessary to have both form object IDs and form object indexes (it seems as though using indexes would have been simpler).

Warning

Unfortunately, you’ll find it very easy to accidentally pass an ID to a routine expecting an index. Since the data types (UInt16) are exactly the same, the compiler can’t catch this type of error. Instead, you’ll get a runtime error when the object at that index can’t be found (since you’ll be passing a number like 1000 to specify a 0-based index).

Hiding and Showing Objects

The initial state of the usable bit for each form object is specified in the form resource. Sometimes, you may want to dynamically hide or show a specific form object. You can do this with FrmHideObject or FrmShowObject .

void ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required