[AI CC-CC2021] Как обратиться к компоненту окна

Creative

Топикстартер
15 лет на форуме
Сообщения
296
Реакции
3
есть глобальная переменная
var SampleWindow

есть процедура
function CreateWindow()
{
SampleWindow = new Window ("dialog","SampleWindow");
var Sample = SampleWindow.add("edittext", undefined,'3000');
SampleWindow.Show();
}

Я правильно понимаю, что я не смогу вызвать вне процедуры CreateWindow()
SampleWindow.Sample.text ?

а придется мне объявлять глобальную переменную Sample и обращаться непосредственно к ней.
Или опять туплю?

=======
ой, перенесите в скриптинг, пожалуйста!!!
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Я вижу у вас очень серьезные пробелы в матчасти
В том виде, что вы написали Sample - локальная переменная процедуры и вне этой процедуры не будет видна вообще.
Напротив, SampleWindow - переменная глобальная и обращаиться к ней можно
Выход - писать вместо
var Sample = ...
надо
SampleWindow.Sample = ...
В этом случае переменную SampleWindow.Sample можно использовать по всему коду
 

Creative

Топикстартер
15 лет на форуме
Сообщения
296
Реакции
3
то есть я его объявляю сразу как чайлда SampleWindow, так? Понятно.

Проблемы в матчасти огромные, пытаюсь их решать, времени не хватает, я как-то внезапно решила, что мне нужны мои собственные скрипты.

А можно я тихонько спрошу, чтобы отдельную тему не создавать: а в ScriptUI действительно нет других способов позиционирования компонентов на форме, кроме orientation? То есть X и Y задать нельзя?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
Непосредственными координатами на форме? ИМХО нет
JavaScript:
function move () {
    var speed = 16
    var xstep = speed * this.xval;
    var ystep = speed * this.yval;
    if ((this.location[0] + xstep) < 0 || (this.location[0] + xstep) > 360) {
        this.xval = -this.xval;
        xstep = speed * this.xval;
    }
    if ((this.location[1] + ystep) < 0 || (this.location[1] + ystep) > 260) {
        this.yval = -this.yval;
        ystep = speed * this.yval;
    }
    $.sleep(speed * 5);
    this.location = [(this.location[0] + xstep), (this.location[1] + ystep)];
}

var win = new Window ('dialog');
win.text = 'Press Button';
var grp = win.add('group{margins:0, orientation: "stack"}');
grp.minimumSize = grp.maximumSize = [400, 300];
var btn = grp.add('button');
btn.minimumSize = btn.maximumSize = [40, 40];
btn.xval = 1;
btn.yval = 1;
btn.addEventListener('mousemove', move);
btn.onClick = function () {alert('Catched!')}
win.show();
 
  • Спасибо
Реакции: _MBK_

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
Проблемы в матчасти огромные, пытаюсь их решать, времени не хватает, я как-то внезапно решила, что мне нужны мои собственные скрипты.
Не начинайте изучение ExtendScript со ScriptUI. Лучше с простых практических задач. И не в Иллюстраторе.
 

Creative

Топикстартер
15 лет на форуме
Сообщения
296
Реакции
3
Есть проблема. Мне ни JavaScript, ни ExtentScript вне Иллюстратора или на крайняк Индизайна в общем-то нафиг не нужны. Сейчас мне нужен скрипт для Иллюстратора. Мой собственный с блэкджеком и настройками. Я его пишу. Но он требует интерфейса, поэтому прошлось столкнуться со ScriptUI.
Если бы его можно было написать на Дельфи - писала бы на Дельфи.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Но он требует интерфейса
А зачем вам такие заморочки, как точное позиционирование контролов? Мне,например, до того момента, как сейчас Олег показал, даже в голову не приходило подобное делать ;)
Если бы его можно было написать на Дельфи - писала бы на Дельфи.
Можно и на Дельфи при желании
 

Creative

Топикстартер
15 лет на форуме
Сообщения
296
Реакции
3
Да мне просто неудобно манипулировать этими row/column. В нормальном UI куда я контрол поставила - там он и будет стоять, и расстояние между ними будут такие, как я захочу.
Я все-таки надеюсь - может, что что-то неправильно поняла и просто не вижу, как это делается на Java?


А как на Дельфи??? расскажите!
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Язык на котором вы сейчас программируете называется javascript
А то сейчас Алексей набижит и будет доказывать что он к Java ни малейшего отношения кроме названия не имеет '))'
 
  • Спасибо
Реакции: Creative

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
  • Спасибо
Реакции: Creative

Creative

Топикстартер
15 лет на форуме
Сообщения
296
Реакции
3
Язык на котором вы сейчас программируете называется javascript
А то сейчас Алексей набижит и будет доказывать что он к Java ни малейшего отношения кроме названия не имеет '))'
Ой, извините.

Интересная идея, потом и Дельфи тоже напишу. А то у меня этот уже наполовину рабочий, жалко как-то.
Ведь если еще серьезнее - мне просто программирование очень нравится, а язык не так уж важен.
 

Skvoznyak

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

Creative

Топикстартер
15 лет на форуме
Сообщения
296
Реакции
3
Нет, может быть действительно просто привыкнуть нужно. Но поначалу как-то дико. И как результат - плодятся вложенные группы и панели.
Но вот расстояние между контролами хотелось бы и поменьше.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
ну это настраивается же ) margins параметр

хотя опять же они не зря такие по умолчанию, всем привычно

вообще вам нужно осилить несколько руководств
1) главу о ScriptUI в JavaScript Tool Guide (в меню Help от ExtendScript Toolkit)
2) посматривать в Object Model Viewer касательно ScriptUI
3) дополнительное руководство ScriptUI for dummies | Peter Kahrel
 
  • Спасибо
Реакции: Creative