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

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

Larvatus

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

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
надо LayoutManager по-моему вызвать после скрытия, типа window.layout.layout(1), как-то так

если не поможет, покопаюсь еще
 
  • Спасибо
Реакции: Larvatus

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
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

Larvatus

Участник
Топикстартер
Сообщения
199
Реакции
6
Спасибо, сейчас посмотрю!
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
так я ж написал все. вместо window подставить свое окно

но скорее всего оно ничего не даст, координаты при создании выбираются по-моему.
 
  • Спасибо
Реакции: Larvatus

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
@Larvatus, покажите скрин Вашего интерфейса, там могут быть разные варианты решения, например задать параметр window.orientation = "stack", или менять размеры группы "в ноль" и потом обратно (для этого надо запоминать исходные размеры) и т.п.
 
  • Спасибо
Реакции: Larvatus

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
Код:
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

Larvatus

Участник
Топикстартер
Сообщения
199
Реакции
6
Изменять размер группы получилось, но пришлось еще и координаты перебивать
PHP:
var hideG = function(item) {
    item.size = [0,0];
    }

var showG = function(item) {
    item.size = [300,22];
    item.location = [128,1];
    }
 

Larvatus

Участник
Топикстартер
Сообщения
199
Реакции
6
В общем, спасибо всем за помощь!
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
небольшой hint - координаты лучше не хардкодить, а сохранить текущие перед скрытием.
 
  • Спасибо
Реакции: dumbm1 и Larvatus
Статус
Закрыто для дальнейших ответов.