merge r51214,r51225: sparta:

sparta: Patch for Ondrej patch :) (r51145) fix designer not receiving key events for DataModule and Frame. Issue #29044 
sparta: improve fake menu for further usage (delegate it to dedicated pFakeMenu panel)

git-svn-id: trunk@51235 -
This commit is contained in:
hnb 2016-01-10 14:22:19 +00:00
parent b2e160ebab
commit cf0f53eb93
3 changed files with 34 additions and 9 deletions

View File

@ -1273,7 +1273,7 @@ var
LPageCtrl: TModulePageControl;
begin
Result := nil;
LForm := TCustomForm(GlobalDesignHook.LookupRoot);
LForm := FormEditingHook.GetDesignerForm(GlobalDesignHook.LookupRoot);
LFormData := FindDesignFormData(LForm);
if LFormData=nil then Exit;
LSourceWindow := (LFormData as IDesignedForm).LastActiveSourceWindow;

View File

@ -167,7 +167,20 @@ object ResizerFrame: TResizerFrame
Color = clNone
ParentColor = False
TabOrder = 4
OnPaint = pBGPaint
object pFakeMenu: TPanel
AnchorSideLeft.Control = pBG
AnchorSideTop.Control = pBG
AnchorSideRight.Control = pBG
AnchorSideRight.Side = asrBottom
Left = 0
Height = 50
Top = 0
Width = 287
Anchors = [akTop, akLeft, akRight]
BevelOuter = bvNone
TabOrder = 0
OnPaint = pFakeMenuPaint
end
end
object pClient: TPanel
AnchorSideLeft.Control = pL

View File

@ -30,6 +30,7 @@ type
TResizerFrame = class(TFrame)
iResizerLineImg: TImage;
pFakeMenu: TPanel;
pBG: TPanel;
pB: TPanel;
pClient: TPanel;
@ -40,7 +41,7 @@ type
pMarginT: TPanel;
pR: TPanel;
pT: TPanel;
procedure pBGPaint(Sender: TObject);
procedure pFakeMenuPaint(Sender: TObject);
procedure sbVerticalScroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
procedure sbHorizontalScroll(Sender: TObject; ScrollCode: TScrollCode;
@ -248,7 +249,7 @@ begin
TileImage(iResizerLineImg, LCanvas, 0, 0, LWidth, LHeight);
end;
procedure TResizerFrame.pBGPaint(Sender: TObject);
procedure TResizerFrame.pFakeMenuPaint(Sender: TObject);
var
MenuRect: Types.TRect;
Menu: TMainMenu;
@ -257,14 +258,15 @@ var
begin
//fake paint menu
if not HasMainMenu then
Exit;
// pFakeMenu is visible only when HasMainMenu is true
//if not HasMainMenu then
// Exit;
Menu := FDesignedForm.Form.Menu;
LCanvas := (Sender as TPanel).Canvas;
MenuRect := pFakeMenu.ClientRect;
LCanvas := pFakeMenu.Canvas;
LCanvas.Brush.Color := clMenuBar;
MenuRect := (Sender as TPanel).ClientRect;
MenuRect.Bottom := MenuRect.Top + GetMenuHeight;
LCanvas.FillRect(MenuRect);
LCanvas.Font.Color := clMenuText;
@ -765,6 +767,16 @@ begin
pClient.SendToBack; // <--- this is a must.
{$ENDIF}
pClient.BringToFront;
pFakeMenu.Visible := HasMainMenu;
if pFakeMenu.Visible then
begin
pFakeMenu.Height := GetMenuHeight;
pFakeMenu.BorderSpacing.Left := BgLeftMargin;
pFakeMenu.BorderSpacing.Top := BgTopMargin - pFakeMenu.Height;
pFakeMenu.BorderSpacing.Right := BgRightMargin;
pFakeMenu.BringToFront;
end;
end;
function TResizerFrame.DesignedWidthToScroll: Integer;