Вы ж предыдущей строкой возврат этого значения делаете win.close(1);
Век живи, век учись.Window.close (return:Any)
return (optional): Data Type: Any
A number to be returned from the show() method that invoked this window as a modal dialog.
Вы ж предыдущей строкой возврат этого значения делаете win.close(1);
Век живи, век учись.Window.close (return:Any)
return (optional): Data Type: Any
A number to be returned from the show() method that invoked this window as a modal dialog.
var w = new Window ("dialog");
w.alignChildren="left";
var ts = w.add('panel', undefined, '');
ts.cm = ts.add ("radiobutton", undefined, "CM");
ts.yk = ts.add ("radiobutton", undefined, "YK");
ts.cmyk = ts.add ("radiobutton", undefined, "CMYK");
ts.cmyk.value = true;
ts.orientation = "row";
ts.cm.onClick = update;
ts.yk.onClick = update;
ts.cmyk.onClick = update;
var slg = w.add('group', undefined, '');
var cm=slg.add('panel', undefined, 'CM')
var sliderC = cm.add ("slider", undefined, 0, -200, 200);
var sliderM = cm.add ("slider", undefined, 0, -200, 200);
var yk=slg.add('panel', undefined, 'YK')
var sliderY = yk.add ("slider", undefined, 0, -200, 200);
var sliderK = yk.add ("slider", undefined, 0, -200, 200);
w.show ();
function update(){
cm.visible=false;
yk.visible=false;
if (ts.cmyk.value || ts.cm.value) cm.visible = true;
if (ts.cmyk.value || ts.yk.value) yk.visible = true;
if (ts.yk.value || ts.cm.value) slg.orientation="stack" else slg.orientation="row";
w.layout.layout(true);
}
Вы, все таки, покурите основные принципы программирования на яваскрипте.
Ну сходу вот первое что нагуглилосьА порекомендуйте нормальный учебник?
А может есть решение проще? к примеру сделать две панели рядом, одну CM, другую YK и играться их свойством Visible.
var w = new Window ("dialog");
w.alignChildren="left";
var ts = w.add('panel', undefined, '');
ts.cm = ts.add ("radiobutton", undefined, "CM");
ts.yk = ts.add ("radiobutton", undefined, "YK");
ts.cmyk = ts.add ("radiobutton", undefined, "CMYK");
ts.cmyk.value = true;
ts.orientation = "row";
ts.cm.onClick = update;
ts.yk.onClick = update;
ts.cmyk.onClick = update;
var slg = w.add('group', undefined, '');
var cm=slg.add('panel', [0,0,300,300], 'CM') // PANEL 1 // ЗАМЕНЯЕМ undefined на координаты
var ys1 = 5;
var ys2 = 30;
Label_neg200 = cm.add("statictext", [20, ys1, 45, ys2], "-200");
Label_0 = cm.add("statictext", [122, ys1, 170, ys2], "0");
Label_200 = cm.add("statictext", [210, ys1, 250, ys2], "200");
var xxx = 20;
var yyy = 10;
var xx2 = 230;
var yy2 = 45;
var dfg = 8;
Label_CC = cm.add("edittext", [xxx+220, 19+dfg, 280, 38+dfg], "100");
Label_CM = cm.add("edittext", [xxx+220, 19+dfg+20, 280, 38+dfg+20], "0");
Label_CY = cm.add("edittext", [xxx+220, 19+dfg+40, 280, 38+dfg+40], "0");
Label_CK = cm.add("edittext", [xxx+220, 19+dfg+60, 280, 38+dfg+60], "0");
var slideCC = cm.add("slider", [xxx, 25, xx2, 50], 0, -200, 200); slideCC.value = 100;
var slideCM = cm.add("slider", [xxx, 45, xx2, 70], 0, -200, 200); slideCM.value = 0;
var slideCY = cm.add("slider", [xxx, 65, xx2, 90], 0, -200, 200); slideCY.value = 0;
var slideCK = cm.add("slider", [xxx, 85, xx2, 110], 0, -200, 200); slideCK.value = 0;
var yk=slg.add('panel', undefined, 'YK') // PANEL 2
var sliderY = yk.add ("slider", undefined, 0, -200, 200);
var sliderK = yk.add ("slider", undefined, 0, -200, 200);
var sliderK = yk.add ("slider", undefined, 0, -200, 200);
var sliderK = yk.add ("slider", undefined, 0, -200, 200);
w.show ();
function update(){
cm.visible=false;
yk.visible=false;
if (ts.cmyk.value || ts.cm.value) cm.visible = true;
if (ts.cmyk.value || ts.yk.value) yk.visible = true;
if (ts.yk.value || ts.cm.value) slg.orientation="stack" else slg.orientation="row";
w.layout.layout(true);
}
Тут два варианта, либо не использовать координаты, либо их пересчитывать при переключении.проблема в том, что интерфейс я строил по координатам и вся разметка рассыпается: как сохранить разметку?
книжка всегда под рукой. Попробую пересчитывать координаты. Спасибо.Тут два варианта, либо не использовать координаты, либо их пересчитывать при переключении.
Я же давал ссылку на хорошую книжку https://adobeindd.com/view/publicat...on-web-resources/pdf/scriptui-2-13-f-2017.pdf
Там есть очень много ответов, если правильно задавать вопросы.
курить alignment, alignChildren, size.width, preferred/Max/Min-Size ну и может что-то еще.
Ну это самый сексуальный способ, хотя иногда и быстрый. Если будет время попробую накидать альтернативный вариант.Попробую пересчитывать координаты.
жалко выбрасывать свою разметку. Сначала остановился на варианте с переходом в один конец win 1 > win 2. Этого было бы достаточно. Когда стал собирать, решил завернуть блоки интерфейса в функции, тут же полезли ошибки - переменные перестали видеться из функций. Сделаю проще - 2 скрипта - 2 интерфейса.Времени что-то не предвидится в ближайшее время, так что опишу словами.
Чтобы не привязываться к координатам нужно использовать несколько вложенных панелей.
- Основная часть
-- Панель CM
--- Панель C
---- Панель слайдеров C
---- Панель текстовых блоков
---- Панель кнопок сброса
--- Панель M
---- Панель слайдеров M
---- Панель текстовых блоков
---- Панель кнопок сброса
так можно определять ширину на уровне группы, а элементы в нее впишутся. Желательно никаких жестких координат, только задавать ширину.