文本水平对齐在运行时创建的标签上不起作用

发布于 2025-01-18 05:50:02 字数 605 浏览 0 评论 0原文

在 Android 应用程序中,我尝试在运行时将标签创建为矩形,并且除了文本的水平对齐之外,所有属性都工作正常。我的代码有问题吗?

procedure TForm7.Button1Click(Sender: TObject);
var
  lb : TLabel;
begin
  lb := TLabel.Create(Rectangle1);
  lb.Parent := Rectangle1;
  lb.Align := TAlignLayout.Center;
  lb.TextSettings.HorzAlign := TTextAlign.Leading;
  lb.Width := 300;
  lb.TextSettings.Font.Size := 12;
  lb.StyledSettings:=[TStyledSetting.Family,TStyledSetting.Style,
    TStyledSetting.FontColor,TStyledSetting.Size,TStyledSetting.Other];
  lb.Margins.Bottom := 100;
  lb.Text := 'Programming Language is Delphi 10.4 31/3/2022';
end;

In an Android app, I'm trying to create a Label at runtime into a rectangle, and all of the properties works fine except for the Horizontal Align of the text. Is something wrong with my code?

procedure TForm7.Button1Click(Sender: TObject);
var
  lb : TLabel;
begin
  lb := TLabel.Create(Rectangle1);
  lb.Parent := Rectangle1;
  lb.Align := TAlignLayout.Center;
  lb.TextSettings.HorzAlign := TTextAlign.Leading;
  lb.Width := 300;
  lb.TextSettings.Font.Size := 12;
  lb.StyledSettings:=[TStyledSetting.Family,TStyledSetting.Style,
    TStyledSetting.FontColor,TStyledSetting.Size,TStyledSetting.Other];
  lb.Margins.Bottom := 100;
  lb.Text := 'Programming Language is Delphi 10.4 31/3/2022';
end;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冬天旳寂寞 2025-01-25 05:50:02

您需要阅读 FMX.Graphics.ITextSettings。您会发现TStyledSettingsTTextSettings 之间存在重要关系。

在您的问题中,您担心水平对齐不遵循您的设置:

lb.TextSettings.HorzAlign := TTextAlign.Leading;

这是因为您通过在 lb.StyledSettings 中包含 TStyledSetting.Other 来否决它。

lb.StyledSettings 中删除 TStyledSetting.Other,您将看到 HorzAlignVertAlignTrimmingWordWrap 将遵循您自己的设置。

You need to read up on FMX.Graphics.ITextSettings. You will find that there is an important relation between TStyledSettings and TTextSettings.

In your question you are concerned with horizontal alignment not following your setting:

lb.TextSettings.HorzAlign := TTextAlign.Leading;

That is because you have overruled it by including TStyledSetting.Other in lb.StyledSettings.

Remove that TStyledSetting.Other from lb.StyledSettings and you will see that HorzAlign, VertAlign, Trimming and WordWrap will follow your own settings.

顾铮苏瑾 2025-01-25 05:50:02

我希望这可以帮助你。 TLabel的属性Alignment需要配置为taCenter。但仅仅这样还不够。除此之外,您还需要将属性 AutoSize 配置为 false。那么,一切都会好起来的。

lb.Alignment := taCenter;
lb.AutoSize := false;

属性Align不是对齐标签内的文本,而是对齐表单内的标签组件。 Alignment 是对齐标签内文本的正确属性。是的,我知道,他们可以更清楚地提出这些属性名称。

I hope this could help you. The property Alignment of TLabel need to be configured to taCenter. But just it isn't enough. Beyond that, you need to configure property AutoSize to false. Then, everything will be OK.

lb.Alignment := taCenter;
lb.AutoSize := false;

The property Align isn't to align text inside label, but label component inside form. The Alignment is the correct property to align text inside label. Yes, I know, they could be clearer in coming up with these property names.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文