GREP на OnClick не работает

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

boriskasmoscow

Топикстартер
15 лет на форуме
Сообщения
343
Реакции
410
При нажатии на кнопку GrepPreferences не задаются, GREP-поиск не срабатывает, alert игнорируется. Где у меня ошибка порылась?
PHP:
var myWin = new Window( "dialog", "Name" );

this.windowRef = myWin;
var bGroup = myWin.add( "group" );
myWin.findButton = bGroup.add( "button", undefined, "Find Anything" );
myWin.findButton.onClick = function() {
	// Ищем что-либо, например точку
	var myFindWhat = "\.";
	app.findGrepPreferences = NothingEnum.nothing;
	app.changeGrepPreferences = NothingEnum.nothing;
	app.findGrepPreferences.findWhat  = myFindWhat ;
	var foundItems =app.activeDocument.findGrep();
	alert("Найдено "+foundItems.length)
	this.window.close( 1 );
}

myWin.canButton = bGroup.add( "button", undefined, "Cancel" );
myWin.canButton.onClick = function() {
this.window.close( 0);
}

myWin.show();
 
Ответ: GREP на OnClick не работает

Потому что диалог модальный.
Если работаешь в CS5, то там вроде как стало возможно работать с документом из-под модального диалога через doScript.
 
Ответ: GREP на OnClick не работает

Если Grep вынести из-под OnClick то всё работает... ((
 
Ответ: GREP на OnClick не работает

Точно помню, что такой же случай здесь уже обсуждали, посмотри через поиск по "doScript".
 
Ответ: GREP на OnClick не работает

LeshikSan, видимо имели в виду следующий принцип?
PHP:
    var myStr ="var myFindWhat = "\.";\r";
    myStr += "app.findGrepPreferences = NothingEnum.nothing;\r";
    myStr += "app.changeGrepPreferences = NothingEnum.nothing;\r";
    myStr += "app.findGrepPreferences.findWhat  = myFindWhat ;\r";
    myStr += "var foundItems =app.activeDocument.findGrep();\r"; 
    myStr += "alert("Найдено "+foundItems.length)";
    app.doScript(myStr, ScriptLanguage.javascript);
За синтаксис не ручаюсь, не проверял, но алгоритм тот или не тот?
 
Ответ: GREP на OnClick не работает

Ну да, только можно проще:
myFunct = function(){ ... };
app.doScript( myFunct );
 
Статус
Закрыто для дальнейших ответов.