gpt4 book ai didi

delphi - 如何在Delphi FireMonkey中调整按钮大小以适合文本?

转载 作者:行者123 更新时间:2023-12-03 14:47:36 26 4
gpt4 key购买 nike

我希望按钮尺寸(宽度和高度)尽可能小,但我希望它适合文本。有代码示例吗?Delphi XE4 FireMonkey 移动应用程序。

最佳答案

FireMonkey 通过使用 TTextLayout 的方法呈现文本类(class)。
我们可以通过类助手访问此方法,然后根据布局提供的信息更改按钮大小。

uses FMX.TextLayout;

type
TextHelper = class helper for TText
function getLayout : TTextLayout;
end;

function TextHelper.getLayout;
begin
result := Self.fLayout;
end;

procedure ButtonAutoSize(Button : TButton);
var
bCaption : TText;
m : TBounds;
begin
bCaption := TText(Button.FindStyleResource('text',false));
bCaption.HorzTextAlign := TTextAlign.taLeading;
bCaption.VertTextAlign := TTextAlign.taLeading;
m := bCaption.Margins;
Button.Width := bCaption.getLayout.Width + m.Left + m.Right;
Button.Height := bCaption.getLayout.Height + m.Top + m.Bottom;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ButtonAutoSize(Sender as TButton);
end;
<小时/>

更新

这是一个更面向 future 的解决方案,不需要公开私有(private)类字段。

uses FMX.Objects;

procedure ButtonAutoSizeEx(Button: TButton);
var
Bitmap: TBitmap;
Margins: TBounds;
Width, Height: Single;
begin
Bitmap := TBitmap.Create;
Bitmap.Canvas.Font.Assign(Button.TextSettings.Font);
Width := Bitmap.Canvas.TextWidth(Button.Text);
Height := Bitmap.Canvas.TextHeight(Button.Text);
Margins := (Button.FindStyleResource('text', false) as TText).Margins;
Button.TextSettings.HorzAlign := TTextAlign.Leading;
Button.Width := Width + Margins.Left + Margins.Right;
Button.Height := Height + Margins.Top + Margins.Bottom;
end;

此示例省略了任何自动换行或字符修剪。

关于delphi - 如何在Delphi FireMonkey中调整按钮大小以适合文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18430290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com