home *** CD-ROM | disk | FTP | other *** search
- {*******************************************************}
- { }
- { Delphi Visual Component Library }
- { }
- { Copyright (c) 1995 Borland International }
- { }
- {*******************************************************}
-
- unit Menus;
-
- {$S-,W-,R-}
- {$C PRELOAD}
-
- interface
-
- uses WinTypes, SysUtils, Classes, Messages;
-
- const
- scShift = $2000;
- scCtrl = $4000;
- scAlt = $8000;
- scNone = 0;
-
- type
- EMenuError = class(Exception);
- TMenu = class;
- TMenuBreak = (mbNone, mbBreak, mbBarBreak);
- TShortCut = Low(Word)..High(Word);
- TMenuChangeEvent = procedure (Sender: TObject; Rebuild: Boolean) of object;
- TMenuItem = class(TComponent)
- protected
- procedure DefineProperties(Filer: TFiler); override;
- function GetCaption: string;
- function GetHandle: HMENU;
- function GetHint: string;
- function GetCount: Integer;
- function GetItem(Index: Integer): TMenuItem;
- procedure MenuChanged(Rebuild: Boolean); dynamic;
- function HasParent: Boolean; override;
- procedure ReadState(Reader: TReader); override;
- procedure SetBreak(Value: TMenuBreak);
- procedure SetCaption(const Value: string);
- procedure SetChecked(Value: Boolean);
- procedure SetEnabled(Value: Boolean);
- procedure SetGroupIndex(Value: Byte);
- procedure SetHint(const Value: string);
- procedure SetShortCut(Value: TShortCut);
- procedure SetVisible(Value: Boolean);
- procedure WriteComponents(Writer: TWriter); override;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure Insert(Index: Integer; Item: TMenuItem);
- procedure Delete(Index: Integer);
- procedure Click; virtual;
- function IndexOf(Item: TMenuItem): Integer;
- procedure Add(Item: TMenuItem);
- procedure Remove(Item: TMenuItem);
- property Command: Word;
- property Handle: HMENU;
- property Count: Integer;
- property Items[Index: Integer]: TMenuItem; default;
- property Parent: TMenuItem;
- published
- property Break: TMenuBreak default mbNone;
- property Caption: string;
- property Checked: Boolean default False;
- property Enabled: Boolean default True;
- property GroupIndex: Byte default 0;
- property HelpContext: THelpContext default 0;
- property Hint: string;
- property ShortCut: TShortCut;
- property Visible: Boolean default True;
- property OnClick: TNotifyEvent;
- end;
-
- TFindItemKind = (fkCommand, fkHandle, fkShortCut);
-
- TMenu = class(TComponent)
- protected
- function GetHandle: HMENU; virtual;
- procedure WriteComponents(Writer: TWriter); override;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- function DispatchCommand(ACommand: Word): Boolean;
- function DispatchPopup(AHandle: HMENU): Boolean;
- function FindItem(Value: Word; Kind: TFindItemKind): TMenuItem;
- function GetHelpContext(Value: Word; ByCommand: Boolean): THelpContext;
- function IsShortCut(var Message: TWMKey): Boolean;
- property Handle: HMENU;
- property WindowHandle: HWND;
- published
- property Items: TMenuItem;
- end;
-
- TMainMenu = class(TMenu)
- protected
- function GetHandle: HMENU; override;
- public
- procedure Merge(Menu: TMainMenu);
- procedure Unmerge(Menu: TMainMenu);
- procedure PopulateOle2Menu(SharedMenu: HMenu; Groups: array of Integer;
- var Widths: array of Longint);
- procedure GetOle2AcceleratorTable(var hAccel : THandle; var numAccels: Word;
- Groups: array of Integer);
- procedure SetOle2MenuHandle(Handle: HMENU);
- published
- property AutoMerge: Boolean default False;
- end;
-
- TPopupAlignment = (paLeft, paRight, paCenter);
-
- TPopupMenu = class(TMenu)
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure Popup(X, Y: Integer); virtual;
- property PopupComponent: TComponent;
- published
- property Alignment: TPopupAlignment default paLeft;
- property AutoPopup: Boolean default True;
- property HelpContext: THelpContext default 0;
- property OnPopup: TNotifyEvent;
- end;
-
- function ShortCut(Key: Word; Shift: TShiftState): TShortCut;
- procedure ShortCutToKey(ShortCut: TShortCut; var Key: Word; var Shift: TShiftState);
- function ShortCutToText(ShortCut: TShortCut): string;
- function TextToShortCut(Text: string): TShortCut;
-
- function NewMenu(Owner: TComponent; const AName: string; Items: array of TMenuItem): TMainMenu;
- function NewPopupMenu(Owner: TComponent; const AName: string;
- Alignment: TPopupAlignment; AutoPopup: Boolean; Items: array of TMenuitem): TPopupMenu;
- function NewSubMenu(const ACaption: string; hCtx: Word; const AName: string;
- Items: array of TMenuItem): TMenuItem;
- function NewItem(const ACaption: string; AShortCut: TShortCut;
- AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: Word;
- const AName: string): TMenuItem;
- function NewLine: TMenuItem;
-
- implementation
-