mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2026-01-14 06:51:48 +01:00
456 lines
16 KiB
ObjectPascal
456 lines
16 KiB
ObjectPascal
(******************************************************************************
|
|
*
|
|
* Copyright (c) 1994-2000 Palm, Inc. or its subsidiaries.
|
|
* All rights reserved.
|
|
*
|
|
* File: Form.h
|
|
*
|
|
* Release: Palm OS SDK 4.0 (63220)
|
|
*
|
|
* Description:
|
|
* This file defines form structures and routines.
|
|
*
|
|
* History:
|
|
* 09/06/94 art Created by Art Lamb.
|
|
* 08/28/00 kwk Added FrmGetActiveField (4.0)
|
|
*
|
|
*****************************************************************************)
|
|
|
|
unit form;
|
|
|
|
interface
|
|
|
|
uses palmos, coretraps, rect, font, window, control, field, list, scrollbar, table, event_;
|
|
|
|
const
|
|
noFocus = $ffff;
|
|
|
|
frmInvalidObjectId = $ffff;
|
|
frmNoSelectedControl = $ff;
|
|
|
|
// Update code send as part of a frmUpdate event.
|
|
frmRedrawUpdateCode = $8000;
|
|
|
|
// Magic button IDs used by FrmCustomResponseAlert callbacks
|
|
frmResponseCreate = 1974;
|
|
frmResponseQuit = $BEEF;
|
|
|
|
// Alert constants and structures
|
|
type
|
|
alertTypes = Enum;
|
|
|
|
const
|
|
informationAlert = 0;
|
|
confirmationAlert = Succ(informationAlert);
|
|
warningAlert = Succ(confirmationAlert);
|
|
errorAlert = Succ(warningAlert);
|
|
|
|
type
|
|
AlertType = alertTypes;
|
|
|
|
AlertTemplateType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
alertType: UInt16;
|
|
helpRscID: UInt16;
|
|
numButtons: UInt16;
|
|
defaultButton: UInt16;
|
|
{$endif}
|
|
end;
|
|
AlertTemplateTag = AlertTemplateType;
|
|
// Types of object in a dialog box
|
|
formObjects = Enum;
|
|
|
|
const
|
|
frmFieldObj = 0;
|
|
frmControlObj = Succ(frmFieldObj);
|
|
frmListObj = Succ(frmControlObj);
|
|
frmTableObj = Succ(frmListObj);
|
|
frmBitmapObj = Succ(frmTableObj);
|
|
frmLineObj = Succ(frmBitmapObj);
|
|
frmFrameObj = Succ(frmLineObj);
|
|
frmRectangleObj = Succ(frmFrameObj);
|
|
frmLabelObj = Succ(frmRectangleObj);
|
|
frmTitleObj = Succ(frmLabelObj);
|
|
frmPopupObj = Succ(frmTitleObj);
|
|
frmGraffitiStateObj = Succ(frmPopupObj);
|
|
frmGadgetObj = Succ(frmGraffitiStateObj);
|
|
frmScrollBarObj = Succ(frmGadgetObj);
|
|
|
|
type
|
|
FormObjectKind = formObjects;
|
|
|
|
FormObjAttrType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
Bits: UInt16;
|
|
{
|
|
UInt16 usable :1; // Set if part of ui
|
|
UInt16 reserved :15; // pad it out
|
|
}
|
|
{$endif}
|
|
end;
|
|
|
|
FormObjAttrTag = FormObjAttrType;
|
|
|
|
// Gadget support:
|
|
const
|
|
formGadgetDrawCmd = 0; // paramP is unspecified
|
|
formGadgetEraseCmd = 1; // paramP is unspecified
|
|
formGadgetHandleEventCmd = 2; // paramP is an EventType *for the relevant event.
|
|
formGadgetDeleteCmd = 3; // paramP is unspecified.
|
|
|
|
type
|
|
FormGadgetAttrType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
Bits: UInt16;
|
|
{
|
|
UInt16 usable :1; // Set if part of ui - "should be drawn"
|
|
UInt16 extended :1; // Set if the structure is an "Extended" gadget (i.e., the 'handler' field is present)
|
|
UInt16 visible :1; // Set if drawn - "has been drawn" or "must do work to erase"
|
|
UInt16 reserved :13; // pad it out
|
|
}
|
|
{$endif}
|
|
end;
|
|
FormGadgetAttrTag = FormGadgetAttrType;
|
|
|
|
FormGadgetPtr = ^FormGadgetType;
|
|
|
|
FormGadgetHandlerType = function(gadgetP: FormGadgetPtr; cmd: UInt16; paramP: Pointer): Boolean;
|
|
|
|
FormGadgetType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
id: UInt16;
|
|
attr: FormGadgetAttrType;
|
|
rect: RectangleType;
|
|
data: Pointer;
|
|
handler: FormGadgetHandlerType;
|
|
{$endif}
|
|
end;
|
|
|
|
// All of the smaller form objects:
|
|
|
|
FormBitmapType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
attr: FormObjAttrType;
|
|
pos: PointType;
|
|
rscID: UInt16;
|
|
{$endif}
|
|
end;
|
|
FormBitmapTag = FormBitmapType;
|
|
FormBitmapPtr = ^FormBitmapType;
|
|
|
|
FormLineType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
attr: FormObjAttrType;
|
|
point1: PointType;
|
|
point2: PointType;
|
|
{$endif}
|
|
end;
|
|
FormLineTag = FormLineType;
|
|
|
|
FormFrameType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
id: UInt16;
|
|
attr: FormObjAttrType;
|
|
rect: RectangleType;
|
|
frameType: UInt16;
|
|
{$endif}
|
|
end;
|
|
FormFrameTag = FormFrameType;
|
|
|
|
FormRectangleType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
attr: FormObjAttrType;
|
|
rect: RectangleType;
|
|
{$endif}
|
|
end;
|
|
FormRectangleTag = FormRectangleType;
|
|
|
|
FormLabelType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
id: UInt16;
|
|
pos: PointType;
|
|
attr: FormObjAttrType;
|
|
fontID: FontID;
|
|
reserved: UInt8;
|
|
text: PChar;
|
|
{$endif}
|
|
end;
|
|
FormLabelTag = FormLabelType;
|
|
FormLabelPtr = ^FormLabelType;
|
|
|
|
FormTitleType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
rect: RectangleType;
|
|
text: PChar;
|
|
{$endif}
|
|
end;
|
|
FormTitleTag = FormTitleType;
|
|
|
|
FormPopupType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
controlID: UInt16;
|
|
listID: UInt16;
|
|
{$endif}
|
|
end;
|
|
FormPopupTag = FormPopupType;
|
|
|
|
FrmGraffitiStateType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
pos: PointType;
|
|
{$endif}
|
|
end;
|
|
FormGraffitiStateTag = FrmGraffitiStateType;
|
|
FrmGraffitiStatePtr = ^FrmGraffitiStateType;
|
|
|
|
FormObjectType = record
|
|
case Integer of
|
|
1: (ptr: Pointer);
|
|
2: (field: ^FieldType);
|
|
3: (control: ^ControlType);
|
|
4: (graphicControl: ^GraphicControlType);
|
|
5: (sliderControl: ^SliderControlType);
|
|
6: (list: ^ListType);
|
|
7: (table: ^TableType);
|
|
8: (bitmap: ^FormBitmapType);
|
|
// FormLineType * line;
|
|
// FormFrameType * frame;
|
|
// FormRectangleType * rectangle;
|
|
9: (label_: ^FormLabelType);
|
|
10: (title: ^FormTitleType);
|
|
11: (popup: ^FormPopupType);
|
|
12: (grfState: ^FrmGraffitiStateType);
|
|
13: (gadget: ^FormGadgetType);
|
|
14: (scrollBar: ^ScrollBarType);
|
|
end;
|
|
FormObjectTag = FormObjectType;
|
|
|
|
// typedef FormObjectType *FormObjectPtr;
|
|
|
|
FormObjListType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
objectType: FormObjectKind;
|
|
reserved: UInt8;
|
|
object_: FormObjectType;
|
|
{$endif}
|
|
end;
|
|
FormObjListTag = FormObjListType;
|
|
|
|
FormAttrType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
Bits: UInt16;
|
|
{
|
|
UInt16 usable :1; // Set if part of ui
|
|
UInt16 enabled :1; // Set if interactable (not grayed out)
|
|
UInt16 visible :1; // Set if drawn, used internally
|
|
UInt16 dirty :1; // Set if dialog has been modified
|
|
UInt16 saveBehind :1; // Set if bits behind form are save when form ids drawn
|
|
UInt16 graffitiShift :1; // Set if graffiti shift indicator is supported
|
|
UInt16 globalsAvailable:1; // Set by Palm OS if globals are available for the
|
|
// form event handler
|
|
UInt16 doingDialog :1; // FrmDoDialog is using for nested event loop
|
|
UInt16 exitDialog :1; // tells FrmDoDialog to bail out and stop using this form
|
|
UInt16 attnIndicator :1; // Set if attention indicator is supported
|
|
UInt16 reserved :6; // pad to 16
|
|
}
|
|
reserved2: UInt16; // FormAttrType now explicitly 32-bits wide.
|
|
{$endif}
|
|
end;
|
|
FormAttrTag = FormAttrType;
|
|
|
|
FormEventHandlerType = function(var eventP: EventType): Boolean;
|
|
FormEventHandlerPtr = FormEventHandlerType;
|
|
|
|
FormType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FORMS} // These fields will not be available in the next OS release!
|
|
window: WindowType;
|
|
formId: UInt16;
|
|
attr: FormAttrType;
|
|
bitsBehindForm: WinHandle;
|
|
handler: FormEventHandlerType;
|
|
focus: UInt16;
|
|
defaultButton: UInt16;
|
|
helpRscId: UInt16;
|
|
menuRscId: UInt16;
|
|
numObjects: UInt16;
|
|
objects: ^FormObjListType;
|
|
{$endif}
|
|
end;
|
|
|
|
FormPtr = ^FormType;
|
|
FieldPtr = ^FieldType;
|
|
// FormActiveStateType: this structure is passed to FrmActiveState for
|
|
// saving and restoring active form/window state; this structure's
|
|
// contents are abstracted because the contents will differ significantly
|
|
// as PalmOS evolves
|
|
// Added for PalmOS 3.0
|
|
FormActiveStateType = record
|
|
data: array [0..10] of UInt16;
|
|
end;
|
|
|
|
// FrmCustomResponseAlert callback routine prototype
|
|
FormCheckResponseFuncType = function(button: Int16; attempt: PChar): Boolean;
|
|
FormCheckResponseFuncPtr = FormCheckResponseFuncType;
|
|
|
|
//--------------------------------------------------------------------
|
|
//
|
|
// Form Function
|
|
//
|
|
//--------------------------------------------------------------------
|
|
|
|
function FrmInitForm(rscID: UInt16): FormPtr; syscall sysTrapFrmInitForm;
|
|
|
|
procedure FrmDeleteForm(formP: FormPtr); syscall sysTrapFrmDeleteForm;
|
|
|
|
procedure FrmDrawForm(formP: FormPtr); syscall sysTrapFrmDrawForm;
|
|
|
|
procedure FrmEraseForm(formP: FormPtr); syscall sysTrapFrmEraseForm;
|
|
|
|
function FrmGetActiveForm: FormPtr; syscall sysTrapFrmGetActiveForm;
|
|
|
|
procedure FrmSetActiveForm(formP: FormPtr); syscall sysTrapFrmSetActiveForm;
|
|
|
|
function FrmGetActiveFormID: UInt16; syscall sysTrapFrmGetActiveFormID;
|
|
|
|
function FrmGetActiveField(const formP: FormPtr): FieldPtr; syscall sysTrapFrmGetActiveField;
|
|
|
|
function FrmGetUserModifiedState(const formP: FormPtr): Boolean; syscall sysTrapFrmGetUserModifiedState;
|
|
|
|
procedure FrmSetNotUserModified(formP: FormPtr); syscall sysTrapFrmSetNotUserModified;
|
|
|
|
function FrmGetFocus(const formP: FormPtr): UInt16; syscall sysTrapFrmGetFocus;
|
|
|
|
procedure FrmSetFocus(formP: FormPtr; fieldIndex: UInt16); syscall sysTrapFrmSetFocus;
|
|
|
|
function FrmHandleEvent(formP: FormPtr; eventP: EventPtr): Boolean; syscall sysTrapFrmHandleEvent;
|
|
|
|
procedure FrmGetFormBounds(const formP: FormPtr; var rP: RectangleType); syscall sysTrapFrmGetFormBounds;
|
|
|
|
function FrmGetWindowHandle(const formP: FormPtr): WinHandle; syscall sysTrapFrmGetWindowHandle;
|
|
|
|
function FrmGetFormId(const formP: FormPtr): UInt16; syscall sysTrapFrmGetFormId;
|
|
|
|
function FrmGetFormPtr(formId: UInt16): FormPtr; syscall sysTrapFrmGetFormPtr;
|
|
|
|
function FrmGetFirstForm: FormPtr; syscall sysTrapFrmGetFirstForm;
|
|
|
|
function FrmGetNumberOfObjects(const formP: FormPtr): UInt16; syscall sysTrapFrmGetNumberOfObjects;
|
|
|
|
function FrmGetObjectIndex(const formP: FormPtr; objID: UInt16): UInt16; syscall sysTrapFrmGetObjectIndex;
|
|
|
|
function FrmGetObjectIndexFromPtr(const formP: FormPtr; objP: Pointer): UInt16; syscall sysTrapFrmGetObjectIndexFromPtr;
|
|
|
|
function FrmGetObjectId(const formP: FormPtr; objIndex: UInt16): UInt16; syscall sysTrapFrmGetObjectId;
|
|
|
|
function FrmGetObjectType(const formP: FormPtr; objIndex: UInt16): FormObjectKind; syscall sysTrapFrmGetObjectType;
|
|
|
|
function FrmGetObjectPtr(const formP: FormPtr; objIndex: UInt16): Pointer; syscall sysTrapFrmGetObjectPtr;
|
|
|
|
procedure FrmGetObjectBounds(const formP: FormPtr; objIndex: UInt16; var rP: RectangleType); syscall sysTrapFrmGetObjectBounds;
|
|
|
|
procedure FrmHideObject(formP: FormPtr; objIndex: UInt16); syscall sysTrapFrmHideObject;
|
|
|
|
procedure FrmShowObject(formP: FormPtr; objIndex: UInt16); syscall sysTrapFrmShowObject;
|
|
|
|
procedure FrmGetObjectPosition(const formP: FormPtr; objIndex: UInt16; var x, y: Coord); syscall sysTrapFrmGetObjectPosition;
|
|
|
|
procedure FrmSetObjectPosition(formP: FormPtr; objIndex: UInt16; x, y: Coord); syscall sysTrapFrmSetObjectPosition;
|
|
|
|
procedure FrmSetObjectBounds(formP: FormPtr; objIndex: UInt16; {const} var bounds: RectangleType); syscall sysTrapFrmSetObjectBounds;
|
|
|
|
function FrmGetControlValue(const formP: FormPtr; objIndex: UInt16): Int16; syscall sysTrapFrmGetControlValue;
|
|
|
|
procedure FrmSetControlValue(const formP: FormPtr; objIndex, newValue: Int16); syscall sysTrapFrmSetControlValue;
|
|
|
|
function FrmGetControlGroupSelection(const formP: FormPtr; groupNum: UInt8): UInt16; syscall sysTrapFrmGetControlGroupSelection;
|
|
|
|
procedure FrmSetControlGroupSelection(const formP: FormPtr; groupNum: UInt8; controlID: UInt16); syscall sysTrapFrmSetControlGroupSelection;
|
|
|
|
procedure FrmCopyLabel(formP: FormPtr; labelID: UInt16; const newLabel: PChar); syscall sysTrapFrmCopyLabel;
|
|
|
|
function FrmGetLabel(const formP: FormPtr; labelID: UInt16): {const} PChar; syscall sysTrapFrmGetLabel;
|
|
|
|
procedure FrmSetCategoryLabel(const formP: FormPtr; objIndex: UInt16; newLabel: PChar); syscall sysTrapFrmSetCategoryLabel;
|
|
|
|
function FrmGetTitle(const formP: FormPtr): {const} PChar; syscall sysTrapFrmGetTitle;
|
|
|
|
procedure FrmSetTitle(formP: FormPtr; newTitle: PChar); syscall sysTrapFrmSetTitle;
|
|
|
|
procedure FrmCopyTitle(formP: FormPtr; const newTitle: PChar); syscall sysTrapFrmCopyTitle;
|
|
|
|
function FrmGetGadgetData(const formP: FormPtr; objIndex: UInt16): Pointer; syscall sysTrapFrmGetGadgetData;
|
|
|
|
procedure FrmSetGadgetData(formP: FormPtr; objIndex: UInt16; const data: Pointer); syscall sysTrapFrmSetGadgetData;
|
|
|
|
procedure FrmSetGadgetHandler(formP: FormPtr; objIndex: UInt16; attrP: FormGadgetHandlerType); syscall sysTrapFrmSetGadgetHandler;
|
|
|
|
function FrmDoDialog(formP: FormPtr): UInt16; syscall sysTrapFrmDoDialog;
|
|
|
|
function FrmAlert(alertId: UInt16): UInt16; syscall sysTrapFrmAlert;
|
|
|
|
function FrmCustomAlert(alertId: UInt16; const s1, s2, s3: PChar): UInt16; syscall sysTrapFrmCustomAlert;
|
|
|
|
procedure FrmHelp(helpMsgId: UInt16); syscall sysTrapFrmHelp;
|
|
|
|
procedure FrmUpdateScrollers(formP: FormPtr; upIndex, downIndex: UInt16; scrollableUp, scrollableDown: Boolean); syscall sysTrapFrmUpdateScrollers;
|
|
|
|
function FrmVisible(const formP: FormPtr): Boolean; syscall sysTrapFrmVisible;
|
|
|
|
procedure FrmSetEventHandler(formP: FormPtr; handler: FormEventHandlerType); syscall sysTrapFrmSetEventHandler;
|
|
|
|
function FrmDispatchEvent(var eventP: EventType): Boolean; syscall sysTrapFrmDispatchEvent;
|
|
|
|
procedure FrmPopupForm(formId: UInt16); syscall sysTrapFrmPopupForm;
|
|
|
|
procedure FrmGotoForm(formId: UInt16); syscall sysTrapFrmGotoForm;
|
|
|
|
procedure FrmUpdateForm(formId, updateCode: UInt16); syscall sysTrapFrmUpdateForm;
|
|
|
|
procedure FrmReturnToForm(formId: UInt16); syscall sysTrapFrmReturnToForm;
|
|
|
|
procedure FrmCloseAllForms; syscall sysTrapFrmCloseAllForms;
|
|
|
|
procedure FrmSaveAllForms; syscall sysTrapFrmSaveAllForms;
|
|
|
|
function FrmPointInTitle(const formP: FormPtr; x, y: Coord): Boolean; syscall sysTrapFrmPointInTitle;
|
|
|
|
procedure FrmSetMenu(formP: FormPtr; menuRscID: UInt16); syscall sysTrapFrmSetMenu;
|
|
|
|
function FrmValidatePtr(const formP: FormPtr): Boolean; syscall sysTrapFrmValidatePtr;
|
|
|
|
function FrmAddSpaceForObject(var formPP: FormPtr; var objectPP: MemPtr; objectKind: FormObjectKind; objectSize: UInt16): Err; syscall sysTrapFrmAddSpaceForObject;
|
|
|
|
function FrmRemoveObject(var formPP: FormPtr; objIndex: UInt16): Err; syscall sysTrapFrmRemoveObject;
|
|
|
|
function FrmNewForm(formID: UInt16; const titleStrP: PChar; x, y, width, height: Coord; modal: Boolean;
|
|
defaultButton, helpRscID, menuRscID: UInt16): FormPtr; syscall sysTrapFrmNewForm;
|
|
|
|
function FrmNewLabel(var formPP: FormPtr; ID: UInt16; const textP: PChar; x, y: Coord; font: FontID): FormLabelPtr; syscall sysTrapFrmNewLabel;
|
|
|
|
function FrmNewBitmap(var formPP: FormPtr; ID, rscID: UInt16; x, y: Coord): FormBitmapPtr; syscall sysTrapFrmNewBitmap;
|
|
|
|
function FrmNewGadget(var formPP: FormPtr; id: UInt16; x, y, width, height: Coord): FormGadgetPtr; syscall sysTrapFrmNewGadget;
|
|
|
|
function FrmActiveState(var stateP: FormActiveStateType; save: Boolean): Err; syscall sysTrapFrmActiveState;
|
|
|
|
function FrmCustomResponseAlert(alertId: UInt16; const s1, s2, s3: PChar; entryStringBuf: PChar;
|
|
entryStringBufLength: Int16; callback: FormCheckResponseFuncType): UInt16; syscall sysTrapFrmCustomResponseAlert;
|
|
|
|
function FrmNewGsi(var formPP: FormPtr; x, y: Coord): FrmGraffitiStatePtr; syscall sysTrapFrmNewGsi;
|
|
|
|
function FrmSaveActiveState(var stateP: FormActiveStateType): Err;
|
|
function FrmRestoreActiveState(var stateP: FormActiveStateType): Err;
|
|
|
|
implementation
|
|
|
|
function FrmSaveActiveState(var stateP: FormActiveStateType): Err;
|
|
begin
|
|
FrmSaveActiveState := FrmActiveState(stateP, True);
|
|
end;
|
|
|
|
function FrmRestoreActiveState(var stateP: FormActiveStateType): Err;
|
|
begin
|
|
FrmRestoreActiveState := FrmActiveState(stateP, False);
|
|
end;
|
|
|
|
end.
|