From 696ab5f46cb5844abb65b5befcd6cc00971cc82e Mon Sep 17 00:00:00 2001 From: mattias Date: Thu, 10 Sep 2009 11:08:32 +0000 Subject: [PATCH] IDEIntf: designer mediator: fixed example GetClientArea git-svn-id: trunk@21643 - --- designer/designer.pp | 2 +- examples/designnonlcl/mywidgetdesigner.pas | 17 +++++++++++++++++ ideintf/formeditingintf.pas | 2 ++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/designer/designer.pp b/designer/designer.pp index 53da8f32ae..90594a6e12 100644 --- a/designer/designer.pp +++ b/designer/designer.pp @@ -1385,7 +1385,6 @@ begin SelectedCompClass := GetSelectedComponentClass; - if (TheMessage.Keys and MK_LButton) > 0 then begin // left button // -> check if a grabber was activated @@ -2779,6 +2778,7 @@ function TDesigner.ComponentClassAtPos(const AClass: TComponentClass; if IgnoreHidden then Include(Flags,dmcapfOnlyVisible); Result:=Mediator.ComponentAtPos(APos,AClass,Flags); + //DebugLn(['DoComponent ',dbgs(APos),' AClass=',DbgSName(AClass),' Result=',DbgSName(Result)]); end else begin for i := FLookupRoot.ComponentCount - 1 downto 0 do begin diff --git a/examples/designnonlcl/mywidgetdesigner.pas b/examples/designnonlcl/mywidgetdesigner.pas index fae5765fca..e53fa828bf 100644 --- a/examples/designnonlcl/mywidgetdesigner.pas +++ b/examples/designnonlcl/mywidgetdesigner.pas @@ -52,6 +52,8 @@ type class function FormClass: TComponentClass; override; procedure GetBounds(AComponent: TComponent; out CurBounds: TRect); override; procedure SetBounds(AComponent: TComponent; NewBounds: TRect); override; + procedure GetClientArea(AComponent: TComponent; out + CurClientArea: TRect; out ScrollOffset: TPoint); override; procedure Paint; override; function ComponentIsIcon(AComponent: TComponent): boolean; override; function ParentAcceptsChild(Parent: TComponent; @@ -127,6 +129,21 @@ begin inherited SetBounds(AComponent,NewBounds); end; +procedure TMyWidgetMediator.GetClientArea(AComponent: TComponent; out + CurClientArea: TRect; out ScrollOffset: TPoint); +var + Widget: TMyWidget; +begin + if AComponent is TMyWidget then begin + Widget:=TMyWidget(AComponent); + CurClientArea:=Rect(Widget.BorderLeft,Widget.BorderTop, + Widget.Width-Widget.BorderRight, + Widget.Height-Widget.BorderBottom); + ScrollOffset:=Point(0,0); + end else + inherited GetClientArea(AComponent, CurClientArea, ScrollOffset); +end; + procedure TMyWidgetMediator.Paint; procedure PaintWidget(AWidget: TMyWidget); diff --git a/ideintf/formeditingintf.pas b/ideintf/formeditingintf.pas index 87bf0d254c..be12ba3f69 100644 --- a/ideintf/formeditingintf.pas +++ b/ideintf/formeditingintf.pas @@ -469,10 +469,12 @@ begin Childs:=TFPList.Create; try GetChilds(Result,Childs); + //DebugLn(['TDesignerMediator.ComponentAtPos Result=',DbgSName(Result),' ChildCount=',childs.Count,' ']); Found:=false; // iterate backwards (z-order) for i:=Childs.Count-1 downto 0 do begin Child:=TComponent(Childs[i]); + //DebugLn(['TDesignerMediator.ComponentAtPos Child ',DbgSName(Child)]); if (MinClass<>nil) and (not Child.InheritsFrom(MinClass)) then continue; if (dmcapfOnlyVisible in Flags) and (not ComponentIsVisible(Child)) then