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

  1. {*******************************************************}
  2. {                                                       }
  3. {       Delphi Visual Component Library                 }
  4. {                                                       }
  5. {       Copyright (c) 1995 Borland International        }
  6. {                                                       }
  7. {*******************************************************}
  8.  
  9. unit Menus;
  10.  
  11. {$S-,W-,R-}
  12. {$C PRELOAD}
  13.  
  14. interface
  15.  
  16. uses WinTypes, SysUtils, Classes, Messages;
  17.  
  18. const
  19.   scShift = $2000;
  20.   scCtrl = $4000;
  21.   scAlt = $8000;
  22.   scNone = 0;
  23.  
  24. type
  25.   EMenuError = class(Exception);
  26.   TMenu = class;
  27.   TMenuBreak = (mbNone, mbBreak, mbBarBreak);
  28.   TShortCut = Low(Word)..High(Word);
  29.   TMenuChangeEvent = procedure (Sender: TObject; Rebuild: Boolean) of object;
  30.   TMenuItem = class(TComponent)
  31.   protected
  32.     procedure DefineProperties(Filer: TFiler); override;
  33.     function GetCaption: string;
  34.     function GetHandle: HMENU;
  35.     function GetHint: string;
  36.     function GetCount: Integer;
  37.     function GetItem(Index: Integer): TMenuItem;
  38.     procedure MenuChanged(Rebuild: Boolean); dynamic;
  39.     function HasParent: Boolean; override;
  40.     procedure ReadState(Reader: TReader); override;
  41.     procedure SetBreak(Value: TMenuBreak);
  42.     procedure SetCaption(const Value: string);
  43.     procedure SetChecked(Value: Boolean);
  44.     procedure SetEnabled(Value: Boolean);
  45.     procedure SetGroupIndex(Value: Byte);
  46.     procedure SetHint(const Value: string);
  47.     procedure SetShortCut(Value: TShortCut);
  48.     procedure SetVisible(Value: Boolean);
  49.     procedure WriteComponents(Writer: TWriter); override;
  50.   public
  51.     constructor Create(AOwner: TComponent); override;
  52.     destructor Destroy; override;
  53.     procedure Insert(Index: Integer; Item: TMenuItem);
  54.     procedure Delete(Index: Integer);
  55.     procedure Click; virtual;
  56.     function IndexOf(Item: TMenuItem): Integer;
  57.     procedure Add(Item: TMenuItem);
  58.     procedure Remove(Item: TMenuItem);
  59.     property Command: Word;
  60.     property Handle: HMENU;
  61.     property Count: Integer;
  62.     property Items[Index: Integer]: TMenuItem; default;
  63.     property Parent: TMenuItem;
  64.   published
  65.     property Break: TMenuBreak default mbNone;
  66.     property Caption: string;
  67.     property Checked: Boolean default False;
  68.     property Enabled: Boolean default True;
  69.     property GroupIndex: Byte default 0;
  70.     property HelpContext: THelpContext default 0;
  71.     property Hint: string;
  72.     property ShortCut: TShortCut;
  73.     property Visible: Boolean default True;
  74.     property OnClick: TNotifyEvent;
  75.   end;
  76.  
  77.   TFindItemKind = (fkCommand, fkHandle, fkShortCut);
  78.  
  79.   TMenu = class(TComponent)
  80.   protected
  81.     function GetHandle: HMENU; virtual;
  82.     procedure WriteComponents(Writer: TWriter); override;
  83.   public
  84.     constructor Create(AOwner: TComponent); override;
  85.     destructor Destroy; override;
  86.     function DispatchCommand(ACommand: Word): Boolean;
  87.     function DispatchPopup(AHandle: HMENU): Boolean;
  88.     function FindItem(Value: Word; Kind: TFindItemKind): TMenuItem;
  89.     function GetHelpContext(Value: Word; ByCommand: Boolean): THelpContext;
  90.     function IsShortCut(var Message: TWMKey): Boolean;
  91.     property Handle: HMENU;
  92.     property WindowHandle: HWND;
  93.   published
  94.     property Items: TMenuItem;
  95.   end;
  96.  
  97.   TMainMenu = class(TMenu)
  98.   protected
  99.     function GetHandle: HMENU; override;
  100.   public
  101.     procedure Merge(Menu: TMainMenu);
  102.     procedure Unmerge(Menu: TMainMenu);
  103.     procedure PopulateOle2Menu(SharedMenu: HMenu; Groups: array of Integer;
  104.       var Widths: array of Longint);
  105.     procedure GetOle2AcceleratorTable(var hAccel : THandle; var numAccels: Word;
  106.       Groups: array of Integer);
  107.     procedure SetOle2MenuHandle(Handle: HMENU);
  108.   published
  109.     property AutoMerge: Boolean default False;
  110.   end;
  111.  
  112.   TPopupAlignment = (paLeft, paRight, paCenter);
  113.  
  114.   TPopupMenu = class(TMenu)
  115.   public
  116.     constructor Create(AOwner: TComponent); override;
  117.     destructor Destroy; override;
  118.     procedure Popup(X, Y: Integer); virtual;
  119.     property PopupComponent: TComponent;
  120.   published
  121.     property Alignment: TPopupAlignment default paLeft;
  122.     property AutoPopup: Boolean default True;
  123.     property HelpContext: THelpContext default 0;
  124.     property OnPopup: TNotifyEvent;
  125.   end;
  126.  
  127. function ShortCut(Key: Word; Shift: TShiftState): TShortCut;
  128. procedure ShortCutToKey(ShortCut: TShortCut; var Key: Word; var Shift: TShiftState);
  129. function ShortCutToText(ShortCut: TShortCut): string;
  130. function TextToShortCut(Text: string): TShortCut;
  131.  
  132. function NewMenu(Owner: TComponent; const AName: string; Items: array of TMenuItem): TMainMenu;
  133. function NewPopupMenu(Owner: TComponent; const AName: string;
  134.   Alignment: TPopupAlignment; AutoPopup: Boolean; Items: array of TMenuitem): TPopupMenu;
  135. function NewSubMenu(const ACaption: string; hCtx: Word; const AName: string;
  136.   Items: array of TMenuItem): TMenuItem;
  137. function NewItem(const ACaption: string; AShortCut: TShortCut;
  138.   AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: Word;
  139.   const AName: string): TMenuItem;
  140. function NewLine: TMenuItem;
  141.  
  142. implementation
  143.