mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-02 03:53:13 +01:00
239 lines
8.6 KiB
ObjectPascal
239 lines
8.6 KiB
ObjectPascal
(******************************************************************************
|
|
*
|
|
* Copyright (c) 1994-2000 Palm, Inc. or its subsidiaries.
|
|
* All rights reserved.
|
|
*
|
|
* File: Field.h
|
|
*
|
|
* Release: Palm OS SDK 4.0 (63220)
|
|
*
|
|
* Description:
|
|
* This file defines field structures and routines.
|
|
*
|
|
* History:
|
|
* August 29, 1994 Created by Art Lamb
|
|
*
|
|
*****************************************************************************)
|
|
unit field;
|
|
|
|
interface
|
|
|
|
uses palmos, coretraps, rect, font, window, control;
|
|
|
|
const
|
|
maxFieldTextLen = $7fff;
|
|
|
|
// default maximun number of line the a dynamicly sizing field will expand to.
|
|
// Can be changed with FldSetMaxVisibleLines
|
|
|
|
maxFieldLines = 11;
|
|
|
|
// kind alignment values
|
|
type
|
|
justifications = Enum;
|
|
|
|
const
|
|
leftAlign = 0;
|
|
centerAlign = Succ(leftAlign);
|
|
rightAlign = Succ(centerAlign);
|
|
|
|
type
|
|
JustificationType = justifications;
|
|
|
|
const
|
|
undoBufferSize = 100;
|
|
|
|
type
|
|
UndoMode = enum;
|
|
|
|
const
|
|
undoNone = 0;
|
|
undoTyping = Succ(undoNone);
|
|
undoBackspace = Succ(undoTyping);
|
|
undoDelete = Succ(undoBackspace);
|
|
undoPaste = Succ(undoDelete);
|
|
undoCut = Succ(undoPaste);
|
|
undoInput = Succ(undoCut);
|
|
|
|
type
|
|
FieldUndoType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FIELDS} // These fields will not be available in the next OS release!
|
|
mode: UndoMode;
|
|
reserved: UInt8;
|
|
start: UInt16;
|
|
end_: UInt16;
|
|
bufferLen: UInt16;
|
|
buffer: PChar;
|
|
{$endif}
|
|
end;
|
|
FieldUndoTag = FieldUndoType;
|
|
|
|
FieldAttrType = record
|
|
Bits: UInt16;
|
|
{
|
|
UInt16 usable :1; // Set if part of ui
|
|
UInt16 visible :1; // Set if drawn, used internally
|
|
UInt16 editable :1; // Set if editable
|
|
UInt16 singleLine :1; // Set if only a single line is displayed
|
|
UInt16 hasFocus :1; // Set if the field has the focus
|
|
UInt16 dynamicSize :1; // Set if height expands as text is entered
|
|
UInt16 insPtVisible :1; // Set if the ins pt is scolled into view
|
|
UInt16 dirty :1; // Set if user modified
|
|
UInt16 underlined :2; // text underlined mode
|
|
UInt16 justification :2; // text alignment
|
|
UInt16 autoShift :1; // Set if auto case shift
|
|
UInt16 hasScrollBar :1; // Set if the field has a scroll bar
|
|
UInt16 numeric :1; // Set if numeric, digits and secimal separator only
|
|
UInt16 reserved :1; // Reserved for future use
|
|
}
|
|
end;
|
|
FieldAttrTag = FieldAttrType;
|
|
FieldAttrPtr = ^FieldAttrType;
|
|
|
|
LineInfoType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FIELDS} // These fields will not be available in the next OS release!
|
|
start: UInt16; // position in text string of first char.
|
|
length: UInt16; // number of character in the line
|
|
{$endif}
|
|
end;
|
|
LineInfoTag = LineInfoType;
|
|
LineInfoPtr = ^LineInfoType;
|
|
|
|
FieldType = record
|
|
{$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_FIELDS} // These fields will not be available in the next OS release!
|
|
id: UInt16;
|
|
rect: RectangleType;
|
|
attr: FieldAttrType;
|
|
text: PChar; // pointer to the start of text string
|
|
textHandle: MemHandle; // block the contains the text string
|
|
lines: LineInfoPtr;
|
|
textLen: UInt16;
|
|
textBlockSize: UInt16;
|
|
maxChars: UInt16;
|
|
selFirstPos: UInt16;
|
|
selLastPos: UInt16;
|
|
insPtXPos: UInt16;
|
|
insPtYPos: UInt16;
|
|
fontID: FontID;
|
|
maxVisibleLines: UInt8; // added in 4.0 to support FldSetMaxVisibleLines
|
|
{$endif}
|
|
end;
|
|
|
|
FieldPtr = ^FieldType; // deprecated, use FieldType *
|
|
|
|
//---------------------------------------------------------------------
|
|
// Field Functions
|
|
//---------------------------------------------------------------------
|
|
|
|
procedure FldCopy(const fldP: FieldPtr); syscall sysTrapFldCopy;
|
|
|
|
procedure FldCut(fldP: FieldPtr); syscall sysTrapFldCut;
|
|
|
|
procedure FldDrawField(fldP: FieldPtr); syscall sysTrapFldDrawField;
|
|
|
|
procedure FldEraseField(fldP: FieldPtr); syscall sysTrapFldEraseField;
|
|
|
|
procedure FldFreeMemory(fldP: FieldPtr); syscall sysTrapFldFreeMemory;
|
|
|
|
procedure FldGetBounds(const fldP: FieldPtr; rect: RectanglePtr); syscall sysTrapFldGetBounds;
|
|
|
|
function FldGetFont(const fldP: FieldPtr): FontID; syscall sysTrapFldGetFont;
|
|
|
|
procedure FldGetSelection(const fldP: FieldPtr; var startPosition, endPosition: UInt16); syscall sysTrapFldGetSelection;
|
|
|
|
function FldGetTextHandle(const fldP: FieldPtr): MemHandle; syscall sysTrapFldGetTextHandle;
|
|
|
|
function FldGetTextPtr(const fldP: FieldPtr): PChar; syscall sysTrapFldGetTextPtr;
|
|
|
|
function FldHandleEvent(fldP: FieldPtr; eventP: EventPtr): Boolean; syscall sysTrapFldHandleEvent;
|
|
|
|
procedure FldPaste(fldP: FieldPtr); syscall sysTrapFldPaste;
|
|
|
|
procedure FldRecalculateField(fldP: FieldPtr; redraw: Boolean); syscall sysTrapFldRecalculateField;
|
|
|
|
procedure FldSetBounds(fldP: FieldPtr; const rP: RectanglePtr); syscall sysTrapFldSetBounds;
|
|
|
|
procedure FldSetFont(fldP: FieldPtr; fontID: FontID); syscall sysTrapFldSetFont;
|
|
|
|
procedure FldSetText(fldP: FieldPtr; textHandle: MemHandle; offset, size: UInt16); syscall sysTrapFldSetText;
|
|
|
|
procedure FldSetTextHandle(fldP: FieldPtr; textHandle: MemHandle); syscall sysTrapFldSetTextHandle;
|
|
|
|
procedure FldSetTextPtr(fldP: FieldPtr; textP: PChar); syscall sysTrapFldSetTextPtr;
|
|
|
|
procedure FldSetUsable(fldP: FieldPtr; usable: Boolean); syscall sysTrapFldSetUsable;
|
|
|
|
procedure FldSetSelection(fldP: FieldPtr; startPosition, endPosition: UInt16); syscall sysTrapFldSetSelection;
|
|
|
|
procedure FldGrabFocus(fldP: FieldPtr); syscall sysTrapFldGrabFocus;
|
|
|
|
procedure FldReleaseFocus(fldP: FieldPtr); syscall sysTrapFldReleaseFocus;
|
|
|
|
function FldGetInsPtPosition(const fldP: FieldPtr): UInt16; syscall sysTrapFldGetInsPtPosition;
|
|
|
|
procedure FldSetInsPtPosition(fldP: FieldPtr; pos: UInt16); syscall sysTrapFldSetInsPtPosition;
|
|
|
|
procedure FldSetInsertionPoint(fldP: FieldPtr; pos: UInt16); syscall sysTrapFldSetInsertionPoint;
|
|
|
|
function FldGetScrollPosition(const fldP: FieldPtr): UInt16; syscall sysTrapFldGetScrollPosition;
|
|
|
|
procedure FldSetScrollPosition(fldP: FieldPtr; pos: UInt16); syscall sysTrapFldSetScrollPosition;
|
|
|
|
procedure FldGetScrollValues(const fldP: FieldPtr; var scrollPosP, textHeightP, fieldHeightP: UInt16); syscall sysTrapFldGetScrollValues;
|
|
|
|
function FldGetTextLength(const fldP: FieldPtr): UInt16; syscall sysTrapFldGetTextLength;
|
|
|
|
procedure FldScrollField(fldP: FieldPtr; linesToScroll: UInt16; direction: WinDirectionType); syscall sysTrapFldScrollField;
|
|
|
|
function FldScrollable(const fldP: FieldPtr; direction: WinDirectionType): Boolean; syscall sysTrapFldScrollable;
|
|
|
|
function FldGetVisibleLines(const fldP: FieldPtr): UInt16; syscall sysTrapFldGetVisibleLines;
|
|
|
|
function FldGetTextHeight(const fldP: FieldPtr): UInt16; syscall sysTrapFldGetTextHeight;
|
|
|
|
function FldCalcFieldHeight(const chars: PChar; maxWidth: UInt16): UInt16; syscall sysTrapFldCalcFieldHeight;
|
|
|
|
function FldWordWrap(const chars: PChar; maxWidth: Int16): UInt16; syscall sysTrapFldWordWrap;
|
|
|
|
procedure FldCompactText(fldP: FieldPtr); syscall sysTrapFldCompactText;
|
|
|
|
function FldDirty(const fldP: FieldPtr): Boolean; syscall sysTrapFldDirty;
|
|
|
|
procedure FldSetDirty(fldP: FieldPtr; dirty: Boolean); syscall sysTrapFldSetDirty;
|
|
|
|
function FldGetMaxChars(const fldP: FieldPtr): UInt16; syscall sysTrapFldGetMaxChars;
|
|
|
|
procedure FldSetMaxChars(fldP: FieldPtr; maxChars: UInt16); syscall sysTrapFldSetMaxChars;
|
|
|
|
function FldInsert(fldP: FieldPtr; const insertChars: PChar; insertLen: UInt16): Boolean; syscall sysTrapFldInsert;
|
|
|
|
procedure FldDelete(fldP: FieldPtr; start, end_: UInt16); syscall sysTrapFldDelete;
|
|
|
|
procedure FldUndo(fldP: FieldPtr); syscall sysTrapFldUndo;
|
|
|
|
function FldGetTextAllocatedSize(const fldP: FieldPtr): UInt16; syscall sysTrapFldGetTextAllocatedSize;
|
|
|
|
procedure FldSetTextAllocatedSize(fldP: FieldPtr; allocatedSize: UInt16); syscall sysTrapFldSetTextAllocatedSize;
|
|
|
|
procedure FldGetAttributes(const fldP: FieldPtr; attrP: FieldAttrPtr); syscall sysTrapFldGetAttributes;
|
|
|
|
procedure FldSetAttributes(fldP: FieldPtr; const attrP: FieldAttrPtr); syscall sysTrapFldSetAttributes;
|
|
|
|
procedure FldSendChangeNotification(const fldP: FieldPtr); syscall sysTrapFldSendChangeNotification;
|
|
|
|
procedure FldSendHeightChangeNotification(const fldP: FieldPtr; pos: UInt16; numLines: Int16); syscall sysTrapFldSendHeightChangeNotification;
|
|
|
|
function FldMakeFullyVisible(fldP: FieldPtr): Boolean; syscall sysTrapFldMakeFullyVisible;
|
|
|
|
function FldGetNumberOfBlankLines(const fldP: FieldPtr): UInt16; syscall sysTrapFldGetNumberOfBlankLines;
|
|
|
|
function FldNewField(formPP: PointerPtr; id: UInt16; x, y, width, height: Coord;
|
|
font: FontID; maxChars: UInt32; editable, underlined, singleLine, dynamicSize: Boolean;
|
|
justification: JustificationType; autoShift, hasScrollBar, numeric: Boolean): FieldPtr; syscall sysTrapFldNewField;
|
|
|
|
// added in 4.0
|
|
procedure FldSetMaxVisibleLines(fldP: FieldPtr; maxLines: UInt8); syscall sysTrapFldSetMaxVisibleLines;
|
|
|
|
implementation
|
|
|
|
end. |