home *** CD-ROM | disk | FTP | other *** search
/ PC Format Collection 48 / SENT14D.ISO / tech / delphi / disk14 / doc.pak / FORMS.INT < prev    next >
Encoding:
Text File  |  1995-08-24  |  12.5 KB  |  377 lines

  1. {*******************************************************}
  2. {                                                       }
  3. {       Delphi Visual Component Library                 }
  4. {                                                       }
  5. {       Copyright (c) 1995 Borland International        }
  6. {                                                       }
  7. {*******************************************************}
  8.  
  9. unit Forms;
  10.  
  11. {$P+,S-,W-,R-}
  12. {$C PRELOAD}
  13.  
  14. interface
  15.  
  16. uses WinTypes, WinProcs, Messages, SysUtils, Classes, Graphics, Menus,
  17.   Controls;
  18.  
  19. type
  20.  
  21. { Forward declarations }
  22.  
  23.   TScrollingWinControl = class;
  24.   TForm = class;
  25.  
  26. { TControlScrollBar }
  27.  
  28.   TScrollBarKind = (sbHorizontal, sbVertical);
  29.   TScrollBarInc = 1..32767;
  30.  
  31.   TControlScrollBar = class(TPersistent)
  32.   public
  33.     procedure Assign(Source: TPersistent); override;
  34.     property Kind: TScrollBarKind;
  35.     property ScrollPos: Integer;
  36.   published
  37.     property Margin: Word default 0;
  38.     property Increment: TScrollBarInc default 8;
  39.     property Range: Integer default 0;
  40.     property Position: Integer default 0;
  41.     property Visible: Boolean default True;
  42.   end;
  43.  
  44. { TScrollingWinControl }
  45.  
  46.   TScrollingWinControl = class(TWinControl)
  47.   protected
  48.     procedure AutoScrollInView(AControl: TControl);
  49.     procedure ChangeScale(M, D: Integer); override;
  50.     procedure CreateWnd; override;
  51.     procedure AlignControls(AControl: TControl; var ARect: TRect); override;
  52.     property AutoScroll: Boolean default True;
  53.   public
  54.     constructor Create(AOwner: TComponent); override;
  55.     destructor Destroy; override;
  56.     procedure ScrollInView(AControl: TControl);
  57.   published
  58.     property HorzScrollBar: TControlScrollBar;
  59.     property VertScrollBar: TControlScrollBar;
  60.   end;
  61.  
  62. { TScrollBox }
  63.  
  64.   TFormBorderStyle = (bsNone, bsSingle, bsSizeable, bsDialog);
  65.   TBorderStyle = bsNone..bsSingle;
  66.  
  67.   TScrollBox = class(TScrollingWinControl)
  68.   protected
  69.     procedure CreateParams(var Params: TCreateParams); override;
  70.     procedure Resize; dynamic;
  71.   public
  72.     constructor Create(AOwner: TComponent); override;
  73.   published
  74.     property Align;
  75.     property AutoScroll;
  76.     property BorderStyle: TBorderStyle default bsSingle;
  77.     property DragCursor;
  78.     property DragMode;
  79.     property Enabled;
  80.     property Color;
  81.     property Ctl3D;
  82.     property Font;
  83.     property ParentColor;
  84.     property ParentCtl3D;
  85.     property ParentFont;
  86.     property ParentShowHint;
  87.     property PopupMenu;
  88.     property ShowHint;
  89.     property TabOrder;
  90.     property TabStop;
  91.     property Visible;
  92.     property OnClick;
  93.     property OnDblClick;
  94.     property OnDragDrop;
  95.     property OnDragOver;
  96.     property OnEndDrag;
  97.     property OnEnter;
  98.     property OnExit;
  99.     property OnMouseDown;
  100.     property OnMouseMove;
  101.     property OnMouseUp;
  102.     property OnResize: TNotifyEvent;
  103.   end;
  104.  
  105. { TDesigner }
  106.  
  107.   TDesigner = class(TObject)
  108.   public
  109.     function IsDesignMsg(Sender: TControl; var Message: TMessage): Boolean;
  110.       virtual; abstract;
  111.     procedure Modified; virtual; abstract;
  112.     procedure Notification(AComponent: TComponent;
  113.       Operation: TOperation); virtual; abstract;
  114.     procedure PaintGrid; virtual; abstract;
  115.     procedure ValidateRename(AComponent: TComponent;
  116.       const CurName, NewName: string); virtual; abstract;
  117.     property IsControl: Boolean;
  118.     property Form: TForm;
  119.   end;
  120.  
  121. { TForm }
  122.  
  123.   TWindowState = (wsNormal, wsMinimized, wsMaximized);
  124.   TFormStyle = (fsNormal, fsMDIChild, fsMDIForm, fsStayOnTop);
  125.   TBorderIcon = (biSystemMenu, biMinimize, biMaximize);
  126.   TBorderIcons = set of TBorderIcon;
  127.   TPosition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly,
  128.     poScreenCenter);
  129.   TPrintScale = (poNone, poProportional, poPrintToFit);
  130.   TTileMode = (tbHorizontal, tbVertical);
  131.   TModalResult = Low(Integer)..High(Integer);
  132.   TCloseAction = (caNone, caHide, caFree, caMinimize);
  133.   TCloseEvent = procedure(Sender: TObject; var Action: TCloseAction) of object;
  134.   TCloseQueryEvent = procedure(Sender: TObject;
  135.     var CanClose: Boolean) of object;
  136.  
  137.   TForm = class(TScrollingWinControl)
  138.   protected
  139.     procedure Activate; dynamic;
  140.     procedure ChangeScale(M, D: Integer); override;
  141.     procedure CreateParams(var Params: TCreateParams); override;
  142.     procedure CreateWindowHandle(const Params: TCreateParams); override;
  143.     procedure CreateWnd; override;
  144.     procedure Deactivate; dynamic;
  145.     procedure DefaultHandler(var Message); override;
  146.     procedure DefineProperties(Filer: TFiler); override;
  147.     procedure DestroyWindowHandle; override;
  148.     procedure DoHide; dynamic;
  149.     procedure DoShow; dynamic;
  150.     function GetClientRect: TRect; override;
  151.     procedure Notification(AComponent: TComponent;
  152.       Operation: TOperation); override;
  153.     procedure Paint; dynamic;
  154.     procedure PaintWindow(DC: HDC); override;
  155.     procedure ReadState(Reader: TReader); override;
  156.     procedure Resize; dynamic;
  157.     procedure SetName(const Value: TComponentName); override;
  158.     procedure ValidateRename(AComponent: TComponent;
  159.       const CurName, NewName: string); override;
  160.     procedure VisibleChanging; override;
  161.     procedure WndProc(var Message: TMessage); override;
  162.   public
  163.     constructor Create(AOwner: TComponent); override;
  164.     constructor CreateNew(AOwner: TComponent);
  165.     destructor Destroy; override;
  166.     procedure ArrangeIcons;
  167.     procedure Cascade;
  168.     procedure Close;
  169.     function CloseQuery: Boolean;
  170.     procedure DefocusControl(Control: TWinControl; Removing: Boolean);
  171.     procedure FocusControl(Control: TWinControl);
  172.     function GetFormImage: TBitmap;
  173.     procedure Hide;
  174.     procedure Next;
  175.     procedure Previous;
  176.     procedure Print;
  177.     procedure Release;
  178.     procedure SendCancelMode(Sender: TControl);
  179.     procedure SetFocus; override;
  180.     function SetFocusedControl(Control: TWinControl): Boolean;
  181.     procedure Show;
  182.     function ShowModal: Integer;
  183.     procedure Tile;
  184.     property Active: Boolean;
  185.     property ActiveMDIChild: TForm;
  186.     property Canvas: TCanvas;
  187.     property ClientHandle: HWND;
  188.     property Designer: TDesigner;
  189.     property ModalResult: TModalResult;
  190.     property MDIChildCount: Integer;
  191.     property MDIChildren[I: Integer]: TForm;
  192.     property TileMode: TTileMode default tbHorizontal;
  193.     property DropTarget: Boolean;
  194.   published
  195.     property ActiveControl: TWinControl;
  196.     property BorderIcons: TBorderIcons default [biSystemMenu, biMinimize, biMaximize];
  197.     property BorderStyle: TFormBorderStyle default bsSizeable;
  198.     property AutoScroll stored IsAutoScrollStored;
  199.     property Caption stored IsForm;
  200.     property ClientHeight write SetClientHeight stored IsClientSizeStored;
  201.     property ClientWidth write SetClientWidth stored IsClientSizeStored;
  202.     property Ctl3D default True;
  203.     property Color stored IsColorStored;
  204.     property Enabled;
  205.     property Font;
  206.     property FormStyle: TFormStyle default fsNormal;
  207.     property Height stored IsFormSizeStored;
  208.     property HorzScrollBar stored IsForm;
  209.     property Icon: TIcon;
  210.     property KeyPreview: Boolean default False;
  211.     property Menu: TMainMenu;
  212.     property ObjectMenuItem: TMenuItem;
  213.     property PixelsPerInch: Integer;
  214.     property PopupMenu stored IsForm;
  215.     property Position: TPosition default poDesigned;
  216.     property PrintScale: TPrintScale default poProportional;
  217.     property Scaled: Boolean default True;
  218.     property ShowHint;
  219.     property VertScrollBar stored IsForm;
  220.     property Visible write SetVisible default False;
  221.     property Width stored IsFormSizeStored;
  222.     property WindowState: TWindowState default wsNormal;
  223.     property WindowMenu: TMenuItem;
  224.     property OnActivate: TNotifyEvent;
  225.     property OnClick stored IsForm;
  226.     property OnClose: TCloseEvent;
  227.     property OnCloseQuery: TCloseQueryEvent;
  228.     property OnCreate: TNotifyEvent;
  229.     property OnDblClick stored IsForm;
  230.     property OnDestroy: TNotifyEvent;
  231.     property OnDeactivate: TNotifyEvent;
  232.     property OnDragDrop stored IsForm;
  233.     property OnDragOver stored IsForm;
  234.     property OnHide: TNotifyEvent;
  235.     property OnKeyDown stored IsForm;
  236.     property OnKeyPress stored IsForm;
  237.     property OnKeyUp stored IsForm;
  238.     property OnMouseDown stored IsForm;
  239.     property OnMouseMove stored IsForm;
  240.     property OnMouseUp stored IsForm;
  241.     property OnPaint: TNotifyEvent;
  242.     property OnResize: TNotifyEvent;
  243.     property OnShow: TNotifyEvent;
  244.   end;
  245.  
  246.   TFormClass = class of TForm;
  247.  
  248. { TScreen }
  249.  
  250.   PCursorRec = ^TCursorRec;
  251.   TCursorRec = record
  252.     Next: PCursorRec;
  253.     Index: Integer;
  254.     Handle: HCURSOR;
  255.   end;
  256.  
  257.   TScreen = class(TComponent)
  258.   public
  259.     constructor Create(AOwner: TComponent); override;
  260.     destructor Destroy; override;
  261.     property ActiveControl: TWinControl;
  262.     property ActiveForm: TForm;
  263.     property Cursor: TCursor;
  264.     property Cursors[Index: Integer]: HCURSOR;
  265.     property Fonts: TStrings;
  266.     property Height: Integer;
  267.     property PixelsPerInch: Integer;
  268.     property Width: Integer;
  269.     property Forms[Index: Integer]: TForm;
  270.     property FormCount: Integer;
  271.     property OnActiveControlChange: TNotifyEvent;
  272.     property OnActiveFormChange: TNotifyEvent;
  273.   end;
  274.  
  275. { TApplication }
  276.  
  277.   THintInfo = record
  278.     HintControl: TControl;
  279.     HintPos: TPoint;
  280.     HintMaxWidth: Integer;
  281.     HintColor: TColor;
  282.     CursorRect: TRect;
  283.     CursorPos: TPoint;
  284.   end;
  285.  
  286.   TMessageEvent = procedure (var Msg: TMsg; var Handled: Boolean) of object;
  287.   TExceptionEvent = procedure (Sender: TObject; E: Exception) of object;
  288.   TIdleEvent = procedure (Sender: TObject; var Done: Boolean) of object;
  289.   TShowHintEvent = procedure (var HintStr: string; var CanShow: Boolean;
  290.     var HintInfo: THintInfo) of object;
  291.   TWindowHook = function (var Message: TMessage): Boolean of object;
  292.  
  293.   TApplication = class(TComponent)
  294.   protected
  295.     procedure WriteComponents(Writer: TWriter); override;
  296.   public
  297.     constructor Create(AOwner: TComponent); override;
  298.     destructor Destroy; override;
  299.     procedure ControlDestroyed(Control: TControl);
  300.     procedure CancelHint;
  301.     function HelpContext(Context: THelpContext): Boolean;
  302.     function HelpCommand(Command: Word; Data: Longint): Boolean;
  303.     function HelpJump(const JumpID: string): Boolean;
  304.     procedure CreateForm(FormClass: TFormClass; var Reference);
  305.     procedure Run;
  306.     procedure Terminate;
  307.     procedure ProcessMessages;
  308.     procedure HandleMessage;
  309.     procedure HookMainWindow(Hook: TWindowHook);
  310.     function MessageBox(Text, Caption: PChar; Flags: Word): Integer;
  311.     procedure Minimize;
  312.     procedure NormalizeTopMosts;
  313.     procedure Restore;
  314.     procedure RestoreTopMosts;
  315.     procedure BringToFront;
  316.     procedure HandleException(Sender: TObject);
  317.     procedure ShowException(E: Exception);
  318.     procedure UnhookMainWindow(Hook: TWindowHook);
  319.     property Active: Boolean;
  320.     property DialogHandle: HWnd;
  321.     property ExeName: string;
  322.     property Handle: HWnd;
  323.     property HelpFile: string;
  324.     property Hint: string;
  325.     property ShowHint: Boolean;
  326.     property HintColor: TColor;
  327.     property HintPause: Integer;
  328.     property Icon: TIcon;
  329.     property MainForm: TForm;
  330.     property Terminated: Boolean;
  331.     property Title: string;
  332.     property OnActivate: TNotifyEvent;
  333.     property OnDeactivate: TNotifyEvent;
  334.     property OnException: TExceptionEvent;
  335.     property OnIdle: TIdleEvent;
  336.     property OnHelp: THelpEvent;
  337.     property OnHint: TNotifyEvent;
  338.     property OnMessage: TMessageEvent;
  339.     property OnMinimize: TNotifyEvent;
  340.     property OnRestore: TNotifyEvent;
  341.     property OnShowHint: TShowHintEvent;
  342.   end;
  343.  
  344.   TWndMethod = procedure(var Message: TMessage) of object;
  345.  
  346. { Global objects }
  347.  
  348. var
  349.   Application: TApplication;
  350.   Screen: TScreen;
  351.  
  352. const
  353.   HintWindowClass: THintWindowClass = THintWindow;
  354.  
  355. function GetParentForm(Control: TControl): TForm;
  356. function ValidParentForm(Control: TControl): TForm;
  357.  
  358. function DisableTaskWindows(ActiveWindow: HWnd): Pointer;
  359. procedure EnableTaskWindows(WindowList: Pointer);
  360.  
  361. function MakeObjectInstance(Method: TWndMethod): Pointer;
  362. procedure FreeObjectInstance(ObjectInstance: Pointer);
  363.  
  364. function IsAccel(VK: Word; const Str: string): Boolean;
  365.  
  366. procedure Subclass3DWnd(Wnd: HWnd);
  367. procedure Subclass3DDlg(Wnd: HWnd; Flags: Word);
  368. procedure SetAutoSubClass(Enable: Boolean);
  369. function AllocateHWnd(Method: TWndMethod): HWND;
  370. procedure DeallocateHWnd(Wnd: HWND);
  371. procedure DoneCtl3D;
  372.  
  373. function KeysToShiftState(Keys: Word): TShiftState;
  374. function KeyDataToShiftState(KeyData: Longint): TShiftState;
  375.  
  376. implementation
  377.