home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
sibylft1.zip
/
DOC.DAT
/
DOC
/
SPCC
/
FORMS.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1997-04-08
|
119KB
|
2,702 lines
{╔══════════════════════════════════════════════════════════════════════════╗
║ ║
║ Sibyl Portable Component Classes ║
║ ║
║ Copyright (c) 1995,97 SpeedSoft Germany, All rights reserved. ║
║ ║
╚══════════════════════════════════════════════════════════════════════════╝}
UNIT Forms;
{$b-}
INTERFACE
{$IFDEF OS2}
USES Os2Def,BseDos,PmWin,PmGpi,PmDev,PmStdDlg,PmBitmap,PmHelp;
{$ENDIF}
{$IFDEF Win32}
USES WinDef,WinBase,WinNT,WinUser,WinGDI,CommCtrl;
{$ENDIF}
USES Messages,Dos,SysUtils,Classes;
TYPE
{TCommand type encapsulates WM_COMMAND messages. Commands apply
to buttons and menu entries. There are some predefined commands that
appear within the inspector. If you define your own command constants
you should use values above cmUser to avoid conflicts with internal
commands}
{$M+}
TCommand = LONGWORD;
CONST
{predefined Command Ids}
cmNull = TCommand(0);
cmBase = $8000;
cmFile = TCommand(cmBase+1);
cmOpen = TCommand(cmBase+2);
cmNew = TCommand(cmBase+3);
cmSave = TCommand(cmBase+5);
cmSaveAs = TCommand(cmBase+6);
cmSaveAll = TCommand(cmBase+7);
cmPrint = TCommand(cmBase+8);
cmExit = TCommand(cmBase+9);
cmAbout = TCommand(cmBase+10);
cmUndo = TCommand(cmBase+11);
cmRedo = TCommand(cmBase+12);
cmCut = TCommand(cmBase+13);
cmCopy = TCommand(cmBase+14);
cmPaste = TCommand(cmBase+15);
cmTile = TCommand(cmBase+16);
cmCascade = TCommand(cmBase+17);
cmCloseAll = TCommand(cmBase+18);
cmNext = TCommand(cmBase+19);
cmPrevious = TCommand(cmBase+20);
cmCloseTop = TCommand(cmBase+21);
cmMaximize = TCommand(cmBase+22);
cmMinimize = TCommand(cmBase+23);
cmRestore = TCommand(cmBase+24);
cmFind = TCommand(cmBase+25);
cmReplace = TCommand(cmBase+26);
cmHelpIndex = TCommand(cmBase+27);
cmHelpContents = TCommand(cmBase+28);
cmHelpOnHelp = TCommand(cmBase+29);
cmKeysHelp = TCommand(cmBase+30);
cmTopicSearch = TCommand(cmBase+31);
cmChangeDir = TCommand(cmBase+32);
cmSearchAgain = TCommand(cmBase+33);
cmSelectAll = TCommand(cmBase+34);
cmDeselectAll = TCommand(cmBase+35);
cmBack = TCommand(cmBase+36);
cmForward = TCommand(cmBase+37);
cmDelete = TCommand(cmBase+38);
cmCreateDir = TCommand(cmBase+39);
cmOk = TCommand(cmBase+50);
cmCancel = TCommand(cmBase+51);
cmHelp = TCommand(cmBase+52);
cmYes = TCommand(cmBase+53);
cmNo = TCommand(cmBase+54);
cmClose = TCommand(cmBase+55);
cmAbort = TCommand(cmBase+56);
cmRetry = TCommand(cmBase+57);
cmIgnore = TCommand(cmBase+58);
cmAll = TCommand(cmBase+59);
cmAccept = TCommand(cmBase+60);
cmDiscard = TCommand(cmBase+61);
cmDefault = TCommand(cmBase+62);
cmUser = TCommand(cmBase+$1000);
{$M-}
CONST
WM_CAPTUREFOCUS = WM_USER+1;
WM_DDE_DESTROY = WM_USER+2;
CM_COMMAND = WM_COMMAND;
CM_PARENTPENCOLORCHANGED = cmBase+110;
CM_PARENTCOLORCHANGED = cmBase+111;
CM_PARENTFONTCHANGED = cmBase+112;
CM_BUTTONPRESSED = cmBase+120;
CM_RELEASE = cmBase+125;
CM_TEXTCHANGED = cmBase+126;
CM_UPDATEBUTTONS = cmBase+127;
CONST
{Caret Timer values for use with BlinkTime}
{$M+}
ctNormal = 500;
ctFast = 100;
{$M-}
TYPE
{General keycode type. Keycode constants apply to ScanEvent methods}
{$M+}
TKeyCode = LONGWORD;
CONST
{predefined Keyboars codes. To determine if Ctrl,Shift or Alt was
pressed together with the key you may use boolean operations}
kbNull = TKeyCode(0);
kb_VK = 256;
kb_Ctrl = 512;
kb_Shift = 1024;
kb_Alt = 2048;
kb_Char = 4096;
kbF1 = TKeyCode(kb_VK + VK_F1);
kbF2 = TKeyCode(kb_VK + VK_F2);
kbF3 = TKeyCode(kb_VK + VK_F3);
kbF4 = TKeyCode(kb_VK + VK_F4);
kbF5 = TKeyCode(kb_VK + VK_F5);
kbF6 = TKeyCode(kb_VK + VK_F6);
kbF7 = TKeyCode(kb_VK + VK_F7);
kbF8 = TKeyCode(kb_VK + VK_F8);
kbF9 = TKeyCode(kb_VK + VK_F9);
kbF10 = TKeyCode(kb_VK + VK_F10);
kbF11 = TKeyCode(kb_VK + VK_F11);
kbF12 = TKeyCode(kb_VK + VK_F12);
kbCLeft = TKeyCode(kb_VK + VK_LEFT);
kbCRight = TKeyCode(kb_VK + VK_RIGHT);
kbCUp = TKeyCode(kb_VK + VK_UP);
kbCDown = TKeyCode(kb_VK + VK_DOWN);
kbDel = TKeyCode(kb_VK + VK_DELETE);
kbIns = TKeyCode(kb_VK + VK_INSERT);
kbEnd = TKeyCode(kb_VK + VK_END);
kbHome = TKeyCode(kb_VK + VK_HOME);
{$IFDEF OS2}
kbPageDown = TKeyCode(kb_VK + VK_PAGEDOWN);
kbPageUp = TKeyCode(kb_VK + VK_PAGEUP);
kbBkSp = TKeyCode(kb_VK + VK_BACKSPACE);
kbCR = TKeyCode(kb_VK + VK_NEWLINE);
kbESC = TKeyCode(kb_VK + VK_ESC);
kbCapsLock = TKeyCode(kb_VK + VK_CAPSLOCK);
kbScrollLock = TKeyCode(kb_VK + VK_SCRLLOCK);
kbEnter = TKeyCode(kb_VK + VK_ENTER);
kbPrintScrn = TKeyCode(kb_VK + VK_PRINTSCRN);
kbCtrl = TKeyCode(kb_VK + VK_CTRL + kb_Ctrl);
kbAlt = TKeyCode(kb_VK + VK_ALT + kb_Alt);
kbAltGraf = TKeyCode(kb_VK + VK_ALTGRAF);
kbBackTab = TKeyCode(kb_VK + VK_BACKTAB);
kbBreak = TKeyCode(kb_VK + VK_BREAK);
{$ENDIF}
{$IFDEF Win32}
kbPageDown = TKeyCode(kb_VK + VK_NEXT);
kbPageUp = TKeyCode(kb_VK + VK_PRIOR);
kbBkSp = TKeyCode(kb_VK + VK_BACK);
kbCR = TKeyCode(kb_VK + VK_RETURN);
kbESC = TKeyCode(kb_VK + VK_ESCAPE);
kbCapsLock = TKeyCode(kb_VK + VK_CAPITAL);
kbScrollLock = TKeyCode(kb_VK + VK_SCROLL);
kbEnter = TKeyCode(kb_VK + VK_RETURN);
kbPrintScrn = TKeyCode(kb_VK + VK_PRINT);
kbCtrl = TKeyCode(kb_VK + VK_CONTROL + kb_Ctrl);
kbAlt = TKeyCode(kb_VK + VK_MENU + kb_Alt);
kbAltGraf = TKeyCode(kb_VK + VK_MENU + kb_Alt + kb_Ctrl);
kbBackTab = TKeyCode(kb_VK + VK_TAB);
kbBreak = TKeyCode(kb_VK + VK_ESCAPE); {?}
{$ENDIF}
kbTab = TKeyCode(kb_VK + VK_TAB);
kbNumLock = TKeyCode(kb_VK + VK_NUMLOCK);
kbSpace = TKeyCode(kb_VK + VK_SPACE);
kbPause = TKeyCode(kb_VK + VK_PAUSE);
kbShift = TKeyCode(kb_VK + VK_SHIFT + kb_Shift);
{Shift Codes are basic codes + kb_Shift}
kbShiftF1 = TKeyCode(kb_Shift + kbF1);
kbShiftF2 = TKeyCode(kb_Shift + kbF2);
kbShiftF3 = TKeyCode(kb_Shift + kbF3);
kbShiftF4 = TKeyCode(kb_Shift + kbF4);
kbShiftF5 = TKeyCode(kb_Shift + kbF5);
kbShiftF6 = TKeyCode(kb_Shift + kbF6);
kbShiftF7 = TKeyCode(kb_Shift + kbF7);
kbShiftF8 = TKeyCode(kb_Shift + kbF8);
kbShiftF9 = TKeyCode(kb_Shift + kbF9);
kbShiftF10 = TKeyCode(kb_Shift + kbF10);
kbShiftF11 = TKeyCode(kb_Shift + kbF11);
kbShiftF12 = TKeyCode(kb_Shift + kbF12);
kbShiftCLeft = TKeyCode(kb_Shift + kbCLeft);
kbShiftCRight = TKeyCode(kb_Shift + kbCRight);
kbShiftCUp = TKeyCode(kb_Shift + kbCUp);
kbShiftCDown = TKeyCode(kb_Shift + kbCDown);
kbShiftDel = TKeyCode(kb_Shift + kbDel);
kbShiftIns = TKeyCode(kb_Shift + kbIns);
kbShiftEnd = TKeyCode(kb_Shift + kbEnd);
kbShiftHome = TKeyCode(kb_Shift + kbHome);
kbShiftPageDown = TKeyCode(kb_Shift + kbPageDown);
kbShiftPageUp = TKeyCode(kb_Shift + kbPageUp);
kbShiftBkSp = TKeyCode(kb_Shift + kbBkSp);
kbShiftCR = TKeyCode(kb_Shift + kbCR);
kbShiftSpace = TKeyCode(kb_Shift + kbSpace);
kbShiftTab = TKeyCode(kb_Shift + kbBackTab);
kbShiftEnter = TKeyCode(kb_Shift + kbEnter);
kbShiftPause = TKeyCode(kb_Shift + kbPause);
kbShiftBreak = TKeyCode(kb_Shift + kbBreak);
{Ctrl codes are basic codes + kbCtrl}
kbCtrl0 = TKeyCode(kb_Ctrl + kb_Char + 48);
kbCtrl1 = TKeyCode(kb_Ctrl + kb_Char + 49);
kbCtrl2 = TKeyCode(kb_Ctrl + kb_Char + 50);
kbCtrl3 = TKeyCode(kb_Ctrl + kb_Char + 51);
kbCtrl4 = TKeyCode(kb_Ctrl + kb_Char + 52);
kbCtrl5 = TKeyCode(kb_Ctrl + kb_Char + 53);
kbCtrl6 = TKeyCode(kb_Ctrl + kb_Char + 54);
kbCtrl7 = TKeyCode(kb_Ctrl + kb_Char + 55);
kbCtrl8 = TKeyCode(kb_Ctrl + kb_Char + 56);
kbCtrl9 = TKeyCode(kb_Ctrl + kb_Char + 57);
kbCtrlA = TKeyCode(kb_Ctrl + kb_Char + 97);
kbCtrlB = TKeyCode(kb_Ctrl + kb_Char + 98);
kbCtrlC = TKeyCode(kb_Ctrl + kb_Char + 99);
kbCtrlD = TKeyCode(kb_Ctrl + kb_Char + 100);
kbCtrlE = TKeyCode(kb_Ctrl + kb_Char + 101);
kbCtrlF = TKeyCode(kb_Ctrl + kb_Char + 102);
kbCtrlG = TKeyCode(kb_Ctrl + kb_Char + 103);
kbCtrlH = TKeyCode(kb_Ctrl + kb_Char + 104);
kbCtrlI = TKeyCode(kb_Ctrl + kb_Char + 105);
kbCtrlJ = TKeyCode(kb_Ctrl + kb_Char + 106);
kbCtrlK = TKeyCode(kb_Ctrl + kb_Char + 107);
kbCtrlL = TKeyCode(kb_Ctrl + kb_Char + 108);
kbCtrlM = TKeyCode(kb_Ctrl + kb_Char + 109);
kbCtrlN = TKeyCode(kb_Ctrl + kb_Char + 110);
kbCtrlO = TKeyCode(kb_Ctrl + kb_Char + 111);
kbCtrlP = TKeyCode(kb_Ctrl + kb_Char + 112);
kbCtrlQ = TKeyCode(kb_Ctrl + kb_Char + 113);
kbCtrlR = TKeyCode(kb_Ctrl + kb_Char + 114);
kbCtrlS = TKeyCode(kb_Ctrl + kb_Char + 115);
kbCtrlT = TKeyCode(kb_Ctrl + kb_Char + 116);
kbCtrlU = TKeyCode(kb_Ctrl + kb_Char + 117);
kbCtrlV = TKeyCode(kb_Ctrl + kb_Char + 118);
kbCtrlW = TKeyCode(kb_Ctrl + kb_Char + 119);
kbCtrlX = TKeyCode(kb_Ctrl + kb_Char + 120);
kbCtrlY = TKeyCode(kb_Ctrl + kb_Char + 121);
kbCtrlZ = TKeyCode(kb_Ctrl + kb_Char + 122);
kbCtrlF1 = TKeyCode(kb_Ctrl + kbF1);
kbCtrlF2 = TKeyCode(kb_Ctrl + kbF2);
kbCtrlF3 = TKeyCode(kb_Ctrl + kbF3);
kbCtrlF4 = TKeyCode(kb_Ctrl + kbF4);
kbCtrlF5 = TKeyCode(kb_Ctrl + kbF5);
kbCtrlF6 = TKeyCode(kb_Ctrl + kbF6);
kbCtrlF7 = TKeyCode(kb_Ctrl + kbF7);
kbCtrlF8 = TKeyCode(kb_Ctrl + kbF8);
kbCtrlF9 = TKeyCode(kb_Ctrl + kbF9);
kbCtrlF10 = TKeyCode(kb_Ctrl + kbF10);
kbCtrlF11 = TKeyCode(kb_Ctrl + kbF11);
kbCtrlF12 = TKeyCode(kb_Ctrl + kbF12);
kbCtrlCLeft = TKeyCode(kb_Ctrl + kbCLeft);
kbCtrlCRight = TKeyCode(kb_Ctrl + kbCRight);
kbCtrlCUp = TKeyCode(kb_Ctrl + kbCUp);
kbCtrlCDown = TKeyCode(kb_Ctrl + kbCDown);
kbCtrlDel = TKeyCode(kb_Ctrl + kbDel);
kbCtrlIns = TKeyCode(kb_Ctrl + kbIns);
kbCtrlEnd = TKeyCode(kb_Ctrl + kbEnd);
kbCtrlHome = TKeyCode(kb_Ctrl + kbHome);
kbCtrlPageDown = TKeyCode(kb_Ctrl + kbPageDown);
kbCtrlPageUp = TKeyCode(kb_Ctrl + kbPageUp);
kbCtrlBkSp = TKeyCode(kb_Ctrl + kbBkSp);
kbCtrlCR = TKeyCode(kb_Ctrl + kbCR);
kbCtrlSpace = TKeyCode(kb_Ctrl + kbSpace);
kbCtrlTab = TKeyCode(kb_Ctrl + kbTab);
kbCtrlEnter = TKeyCode(kb_Ctrl + kbEnter);
kbCtrlPause = TKeyCode(kb_Ctrl + kbPause);
kbCtrlBreak = TKeyCode(kb_Ctrl + kbBreak);
{Alt codes are basic codes + kbAlt}
kbAlt0 = TKeyCode(kb_Alt + kb_Char + 48);
kbAlt1 = TKeyCode(kb_Alt + kb_Char + 49);
kbAlt2 = TKeyCode(kb_Alt + kb_Char + 50);
kbAlt3 = TKeyCode(kb_Alt + kb_Char + 51);
kbAlt4 = TKeyCode(kb_Alt + kb_Char + 52);
kbAlt5 = TKeyCode(kb_Alt + kb_Char + 53);
kbAlt6 = TKeyCode(kb_Alt + kb_Char + 54);
kbAlt7 = TKeyCode(kb_Alt + kb_Char + 55);
kbAlt8 = TKeyCode(kb_Alt + kb_Char + 56);
kbAlt9 = TKeyCode(kb_Alt + kb_Char + 57);
kbAltA = TKeyCode(kb_Alt + kb_Char + 97);
kbAltB = TKeyCode(kb_Alt + kb_Char + 98);
kbAltC = TKeyCode(kb_Alt + kb_Char + 99);
kbAltD = TKeyCode(kb_Alt + kb_Char + 100);
kbAltE = TKeyCode(kb_Alt + kb_Char + 101);
kbAltF = TKeyCode(kb_Alt + kb_Char + 102);
kbAltG = TKeyCode(kb_Alt + kb_Char + 103);
kbAltH = TKeyCode(kb_Alt + kb_Char + 104);
kbAltI = TKeyCode(kb_Alt + kb_Char + 105);
kbAltJ = TKeyCode(kb_Alt + kb_Char + 106);
kbAltK = TKeyCode(kb_Alt + kb_Char + 107);
kbAltL = TKeyCode(kb_Alt + kb_Char + 108);
kbAltM = TKeyCode(kb_Alt + kb_Char + 109);
kbAltN = TKeyCode(kb_Alt + kb_Char + 110);
kbAltO = TKeyCode(kb_Alt + kb_Char + 111);
kbAltP = TKeyCode(kb_Alt + kb_Char + 112);
kbAltQ = TKeyCode(kb_Alt + kb_Char + 113);
kbAltR = TKeyCode(kb_Alt + kb_Char + 114);
kbAltS = TKeyCode(kb_Alt + kb_Char + 115);
kbAltT = TKeyCode(kb_Alt + kb_Char + 116);
kbAltU = TKeyCode(kb_Alt + kb_Char + 117);
kbAltV = TKeyCode(kb_Alt + kb_Char + 118);
kbAltW = TKeyCode(kb_Alt + kb_Char + 119);
kbAltX = TKeyCode(kb_Alt + kb_Char + 120);
kbAltY = TKeyCode(kb_Alt + kb_Char + 121);
kbAltZ = TKeyCode(kb_Alt + kb_Char + 122);
kbAltF1 = TKeyCode(kb_Alt + kbF1);
kbAltF2 = TKeyCode(kb_Alt + kbF2);
kbAltF3 = TKeyCode(kb_Alt + kbF3);
kbAltF4 = TKeyCode(kb_Alt + kbF4);
kbAltF5 = TKeyCode(kb_Alt + kbF5);
kbAltF6 = TKeyCode(kb_Alt + kbF6);
kbAltF7 = TKeyCode(kb_Alt + kbF7);
kbAltF8 = TKeyCode(kb_Alt + kbF8);
kbAltF9 = TKeyCode(kb_Alt + kbF9);
kbAltF10 = TKeyCode(kb_Alt + kbF10);
kbAltF11 = TKeyCode(kb_Alt + kbF11);
kbAltF12 = TKeyCode(kb_Alt + kbF12);
kbAltCLeft = TKeyCode(kb_Alt + kbCLeft);
kbAltCRight = TKeyCode(kb_Alt + kbCRight);
kbAltCUp = TKeyCode(kb_Alt + kbCUp);
kbAltCDown = TKeyCode(kb_Alt + kbCDown);
kbAltDel = TKeyCode(kb_Alt + kbDel);
kbAltIns = TKeyCode(kb_Alt + kbIns);
kbAltEnd = TKeyCode(kb_Alt + kbEnd);
kbAltHome = TKeyCode(kb_Alt + kbHome);
kbAltPageDown = TKeyCode(kb_Alt + kbPageDown);
kbAltPageUp = TKeyCode(kb_Alt + kbPageUp);
kbAltBkSp = TKeyCode(kb_Alt + kbBkSp);
kbAltCR = TKeyCode(kb_Alt + kbCR);
kbAltSpace = TKeyCode(kb_Alt + kbSpace);
kbAltTab = TKeyCode(kb_Alt + kbTab);
kbAltEnter = TKeyCode(kb_Alt + kbEnter);
kbAltPause = TKeyCode(kb_Alt + kbPause);
kbAltBreak = TKeyCode(kb_Alt + kbBreak);
{$M-}
TYPE
{General system type. System constants apply to SystemMetrics method}
{$M+}
TSystemMetrics = LONGINT;
CONST
{System Value Indices for TScreen.SystemMetrics()}
{$IFDEF OS2}
smCyTitlebar = TSystemMetrics(SV_CYTITLEBAR);
smCyMenu = TSystemMetrics(SV_CYMENU);
smCxMinMaxButton = TSystemMetrics(SV_CXMINMAXBUTTON);
smCyMinMaxButton = TSystemMetrics(SV_CYMINMAXBUTTON);
smCxSizeBorder = TSystemMetrics(SV_CXSIZEBORDER);
smCySizeBorder = TSystemMetrics(SV_CYSIZEBORDER);
smCxDlgBorder = TSystemMetrics(SV_CXDLGFRAME);
smCyDlgBorder = TSystemMetrics(SV_CYDLGFRAME);
smCxBorder = TSystemMetrics(SV_CXBORDER);
smCyBorder = TSystemMetrics(SV_CYBORDER);
smCxIcon = TSystemMetrics(SV_CXICON);
smCyIcon = TSystemMetrics(SV_CYICON);
smCxPointer = TSystemMetrics(SV_CXPOINTER);
smCyPointer = TSystemMetrics(SV_CYPOINTER);
smCxScreen = TSystemMetrics(SV_CXSCREEN);
smCyScreen = TSystemMetrics(SV_CYSCREEN);
smCxFullScreen = TSystemMetrics(SV_CXFULLSCREEN);
smCyFullScreen = TSystemMetrics(SV_CYFULLSCREEN);
smCxVScroll = TSystemMetrics(SV_CXVSCROLL);
smCyHScroll = TSystemMetrics(SV_CYHSCROLL);
smCxHScrollArrow = TSystemMetrics(SV_CXHSCROLLARROW);
smCyHScrollArrow = TSystemMetrics(SV_CYHSCROLL);
smCxVScrollArrow = TSystemMetrics(SV_CXVSCROLL);
smCyVScrollArrow = TSystemMetrics(SV_CYVSCROLLARROW);
smCxHSlider = TSystemMetrics(SV_CXHSLIDER);
smCyVSlider = TSystemMetrics(SV_CYVSLIDER);
smCMouseButtons = TSystemMetrics(SV_CMOUSEBUTTONS);
smMousePresent = TSystemMetrics(SV_MOUSEPRESENT);
smSwapButton = TSystemMetrics(SV_SWAPBUTTON);
smCxDoubleClick = TSystemMetrics(SV_CXDBLCLK);
smCyDoubleClick = TSystemMetrics(SV_CYDBLCLK);
smDebug = TSystemMetrics(SV_DEBUG);
{$ENDIF}
{$IFDEF Win32}
smCyTitlebar = TSystemMetrics(SM_CYCAPTION);
smCyMenu = TSystemMetrics(SM_CYMENU);
smCxMinMaxButton = TSystemMetrics(SM_CXSIZE);
smCyMinMaxButton = TSystemMetrics(SM_CYSIZE);
smCxSizeBorder = TSystemMetrics(SM_CXFRAME);
smCySizeBorder = TSystemMetrics(SM_CYFRAME);
smCxDlgBorder = TSystemMetrics(SM_CXDLGFRAME);
smCyDlgBorder = TSystemMetrics(SM_CYDLGFRAME);
smCxBorder = TSystemMetrics(SM_CXBORDER);
smCyBorder = TSystemMetrics(SM_CYBORDER);
smCxIcon = TSystemMetrics(SM_CXICON);
smCyIcon = TSystemMetrics(SM_CYICON);
smCxPointer = TSystemMetrics(SM_CXCURSOR);
smCyPointer = TSystemMetrics(SM_CYCURSOR);
smCxScreen = TSystemMetrics(SM_CXSCREEN);
smCyScreen = TSystemMetrics(SM_CYSCREEN);
smCxFullScreen = TSystemMetrics(SM_CXFULLSCREEN);
smCyFullScreen = TSystemMetrics(SM_CYFULLSCREEN);
smCxVScroll = TSystemMetrics(SM_CXVSCROLL);
smCyHScroll = TSystemMetrics(SM_CYHSCROLL);
smCxHScrollArrow = TSystemMetrics(SM_CXHSCROLL);
smCyHScrollArrow = TSystemMetrics(SM_CYHSCROLL);
smCxVScrollArrow = TSystemMetrics(SM_CXVSCROLL);
smCyVScrollArrow = TSystemMetrics(SM_CYVSCROLL);
smCxHSlider = TSystemMetrics(SM_CXHTHUMB);
smCyVSlider = TSystemMetrics(SM_CYVTHUMB);
smCMouseButtons = TSystemMetrics(SM_CMOUSEBUTTONS);
smMousePresent = TSystemMetrics(SM_MOUSEPRESENT);
smSwapButton = TSystemMetrics(SM_SWAPBUTTON);
smCxDoubleClick = TSystemMetrics(SM_CXDOUBLECLK);
smCyDoubleClick = TSystemMetrics(SM_CYDOUBLECLK);
smDebug = TSystemMetrics(SM_DEBUG);
{$ENDIF}
{$M-}
CONST
{Standard Clipboard formats for use within the SetData Method in
TClipBoard}
{$IFDEF OS2}
cfText = CF_TEXT;
cfBitmap = CF_BITMAP;
cfMetaFile = CF_METAFILE;
cfPalette = CF_PALETTE;
cfDspText = CF_DSPTEXT;
cfDspBitmap = CF_DSPBITMAP;
cfDspMetaFile = CF_DSPMETAFILE;
{$ENDIF}
{$IFDEF Win32}
cfText = CF_TEXT;
cfBitmap = CF_BITMAP;
cfMetaFile = CF_METAFILEPICT;
cfPalette = CF_PALETTE;
cfDspText = CF_DSPTEXT;
cfDspBitmap = CF_DSPBITMAP;
cfDspMetaFile = CF_DSPMETAFILEPICT;
{$ENDIF}
TYPE
TClipboard=CLASS(TComponent)
PRIVATE
FOpenWin: HWindow;
FUNCTION GetOwner:HWindow;
FUNCTION GetViewer:HWindow;
PROCEDURE SetViewer(viewer:HWindow);
PUBLIC
FUNCTION Open(ahwnd:HWindow):BOOLEAN;
FUNCTION Close:BOOLEAN;
FUNCTION Empty:BOOLEAN;
FUNCTION SetData(data,format:LONGWORD):BOOLEAN;
FUNCTION GetData(format:LONGWORD):LONGWORD;
FUNCTION CountFormats:LONGINT;
FUNCTION EnumFormats(FormatIndex:LONGWORD):LONGWORD;
FUNCTION IsFormatAvailable(format:LONGWORD):BOOLEAN;
FUNCTION RegisterFormat(CONST s:STRING):LONGWORD;
FUNCTION GetFormatName(format:LONGWORD):STRING;
PROPERTY Parent:HWindow read GetOwner;
PROPERTY Viewer:HWindow read GetViewer write SetViewer;
END;
TYPE
{predefined mouse cursor constants}
{$M+}
TCursor = LONGINT;
CONST
crDefault = TCursor(0);
crNone = TCursor(-1);
crArrow = TCursor(-2);
crCross = TCursor(-3);
crIBeam = TCursor(-4);
crSize = TCursor(-5);
crSizeNESW = TCursor(-6);
crSizeNS = TCursor(-7);
crSizeNWSE = TCursor(-8);
crSizeWE = TCursor(-9);
crUpArrow = TCursor(-10);
crHourGlass = TCursor(-11);
crDrag = TCursor(-12);
crNoDrop = TCursor(-13);
crHSplit = TCursor(-14);
crVSplit = TCursor(-15);
crMultiDrag = TCursor(-16);
crSQLWait = TCursor(-17);
crNo = TCursor(-18);
crAppStart = TCursor(-19);
crHelp = TCursor(-20);
TYPE
{standard font types}
TFontType=(ftBitmap,ftOutline);
{standard font attributes}
TFontAttributes=SET OF(faItalic,faUnderscore,faOutline,faStrikeOut,faBold);
{standard font pitches}
TFontPitch=(fpFixed,fpProportional);
{standard font character set}
TFontCharSet=(fcsSBCS,fcsDBCS,fcsMBCS); {single,double,mixed Byte}
{$M-}
////////////////////////////////////////////////////////////////////////////
// Change Font attributes only if you have created a font copy using
// CreateCompatibleFont or created a new font using GetFontFromPointSize
// Changing predefined Fonts as returned from GetSystemSmallFont or
// GetSystemFixedFont will have global effects !
////////////////////////////////////////////////////////////////////////////
TFont=CLASS(TComponent)
PRIVATE
FInternalPointSize:LONGWORD; {Internal Point.Name value or NIL}
{$IFDEF OS2}
FFontInfo:FONTMETRICS;
{$ENDIF}
{$IFDEF Win32}
FFontInfo:LOGFONT;
FHandle:HWindow;
FRefCount:LONGWORD;
{$ENDIF}
FUseCount:LONGWORD;
FCustom:BOOLEAN;
FDefault:BOOLEAN;
FAutoDestroy:BOOLEAN;
FFontType:TFontType;
FUNCTION GetName:STRING;
FUNCTION GetFamily:STRING;
FUNCTION GetPitch:TFontPitch;
FUNCTION GetHeight:LONGINT;
FUNCTION GetWidth:LONGINT;
FUNCTION GetAttributes:TFontAttributes;
PROCEDURE SetHeight(NewHeight:LONGINT);
PROCEDURE SetWidth(NewWidth:LONGINT);
PROCEDURE SetAttributes(NewAttr:TFontAttributes);
FUNCTION GetInternalLeading:LONGINT;
FUNCTION GetNominalPointSize:LONGINT;
FUNCTION GetMinimumPointSize:LONGINT;
FUNCTION GetMaximumPointSize:LONGINT;
FUNCTION GetCharSet:TFontCharSet;
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PUBLIC
CONSTRUCTOR Create(AOwner:TComponent);OVERRIDE;
FUNCTION WriteSCUResourceName(Stream:TResourceStream;ResName:TResourceName):BOOLEAN;
//if this is set to TRUE, the font is automatically freed when the control that owns
//the font is destroyed and no other control owns the font
//this option is only valid for fonts created with "CreateCompatibleFont"
PROPERTY IsDefault:BOOLEAN read FDefault; //undocumented !
PROPERTY AutoDestroy:BOOLEAN read FAutoDestroy write FAutoDestroy;
PROPERTY FaceName:STRING read GetName;
PROPERTY Family:STRING read GetFamily;
PROPERTY Height:LONGINT read GetHeight write SetHeight;
PROPERTY Width:LONGINT read GetWidth write SetWidth;
PROPERTY InternalLeading:LONGINT read GetInternalLeading;
PROPERTY NominalPointSize:LONGINT read GetNominalPointSize;
PROPERTY MinimumPointSize:LONGINT read GetMinimumPointSize;
PROPERTY MaximumPointSize:LONGINT read GetMaximumPointSize;
PROPERTY Attributes:TFontAttributes read GetAttributes write SetAttributes;
PROPERTY Pitch:TFontPitch read GetPitch;
PROPERTY CharSet:TFontCharSet read GetCharSet;
PROPERTY FontType:TFontType read FFontType;
PROPERTY PointSize:LONGWORD read FInternalPointSize write FInternalPointSize;
END;
{Canvas forward}
TCanvas=CLASS;
{standard class styles}
TClassStyles=SET OF (wcsSizeRedraw,wcsHitTest,
wcsFrame,wcsClipChildren,wcsClipSiblings,
wcsParentClip,wcsSaveBits,wcsSyncPaint,wcsOwnDC);
{Window class record}
TClassData=RECORD
StandardClass:BOOLEAN;
ClassName:CSTRING;
WindowProc:POINTER;
ClassStyle:TClassStyles;
DataCount:LONGWORD;
ClassULong:LONGWORD; {Only used for OS/2}
END;
{internal window procedure format}
{$IFDEF OS2}
TWndProc=FUNCTION(Win,msg,para1,para2:LONGWORD):LONGWORD;CDECL;
{$ENDIF}
{$IFDEF Win32}
TWndProc=FUNCTION(Win,msg,para1,para2:LONGWORD):LONGWORD;APIENTRY;
{$ENDIF}
{$M+}
{toolbar alignments}
TToolBarAlign=(tbLeft,tbRight,tbTop,tbBottom);
TToolBarAlignments=SET OF TToolBarAlign;
TToolBarBevel=(tbRaised,tbLowered,tbNone);
{$M-}
{Toolbar forward}
TToolBar=CLASS;
TToolBarClass=CLASS OF TToolBar;
{Control forward}
TControl=CLASS;
TControlClass=CLASS OF TControl;
{Form forward}
TForm=CLASS;
TFormClass=CLASS OF TForm;
{Timer forward}
TTimer=CLASS;
TTimerClass=CLASS OF TTimer;
{Graphic forward}
TGraphic=CLASS;
{standard help context type}
THelpContext=LONGWORD;
TTimer=CLASS(TComponent)
PRIVATE
FControl:TControl;
FId:LONGINT;
FRunning:BOOLEAN;
FTime:LONGINT;
FInterval:LONGINT;
FOnTimer:TNotifyEvent;
PROCEDURE Increment;
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE Timer;VIRTUAL;
PUBLIC
DESTRUCTOR Destroy;OVERRIDE;
PROCEDURE Start;
PROCEDURE Stop;
PROPERTY Id:LONGINT read FId;
PROPERTY Running:BOOLEAN read FRunning;
PROPERTY Time:LONGINT read FTime write FTime;
PUBLISHED
PROPERTY Interval:LONGINT read FInterval write FInterval;
PROPERTY OnTimer:TNotifyEvent read FOnTimer write FOnTimer;
END;
{standard menu entry styles}
TMenuItemStyles=SET OF (misText,misBitmap,misOwnerDraw,
misSubmenu,misMultMenu,misSysCommand,misHelp,misStatic,
misButtonSeparator,misBreak,misBreakSeparator,misGroup,misSingle);
{standard menu entry flags}
TMenuItemFlags=SET OF (mifNoDismiss,mifFramed,mifChecked,mifDisabled,
mifHilited);
{$M+}
TMenuBreak=(mbNone,mbBreak,mbBarBreak,mbSeparator);
{$M-}
{Menu forward}
TMenu=CLASS;
TMenuItem=CLASS(TComponent)
PRIVATE
FParent:TMenuItem;
FMenu:TMenu;
FMenuOwner:TControl; {Form}
FHandle:HWindow;
FItems:TList;
FInitItems:TList; {FItems or nil}
FCaption:PSTRING;
FStyles:TMenuItemStyles;
FFlags:TMenuItemFlags;
FGlyph:TGraphic;
FCommand:TCommand;
FInternalCommand:TCommand;
FCreated:BOOLEAN;
FDefWndProc:TWndProc;
FHelpContext:THelpContext;
FShortCut:TKeyCode;
FHint:PSTRING;
FOnClick:TNotifyEvent;
{$IFDEF OS2}
PROCEDURE WMChar(VAR Msg:TWMChar); message WM_CHAR;
PROCEDURE WMHelp(VAR Msg:TMessage); message WM_HELP;
{$ENDIF}
PROCEDURE SetShortCut(NewAccel:TKeyCode);
FUNCTION GetCaption:STRING;
PROCEDURE SetCaption(NewCaption:STRING);
PROCEDURE SetStyles(NewStyles:TMenuItemStyles);
PROCEDURE SetFlags(NewFlags:TMenuItemFlags);
FUNCTION GetULongFromStyle:LONGWORD;
FUNCTION GetULongFromFlags:LONGWORD;
PROCEDURE SetGlyph(NewGlyph:TGraphic);
PROCEDURE SetCommand(NewCommand:TCommand);
PROCEDURE SetHint(CONST NewText:STRING);
FUNCTION GetHint:STRING;
FUNCTION GetChecked:BOOLEAN;
PROCEDURE SetChecked(Value:BOOLEAN);
FUNCTION GetEnabled:BOOLEAN;
PROCEDURE SetEnabled(Value:BOOLEAN);
FUNCTION GetBreak:TMenuBreak;
PROCEDURE SetBreak(Value:TMenuBreak);
FUNCTION GetSubMenu:BOOLEAN;
PROCEDURE SetSubMenu(Value:BOOLEAN);
FUNCTION GetCount:LONGINT;
FUNCTION GetItem(Index:LONGINT):TMenuItem;
FUNCTION GetMenuIndex:LONGINT;
FUNCTION GetIsEditMenuItem:BOOLEAN;
{$IFDEF Win32}
PROCEDURE RedrawMenuBar;
{$ENDIF}
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE GetChildren(Proc:TGetChildProc);OVERRIDE;
PROCEDURE LoadedFromSCU(SCUParent:TComponent);OVERRIDE;
PROCEDURE CreateWnd;VIRTUAL;
PROPERTY Flags:TMenuItemFlags read FFlags write SetFlags;
PROPERTY Styles:TMenuItemStyles read FStyles write SetStyles;
PUBLIC
DESTRUCTOR Destroy;OVERRIDE;
PROCEDURE Add(Item:TMenuItem);
PROCEDURE Insert(Index:LONGINT;Item:TMenuItem);
FUNCTION IndexOf(Item:TMenuItem):LONGINT;
PROCEDURE Click;VIRTUAL;
PROPERTY IsEditMenuItem:BOOLEAN read GetIsEditMenuItem; {raus}
PROPERTY Handle:HWindow read FHandle;
PROPERTY Count:LONGINT read GetCount;
PROPERTY Items[Index:LONGINT]:TMenuItem read GetItem; Default;
PROPERTY MenuIndex:LONGINT read GetMenuIndex; {write SetMenuIndex;}
PROPERTY Parent:TMenuItem read FParent;
PROPERTY Glyph:TGraphic read FGlyph write SetGlyph;
PUBLISHED
PROPERTY Caption:STRING read GetCaption write SetCaption;
PROPERTY Command:TCommand read FCommand write SetCommand;
PROPERTY HelpContext:THelpContext read FHelpContext write FHelpContext;
PROPERTY ShortCut:TKeyCode read FShortCut write SetShortCut;
PROPERTY Hint:STRING read GetHint write SetHint;
PROPERTY Checked:BOOLEAN read GetChecked write SetChecked;
PROPERTY Enabled:BOOLEAN read GetEnabled write SetEnabled;
PROPERTY Break:TMenuBreak read GetBreak write SetBreak;
PROPERTY Submenu:BOOLEAN read GetSubmenu write SetSubMenu;
PROPERTY OnClick:TNotifyEvent read FOnClick write FOnClick;
END;
TMenuItemClass=CLASS OF TMenuItem;
TMenu=CLASS(TComponent)
PRIVATE
FParent:TControl; {Frame}
FItems:TMenuItem;
FInitItems:TMenuItem; {FItems or nil}
FHandle:HWindow;
FResourceId:LONGWORD;
{$IFDEF OS2}
FDefWndProc:TWndProc;
{$ENDIF}
FFont:TFont;
{$IFDEF OS2}
PROCEDURE WMChar(VAR Msg:TWMChar); message WM_CHAR;
{$ENDIF}
FUNCTION ItemFromCommand(Command:TCommand):TMenuItem;
FUNCTION ItemFromInternalCommand(Command:TCommand):TMenuItem;
FUNCTION GetSelectedMenuItem:TMenuItem;
FUNCTION GetWidth:LONGINT;
FUNCTION GetHeight:LONGINT;
PROCEDURE SetFont(NewFont:TFont);
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE GetChildren(Proc:TGetChildProc);OVERRIDE;
PROCEDURE LoadedFromSCU(SCUParent:TComponent);OVERRIDE;
PROCEDURE LoadResource;
PROCEDURE CharEvent(Entry:TMenuItem;VAR Key:CHAR;rep:BYTE);VIRTUAL;
PROCEDURE ScanEvent(Entry:TMenuItem;VAR KeyCode:TKeyCode;rep:BYTE);VIRTUAL;
PROCEDURE CreateMenu;VIRTUAL;
PROCEDURE Show;VIRTUAL;
PROPERTY Width:LONGINT read GetWidth;
PROPERTY Height:LONGINT read GetHeight;
PUBLIC
DESTRUCTOR Destroy;OVERRIDE;
PROCEDURE DisableCommands(Cmds:ARRAY OF TCommand);
PROCEDURE EnableCommands(Cmds:ARRAY OF TCommand);
PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
PROPERTY Handle:HWindow read FHandle;
PROPERTY Items:TMenuItem read FItems;
PROPERTY MenuItems[Command:TCommand]:TMenuItem read ItemFromCommand;
PUBLISHED
PROPERTY ResourceId:LONGWORD read FResourceId write FResourceId;
PROPERTY Font:TFont read FFont write SetFont;
END;
TMenuClass=CLASS OF TMenu;
{MainMenu class}
TMainMenu=CLASS(TMenu)
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE Show;OVERRIDE;
PUBLIC
PROPERTY Height;
END;
TMainMenuClass=CLASS OF TMainMenu;
{$M+}
TPopupAlignment=(paLeft,paCenter,paRight);
{$M-}
{PopupMenu class}
TPopupMenu=CLASS(TMenu)
PRIVATE
FAutoPopup:BOOLEAN;
FPopupComponent:TComponent;
FAlignment:TPopupAlignment;
FOnPopup:TNotifyEvent;
PROCEDURE SetPopupComponent(NewComponent:TComponent);
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE CreateMenu;OVERRIDE;
PUBLIC
PROCEDURE Popup(X,Y:LONGINT);VIRTUAL;
PROPERTY Width;
PROPERTY Height;
PROPERTY PopupComponent:TComponent read FPopupComponent write SetPopupComponent;
PUBLISHED
PROPERTY AutoPopup:BOOLEAN read FAutoPopup write FAutoPopup;
PROPERTY Alignment:TPopupAlignment read FAlignment write FAlignment;
PROPERTY OnPopup:TNotifyEvent read FOnPopup write FOnPopup;
END;
TPopupMenuClass=CLASS OF TPopupMenu;
TCaret=CLASS
PRIVATE
FLeft,FBottom,FWidth,FHeight:LONGINT;
FCreated:BOOLEAN;
FBlinkTime:LONGINT;
FOldBlinkTime:LONGINT;
FControl:TControl;
PROCEDURE SetBlinkTime(ms:LONGINT);
PUBLIC
CONSTRUCTOR Create(Owner:TControl);VIRTUAL;
PROCEDURE SetPos(Left,Bottom:LONGINT);
PROCEDURE SetSize(Width,Height:LONGINT);
PROCEDURE Show;
PROCEDURE Hide;
PROCEDURE Remove;
PROPERTY Left:LONGINT read FLeft write FLeft;
PROPERTY Bottom:LONGINT read FBottom write FBottom;
PROPERTY Width:LONGINT read FWidth write FWidth;
PROPERTY Height:LONGINT read FHeight write FHeight;
PROPERTY Created:BOOLEAN read FCreated write FCreated;
PROPERTY BlinkTime:LONGINT read FBlinkTime write SetBlinkTime;
END;
{$M+}
TScrollCode=(scLineUp,scLineDown,scPageUp,scPageDown,
scColumnLeft,scColumnRight,scPageLeft,scPageRight,
scHorzTrack,scVertTrack,scHorzPosition,scVertPosition,
scHorzEndScroll,scVertEndScroll);
TDragMode=(dmManual,dmAutomatic);
TDragState=(dsDragEnter,dsDragMove,dsDragLeave);
TDragDropSourceType=(drtSibyl,drtSibylObject,drtText,drtBinData,drtString);
TDragDropRenderType=(drmSibyl,drmSibylObject,drmPrint,drmFile,drmString);
TDragDropOperation=(doDefault,doCopy,doMove,doLink,doUnknown);
TDragDropSupportedOps=SET OF(doCopyable,doMoveable,doLinkable);
PDragDropData=^TDragDropData;
{$M+}
TDragDropData=RECORD
{$M-}
SourceWindow:HWindow;
SourceType:TDragDropSourceType;
RenderType:TDragDropRenderType;
SourceString:String;
RenderString:String;
ContainerName:STRING;
SourceFileName:STRING;
TargetFileName:STRING;
SupportedOps:TDragDropSupportedOps;
DragOperation:TDragDropOperation;
ItemId:LONGWORD;
END;
TExternalDragDropObject=CLASS(TComponent)
PRIVATE
FDragDropData:TDragDropData;
PUBLIC
PROPERTY SourceWindow:HWindow read FDragDropData.SourceWindow;
PROPERTY SourceType:TDragDropSourceType read FDragDropData.SourceType;
PROPERTY RenderType:TDragDropRenderType read FDragDropData.RenderType;
PROPERTY SourceString:String read FDragDropData.SourceString;
PROPERTY RenderString:String read FDragDropData.RenderString;
PROPERTY ContainerName:STRING read FDragDropData.ContainerName;
PROPERTY SourceFileName:STRING read FDragDropData.SourceFileName;
PROPERTY TargetFileName:STRING read FDragDropData.TargetFileName;
PROPERTY SupportedOps:TDragDropSupportedOps read FDragDropData.SupportedOps;
PROPERTY DragOperation:TDragDropOperation read FDragDropData.DragOperation;
PROPERTY ItemId:LONGWORD read FDragDropData.ItemId;
END;
{$M-}
{ScrollbarControl forward}
TScrollBar=CLASS;
TScrollBarClass=CLASS OF TScrollBar;
{$M+}
{standard mouse button states}
TMouseButton=(mbRight,mbLeft,mbMiddle);
TShiftState=SET OF (ssShift,ssAlt,ssCtrl,ssRight,ssLeft,ssMiddle,ssDouble);
{TControl event types}
TCommandEvent=PROCEDURE(Sender:TObject;VAR Command:TCommand) OF OBJECT;
TKeyPressEvent=PROCEDURE(Sender:TObject;VAR Key:CHAR) OF OBJECT;
TScanEvent=PROCEDURE(Sender:TObject;VAR KeyCode:TKeyCode) OF OBJECT;
TMouseEvent=PROCEDURE(Sender:TObject;Button:TMouseButton;
Shift:TShiftState;X,Y:LONGINT) OF OBJECT;
TMouseMoveEvent=PROCEDURE(Sender:TObject;Shift:TShiftState;
X,Y:LONGINT) OF OBJECT;
TPaintEvent=PROCEDURE(Sender:TObject;CONST rec:TRect) OF OBJECT;
TCanDragEvent=PROCEDURE(Sender:TObject;X,Y:LONGINT;VAR Accept:BOOLEAN) OF OBJECT;
TStartDragEvent=PROCEDURE(Sender:TObject;VAR DragData:TDragDropData) OF OBJECT;
TEndDragEvent=PROCEDURE(Sender:TObject;Target:TObject;X,Y:LONGINT) OF OBJECT;
TDragOverEvent=PROCEDURE(Sender:TObject;Source:TObject;X,Y:LONGINT;
State:TDragState;VAR Accept:BOOLEAN) OF OBJECT;
TDragDropEvent=PROCEDURE(Sender:TObject;Source:TObject;X,Y:LONGINT) OF OBJECT;
TMenuEvent=PROCEDURE(Sender:TObject;AMenu:TMenu;Entry:TMenuItem) OF OBJECT;
TScrollStyle=(ssNone,ssHorizontal,ssVertical,ssBoth);
{Text Alignment constants}
TAlignment=(taLeftJustify,taRightJustify,taCenter);
{Alignment constants}
TAlign=(alNone,alTop,alBottom,alLeft,alRight,alClient,alFrame,alScale,
alCenter,alCenterX,alCenterY,
alFixedLeftTop,alFixedLeftBottom,alFixedRightTop,alFixedRightBottom);
{X Alignment constants}
TXAlign=(xaNone,xaParent,xaLeft,xaRight,xaCenter);
{Y alignment constants}
TYAlign=(yaNone,yaParent,yaBottom,yaTop,yaCenter);
{X stretching constants}
TXStretch=(xsNone,xsParent,xsFrame,xsScale,xsFixed);
{Y stretching constants}
TYStretch=(ysNone,ysParent,ysFrame,ysScale,ysFixed);
TZOrder=(zoNone,zoBottom,zoTop);
{$M-}
TMouseParam=RECORD
pt:TPoint;
Button:TMouseButton;
ShiftState:TShiftState;
END;
TKeyParam=RECORD
KeyCode:TKeyCode;
RepeatCount:BYTE;
END;
TDesignerNotifyCode=(dncMouseDown,dncMouseUp,dncMouseClick,
dncMouseDblClk,dncMouseMove,dncChar,dncScan,
dncPaint,dncSCUModified,dncNewMenuItem);
TDesignerNotifyStruct=RECORD
Sender:TComponent;
Code:TDesignerNotifyCode;
Return:LONGINT;
CASE TDesignerNotifyCode OF
dncMouseDown,
dncMouseUp,
dncMouseClick,
dncMouseDblClk,
dncMouseMove: (mouseparam:TMouseParam);
dncChar,dncScan: (keyparam:TKeyParam);
dncPaint: (rec:TRect);
END;
TCreateParams=RECORD
Style:LONGINT;
ExStyle:LONGINT;
FrameStyle:LONGINT;
END;
PScaleInfo=^TScaleInfo;
TScaleInfo=RECORD
Left,Right,Bottom,Top:EXTENDED;
END;
PFrameInfo=^TFrameInfo;
TFrameInfo=RECORD
Left,Right,Bottom,Top:LONGINT;
END;
TLastMsg=CLASS
PRIVATE
FControl:TControl;
FUNCTION GetHandled:LONGBOOL;
PROCEDURE SetHandled(Value:LONGBOOL);
FUNCTION GetResult:LONGWORD;
PROCEDURE SetResult(Value:LONGWORD);
PUBLIC
PROCEDURE CallDefaultHandler;
PROPERTY Handled:LONGBOOL read GetHandled write SetHandled;
PROPERTY Result:LONGWORD read GetResult write SetResult;
END;
TControl=CLASS(TComponent)
PRIVATE
FParent:TControl;
FControls:TList;
FWindowId:LONGWORD;
FDefWndProc:TWndProc;
FCursor:TCursor;
FHandle:HWindow;
FCanvas:TCanvas;
FInitCanvas:BOOLEAN;
FCaption:PSTRING;
FFrame:TControl;
FLeft,FBottom,FWidth,FHeight:LONGINT;
FXAlign:TXAlign;
FYAlign:TYAlign;
FXStretch:TXStretch;
FYStretch:TYStretch;
FZOrder:TZOrder;
FPenColor:TColor;
FColor:TColor;
FHasFocus:BOOLEAN;
FIsToolBar:BOOLEAN;
{$IFDEF Win32}
FClickTime:LONGINT;
FLastLButtonDownTime:LONGINT;
FLastRButtonDownTime:LONGINT;
FDefFontHandle:LONGWORD;
FCtlBrush:LONGWORD;
{$ENDIF}
FFont:TFont;
FEnabled:BOOLEAN;
FVisible:BOOLEAN;
FCursorTabStop:BOOLEAN;
FTabStop:BOOLEAN;
FTabOrder:LONGINT;
FTabList:TList;
FForm:TForm;
FHint:PSTRING;
FShowHint:BOOLEAN;
FParentShowHint:BOOLEAN;
FParentFont:BOOLEAN;
FParentPenColor:BOOLEAN;
FParentColor:BOOLEAN;
FUpdateEnabled:BOOLEAN;
FOldEnabledState:BOOLEAN;
FHelpContext:THelpContext;
FAutoScale:PScaleInfo;
FAutoFrame:PFrameInfo;
FLastDeadKey:WORD;
FInitControls:BOOLEAN;
FFirstShow:BOOLEAN;
FOwnerDraw:BOOLEAN;
FHandlesDesignMouse:BOOLEAN;
FHandlesDesignKey:BOOLEAN;
FCommand:TCommand;
FModalParent:TControl;
FUpdatingPP:BOOLEAN;
FDragMode:TDragMode;
FDragState:TDragState;
FDragControl:TControl;
FDragging:BOOLEAN;
FDragCursor:TCursor;
FLastDragOperation:TDragDropOperation;
{$IFDEF OS2}
FDragInfo:PDRAGINFO;
FDragCanvas:TCanvas;
{$ENDIF}
FMouseCapture:BOOLEAN;
FLastMsg:TLastMsg;
FLastMsgAdr:PMessage;
IsFontChangeEnabled:BOOLEAN;
IsStandardControl:BOOLEAN;
IsEditControl:BOOLEAN;
FPopupMenu:TPopupMenu;
FOnEnter:TNotifyEvent;
FOnExit:TNotifyEvent;
FOnKeyPress:TKeyPressEvent;
FOnScan:TScanEvent;
FOnMouseDown:TMouseEvent;
FOnMouseMove:TMouseMoveEvent;
FOnMouseUp:TMouseEvent;
FOnMouseClick:TMouseEvent;
FOnMouseDblClick:TMouseEvent;
FOnResize:TNotifyEvent;
FOnMove:TNotifyEvent;
FOnPaint:TPaintEvent;
FOnCommand:TCommandEvent;
FOnSetupShow:TNotifyEvent;
FOnShow:TNotifyEvent;
FOnHide:TNotifyEvent;
FOnCanDrag:TCanDragEvent;
FOnStartDrag:TStartDragEvent;
FOnEndDrag:TEndDragEvent;
FOnDragOver:TDragOverEvent;
FOnDragDrop:TDragDropEvent;
FOnFontChange:TNotifyEvent;
FOnDblClick:TNotifyEvent;
PRIVATE
{$IFDEF OS2}
PROCEDURE WMBeginDrag(VAR Msg:TMessage); message WM_BEGINDRAG;
PROCEDURE WMEndDrag(VAR Msg:TMessage); message WM_ENDDRAG;
PROCEDURE DMDragOver(VAR Msg:TMessage); message DM_DRAGOVER;
PROCEDURE DMDragLeave(VAR Msg:TMessage); message DM_DRAGLEAVE;
PROCEDURE DMDrop(VAR Msg:TMessage); message DM_DROP;
PROCEDURE WMControl(VAR Msg:TMessage); message WM_CONTROL;
PROCEDURE WMButton1Down(VAR Msg:TWMButton1Down); message WM_BUTTON1DOWN;
PROCEDURE WMButton2Down(VAR Msg:TWMButton2Down); message WM_BUTTON2DOWN;
PROCEDURE WMSize(VAR Msg:TWMSize); message WM_SIZE;
PROCEDURE WMMove(VAR Msg:TWMMove); message WM_MOVE;
PROCEDURE WMPaint(VAR Msg:TMessage); message WM_PAINT;
PROCEDURE WMEraseBackGround(VAR Msg:TMessage); message WM_ERASEBACKGROUND;
PROCEDURE WMPresParamChanged(VAR Msg:TMessage); message WM_PRESPARAMCHANGED;
PROCEDURE WMChar(VAR Msg:TWMChar); message WM_CHAR;
PROCEDURE WMQueryConvertPos(VAR Msg:TMessage); message WM_QUERYCONVERTPOS;
PROCEDURE WMCommand(VAR Msg:TWMCommand); message WM_COMMAND;
PROCEDURE WMSetFocus(VAR Msg:TWMSetFocus); message WM_SETFOCUS;
PROCEDURE WMButton1Up(VAR Msg:TWMButton1Up); message WM_BUTTON1UP;
PROCEDURE WMButton2Up(VAR Msg:TWMButton2Up); message WM_BUTTON2UP;
PROCEDURE WMButton1Click(VAR Msg:TWMButton1Click); message WM_BUTTON1CLICK;
PROCEDURE WMButton1DblClk(VAR Msg:TWMButton1DblClk); message WM_BUTTON1DBLCLK;
PROCEDURE WMButton2Click(VAR Msg:TWMButton2Click); message WM_BUTTON2CLICK;
PROCEDURE WMButton2DblClk(VAR Msg:TWMButton2DblClk); message WM_BUTTON2DBLCLK;
PROCEDURE WMMouseMove(VAR Msg:TWMMouseMove); message WM_MOUSEMOVE;
PROCEDURE WMHScroll(VAR Msg:TWMScroll); message WM_HSCROLL;
PROCEDURE WMVScroll(VAR Msg:TWMScroll); message WM_VSCROLL;
PROCEDURE WMDestroy(VAR Msg:TWMDestroy); message WM_DESTROY;
PROCEDURE WMTimer(VAR Msg:TWMTimer); message WM_TIMER;
PROCEDURE WMCaptureFocus(VAR Msg:TMessage); message WM_CAPTUREFOCUS;
PROCEDURE WMHelp(VAR Msg:TMessage); message WM_HELP;
{$ENDIF}
{$IFDEF Win32}
PROCEDURE WMButton1Down(VAR Msg:TWMButton1Down); message WM_LBUTTONDOWN;
PROCEDURE WMButton2Down(VAR Msg:TWMButton2Down); message WM_RBUTTONDOWN;
PROCEDURE WMSize(VAR Msg:TWMSize); message WM_SIZE;
PROCEDURE WMMove(VAR Msg:TWMMove); message WM_MOVE;
PROCEDURE WMPaint(VAR Msg:TMessage); message WM_PAINT;
PROCEDURE WMEraseBackGround(VAR Msg:TMessage); message WM_ERASEBKGND;
PROCEDURE WMCommand(VAR Msg:TWMCommand); message WM_COMMAND;
PROCEDURE WMChar(VAR Msg:TWMChar); message WM_CHAR;
PROCEDURE WMKillFocus(VAR Msg:TMessage); message WM_KILLFOCUS;
PROCEDURE WMSetFocus(VAR Msg:TWMSetFocus); message WM_SETFOCUS;
PROCEDURE WMButton1Up(VAR Msg:TWMButton1Up); message WM_LBUTTONUP;
PROCEDURE WMButton2Up(VAR Msg:TWMButton2Up); message WM_RBUTTONUP;
PROCEDURE WMButton1DblClk(VAR Msg:TWMButton1DblClk); message WM_LBUTTONDBLCLK;
PROCEDURE WMButton2DblClk(VAR Msg:TWMButton2DblClk); message WM_RBUTTONDBLCLK;
PROCEDURE WMKeyDown(VAR Msg:TMessage); message WM_KEYDOWN;
PROCEDURE WMSysKeyDown(VAR Msg:TMessage); message WM_SYSKEYDOWN;
PROCEDURE WMMouseMove(VAR Msg:TWMMouseMove); message WM_MOUSEMOVE;
PROCEDURE WMSetCursor(VAR Msg:TMessage); message WM_SETCURSOR;
PROCEDURE WMHScroll(VAR Msg:TWMScroll); message WM_HSCROLL;
PROCEDURE WMVScroll(VAR Msg:TWMScroll); message WM_VSCROLL;
PROCEDURE WMCtlColorBtn(VAR Msg:TMessage); message WM_CTLCOLORBTN;
PROCEDURE WMCtlColorStatic(VAR Msg:TMessage); message WM_CTLCOLORSTATIC;
PROCEDURE WMCtlColorDlg(VAR Msg:TMessage); message WM_CTLCOLORDLG;
PROCEDURE WMCtlColorScrollBar(VAR Msg:TMessage); message WM_CTLCOLORSCROLLBAR;
PROCEDURE WMCtlColorEdit(VAR Msg:TMessage); message WM_CTLCOLOREDIT;
PROCEDURE WMCtlColorListBox(VAR Msg:TMessage); message WM_CTLCOLORLISTBOX;
PROCEDURE WMDestroy(VAR Msg:TWMDestroy); message WM_DESTROY;
PROCEDURE WMNCDestroy(VAR Msg:TMessage); message WM_NCDESTROY;
PROCEDURE WMTimer(VAR Msg:TWMTimer); message WM_TIMER;
PROCEDURE WMCaptureFocus(VAR Msg:TMessage); message WM_CAPTUREFOCUS;
PROCEDURE WMNotify(VAR Msg:TMessage); message WM_NOTIFY;
{$ENDIF}
PROCEDURE WMMeasureItem(VAR Msg:TMessage); message WM_MEASUREITEM;
PROCEDURE WMDrawItem(VAR Msg:TMessage); message WM_DRAWITEM;
PROCEDURE SendScanMessage(VAR Msg:TWMChar;VAR KeyCode:TKeyCode;RepeatCount:BYTE);
PROCEDURE SendCharMessage(VAR Msg:TWMChar;VAR ch:CHAR;RepeatCount:BYTE);
FUNCTION GetDesignerCoordinates(VAR pt:TPoint):TControl;
PROCEDURE SetText(CONST NewCaption:STRING);
FUNCTION GetText:STRING;
FUNCTION GetControlCount:LONGINT;
FUNCTION GetControl(AIndex:LONGINT):TControl;
PROCEDURE SetColor(NewColor:TColor);VIRTUAL;
PROCEDURE SetPenColor(NewColor:TColor);VIRTUAL;
PROCEDURE SetParentFont(Value:BOOLEAN);
PROCEDURE SetParentPenColor(Value:BOOLEAN);
PROCEDURE SetParentColor(Value:BOOLEAN);
PROCEDURE ParentFontChanged(VAR Msg:TMessage); message CM_PARENTFONTCHANGED;
PROCEDURE ParentPenColorChanged(VAR Msg:TMessage); message CM_PARENTPENCOLORCHANGED;
PROCEDURE ParentColorChanged(VAR Msg:TMessage); message CM_PARENTCOLORCHANGED;
PROCEDURE SetCursor(Index:TCursor);
FUNCTION GetWindowRect:TRect;
FUNCTION GetBoundsRect:TRect;
FUNCTION GetClientRect:TRect;VIRTUAL;
FUNCTION GetClientWidth:LONGINT;
FUNCTION GetClientHeight:LONGINT;
PROCEDURE SetClientWidth(NewWidth:LONGINT);VIRTUAL;
PROCEDURE SetClientHeight(NewHeight:LONGINT);VIRTUAL;
FUNCTION GetClientOrigin:TPoint;VIRTUAL;
FUNCTION GetParentClientWidth:LONGINT;
FUNCTION GetParentClientHeight:LONGINT;
PROCEDURE SetWidth(NewWidth:LONGINT);
FUNCTION GetWidth:LONGINT;
PROCEDURE SetHeight(NewHeight:LONGINT);VIRTUAL;
FUNCTION GetHeight:LONGINT;
PROCEDURE SetLeft(NewLeft:LONGINT);VIRTUAL;
FUNCTION GetLeft:LONGINT;VIRTUAL;
PROCEDURE SetBottom(NewBottom:LONGINT);VIRTUAL;
FUNCTION GetBottom:LONGINT;VIRTUAL;
PROCEDURE SetTop(NewTop:LONGINT);VIRTUAL;
FUNCTION GetTop:LONGINT;
PROCEDURE SetRight(NewRight:LONGINT);VIRTUAL;
FUNCTION GetRight:LONGINT;
PROCEDURE SetAlign(NewAlign:TAlign);
FUNCTION GetAlign:TAlign;
PROCEDURE SetXAlign(NewAlign:TXAlign);
FUNCTION GetXAlign:TXAlign;
PROCEDURE SetYAlign(NewAlign:TYAlign);
FUNCTION GetYAlign:TYAlign;
PROCEDURE SetXStretch(NewStretch:TXStretch);
FUNCTION GetXStretch:TXStretch;
PROCEDURE SetYStretch(NewStretch:TYStretch);
FUNCTION GetYStretch:TYStretch;
PROCEDURE SetZOrder(zo:TZOrder);
PROCEDURE UpdateFont;
PROCEDURE Enable;
PROCEDURE Disable;
FUNCTION GetEnabled:BOOLEAN;
PROCEDURE SetEnabled(NewState:BOOLEAN);
FUNCTION IsWindowVisible:BOOLEAN;
FUNCTION GetShowing:BOOLEAN;
FUNCTION GetVisible:BOOLEAN;
PROCEDURE SetVisible(NewState:BOOLEAN);
FUNCTION GetTabOrder:LONGINT;VIRTUAL;
PROCEDURE SetTabOrder(Value:LONGINT);
FUNCTION GetWindowFlags:LONGWORD;
PROCEDURE SetHint(CONST NewText:STRING);
FUNCTION GetHint:STRING;
PROCEDURE SetShowHint(Value:BOOLEAN);
FUNCTION GetShowHint:BOOLEAN;
PROCEDURE SetMouseCapture(captive:BOOLEAN);
PROCEDURE SetUpdateEnabled(Value:BOOLEAN);
PROCEDURE SetParent(AParent:TControl);
{$IFDEF Win32}
PROCEDURE SetCtlColor(VAR Msg:TMessage);
{$ENDIF}
PROCEDURE Insert(AChild:TControl);
PROCEDURE Remove(AChild:TControl);
FUNCTION GetNextTabControl:TControl;
FUNCTION GetPrevTabControl:TControl;
PROCEDURE FocusTabControl(next:BOOLEAN);
PROCEDURE FocusKeyControl(KeyCode:TKeyCode);
FUNCTION GetLastMsg:TLastMsg;
{$IFDEF OS2}
FUNCTION SetPPFontNameSize(CONST FNS:STRING):BOOLEAN;
FUNCTION SetPPForeGroundColor(AColor:TColor):BOOLEAN;
FUNCTION SetPPBackGroundColor(AColor:TColor):BOOLEAN;
{$ENDIF}
PROCEDURE DragFinished(Target:TObject; X,Y:LONGINT; Accepted:BOOLEAN);
PROCEDURE DragFree;
PROCEDURE SetPopupMenu(NewMenu:TPopupMenu);
PROTECTED
PROCEDURE SetFont(NewFont:TFont);VIRTUAL;
PROCEDURE DefaultHandler(VAR Msg);OVERRIDE;
PROCEDURE WndProc(VAR Msg:TMessage);VIRTUAL;
PROCEDURE UpdateWindowPos(NewLeft,NewBottom,NewWidth,NewHeight:LONGINT);VIRTUAL;
PROCEDURE Scroll(Sender:TScrollBar;ScrollCode:TScrollCode;VAR ScrollPos:LONGINT);VIRTUAL;
FUNCTION QueryConvertPos(VAR pos:TPoint):BOOLEAN;VIRTUAL;
PROCEDURE CharEvent(VAR Key:CHAR;RepeatCount:BYTE);VIRTUAL;
PROCEDURE ScanEvent(VAR KeyCode:TKeyCode;RepeatCount:BYTE);VIRTUAL;
PROCEDURE MouseDown(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);VIRTUAL;
PROCEDURE MouseUp(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);VIRTUAL;
PROCEDURE MouseMove(ShiftState:TShiftState;X,Y:LONGINT);VIRTUAL;
PROCEDURE MouseClick(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);VIRTUAL;
PROCEDURE MouseDblClick(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);VIRTUAL;
PROCEDURE CheckMenuPopup(pt:TPoint);VIRTUAL;
PROCEDURE Resize;VIRTUAL;
PROCEDURE Move;VIRTUAL;
PROCEDURE SetFocus;VIRTUAL;
PROCEDURE KillFocus;VIRTUAL;
PROCEDURE Paint(CONST rec:TRect);VIRTUAL;
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE CreateParams(VAR Params:TCreateParams);VIRTUAL;
PROCEDURE GetClassData(VAR ClassData:TClassData);VIRTUAL;
{$IFDEF Win32}
PROCEDURE CreateSubClass(VAR ClassData:TClassData;CONST ControlClassName:CSTRING);
{$ENDIF}
PROCEDURE RegisterClass;VIRTUAL;
PROCEDURE LoadedFromSCU(SCUParent:TComponent);OVERRIDE;
PROCEDURE SetupShow;VIRTUAL;
PROCEDURE CreateError;VIRTUAL;
PROCEDURE CreateWnd;VIRTUAL;
PROCEDURE RecreateWnd;VIRTUAL;
PROCEDURE CreateControls;VIRTUAL;
PROCEDURE DisposeWnd;VIRTUAL;
PROCEDURE DestroyWnd;VIRTUAL;
PROCEDURE DestroyHandle;
PROCEDURE RealignControls;VIRTUAL;
PROCEDURE CommandEvent(VAR Command:TCommand);VIRTUAL;
PROCEDURE ParentNotification(VAR Msg:TMessage);VIRTUAL;
PROCEDURE DesignerNotification(VAR DNS:TDesignerNotifyStruct);VIRTUAL;
FUNCTION EvaluateShortCut(KeyCode:TKeyCode):BOOLEAN;VIRTUAL;
PROCEDURE CanDrag(X,Y:LONGINT;VAR Accept:BOOLEAN);VIRTUAL;
PROCEDURE DoStartDrag(VAR DragData:TDragDropData);VIRTUAL;
PROCEDURE DoEndDrag(Target:TObject; X,Y:LONGINT);VIRTUAL;
PROCEDURE DragCanceled;VIRTUAL;
PROCEDURE DragOver(Source:TObject;X,Y:LONGINT;State:TDragState;VAR Accept:BOOLEAN);VIRTUAL;
PROCEDURE FontChange;VIRTUAL;
PROCEDURE NotifyControls(MsgId:ULONG);
PROCEDURE GetChildren(Proc:TGetChildProc);OVERRIDE;
FUNCTION HasParent:BOOLEAN;OVERRIDE;
PROCEDURE Notification(AComponent:TComponent;Operation:TOperation);OVERRIDE;
PUBLIC
PROCEDURE BeginDrag(Immediate:BOOLEAN); {zZ dummy Parameter}
PROCEDURE DragDrop(Source:TObject;X,Y:LONGINT);VIRTUAL;
PROCEDURE CreateDragCanvas;
PROCEDURE DeleteDragCanvas;
DESTRUCTOR Destroy;OVERRIDE;
PROCEDURE Show;VIRTUAL;
PROCEDURE Hide;VIRTUAL;
PROCEDURE BringToFront;VIRTUAL;
PROCEDURE SendToBack;VIRTUAL;
PROCEDURE InsertControl(AChild:TControl);VIRTUAL;
PROCEDURE RemoveControl(AChild:TControl);VIRTUAL;
PROCEDURE DestroyControls;
FUNCTION CreateCanvas:TCanvas;VIRTUAL;
PROCEDURE Redraw(CONST rec:TRect);VIRTUAL;
PROCEDURE Refresh;
PROCEDURE Repaint;
PROCEDURE Update;VIRTUAL;
PROCEDURE Invalidate;VIRTUAL;
PROCEDURE InvalidateRect(CONST rec:TRect);
PROCEDURE SetWindowPos(NewLeft,NewBottom,NewWidth,NewHeight:LONGINT);VIRTUAL;
PROCEDURE SetBounds(NewLeft,NewTop,NewWidth,NewHeight:LONGINT);VIRTUAL; {VCL}
PROCEDURE Focus;
PROCEDURE CaptureFocus;
FUNCTION Perform(MsgId:ULONG;mp1,mp2:LONG):LONG;
PROCEDURE Broadcast(VAR Msg:TMessage);
FUNCTION GetControlFromPoint(pt:TPoint):TControl;
FUNCTION ClientToScreen(CONST Point:TPoint):TPoint;
FUNCTION ScreenToClient(CONST Point:TPoint):TPoint;
PROCEDURE MapPoints(Target:TControl;VAR pts:ARRAY OF TPoint);
PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
PROCEDURE ToTop;VIRTUAL;
PROCEDURE ToBottom;
PROTECTED
PROPERTY CursorTabStop:BOOLEAN read FCursorTabStop write FCursorTabStop;
PROPERTY DefWndProc:TWndProc read FDefWndProc write FDefWndProc;
PROPERTY Form:TForm read FForm;
PROPERTY HandlesDesignKey:BOOLEAN read FHandlesDesignKey write FHandlesDesignKey;
PROPERTY HandlesDesignMouse:BOOLEAN read FHandlesDesignMouse write FHandlesDesignMouse;
PROPERTY LastDragOperation:TDragDropOperation read FLastDragOperation;
PROPERTY LastMsg:TLastMsg read GetLastMsg;
PROPERTY Ownerdraw:BOOLEAN read FOwnerdraw write FOwnerdraw;
PROPERTY Color:TColor read FColor write SetColor;
PROPERTY Caption:STRING read GetText write SetText;
PROPERTY Command:TCommand read FCommand write FCommand;
PROPERTY DragCursor:TCursor read FDragCursor write FDragCursor;
PROPERTY DragMode:TDragMode read FDragMode write FDragMode;
PROPERTY Font:TFont read FFont write SetFont;
PROPERTY ParentColor:BOOLEAN read FParentColor write SetParentColor;
PROPERTY ParentFont:BOOLEAN read FParentFont write SetParentFont;
PROPERTY ParentPenColor:BOOLEAN read FParentPenColor write SetParentPenColor;
PROPERTY ParentShowHint:BOOLEAN read FParentShowHint write FParentShowHint;
PROPERTY PenColor:TColor read FPenColor write SetPenColor;
PROPERTY PopupMenu:TPopupMenu read FPopupMenu write SetPopupMenu;
PROPERTY ShowHint:BOOLEAN read FShowHint write SetShowHint;
PROPERTY Text:STRING read GetText write SetText;
PROPERTY ZOrder:TZOrder read FZOrder write SetZOrder;
PROPERTY OnCanDrag:TCanDragEvent read FOnCanDrag write FOnCanDrag;
PROPERTY OnKeyPress:TKeyPressEvent read FOnKeyPress write FOnKeyPress;
PROPERTY OnCommand:TCommandEvent read FOnCommand write FOnCommand;
PROPERTY OnDblClick:TNotifyEvent read FOnDblClick write FOnDblClick;
PROPERTY OnDragDrop:TDragDropEvent read FOnDragDrop write FOnDragDrop;
PROPERTY OnDragOver:TDragOverEvent read FOnDragOver write FOnDragOver;
PROPERTY OnEndDrag:TEndDragEvent read FOnEndDrag write FOnEndDrag;
PROPERTY OnEnter:TNotifyEvent read FOnEnter write FOnEnter;
PROPERTY OnExit:TNotifyEvent read FOnExit write FOnExit;
PROPERTY OnFontChange:TNotifyEvent read FOnFontChange write FOnFontChange;
PROPERTY OnHide:TNotifyEvent read FOnHide write FOnHide;
PROPERTY OnMouseClick:TMouseEvent read FOnMouseClick write FOnMouseClick;
PROPERTY OnMouseDblClick:TMouseEvent read FOnMouseDblClick write FOnMouseDblClick;
PROPERTY OnMouseDown:TMouseEvent read FOnMouseDown write FOnMouseDown;
PROPERTY OnMouseMove:TMouseMoveEvent read FOnMouseMove write FOnMouseMove;
PROPERTY OnMouseUp:TMouseEvent read FOnMouseUp write FOnMouseUp;
PROPERTY OnMove:TNotifyEvent read FOnMove write FOnMove;
PROPERTY OnPaint:TPaintEvent read FOnPaint write FOnPaint;
PROPERTY OnResize:TNotifyEvent read FOnResize write FOnResize;
PROPERTY OnScan:TScanEvent read FOnScan write FOnScan;
PROPERTY OnSetupShow:TNotifyEvent read FOnSetupShow write FOnSetupShow;
PROPERTY OnShow:TNotifyEvent read FOnShow write FOnShow;
PROPERTY OnStartDrag:TStartDragEvent read FOnStartDrag write FOnStartDrag;
PUBLIC
PROPERTY Align:TAlign read GetAlign write SetAlign;
PROPERTY BoundsRect:TRect read GetBoundsRect;
PROPERTY Canvas:TCanvas read FCanvas;
PROPERTY ClientHeight:LONGINT read GetClientHeight write SetClientHeight;
PROPERTY ClientOrigin:TPoint read GetClientOrigin;
PROPERTY ClientRect:TRect read GetClientRect;
PROPERTY ClientWidth:LONGINT read GetClientWidth write SetClientWidth;
PROPERTY ControlCount:LONGINT read GetControlCount;
PROPERTY Controls[Index:LONGINT]:TControl read GetControl;
PROPERTY Dragging:BOOLEAN read FDragging;
PROPERTY Enabled:BOOLEAN read GetEnabled write SetEnabled;
PROPERTY Handle:HWindow read FHandle;
PROPERTY HasFocus:BOOLEAN read FHasFocus;
PROPERTY MouseCapture:BOOLEAN read FMouseCapture write SetMouseCapture;
PROPERTY Parent:TControl read FParent write SetParent;
PROPERTY Showing:BOOLEAN read GetShowing;
PROPERTY TabOrder:LONGINT read GetTabOrder write SetTabOrder;
PROPERTY TabStop:BOOLEAN read FTabStop write FTabStop;
PROPERTY UpdateEnabled:BOOLEAN read FUpdateEnabled write SetUpdateEnabled;
PROPERTY Visible:BOOLEAN read GetVisible write SetVisible;
PROPERTY WindowRect:TRect read GetWindowRect;
PROPERTY XAlign:TXAlign read GetXAlign write SetXAlign;
PROPERTY XStretch:TXStretch read GetXStretch write SetXStretch;
PROPERTY YAlign:TYAlign read GetYAlign write SetYAlign;
PROPERTY YStretch:TYStretch read GetYStretch write SetYStretch;
PUBLISHED
PROPERTY Bottom:LONGINT read GetBottom write SetBottom;
PROPERTY Height:LONGINT read GetHeight write SetHeight;
PROPERTY HelpContext:THelpContext read FHelpContext write FHelpContext;
PROPERTY Hint:STRING read GetHint write SetHint;
PROPERTY Left:LONGINT read GetLeft write SetLeft;
PROPERTY Cursor:TCursor read FCursor write SetCursor;
PROPERTY Right:LONGINT read GetRight write SetRight; stored FALSE;
PROPERTY Top:LONGINT read GetTop write SetTop; stored FALSE;
PROPERTY Width:LONGINT read GetWidth write SetWidth;
END;
TBitBltMode=(cmSrcCopy, cmSrcPaint, cmSrcAnd, cmSrcInvert,
cmSrcErase, cmNotSrcCopy, cmNotSrcErase,
cmMergeCopy, cmMergePaint, cmPatCopy, cmPatPaint,
cmPatInvert, cmDstInvert, cmBlackness, cmWhiteness);
TBitBltFlags=(bitfOr,bitfAnd,bitfIgnore);
{$M+}
TPenStyle = (psSolid, psDash, psDot, psDashDot, psDashDotDot, psClear,
psInsideFrame);
TPenMode = (pmBlack, pmWhite, pmNop, pmNot, pmCopy, pmNotCopy, pmMergePenNot,
pmMaskPenNot, pmMergeNotPen, pmMaskNotPen, pmMerge, pmNotMerge,
pmMask, pmNotMask, pmXor, pmNotXor);
{$M-}
TPen=CLASS(TComponent)
PRIVATE
FCanvas:TCanvas;
FColor:TColor;
FStyle:TPenStyle;
FMode:TPenMode;
FWidth:LONGINT;
PROCEDURE SetColor(NewColor:TColor);
PROCEDURE SetMode(NewMode:TPenMode);
PROCEDURE SetStyle(NewStyle:TPenStyle);
PROCEDURE SetWidth(NewWidth:LongInt);
PUBLIC
PROCEDURE SetupComponent;OVERRIDE;
PUBLISHED
PROPERTY Color:TColor read FColor write SetColor;
PROPERTY Mode:TPenMode read FMode write SetMode;
PROPERTY Style:TPenStyle read FStyle write SetStyle;
PROPERTY Width:LongInt read FWidth write SetWidth;
END;
{$M+}
TBrushStyle = (bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal,
bsBDiagonal, bsCross, bsDiagCross);
TBrushMode = (bmTransparent,bmOpaque);
{$M-}
TBrush=CLASS(TComponent)
PRIVATE
FCanvas:TCanvas;
FBitmap:TGraphic;
FColor:TColor;
FStyle:TBrushStyle;
FMode:TBrushMode;
PROCEDURE SetColor(NewColor:TColor);
PROCEDURE SetStyle(NewStyle:TBrushStyle);
PROCEDURE SetBitmap(NewBitmap:TGraphic);
PROCEDURE SetMode(NewMode:TBrushMode);
PUBLIC
PROCEDURE SetupComponent;OVERRIDE;
DESTRUCTOR Destroy;OVERRIDE;
PROPERTY Bitmap:TGraphic read FBitmap write SetBitmap;
PUBLISHED
PROPERTY Color:TColor read FColor write SetColor;
PROPERTY Style:TBrushStyle read FStyle write SetStyle;
PROPERTY Mode:TBrushMode read FMode write SetMode;
END;
{$M+}
TSizeBorderEvent=PROCEDURE(Sender:TObject;VAR SizeDelta:LONGINT) OF OBJECT;
TSizeBorderAlign=(baVertical,baHorizontal,baTop,baBottom,baLeft,baRight,
baParentWidth,baParentHeight);
{$M-}
TSizeBorder=CLASS(TControl)
PRIVATE
FBorderAlign:TSizeBorderAlign;
FSizing:BOOLEAN;
FOffs:LONGINT;
FDelta:LONGINT;
OldFgMode:TPenMode;
OldLineWidth:LONGINT;
OldLineType:TPenStyle;
FOnSizing:TSizeBorderEvent;
FOnSized:TSizeBorderEvent;
PROCEDURE SetBorderAlign(Value:TSizeBorderAlign);
PROCEDURE DrawSizeLine;
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE MouseDown(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
PROCEDURE MouseUp(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
PROCEDURE MouseMove(ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
PROPERTY Hint;
PROPERTY Cursor;
PUBLIC
PROCEDURE Redraw(CONST rec:TRect);OVERRIDE;
PUBLISHED
PROPERTY BorderAlign:TSizeBorderAlign read FBorderAlign write SetBorderAlign;
PROPERTY OnSized:TSizeBorderEvent read FOnSized write FOnSized;
PROPERTY OnSizing:TSizeBorderEvent read FOnSizing write FOnSizing;
END;
TToolBar=CLASS(TControl)
PRIVATE
FAlignment:TToolBarAlign;
FBevelStyle:TToolBarBevel;
FSizeable:BOOLEAN;
FOrder:LONGINT;
SizeBorderCtrl:TSizeBorder;
FOnClick:TNotifyEvent;
PROCEDURE SetAlignment(NewAlign:TToolBarAlign);
PROCEDURE SetBevelStyle(NewStyle:TToolBarBevel);
PROCEDURE SetSize(NewSize:LONGINT);
FUNCTION GetSize:LONGINT;
FUNCTION GetLeft:LONGINT;OVERRIDE;
FUNCTION GetBottom:LONGINT;OVERRIDE;
PROCEDURE SetLeft(NewLeft:LONGINT);OVERRIDE;
PROCEDURE SetBottom(NewBottom:LONGINT);OVERRIDE;
PROCEDURE SetTop(NewTop:LONGINT);OVERRIDE;
PROCEDURE SetRight(NewRight:LONGINT);OVERRIDE;
PROCEDURE SetSizeable(Value:BOOLEAN);
PROCEDURE SetOrder(Value:LONGINT);
FUNCTION GetOrder:LONGINT;
PROCEDURE EvBorderSizing(Sender:TObject;VAR SizeDelta:LONGINT);
PROCEDURE EvBorderSized(Sender:TObject;VAR SizeDelta:LONGINT);
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE CreateWnd;OVERRIDE;
PROCEDURE SetupShow;OVERRIDE;
PROCEDURE MouseClick(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
PUBLIC
PROCEDURE Redraw(CONST rec:TRect);OVERRIDE;
PROCEDURE SetWindowPos(NewLeft,NewBottom,NewWidth,NewHeight:LONGINT);OVERRIDE;
PROCEDURE EnableCommands(Cmds:ARRAY OF TCommand); {raus}
PROCEDURE DisableCommands(Cmds:ARRAY OF TCommand); {raus}
PROCEDURE Hide;OVERRIDE;
PROCEDURE Show;OVERRIDE;
PROPERTY Bottom;
PROPERTY Height;
PROPERTY Left;
PROPERTY Right;
PROPERTY Top;
PROPERTY Width;
PUBLISHED
PROPERTY Alignment:TToolBarAlign read FAlignment write SetAlignment;
PROPERTY Color;
PROPERTY BevelStyle:TToolBarBevel read FBevelStyle write SetBevelStyle;
PROPERTY Enabled;
PROPERTY PenColor;
PROPERTY Font;
PROPERTY HelpContext;
PROPERTY Order:LONGINT read GetOrder write SetOrder; stored FALSE;
PROPERTY ParentColor;
PROPERTY ParentPenColor;
PROPERTY ParentFont;
PROPERTY ParentShowHint;
PROPERTY PopupMenu;
PROPERTY ShowHint;
PROPERTY Size:LONGINT read GetSize write SetSize;
PROPERTY Sizeable:BOOLEAN read FSizeable write SetSizeable;
PROPERTY OnClick:TNotifyEvent read FOnClick write FOnClick;
PROPERTY OnDblClick;
PROPERTY OnCommand;
PROPERTY OnDragDrop;
PROPERTY OnDragOver;
PROPERTY OnEndDrag;
PROPERTY OnFontChange;
PROPERTY OnMouseClick;
PROPERTY OnMouseDblClick;
PROPERTY OnMouseDown;
PROPERTY OnMouseMove;
PROPERTY OnMouseUp;
PROPERTY OnResize;
PROPERTY OnSetupShow;
END;
{$M+}
TScrollBarKind=(sbHorizontal,sbVertical);
TScrollEvent=PROCEDURE(Sender:TObject;ScrollCode:TScrollCode;
VAR ScrollPos:LONGINT) OF OBJECT;
{$M-}
TScrollBarInc=1..32767;
TScrollBar=CLASS(TControl)
PRIVATE
lastpos:LONGINT;
FMin:LONGINT;
FMax:LONGINT;
FSliderSize:LONGINT;
FCalcRange:LONGINT;
FPosition:LONGINT;
FScale:EXTENDED;
FSmallChange:TScrollBarInc;
FLargeChange:TScrollBarInc;
FKind:TScrollBarKind;
FOnScroll:TScrollEvent;
FOnChange:TNotifyEvent;
PROCEDURE SetPosition(NewPosition:LONGINT);
PROCEDURE SetMin(NewMin:LONGINT);
PROCEDURE SetMax(NewMax:LONGINT);
PROCEDURE SetSliderSize(NewSliderSize:LONGINT);
PROCEDURE SetKind(NewKind:TScrollBarKind);
PROCEDURE SetPenColor(NewColor:TColor);OVERRIDE;
PROCEDURE SetColor(NewColor:TColor);OVERRIDE;
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE GetClassData(VAR ClassData:TClassData);OVERRIDE;
PROCEDURE CreateParams(VAR Params:TCreateParams);OVERRIDE;
PROCEDURE SetupShow;OVERRIDE;
PUBLIC
PROCEDURE SetScrollRange(aMin,aMax,aSliderSize:LONGINT);
PROCEDURE SetParams(aPosition,aMin,aMax:LONGINT);
PROPERTY XAlign;
PROPERTY XStretch;
PROPERTY YAlign;
PROPERTY YStretch;
PUBLISHED
PROPERTY Align;
PROPERTY Color;
PROPERTY DragCursor;
PROPERTY DragMode;
PROPERTY Enabled;
PROPERTY Kind:TScrollBarKind read FKind write SetKind;
PROPERTY LargeChange:TScrollBarInc read FLargeChange write FLargeChange;
PROPERTY Max:LONGINT read FMax write SetMax;
PROPERTY Min:LONGINT read FMin write SetMin;
PROPERTY ParentShowHint;
PROPERTY PopupMenu;
PROPERTY Position:LONGINT read FPosition write SetPosition;
PROPERTY ShowHint;
PROPERTY SliderSize:LONGINT read FSliderSize write SetSliderSize;
PROPERTY SmallChange:TScrollBarInc read FSmallChange write FSmallChange;
PROPERTY TabOrder;
PROPERTY TabStop;
PROPERTY Visible;
PROPERTY ZOrder;
PROPERTY OnCanDrag;
PROPERTY OnChange:TNotifyEvent read FOnChange write FOnChange;
PROPERTY OnDragDrop;
PROPERTY OnDragOver;
PROPERTY OnEndDrag;
PROPERTY OnEnter;
PROPERTY OnExit;
PROPERTY OnMouseMove;
PROPERTY OnScan;
PROPERTY OnScroll:TScrollEvent read FOnScroll write FOnScroll;
PROPERTY OnSetupShow;
PROPERTY OnStartDrag;
END;
TScrollingWinControl=CLASS(TControl)
PRIVATE
FScrollBars:TScrollStyle;
FHorzScrollBar:TScrollBar;
FVertScrollBar:TScrollBar;
PROTECTED
DESTRUCTOR Destroy;OVERRIDE;
PROCEDURE Resize;OVERRIDE;
PROCEDURE Paint(CONST rec:TRect);OVERRIDE;
PROCEDURE AlignScrollBars;VIRTUAL;
PROCEDURE SetScrollBars(NewValue:TScrollStyle);
FUNCTION GetClientRect:TRect;OVERRIDE;
PROCEDURE SetClientWidth(NewWidth:LONGINT);OVERRIDE;
PROCEDURE SetClientHeight(NewHeight:LONGINT);OVERRIDE;
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE SetupShow;OVERRIDE;
PROCEDURE Scroll(Sender:TScrollBar;ScrollCode:TScrollCode;VAR ScrollPos:LONGINT);OVERRIDE;
PUBLIC
PROPERTY HorzScrollBar:TScrollBar read FHorzScrollBar;
PROPERTY VertScrollBar:TScrollBar read FVertScrollBar;
PROPERTY ScrollBars:TScrollStyle read FScrollBars write SetScrollBars;
END;
{$M+}
TCloseAction=(caNone,caHide,caFree,caMinimize,caFreeHandle);
TWindowState=(wsNormal,wsMinimized,wsMaximized);
TBorderIcons=SET OF (biSystemMenu,biMinimize,biMaximize);
TFormBorderStyle=(fbsNone,fbsSingle,fbsSizeable,fbsDialog);
TFormStyle=(fsNormal,fsMDIChild,fsMDIForm);
TTileMode=(tbHorizontal,tbVertical,tbNormal);
TBorderStyle=(bsNone,bsSingle);
TCloseEvent=PROCEDURE(Sender:TObject;VAR Action:TCloseAction) OF OBJECT;
TCloseQueryEvent=PROCEDURE(Sender:TObject;VAR CanClose:BOOLEAN) OF OBJECT;
TMDIActivateEvent=PROCEDURE(Sender:TObject;Child:TForm) OF OBJECT;
TMDIDeactivateEvent=PROCEDURE(Sender:TObject;Child:TForm) OF OBJECT;
TTranslateShortCutEvent=PROCEDURE(Sender:TObject;Keycode:TKeyCode;VAR Receiver:TForm) OF OBJECT;
{$M-}
{FAccelList item}
PAccelItem=^AccelItem;
AccelItem=RECORD
KeyCode:TKeyCode;
Command:TCommand;
END;
TForm=CLASS(TScrollingWinControl)
PRIVATE
FMainMenu:TMainMenu;
FLastMenu:TMenu;
FLastEntry:TMenuItem;
FMenuHandleList:TList;
FAccelList:TList;
FAccel:LONGWORD;
FShortCutsEnabled:BOOLEAN;
FTopMDIChild:TForm;
FIsModal:BOOLEAN;
FModalShowing:BOOLEAN;
FModalResult:TCommand;
FLocked:BOOLEAN;
FWindowState:TWindowState;
FBorderIcons:TBorderIcons;
FBorderStyle:TFormBorderStyle;
FFormStyle:TFormStyle;
FTileMode:TTileMode;
FMinTrackWidth:LONGINT;
FMinTrackHeight:LONGINT;
FMaxTrackWidth:LONGINT;
FMaxTrackHeight:LONGINT;
FEnableDocking:TToolbarAlignments;
FMoveable:BOOLEAN;
FSizeable:BOOLEAN;
FActiveControl:TControl;
FMDIChildren:TList;
FToolBarLists:ARRAY[TToolbarAlign] OF TList;
FIcon:TGraphic;
FInternalWindowIdCount:LONGWORD;
FDBCSStatusLine:BOOLEAN;
DefaultButton:TControl;
CancelButton:TControl;
FOnActivate:TNotifyEvent;
FOnDeactivate:TNotifyEvent;
FOnMDIActivate:TMDIActivateEvent;
FOnMDIDeactivate:TMDIDeactivateEvent;
FOnClose:TCloseEvent;
FOnCloseQuery:TCloseQueryEvent;
FOnDismissDlg:TNotifyEvent;
FOnMenuInit:TMenuEvent;
FOnMenuEnd:TMenuEvent;
FOnMenuItemFocus:TMenuEvent;
FOnTranslateShortCut:TTranslateShortCutEvent;
FOnMinimize:TNotifyEvent;
FOnMaximize:TNotifyEvent;
FOnRestore:TNotifyEvent;
FOnClick:TNotifyEvent;
PROCEDURE CMRelease(VAR Msg:TMessage); message CM_RELEASE;
PROCEDURE CMUpdateButtons(VAR Msg:TMessage); message CM_UPDATEBUTTONS;
PROCEDURE WMActivate(VAR Msg:TWMActivate); message WM_ACTIVATE;
{$IFDEF OS2}
PROCEDURE WMClose(VAR Msg:TWMClose); message WM_CLOSE;
PROCEDURE WMInitMenu(VAR Msg:TMessage); message WM_INITMENU;
PROCEDURE WMMenuEnd(VAR Msg:TMessage); message WM_MENUEND;
PROCEDURE WMMenuSelect(VAR Msg:TMessage); message WM_MENUSELECT;
PROCEDURE WMTranslateAccel(VAR Msg:TMessage); message WM_TRANSLATEACCEL;
PROCEDURE WMDDEInitiate(VAR Msg:TMessage); message WM_DDE_INITIATE;
PROCEDURE WMDDEDestroy(VAR Msg:TMessage); message WM_DDE_DESTROY;
{$ENDIF}
PROCEDURE AlignToolBars;
FUNCTION GetFrameFlags:LONGWORD;
FUNCTION GetMDIChildCount:LONGINT;
FUNCTION GetMDIChild(AIndex:LONGINT):TForm;
PROCEDURE SetWindowState(NewState:TWindowState);
FUNCTION GetWindowState:TWindowState;
PROCEDURE SetBorderIcons(NewIcons:TBorderIcons);
PROCEDURE SetBorderStyle(NewStyle:TFormBorderStyle);
FUNCTION GetTabOrder:LONGINT;OVERRIDE;
FUNCTION GetAddWidth:LONGINT;
FUNCTION GetAddHeight:LONGINT;
FUNCTION GetClientRect:TRect;OVERRIDE;
PROCEDURE SetClientWidth(NewWidth:LONGINT);OVERRIDE;
PROCEDURE SetClientHeight(NewHeight:LONGINT);OVERRIDE;
FUNCTION GetClientOrigin:TPoint;OVERRIDE;
PROCEDURE SetDBCSStatusLine(Value:BOOLEAN);
PROCEDURE SetActiveControl(AControl:TControl);
PROCEDURE ForwardShortCut(VAR Msg:TMessage);
PROCEDURE SetIcon(NewIcon:TGraphic);
FUNCTION GetIcon:TGraphic;
PROCEDURE IconChanged(Sender:TObject);
PROCEDURE SetMainMenu(AMenu:TMainMenu);
PROCEDURE SetShortCutsEnabled(Value:BOOLEAN);
PROCEDURE SetFormStyle(Value:TFormStyle);
PROCEDURE InsertMDIChild(Child:TForm);
PROCEDURE RemoveMDIChild(Child:TForm);
PROCEDURE CreateUniqueWindowId(AChild:TControl);
PROTECTED
PROCEDURE CreateControls;OVERRIDE;
PROCEDURE RealignControls;OVERRIDE;
PROCEDURE Activate;VIRTUAL;
PROCEDURE Deactivate;VIRTUAL;
PROCEDURE MDIActivate(Child:TForm);VIRTUAL;
PROCEDURE MDIDeactivate(Child:TForm);VIRTUAL;
FUNCTION GetTileCascadeRect:TRect;VIRTUAL;
PROCEDURE ScanEvent(VAR KeyCode:TKeyCode;RepeatCount:BYTE);OVERRIDE;
PROCEDURE CommandEvent(VAR Command:TCommand);OVERRIDE;
PROCEDURE TranslateShortCut(Keycode:TKeyCode;VAR Receiver:TForm);VIRTUAL;
FUNCTION CloseQuery:BOOLEAN;VIRTUAL;
PROCEDURE EndModalState;VIRTUAL;
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE CreateWnd;OVERRIDE;
PROCEDURE SetupShow;OVERRIDE;
PROCEDURE SetFocus;OVERRIDE;
PROCEDURE Resize;OVERRIDE;
PROCEDURE MouseClick(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
PROCEDURE MouseDown(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
PROCEDURE MenuInit(AMenu:TMenu;Entry:TMenuItem);VIRTUAL;
PROCEDURE MenuEnd(AMenu:TMenu;Entry:TMenuItem);VIRTUAL;
PROCEDURE MenuItemFocus(AMenu:TMenu;Entry:TMenuItem);VIRTUAL;
PROCEDURE MenuCharEvent(AMenu:TMenu;Entry:TMenuItem;VAR Key:CHAR;rep:BYTE);VIRTUAL;
PROCEDURE MenuScanEvent(AMenu:TMenu;Entry:TMenuItem;VAR KeyCode:TKeyCode;rep:BYTE);VIRTUAL;
PROCEDURE LoadedFromSCU(SCUParent:TComponent);OVERRIDE;
PUBLIC
CONSTRUCTOR Create(AOwner:TComponent);OVERRIDE;
CONSTRUCTOR CreateNew(AOwner:TComponent);
PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
DESTRUCTOR Destroy;OVERRIDE;
PROCEDURE Release;
FUNCTION ShowModal:LONGWORD;VIRTUAL;
PROCEDURE DismissDlg(result:TCommand);VIRTUAL;
PROCEDURE Close;VIRTUAL;
PROCEDURE InsertComponent(AComponent:TComponent);OVERRIDE;
PROCEDURE RemoveComponent(AComponent:TComponent);OVERRIDE;
PROCEDURE InsertControl(AChild:TControl);OVERRIDE;
PROCEDURE RemoveControl(AChild:TControl);OVERRIDE;
PROCEDURE SetWindowPos(NewLeft,NewBottom,NewWidth,NewHeight:LONGINT);OVERRIDE;
PROCEDURE BringToFront;OVERRIDE;
PROCEDURE Tile;VIRTUAL;
PROCEDURE Cascade;VIRTUAL;
PROCEDURE ArrangeIcons;VIRTUAL;
PROCEDURE Next;VIRTUAL;
PROCEDURE Previous;VIRTUAL;
PROCEDURE CloseAll;VIRTUAL;
PROCEDURE AddShortCut(KeyCode:TKeyCode;Command:TCommand);
PROCEDURE ToTop;OVERRIDE;
PROCEDURE DeleteShortCut(KeyCode:TKeyCode);
PROPERTY Moveable:BOOLEAN read FMoveable write FMoveable; {only OS2}
PROPERTY Sizeable:BOOLEAN read FSizeable write FSizeable; {only OS2}
PUBLIC
PROPERTY ModalResult:TCommand read FModalResult write FModalResult;
PROPERTY IsModal:BOOLEAN read FIsModal;
PROPERTY TileMode:TTileMode read FTileMode write FTileMode;
PROPERTY MDIChildren[Index:LONGINT]:TForm read GetMDIChild;
PROPERTY MDIChildCount:LONGINT read GetMDIChildCount;
PROPERTY ActiveMDIChild:TForm read FTopMDIChild;
PROPERTY ActiveControl:TControl read FActiveControl write SetActiveControl;
PROPERTY Frame:TControl read FFrame;
PROPERTY DBCSStatusLine:BOOLEAN read FDBCSStatusLine write SetDBCSStatusLine;
PROPERTY ShortCutsEnabled:BOOLEAN read FShortCutsEnabled write SetShortCutsEnabled;
PROPERTY XAlign;
PROPERTY XStretch;
PROPERTY YAlign;
PROPERTY YStretch;
PUBLISHED
PROPERTY Align;
PROPERTY Color;
PROPERTY BorderIcons:TBorderIcons read FBorderIcons write SetBorderIcons;
PROPERTY BorderStyle:TFormBorderStyle read FBorderStyle write SetBorderStyle;
PROPERTY Caption;
PROPERTY ClientWidth;
PROPERTY ClientHeight;
PROPERTY Menu:TMainMenu read FMainMenu write SetMainMenu;
PROPERTY MaxTrackWidth:LONGINT read FMaxTrackWidth write FMaxTrackWidth;
PROPERTY MaxTrackHeight:LONGINT read FMaxTrackHeight write FMaxTrackHeight;
PROPERTY MinTrackWidth:LONGINT read FMinTrackWidth write FMinTrackWidth;
PROPERTY MinTrackHeight:LONGINT read FMinTrackHeight write FMinTrackHeight;
PROPERTY PenColor;
PROPERTY PopupMenu;
PROPERTY Enabled;
PROPERTY EnableDocking:TToolbarAlignments read FEnableDocking write FEnableDocking;
PROPERTY Font;
PROPERTY FormStyle:TFormStyle read FFormStyle write SetFormStyle;
PROPERTY Icon:TGraphic read GetIcon write SetIcon;
PROPERTY ScrollBars; {wie OnScroll im Designer belegen?}
PROPERTY ShowHint;
PROPERTY Visible;
PROPERTY WindowState:TWindowState read GetWindowState write SetWindowState;
PROPERTY OnActivate:TNotifyEvent read FOnActivate write FOnActivate;
PROPERTY OnKeyPress;
PROPERTY OnClick:TNotifyEvent read FOnClick write FOnClick;
PROPERTY OnClose:TCloseEvent read FOnClose write FOnClose;
PROPERTY OnCloseQuery:TCloseQueryEvent read FOnCloseQuery write FOnCloseQuery;
PROPERTY OnCommand;
PROPERTY OnDblClick;
PROPERTY OnDeactivate:TNotifyEvent read FOnDeactivate write FOnDeactivate;
PROPERTY OnDismissDlg:TNotifyEvent read FOnDismissDlg write FOnDismissDlg;
PROPERTY OnDragDrop;
PROPERTY OnDragOver;
PROPERTY OnEndDrag;
PROPERTY OnFontChange;
PROPERTY OnHide;
PROPERTY OnMaximize:TNotifyEvent read FOnMaximize write FOnMaximize;
PROPERTY OnMDIActivate:TMDIActivateEvent read FOnMDIActivate write FOnMDIActivate;
PROPERTY OnMDIDeactivate:TMDIDeactivateEvent read FOnMDIDeactivate write FOnMDIDeactivate;
PROPERTY OnMenuEnd:TMenuEvent read FOnMenuEnd write FOnMenuEnd;
PROPERTY OnMenuInit:TMenuEvent read FOnMenuInit write FOnMenuInit;
PROPERTY OnMenuItemFocus:TMenuEvent read FOnMenuItemFocus write FOnMenuItemFocus;
PROPERTY OnMinimize:TNotifyEvent read FOnMinimize write FOnMinimize;
PROPERTY OnMouseClick;
PROPERTY OnMouseDblClick;
PROPERTY OnMouseDown;
PROPERTY OnMouseMove;
PROPERTY OnMouseUp;
PROPERTY OnMove;
PROPERTY OnPaint;
PROPERTY OnResize;
PROPERTY OnRestore:TNotifyEvent read FOnRestore write FOnRestore;
PROPERTY OnScan;
PROPERTY OnSetupShow;
PROPERTY OnShow;
PROPERTY OnTranslateShortCut:TTranslateShortCutEvent read FOnTranslateShortCut write FOnTranslateShortCut;
END;
HCursor=LONGWORD;
PCursorRec=^TCursorRec;
TCursorRec=RECORD
Index:TCursor;
Handle:HCursor;
Next:PCursorRec;
END;
TScreen=CLASS(TComponent)
PRIVATE
FFonts:TList; //Font list available (TFont)
FCursor:TCursor;
FCursorList:PCursorRec; //Mouse cursor list available
FDefaultCursor:HCursor;
FForms:TList; //Forms on the Desktop (TForm)
FActiveForm:TForm; //Active desktop form
FActiveControl:TControl;
FCanvas:TCanvas;
FMenuFont:TFont;
FSystemFont:TFont;
FDefaultFont:TFont;
FDefaultFrameFont:TFont;
FFontWindow:TControl; //FontWindow for OS/2
FPopupWindow:TControl; //Window for PopupMenus
PROCEDURE CreateCursors;
PROCEDURE DestroyCursors;
PROCEDURE InsertCursor(Index:TCursor;Handle:HCursor);
PROCEDURE DeleteCursor(Index:TCursor);
FUNCTION GetCursors(Index:TCursor):HCursor;
PROCEDURE SetCursors(Index:TCursor;Handle:HCursor);
PROCEDURE SetCursor(Index:TCursor);
FUNCTION GetHeight:LONGINT;
FUNCTION GetWidth:LONGINT;
FUNCTION GetFormCount:LONGINT;
FUNCTION GetForm(Index:LONGINT):TForm;
FUNCTION GetFontCount:LONGINT;
FUNCTION GetFont(Index:LONGINT):TFont;
FUNCTION GetMousePos:TPoint;
PROCEDURE SetMousePos(NewPos:TPoint);
FUNCTION GetSystemDefaultFont:TFont;
FUNCTION GetSystemFixedFont:TFont;
FUNCTION GetSystemSmallFont:TFont;
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PUBLIC
DESTRUCTOR Destroy;OVERRIDE;
FUNCTION CreateCompatibleFont(Src:TFont):TFont;
FUNCTION GetFontFromName(FaceName:STRING;Height,Width:LONGINT):TFont;
FUNCTION GetFontFromPointSize(FaceName:STRING;PointSize:LONGWORD):TFont;
FUNCTION GetControlFromPoint(pt:TPoint):TControl;
FUNCTION SystemMetrics(sm:TSystemMetrics):LONGINT;
FUNCTION SystemColors(sc:TColor):TColor;
PROCEDURE Update;
PROCEDURE MapPoints(Target:TControl;VAR pts:ARRAY OF TPoint);
FUNCTION AddCursor(Handle:HCursor):TCursor;
PROPERTY Width:LONGINT read GetWidth;
PROPERTY Height:LONGINT read GetHeight;
PROPERTY Forms[Index:LONGINT]:TForm read GetForm;
PROPERTY FormCount:LONGINT read GetFormCount;
PROPERTY ActiveForm:TForm read FActiveForm;
PROPERTY ActiveControl:TControl read FActiveControl;
PROPERTY MousePos:TPoint read GetMousePos write SetMousePos;
PROPERTY Cursor:TCursor read FCursor write SetCursor;
PROPERTY Cursors[Index:TCursor]:HCursor read GetCursors write SetCursors;
PROPERTY Fonts[Index:LONGINT]:TFont read GetFont;
PROPERTY FontCount:LONGINT read GetFontCount;
PROPERTY DefaultFrameFont:TFont read FDefaultFrameFont;
PROPERTY DefaultFont:TFont read GetSystemDefaultFont;
PROPERTY FixedFont:TFont read GetSystemFixedFont;
PROPERTY SmallFont:TFont read GetSystemSmallFont;
PROPERTY Canvas:TCanvas read FCanvas;
PROPERTY MenuFont:TFont read FMenuFont;
END;
TGraphic=CLASS(TComponent)
PRIVATE
FIsLocalCopy:BOOLEAN;
FOnChangedNotify:TNotifyEvent;
PUBLIC
PROCEDURE Draw(Canvas:TCanvas;CONST Dest:TRect);VIRTUAL;ABSTRACT;
PROCEDURE PartialDraw(Canvas:TCanvas;CONST Src,Dest:TRect);VIRTUAL;ABSTRACT;
PROCEDURE LoadFromFile(CONST FileName:STRING);VIRTUAL;
PROCEDURE SaveToFile(CONST FileName:STRING);VIRTUAL;
PROCEDURE LoadFromStream(Stream:TStream);VIRTUAL;ABSTRACT;
PROCEDURE SaveToStream(Stream:TStream);VIRTUAL;ABSTRACT;
FUNCTION CopyGraphic:TGraphic;VIRTUAL;ABSTRACT;
PROCEDURE Changed;VIRTUAL;
PROTECTED
FUNCTION GetEmpty:BOOLEAN;VIRTUAL;ABSTRACT;
FUNCTION GetHeight:LONGINT;VIRTUAL;ABSTRACT;
PROCEDURE SetHeight(NewHeight:LONGINT);VIRTUAL;ABSTRACT;
FUNCTION GetWidth:LONGINT;VIRTUAL;ABSTRACT;
PROCEDURE SetWidth(NewWidth:LONGINT);VIRTUAL;ABSTRACT;
FUNCTION GetHandle:LONGWORD;VIRTUAL;ABSTRACT;
FUNCTION GetCanvas:TCanvas;VIRTUAL;ABSTRACT;
FUNCTION GetSize:LongInt;VIRTUAL;ABSTRACT;
FUNCTION WriteSCUResourceName(Stream:TResourceStream;ResName:TResourceName):BOOLEAN;VIRTUAL;ABSTRACT;
PROCEDURE PaletteChanged;VIRTUAL;ABSTRACT;
PUBLIC
PROPERTY Empty:BOOLEAN read GetEmpty;
PROPERTY Height:LONGINT read GetHeight write SetHeight;
PROPERTY Width:LONGINT read GetWidth write SetWidth;
PROPERTY Handle:LONGWORD read GetHandle;
PROPERTY Canvas:TCanvas read GetCanvas;
PROPERTY Size:LONGINT read GetSize;
END;
TGraphicClass=CLASS OF TGraphic;
TPalette=CLASS(TComponent)
PRIVATE
FHandle:LONGWORD;
FCanvas:TCanvas;
PRIVATE
FUNCTION GetColor(Index:LONGWORD):TColor;
PROCEDURE SetColor(Index:LONGWORD;NewColor:TColor);
FUNCTION GetColorCount:LONGWORD;
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PUBLIC
FUNCTION GetColorArray(StartIndex:LONGWORD;VAR ResultArray:ARRAY OF TColor):LONGWORD;
PROCEDURE SetColorArray(StartIndex:LONGWORD;CONST SourceArray:ARRAY OF TColor);
PROPERTY ColorCount:LONGWORD read GetColorCount;
PROPERTY Handle:LONGWORD read FHandle write FHandle;
PROPERTY Colors[Index:LONGWORD]:TColor read GetColor write SetColor;
PROPERTY Canvas:TCanvas read FCanvas;
END;
TPathClipMode=(paAdd,paSubtract,paReplace,paDiff,paIntersect);
TCanvas=CLASS(TComponent)
PRIVATE
FControl:TControl;
FGraphic:TGraphic;
{$IFDEF OS2}
FUsePath:BOOLEAN;
{$ENDIF}
{$IFDEF Win32}
FPenHandle:LONGWORD;
FBrushHandle:LONGWORD;
{$ENDIF}
FFont:TFont;
FFontHandle:LONGWORD;
FFontWidth,FFontHeight:LONGINT;
FFontAttr:TFontAttributes;
FLineWidth:LONGINT;
FLineType:TPenStyle;
FBackMix:TBrushMode;
FForeMix:TPenMode;
FClipRGN:LONGWORD;
FClipRect:TRect;
FHandle:LONGWORD;
FPalette:TPalette;
FBrush:TBrush;
FPen:TPen;
FCopyMode:TBitBltMode;
FUNCTION GetPenPosition:TPoint;
PROCEDURE SetPenPosition(NewPosition:TPoint);
PROCEDURE CreateFont(NewFont:TFont;ModifyControlFont:BOOLEAN);
PROCEDURE SetFont(NewFont:TFont);
PROCEDURE SetFontHeight(NewHeight:LONGINT);
FUNCTION GetFontHeight:LONGINT;
PROCEDURE SetFontWidth(NewWidth:LONGINT);
FUNCTION GetFontWidth:LONGINT;
PROCEDURE SetFontAttr(NewAttr:TFontAttributes);
FUNCTION GetFontAttr:TFontAttributes;
PROCEDURE SetClipRect(CONST Rec:TRect);
FUNCTION GetPixel(X,Y:LONGINT):TColor;
PROCEDURE SetPixel(X,Y:LONGINT;Value:TColor);
FUNCTION GetVerticalRes:LONGINT;
FUNCTION GetHorizontalRes:LONGINT;
PROCEDURE SetPen(NewPen:TPen);
PROCEDURE SetBrush(NewBrush:TBrush);
PROCEDURE SetPalette(NewPalette:TPalette);
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PUBLIC
DESTRUCTOR Destroy;OVERRIDE;
PROCEDURE EraseBackGround;VIRTUAL;
PROCEDURE Init;VIRTUAL;
PROCEDURE FillRect(CONST Rec:TRect;FillColor:TColor);VIRTUAL;
PROCEDURE MoveTo(X,Y:LONGINT);VIRTUAL;
PROCEDURE LineTo(X,Y:LONGINT);VIRTUAL;
PROCEDURE Line(X,Y,X1,Y1:LONGINT);VIRTUAL;
PROCEDURE PolyLine(Points:ARRAY OF TPoint);VIRTUAL;
PROCEDURE Polygon(Points:ARRAY OF TPoint);VIRTUAL;
PROCEDURE ShadowedBorder(CONST Rec:TRect;ColorHi,ColorLo:TColor);
PROCEDURE RoundShadowedBorder(CONST Rec:TRect;ColorHi,ColorLo:TColor);
PROCEDURE DrawFocusRect(CONST Rec:TRect);
PROCEDURE Rectangle(CONST Rec:TRect);
PROCEDURE RoundRect(CONST Rec:TRect;RoundWidth,RoundHeight:LONGINT);
PROCEDURE DrawInvertRect(CONST Rec:TRect);
PROCEDURE Box(CONST Rec:TRect);
PROCEDURE OutlineBox(CONST Rec:TRect);
PROCEDURE Circle(X,Y:LONGINT;Radius:LONGINT);
PROCEDURE Arc(X,Y:LONGINT;RadiusX,RadiusY:LONGINT;StartAngle,SweepAngle:EXTENDED);
PROCEDURE Chord(X,Y:LONGINT;RadiusX,RadiusY:LONGINT;StartAngle,SweepAngle:EXTENDED);
PROCEDURE Pie(X,Y:LONGINT;RadiusX,RadiusY:LONGINT;StartAngle,SweepAngle:EXTENDED);
PROCEDURE CopyRect(CONST Dest:TRect;Canvas:TCanvas;CONST Source:TRect);
PROCEDURE BezierSpline(X,Y:LONGINT;Points:ARRAY OF TPoint);
PROCEDURE FilledCircle(X,Y:LONGINT;Radius:LONGINT);
PROCEDURE Ellipse(X,Y:LONGINT;RadiusX,RadiusY:LONGINT);
PROCEDURE FilledEllipse(X,Y:LONGINT;RadiusX,RadiusY:LONGINT);
PROCEDURE DrawString(CONST s:STRING);
PROCEDURE TextOut(X,Y:LONGINT;CONST s:STRING);
PROCEDURE MnemoTextOut(X,Y:LONGINT;CONST s:STRING);
PROCEDURE Draw(X,Y:LONGINT;Graphic:TGraphic);
PROCEDURE PartialDraw(X,Y:LONGINT;CONST SourceRec:TRect;Graphic:TGraphic);
PROCEDURE StretchDraw(X,Y,Width,Height:LONGINT;Graphic:TGraphic);
PROCEDURE StretchPartialDraw(X,Y,Width,Height:LONGINT;CONST SourceRec:TRect;Graphic:TGraphic);
FUNCTION TextHeight(CONST Text:STRING):LONGINT;
FUNCTION TextWidth(CONST Text:STRING):LONGINT;
PROCEDURE TextRect(CONST rc:TRect;X,Y:LONGINT;CONST Text:STRING);
PROCEDURE FloodFill(X,Y:LONGINT;BorderColor:TColor;FillSurface:BOOLEAN);
PROCEDURE GetTextExtent(CONST s:STRING;VAR Width,Height:LONGINT);
PROCEDURE SetClipRegion(Rects:ARRAY OF TRect);
PROCEDURE DeleteClipRegion;
PROCEDURE ExcludeClipRect(CONST Rec:TRect);
PROCEDURE BitBlt(DestCanvas:TCanvas;CONST Dest,Source:TRect;
Mode:TBitBltMode;Flags:TBitBltFlags);
PROCEDURE BeginPath;
PROCEDURE EndPath;
PROCEDURE FillPath;
PROCEDURE StrokePath;
PROCEDURE OutlinePath;
PROCEDURE CloseFigure;
PROCEDURE PathToClipRegion(Mode:TPathClipMode);
PUBLIC
PROPERTY Handle:LONGWORD read FHandle write FHandle;
PROPERTY Graphic:TGraphic read FGraphic;
PROPERTY Control:TControl read FControl;
PROPERTY PenPos:TPoint read GetPenPosition write SetPenPosition;
PROPERTY Font:TFont read FFont write SetFont;
PROPERTY FontHeight:LONGINT read GetFontHeight write SetFontHeight;
PROPERTY FontWidth:LONGINT read GetFontWidth write SetFontWidth;
PROPERTY FontAttributes:TFontAttributes read GetFontAttr write SetFontAttr;
PROPERTY ClipRect:TRect read FClipRect write SetClipRect;
PROPERTY Pixels[X,Y:LONGINT]:TColor read GetPixel write SetPixel;
PROPERTY Palette:TPalette read FPalette write SetPalette;
PROPERTY VerticalResolution:LONGINT read GetVerticalRes;
PROPERTY HorizontalResolution:LONGINT read GetHorizontalRes;
PROPERTY Pen:TPen read FPen write SetPen;
PROPERTY Brush:TBrush read FBrush write SetBrush;
PROPERTY CopyMode:TBitBltMode read FCopyMode write FCopyMode;
END;
TYPE
TPlatform=(OS2Ver20, OS2Ver30, OS2Ver40, Win32);
THintInfo=RECORD
HintControl:TControl;
HintPos:TPoint;
HintMaxWidth:LONGINT;
HintColor:TColor;
HintPenColor:TColor;
CursorRect:TRect;
CursorPos:TPoint;
END;
{$M+}
TMessageEvent=PROCEDURE(VAR Msg:TMessage;VAR Handled:BOOLEAN) OF OBJECT;
TIdleEvent=PROCEDURE(Sender:TObject;VAR Done:BOOLEAN) OF OBJECT;
TGetHintExtentEvent=PROCEDURE(Sender:TObject;CONST Bubble:STRING;VAR Width,Height:LONGINT) OF OBJECT;
TDrawHintEvent=PROCEDURE(Sender:TObject;CONST Bubble:STRING;CONST rec:TRect) OF OBJECT;
TExceptionEvent=PROCEDURE(Sender:TObject;E:Exception) OF OBJECT;
THelpEvent=PROCEDURE(Context:THelpContext;VAR result:BOOLEAN) OF OBJECT;
TShowHintEvent=PROCEDURE(VAR HintStr:STRING;VAR CanShow:BOOLEAN;VAR HintInfo:THintInfo) OF OBJECT;
{$M-}
{$M+}
THintOrigin=(hiTop,hiBottom);
{$M-}
TApplication=CLASS(TComponent)
PRIVATE
FMainForm:TForm;
FShowMainForm:BOOLEAN;
FIcon:TGraphic;
FHelpFile:PString;
FHelpWindowTitle:PString;
FHelpWindow:HWindow;
FHintTimer:TTimer;
FHintControl:TControl;
FHintParent:TControl;
FHintOwner:TControl;
FHint:STRING;
FShowHint:BOOLEAN;
FHintPause:LONGINT;
FHintPenColor:TColor;
FHintColor:TColor;
FHintPS:LONGWORD;
FHintDC:LONGWORD;
FHintRec:TRect;
FHintBackGround:LONGWORD; {BackGround Bitmap}
FHintOrigin:THintOrigin;
{$IFDEF Win32}
FOldBubbleBitmap:LONGWORD;
{$ENDIF}
FMenuItemList:TList;
FFont:TFont;
FPlatform:TPlatform;
FDBCSSystem:BOOLEAN;
FTerminate:BOOLEAN;
ExceptObject:Exception;
FOnHint:TNotifyEvent;
FOnIdle:TIdleEvent;
FOnMessage:TMessageEvent;
FOnGetHintExtent:TGetHintExtentEvent;
FOnDrawBubble:TDrawHintEvent;
FOnException:TExceptionEvent;
FOnHelp:THelpEvent;
FOnShowHint:TShowHintEvent;
PRIVATE
FUNCTION GetHelpFile:STRING;
PROCEDURE SetHelpFile(NewName:STRING);
FUNCTION GetHelpWindowTitle:STRING;
PROCEDURE SetHelpWindowTitle(NewTitle:STRING);
PROCEDURE SetHint(CONST NewText:STRING);
PROCEDURE HintTimerExpired;
PROCEDURE DestroyHintWindow;
FUNCTION NewMenuItem(Entry:TMenuItem):TCommand;
PROCEDURE DeleteMenuItem(Entry:TMenuItem);
FUNCTION GetMenuItem(Command:TCommand):TMenuItem;
PROCEDURE SetFont(NewFont:TFont);
FUNCTION ProcessMessage:BOOLEAN;
PROCEDURE Idle;
FUNCTION GetIcon:TGraphic;
PROCEDURE SetIcon(NewIcon:TGraphic);
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PUBLIC
CONSTRUCTOR Create;VIRTUAL;
DESTRUCTOR Destroy;OVERRIDE;
PROCEDURE CreateForm(InstanceClass:TFormClass;VAR Reference:TForm);
PROCEDURE Run;
PROCEDURE RunFailed;VIRTUAL;
PROCEDURE ProcessMessages;
PROCEDURE HandleMessage;
PROCEDURE Terminate;
PROCEDURE HandleException(Sender:TObject);
PROCEDURE ShowException(E:Exception);
PROCEDURE HelpIndex;
PROCEDURE HelpOnHelp;
PROCEDURE HelpContents;
PROCEDURE KeysHelp;
FUNCTION HelpJump(CONST JumpId:STRING):BOOLEAN;
FUNCTION HelpContext(Context:THelpContext):BOOLEAN;
FUNCTION Help(Context:THelpContext):BOOLEAN;VIRTUAL;
PUBLIC
PROPERTY MainForm:TForm read FMainForm;
PROPERTY HelpFile:STRING read GetHelpFile write SetHelpFile;
PROPERTY HelpWindowTitle:STRING read GetHelpWindowTitle write SetHelpWindowTitle;
PROPERTY HelpWindow:HWindow read FHelpWindow;
PROPERTY Platform:TPlatform read FPlatform;
PROPERTY DBCSSystem:BOOLEAN read FDBCSSystem;
PROPERTY Terminated:BOOLEAN read FTerminate;
PROPERTY Hint:STRING read FHint write SetHint;
PROPERTY ShowHint:BOOLEAN read FShowHint write FShowHint;
PROPERTY ShowMainForm:BOOLEAN read FShowMainForm write FShowMainForm;
PROPERTY HintPause:LONGINT read FHintPause write FHintPause;
PROPERTY HintPenColor:TColor read FHintPenColor write FHintPenColor;
PROPERTY HintColor:TColor read FHintColor write FHintColor;
PROPERTY HintOrigin:THintOrigin read FHintOrigin write FHintOrigin;
PROPERTY Font:TFont read FFont write SetFont;
PROPERTY Icon:TGraphic read GetIcon write SetIcon;
PROPERTY OnHint:TNotifyEvent read FOnHint write FOnHint;
PROPERTY OnIdle:TIdleEvent read FOnIdle write FOnIdle;
PROPERTY OnMessage:TMessageEvent read FOnMessage write FOnMessage;
PROPERTY OnGetHintExtent:TGetHintExtentEvent read FOnGetHintExtent write FOnGetHintExtent;
PROPERTY OnDrawBubble:TDrawHintEvent read FOnDrawBubble write FOnDrawBubble;
PROPERTY OnException:TExceptionEvent read FOnException write FOnException;
PROPERTY OnHelp:THelpEvent read FOnHelp write FOnHelp;
PROPERTY OnShowHint:TShowHintEvent read FOnShowHint write FOnShowHint;
END;
//DDE Handling
//
//there are two types of commands a DDE Server can provide: Macros and
//Topics.
//
//Macros are command strings that don't receive or return data, they simply
//perform actions at the server side. On client side a macro can be
//invoked using the ExecuteMacro or ExecuteMacroLines methods. On server side the
//OnExecuteMacro handler is invoked if a macro comes in, that is valid
//for that server. A DDEServerItem can be used without a DDEServerConv if no macros are to be
//received. Note that DDE servers are form local and should be
//inserted into a desktop form. Otherwise the DDE server might not receive messages.
//The default topic of a conversation is the TDdeServerConv Name property if a
//server exists (Property ServerConv of the TDdeServerItem), otherwise it is the
//caption of the form containing the TDdeServerItem component. If you assign the
//DdeTopic property with a value <> '' then the topic of the conversation is changed
//to that value
//
//Items are defined using the TDdeServerItem's DdeItem property. By default the Item
//is a empty string, that means the item is the same as the topic of the
//conversation. In this case the first item that has the server with the specified
//topic as ServerConv is used for the conversation. Items receive and return data
//with the Text property. To receive or post multiple lines use the Lines property.
//DDE conversations are established by either calling the OpenLink and CloseLink
//methods (mode ddeManual) or automatically when the component is created
//(mode ddeAutomatic). Items can be send bei either using PokeData or
//PokeDataLines. Data can be transfered from the server by calling RequestData.
//A DdeClientItem cannot be used without a DDEClientConv component assigned.
//
//To determine which topics and macros are valid, consult the documentation of the DDE server
//application.
TDdeServerConv=CLASS;
TDdeServerItem=CLASS;
TDdeClientConv=CLASS;
TDdeClientItem=CLASS;
{$M+}
TDataMode=(ddeAutomatic, ddeManual);
TExecuteMacro=PROCEDURE(Sender:TObject;Macro:TStrings;VAR Success:BOOLEAN) OF OBJECT;
{$M-}
TDdeClientConv=CLASS(TComponent)
PRIVATE
FDdeService:PSTRING;
FDdeTopic:PSTRING;
FItems: TList;
FConnectMode:TDataMode;
FForm:TForm;
FConnected:BOOLEAN;
FObjectWindow:TControl;
FOperationComplete:BOOLEAN;
FData:POINTER;
FDataLen:LONGINT;
FTimeOut:LONGWORD;
FOnClose:TNotifyEvent;
FOnOpen:TNotifyEvent;
FOnTimeOut:TNotifyEvent;
FUNCTION GetDdeService:STRING;
PROCEDURE SetDdeService(CONST Value:STRING);
FUNCTION GetDdeTopic:STRING;
PROCEDURE SetDdeTopic(CONST Value:STRING);
PROCEDURE SetConnectMode(NewValue:TDataMode);
PROCEDURE RemoveItem(Item:TDdeClientItem);
PROCEDURE InsertItem(Item:TDdeClientItem);
FUNCTION GetItem(Index:LONGINT):TDdeClientItem;
FUNCTION GetItemCount:LONGINT;
PROCEDURE WaitForServer;
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
FUNCTION CreateDdeConv(CONST AppName,TopicName:STRING):BOOLEAN;
PUBLIC
DESTRUCTOR Destroy;OVERRIDE;
FUNCTION PasteLink:Boolean;
FUNCTION OpenLink:Boolean;
FUNCTION SetLink(CONST Service,Topic:STRING):BOOLEAN;
PROCEDURE CloseLink;
FUNCTION StartAdvise(Item:STRING):BOOLEAN;
FUNCTION StopAdvise(Item:STRING):BOOLEAN;
FUNCTION PokeDataLines(CONST Item:STRING;Data:TStrings):BOOLEAN;
FUNCTION PokeData(CONST Item:STRING;Data:PChar):BOOLEAN;
FUNCTION ExecuteMacro(Cmd: PChar;waitFlg:BOOLEAN):BOOLEAN;
FUNCTION ExecuteMacroLines(Cmd:TStrings;waitFlg:BOOLEAN):BOOLEAN;
FUNCTION RequestData(CONST Item:STRING):PChar;
PROPERTY ItemCount:LONGINT read GetItemCount;
PROPERTY Items[Index:LONGINT]:TDdeClientItem read GetItem;
PROPERTY Form:TForm read FForm;
PROPERTY Connected:BOOLEAN read FConnected;
PUBLISHED
PROPERTY DdeService:STRING read GetDdeService write SetDdeService;
PROPERTY DdeTopic:STRING read GetDdeTopic write SetDdeTopic;
PROPERTY ConnectMode:TDataMode read FConnectMode write SetConnectMode;
PROPERTY TimeOut:LONGWORD read FTimeOut write FTimeOut;
PROPERTY OnClose:TNotifyEvent read FOnClose write FOnClose;
PROPERTY OnOpen:TNotifyEvent read FOnOpen write FOnOpen;
PROPERTY OnTimeOut:TNotifyEvent read FOnTimeOut write FOnTimeOut;
END;
TDdeClientItem=CLASS(TComponent)
PRIVATE
FLines: TStrings;
FDdeClientItem:^STRING;
FForm:TForm;
FClientConv:TDdeClientConv;
FOnChange: TNotifyEvent;
FUNCTION GetText:STRING;
FUNCTION GetDdeClientItem:STRING;
PROCEDURE SetDdeClientItem(CONST NewValue:STRING);
PROCEDURE SetDdeClientConv(SConv:TDdeClientConv);
PROCEDURE SetText(CONST Item:STRING);
PROCEDURE SetLines(Value:TStrings);
PROCEDURE ValueChanged;
PROCEDURE OnAdvise(Text:PChar);
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE Notification(AComponent:TComponent;Operation:TOperation);OVERRIDE;
PUBLIC
DESTRUCTOR Destroy;OVERRIDE;
FUNCTION Advise:BOOLEAN;
FUNCTION Unadvise:BOOLEAN;
FUNCTION Request:BOOLEAN;
FUNCTION Poke:BOOLEAN;
PROPERTY Form:TForm read FForm;
PUBLISHED
PROPERTY Text:STRING read GetText write SetText;
PROPERTY Lines: TStrings read FLines write SetLines;
PROPERTY DdeConv: TDdeClientConv read FClientConv write SetDdeClientConv;
PROPERTY DdeItem:STRING read GetDdeClientItem write SetDdeClientItem;
PROPERTY OnChange: TNotifyEvent read FOnChange write FOnChange;
END;
TDdeServerConv=CLASS(TComponent)
PRIVATE
FItems:TList;
FForm:TForm;
FOnExecuteMacro:TExecuteMacro;
FOnOpen:TNotifyEvent;
FOnClose:TNotifyEvent;
FDdeTopic:PSTRING;
PROCEDURE InsertItem(Item:TDdeServerItem);
PROCEDURE RemoveItem(Item:TDdeServerItem);
FUNCTION GetItemCount:LONGINT;
FUNCTION GetItem(Index:LONGINT):TDdeServerItem;
FUNCTION GetDdeTopic:STRING;
PROCEDURE SetDdeTopic(NewValue:STRING);
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PUBLIC
DESTRUCTOR Destroy;OVERRIDE;
PROCEDURE ExecuteMacro(Macro:TStrings;VAR Success:BOOLEAN);VIRTUAL;
PROCEDURE Connect;VIRTUAL;
PROCEDURE Disconnect;VIRTUAL;
PROPERTY ItemCount:LONGINT read GetItemCount;
PROPERTY Items[Index:LONGINT]:TDdeServerItem read GetItem;
PROPERTY Form:TForm read FForm;
PUBLISHED
PROPERTY OnExecuteMacro:TExecuteMacro read FOnExecuteMacro write FOnExecuteMacro;
PROPERTY OnOpen:TNotifyEvent read FOnOpen write FOnOpen;
PROPERTY OnClose:TNotifyEvent read FOnClose write FOnClose;
PROPERTY DdeTopic:STRING read GetDdeTopic write SetDdeTopic;
END;
TDdeServerItem=CLASS(TComponent)
PRIVATE
FLines:TStrings;
FItem:^STRING;
FForm:TForm;
FServerConv:TDdeServerConv;
FAdviseMode:LONGINT;
FAdviseModeSend:BOOLEAN;
FOnChange:TNotifyEvent;
FOnPokeData:TNotifyEvent;
PROCEDURE ValueChanged;
FUNCTION GetItem:STRING;
PROCEDURE SetItem(NewValue:STRING);
FUNCTION GetText:STRING;
PROCEDURE SetText(CONST Item:STRING);
PROCEDURE SetLines(Value:TStrings);
PROCEDURE SetServerConv(SConv:TDdeServerConv);
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE Notification(AComponent:TComponent;Operation:TOperation);OVERRIDE;
PUBLIC
DESTRUCTOR Destroy;OVERRIDE;
//FUNCTION PokeData(Data: HDdeData): LongInt;
//PROCEDURE CopyToClipboard;
PROCEDURE Change;VIRTUAL;
PROPERTY Form:TForm read FForm;
PUBLISHED
PROPERTY ServerConv:TDdeServerConv read FServerConv write SetServerConv;
PROPERTY DdeItem:STRING read GetItem write SetItem;
PROPERTY Text:STRING read GetText write SetText;
PROPERTY Lines:TStrings read FLines write SetLines;
PROPERTY OnChange:TNotifyEvent read FOnChange write FOnChange;
PROPERTY OnPokeData:TNotifyEvent read FOnPokeData write FOnPokeData;
END;
TDdeMgr=CLASS(TComponent)
PRIVATE
FAppName:PSTRING;
FClientConvs:TList;
FServerConvs:TList;
FServerItems:TList;
OWindows:TList;
FClients:TList;
PROCEDURE PostDataChange(CONST Topic,Item:STRING);
PROCEDURE SetAppName(CONST Name:STRING);
FUNCTION GetAppName:STRING;
PROCEDURE ResetAppName;
FUNCTION GetServerItem(CONST Topic:STRING;Form:TForm;
VAR Conv:TDdeServerConv):TDdeServerItem;
FUNCTION HasDDEServers(Form:TForm):BOOLEAN;
PROCEDURE InsertServerConv(SConv: TDdeServerConv);
PROCEDURE RemoveServerConv(SConv: TDdeServerConv);
PROCEDURE InsertServerItem(Item:TDdeServerItem);
PROCEDURE RemoveServerItem(Item:TDdeServerItem);
PROCEDURE GetTopics(Topics:TStrings;Form:TForm);
PROCEDURE AddObjectWindow(OWindow:TControl);
PROCEDURE RemoveObjectWindow(OWindow:TControl);
FUNCTION GetActiveDdeConnections:LONGINT;
PROCEDURE AddClient(Client:TDdeClientConv);
PROCEDURE RemoveClient(Client:TDdeClientConv);
PROCEDURE OpenClientLinks(Form:TForm);
PROCEDURE CloseClientLinks(Form:TForm);
PROCEDURE CloseAllLinks;
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PUBLIC
DESTRUCTOR Destroy;OVERRIDE;
FUNCTION GetExeName:STRING;
//PROPERTY DdeInstId:LongInt read FDdeInstId write FDdeInstId;
PROPERTY AppName:STRING read GetAppName write SetAppName;
//PROPERTY LinkClipFmt:Word read FLinkClipFmt;
PROPERTY ActiveDdeConnections:LONGINT read GetActiveDdeConnections;
END;
VAR
DDEMgr: TDdeMgr;
TYPE
TCompLibData=RECORD
NewHeapOrg,NewHeapEnd,NewHeapPtr:POINTER;
NewHeapSize:LONGWORD;
NewLastHeapPage,NewLastHeapPageAdr:POINTER;
NewHeapMutex:LONGWORD;
Screen:TScreen;
Application:TApplication;
ClipBoard:TClipBoard;
ToolsAPI:TObject;
ToolsAPIRequired:BOOLEAN;
NullStr:PString;
END;
FUNCTION Point(X,Y:LONGINT):TPoint;
FUNCTION Rect(left,bottom,right,top:LONGINT):TRect;
FUNCTION PointInRect(pt:TPoint; rec:TRect):BOOLEAN;
FUNCTION RectInRect(CONST childrec,parentrec:TRect):BOOLEAN;
PROCEDURE InflateRect(VAR rec:TRect; x,y:LONGINT);
PROCEDURE OffsetRect(VAR rec:TRect; x,y:LONGINT);
FUNCTION IntersectRect(CONST rec1,rec2:TRect):TRect;
FUNCTION UnionRect(CONST rec1,rec2:TRect):TRect;
FUNCTION IsRectEmpty(CONST rec:TRect):BOOLEAN;
FUNCTION SendMsg(ahwnd:HWindow;Msg:ULONG;mp1,mp2:LONG):LONG;
FUNCTION PostMsg(ahwnd:HWindow;Msg:ULONG;mp1,mp2:LONG):BOOL;
FUNCTION HandleToControl(ahwnd:HWindow):TControl;
FUNCTION OppositeRGB(Color:TColor):TColor;
FUNCTION ValuesToRGB(Red,Green,Blue:BYTE):TColor;
FUNCTION RGBToValues(Color:TColor;VAR Red,Green,Blue:BYTE):TColor;
FUNCTION SysColorToRGB(Color:TColor):TColor;
FUNCTION WinColorToRGB(Color:TColor):TColor;
FUNCTION RGBToWinColor(Color:TColor):TColor;
FUNCTION GetShortHint(CONST Hint:STRING):STRING;
FUNCTION GetLongHint(CONST Hint:STRING):STRING;
FUNCTION IsControlLocked(Control:TControl):BOOLEAN;
FUNCTION GetParentForm(Control:TControl):TForm;
FUNCTION ReadSCUFont(VAR Data;DataLen:LONGINT):TFont;
PROCEDURE DrawSystemBorder(Control:TControl;VAR rec:TRect;Style:TBorderStyle);
PROCEDURE DrawSystemFrame(Control:TControl;VAR rec:TRect;LightColor,DarkColor:TColor);
PROCEDURE TransformPointToOS2(VAR pt:TPoint;Control:TControl;Graphic:TGraphic);
PROCEDURE TransformRectToOS2(VAR rec:TRect;Control:TControl;Graphic:TGraphic);
PROCEDURE TransformPointToWin32(VAR pt:TPoint;Control:TControl;Graphic:TGraphic);
PROCEDURE TransformRectToWin32(VAR rec:TRect;Control:TControl;Graphic:TGraphic);
PROCEDURE TransformClientPoint(VAR pt:TPoint;Control:TControl;Graphic:TGraphic);
PROCEDURE TransformClientRect(VAR rec:TRect;Control:TControl;Graphic:TGraphic);
PROCEDURE MapDialogPoints(SourceWindow:HWindow;VAR ptl:TPoint);
PROCEDURE RectToWin32Rect(VAR rec:TRect);
PROCEDURE Win32RectToRect(VAR rec:TRect);
FUNCTION IsDBCSFirstByte(ch:CHAR):BOOLEAN;
VAR
Screen:TScreen;
Clipboard:TClipboard;
Application:TApplication;
CONST
RegisterToolsAPIProc:PROCEDURE(ToolServ:TObject)=NIL;
{internal}
PROCEDURE SetupCompLib(VAR Data:TCompLibData);
PROCEDURE RegisterAutomaticForm(FormClass:TFormClass;Address:POINTER);
IMPLEMENTATION