[AI CC-CC2022] Как скрыть элемент интерфейса скрипта, чтобы он не занимал места?

Статус
Закрыто для дальнейших ответов.

Larvatus

Участник
Топикстартер
Сообщения
199
Реакции
6
Скрываю группу элементов, чтобы вместо нее отобразить другую
Код:
group1.hide();
group2.show();
группа скрывается, но ее место остается за ней. Может это нормально и я просто жду результата, как в html, когда див скрывается и освобождает свое место следующему.
Может его нужно удалять и создавать каждый раз заново?
 
надо LayoutManager по-моему вызвать после скрытия, типа window.layout.layout(1), как-то так

если не поможет, покопаюсь еще
 
  • Спасибо
Реакции: Larvatus
LayoutManager.layout ()
ScriptUI Classes
Invokes the automatic layout behavior for the managed container.
Adjusts sizes and positions of the child elements of this window or container according to the placement and alignment property values in the parent and children. Invoked automatically the first time the window is displayed. Thereafter, the script must invoke it explicitly to change the layout in case of changes in the size or position of the parent or children.


вообще, насколько я помню, я специально задавал координаты этим сменяющимся группам, чтоб они стояли на одном месте - тогда их просто переключаешь видимость
 
  • Спасибо
Реакции: Larvatus
Спасибо, сейчас посмотрю!
 
так я ж написал все. вместо window подставить свое окно

но скорее всего оно ничего не даст, координаты при создании выбираются по-моему.
 
  • Спасибо
Реакции: Larvatus
@Larvatus, покажите скрин Вашего интерфейса, там могут быть разные варианты решения, например задать параметр window.orientation = "stack", или менять размеры группы "в ноль" и потом обратно (для этого надо запоминать исходные размеры) и т.п.
 
  • Спасибо
Реакции: Larvatus
Код:
var w = new Window('palette')
var p = w. add('panel')
var b = w.add('button');
p.size = [120, 40]
b.text = 'Click'
b.onClick = function () {
    if (p.size.height == 0) {
        show(p);
    } else {
        hide(p);
    }
}
w.show()

function hide (item) {
    var dheigth = item.dheigth = item.size.height;
    item.size.height = 0;
    item.layout.resize();
    while (item.parent) {
        item = item.parent;
        item.size.height = item.size.height - dheigth;
        item.layout.resize();
    }
}

function show (item) {
    var dheigth = item.size.height = item.dheigth;
    item.layout.resize();
    while (item.parent) {
        item = item.parent;
        item.size.height = item.size.height + dheigth;
        item.layout.resize();
    }
}
 
  • Спасибо
Реакции: Larvatus и dumbm1
Изменять размер группы получилось, но пришлось еще и координаты перебивать
PHP:
var hideG = function(item) {
    item.size = [0,0];
    }

var showG = function(item) {
    item.size = [300,22];
    item.location = [128,1];
    }
 
В общем, спасибо всем за помощь!
 
небольшой hint - координаты лучше не хардкодить, а сохранить текущие перед скрытием.
 
  • Спасибо
Реакции: dumbm1 и Larvatus
Статус
Закрыто для дальнейших ответов.