послать сообщение Notesdocument -> Notesdocument

  • Автор темы Vvv
  • Дата начала
V
#1
Подскажите пожалуйста как можно послать сообщение от одного NotesDocument другому

конечная задача я делаю аналог DialogBox мне надо при закрытии дочернего NotesDocument сообщить об закрытии родительскому
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 569
263
#3
конечная задача я делаю аналог DialogBox мне надо при закрытии дочернего NotesDocument сообщить об закрытии родительскому
мне казалось, что просто код отработает дальше ;), если вызывать такой DialogBox
зачем аналог:
- модальность как обеспечить
-как бороться с глюкавым UI нотусов
у меня ощущения, что вы изобретаете себе проблемы, не изучив платформы

диалог-боксы можно делать через... java, но вы утверждали (в др. топике) что тока LS
 
V
#4
ищите очереди
пожалуйста ткните точней про очереди в LS

>у меня ощущения, что вы изобретаете себе проблемы, не изучив платформы
у меня требования

только на LS реализовать диалог который отображает таблицу с переменным количеством строк
пользователь может выбрать N строк и мой диалог должен вернуть их в вызывающий документ

мой диалог и вызывающий документо существуют только в uidoc виде, сохранять doc на диск запрещенно (у меня есть рабочая версия если вызывающий документ сохранен в базу)

одно из требований было использовать DialogBox, я смог убедить что внутри DialogBox только на LS динамическую таблицу с выбором не построить.

сейчас пытаюсь решить проблемму как вернуть строку их диалога в вызывающий документ (который не сохранялся в базу те найти его по unid и сохранить в какой либо item я не могу)
решил использовать профайл
сохраняю возращаемую строку в профайл но надо как то сказать вызывающему документу чтобы ог прочел профайл
 

nvyush

Lotus team
22.04.2009
2 317
0
#5
Гляньте Call notesUIWorkspace.RefreshParentNote( ) — может натолкнёт на мысль...
Кстати, можно ведь в диалоге открыть не отдельный, а тот же самый документ. Тут кстати мелькала база с таблицей на ЛС, поищите.

Вот кстати: http://codeby.net/ipb.html?s=&sh...st&p=146613
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#6
Да даже если отдельный документ в параметрах указывать, то на диск его никто не заставляет сохранять.
 
V
#7
Кстати, можно ведь в диалоге открыть не отдельный, а тот же самый документ. Тут кстати мелькала база с таблицей на ЛС, поищите.
спасибо за идеи, тотже самый не подходит (хотя идея отличная)
клиент будет править стандартный почтовый template и родительский документ для моего диалога calendar (appointments, meetings and todo)

сейчас смотрю пример таблицы по ссылки
у меня есть несколько примеров и я их все попробовал (основная проблемма динамиечски перестраивать таблицу после 10-30 перестроений notes падает хотя один из методов что я нашел работает стабильно)
 
V
#8
>Да даже если отдельный документ в параметрах указывать, то на диск его никто не заставляет сохранять.

на диск его приходиться сохранять что бы вернуть значения
родитель созарняет на ребенке свой unid
потом Set pdoc = db.GetDocumentByUNID(unid)
затем ребенок сохраняет нужные значения на родители

GetDocumentByUNID работает только если документ существует в базе
 

Omh

Lotus team
04.07.2007
2 210
1
#9
[не по теме]
Vvv, без цитирования тяжело понять, где реплика, на которую ты отвечаешь, а где, собственно сам ответ
[/не по теме]
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#10
Откуда вернуть значения?
Мы про диалогбокс говорим или нет?
 

nvyush

Lotus team
22.04.2009
2 317
0
#11
Если пользоваться "родной" диалоговой кнопкой ОК, то
Код:
flag = notesUIWorkspace.DialogBox( ... )
if flag then
'чтение очереди
end if
Если кнопка самописная, то в ней call ws.RefreshParentNote( ), а в родительском uidoc можно прочитать очередь в QueryRecalc

Про очереди тут:
http://codeby.net/ipb.html?s=&sh...st&p=141360
 
V
#12
спасибо за ссылку про очереди, воспользоваться не удасться так как код должен работать под win/linux/blackberry
я понимаю что notes.dll в том или ином виде есть на всех платформах но хотелось бы не опускаться до CAPI


воспользоваться родным диалогом Notes я не могу так как в нем невозможно динамически перестраивать таблицу
 

TIA

:-)
Lotus team
15.05.2009
790
3
#14
Vvv
На сколько я понял, в родительском документе у вас что-то подобное:
Код:
Set uidoc = Ws.EditDocument(...)
Тогда отловить закрытие дочернего uidoc можно через
Код:
On Event QueryClose From uidoc Call MyChildDocCloseHandler

sub MyChildDocCloseHandler(Source as NotesUIDocument)
...
end sub
Возможно, удобнее вместо QueryClose отлавливать QuerySave или PostSave в зависимости от ваших условий.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 569
263
#15
ничё не понял...
код не будет работать под перечисленными платформами, без использования "хаков"
потомучта обмен между UI сучностями нотусов индусы не реализовали (в общем смысле)
не понятно и перечиление платформ, мало того, что они принципиально разные, дык еще и линуха бывают разные (ИБМ не сподобилось сделать клиента по человечьи) и нотуса элементарно могут не стартовать...
хотя под линухами можно пущать тот же виндозный клиент (с нек. допиливаниями)
блекбери - это ваще не интел проц... и какой там клиент ;) ?
а не объясненные "не хочу" и "только LS" вызывают странные ассоциации ;) (неуж-то секта) :(
 

Xalet

Well-known member
08.08.2008
410
0
#16
Если надо выбрать из вьюшки несколько строк и вернуть на форму, то решается одним @Prompt ом, или я не так понял задачу.
Еще вариант с дайлогбоксом и встроеной вьюшкой.
 

Xalet

Well-known member
08.08.2008
410
0
#17
Почитал соседнюю темку с динамическими таблицами. Если из своей таблицы сделать выборку, то все выбраные строки сохранять в поле со множественными значениями, такое же как и на основной форме. И через дайлогбокс все должно неплохо работать.
 
V
#18
>блекбери - это ваще не интел проц... и какой там клиент ?
как я понимаю там web клиент, у меня ее нет

>а не объясненные "не хочу" и "только LS" вызывают странные ассоциации (неуж-то секта)
нет у клиента N тысяч десятков пользователей и менять что либо кроме почтового шаблона они не согласны (понять их можно если скажем 20k (на самом деле больше) пользователей и явно у кого что то дполнительное не поставиться корректно)
 
K

Klido

#19
и менять что либо кроме почтового шаблона
достаточно жестко - 20К измененных ящиков....
я вот тоже не совсем понял зачем так сложно, если
решается одним @Prompt ом, или я не так понял задачу.
Еще вариант с дайлогбоксом и встроеной вьюшкой.
 
V
#20
На сколько я понял, в родительском документе у вас что-то подобное:
Код:
Set uidoc = Ws.EditDocument(...)
Тогда отловить закрытие дочернего uidoc можно через
Код:
On Event QueryClose From uidoc Call MyChildDocCloseHandler

sub MyChildDocCloseHandler(Source as NotesUIDocument)
...
end sub
Возможно, удобнее вместо QueryClose отлавливать QuerySave или PostSave в зависимости от ваших условий.
TIA да я создаю документ через EditDocument

я пытался сделать
Код:
в globals
Dim uidialog As NotesUIDocument


Sub MyChildDocCloseHandler(Source As Notesuidocument, Continue As Variant)
Messagebox "test"
End Sub


код на кнопке
Set uidialog= workspace.ComposeDocument( "", "", "DEMO" )
On Event QueryClose From uidialog Call MyChildDocCloseHandler
при закрытии дочерней формы msgbox не вызываеться