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