代码之家  ›  专栏  ›  技术社区  ›  Raffaele Rossi

Firemonkey组件节省设计时间大小

  •  1
  • Raffaele Rossi  · 技术社区  · 6 年前

    关于 this 问题我已经能够创建一个FMX组件,它是一个带黑色边框的白色矩形,可以用鼠标光标在里面绘制(就像用MS Paint一样)。

    enter image description here

    当我编译并运行程序时,我会得到:

    enter image description here

    为什么?

    如果我设置 Align 属性,例如它起作用(客户端将此与客户端对齐)。如果我将组件与 Center

    看起来它没有“保存”我在对象检查器上设置的宽度和高度。我的组件具有以下相关代码:

    type
      Test = class(TControl)
      strict private
        FLineFill: TStrokeBrush;
      protected
        procedure Paint; override;
      public
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
      published
        property Align;
    property Anchors;
    property ClipChildren;
    property ClipParent;
    property Cursor;
    property Enabled;
    property Locked;
    property Height;
    property HitTest;
    property Opacity;
    property Margins;
    property Position;
    property Visible;
    property Width;
    property OnClick;
    property OnDblClick;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property OnMouseWheel;
    property OnMouseEnter;
    property OnMouseLeave;
    property OnPainting;
    property OnPaint;
    property OnResize;
    property OnResized;
    end;
    

    constructor Test.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      FLineFill := TStrokeBrush.Create(TBrushKind.Solid, $FF222222);
      //more...
    end;
    
    destructor Test.Destroy;
    begin
      FLineFill.Free;
      inherited;
    end;
    
    procedure Test.Paint;
    var
    begin
      Canvas.Stroke.Assign(FLineFill);
      Canvas.ClearRect(ClipRect, TAlphaColorRec.White);
    
      Canvas.Stroke.Color := TAlphaColorRec.Black;
      //more code...
    end;
    

    我已经查看了 TPlotGrid

    1 回复  |  直到 6 年前
        1
  •  2
  •   Alberto Miola user831258    6 年前

    你需要添加 Size 属性,因为它负责处理组件的维度。它又回来了 TControlSize 这正是你所需要的。从文档:

    TControlSize对象用于管理组件的大小。 这可以通过大小、宽度、高度和

    只需在已发布的部分中添加此代码:

    property Size;
    

    如果你看看它的实现,你会发现

    property Width: Single read GetWidth write SetWidth stored StoreWidthHeight;
    property Height: Single read GetHeight write SetHeight stored StoreWidthHeight;