lazarus/lcl/include/toolwindow.inc
lazarus d78e403562 MG: changed license to LGPL
git-svn-id: trunk@997 -
2002-02-09 01:47:36 +00:00

126 lines
4.0 KiB
PHP

{******************************************************************************
TToolWindow
******************************************************************************
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.LCL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
{ TToolWindow }
constructor TToolWindow.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FEdgeBorders := [ebLeft, ebTop, ebRight, ebBottom];
FEdgeInner := esRaised;
FEdgeOuter := esLowered;
end;
procedure TToolWindow.SetEdgeBorders(Value: TEdgeBorders);
begin
if FEdgeBorders <> Value then
begin
FEdgeBorders := Value;
RecreateWnd;
end;
end;
procedure TToolWindow.SetEdgeInner(Value: TEdgeStyle);
begin
if FEdgeInner <> Value then
begin
FEdgeInner := Value;
RecreateWnd;
end;
end;
procedure TToolWindow.SetEdgeOuter(Value: TEdgeStyle);
begin
if FEdgeOuter <> Value then
begin
FEdgeOuter := Value;
RecreateWnd;
end;
end;
procedure TToolWindow.LMNCCalcSize(var Message: TLMNCCalcSize);
var
EdgeSize: Integer;
begin
with Message.CalcSize_Params^ do
begin
InflateRect(rgrc[0], -BorderWidth, -BorderWidth);
EdgeSize := 0;
if EdgeInner <> esNone then Inc(EdgeSize, 1);
if EdgeOuter <> esNone then Inc(EdgeSize, 1);
with rgrc[0] do
begin
if ebLeft in FEdgeBorders then Inc(Left, EdgeSize);
if ebTop in FEdgeBorders then Inc(Top, EdgeSize);
if ebRight in FEdgeBorders then Dec(Right, EdgeSize);
if ebBottom in FEdgeBorders then Dec(Bottom, EdgeSize);
end;
end;
end;
procedure TToolWindow.LMNCPaint(var Message: TLMessage);
const
InnerStyles: array[TEdgeStyle] of Integer = (0, BDR_RAISEDINNER, BDR_SUNKENINNER);
OuterStyles: array[TEdgeStyle] of Integer = (0, BDR_RAISEDOUTER, BDR_SUNKENOUTER);
Ctl3DStyles: array[Boolean] of Integer = (BF_MONO, 0);
var
DC: HDC;
RW: TRect;
FEdgeBorderType : Cardinal;
begin
Assert(False, 'Trace:********************');
Assert(False, 'Trace:********************');
Assert(False, 'Trace:********************');
DC := GetDC(Handle);
try
// GetClientRect(Handle, RC);
GetWindowRect(Handle, RW);
// MapWindowPoints(0, Handle, RW, 2);
// OffsetRect(RC, -RW.Left, -RW.Top);
// ExcludeClipRect(DC, RC.Left, RC.Top, RC.Right, RC.Bottom);
{ Draw borders in non-client area }
// OffsetRect(RW, -RW.Left, -RW.Top);
FEdgeBorderType := 0;
if (ebTOP in FEdgeBorders) then
FEdgeBorderType := FEdgeBorderType or longint(ebTOP);
if (ebBottom in FEdgeBorders) then
FEdgeBorderType := FEdgeBorderType or longint(ebBottom);
if (ebLeft in FEdgeBorders) then
FEdgeBorderType := FEdgeBorderType or longint(ebLeft);
if (ebRight in FEdgeBorders) then
FEdgeBorderType := FEdgeBorderType or longint(ebRight);
DrawEdge(DC,RW,InnerStyles[FEdgeInner] or OuterStyles[FEdgeOuter],FEdgeBorderType);
// FillRect(DC, RW, Brush.Handle);
finally
ReleaseDC(Handle, DC);
end;
end;
procedure TToolWindow.CMBorderChanged(var Message: TLMessage);
begin
//TODO: FiNISH CMBORDERCHANGED in toolwindow.inc
end;
procedure TToolWindow.CMCtl3DChanged(var Message: TLMessage);
begin
//TODO: FiNISH CMCTL3DCHANGED in toolwindow.inc
end;