Снегопат
https://snegopat.ru/forum/

Как работать с содержимым окна сообщений
https://snegopat.ru/forum/viewtopic.php?f=3&t=241
Страница 1 из 1

Автор:  vsuh [ 20 авг 2012, 09:13 ]
Заголовок сообщения:  Как работать с содержимым окна сообщений

Скрипт formAutoVersion.js при каждом запуске выводит полный путь к сохраняемому файлу в окно сообщений. Очень раздражает выскакивание окна сообщений при сохранении. Где это делается в тексте аддина я не нашел.
Добавил такой кусок в аддин:
Код:
    if(cmd.isBefore)    // Обработчик вызван перед выполнением команды
    {
.........
    } else {
      if(stdcommands.Frntend.CloseMessageWindow.getState().enabled)
      {
         stdcommands.Frntend.CloseMessageWindow.send()
      }
   }


Но, при сохранении, в результате проверки синтаксиса в окно сообщений могут быть выведены ошибки, тогда окно закрывать не следует.
Нужно сделать, чтоб окно сообщений закрывалось только в том случае, если там содержится одна или 0 строк.
Как это сделать?

Автор:  sosnae [ 20 авг 2012, 11:11 ]
Заголовок сообщения:  Re: Как работать с содержимым окна сообщений

Этот вариант не подойдет? Заголовок сообщения: Re: Не появился ли еще доступ к синтаксическому контролю?

Автор:  vsuh [ 21 авг 2012, 08:22 ]
Заголовок сообщения:  Re: Как работать с содержимым окна сообщений

sosnae писал(а):

Я там не понимаю откуда в переменную msgWnd попадает объект окна сообщений:
Код:
...
   if(msgWnd)
   {
      msgText = msgWnd.text
      MessageBox(msgText)
   } 
...

Автор:  kuntashov [ 21 авг 2012, 08:46 ]
Заголовок сообщения:  Re: Как работать с содержимым окна сообщений

vsuh писал(а):
sosnae писал(а):

Я там не понимаю откуда в переменную msgWnd попадает объект окна сообщений:
Код:
...
   if(msgWnd)
   {
      msgText = msgWnd.text
      MessageBox(msgText)
   } 
...


Объект msgWnd запоминается в событии createTextWindow(), которое возникает каждый раз при создании текстового окна (к которым в том числе относится и окно сообщений):

Код:
var msgWnd = null
function createTextWindow(textWnd){msgWnd = textWnd}


Кстати, там в комментарии к макросу же все написано:
Код:
   // Будем отлавливать создание текстового окна
   events.connect(Designer, "createTextWindow", SelfScript.Self);

Автор:  vsuh [ 21 авг 2012, 11:25 ]
Заголовок сообщения:  Re: Как работать с содержимым окна сообщений

Кто жеж знал-то...
kuntashov писал(а):
vsuh писал(а):

Объект msgWnd запоминается в событии createTextWindow(), которое возникает каждый раз при создании текстового окна (к которым в том числе относится и окно сообщений):

Код:
var = null
function createTextWindow(textWnd){msgWnd = textWnd}


Кстати, там в комментарии к макросу же все написано:
Код:
   // Будем отлавливать создание текстового окна
   events.connect(Designer, "createTextWindow", SelfScript.Self);

Отлично! Спасибо.
Теперь все получится.
///////////////
Фига!
msgWnd всю дорогу равен null. Может потому что я подписываюсь на другое событие - "onFileSave" а не "createTextWindow"?
а внутри обработчика события можно подписаться на обработчик события createTextWindow?
///////////////
а в какой момент в обработчике события onFileSave создается окно сообщений, чтоб можно было подписаться на событие createTextWindow?


Код:
function onFileSave(cmd)
{
...
    if(cmd.isBefore)    // Обработчик вызван перед выполнением команды
    {
...
      } else {
...
}
stdcommands.Frame.FileSave.addHandler(SelfScript.self, "onFileSave")

ни в первом ни во втором условии я событие создания окна не отловил...
может быть нужно использовать подписку на событие !isBefore onSyntaxCheck?

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/