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

Тема в разделе "Lotus - Программирование", создана пользователем Azrael, 25 дек 2008.

  1. Azrael

    Azrael Гость

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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    у тебя в агенте Target SelectedDocuments?..
    поставь там None
     
  3. Azrael

    Azrael Гость

    Akupaka
    None стоит :rolleyes:
     
  4. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    хм... у тебя там цикл? може код покажи?..
     
  5. Azrael

    Azrael Гость

    Akupaka
    пока пробую, без проверок и всего прочего:
    Код (Text):
        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
    Код (Text):
        keybd_event 32, 0, 0, 0 ' Space key down
    keybd_event 32, 0, 2, 0 ' Space key up
    ни к какому результату не приводит, точнее указатель во вьюхе перемещается на 1-ый документ, но мне его нужно выделить..... Sleep(<n>) тоже не помогает... причем оно не хочет работать ни с календарной, ни с обычной вьюхой ((

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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    странно, но у меня это срабатывает нормально...
    попробуй сделать это на кнопке вида, не в агенте...


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

    Код (Text):
    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:
     
  7. Azrael

    Azrael Гость

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

    mindwalker Гость

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

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Что-то "краем уха видел" когда-то, что что-то такое где-то есть в почте, там вроде какой-то формульный агент это делал.
     
Загрузка...

Поделиться этой страницей