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

EdijsKolesnikovičs

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

彼得

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

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;

更新资料

这是一个面向未来的解决方案,不需要公开私有类字段。

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;

本示例省略了所有自动换行或字符修剪。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在按钮上显示动态文本并在Android中自动调整其大小?

来自分类Dev

如何在C#中调整按钮上图片的大小?

来自分类Dev

如何使textarea自动水平调整大小以适合输入的文本?

来自分类Dev

在Firemonkey中实施按钮单击

来自分类Dev

如何在WPF中调整窗口大小时缩放按钮

来自分类Dev

动态调整容器大小以适合文本

来自分类Dev

如何使用Firemonkey根据TButton.Text中可见的文本调整字体大小?

来自分类Dev

调整图标大小以适合Java中的JButton?

来自分类Dev

在UIPickerView中调整UILabel的大小以适合

来自分类Dev

UITableViewCell调整大小以适合详细文本

来自分类Dev

在Swift中调整文本大小以适合标签

来自分类Dev

如何调整文本(字体)的大小以适合UISegmentedControl的UISegment?

来自分类Dev

如何使UILabel调整大小以适合文本

来自分类Dev

如何在Tkinter中调整按钮的大小?

来自分类Dev

如何在Flutter中调整图标/图标按钮的大小?

来自分类Dev

如何在extjs中调整FileField XType的按钮大小?

来自分类Dev

调整MenuItem的大小以适合XAML中的内容

来自分类Dev

调整按钮大小后,按钮文本消失

来自分类Dev

调整文本大小以适合浏览器中的可用空间

来自分类Dev

如何使用Firemonkey根据TButton.Text中可见的文本调整字体大小?

来自分类Dev

UITableViewCell调整大小以适合详细文本

来自分类Dev

如何在Glade中添加按钮并调整大小

来自分类Dev

如何调整Primefaces中的按钮大小?

来自分类Dev

如何在Android的CardView中调整图像大小以适合固定大小?

来自分类Dev

使用按钮高度调整按钮文本大小

来自分类Dev

调整文本框大小以适合文本

来自分类Dev

Delphi - Firemonkey 将文本写入 TRectangle

来自分类Dev

HTML/CSS:如何在调整窗口大小时使图像周围的文本适合?

来自分类Dev

android studio - 如何根据文本调整按钮大小?

Related 相关文章

  1. 1

    如何在按钮上显示动态文本并在Android中自动调整其大小?

  2. 2

    如何在C#中调整按钮上图片的大小?

  3. 3

    如何使textarea自动水平调整大小以适合输入的文本?

  4. 4

    在Firemonkey中实施按钮单击

  5. 5

    如何在WPF中调整窗口大小时缩放按钮

  6. 6

    动态调整容器大小以适合文本

  7. 7

    如何使用Firemonkey根据TButton.Text中可见的文本调整字体大小?

  8. 8

    调整图标大小以适合Java中的JButton?

  9. 9

    在UIPickerView中调整UILabel的大小以适合

  10. 10

    UITableViewCell调整大小以适合详细文本

  11. 11

    在Swift中调整文本大小以适合标签

  12. 12

    如何调整文本(字体)的大小以适合UISegmentedControl的UISegment?

  13. 13

    如何使UILabel调整大小以适合文本

  14. 14

    如何在Tkinter中调整按钮的大小?

  15. 15

    如何在Flutter中调整图标/图标按钮的大小?

  16. 16

    如何在extjs中调整FileField XType的按钮大小?

  17. 17

    调整MenuItem的大小以适合XAML中的内容

  18. 18

    调整按钮大小后,按钮文本消失

  19. 19

    调整文本大小以适合浏览器中的可用空间

  20. 20

    如何使用Firemonkey根据TButton.Text中可见的文本调整字体大小?

  21. 21

    UITableViewCell调整大小以适合详细文本

  22. 22

    如何在Glade中添加按钮并调整大小

  23. 23

    如何调整Primefaces中的按钮大小?

  24. 24

    如何在Android的CardView中调整图像大小以适合固定大小?

  25. 25

    使用按钮高度调整按钮文本大小

  26. 26

    调整文本框大小以适合文本

  27. 27

    Delphi - Firemonkey 将文本写入 TRectangle

  28. 28

    HTML/CSS:如何在调整窗口大小时使图像周围的文本适合?

  29. 29

    android studio - 如何根据文本调整按钮大小?

热门标签

归档