mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-30 20:30:48 +02:00
customdrawn: Improves TCDPanel
git-svn-id: trunk@33991 -
This commit is contained in:
parent
2b22ea06cb
commit
c51860c5a2
@ -37,6 +37,7 @@ type
|
|||||||
// General drawing routines
|
// General drawing routines
|
||||||
procedure DrawFocusRect(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); override;
|
procedure DrawFocusRect(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); override;
|
||||||
procedure DrawRaisedFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); override;
|
procedure DrawRaisedFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); override;
|
||||||
|
procedure DrawShallowRaisedFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); override;
|
||||||
procedure DrawSunkenFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); override;
|
procedure DrawSunkenFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); override;
|
||||||
procedure DrawShallowSunkenFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); override;
|
procedure DrawShallowSunkenFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); override;
|
||||||
procedure DrawTickmark(ADest: TCanvas; ADestPos: TPoint); override;
|
procedure DrawTickmark(ADest: TCanvas; ADestPos: TPoint); override;
|
||||||
@ -80,7 +81,7 @@ type
|
|||||||
AState: TCDControlState; AStateEx: TCDControlStateEx); override;
|
AState: TCDControlState; AStateEx: TCDControlStateEx); override;
|
||||||
// TCDPanel
|
// TCDPanel
|
||||||
procedure DrawPanel(ADest: TCanvas; ASize: TSize;
|
procedure DrawPanel(ADest: TCanvas; ASize: TSize;
|
||||||
AState: TCDControlState; AStateEx: TCDControlStateEx); override;
|
AState: TCDControlState; AStateEx: TCDPanelStateEx); override;
|
||||||
// ===================================
|
// ===================================
|
||||||
// Additional Tab
|
// Additional Tab
|
||||||
// ===================================
|
// ===================================
|
||||||
@ -340,6 +341,23 @@ begin
|
|||||||
ADest.LineTo(ADestPos.X+ASize.cx-2, ADestPos.Y-1);
|
ADest.LineTo(ADestPos.X+ASize.cx-2, ADestPos.Y-1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCDDrawerCommon.DrawShallowRaisedFrame(ADest: TCanvas;
|
||||||
|
ADestPos: TPoint; ASize: TSize);
|
||||||
|
begin
|
||||||
|
// white lines in the left and top
|
||||||
|
ADest.Pen.Style := psSolid;
|
||||||
|
ADest.Brush.Style := bsClear;
|
||||||
|
ADest.Pen.Color := WIN2000_FRAME_WHITE;
|
||||||
|
ADest.MoveTo(ADestPos.X, ADestPos.Y+ASize.cy-1);
|
||||||
|
ADest.LineTo(ADestPos.X, ADestPos.Y);
|
||||||
|
ADest.LineTo(ADestPos.X+ASize.cy-1, ADestPos.Y);
|
||||||
|
// Dark grey line on the right and bottom
|
||||||
|
ADest.Pen.Color := WIN2000_FRAME_DARK_GRAY;
|
||||||
|
ADest.MoveTo(ADestPos.X, ADestPos.Y+ASize.cy-1);
|
||||||
|
ADest.LineTo(ADestPos.X+ASize.cx-1, ADestPos.Y+ASize.cy-1);
|
||||||
|
ADest.LineTo(ADestPos.X+ASize.cx-1, ADestPos.Y);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCDDrawerCommon.DrawSunkenFrame(ADest: TCanvas; ADestPos: TPoint;
|
procedure TCDDrawerCommon.DrawSunkenFrame(ADest: TCanvas; ADestPos: TPoint;
|
||||||
ASize: TSize);
|
ASize: TSize);
|
||||||
begin
|
begin
|
||||||
@ -1070,7 +1088,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCDDrawerCommon.DrawPanel(ADest: TCanvas; ASize: TSize;
|
procedure TCDDrawerCommon.DrawPanel(ADest: TCanvas; ASize: TSize;
|
||||||
AState: TCDControlState; AStateEx: TCDControlStateEx);
|
AState: TCDControlState; AStateEx: TCDPanelStateEx);
|
||||||
begin
|
begin
|
||||||
// Background
|
// Background
|
||||||
ADest.Brush.Color := Palette.BtnFace;
|
ADest.Brush.Color := Palette.BtnFace;
|
||||||
@ -1078,8 +1096,10 @@ begin
|
|||||||
ADest.Pen.Style := psClear;
|
ADest.Pen.Style := psClear;
|
||||||
ADest.FillRect(0, 0, ASize.cx, ASize.cy);
|
ADest.FillRect(0, 0, ASize.cx, ASize.cy);
|
||||||
|
|
||||||
// The frame
|
// The outter frame
|
||||||
DrawRaisedFrame(ADest, Point(0, 0), ASize);
|
DrawShallowRaisedFrame(ADest, Point(0, 0), ASize);
|
||||||
|
|
||||||
|
// Now the inner frame
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCDDrawerCommon.DrawStaticText(ADest: TCanvas;
|
procedure TCDDrawerCommon.DrawStaticText(ADest: TCanvas;
|
||||||
|
@ -355,14 +355,26 @@ type
|
|||||||
|
|
||||||
TCDPanel = class(TCDControl)
|
TCDPanel = class(TCDControl)
|
||||||
private
|
private
|
||||||
function GetControlId: TCDControlID; override;
|
FBevelInner: TPanelBevel;
|
||||||
|
FBevelOuter: TPanelBevel;
|
||||||
|
FBevelWidth: TBevelWidth;
|
||||||
|
procedure SetBevelInner(AValue: TPanelBevel);
|
||||||
|
procedure SetBevelOuter(AValue: TPanelBevel);
|
||||||
|
procedure SetBevelWidth(AValue: TBevelWidth);
|
||||||
protected
|
protected
|
||||||
|
FPState: TCDPanelStateEx;
|
||||||
|
function GetControlId: TCDControlID; override;
|
||||||
|
procedure CreateControlStateEx; override;
|
||||||
|
procedure PrepareControlStateEx; override;
|
||||||
procedure RealSetText(const Value: TCaption); override; // to update on caption changes
|
procedure RealSetText(const Value: TCaption); override; // to update on caption changes
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
published
|
published
|
||||||
//property AutoSize;
|
//property AutoSize;
|
||||||
|
property BevelInner: TPanelBevel read FBevelInner write SetBevelInner default bvNone;
|
||||||
|
property BevelOuter: TPanelBevel read FBevelOuter write SetBevelOuter default bvRaised;
|
||||||
|
property BevelWidth: TBevelWidth read FBevelWidth write SetBevelWidth default 1;
|
||||||
property DrawStyle;
|
property DrawStyle;
|
||||||
property Caption;
|
property Caption;
|
||||||
property TabStop default False;
|
property TabStop default False;
|
||||||
@ -643,6 +655,41 @@ begin
|
|||||||
Result := cidPanel;
|
Result := cidPanel;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCDPanel.CreateControlStateEx;
|
||||||
|
begin
|
||||||
|
FPState := TCDPanelStateEx.Create;
|
||||||
|
FStateEx := FPState;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCDPanel.PrepareControlStateEx;
|
||||||
|
begin
|
||||||
|
inherited PrepareControlStateEx;
|
||||||
|
FPState.BevelInner := FBevelInner;
|
||||||
|
FPState.BevelOuter := FBevelOuter;
|
||||||
|
FPState.BevelWidth := FBevelWidth;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCDPanel.SetBevelInner(AValue: TPanelBevel);
|
||||||
|
begin
|
||||||
|
if FBevelInner=AValue then Exit;
|
||||||
|
FBevelInner:=AValue;
|
||||||
|
if not (csLoading in ComponentState) then Invalidate;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCDPanel.SetBevelOuter(AValue: TPanelBevel);
|
||||||
|
begin
|
||||||
|
if FBevelOuter=AValue then Exit;
|
||||||
|
FBevelOuter:=AValue;
|
||||||
|
if not (csLoading in ComponentState) then Invalidate;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCDPanel.SetBevelWidth(AValue: TBevelWidth);
|
||||||
|
begin
|
||||||
|
if FBevelWidth=AValue then Exit;
|
||||||
|
FBevelWidth:=AValue;
|
||||||
|
if not (csLoading in ComponentState) then Invalidate;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCDPanel.RealSetText(const Value: TCaption);
|
procedure TCDPanel.RealSetText(const Value: TCaption);
|
||||||
begin
|
begin
|
||||||
inherited RealSetText(Value);
|
inherited RealSetText(Value);
|
||||||
|
@ -7,7 +7,7 @@ interface
|
|||||||
uses
|
uses
|
||||||
Classes, SysUtils, Types,
|
Classes, SysUtils, Types,
|
||||||
// LCL for types
|
// LCL for types
|
||||||
Graphics, ComCtrls;
|
Graphics, ComCtrls, ExtCtrls;
|
||||||
|
|
||||||
const
|
const
|
||||||
CDDRAWSTYLE_COUNT = 19;
|
CDDRAWSTYLE_COUNT = 19;
|
||||||
@ -152,6 +152,13 @@ type
|
|||||||
LeftTextMargin, RightTextMargin: Integer;
|
LeftTextMargin, RightTextMargin: Integer;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
TCDPanelStateEx = class(TCDControlStateEx)
|
||||||
|
public
|
||||||
|
BevelInner: TPanelBevel;
|
||||||
|
BevelOuter: TPanelBevel;
|
||||||
|
BevelWidth: TBevelWidth;
|
||||||
|
end;
|
||||||
|
|
||||||
TCDPositionedCStateEx = class(TCDControlStateEx)
|
TCDPositionedCStateEx = class(TCDControlStateEx)
|
||||||
public
|
public
|
||||||
PosCount: integer; // The number of positions, calculated as Max - Min + 1
|
PosCount: integer; // The number of positions, calculated as Max - Min + 1
|
||||||
@ -281,6 +288,7 @@ type
|
|||||||
// General drawing routines
|
// General drawing routines
|
||||||
procedure DrawFocusRect(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); virtual; abstract;
|
procedure DrawFocusRect(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); virtual; abstract;
|
||||||
procedure DrawRaisedFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); virtual; abstract;
|
procedure DrawRaisedFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); virtual; abstract;
|
||||||
|
procedure DrawShallowRaisedFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); virtual; abstract;
|
||||||
procedure DrawSunkenFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); virtual; abstract;
|
procedure DrawSunkenFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); virtual; abstract;
|
||||||
procedure DrawShallowSunkenFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); virtual; abstract;
|
procedure DrawShallowSunkenFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize); virtual; abstract;
|
||||||
procedure DrawTickmark(ADest: TCanvas; ADestPos: TPoint); virtual; abstract;
|
procedure DrawTickmark(ADest: TCanvas; ADestPos: TPoint); virtual; abstract;
|
||||||
@ -321,7 +329,7 @@ type
|
|||||||
AState: TCDControlState; AStateEx: TCDControlStateEx); virtual; abstract;
|
AState: TCDControlState; AStateEx: TCDControlStateEx); virtual; abstract;
|
||||||
// TCDPanel
|
// TCDPanel
|
||||||
procedure DrawPanel(ADest: TCanvas; ASize: TSize;
|
procedure DrawPanel(ADest: TCanvas; ASize: TSize;
|
||||||
AState: TCDControlState; AStateEx: TCDControlStateEx); virtual; abstract;
|
AState: TCDControlState; AStateEx: TCDPanelStateEx); virtual; abstract;
|
||||||
// ===================================
|
// ===================================
|
||||||
// Additional Tab
|
// Additional Tab
|
||||||
// ===================================
|
// ===================================
|
||||||
@ -622,7 +630,7 @@ begin
|
|||||||
cidRadioButton:DrawRadioButton(ADest, ASize, AState, AStateEx);
|
cidRadioButton:DrawRadioButton(ADest, ASize, AState, AStateEx);
|
||||||
cidScrollBar: DrawScrollBar(ADest, ASize, AState, TCDPositionedCStateEx(AStateEx));
|
cidScrollBar: DrawScrollBar(ADest, ASize, AState, TCDPositionedCStateEx(AStateEx));
|
||||||
cidGroupBox: DrawGroupBox(ADest, ASize, AState, AStateEx);
|
cidGroupBox: DrawGroupBox(ADest, ASize, AState, AStateEx);
|
||||||
cidPanel: DrawPanel(ADest, ASize, AState, AStateEx);
|
cidPanel: DrawPanel(ADest, ASize, AState, TCDPanelStateEx(AStateEx));
|
||||||
//
|
//
|
||||||
cidStaticText: DrawStaticText(ADest, ASize, AState, AStateEx);
|
cidStaticText: DrawStaticText(ADest, ASize, AState, AStateEx);
|
||||||
//
|
//
|
||||||
|
Loading…
Reference in New Issue
Block a user