带tLabel子项的FireMonkey tRectangle

时间:2019-09-06 18:48:25

标签: delphi firemonkey

我正在编码基于tRectangle的自定义控件:

tMyRect = class (tRectangle)

tMyRect Constructor上,我创建一个tLabel

fRectLabel := tLabel.Create (Self);

,然后为其设置一些属性。

在运行时,根据属性设置未显示tLabel,也没有响应快速键。

遵循完整的代码:

unit frmMyRect;
interface
uses FMX.Controls, FMX.Controls.Presentation, FMX.Forms, FMX.Layouts, 
     FMX.Objects, FMXFMX.StdCtrls, FMX.Types,System.Classes, System.UITypes;
type
  tfrmMyRect =  class (tForm)
     procedure FormCreate (Sender: tObject);
  end;
  tMyRect = class (tRectangle)
    fRectLabel : tLabel;
    constructor Create (aOwner: tComponent);
  end;
var formMyRect: tfrmMyRect;
implementation
{$R *.fmx}
var MyRect : tMyRect;
procedure tformMyRect.FormCreate (Sender: tObject);
begin
   MyRect := tMyRect.Create (Self);
   MyRect.Parent := frmMyRect;
end; { FormCreate }
constructor tMyRect.Create (aOwner: tComponent);
begin
   inherited;
  Align      := tAlignLayout.Center;
  CanFocus   :=  True;
  Height     :=   23;
  Width      :=   80;
  fRectLabel := tLabel.Create (Self);
    with fRectLabel do begin
           Align        := tAlignLayout.Center;
           AutoSize     :=  True;
           FocusControl :=  Self;
           HitTest      :=  True;
           Parent       :=  Self;
           Text         := 'Labe&l';
            with TextSettings do begin
                 FontColor  := TAlphaColorRec.Blue;
                 WordWrap   :=  False;
                 Font.Style := [TFontStyle.fsBold];
            end;
    end;
  end; { Create }
end.

我很高兴有人能澄清为什么tLabel的行为不符合预期。

1 个答案:

答案 0 :(得分:1)

您需要更改TLabel的StyleSettings属性,以便样式系统不应用您已更改的样式,例如:

  StyledSettings := StyledSettings - [TStyledSetting.FontColor, TStyledSetting.Style];

对于“都不响应快速键”部分,您需要弄清您的意思,因为您没有显示与此相关的代码