Delphi。火猴。列表框。滚动条可见吗?

Delphi. Firemonkey. TListbox. Is scrollbar visible?

我想根据 ListBox 项目数调整表单高度 - 在滚动条可见时增加高度。 如何知道滚动条在 TListbox 中是否可见? 因此,有大量关于 VCL(基于 Handle)的信息,但没有关于 FMX 的信息。 惰性方法:

ListBox1.Items.Count * Round(ListBox1.ItemByIndex(0).Height)

此方法无法正常工作,因为不同机器上的表单边框和标题可能不同。

要调整表单的高度或宽度以容纳某些内容,您应该使用表单的 ClientWidthClientHeight 属性,而不是 WidthHeight

ClientWidthClientHeight 保存没有边框、标题和菜单区域的表单尺寸。

如果父控件的客户端宽度与其宽度相同,则垂直滚动条不可见。您可以通过检查样式来确定滚动条的大小。例如:

if (VertScrollBox1.ClientWidth = VertScrollBox1.Width) then
  VerticalScrollBarVisible := False;
  VerticalScrollBarWidth := 0;
else
begin
  VerticalScrollBarVisible := True;  
  VerticalScrollBarWidth := VertScrollBox1.StylesData['vscrollbar.width'].AsExtended;
end;