home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1996 August / VPR9608A.BIN / del20try / install / data.z / MENUS.INT < prev    next >
Text File  |  1996-05-08  |  6KB  |  151 lines

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