[ID CS4-CS6] Динамически добавить элемент в Window (panel, palette).

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
Можно ли динамически добавить добавить элемент (например textbox, editbox) в Window (panel, palette - не важно) если window уже показан (show())?
 

Eugenyus

Модератор
12 лет на форуме
Сообщения
1 960
Реакции
3 588
Код:
#targetengine "test"

var w = new Window("palette");
var but = w.add("button",undefined,"Добавить поле");
but.onClick = function(){
    var txt = w.add("edittext");
    txt.characters = 20;
    w.layout.layout(true);
    }

w.show();
 
  • Спасибо
Реакции: Haka3aTe/|b

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
Спасибо! работает.
P.S. Не по теме. В вашем замечательном скрипте - "типовые операции" если 2 или 3 монитора и главный по средине - при сдвиге панели влево от главного экрана и получаются отрицательные значения (в данном случае x), то w.location выдает "неправильные" числа (типа 65041) - вероятно связано с неправильной интерпретацией 2байтового числа.
Решил проблемку так:
Код:
try {
    var loc_tion = panMinStat[0].split(",");
    if (loc_tion[0] > 20000) {
        loc_tion[0] = -(65536 - loc_tion[0]);
    }
    w.location = [loc_tion[0], loc_tion[1]];


} catch (e) {
}
 
  • Спасибо
Реакции: Eugenyus

Eugenyus

Модератор
12 лет на форуме
Сообщения
1 960
Реакции
3 588
w.location выдает "неправильные" числа
Да, Вы правы, там есть такая проблема, и проявляется она в том, при запуске скрипта окно его не видно на мониторе, т.е. создаётся ощущение, что он не запущен. Самый простой способ решения — это удалить файл, хранящий настройки (с:\panMinStatus.ini), и запустить его ещё раз.
На другом скрипте (также окно palette) я тоже вычислил эту цифру (в 65 тыщ и сколько-то там ещё) через запись в dump-файл пусков окна с запоминанием координат. И придумал похожее на Ваше условие:
Код:
if ((w_loc[0]<1900)&&(w_loc[1]<900)) w.location = w_loc;
где w_loc — сохранённые координаты предыдущего запуска окна.