• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Программный Outline

  • Автор темы MMN
  • Дата начала
M

MMN

Встала задача создать дополняемое меню
из кода дописываю пункты меню в Outline

создаю Click и пытаюсь обновить
Call workspace.SetTargetFrame("MenuFrame")
Call workspace.OpenPage("PageMenu")
или
Call workspace.ReloadWindow

ничего не обновляется

если я в дизайнере просто открою Outline, то в клиенте Click отработается и чудесным образом вижу обновленный Outline
как заставить его обновиться ??
каким образом происходит его обновление когда открываю его в дизайнере??
 

savl

Lotus Team
28.10.2011
2 599
311
BIT
192
Если 8-ка попробуйте так:
OutlineReload method
Reloads a specified outline.

Note This method is new with Release 8.

Defined in
NotesUIWorkspace

Syntax
Call notesUIWorkspace.OutlineReload( outlinename$, databasefilename$ )

Parameters
outlinename$

String. The name of the outline to be reloaded.

databasefilename$

String. The path and file name of the database. The current server is used, or incorporate the server name at the beginning of the path. Use a null string, "", to indicate the current database.

Usage
This method can be used to to redisplay a modified outline after you have edited its design programmatically using the NotesOutline class. Otherwise, you would have to close and reopen the application to see these changes.

Еще можно обходным путем попробовать:
Закрываем текущую базу, затем сразу открываем её снова.
 
M

MMN

в восьмерке OutlineReload не работает, даже разработчики пишут, что в хелпе есть, но для красоты
а кроме как переоткрытие базы ??
 

savl

Lotus Team
28.10.2011
2 599
311
BIT
192
Фреймсет переоткрыть можно. Думаю тут дело в кэше дизайна.

За OutlineReload спасибо, буду знать, хотел заюзать как раз.

Добавлено: ОН работает!!!
Надо просто 2 раза подряд вызывать :
Код:
Call ws.OutlineReload(OutName,db.FilePath)
Клиент 8.5.3 FP2
 
M

MMN

Да, действительно работает, спасибо
 
A

Anonimous

Я вот тоже тут спрошу кое-что...
У меня есть Frameset. В нем 2 фрейма: верхний большой и нижний. В нижнем у меня навигатор с action hotspot - ами. Надо сделать так, чтоб при щелчке по хотспотам в верхнем фрейме открывался вид какой-то базы.
Содержимое нижнего фрейма - форма с action hotspot - ами. На этой форме есть скрытые поля, в которых указатели на базы - соответственно по ним открываем базу при щелчке по хотспоту.
Допустим, есть хотспот А и хотспот Б. И поля соответственно FieldA и FieldB. При клике на хоспот А базу А открываю по указателю в поле А, при клике на хотспот Б - базу Б.
Все хорошо, при клике на хотспот A база в верхнем фрейме открывается командой @Command([Compose]; сервер:путь; форма). Но только когда я потом кликаю на хотспот Б, значения полей перестают быть доступными для кода в хотспоте Б, а вид базы Б не открывается без указателя в поле Б. Это после выполнения команды @Command([Compose]; путь; форма)

Вот код, но причина - в команде @Command([Compose]; путь; форма). А обоих хотспотах код обинаковый, отличается только 1-я строчка

FieldA := Значение поля А;

// С помощью FieldA узнаю путь к базе и сервер, тут ничего не влияет

@SetTargetFrame("Верхний фрейм");
@Command([Compose]; сервер:путь; "Форма")

Команда @SetTargetFrame("Нижний фрейм") не помогла. RefreshFrame тоже. Если кто поделится опытом, то заранее спасибо.
 
A

Anonimous

Пока переменными окружения воспользовался. Еще значения полей формы в нижнем фрейме остаются видными, если обращаться к ним с помощью кнопок на LS. А вот если на языке @, то после Compose значения полей все равно перестают быть доступными
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!