Firemonkey TEdit高度

5
我正在使用Delphi Seattle,我的应用程序是为Windows桌面设计的。
我试图改变TEdit的字体大小。因此,高度也被修改了。在设计时一切都很好,但当我运行我的应用程序时,TEdit忽略了高度的修改,导致文本被切断。
我尝试找到“FixedHeight”,如这里所建议的那样,但我找不到这个属性。
是否可以更改TEdit的高度?
3个回答

5
这可以通过覆盖控件的AdjustFixedSize方法来解决。 正如@chrisrolliston所解释的那样,可以通过删除FMX控件的大小限制并在这里进行示例说明。
unit Unit4;
interface
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Edit, MyTEdit;

type
  TForm4 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  end;

var
  Form4: TForm4;

implementation

{$R *.fmx}

procedure TForm4.FormCreate(Sender: TObject);
begin
  Edit1.Height := 60;
end;

end.

unit MyTEdit;
interface
uses
  FMX.Edit, FMX.Controls;

type
  TEdit = class(FMX.Edit.TEdit)
  protected
    procedure AdjustFixedSize(const Ref: TControl); override;
  end;

implementation
uses
  FMX.Types;

procedure TEdit.AdjustFixedSize(const Ref: TControl);
begin
  SetAdjustType(TAdjustType.None);
end;

end.

2

如果您正在使用StyleBook中的样式:

  1. 首先在EditBox中检查样式名称-在对象检查器中查看TEdit的StyleLookup。如果为空,那意味着默认的editstyle适用于Editbox。您应该在样式中搜索此名称。
  2. 打开当前样式,选择您的平台,在样式列表中找到editstyle
  3. FixedHeight更改为0。您还可以设置Align = None以重置对齐高度。

1

如果您不想子类化并创建自己的Edit,另一种处理方式是使用欺骗性转换来执行此操作。这样可以让您访问Edit的受保护方法(SetAdjustType)。以下示例假定您有一个名为wwedit3的Edit。

type
  THackStyledControl = class(TStyledControl);

procedure TValidationDemoForm.FormCreate(Sender: TObject);
begin
  wwedit3.ApplyStyleLookup; // Necessary or AdjustType gets overwritten
  THackStyledControl(wwedit3)  // Removes fixed height
        .SetAdjustType(TAdjustType.None);
  wwedit3.height:= 60; // Reset the height to desired value
end;

这样做是可行的,但如果你在硬编码大小,则需要像上面的代码一样显式重置高度属性。如果你使用对齐属性来定位编辑控件,则不需要设置wwedit3.height为60的额外行。

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