home *** CD-ROM | disk | FTP | other *** search
- {*******************************************************}
- { }
- { Delphi Visual Component Library }
- { }
- { Copyright (c) 1995 Borland International }
- { }
- {*******************************************************}
-
- unit Controls;
-
- {$P+,S-,W-,R-}
- {$C PRELOAD}
-
- interface
-
- {$R CONTROLS}
-
- uses WinTypes, WinProcs, Messages, Classes, SysUtils, Graphics, Menus;
-
- { VCL control message IDs }
-
- const
- CM_BASE = $0F00;
- CM_ACTIVATE = CM_BASE + 0;
- CM_DEACTIVATE = CM_BASE + 1;
- CM_GOTFOCUS = CM_BASE + 2;
- CM_LOSTFOCUS = CM_BASE + 3;
- CM_CANCELMODE = CM_BASE + 4;
- CM_DIALOGKEY = CM_BASE + 5;
- CM_DIALOGCHAR = CM_BASE + 6;
- CM_FOCUSCHANGED = CM_BASE + 7;
- CM_PARENTFONTCHANGED = CM_BASE + 8;
- CM_PARENTCOLORCHANGED = CM_BASE + 9;
- CM_HITTEST = CM_BASE + 10;
- CM_VISIBLECHANGED = CM_BASE + 11;
- CM_ENABLEDCHANGED = CM_BASE + 12;
- CM_COLORCHANGED = CM_BASE + 13;
- CM_FONTCHANGED = CM_BASE + 14;
- CM_CURSORCHANGED = CM_BASE + 15;
- CM_CTL3DCHANGED = CM_BASE + 16;
- CM_PARENTCTL3DCHANGED = CM_BASE + 17;
- CM_TEXTCHANGED = CM_BASE + 18;
- CM_MOUSEENTER = CM_BASE + 19;
- CM_MOUSELEAVE = CM_BASE + 20;
- CM_MENUCHANGED = CM_BASE + 21;
- CM_APPKEYDOWN = CM_BASE + 22;
- CM_APPSYSCOMMAND = CM_BASE + 23;
- CM_BUTTONPRESSED = CM_BASE + 24;
- CM_SHOWINGCHANGED = CM_BASE + 25;
- CM_ENTER = CM_BASE + 26;
- CM_EXIT = CM_BASE + 27;
- CM_DESIGNHITTEST = CM_BASE + 28;
- CM_ICONCHANGED = CM_BASE + 29;
- CM_WANTSPECIALKEY = CM_BASE + 30;
- CM_INVOKEHELP = CM_BASE + 31;
- CM_WINDOWHOOK = CM_BASE + 32;
- CM_RELEASE = CM_BASE + 33;
- CM_SHOWHINTCHANGED = CM_BASE + 34;
- CM_PARENTSHOWHINTCHANGED = CM_BASE + 35;
- CM_SYSCOLORCHANGE = CM_BASE + 36;
- CM_WININICHANGE = CM_BASE + 37;
- CM_FONTCHANGE = CM_BASE + 38;
- CM_TIMECHANGE = CM_BASE + 39;
-
- { VCL control notification IDs }
-
- const
- CN_BASE = $2000;
- CN_CHARTOITEM = CN_BASE + WM_CHARTOITEM;
- CN_COMMAND = CN_BASE + WM_COMMAND;
- CN_COMPAREITEM = CN_BASE + WM_COMPAREITEM;
- CN_CTLCOLOR = CN_BASE + WM_CTLCOLOR;
- CN_DELETEITEM = CN_BASE + WM_DELETEITEM;
- CN_DRAWITEM = CN_BASE + WM_DRAWITEM;
- CN_HSCROLL = CN_BASE + WM_HSCROLL;
- CN_MEASUREITEM = CN_BASE + WM_MEASUREITEM;
- CN_PARENTNOTIFY = CN_BASE + WM_PARENTNOTIFY;
- CN_VKEYTOITEM = CN_BASE + WM_VKEYTOITEM;
- CN_VSCROLL = CN_BASE + WM_VSCROLL;
- CN_KEYDOWN = CN_BASE + WM_KEYDOWN;
- CN_KEYUP = CN_BASE + WM_KEYUP;
- CN_CHAR = CN_BASE + WM_CHAR;
- CN_SYSKEYDOWN = CN_BASE + WM_SYSKEYDOWN;
- CN_SYSCHAR = CN_BASE + WM_SYSCHAR;
-
-
- { TModalResult values }
-
- const
- mrNone = 0;
- mrOk = idOk;
- mrCancel = idCancel;
- mrAbort = idAbort;
- mrRetry = idRetry;
- mrIgnore = idIgnore;
- mrYes = idYes;
- mrNo = idNo;
- mrAll = mrNo + 1;
-
- { Cursor identifiers }
-
- const
- crDefault = 0;
- crNone = -1;
- crArrow = -2;
- crCross = -3;
- crIBeam = -4;
- crSize = -5;
- crSizeNESW = -6;
- crSizeNS = -7;
- crSizeNWSE = -8;
- crSizeWE = -9;
- crUpArrow = -10;
- crHourGlass = -11;
- crDrag = -12;
- crNoDrop = -13;
- crHSplit = -14;
- crVSplit = -15;
- crMultiDrag = -16;
- crSQLWait = -17;
-
- type
-
- { Forward declarations }
-
- TControl = class;
- TWinControl = class;
-
- { VCL control message records }
-
- TCMActivate = TWMNoParams;
- TCMDeactivate = TWMNoParams;
- TCMGotFocus = TWMNoParams;
- TCMLostFocus = TWMNoParams;
- TCMDialogKey = TWMKeyDown;
- TCMDialogChar = TWMSysChar;
- TCMHitTest = TWMNCHitTest;
- TCMEnter = TWMNoParams;
- TCMExit = TWMNoParams;
- TCMDesignHitTest = TWMMouse;
- TCMWantSpecialKey = TWMKey;
-
- TCMCancelMode = record
- Msg: Cardinal;
- Unused: Integer;
- Sender: TControl;
- Result: Longint;
- end;
-
- TCMFocusChanged = record
- Msg: Cardinal;
- Unused: Integer;
- Sender: TWinControl;
- Result: Longint;
- end;
-
- { Exception classes }
-
- EOutOfResources = class(EOutOfMemory);
- EInvalidObject = class(Exception);
- EInvalidOperation = class(Exception);
-
- { Cursor type }
-
- TCursor = -32768..32767;
-
- { Controls }
-
- TControlCanvas = class(TCanvas)
- protected
- procedure CreateHandle; override;
- public
- destructor Destroy; override;
- procedure FreeHandle;
- property Control: TControl;
- end;
-
- TAlign = (alNone, alTop, alBottom, alLeft, alRight, alClient);
-
- TControlState = set of (csLButtonDown, csClicked, csPalette,
- csReadingState, csAlignmentNeeded, csFocusing, csCreating);
-
- TControlStyle = set of (csAcceptsControls, csCaptureMouse,
- csDesignInteractive, csClickEvents, csFramed, csSetCaption, csOpaque,
- csDoubleClicks, csFixedWidth, csFixedHeight);
-
- TMouseButton = (mbLeft, mbRight, mbMiddle);
-
- TDragMode = (dmManual, dmAutomatic);
-
- TDragState = (dsDragEnter, dsDragLeave, dsDragMove);
-
- TTabOrder = -1..32767;
-
- TCaption = string[255];
-
- TMouseEvent = procedure(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer) of object;
- TMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState;
- X, Y: Integer) of object;
- TKeyEvent = procedure(Sender: TObject; var Key: Word;
- Shift: TShiftState) of object;
- TKeyPressEvent = procedure(Sender: TObject; var Key: Char) of object;
- TDragOverEvent = procedure(Sender, Source: TObject; X, Y: Integer;
- State: TDragState; var Accept: Boolean) of object;
- TDragDropEvent = procedure(Sender, Source: TObject;
- X, Y: Integer) of object;
- TEndDragEvent = procedure(Sender, Target: TObject;
- X, Y: Integer) of object;
-
- TControl = class(TComponent)
- protected
- procedure ChangeScale(M, D: Integer); dynamic;
- procedure Click; dynamic;
- procedure DblClick; dynamic;
- procedure DefaultHandler(var Message); override;
- procedure DefineProperties(Filer: TFiler); override;
- procedure DragCanceled; dynamic;
- function GetClientOrigin: TPoint; virtual;
- function GetClientRect: TRect; virtual;
- function GetDeviceContext(var WindowHandle: HWnd): HDC; virtual;
- function GetPalette: HPALETTE; dynamic;
- function HasParent: Boolean; override;
- procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
- X, Y: Integer); dynamic;
- procedure MouseMove(Shift: TShiftState; X, Y: Integer); dynamic;
- procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
- X, Y: Integer); dynamic;
- procedure Notification(AComponent: TComponent;
- Operation: TOperation); override;
- function PaletteChanged(Foreground: Boolean): Boolean; dynamic;
- procedure ReadState(Reader: TReader); override;
- procedure SetParent(AParent: TWinControl); virtual;
- procedure SetName(const Value: TComponentName); override;
- procedure SetZOrder(TopMost: Boolean); dynamic;
- procedure UpdateBoundsRect(const R: TRect);
- procedure VisibleChanging; dynamic;
- procedure WndProc(var Message: TMessage); virtual;
- property Caption: TCaption;
- property Color: TColor default clWindow;
- property DragCursor: TCursor default crDrag;
- property DragMode: TDragMode default dmManual;
- property Font: TFont;
- property IsControl: Boolean;
- property MouseCapture: Boolean;
- property ParentColor: Boolean default True;
- property ParentFont: Boolean default True;
- property ParentShowHint: Boolean default True;
- property PopupMenu: TPopupMenu;
- property Text: TCaption;
- property WindowText: PChar;
- property OnClick: TNotifyEvent;
- property OnDblClick: TNotifyEvent;
- property OnDragDrop: TDragDropEvent;
- property OnDragOver: TDragOverEvent;
- property OnEndDrag: TEndDragEvent;
- property OnMouseDown: TMouseEvent;
- property OnMouseMove: TMouseMoveEvent;
- property OnMouseUp: TMouseEvent;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure BeginDrag(Immediate: Boolean);
- procedure BringToFront;
- function ClientToScreen(const Point: TPoint): TPoint;
- function Dragging: Boolean;
- procedure DragDrop(DragObject: TObject; X, Y: Integer); dynamic;
- procedure EndDrag(Drop: Boolean);
- function GetTextBuf(Buffer: PChar; BufSize: Integer): Integer;
- function GetTextLen: Integer;
- procedure Hide;
- procedure Invalidate; virtual;
- function Perform(Msg, WParam: Word; LParam: Longint): Longint;
- procedure Refresh;
- procedure Repaint; virtual;
- function ScreenToClient(const Point: TPoint): TPoint;
- procedure SendToBack;
- procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); virtual;
- procedure SetTextBuf(Buffer: PChar);
- procedure Show;
- procedure Update; virtual;
- property Align: TAlign default alNone;
- property BoundsRect: TRect;
- property ClientHeight: Integer;
- property ClientOrigin: TPoint;
- property ClientRect: TRect;
- property ClientWidth: Integer;
- property ControlState: TControlState;
- property ControlStyle: TControlStyle;
- property Parent: TWinControl;
- property ShowHint: Boolean;
- property Visible: Boolean default True;
- property Enabled: Boolean default True;
- published
- property Left: Integer;
- property Top: Integer;
- property Width: Integer;
- property Height: Integer;
- property Cursor: TCursor default crDefault;
- property Hint: string;
- end;
-
- TControlClass = class of TControl;
-
- TCreateParams = record
- Caption: PChar;
- Style: Longint;
- ExStyle: Longint;
- X, Y: Integer;
- Width, Height: Integer;
- WndParent: HWnd;
- Param: Pointer;
- WindowClass: TWndClass;
- WinClassName: array[0..63] of Char;
- end;
-
- TWinControl = class(TControl)
- protected
- procedure ChangeScale(M, D: Integer); override;
- procedure CreateHandle; virtual;
- procedure CreateParams(var Params: TCreateParams); virtual;
- procedure CreateSubClass(var Params: TCreateParams;
- ControlClassName: PChar);
- procedure CreateWindowHandle(const Params: TCreateParams); virtual;
- procedure CreateWnd; virtual;
- procedure DefaultHandler(var Message); override;
- procedure DestroyHandle;
- procedure DestroyWindowHandle; virtual;
- procedure DestroyWnd; virtual;
- function DoKeyDown(var Message: TWMKey): Boolean;
- function DoKeyPress(var Message: TWMKey): Boolean;
- function DoKeyUp(var Message: TWMKey): Boolean;
- procedure AlignControls(AControl: TControl; var Rect: TRect); virtual;
- function IsControlMouseMsg(var Message: TWMMouse): Boolean;
- function FindNextControl(CurControl: TWinControl;
- GoForward, CheckTabStop, CheckParent: Boolean): TWinControl;
- function GetClientOrigin: TPoint; override;
- function GetClientRect: TRect; override;
- function GetDeviceContext(var WindowHandle: HWnd): HDC; override;
- procedure DoEnter; dynamic;
- procedure DoExit; dynamic;
- procedure KeyDown(var Key: Word; Shift: TShiftState); dynamic;
- procedure KeyUp(var Key: Word; Shift: TShiftState); dynamic;
- procedure KeyPress(var Key: Char); dynamic;
- procedure MainWndProc(var Message: TMessage);
- procedure NotifyControls(Msg: Word);
- procedure PaintControls(DC: HDC; First: TControl);
- procedure PaintHandler(var Message: TWMPaint);
- procedure PaintWindow(DC: HDC); virtual;
- function PaletteChanged(Foreground: Boolean): Boolean; override;
- procedure ReadState(Reader: TReader); override;
- procedure RecreateWnd;
- procedure ScaleControls(M, D: Integer);
- procedure SelectFirst;
- procedure SelectNext(CurControl: TWinControl;
- GoForward, CheckTabStop: Boolean);
- procedure SetZOrder(TopMost: Boolean); override;
- procedure ShowControl(AControl: TControl); virtual;
- procedure WndProc(var Message: TMessage); override;
- procedure WriteComponents(Writer: TWriter); override;
- property Ctl3D: Boolean;
- property DefWndProc: Pointer;
- property ParentCtl3D: Boolean default True;
- property WindowHandle: HWnd;
- property OnEnter: TNotifyEvent;
- property OnExit: TNotifyEvent;
- property OnKeyDown: TKeyEvent;
- property OnKeyPress: TKeyPressEvent;
- property OnKeyUp: TKeyEvent;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure Broadcast(var Message);
- function CanFocus: Boolean;
- function ContainsControl(Control: TControl): Boolean;
- function ControlAtPos(const Pos: TPoint; AllowDisabled: Boolean): TControl;
- procedure DisableAlign;
- procedure EnableAlign;
- function Focused: Boolean;
- procedure GetTabOrderList(List: TList);
- function HandleAllocated: Boolean;
- procedure HandleNeeded;
- procedure InsertControl(AControl: TControl);
- procedure Invalidate; override;
- procedure RemoveControl(AControl: TControl);
- procedure Realign;
- procedure Repaint; override;
- procedure ScaleBy(M, D: Integer);
- procedure ScrollBy(DeltaX, DeltaY: Integer);
- procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
- procedure SetFocus; virtual;
- procedure Update; override;
- property Brush: TBrush;
- property Controls[Index: Integer]: TControl;
- property ControlCount: Integer;
- property Handle: HWnd;
- property Showing: Boolean;
- property TabOrder: TTabOrder default -1;
- property TabStop: Boolean default False;
- published
- property HelpContext: THelpContext default 0;
- end;
-
- TGraphicControl = class(TControl)
- protected
- procedure Paint; virtual;
- property Canvas: TCanvas;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- end;
-
- TCustomControl = class(TWinControl)
- protected
- procedure Paint; virtual;
- procedure PaintWindow(DC: HDC); override;
- property Canvas: TCanvas;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- end;
-
- THintWindow = class(TCustomControl)
- protected
- procedure CreateParams(var Params: TCreateParams); override;
- procedure Paint; override;
- public
- constructor Create(AOwner: TComponent); override;
- procedure ActivateHint(Rect: TRect; const AHint: string); virtual;
- function IsHintMsg(var Msg: TMsg): Boolean; virtual;
- procedure ReleaseHandle;
- property Caption;
- property Color;
- property Canvas;
- end;
-
- THintWindowClass = class of THintWindow;
-
- function FindControl(Handle: HWnd): TWinControl;
- function FindDragTarget(const Pos: TPoint; AllowDisabled: Boolean): TControl;
- function GetCaptureControl: TControl;
- procedure SetCaptureControl(Control: TControl);
-
- function CursorToString(Cursor: TCursor): string;
- function StringToCursor(S: string): TCursor;
- procedure GetCursorValues(Proc: TGetStrProc);
- function CursorToIdent(Cursor: Longint; var Ident: string): Boolean;
- function IdentToCursor(const Ident: string; var Cursor: Longint): Boolean;
-
- function GetShortHint(const Hint: string): string;
- function GetLongHint(const Hint: string): string;
-
- procedure DragMouseMsg(var Message: TWMMouse);
-
- const
- VBXHook: TVBXHook = nil;
- VBXPropMsg: Word = $FFFF;
-
- var
- NewStyleControls: Boolean;
-
- implementation
-