home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / FORMS.INT < prev    next >
Text File  |  1997-02-28  |  15KB  |  434 lines

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