mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-11-04 15:09:36 +01:00 
			
		
		
		
	LCL: Implemented TCanvas.Frame3D with Delphi compatible parameter signature + a wrapper func. Patch by Stephano, issue #8328
git-svn-id: trunk@30305 -
This commit is contained in:
		
							parent
							
								
									09bbd30552
								
							
						
					
					
						commit
						6e67aa98e8
					
				@ -1311,6 +1311,9 @@ const
 | 
			
		||||
  TCN_SELCHANGE = TCN_FIRST - 1;
 | 
			
		||||
  TCN_SELCHANGING = TCN_FIRST - 2;
 | 
			
		||||
 | 
			
		||||
procedure Frame3D(ACanvas: TCanvas; var ARect: TRect;
 | 
			
		||||
  TopColor, BottomColor: TColor; const FrameWidth: integer);
 | 
			
		||||
 | 
			
		||||
procedure Register;
 | 
			
		||||
 | 
			
		||||
implementation
 | 
			
		||||
@ -1321,6 +1324,13 @@ uses
 | 
			
		||||
 | 
			
		||||
{.$define INSTALL_TUNTABBEDNOTEBOOK}
 | 
			
		||||
 | 
			
		||||
// Wrapper function for TCanvas.Frame3D.
 | 
			
		||||
procedure Frame3D(ACanvas: TCanvas; var ARect: TRect;
 | 
			
		||||
  TopColor, BottomColor: TColor; const FrameWidth: integer);
 | 
			
		||||
begin
 | 
			
		||||
  ACanvas.Frame3D(ARect, TopColor, BottomColor, FrameWidth);
 | 
			
		||||
end;
 | 
			
		||||
 | 
			
		||||
procedure Register;
 | 
			
		||||
begin
 | 
			
		||||
  RegisterComponents('Standard',[TRadioGroup,TCheckGroup,TPanel]);
 | 
			
		||||
 | 
			
		||||
@ -1104,6 +1104,8 @@ type
 | 
			
		||||
                        FillStyle: TFillStyle); virtual;
 | 
			
		||||
    procedure Frame3d(var ARect: TRect; const FrameWidth: integer;
 | 
			
		||||
                      const Style: TGraphicsBevelCut); virtual;
 | 
			
		||||
    procedure Frame3D(var ARect: TRect; TopColor, BottomColor: TColor;
 | 
			
		||||
                      const FrameWidth: integer); overload;
 | 
			
		||||
    procedure Frame(const ARect: TRect); virtual; // border using pen
 | 
			
		||||
    procedure Frame(X1,Y1,X2,Y2: Integer);     // border using pen
 | 
			
		||||
    procedure FrameRect(const ARect: TRect); virtual; // border using brush
 | 
			
		||||
 | 
			
		||||
@ -970,6 +970,45 @@ begin
 | 
			
		||||
  Changed;
 | 
			
		||||
end;
 | 
			
		||||
 | 
			
		||||
{------------------------------------------------------------------------------
 | 
			
		||||
  Method:   TCanvas.Frame3D
 | 
			
		||||
  Params:   Rect
 | 
			
		||||
  Returns:  the inflated rectangle (the inner rectangle without the frame)
 | 
			
		||||
 | 
			
		||||
 ------------------------------------------------------------------------------}
 | 
			
		||||
procedure TCanvas.Frame3D(var ARect: TRect; TopColor, BottomColor: TColor;
 | 
			
		||||
  const FrameWidth: integer);
 | 
			
		||||
var
 | 
			
		||||
  Delta, W, ii : Integer;
 | 
			
		||||
begin
 | 
			
		||||
  if ARect.Bottom-ARect.Top > ARect.Right-ARect.Left
 | 
			
		||||
  then
 | 
			
		||||
    W := ARect.Right-ARect.Left+1
 | 
			
		||||
  else
 | 
			
		||||
    W := ARect.Bottom-ARect.Top+1;
 | 
			
		||||
 | 
			
		||||
  if FrameWidth > W then
 | 
			
		||||
    W := W-1
 | 
			
		||||
  else
 | 
			
		||||
    W := FrameWidth;
 | 
			
		||||
 | 
			
		||||
  for ii := 1 to W do
 | 
			
		||||
  begin
 | 
			
		||||
    Pen.Color := TopColor;
 | 
			
		||||
    MoveTo(ARect.Left,    ARect.Bottom-1);
 | 
			
		||||
    LineTo(ARect.Left,    ARect.Top);
 | 
			
		||||
    LineTo(ARect.Right-1, ARect.Top);
 | 
			
		||||
    Pen.Color := BottomColor;
 | 
			
		||||
    LineTo(ARect.Right-1, ARect.Bottom-1);
 | 
			
		||||
    LineTo(ARect.Left,    ARect.Bottom-1);
 | 
			
		||||
 | 
			
		||||
    Inc(ARect.Left);
 | 
			
		||||
    Inc(ARect.Top);
 | 
			
		||||
    Dec(ARect.Right);
 | 
			
		||||
    Dec(ARect.Bottom);
 | 
			
		||||
  end;
 | 
			
		||||
end;
 | 
			
		||||
 | 
			
		||||
{------------------------------------------------------------------------------
 | 
			
		||||
  procedure TCanvas.Frame(const ARect: TRect);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user