diff --git a/components/rx/trunk/demos/RxMDI/project1.lpi b/components/rx/trunk/demos/RxMDI/project1.lpi index 6aa7ea19e..4a9041770 100644 --- a/components/rx/trunk/demos/RxMDI/project1.lpi +++ b/components/rx/trunk/demos/RxMDI/project1.lpi @@ -19,8 +19,6 @@ - - @@ -85,6 +83,9 @@ + + + diff --git a/components/rx/trunk/demos/RxMDI/project1.res b/components/rx/trunk/demos/RxMDI/project1.res index f6e849956..4133fe048 100644 Binary files a/components/rx/trunk/demos/RxMDI/project1.res and b/components/rx/trunk/demos/RxMDI/project1.res differ diff --git a/components/rx/trunk/demos/RxMDI/unit1.lfm b/components/rx/trunk/demos/RxMDI/unit1.lfm index 56758a5eb..b43f5c265 100644 --- a/components/rx/trunk/demos/RxMDI/unit1.lfm +++ b/components/rx/trunk/demos/RxMDI/unit1.lfm @@ -4,12 +4,12 @@ object Form1: TForm1 Top = 222 Width = 613 Caption = 'MainForm' - ClientHeight = 407 + ClientHeight = 410 ClientWidth = 613 Menu = MainMenu1 OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '1.9.0.0' + LCLVersion = '2.1.0.0' WindowState = wsMaximized object ToolPanel1: TToolPanel Left = 0 @@ -59,7 +59,7 @@ object Form1: TForm1 object RxMDITasks1: TRxMDITasks Left = 0 Height = 25 - Top = 360 + Top = 364 Width = 613 Align = alBottom FlatButton = True @@ -67,8 +67,8 @@ object Form1: TForm1 end object StatusBar1: TStatusBar Left = 0 - Height = 22 - Top = 385 + Height = 21 + Top = 389 Width = 613 Panels = < item @@ -81,15 +81,17 @@ object Form1: TForm1 end object RxMDIPanel1: TRxMDIPanel Left = 0 - Height = 329 + Height = 333 Top = 31 Width = 613 CloseButton = RxMDICloseButton1 TaskPanel = RxMDITasks1 Align = alClient BevelOuter = bvLowered + Options = [] HideCloseButton = False OnChangeCurrentChild = RxMDIPanel1ChangeCurrentChild + WindowMenu = WindowItems end object ActionList1: TActionList Left = 440 @@ -132,6 +134,11 @@ object Form1: TForm1 Checked = True OnExecute = optHideCloseButtonExecute end + object wndCloseAll: TAction + Category = 'Windows' + Caption = 'Close all...' + OnExecute = wndCloseAllExecute + end end object MainMenu1: TMainMenu Left = 408 @@ -169,6 +176,12 @@ object Form1: TForm1 Action = Action3 end end + object WindowItems: TMenuItem + Caption = 'Window' + object MenuItem13: TMenuItem + Action = wndCloseAll + end + end end object Timer1: TTimer Interval = 500 diff --git a/components/rx/trunk/demos/RxMDI/unit1.pas b/components/rx/trunk/demos/RxMDI/unit1.pas index 4d4b4085e..cc67861b2 100644 --- a/components/rx/trunk/demos/RxMDI/unit1.pas +++ b/components/rx/trunk/demos/RxMDI/unit1.pas @@ -16,6 +16,9 @@ type Action1: TAction; Action2: TAction; Action3: TAction; + WindowItems: TMenuItem; + MenuItem13: TMenuItem; + wndCloseAll: TAction; MenuItem11: TMenuItem; optHideCloseButton: TAction; MenuItem10: TMenuItem; @@ -49,6 +52,7 @@ type procedure RxMDIPanel1ChangeCurrentChild(Sender: TRxMDIPanel; AForm: TForm); procedure sysCloseExecute(Sender: TObject); procedure Timer1Timer(Sender: TObject); + procedure wndCloseAllExecute(Sender: TObject); private procedure UpdateOptions; public @@ -80,6 +84,11 @@ begin ; end; +procedure TForm1.wndCloseAllExecute(Sender: TObject); +begin + RxMDIPanel1.CloseAll; +end; + procedure TForm1.UpdateOptions; begin RxMDICloseButton1.ShowInfoLabel:=optShowInfoLabel.Checked; diff --git a/components/rx/trunk/rxcontrols/rxmdi.pas b/components/rx/trunk/rxcontrols/rxmdi.pas index b6e465e82..e30c3bc8d 100644 --- a/components/rx/trunk/rxcontrols/rxmdi.pas +++ b/components/rx/trunk/rxcontrols/rxmdi.pas @@ -153,6 +153,10 @@ type FOnChangeCurrentChild: TRxMDIPanelChangeCurrentChild; FOptions: TRxMDIPanelOptions; FTaskPanel: TRxMDITasks; + FWindowMenu: TMenuItem; + FWindowMenuSeparator1: TMenuItem; + FWindowMenuSeparator2: TMenuItem; + FWindowMenuDialogBox: TMenuItem; procedure SetCurrentChildWindow(AValue: TForm); procedure navCloseButtonClick(Sender: TObject); procedure SetHideCloseButton(AValue: boolean); @@ -163,6 +167,11 @@ type procedure ScreenEventRemoveForm(Sender: TObject; Form: TCustomForm); procedure DoOnChangeCurrentChild(AForm:TForm); procedure DoKeyDownHandler(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure RefreshMDIMenu; + procedure ClearMDIMenu; + procedure ClearMDIMenuSystemItems; + procedure DoMDIMenuClick(Sender: TObject); + procedure SetWindowMenu(AValue: TMenuItem); protected procedure Notification(AComponent: TComponent; Operation: TOperation); override; procedure Loaded; override; @@ -189,6 +198,7 @@ type property Options:TRxMDIPanelOptions read FOptions write FOptions; property HideCloseButton:boolean read FHideCloseButton write SetHideCloseButton; property OnChangeCurrentChild:TRxMDIPanelChangeCurrentChild read FOnChangeCurrentChild write FOnChangeCurrentChild; + property WindowMenu: TMenuItem read FWindowMenu write SetWindowMenu; end; implementation @@ -409,7 +419,10 @@ begin FCloseButton := nil else if (AComponent = FTaskPanel) and (Operation = opRemove) then - FTaskPanel:=nil; + FTaskPanel:=nil + else + if (AComponent = FWindowMenuSeparator1) and (Operation = opRemove) then + FWindowMenuSeparator1:=nil; end; procedure TRxMDIPanel.Loaded; @@ -436,6 +449,116 @@ begin end; end; +procedure TRxMDIPanel.RefreshMDIMenu; + +function GetNextMenuItem(var K:Integer):TMenuItem; +begin + Result:=nil; + while K