Почему неправильно высчитывается TextHeight?

registered
Дата: 19.08.2019 05:37:45
Из Form1 вызывается Form2, в которой Label1.Caption присваивается многострочный текст (Label1 находится внутри Panel с AutoSize=True), далее считается высота Label как TextHeight*кол-во строк (Label1.AutoSize=False).
При вызове из Form1 высота считается неправильно, и Label не помещается в Panel, а при вызове из Form2 - работает нормально. Почему?
alekcvp
Дата: 19.08.2019 11:21:39
registered
Из Form1 вызывается Form2, в которой Label1.Caption присваивается многострочный текст (Label1 находится внутри Panel с AutoSize=True), далее считается высота Label как TextHeight*кол-во строк (Label1.AutoSize=False).
При вызове из Form1 высота считается неправильно, и Label не помещается в Panel, а при вызове из Form2 - работает нормально. Почему?


1. Отключить Panel.AutoSize
2. Выставить нужную высоту Label1
3. Снова включить Panel.AutoSize
registered
Дата: 19.08.2019 12:00:35
Во время создания формы TextHeight возвращает другое значение. В первом случае - 13, во втором - 17. 13 - это у стандартного шрифта - MS Sans Serif, 8. Значит, до появления формы - шрифты не применяются. Делал через создание Bitmap - не работало. С Bitmap + выкл/вкл AutoSize - норм.
Мимопроходящий
Дата: 19.08.2019 12:04:54

19.08.2019 12:00, registered пишет:
> Во время создания формы TextHeight возвращает другое значение.

потому, что канвас нужного тебе контрола ещё не получил заданных свойств этого контрола.
если тебе так сильно жмёт, задай нужные свойства принудительно перед вычислением.

Posted via ActualForum NNTP Server 1.5

registered
Дата: 19.08.2019 12:50:51
если несколько вложенных панелей, то AutoSize=false, AutoSize=true нужно вызывать для всех из них, что не есть гуд.
как-нибудь можно обойтись без этого, и почему не срабатывает?

тут без textheight, а label1.autosize=true.