2015-05-19 3 views
1

Я хочу изменить размер моей формы по количеству элементов списка ListBox - увеличить высоту, пока отображается полоса прокрутки. Как узнать, видима ли полоса прокрутки или нет в TListbox? Итак, есть тонны информации для VCL (на основе Handle), но не для FMX. Ленивый метод:Delphi. FireMonkey. TListBox. Видимо полоса прокрутки?

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

Этот метод не работает должным образом, потому что форма границы и подпись могут быть разными на разных машинах.

ответ

1

Чтобы отрегулировать высоту или ширину формы в вмещать некоторый контент, вы должны использовать ClientWidth и ClientHeight свойства формы, скорее, Width и Height

ClientWidth и ClientHeight удержание измерения формы без границ, заголовка и области меню.

+0

Что это связано с выяснением наличия видимой полосы прокрутки FMX TListBox? –

+0

Да, конечно. Я забыл об этих свойствах - пойдет не так. Благодаря! Это решает мою проблему, но не отвечайте на вопрос - как узнать, является ли полоса прокрутки видимой или нет. –

+0

@KenWhite, потому что OP упоминает, что его метод вычисления высоты не работает из-за границы формы и надписи. –

0

Если ширина клиента родительского элемента совпадает с шириной, то вертикальная полоса прокрутки не видна. Вы можете определить размер полосы прокрутки, исследуя стиль. Например:

if (VertScrollBox1.ClientWidth = VertScrollBox1.Width) then 
    VerticalScrollBarVisible := False; 
    VerticalScrollBarWidth := 0; 
else 
begin 
    VerticalScrollBarVisible := True; 
    VerticalScrollBarWidth := VertScrollBox1.StylesData['vscrollbar.width'].AsExtended; 
end; 
Смежные вопросы