LCL/extctrls: Add new TCustomPanel/TPanel property VerticalAlignment which exists in Delphi.

This commit is contained in:
wp_xyz 2022-07-19 19:28:16 +02:00
parent 646cea3c3f
commit 13f4f576ab
2 changed files with 18 additions and 2 deletions

View File

@ -1068,6 +1068,7 @@ type
FBevelInner, FBevelOuter : TPanelBevel; FBevelInner, FBevelOuter : TPanelBevel;
FBevelWidth : TBevelWidth; FBevelWidth : TBevelWidth;
FAlignment : TAlignment; FAlignment : TAlignment;
FVertAlignment: TVerticalAlignment;
FFullRepaint: Boolean; FFullRepaint: Boolean;
FWordWrap: Boolean; FWordWrap: Boolean;
procedure PaintBevel(var ARect: TRect; ABevel: TPanelBevel); procedure PaintBevel(var ARect: TRect; ABevel: TPanelBevel);
@ -1076,6 +1077,7 @@ type
procedure SetBevelInner(const Value: TPanelBevel); procedure SetBevelInner(const Value: TPanelBevel);
procedure SetBevelOuter(const Value: TPanelBevel); procedure SetBevelOuter(const Value: TPanelBevel);
procedure SetBevelWidth(const Value: TBevelWidth); procedure SetBevelWidth(const Value: TBevelWidth);
procedure SetVertAlignment(const Value: TVerticalAlignment);
procedure SetWordwrap(const Value: Boolean); procedure SetWordwrap(const Value: Boolean);
protected protected
class procedure WSRegisterClass; override; class procedure WSRegisterClass; override;
@ -1088,6 +1090,7 @@ type
procedure Paint; override; procedure Paint; override;
procedure SetParentBackground(const AParentBackground: Boolean); override; procedure SetParentBackground(const AParentBackground: Boolean); override;
procedure UpdateParentColorChange; procedure UpdateParentColorChange;
property VerticalAlignment: TVerticalAlignment read FVertAlignment write SetVertAlignment default taVerticalCenter;
property WordWrap: Boolean read FWordwrap write SetWordwrap default false; property WordWrap: Boolean read FWordwrap write SetWordwrap default false;
public public
constructor Create(TheOwner: TComponent); override; constructor Create(TheOwner: TComponent); override;
@ -1146,6 +1149,7 @@ type
property TabOrder; property TabOrder;
property TabStop; property TabStop;
property UseDockManager default True; property UseDockManager default True;
property VerticalAlignment;
property Visible; property Visible;
property Wordwrap; property Wordwrap;
property OnChangeBounds; property OnChangeBounds;

View File

@ -34,6 +34,7 @@ begin
FBevelInner := bvNone; FBevelInner := bvNone;
FBevelWidth := 1; FBevelWidth := 1;
FAlignment := taCenter; FAlignment := taCenter;
FVertAlignment := taVerticalCenter;
FFullRepaint := True; FFullRepaint := True;
Color := {$ifdef UseCLDefault}clDefault{$else}clBtnFace{$endif}; Color := {$ifdef UseCLDefault}clDefault{$else}clBtnFace{$endif};
with GetControlClassDefaultSize do with GetControlClassDefaultSize do
@ -83,6 +84,15 @@ begin
inherited; inherited;
end; end;
procedure TCustomPanel.SetVertAlignment(const Value: TVerticalAlignment);
begin
if FVertAlignment <> Value then
begin
FVertAlignment := Value;
Invalidate;
end;
end;
procedure TCustomPanel.SetWordwrap(const Value: Boolean); procedure TCustomPanel.SetWordwrap(const Value: Boolean);
begin begin
if FWordwrap <> Value then if FWordwrap <> Value then
@ -126,7 +136,9 @@ begin
// Note: Frame3D inflates ARect // Note: Frame3D inflates ARect
end; end;
procedure TCustomPanel.Paint; procedure TCustomPanel.Paint;
const
VerticalAlignmentToTextLayout: array[TVerticalAlignment] of TTextLayout = (tlTop, tlBottom, tlCenter);
var var
ARect: TRect; ARect: TRect;
TS : TTextStyle; TS : TTextStyle;
@ -143,7 +155,7 @@ begin
TS.Alignment := BidiFlipAlignment(Self.Alignment, UseRightToLeftAlignment); TS.Alignment := BidiFlipAlignment(Self.Alignment, UseRightToLeftAlignment);
if BiDiMode<>bdLeftToRight then if BiDiMode<>bdLeftToRight then
TS.RightToLeft:= True; TS.RightToLeft:= True;
TS.Layout:= tlCenter; TS.Layout:= VerticalAlignmentToTextlayout[FVertAlignment];
TS.Opaque:= false; TS.Opaque:= false;
TS.Clipping:= false; TS.Clipping:= false;
TS.SystemFont:=Canvas.Font.IsDefault; TS.SystemFont:=Canvas.Font.IsDefault;