Выделить программно документы в виде (uiview.selectdocument)

  • Автор темы Azrael
  • Дата начала
A

Azrael

Пытаюсь решить задачу показа только определенных данных в календарном представлении. Хочу на постопен вида повесить что-то вроде:
Код:
@Command([RunAgent]; "(selectDocsInView)");
@Command([ViewShowOnlySelected]);
В агенте получить uiView, и, отобрав документы по определенному критерию пометить их, и, соответственно показывать в виде только выбранные документы, вот только почему-то Call uiView.SelectDocument(doc) просто переносит указатель на определенный документ, этим дело и заканчивается.
Пытаюсь сделать что-то вроде:
Код:
	Call uiView.SelectDocument(doc)
keybd_event 32, 0, 0, 0 ' Space key down
keybd_event 32, 0, 2, 0 ' Space key up
пометка моргает, т.е. выделение ставится, но, по-видимому по завершению кода агента оно снимается. Как побороть?
 
A

Akupaka

у тебя в агенте Target SelectedDocuments?..
поставь там None
 
A

Akupaka

хм... у тебя там цикл? може код покажи?..
 
A

Azrael

Akupaka
пока пробую, без проверок и всего прочего:
Код:
	Dim ws As New NotesUIWorkspace
Dim uiView As NotesUIView
Set uiView = ws.CurrentView()

Dim view As NotesView
Set view = uiView.View()

Dim doc As NotesDocument
Set doc = view.GetFirstDocument()
Call uiView.SelectDocument(doc)

Set doc = view.GetNextDocument(doc)
Call uiView.SelectDocument(doc)
добавление после uiView.SelectDocument
Код:
	keybd_event 32, 0, 0, 0 ' Space key down
keybd_event 32, 0, 2, 0 ' Space key up
ни к какому результату не приводит, точнее указатель во вьюхе перемещается на 1-ый документ, но мне его нужно выделить..... Sleep(<n>) тоже не помогает... причем оно не хочет работать ни с календарной, ни с обычной вьюхой ((

З.Ы. не в тему, канеш, но юбилейное сообщение (256) :eek:
 
A

Akupaka

странно, но у меня это срабатывает нормально...
попробуй сделать это на кнопке вида, не в агенте...


вот мой код, запускается из агента в меню Action (Action menu selection, Target:None)

Код:
Declare Sub keybd_event Lib "user32" (Byval bVk As Byte, _
Byval bScan As Byte, Byval dwFlags As Long, Byval dwExtraInfo As Long)

Const KEYEVENTF_KEYDOWN = &H0
Const KEYEVENTF_KEYUP = &H2

Sub Initialize
Dim ws As New NotesUIWorkspace
Dim uiview As NotesUIView
Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim col As NotesDocumentCollection
Dim doc As NotesDocument


Set db = s.CurrentDatabase
' Set col = db.UnprocessedDocuments
Set uiview = ws.CurrentView
Set view = uiview.View

Set doc = view.AllEntries.GetNthEntry(5).Document
Call uiview.SelectDocument(doc)
keybd_event 32, 0, KEYEVENTF_KEYDOWN, 0
keybd_event 32, 0, KEYEVENTF_KEYUP, 0

End Sub

аа.. млин... проблема в вызовах внешней функции... на одном доке норм. работает, а на двух - нет

такое впечатление, что код LS не дожидается выполнения вызова внешней функции, и успевает сделать выделение последнего дока, а только потом отрабатывает внешний вызов... пару раз :eek:
 
A

Azrael

Да, походу.... ((((
А никто не в курсе, какие параметры в SendInput передавать? она должна ненулевое значение на выходе выдать, можно в цикле Yield использовать....
 
M

mindwalker

У меня такая же проблема.
uiview.SelectDocument(doc) не подходит т.к просто переводит курсор на документы по очереди
А как программно в LS поставить галки напротив документов? Кроме этого шаманского нажатия пробела keybd_event 32
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
233
Что-то "краем уха видел" когда-то, что что-то такое где-то есть в почте, там вроде какой-то формульный агент это делал.
 
Мы в соцсетях:

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