Firemonkey TFrame对齐方式=缩放的Bug?

3

我有一个疑问。我在FireMonkey中创建了一个框架,并添加了两个按钮,然后在主窗体中添加了这个框架。

Frame.Align = Scale

在主窗体中,对象Frame.Align = Client。当我编译并重新调整窗体大小时,框架不会随之缩放。这是一个正常的问题还是一个错误?
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 481
  ClientWidth = 627
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop]
  DesignerMasterStyle = 0
  inline Frame21: TFrame2
    Align = Scale
    Position.Y = -3.000000000000000000
    Size.Width = 887.000000000000000000
    Size.Height = 653.000000000000000000
    Size.PlatformDefault = False
  end
end

object Frame2: TFrame2
  Align = Scale
  Size.Width = 526.000000000000000000
  Size.Height = 395.000000000000000000
  Size.PlatformDefault = False
  object Button1: TButton
    Position.X = 80.000000000000000000
    Position.Y = 40.000000000000000000
    TabOrder = 0
    Text = 'Button1'
  end
  object Button2: TButton
    Position.X = 144.000000000000000000
    Position.Y = 144.000000000000000000
    TabOrder = 1
    Text = 'Button2'
  end
  object Button3: TButton
    Position.X = 240.000000000000000000
    Position.Y = 256.000000000000000000
    TabOrder = 2
    Text = 'Button3'
  end
end

你理解“规模”这个术语的含义吗?你期望/试图实现什么? - Dsm
相对控件,不应该调整大小? - Wesley Bobato
我无法在Delphi XE7中重现这个问题。框架(以及具有“比例”的组件)会按预期进行调整大小。请将您的表单显示为文本(在表单视图上右键单击并选择“显示为文本”)。 - Tom Brunberg
嗨Wesley,我认为你弄错了这个网站。你应该展示你的代码来进行评估。到目前为止,我只看到了两个陈述,没有任何上下文。我不得不猜测你在做什么,可能会误解。因此,我仍在等待你对我之前评论的回复。 - Tom Brunberg
https://pastebin.com/eGUsYXa7 - Wesley Bobato
显示剩余3条评论
1个回答

3

不,框架中的Align = Scale没有错误。您似乎只是将框架本身与Scale对齐。

如果您希望框架上的组件也按比例缩放,您需要同样分配它们的Align属性。

以下是我的表单:

object Form22: TForm22
  Left = 0
  Top = 0
  Caption = 'Form22'
  ClientHeight = 200
  ClientWidth = 350
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop]
  DesignerMasterStyle = 0
  inline Frame221: TFrame22
    Align = Scale
    Position.X = 16.000000000000000000
    Position.Y = 14.000000000000000000
    Size.Width = 320.000000000000000000
    Size.Height = 171.000000000000000000
    Size.PlatformDefault = False
    TabOrder = 1
    inherited Label1: TLabel
      Position.X = 16.000000000000000000
      Position.Y = 24.000000000000000000
    end
    inherited Button1: TButton
      Position.Y = 48.857139587402340000
      Size.Height = 19.193893432617190000
      Size.PlatformDefault = False
    end
    inherited Button2: TButton
      Position.Y = 48.857139587402340000
      Size.Height = 19.193893432617190000
      Size.PlatformDefault = False
    end
    inherited Rectangle1: TRectangle
      Position.Y = 76.775512695312500000
      Size.Height = 77.647918701171880000
    end
  end
end

同时,这个框架

object Frame22: TFrame22
  Align = Scale
  Size.Width = 320.000000000000000000
  Size.Height = 196.000000000000000000
  Size.PlatformDefault = False
  TabOrder = 0
  object Label1: TLabel
    Position.X = 32.000000000000000000
    Position.Y = 32.000000000000000000
    Text = 'Frame here!'
  end
  object Button1: TButton
    Align = Scale
    Position.X = 16.000000000000000000
    Position.Y = 56.000000000000000000
    TabOrder = 1
    Text = 'Button1'
  end
  object Button2: TButton
    Align = Scale
    Position.X = 216.000000000000000000
    Position.Y = 56.000000000000000000
    TabOrder = 2
    Text = 'Button2'
  end
  object Rectangle1: TRectangle
    Align = Scale
    Position.X = 16.000000000000000000
    Position.Y = 88.000000000000000000
    Size.Width = 281.000000000000000000
    Size.Height = 89.000000000000000000
    Size.PlatformDefault = False
  end
end

请注意,所有组件(除了TLabel)的Align属性都设置为Scale

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接