Как определить высоту фрейма, котороую он занимает в окне

Как определить высоту фрейма, котороую он занимает в окне в видимом режиме?
Мне нужна эта высота, чтобы скрывать/показывать фреймы в окне редактирования в зависимости от типа записи.
Возможно есть какой-то динамический параметр, который во время выполнения скрипта хранит высоту отображаемого фрейма?

Нравится

13 комментариев

насколько я понимаю, за это отвечает атрибут Size
только вот если у фрейма стоит выравнивание Client то Size имеет значение 0 независимо от размера фрейма.
Могу предложить для решения задачи просто пользоваться IsVisible

ООО "Лайнсервис"
www.ls-crm.ru

для Вашей задачи лучше подойдет скрывать фреймы
фрейм.IsVisible = false;

"Денис М" написал:для Вашей задачи лучше подойдет скрывать фреймы

Окно я так понимаю тоже поджимать хочется.

См. wnd_SurveyQuestionEditScript, там делется нечто похожее.

"Александр Кудряшов" написал:насколько я понимаю, за это отвечает атрибут Size

Параметр Size есть только у фрейма (Frame), в у группы фреймов (FrameGroup) такого параметра нету.

так вопрос про фреймы и был))
FrameGroup скрывайте с помощью IsVisible

ООО "Лайнсервис"
www.ls-crm.ru

"Underscore a.k.a. _" написал:Окно я так понимаю тоже поджимать хочется.

См. wnd_SurveyQuestionEditScript, там делется нечто похожее.


Посмотрел, там нету примера работы с фреймами в окне, а точнее определения их высоты. Как делать видимым или невидимым фрейм я знаю. Вопрос как изменить высоту окна на значение высоты фрейма с контролами.

Нашел. Чтобы получить высоту элемента в фрейме можно использовать следующую функцию:

FrameName.GetItemHeight(ItemName)

где ItemName может быть названием элемента FrameGroup.

Например, у меня есть фрэйм Frame и в нем расположена фреймгрупа fgSalary. Тогда для получения высоты fgSalary необходимо использовать след. код:
Frame.GetItemHeight(gfSalary)

Пример нашел в Planning\General\Utils\wnd_PlanningFixedEditScript в функции UpdateWindow

Теперь вопрос: как получить обьект фрейма в котором находиться заданный фреймгруп?

Может ParentComponent

Да, только там нюанс есть, когда фрейм груп входит в фреймгруп, а не в фрейм. Я думаю в цикле буду подниматься вверх, пока не найду компонент c TypeCode = 'Frame'. И дальше уже использовать функцию GetItemHeight.

Вариант. Я думал там заранее известный FG.

"Underscore a.k.a. _" написал:Вариант. Я думал там заранее известный FG.

Ну в частном случае известный, просто я хочу использовать эту функцию как универсальную.

:twisted:
Ато довольно часто встречаемый подход "и так сойдет" достал уже.

Показать все комментарии