Не получается внести изменения в настройки из event функции диалогового окна

  • Автор темы Автор темы Cornet
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Cornet

Участник
Топикстартер
Сообщения
25
Реакции
2
Код:
with (myDialog = new Window ('dialog', 'Print', undefined)) {
    eText2 = add('edittext')
    eText2.size = [207, 21]
    eText2.onChange = function(){
        app.activeDocument.printPreferences.pageRange = eText2.text}
    with (gGroup10 = add ('group')){
        size = [400, 29]
        btButton1 = add('button', undefined, 'Standart Print &Window', {alignment:['left', 'center']})
        btButton1.onClick = function () {close(0)}
        btButton2 = add('button', undefined, 'Print', {name: "ok"})
        btButton2.alignment = ['right', 'center']
        btButton3 = add('button', undefined, 'Cancel', {name: "cancel"})
    }
}
myDialog.show();
Не срабатывает app.activeDocument.printPreferences.pageRange = eText2.text
Даже если присваивать просто строковые данные.
Причем функция после нее прерывается и не выдается ни каких ошибок.
Нужно мне было для того, чтобы устроить проверку правильности набранной области печати,
примерно так:
Код:
try{app.activeDocument.printPreferences.pageRange = eText2.text}
catch (myError){alert("не найдены заданные номера страниц")}
Я конечно уже начал писать свою функцию проверки, но боюсь что-нибудь упустить.
У кого ни будь есть идеи как устроить проверку выстроенными функциями индизайна?
 
Код:
#targetengine "test"

with (myDialog = new Window ('palette', 'Print', undefined)) {
    eText2 = add('edittext')
    eText2.size = [207, 21]
    eText2.onChange = function(){
        app.activeDocument.printPreferences.pageRange = eText2.text}
    with (gGroup10 = add ('group')){
        size = [400, 29]
        btButton1 = add('button', undefined, 'Standart Print &Window', {alignment:['left', 'center']})
        btButton1.onClick = function () {close(0)}
        btButton2 = add('button', undefined, 'Print', {name: "ok"})
        btButton2.alignment = ['right', 'center']
        btButton3 = add('button', undefined, 'Cancel', {name: "cancel"})
    }
}
myDialog.show();

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

Код:
var printOptions = {};
printOptions.pageRange = '1';

with (myDialog = new Window ('dialog', 'Print', undefined)) {
    eText2 = add('edittext')
    eText2.size = [207, 21]
    eText2.onChange = function(){
        printOptions.pageRange = eText2.text}
    with (gGroup10 = add ('group')){
        size = [400, 29]
        btButton1 = add('button', undefined, 'Standart Print &Window', {alignment:['left', 'center']})
        btButton1.onClick = function () {close(0)}
        btButton2 = add('button', undefined, 'Print', {name: "ok"})
        btButton2.alignment = ['right', 'center']
        btButton3 = add('button', undefined, 'Cancel', {name: "cancel"})
    }
}
myDialog.show();

app.activeDocument.printPreferences.pageRange = printOptions.pageRange;
 
Олег, вы не очень поняли зачем мне это. При внесении не подходящих данных в настройки печати индизайн выдает ошибку, я хотел использовать это для проверки внесенных данных прямо в диалоговом окне, что-бы вывести пользователю сообщение до нажатия на кнопку ОК.
 
Собственно написал проверку (может кому пригодится), если у кого будут замечания или предложения — милости прошу.
Код:
Range = "5-6, 8, 10,"
Range = "Print:1-2, Export:3"

alert(RangeIsValid(Range))

function RangeIsValid(Range) {
    Range = Range.replace(/ /g, "")
    if (Range.match(".+,$"))  {Range = Range.substring(0,Range.length-1)}
    if (app.activeDocument.sections.count() == 1) { //Проверка на  alternateLayout
        if (Range.replace(/[,\d\-]+/, "") == "") { //Проверка на недопустимые символы
            aRange = Range.split(",")
            pagesFromRange = new Array();
            for (i = 0; i < aRange.length; i++) {//Переводим промежутки в отдельные страницы
                if (aRange[i].match ("-")) {//Проверка на промежуток
                    aRangeT = aRange[i].split("-")
                    for (j = aRangeT[0]; j < parseInt(aRangeT[1])+1; j++) {pagesFromRange.push(j)}
                } else {pagesFromRange.push(aRange[i])}
            }
            startPageNumber = parseInt(app.activeDocument.pages.firstItem().name)
            endPageNumber  = startPageNumber + app.activeDocument.pages.count() - 1
            inRange = true
            for (i = 0; i < pagesFromRange.length; i++) {if (inRange && (pagesFromRange[i] < startPageNumber || pagesFromRange[i] > endPageNumber)) {inRange = false}} //проверяем есть ли все страницы в докумете
        } else {inRange = false}
    } else {
        inRange = true
        aRange = Range.split(",")
        for (j = 0; j < aRange.length; j++) {
            if (aRange[j].match(/:/)) {//Проверяем есть ли какое ни будь имя лайаута
                existingiLayout = null
                for (i = 0; i < app.activeDocument.sections.count(); i++) {if (aRange[j].match(/.+(?=:)/) == app.activeDocument.sections[i].alternateLayout) {existingiLayout = app.activeDocument.sections[i]}}
                if (existingiLayout) {//если есть такое имя лайаута в документе
                    pagesFromRange = new Array()
                    aRangeT = new Array()
                    subRange = aRange[j].replace(existingiLayout.alternateLayout+":", "")
                    if (subRange.replace(/[\d\-]+/, "") == "") { //Проверка на недопустимые символы
                        if (subRange.match ("-")) {//Проверка на промежуток
                            aRangeT = subRange.split("-")
                            for (i = aRangeT[0]; i < parseInt(aRangeT[1])+1; i++) {pagesFromRange.push(i)}
                        } else {pagesFromRange.push(subRange)}
                        startPageNumber = parseInt(existingiLayout.pageStart.name)
                        endPageNumber  = startPageNumber + existingiLayout.length - 1
                        for (i = 0; i < pagesFromRange.length; i++) {if (inRange && (pagesFromRange[i] < startPageNumber || pagesFromRange[i] > endPageNumber)) {inRange = false}}
                    } else {inRange = false} //если есть недопустимые символы
                } else {inRange = false} //если неправильное имя лайаута
            } else {inRange = false} //если вообще нет имени лайаута
            if (!inRange) {break} //если встретилась хоть одна ошибка выходим из цикла
        }
    }
    return inRange
}
 
Статус
Закрыто для дальнейших ответов.