mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-19 20:59:35 +02:00
customdrawn: Adds a client area getter
git-svn-id: trunk@33271 -
This commit is contained in:
parent
ed780f4ced
commit
936b420ba8
@ -28,6 +28,8 @@ type
|
|||||||
AState: TCDControlState; AStateEx: TCDControlStateEx;
|
AState: TCDControlState; AStateEx: TCDControlStateEx;
|
||||||
var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); override;
|
var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); override;
|
||||||
function GetColor(AColorID: Integer): TColor; override;
|
function GetColor(AColorID: Integer): TColor; override;
|
||||||
|
function GetClientArea(ADest: TCanvas; ASize: TSize; AControlId: TCDControlID;
|
||||||
|
AState: TCDControlState; AStateEx: TCDControlStateEx): TRect; override;
|
||||||
procedure DrawControl(ADest: TCanvas; ADestPos: TPoint; ASize: TSize;
|
procedure DrawControl(ADest: TCanvas; ADestPos: TPoint; ASize: TSize;
|
||||||
AControl: TCDControlID; AState: TCDControlState; AStateEx: TCDControlStateEx); override;
|
AControl: TCDControlID; AState: TCDControlState; AStateEx: TCDControlStateEx); override;
|
||||||
// ===================================
|
// ===================================
|
||||||
@ -91,7 +93,7 @@ begin
|
|||||||
TCDCONTROL_CAPTION_HEIGHT: Result := ADest.TextHeight('ŹÇ')+3;
|
TCDCONTROL_CAPTION_HEIGHT: Result := ADest.TextHeight('ŹÇ')+3;
|
||||||
TCDCTABCONTROL_TAB_HEIGHT:
|
TCDCTABCONTROL_TAB_HEIGHT:
|
||||||
begin
|
begin
|
||||||
if AStateEx.Font.Size = 0 then Result := 22
|
if AStateEx.Font.Size = 0 then Result := ADest.TextHeight('Z')+14
|
||||||
else Result := AStateEx.Font.Size + 14;
|
else Result := AStateEx.Font.Size + 14;
|
||||||
end;
|
end;
|
||||||
TCDCTABCONTROL_TAB_WIDTH:
|
TCDCTABCONTROL_TAB_WIDTH:
|
||||||
@ -135,6 +137,23 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCDDrawerCommon.GetClientArea(ADest: TCanvas; ASize: TSize;
|
||||||
|
AControlId: TCDControlID; AState: TCDControlState; AStateEx: TCDControlStateEx
|
||||||
|
): TRect;
|
||||||
|
begin
|
||||||
|
Result := Bounds(0, 0, ASize.cx, ASize.cy);
|
||||||
|
|
||||||
|
case AControlId of
|
||||||
|
cidCTabControl:
|
||||||
|
begin
|
||||||
|
Result.Top := GetMeasuresEx(ADest, TCDCTABCONTROL_TAB_HEIGHT, AState, AStateEx) + 2;
|
||||||
|
Result.Left := 2;
|
||||||
|
Result.Right := Result.Right - 2;
|
||||||
|
Result.Bottom := Result.Bottom - 2;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCDDrawerCommon.DrawControl(ADest: TCanvas; ADestPos: TPoint;
|
procedure TCDDrawerCommon.DrawControl(ADest: TCanvas; ADestPos: TPoint;
|
||||||
ASize: TSize; AControl: TCDControlID; AState: TCDControlState;
|
ASize: TSize; AControl: TCDControlID; AState: TCDControlState;
|
||||||
AStateEx: TCDControlStateEx);
|
AStateEx: TCDControlStateEx);
|
||||||
@ -495,8 +514,8 @@ begin
|
|||||||
ADest.Brush.Color := clWhite;
|
ADest.Brush.Color := clWhite;
|
||||||
SetLength(Points, 5);
|
SetLength(Points, 5);
|
||||||
Points[0] := Point(AStateEx.CurStartLeftPos, lTabTopPos);
|
Points[0] := Point(AStateEx.CurStartLeftPos, lTabTopPos);
|
||||||
Points[1] := Point(AStateEx.CurStartLeftPos+lTabWidth-5, lTabTopPos);
|
Points[1] := Point(AStateEx.CurStartLeftPos+lTabWidth-2, lTabTopPos);
|
||||||
Points[2] := Point(AStateEx.CurStartLeftPos+lTabWidth, lTabTopPos+5);
|
Points[2] := Point(AStateEx.CurStartLeftPos+lTabWidth, lTabTopPos+2);
|
||||||
Points[3] := Point(AStateEx.CurStartLeftPos+lTabWidth, lTabTopPos+lTabHeight);
|
Points[3] := Point(AStateEx.CurStartLeftPos+lTabWidth, lTabTopPos+lTabHeight);
|
||||||
Points[4] := Point(AStateEx.CurStartLeftPos, lTabTopPos+lTabHeight);
|
Points[4] := Point(AStateEx.CurStartLeftPos, lTabTopPos+lTabHeight);
|
||||||
ADest.Polygon(Points);
|
ADest.Polygon(Points);
|
||||||
@ -505,9 +524,9 @@ begin
|
|||||||
ADest.Pen.Style := psSolid;
|
ADest.Pen.Style := psSolid;
|
||||||
ADest.Brush.Style := bsClear;
|
ADest.Brush.Style := bsClear;
|
||||||
ADest.Pen.Color := ColorToRGB($009C9B91);
|
ADest.Pen.Color := ColorToRGB($009C9B91);
|
||||||
ADest.MoveTo(AStateEx.CurStartLeftPos+1, lTabTopPos);
|
ADest.MoveTo(AStateEx.CurStartLeftPos, lTabTopPos);
|
||||||
ADest.LineTo(AStateEx.CurStartLeftPos+lTabWidth-5, lTabTopPos);
|
ADest.LineTo(AStateEx.CurStartLeftPos+lTabWidth-2, lTabTopPos);
|
||||||
ADest.LineTo(AStateEx.CurStartLeftPos+lTabWidth, lTabTopPos+5);
|
ADest.LineTo(AStateEx.CurStartLeftPos+lTabWidth, lTabTopPos+2);
|
||||||
ADest.LineTo(AStateEx.CurStartLeftPos+lTabWidth, lTabTopPos+lTabHeight);
|
ADest.LineTo(AStateEx.CurStartLeftPos+lTabWidth, lTabTopPos+lTabHeight);
|
||||||
|
|
||||||
if IsSelected then
|
if IsSelected then
|
||||||
|
@ -1518,16 +1518,18 @@ end;
|
|||||||
procedure TCDPageControl.PositionTabSheet(ATabSheet: TCDTabSheet);
|
procedure TCDPageControl.PositionTabSheet(ATabSheet: TCDTabSheet);
|
||||||
var
|
var
|
||||||
lTabHeight, lIndex: Integer;
|
lTabHeight, lIndex: Integer;
|
||||||
|
lClientArea: TRect;
|
||||||
begin
|
begin
|
||||||
lIndex := FTabs.IndexOfObject(ATabSheet);
|
lIndex := FTabs.IndexOfObject(ATabSheet);
|
||||||
FTabCState.TabIndex := lIndex;
|
FTabCState.TabIndex := lIndex;
|
||||||
PrepareControlState;
|
PrepareControlState;
|
||||||
PrepareControlStateEx;
|
PrepareControlStateEx;
|
||||||
lTabHeight := FDrawer.GetMeasuresEx(Canvas, TCDCTABCONTROL_TAB_HEIGHT, FState, FStateEx);
|
lClientArea := FDrawer.GetClientArea(Canvas, Size(Width, Height), GetControlId, FState, FStateEx);
|
||||||
ATabSheet.BorderSpacing.Top := lTabHeight;
|
|
||||||
ATabSheet.BorderSpacing.Left := 2;
|
ATabSheet.BorderSpacing.Top := lClientArea.Top;
|
||||||
ATabSheet.BorderSpacing.Right := 3;
|
ATabSheet.BorderSpacing.Left := lClientArea.Left;
|
||||||
ATabSheet.BorderSpacing.Bottom := 3;
|
ATabSheet.BorderSpacing.Right := Width - lClientArea.Right;
|
||||||
|
ATabSheet.BorderSpacing.Bottom := Height - lClientArea.Bottom;
|
||||||
ATabSheet.Align := alClient;
|
ATabSheet.Align := alClient;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -151,6 +151,8 @@ type
|
|||||||
AState: TCDControlState; AStateEx: TCDControlStateEx;
|
AState: TCDControlState; AStateEx: TCDControlStateEx;
|
||||||
var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); virtual; abstract;
|
var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); virtual; abstract;
|
||||||
function GetColor(AColorID: Integer): TColor; virtual; abstract;
|
function GetColor(AColorID: Integer): TColor; virtual; abstract;
|
||||||
|
function GetClientArea(ADest: TCanvas; ASize: TSize; AControlId: TCDControlID;
|
||||||
|
AState: TCDControlState; AStateEx: TCDControlStateEx): TRect; virtual; abstract;
|
||||||
procedure DrawControl(ADest: TCanvas; ADestPos: TPoint; ASize: TSize;
|
procedure DrawControl(ADest: TCanvas; ADestPos: TPoint; ASize: TSize;
|
||||||
AControl: TCDControlID; AState: TCDControlState; AStateEx: TCDControlStateEx); virtual; abstract;
|
AControl: TCDControlID; AState: TCDControlState; AStateEx: TCDControlStateEx); virtual; abstract;
|
||||||
// TCDButton
|
// TCDButton
|
||||||
|
Loading…
Reference in New Issue
Block a user