From 8d94f194a8f8280597f78d9589aafbed50eda825 Mon Sep 17 00:00:00 2001 From: alexs75 Date: Tue, 10 Sep 2013 13:53:45 +0000 Subject: [PATCH] RxMDI - fix CloseAll git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2790 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/rx/registerrx.pas | 43 +++++++++++++++++++----------------- components/rx/rxmdi.pas | 14 ++++++++++++ 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/components/rx/registerrx.pas b/components/rx/registerrx.pas index ad65aa9b3..4186eb632 100644 --- a/components/rx/registerrx.pas +++ b/components/rx/registerrx.pas @@ -38,6 +38,9 @@ interface uses Classes, SysUtils, LResources, LazarusPackageIntf; +const + RxCtrllPageName = 'RX Controls'; + procedure Register; implementation @@ -114,106 +117,106 @@ end; {$IFDEF USE_TRxAppIcon} procedure RegisterRxAppIcon; begin - RegisterComponents('RX',[TRxAppIcon]); + RegisterComponents(RxCtrllPageName,[TRxAppIcon]); end; {$ENDIF} {$IFDEF USE_TRXXPManifest} procedure RegisterRxXPMan; begin - RegisterComponents('RX',[TRXXPManifest]); + RegisterComponents(RxCtrllPageName,[TRXXPManifest]); end; {$ENDIF} procedure RegisterPageMngr; begin - RegisterComponents('RX',[TPageManager]); + RegisterComponents(RxCtrllPageName,[TPageManager]); end; procedure RegisterDualList; begin - RegisterComponents('RX',[TDualListDialog]); + RegisterComponents(RxCtrllPageName,[TDualListDialog]); end; procedure RegisterCurrEdit; begin - RegisterComponents('RX',[TCurrencyEdit]); + RegisterComponents(RxCtrllPageName,[TCurrencyEdit]); end; procedure RegisterRXSwitch; begin - RegisterComponents('RX',[TRxSwitch]); + RegisterComponents(RxCtrllPageName,[TRxSwitch]); end; procedure RegisterRXDice; begin - RegisterComponents('RX',[TRxDice]); + RegisterComponents(RxCtrllPageName,[TRxDice]); end; procedure RegisterFolderLister; begin - RegisterComponents('RX',[TFolderLister]); + RegisterComponents(RxCtrllPageName,[TFolderLister]); end; procedure RegisterRxToolBar; begin - RegisterComponents('RX',[TToolPanel]); + RegisterComponents(RxCtrllPageName,[TToolPanel]); end; procedure RegisterRxCtrls; begin - RegisterComponents('RX',[TRxLabel, TSecretPanel, TRxSpeedButton, TRxRadioGroup]); + RegisterComponents(RxCtrllPageName,[TRxLabel, TSecretPanel, TRxSpeedButton, TRxRadioGroup]); end; procedure RegisterChartPanel; begin - RegisterComponents('RX',[TRxChart]); + RegisterComponents(RxCtrllPageName,[TRxChart]); end; procedure RegisterAutoPanel; begin - RegisterComponents('RX',[TAutoPanel]); + RegisterComponents(RxCtrllPageName,[TAutoPanel]); end; procedure RegisterPickDate; begin - RegisterComponents('RX',[TRxCalendarGrid]); + RegisterComponents(RxCtrllPageName,[TRxCalendarGrid]); end; procedure RegisterToolEdit; begin - RegisterComponents('RX',[TRxDateEdit]); + RegisterComponents(RxCtrllPageName,[TRxDateEdit]); end; procedure RegisterRxClock; begin - RegisterComponents('RX',[TRxClock]); + RegisterComponents(RxCtrllPageName,[TRxClock]); end; procedure RegisterRxSpin; begin - RegisterComponents('RX',[TRxSpinButton, TRxSpinEdit]); + RegisterComponents(RxCtrllPageName,[TRxSpinButton, TRxSpinEdit]); end; procedure RegisterRxTimeEdit; begin - RegisterComponents('RX',[TRxTimeEdit]); + RegisterComponents(RxCtrllPageName,[TRxTimeEdit]); end; procedure RegisterRxAboutDialog; begin - RegisterComponents('RX',[TRxAboutDialog]); + RegisterComponents(RxCtrllPageName,[TRxAboutDialog]); end; procedure RegisterRxViewsPanel; begin - RegisterComponents('RX',[TRxViewsPanel]); + RegisterComponents(RxCtrllPageName,[TRxViewsPanel]); end; procedure RegisterRxMDI; begin - RegisterComponents('RX',[TRxMDICloseButton, TRxMDIPanel, TRxMDITasks]); + RegisterComponents(RxCtrllPageName,[TRxMDICloseButton, TRxMDIPanel, TRxMDITasks]); end; procedure RegisterRxHistoryNavigator; diff --git a/components/rx/rxmdi.pas b/components/rx/rxmdi.pas index 5610afc3b..f55966240 100644 --- a/components/rx/rxmdi.pas +++ b/components/rx/rxmdi.pas @@ -143,6 +143,7 @@ type implementation uses LResources, vclutils, rxconst; +// LCLProc; { TRxMDICloseButton } @@ -465,7 +466,16 @@ end; procedure TRxMDITasks.ChildWindowsShowLast; var CC:TControl; + i:integer; begin +{ + DebugLn(['FMainPanel.ControlCount = ', FMainPanel.ControlCount]); + for i:=0 to FMainPanel.ControlCount-1 do + DebugLn(['FMainPanel.Controls[',i,'].Name = ', FMainPanel.Controls[i].Name]); +} + + + if (FMainPanel.ControlCount>1) then begin CC:=FMainPanel.Controls[FMainPanel.ControlCount-2]; @@ -481,6 +491,8 @@ procedure TRxMDITasks.DoCloseAll(AIgnoreBtn: TRxMDIButton); var i:integer; begin +// DebugLn('DoCloseAll'); + for i:=ComponentCount-1 downto 0 do begin if (Components[i] is TRxMDIButton) and (TRxMDIButton(Components[i]) <> AIgnoreBtn) then @@ -660,6 +672,7 @@ procedure TRxMDIButton.DoCloseMenu(Sender: TObject); begin if Assigned(FNavForm) then FNavForm.Close; + Application.ProcessMessages; end; procedure TRxMDIButton.DoCloseAllMenu(Sender: TObject); @@ -707,6 +720,7 @@ begin FNavPanel.ChildWindowsShowLast; FNavPanel.ShowHiddenBtnOnResize; CloseAction:=caFree; + Owner.RemoveComponent(Self); Free; end;