Notesuiworkspace Frameset и Currentview

Тема в разделе "Lotus - Программирование", создана пользователем Event01, 25 май 2009.

  1. Event01

    Event01 Гость

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

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Иногда и работает - смотря как БД открывается.
    Скорее всего, связано с особенностью определения notesUIWorkspace.CurrentDatabase. Не отработает, например, когда пользователь открывает БД из рабочей области через переход к представлению по View - GoTo.
     
  3. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    работает
    либо у тебя там какие-то глюки, либо после того как написал код, закрой базу и в нотесе и в дизайнере (а лучше лотус перегрузи), потом проверь...
    если не будет работать, нужно попробовать очистить кеш. либо убить базу cache.ndk, либо найти в ней нужные доки и убить...

    так не будет, да :)
     
  4. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ещё DatabaseScript не отрабатывает, если, например, пустануть агента из базы (из меню Actions), который открывает документ из этой же базы.
     
  5. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    А также DatabaseScript не отрабатывает при открытии документа по доклинку.
     
  6. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    )) интересно, а он отрабатывает когда-нить, кроме случаев открытия БД на УИ через File/Database/Open (или аналогичного способа)?
     
  7. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Akupaka
    Вопрос не в бровь, а по йайцам!
     
  8. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Работает, например, еще при открытии БД или представления по notesurl
    (вида Notes:///ReplicaID или Notes:///ReplicaID/View).
    А вот для notesurl документа не работает :)
    И где здесь логика? :angry:
     
  9. Event01

    Event01 Гость

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

    TIA :-)
    Lotus team

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

    Event01 Гость

    скрипт не запускается из формы на событие нажатия на кнопку в соседнем фрейме.
     
  12. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Скрипт запускается. При этом, у Вас возникает ошибка, не так ли? Если нет - значит это совсем другая проблема. Если да - то в момент нажатия на кнопку, сначала активизируется фрейм с формой, содержащей кнопку. Поэтому св-во NotesUiWorkspace.CurrentView is Nothing. Стандартный фреймсет ведёт себя аналогично. Решить задачу можно, запомнив текущий UI-вид в событии QueryOpen, PostOpen или Initialize формы, открывающейся из представления, т.е. пока представление ещё активно. А в кнопке уже использовать полученный объект.
    Только в кнопке всё равно проверяте объект на Nothing. Иначе, если представление во фрейме сменится, а документ останется, то запомненный объект сбросится в Nothing.
     
  13. Event01

    Event01 Гость

    тут немного сложнее задача у меня. Форма в фрейме открывается с открытием бд и закрывается с закрытием бд. Она открывается не из представления.
    Еще один вопрос возник: есть ли возможность объявлять в LN глобальные переменные, видимые во всем приложении?
     
  14. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    про глобальные переменные:
    глобальные переменные на уровне приложения, к счастью, объявить нельзя. однако никто не мешает сохранить состояние объекта в профайле, 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....
    З.Ы. Если вы вдруг опишите сообществу задачу в общих чертах - наверняка решение будет найдено...
     
Загрузка...
Похожие Темы - Notesuiworkspace Frameset Currentview
  1. yerke
    Ответов:
    4
    Просмотров:
    3.147
  2. sanch
    Ответов:
    9
    Просмотров:
    4.386
  3. Botu
    Ответов:
    6
    Просмотров:
    1.068
  4. dzheyzhi
    Ответов:
    2
    Просмотров:
    1.500
  5. Dragon108
    Ответов:
    4
    Просмотров:
    1.671

Поделиться этой страницей