Notesuiworkspace Frameset и Currentview

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

Event01

#1
Здравствуйте, такой вопрос. Можно ли переопределить стандартный дефолтный фреймсет, чтобы свойство CurrentView объекта NotesUIWorkspace возвращало текущее представление в моем фреймсете (не используя OpenView объекта NotesUIDatabase)
И еще один вопрос: почему не работает database script из database resources (на событие открытия БД и закрытия не производит соотвествующих действий)? :) :angry:
 

hosm

* so what *
18.05.2009
2 442
6
#2
<...>
И еще один вопрос: почему не работает database script из database resources (на событие открытия БД и закрытия не производит соотвествующих действий)?
Иногда и работает - смотря как БД открывается.
Скорее всего, связано с особенностью определения notesUIWorkspace.CurrentDatabase. Не отработает, например, когда пользователь открывает БД из рабочей области через переход к представлению по View - GoTo.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#3
почему не работает database script из database resources (на событие открытия БД и закрытия не производит соотвествующих действий)?
работает
либо у тебя там какие-то глюки, либо после того как написал код, закрой базу и в нотесе и в дизайнере (а лучше лотус перегрузи), потом проверь...
если не будет работать, нужно попробовать очистить кеш. либо убить базу cache.ndk, либо найти в ней нужные доки и убить...

через переход к представлению по View - GoTo
так не будет, да :)
 

Omh

Lotus team
04.07.2007
2 210
1
#4
Ещё DatabaseScript не отрабатывает, если, например, пустануть агента из базы (из меню Actions), который открывает документ из этой же базы.
 

TIA

:-)
Lotus team
15.05.2009
790
3
#5
Ещё DatabaseScript не отрабатывает, если, например, пустануть агента из базы (из меню Actions), который открывает документ из этой же базы.
А также DatabaseScript не отрабатывает при открытии документа по доклинку.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#6
)) интересно, а он отрабатывает когда-нить, кроме случаев открытия БД на УИ через File/Database/Open (или аналогичного способа)?
 

hosm

* so what *
18.05.2009
2 442
6
#8
Работает, например, еще при открытии БД или представления по notesurl
(вида Notes:///ReplicaID или Notes:///ReplicaID/View).
А вот для notesurl документа не работает :)
И где здесь логика? :angry:
 
E

Event01

#9
у меня получается, что при внесении любых изменений в дизайнере, он перестает отрабатывать без перезапуска самого дизайнера. в остальном вроде нормально теперь работает. Спасибо за ответы. Теперь меня интересует только первый вопрос.
 

TIA

:-)
Lotus team
15.05.2009
790
3
#10
у меня получается, что при внесении любых изменений в дизайнере, он перестает отрабатывать без перезапуска самого дизайнера. в остальном вроде нормально теперь работает. Спасибо за ответы. Теперь меня интересует только первый вопрос.
В принципе, св-во NotesUiWorkspace.CurrentView возвращает текущий вид в независимости от того, отображён ли он через дефолтный фрейм-сет, или системный, или кастомный. Текущий вид - это вид в активном фрэйме. Опишите, в каком контексте у вас не срабатывает NotesUiWorkspace.CurrentView? От куда запускается скрипт: из акции ли какого-то фрема с вьюшкой, в событии ли формы при открытии документа, от куда?
 
E

Event01

#11
В принципе, св-во NotesUiWorkspace.CurrentView возвращает текущий вид в независимости от того, отображён ли он через дефолтный фрейм-сет, или системный, или кастомный. Текущий вид - это вид в активном фрэйме. Опишите, в каком контексте у вас не срабатывает NotesUiWorkspace.CurrentView? От куда запускается скрипт: из акции ли какого-то фрема с вьюшкой, в событии ли формы при открытии документа, от куда?
скрипт не запускается из формы на событие нажатия на кнопку в соседнем фрейме.
 

TIA

:-)
Lotus team
15.05.2009
790
3
#12
Скрипт запускается. При этом, у Вас возникает ошибка, не так ли? Если нет - значит это совсем другая проблема. Если да - то в момент нажатия на кнопку, сначала активизируется фрейм с формой, содержащей кнопку. Поэтому св-во NotesUiWorkspace.CurrentView is Nothing. Стандартный фреймсет ведёт себя аналогично. Решить задачу можно, запомнив текущий UI-вид в событии QueryOpen, PostOpen или Initialize формы, открывающейся из представления, т.е. пока представление ещё активно. А в кнопке уже использовать полученный объект.
Только в кнопке всё равно проверяте объект на Nothing. Иначе, если представление во фрейме сменится, а документ останется, то запомненный объект сбросится в Nothing.
 
E

Event01

#13
Скрипт запускается. При этом, у Вас возникает ошибка, не так ли? Если нет - значит это совсем другая проблема. Если да - то в момент нажатия на кнопку, сначала активизируется фрейм с формой, содержащей кнопку. Поэтому св-во NotesUiWorkspace.CurrentView is Nothing. Стандартный фреймсет ведёт себя аналогично. Решить задачу можно, запомнив текущий UI-вид в событии QueryOpen, PostOpen или Initialize формы, открывающейся из представления, т.е. пока представление ещё активно. А в кнопке уже использовать полученный объект.
Только в кнопке всё равно проверяте объект на Nothing. Иначе, если представление во фрейме сменится, а документ останется, то запомненный объект сбросится в Nothing.
тут немного сложнее задача у меня. Форма в фрейме открывается с открытием бд и закрывается с закрытием бд. Она открывается не из представления.
Еще один вопрос возник: есть ли возможность объявлять в LN глобальные переменные, видимые во всем приложении?
 
13.03.2009
625
1
#14
тут немного сложнее задача у меня. Форма в фрейме открывается с открытием бд и закрывается с закрытием бд. Она открывается не из представления.
Еще один вопрос возник: есть ли возможность объявлять в 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....
З.Ы. Если вы вдруг опишите сообществу задачу в общих чертах - наверняка решение будет найдено...