home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / Vcl / menus.hpp < prev    next >
C/C++ Source or Header  |  2000-02-01  |  24KB  |  577 lines

  1. // Borland C++ Builder
  2. // Copyright (c) 1995, 1999 by Borland International
  3. // All rights reserved
  4.  
  5. // (DO NOT EDIT: machine generated header) 'Menus.pas' rev: 5.00
  6.  
  7. #ifndef MenusHPP
  8. #define MenusHPP
  9.  
  10. #pragma delphiheader begin
  11. #pragma option push -w-
  12. #pragma option push -Vx
  13. #include <ActnList.hpp>    // Pascal unit
  14. #include <ImgList.hpp>    // Pascal unit
  15. #include <Graphics.hpp>    // Pascal unit
  16. #include <Messages.hpp>    // Pascal unit
  17. #include <Contnrs.hpp>    // Pascal unit
  18. #include <Classes.hpp>    // Pascal unit
  19. #include <SysUtils.hpp>    // Pascal unit
  20. #include <Windows.hpp>    // Pascal unit
  21. #include <SysInit.hpp>    // Pascal unit
  22. #include <System.hpp>    // Pascal unit
  23.  
  24. //-- user supplied -----------------------------------------------------------
  25.  
  26. namespace Menus
  27. {
  28. //-- type declarations -------------------------------------------------------
  29. class DELPHICLASS EMenuError;
  30. class PASCALIMPLEMENTATION EMenuError : public Sysutils::Exception 
  31. {
  32.     typedef Sysutils::Exception inherited;
  33.     
  34. public:
  35.     #pragma option push -w-inl
  36.     /* Exception.Create */ inline __fastcall EMenuError(const AnsiString Msg) : Sysutils::Exception(Msg
  37.         ) { }
  38.     #pragma option pop
  39.     #pragma option push -w-inl
  40.     /* Exception.CreateFmt */ inline __fastcall EMenuError(const AnsiString Msg, const System::TVarRec 
  41.         * Args, const int Args_Size) : Sysutils::Exception(Msg, Args, Args_Size) { }
  42.     #pragma option pop
  43.     #pragma option push -w-inl
  44.     /* Exception.CreateRes */ inline __fastcall EMenuError(int Ident)/* overload */ : Sysutils::Exception(
  45.         Ident) { }
  46.     #pragma option pop
  47.     #pragma option push -w-inl
  48.     /* Exception.CreateResFmt */ inline __fastcall EMenuError(int Ident, const System::TVarRec * Args, 
  49.         const int Args_Size)/* overload */ : Sysutils::Exception(Ident, Args, Args_Size) { }
  50.     #pragma option pop
  51.     #pragma option push -w-inl
  52.     /* Exception.CreateHelp */ inline __fastcall EMenuError(const AnsiString Msg, int AHelpContext) : Sysutils::Exception(
  53.         Msg, AHelpContext) { }
  54.     #pragma option pop
  55.     #pragma option push -w-inl
  56.     /* Exception.CreateFmtHelp */ inline __fastcall EMenuError(const AnsiString Msg, const System::TVarRec 
  57.         * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Msg, Args, Args_Size, AHelpContext
  58.         ) { }
  59.     #pragma option pop
  60.     #pragma option push -w-inl
  61.     /* Exception.CreateResHelp */ inline __fastcall EMenuError(int Ident, int AHelpContext)/* overload */
  62.          : Sysutils::Exception(Ident, AHelpContext) { }
  63.     #pragma option pop
  64.     #pragma option push -w-inl
  65.     /* Exception.CreateResFmtHelp */ inline __fastcall EMenuError(System::PResStringRec ResStringRec, const 
  66.         System::TVarRec * Args, const int Args_Size, int AHelpContext)/* overload */ : Sysutils::Exception(
  67.         ResStringRec, Args, Args_Size, AHelpContext) { }
  68.     #pragma option pop
  69.     
  70. public:
  71.     #pragma option push -w-inl
  72.     /* TObject.Destroy */ inline __fastcall virtual ~EMenuError(void) { }
  73.     #pragma option pop
  74.     
  75. };
  76.  
  77.  
  78. #pragma option push -b-
  79. enum TMenuBreak { mbNone, mbBreak, mbBarBreak };
  80. #pragma option pop
  81.  
  82. class DELPHICLASS TMenuItem;
  83. typedef void __fastcall (__closure *TMenuChangeEvent)(System::TObject* Sender, TMenuItem* Source, bool 
  84.     Rebuild);
  85.  
  86. typedef void __fastcall (__closure *TMenuDrawItemEvent)(System::TObject* Sender, Graphics::TCanvas* 
  87.     ACanvas, const Windows::TRect &ARect, bool Selected);
  88.  
  89. typedef void __fastcall (__closure *TAdvancedMenuDrawItemEvent)(System::TObject* Sender, Graphics::TCanvas* 
  90.     ACanvas, const Windows::TRect &ARect, Windows::TOwnerDrawState State);
  91.  
  92. typedef void __fastcall (__closure *TMenuMeasureItemEvent)(System::TObject* Sender, Graphics::TCanvas* 
  93.     ACanvas, int &Width, int &Height);
  94.  
  95. #pragma option push -b-
  96. enum TMenuItemAutoFlag { maAutomatic, maManual, maParent };
  97. #pragma option pop
  98.  
  99. typedef TMenuItemAutoFlag TMenuAutoFlag;
  100.  
  101. class DELPHICLASS TMenuActionLink;
  102. class PASCALIMPLEMENTATION TMenuActionLink : public Actnlist::TActionLink 
  103. {
  104.     typedef Actnlist::TActionLink inherited;
  105.     
  106. protected:
  107.     TMenuItem* FClient;
  108.     virtual void __fastcall AssignClient(System::TObject* AClient);
  109.     virtual bool __fastcall IsCaptionLinked(void);
  110.     virtual bool __fastcall IsCheckedLinked(void);
  111.     virtual bool __fastcall IsEnabledLinked(void);
  112.     virtual bool __fastcall IsHelpContextLinked(void);
  113.     virtual bool __fastcall IsHintLinked(void);
  114.     virtual bool __fastcall IsImageIndexLinked(void);
  115.     virtual bool __fastcall IsShortCutLinked(void);
  116.     virtual bool __fastcall IsVisibleLinked(void);
  117.     virtual bool __fastcall IsOnExecuteLinked(void);
  118.     virtual void __fastcall SetCaption(const AnsiString Value);
  119.     virtual void __fastcall SetChecked(bool Value);
  120.     virtual void __fastcall SetEnabled(bool Value);
  121.     virtual void __fastcall SetHelpContext(Classes::THelpContext Value);
  122.     virtual void __fastcall SetHint(const AnsiString Value);
  123.     virtual void __fastcall SetImageIndex(int Value);
  124.     virtual void __fastcall SetShortCut(Classes::TShortCut Value);
  125.     virtual void __fastcall SetVisible(bool Value);
  126.     virtual void __fastcall SetOnExecute(Classes::TNotifyEvent Value);
  127. public:
  128.     #pragma option push -w-inl
  129.     /* TBasicActionLink.Create */ inline __fastcall virtual TMenuActionLink(System::TObject* AClient) : 
  130.         Actnlist::TActionLink(AClient) { }
  131.     #pragma option pop
  132.     #pragma option push -w-inl
  133.     /* TBasicActionLink.Destroy */ inline __fastcall virtual ~TMenuActionLink(void) { }
  134.     #pragma option pop
  135.     
  136. };
  137.  
  138.  
  139. typedef TMetaClass*TMenuActionLinkClass;
  140.  
  141. class DELPHICLASS TMenu;
  142. #pragma option push -b-
  143. enum TFindItemKind { fkCommand, fkHandle, fkShortCut };
  144. #pragma option pop
  145.  
  146. class PASCALIMPLEMENTATION TMenu : public Classes::TComponent 
  147. {
  148.     typedef Classes::TComponent inherited;
  149.     
  150. private:
  151.     Classes::TBiDiMode FBiDiMode;
  152.     TMenuItem* FItems;
  153.     HWND FWindowHandle;
  154.     AnsiString FMenuImage;
  155.     bool FOwnerDraw;
  156.     bool FParentBiDiMode;
  157.     Imglist::TChangeLink* FImageChangeLink;
  158.     Imglist::TCustomImageList* FImages;
  159.     TMenuChangeEvent FOnChange;
  160.     void __fastcall SetBiDiMode(Classes::TBiDiMode Value);
  161.     void __fastcall SetOwnerDraw(bool Value);
  162.     void __fastcall SetImages(Imglist::TCustomImageList* Value);
  163.     void __fastcall SetParentBiDiMode(bool Value);
  164.     void __fastcall SetWindowHandle(HWND Value);
  165.     void __fastcall ImageListChange(System::TObject* Sender);
  166.     bool __fastcall IsBiDiModeStored(void);
  167.     bool __fastcall UpdateImage(void);
  168.     TMenuAutoFlag __fastcall GetAutoHotkeys(void);
  169.     void __fastcall SetAutoHotkeys(const TMenuAutoFlag Value);
  170.     TMenuAutoFlag __fastcall GetAutoLineReduction(void);
  171.     void __fastcall SetAutoLineReduction(const TMenuAutoFlag Value);
  172.     
  173. protected:
  174.     void __fastcall AdjustBiDiBehavior(void);
  175.     virtual void __fastcall DoChange(TMenuItem* Source, bool Rebuild);
  176.     void __fastcall DoBiDiModeChanged(void);
  177.     int __fastcall DoGetMenuString(HMENU Menu, unsigned ItemID, char * Str, int MaxCount, unsigned Flag
  178.         );
  179.     DYNAMIC void __fastcall GetChildren(Classes::TGetChildProc Proc, Classes::TComponent* Root);
  180.     virtual HMENU __fastcall GetHandle(void);
  181.     bool __fastcall IsOwnerDraw(void);
  182.     virtual void __fastcall Loaded(void);
  183.     virtual void __fastcall MenuChanged(System::TObject* Sender, TMenuItem* Source, bool Rebuild);
  184.     virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation
  185.         );
  186.     DYNAMIC void __fastcall SetChildOrder(Classes::TComponent* Child, int Order);
  187.     void __fastcall UpdateItems(void);
  188.     __property TMenuChangeEvent OnChange = {read=FOnChange, write=FOnChange};
  189.     
  190. public:
  191.     __fastcall virtual TMenu(Classes::TComponent* AOwner);
  192.     __fastcall virtual ~TMenu(void);
  193.     bool __fastcall DispatchCommand(Word ACommand);
  194.     bool __fastcall DispatchPopup(HMENU AHandle);
  195.     TMenuItem* __fastcall FindItem(int Value, TFindItemKind Kind);
  196.     Classes::THelpContext __fastcall GetHelpContext(int Value, bool ByCommand);
  197.     __property Imglist::TCustomImageList* Images = {read=FImages, write=SetImages};
  198.     bool __fastcall IsRightToLeft(void);
  199.     DYNAMIC bool __fastcall IsShortCut(Messages::TWMKey &Message);
  200.     void __fastcall ParentBiDiModeChanged(void)/* overload */;
  201.     void __fastcall ParentBiDiModeChanged(System::TObject* AControl)/* overload */;
  202.     void __fastcall ProcessMenuChar(Messages::TWMMenuChar &Message);
  203.     __property TMenuAutoFlag AutoHotkeys = {read=GetAutoHotkeys, write=SetAutoHotkeys, default=0};
  204.     __property TMenuAutoFlag AutoLineReduction = {read=GetAutoLineReduction, write=SetAutoLineReduction
  205.         , default=0};
  206.     __property Classes::TBiDiMode BiDiMode = {read=FBiDiMode, write=SetBiDiMode, stored=IsBiDiModeStored
  207.         , nodefault};
  208.     __property HMENU Handle = {read=GetHandle, nodefault};
  209.     __property bool OwnerDraw = {read=FOwnerDraw, write=SetOwnerDraw, default=0};
  210.     __property bool ParentBiDiMode = {read=FParentBiDiMode, write=SetParentBiDiMode, default=1};
  211.     __property HWND WindowHandle = {read=FWindowHandle, write=SetWindowHandle, nodefault};
  212.     
  213. __published:
  214.     __property TMenuItem* Items = {read=FItems};
  215. };
  216.  
  217.  
  218. class PASCALIMPLEMENTATION TMenuItem : public Classes::TComponent 
  219. {
  220.     typedef Classes::TComponent inherited;
  221.     
  222. private:
  223.     AnsiString FCaption;
  224.     HMENU FHandle;
  225.     bool FChecked;
  226.     bool FEnabled;
  227.     bool FDefault;
  228.     TMenuItemAutoFlag FAutoHotkeys;
  229.     TMenuItemAutoFlag FAutoLineReduction;
  230.     bool FRadioItem;
  231.     bool FVisible;
  232.     Byte FGroupIndex;
  233.     Imglist::TImageIndex FImageIndex;
  234.     TMenuActionLink* FActionLink;
  235.     TMenuBreak FBreak;
  236.     Graphics::TBitmap* FBitmap;
  237.     Word FCommand;
  238.     Classes::THelpContext FHelpContext;
  239.     AnsiString FHint;
  240.     Classes::TList* FItems;
  241.     Classes::TShortCut FShortCut;
  242.     TMenuItem* FParent;
  243.     TMenuItem* FMerged;
  244.     TMenuItem* FMergedWith;
  245.     TMenu* FMenu;
  246.     bool FStreamedRebuild;
  247.     Imglist::TChangeLink* FImageChangeLink;
  248.     Imglist::TCustomImageList* FSubMenuImages;
  249.     TMenuChangeEvent FOnChange;
  250.     Classes::TNotifyEvent FOnClick;
  251.     TMenuDrawItemEvent FOnDrawItem;
  252.     TAdvancedMenuDrawItemEvent FOnAdvancedDrawItem;
  253.     TMenuMeasureItemEvent FOnMeasureItem;
  254.     void __fastcall AppendTo(HMENU Menu, bool ARightToLeft);
  255.     void __fastcall DoActionChange(System::TObject* Sender);
  256.     void __fastcall ReadShortCutText(Classes::TReader* Reader);
  257.     void __fastcall MergeWith(TMenuItem* Menu);
  258.     void __fastcall RebuildHandle(void);
  259.     void __fastcall PopulateMenu(void);
  260.     void __fastcall SubItemChanged(System::TObject* Sender, TMenuItem* Source, bool Rebuild);
  261.     void __fastcall TurnSiblingsOff(void);
  262.     void __fastcall VerifyGroupIndex(int Position, Byte Value);
  263.     Classes::TBasicAction* __fastcall GetAction(void);
  264.     Graphics::TBitmap* __fastcall GetBitmap(void);
  265.     void __fastcall SetAction(Classes::TBasicAction* Value);
  266.     void __fastcall SetBitmap(Graphics::TBitmap* Value);
  267.     void __fastcall SetSubMenuImages(Imglist::TCustomImageList* Value);
  268.     void __fastcall ImageListChange(System::TObject* Sender);
  269.     void __fastcall InitiateActions(void);
  270.     bool __fastcall IsCaptionStored(void);
  271.     bool __fastcall IsCheckedStored(void);
  272.     bool __fastcall IsEnabledStored(void);
  273.     bool __fastcall IsHelpContextStored(void);
  274.     bool __fastcall IsHintStored(void);
  275.     bool __fastcall IsImageIndexStored(void);
  276.     bool __fastcall IsOnClickStored(void);
  277.     bool __fastcall IsShortCutStored(void);
  278.     bool __fastcall IsVisibleStored(void);
  279.     bool __fastcall InternalRethinkHotkeys(bool ForceRethink);
  280.     void __fastcall SetAutoHotkeys(const TMenuItemAutoFlag Value);
  281.     bool __fastcall InternalRethinkLines(bool ForceRethink);
  282.     void __fastcall SetAutoLineReduction(const TMenuItemAutoFlag Value);
  283.     
  284. protected:
  285.     DYNAMIC void __fastcall ActionChange(System::TObject* Sender, bool CheckDefaults);
  286.     virtual void __fastcall AdvancedDrawItem(Graphics::TCanvas* ACanvas, const Windows::TRect &ARect, Windows::TOwnerDrawState 
  287.         State, bool TopLevel);
  288.     virtual void __fastcall AssignTo(Classes::TPersistent* Dest);
  289.     virtual void __fastcall DefineProperties(Classes::TFiler* Filer);
  290.     void __fastcall DoDrawText(Graphics::TCanvas* ACanvas, const AnsiString ACaption, Windows::TRect &Rect
  291.         , bool Selected, int Flags);
  292.     virtual void __fastcall DrawItem(Graphics::TCanvas* ACanvas, const Windows::TRect &ARect, bool Selected
  293.         );
  294.     DYNAMIC TMetaClass* __fastcall GetActionLinkClass(void);
  295.     HMENU __fastcall GetHandle(void);
  296.     int __fastcall GetCount(void);
  297.     DYNAMIC void __fastcall GetChildren(Classes::TGetChildProc Proc, Classes::TComponent* Root);
  298.     TMenuItem* __fastcall GetItem(int Index);
  299.     int __fastcall GetMenuIndex(void);
  300.     bool __fastcall GetAutoHotkeys(void);
  301.     bool __fastcall GetAutoLineReduction(void);
  302.     int __fastcall InsertNewLine(bool ABefore, TMenuItem* AItem);
  303.     void __fastcall MeasureItem(Graphics::TCanvas* ACanvas, int &Width, int &Height);
  304.     virtual void __fastcall MenuChanged(bool Rebuild);
  305.     virtual void __fastcall Loaded(void);
  306.     virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation
  307.         );
  308.     void __fastcall SetBreak(TMenuBreak Value);
  309.     void __fastcall SetCaption(const AnsiString Value);
  310.     void __fastcall SetChecked(bool Value);
  311.     DYNAMIC void __fastcall SetChildOrder(Classes::TComponent* Child, int Order);
  312.     void __fastcall SetDefault(bool Value);
  313.     void __fastcall SetEnabled(bool Value);
  314.     void __fastcall SetGroupIndex(Byte Value);
  315.     void __fastcall SetImageIndex(Imglist::TImageIndex Value);
  316.     void __fastcall SetMenuIndex(int Value);
  317.     DYNAMIC void __fastcall SetParentComponent(Classes::TComponent* Value);
  318.     void __fastcall SetRadioItem(bool Value);
  319.     void __fastcall SetShortCut(Classes::TShortCut Value);
  320.     void __fastcall SetVisible(bool Value);
  321.     void __fastcall UpdateItems(void);
  322.     __property TMenuActionLink* ActionLink = {read=FActionLink, write=FActionLink};
  323.     
  324. public:
  325.     __fastcall virtual TMenuItem(Classes::TComponent* AOwner);
  326.     __fastcall virtual ~TMenuItem(void);
  327.     virtual void __fastcall InitiateAction(void);
  328.     HIDESBASE void __fastcall Insert(int Index, TMenuItem* Item);
  329.     void __fastcall Delete(int Index);
  330.     void __fastcall Clear(void);
  331.     virtual void __fastcall Click(void);
  332.     TMenuItem* __fastcall Find(AnsiString ACaption);
  333.     int __fastcall IndexOf(TMenuItem* Item);
  334.     bool __fastcall IsLine(void);
  335.     Imglist::TCustomImageList* __fastcall GetImageList(void);
  336.     DYNAMIC Classes::TComponent* __fastcall GetParentComponent(void);
  337.     TMenu* __fastcall GetParentMenu(void);
  338.     DYNAMIC bool __fastcall HasParent(void);
  339.     int __fastcall NewTopLine(void);
  340.     int __fastcall NewBottomLine(void);
  341.     int __fastcall InsertNewLineBefore(TMenuItem* AItem);
  342.     int __fastcall InsertNewLineAfter(TMenuItem* AItem);
  343.     void __fastcall Add(TMenuItem* Item)/* overload */;
  344.     void __fastcall Add(TMenuItem* const * AItems, const int AItems_Size)/* overload */;
  345.     HIDESBASE void __fastcall Remove(TMenuItem* Item);
  346.     bool __fastcall RethinkHotkeys(void);
  347.     bool __fastcall RethinkLines(void);
  348.     __property Word Command = {read=FCommand, nodefault};
  349.     __property HMENU Handle = {read=GetHandle, nodefault};
  350.     __property int Count = {read=GetCount, nodefault};
  351.     __property TMenuItem* Items[int Index] = {read=GetItem/*, default*/};
  352.     __property int MenuIndex = {read=GetMenuIndex, write=SetMenuIndex, nodefault};
  353.     __property TMenuItem* Parent = {read=FParent};
  354.     
  355. __published:
  356.     __property Classes::TBasicAction* Action = {read=GetAction, write=SetAction};
  357.     __property TMenuItemAutoFlag AutoHotkeys = {read=FAutoHotkeys, write=SetAutoHotkeys, default=2};
  358.     __property TMenuItemAutoFlag AutoLineReduction = {read=FAutoLineReduction, write=SetAutoLineReduction
  359.         , default=2};
  360.     __property Graphics::TBitmap* Bitmap = {read=GetBitmap, write=SetBitmap};
  361.     __property TMenuBreak Break = {read=FBreak, write=SetBreak, default=0};
  362.     __property AnsiString Caption = {read=FCaption, write=SetCaption, stored=IsCaptionStored};
  363.     __property bool Checked = {read=FChecked, write=SetChecked, stored=IsCheckedStored, default=0};
  364.     __property Imglist::TCustomImageList* SubMenuImages = {read=FSubMenuImages, write=SetSubMenuImages}
  365.         ;
  366.     __property bool Default = {read=FDefault, write=SetDefault, default=0};
  367.     __property bool Enabled = {read=FEnabled, write=SetEnabled, stored=IsEnabledStored, default=1};
  368.     __property Byte GroupIndex = {read=FGroupIndex, write=SetGroupIndex, default=0};
  369.     __property Classes::THelpContext HelpContext = {read=FHelpContext, write=FHelpContext, stored=IsHelpContextStored
  370.         , default=0};
  371.     __property AnsiString Hint = {read=FHint, write=FHint, stored=IsHintStored};
  372.     __property Imglist::TImageIndex ImageIndex = {read=FImageIndex, write=SetImageIndex, stored=IsImageIndexStored
  373.         , default=-1};
  374.     __property bool RadioItem = {read=FRadioItem, write=SetRadioItem, default=0};
  375.     __property Classes::TShortCut ShortCut = {read=FShortCut, write=SetShortCut, stored=IsShortCutStored
  376.         , default=0};
  377.     __property bool Visible = {read=FVisible, write=SetVisible, stored=IsVisibleStored, default=1};
  378.     __property Classes::TNotifyEvent OnClick = {read=FOnClick, write=FOnClick, stored=IsOnClickStored};
  379.         
  380.     __property TMenuDrawItemEvent OnDrawItem = {read=FOnDrawItem, write=FOnDrawItem};
  381.     __property TAdvancedMenuDrawItemEvent OnAdvancedDrawItem = {read=FOnAdvancedDrawItem, write=FOnAdvancedDrawItem
  382.         };
  383.     __property TMenuMeasureItemEvent OnMeasureItem = {read=FOnMeasureItem, write=FOnMeasureItem};
  384. };
  385.  
  386.  
  387. class DELPHICLASS TMainMenu;
  388. class PASCALIMPLEMENTATION TMainMenu : public TMenu 
  389. {
  390.     typedef TMenu inherited;
  391.     
  392. private:
  393.     HMENU FOle2Menu;
  394.     bool FAutoMerge;
  395.     void __fastcall ItemChanged(void);
  396.     void __fastcall SetAutoMerge(bool Value);
  397.     
  398. protected:
  399.     virtual void __fastcall MenuChanged(System::TObject* Sender, TMenuItem* Source, bool Rebuild);
  400.     virtual HMENU __fastcall GetHandle(void);
  401.     
  402. public:
  403.     void __fastcall Merge(TMainMenu* Menu);
  404.     void __fastcall Unmerge(TMainMenu* Menu);
  405.     void __fastcall PopulateOle2Menu(HMENU SharedMenu, const int * Groups, const int Groups_Size, int * 
  406.         Widths, const int Widths_Size);
  407.     void __fastcall GetOle2AcceleratorTable(HACCEL &AccelTable, int &AccelCount, const int * Groups, const 
  408.         int Groups_Size);
  409.     void __fastcall SetOle2MenuHandle(HMENU Handle);
  410.     
  411. __published:
  412.     __property AutoHotkeys ;
  413.     __property AutoLineReduction ;
  414.     __property bool AutoMerge = {read=FAutoMerge, write=SetAutoMerge, default=0};
  415.     __property BiDiMode ;
  416.     __property Images ;
  417.     __property OwnerDraw ;
  418.     __property ParentBiDiMode ;
  419.     __property OnChange ;
  420. public:
  421.     #pragma option push -w-inl
  422.     /* TMenu.Create */ inline __fastcall virtual TMainMenu(Classes::TComponent* AOwner) : TMenu(AOwner)
  423.          { }
  424.     #pragma option pop
  425.     #pragma option push -w-inl
  426.     /* TMenu.Destroy */ inline __fastcall virtual ~TMainMenu(void) { }
  427.     #pragma option pop
  428.     
  429. };
  430.  
  431.  
  432. #pragma option push -b-
  433. enum TPopupAlignment { paLeft, paRight, paCenter };
  434. #pragma option pop
  435.  
  436. #pragma option push -b-
  437. enum TTrackButton { tbRightButton, tbLeftButton };
  438. #pragma option pop
  439.  
  440. #pragma option push -b-
  441. enum TMenuAnimations { maLeftToRight, maRightToLeft, maTopToBottom, maBottomToTop, maNone };
  442. #pragma option pop
  443.  
  444. typedef Set<TMenuAnimations, maLeftToRight, maNone>  TMenuAnimation;
  445.  
  446. class DELPHICLASS TPopupMenu;
  447. class PASCALIMPLEMENTATION TPopupMenu : public TMenu 
  448. {
  449.     typedef TMenu inherited;
  450.     
  451. private:
  452.     Windows::TPoint FPopupPoint;
  453.     TPopupAlignment FAlignment;
  454.     bool FAutoPopup;
  455.     Classes::TComponent* FPopupComponent;
  456.     TTrackButton FTrackButton;
  457.     TMenuAnimation FMenuAnimation;
  458.     Classes::TNotifyEvent FOnPopup;
  459.     HIDESBASE Classes::THelpContext __fastcall GetHelpContext(void);
  460.     void __fastcall SetHelpContext(Classes::THelpContext Value);
  461.     void __fastcall SetBiDiModeFromPopupControl(void);
  462.     
  463. protected:
  464.     bool __fastcall UseRightToLeftAlignment(void);
  465.     virtual void __fastcall DoPopup(System::TObject* Sender);
  466.     __property Windows::TPoint PopupPoint = {read=FPopupPoint};
  467.     
  468. public:
  469.     __fastcall virtual TPopupMenu(Classes::TComponent* AOwner);
  470.     __fastcall virtual ~TPopupMenu(void);
  471.     virtual void __fastcall Popup(int X, int Y);
  472.     __property Classes::TComponent* PopupComponent = {read=FPopupComponent, write=FPopupComponent};
  473.     
  474. __published:
  475.     __property TPopupAlignment Alignment = {read=FAlignment, write=FAlignment, default=0};
  476.     __property AutoHotkeys ;
  477.     __property AutoLineReduction ;
  478.     __property bool AutoPopup = {read=FAutoPopup, write=FAutoPopup, default=1};
  479.     __property BiDiMode ;
  480.     __property Classes::THelpContext HelpContext = {read=GetHelpContext, write=SetHelpContext, default=0
  481.         };
  482.     __property Images ;
  483.     __property TMenuAnimation MenuAnimation = {read=FMenuAnimation, write=FMenuAnimation, default=0};
  484.     __property OwnerDraw ;
  485.     __property ParentBiDiMode ;
  486.     __property TTrackButton TrackButton = {read=FTrackButton, write=FTrackButton, default=0};
  487.     __property OnChange ;
  488.     __property Classes::TNotifyEvent OnPopup = {read=FOnPopup, write=FOnPopup};
  489. };
  490.  
  491.  
  492. class DELPHICLASS TPopupList;
  493. class PASCALIMPLEMENTATION TPopupList : public Classes::TList 
  494. {
  495.     typedef Classes::TList inherited;
  496.     
  497. protected:
  498.     HWND FWindow;
  499.     void __fastcall MainWndProc(Messages::TMessage &Message);
  500.     virtual void __fastcall WndProc(Messages::TMessage &Message);
  501.     
  502. public:
  503.     __property HWND Window = {read=FWindow, nodefault};
  504.     HIDESBASE void __fastcall Add(TPopupMenu* Popup);
  505.     HIDESBASE void __fastcall Remove(TPopupMenu* Popup);
  506. public:
  507.     #pragma option push -w-inl
  508.     /* TList.Destroy */ inline __fastcall virtual ~TPopupList(void) { }
  509.     #pragma option pop
  510.     
  511. public:
  512.     #pragma option push -w-inl
  513.     /* TObject.Create */ inline __fastcall TPopupList(void) : Classes::TList() { }
  514.     #pragma option pop
  515.     
  516. };
  517.  
  518.  
  519. typedef TMenuItem* *PMenuItem;
  520.  
  521. class DELPHICLASS TMenuItemStack;
  522. class PASCALIMPLEMENTATION TMenuItemStack : public Contnrs::TStack 
  523. {
  524.     typedef Contnrs::TStack inherited;
  525.     
  526. public:
  527.     void __fastcall ClearItem(TMenuItem* AItem);
  528. public:
  529.     #pragma option push -w-inl
  530.     /* TOrderedList.Create */ inline __fastcall TMenuItemStack(void) : Contnrs::TStack() { }
  531.     #pragma option pop
  532.     #pragma option push -w-inl
  533.     /* TOrderedList.Destroy */ inline __fastcall virtual ~TMenuItemStack(void) { }
  534.     #pragma option pop
  535.     
  536. };
  537.  
  538.  
  539. //-- var, const, procedure ---------------------------------------------------
  540. extern PACKAGE TPopupList* PopupList;
  541. extern PACKAGE TMenuItemStack* ShortCutItems;
  542. extern PACKAGE AnsiString ValidMenuHotkeys;
  543. static const char cHotkeyPrefix = '\x26';
  544. static const char cLineCaption = '\x2d';
  545. #define cDialogSuffix "..."
  546. extern PACKAGE Classes::TShortCut __fastcall ShortCut(Word Key, Classes::TShiftState Shift);
  547. extern PACKAGE void __fastcall ShortCutToKey(Classes::TShortCut ShortCut, Word &Key, Classes::TShiftState 
  548.     &Shift);
  549. extern PACKAGE AnsiString __fastcall ShortCutToText(Classes::TShortCut ShortCut);
  550. extern PACKAGE Classes::TShortCut __fastcall TextToShortCut(AnsiString Text);
  551. extern PACKAGE TMainMenu* __fastcall NewMenu(Classes::TComponent* Owner, const AnsiString AName, TMenuItem* 
  552.     const * Items, const int Items_Size);
  553. extern PACKAGE TPopupMenu* __fastcall NewPopupMenu(Classes::TComponent* Owner, const AnsiString AName
  554.     , TPopupAlignment Alignment, bool AutoPopup, TMenuItem* const * Items, const int Items_Size);
  555. extern PACKAGE TMenuItem* __fastcall NewSubMenu(const AnsiString ACaption, Word hCtx, const AnsiString 
  556.     AName, TMenuItem* const * Items, const int Items_Size, bool AEnabled);
  557. extern PACKAGE TMenuItem* __fastcall NewItem(const AnsiString ACaption, Classes::TShortCut AShortCut
  558.     , bool AChecked, bool AEnabled, Classes::TNotifyEvent AOnClick, Word hCtx, const AnsiString AName);
  559.     
  560. extern PACKAGE TMenuItem* __fastcall NewLine(void);
  561. extern PACKAGE void __fastcall DrawMenuItem(TMenuItem* MenuItem, Graphics::TCanvas* ACanvas, const Windows::TRect 
  562.     &ARect, Windows::TOwnerDrawState State);
  563. extern PACKAGE AnsiString __fastcall StripHotkey(const AnsiString Text);
  564. extern PACKAGE AnsiString __fastcall GetHotkey(const AnsiString Text);
  565. extern PACKAGE bool __fastcall AnsiSameCaption(const AnsiString Text1, const AnsiString Text2);
  566.  
  567. }    /* namespace Menus */
  568. #if !defined(NO_IMPLICIT_NAMESPACE_USE)
  569. using namespace Menus;
  570. #endif
  571. #pragma option pop    // -w-
  572. #pragma option pop    // -Vx
  573.  
  574. #pragma delphiheader end.
  575. //-- end unit ----------------------------------------------------------------
  576. #endif    // Menus
  577.