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

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

tikhiy

Гость
#1
Доброй ночи, коллеги! // версия 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

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

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

K-Fire

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

K-Fire

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