• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Notesuiworkspace Frameset и Currentview

  • Автор темы Автор темы Event01
  • Дата начала Дата начала
E

Event01

Здравствуйте, такой вопрос. Можно ли переопределить стандартный дефолтный фреймсет, чтобы свойство CurrentView объекта NotesUIWorkspace возвращало текущее представление в моем фреймсете (не используя OpenView объекта NotesUIDatabase)
И еще один вопрос: почему не работает database script из database resources (на событие открытия БД и закрытия не производит соотвествующих действий)? :) :angry:
 
<...>
И еще один вопрос: почему не работает database script из database resources (на событие открытия БД и закрытия не производит соотвествующих действий)?
Иногда и работает - смотря как БД открывается.
Скорее всего, связано с особенностью определения notesUIWorkspace.CurrentDatabase. Не отработает, например, когда пользователь открывает БД из рабочей области через переход к представлению по View - GoTo.
 
почему не работает database script из database resources (на событие открытия БД и закрытия не производит соотвествующих действий)?
работает
либо у тебя там какие-то глюки, либо после того как написал код, закрой базу и в нотесе и в дизайнере (а лучше лотус перегрузи), потом проверь...
если не будет работать, нужно попробовать очистить кеш. либо убить базу cache.ndk, либо найти в ней нужные доки и убить...

через переход к представлению по View - GoTo
так не будет, да :)
 
Ещё DatabaseScript не отрабатывает, если, например, пустануть агента из базы (из меню Actions), который открывает документ из этой же базы.
 
Ещё DatabaseScript не отрабатывает, если, например, пустануть агента из базы (из меню Actions), который открывает документ из этой же базы.

А также DatabaseScript не отрабатывает при открытии документа по доклинку.
 
)) интересно, а он отрабатывает когда-нить, кроме случаев открытия БД на УИ через File/Database/Open (или аналогичного способа)?
 
Работает, например, еще при открытии БД или представления по notesurl
(вида Notes:///ReplicaID или Notes:///ReplicaID/View).
А вот для notesurl документа не работает :)
И где здесь логика? :angry:
 
у меня получается, что при внесении любых изменений в дизайнере, он перестает отрабатывать без перезапуска самого дизайнера. в остальном вроде нормально теперь работает. Спасибо за ответы. Теперь меня интересует только первый вопрос.
 
у меня получается, что при внесении любых изменений в дизайнере, он перестает отрабатывать без перезапуска самого дизайнера. в остальном вроде нормально теперь работает. Спасибо за ответы. Теперь меня интересует только первый вопрос.

В принципе, св-во NotesUiWorkspace.CurrentView возвращает текущий вид в независимости от того, отображён ли он через дефолтный фрейм-сет, или системный, или кастомный. Текущий вид - это вид в активном фрэйме. Опишите, в каком контексте у вас не срабатывает NotesUiWorkspace.CurrentView? От куда запускается скрипт: из акции ли какого-то фрема с вьюшкой, в событии ли формы при открытии документа, от куда?
 
В принципе, св-во NotesUiWorkspace.CurrentView возвращает текущий вид в независимости от того, отображён ли он через дефолтный фрейм-сет, или системный, или кастомный. Текущий вид - это вид в активном фрэйме. Опишите, в каком контексте у вас не срабатывает NotesUiWorkspace.CurrentView? От куда запускается скрипт: из акции ли какого-то фрема с вьюшкой, в событии ли формы при открытии документа, от куда?
скрипт не запускается из формы на событие нажатия на кнопку в соседнем фрейме.
 
Скрипт запускается. При этом, у Вас возникает ошибка, не так ли? Если нет - значит это совсем другая проблема. Если да - то в момент нажатия на кнопку, сначала активизируется фрейм с формой, содержащей кнопку. Поэтому св-во NotesUiWorkspace.CurrentView is Nothing. Стандартный фреймсет ведёт себя аналогично. Решить задачу можно, запомнив текущий UI-вид в событии QueryOpen, PostOpen или Initialize формы, открывающейся из представления, т.е. пока представление ещё активно. А в кнопке уже использовать полученный объект.
Только в кнопке всё равно проверяте объект на Nothing. Иначе, если представление во фрейме сменится, а документ останется, то запомненный объект сбросится в Nothing.
 
Скрипт запускается. При этом, у Вас возникает ошибка, не так ли? Если нет - значит это совсем другая проблема. Если да - то в момент нажатия на кнопку, сначала активизируется фрейм с формой, содержащей кнопку. Поэтому св-во NotesUiWorkspace.CurrentView is Nothing. Стандартный фреймсет ведёт себя аналогично. Решить задачу можно, запомнив текущий UI-вид в событии QueryOpen, PostOpen или Initialize формы, открывающейся из представления, т.е. пока представление ещё активно. А в кнопке уже использовать полученный объект.
Только в кнопке всё равно проверяте объект на Nothing. Иначе, если представление во фрейме сменится, а документ останется, то запомненный объект сбросится в Nothing.
тут немного сложнее задача у меня. Форма в фрейме открывается с открытием бд и закрывается с закрытием бд. Она открывается не из представления.
Еще один вопрос возник: есть ли возможность объявлять в LN глобальные переменные, видимые во всем приложении?
 
тут немного сложнее задача у меня. Форма в фрейме открывается с открытием бд и закрывается с закрытием бд. Она открывается не из представления.
Еще один вопрос возник: есть ли возможность объявлять в LN глобальные переменные, видимые во всем приложении?
про глобальные переменные:
глобальные переменные на уровне приложения, к счастью, объявить нельзя. однако никто не мешает сохранить состояние объекта в профайле, environment-е или где-нить еще. если хочеца сохранить объект UI - меняйте логику...
про фреймсет иже с ним: не ясна задача... uiview можно запомнить в Initialize формы, как писал TIA. Межфреймовое взатмодействие проще всего организовать через JavaScript. Если треба выполнить действие в контексте одного документа во фрйеме, а потом другого, то играйте в эту сторону:
JS кнопка с кодом типа:
windows.frames[0].document.button1.click
windows.frames[1].document.button2.click
(треба поиграть в свойства windows.top чтоб достучаться до нужного фрейма)
на кажой форме скрытая кнопка, на вкладке <HTML> каждой кнопки: name = id = "button" & i. На кнопке - LSScript, пользующий контекст текущего документа. Ссылку на uiview можно взять из документа, который открывался их этого uiview....
З.Ы. Если вы вдруг опишите сообществу задачу в общих чертах - наверняка решение будет найдено...
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab