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

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

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

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

Editdocument (read-only) в специальном фрейме и со специальной формой

  • Автор темы tikhiy
  • Дата начала
T

tikhiy

Доброй ночи, коллеги! // версия 8.5

Терпение мое иссякло и зрение подсело, но так и не смог добить проблему.

Имею:
1. Основную и вспомогательную формы для документа.
2. Фреймсет из двух фреймов (top и bottom).
3. View (верхний фрейм), в котором перечислены документы (очень лакончино).

4. !! Огромное желание сделать так, чтобы при нажатии (single click) на документ во View в нижнем фрейме открывалась дополнительная форма, где будет более подробно освещатся контент документа - именно в режиме просмотра, именно в специально сделанной для этого форме, а не в основной.

(А вот картинка!)

collabs.jpg

Для всего этого в событии "onSelect" (гендерная дискриминация, а что если не он селект, а она?..) я прописываю замысловатый кодец и ставлю "фрейм по умолчанию" для вспомогательной формы (которая снизу на картинке, там будет вычисляемый текст!) чтобы она всегда открывалась снизу! (эксперимент с SetTargetFrame тоже провалился...)

Что происходит в коде? Сколько я понимаю, так вот просто открыть документ с помощью "чужой" формы не получится (а зря, я им скажу, зря!), посему я копирую его содержимое в новый документ и прописываю ему нужную форму ("CollabPreview").

После чего, перелопатив дюжину тематических сайтов, догадываюсь "вроде бы правильно" поставить параметры функции "EditDocument" так, что не возникает дурацкая ошибка (как там её: lsERR_LSXU13_ANCESTOR_TARGET_FRAME)...

Но не тут то было! В результате подлец Лотус начинает открывать исходный фреймсет в новом окне - честно заполняя при этом вспомогательную форму данными из дубликата нужного документа и... плодя новые окошки бесконечно, ибо в них также появляется моё View, где сразу же происходит событие "onSelect"...

Пробовал я поэкспериментировать и с последним параметром ("newInstance" ставим в False), но в ответ - тишина, вернее, сообщение о том, что форма по умолчанию не найдена... Почему "по умолчанию"? Зачем? Я, видно, что-то концептуально не догоняю, ведь явным образом прописывается нужная форма!..

В общем, поможите калеке, а то откажусь от этой затеи и уйду в горы, наверное, жить... Спасибо за понимание!

// и вообще, почему бы не позволить пихать документ контекстом для страницы (Page)?..

[codebox]Sub Onselect(Source As Notesuiview)
Dim ws As New NotesUIWorkspace
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim uiview As NotesUIView

Set uiview = ws.CurrentView

Set db = s.CurrentDatabase
Set doc = db.GetDocumentByID( uiview.CaretNoteID )

Dim new_doc As New NotesDocument( db )

Call doc.CopyAllItems( new_doc )

new_doc.Form = "CollabPreview"

Call ws.EditDocument( False, new_doc, True, , False )
End Sub[/codebox]
 
K

K-Fire

Попробуйте сделать так:
Нижний фрейм обзываете NotesPreview. Во вью в свойстве Form Formula прописываете название доп.формы. В результате по сингл клику в превью отображается доп.форма. Затем на Queryopendocument вешаете такой код:

continue = false
Set doc = <взять текущий док во вью>
doc.Form = "основная форма"
ws.EditDocument(false, doc)
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
ндаа, однозначно топиксайтер не умеет работать с превью....
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Akupaka
открываем дизайнером ПЯ - там всё сделано, делаем по аналогии
 
K

K-Fire

Для новичка ПЯ открывать не стоит, там сразу убьешься от кол-ва всяких разных фич и элементов дизайна ;)
 
A

azat20

А что если композитные приложения использовать?
 
K

K-Fire

А что если композитные приложения использовать?

Для данного конкретного случая - нет никакой необходимости. А если захочется усложнить (себе жизнь в том числе :)) - тогда можно и композитные.
 
Мы в соцсетях:

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