Обновление фреймов

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

  1. mtrx

    mtrx Гость

    Помогите плиз
    Есть набор 3-х фреймов и менюшка, в каждом фрейме открываются вьюи из других баз с помощью менюшки.
    Нужно сделать агент, который каждые 5 мин обновляет все фреймы на случай, если там инфа изменится.
    Чувствую, что легко и просто, но не получается никак
     
  2. Yakov

    Yakov Гость

    mtrx
    Я не знаю, обновляются ли представления во всех фреймах при нажатии на клавишу F9. Если обновляются все фреймы, то есть одно очень простое решение. Суть. Пишем небольшую программу на Си, которая посылает окну клиента Notes сообщения об однократном нажатии клавиши F9. Вот текст этой программы:
    Код (Text):
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    HWND handle;
    handle = FindWindow("NOTES", NULL);
    if (handle != 0)
    {
    PostMessage(handle, WM_KEYDOWN, VK_F9, 1);
    PostMessage(handle, WM_KEYUP, VK_F9, 0xC0000001);
    }
    return 0;
    }
    Затем настраивается Планировщик заданий Windows на запуск этой программы с нужной периодичностью. Всё.

    Вот, кстати, и сама программка.
     

    Вложения:

    • refresher.zip
      Размер файла:
      522 байт
      Просмотров:
      13
  3. mtrx

    mtrx Гость

    мысль хорошая, но надо сделать с помощью агента, всем пользователям ставить программку нереально
     
  4. Yakov

    Yakov Гость

    Насколько я знаю, если БД расположена на сервере, то агенты по расписанию работают на сервере. Чтобы агент работал по расписанию на клиенте, БД должна быть локальной.

    Lotus как-то всем поставили, вполне реально было...
     
  5. mtrx

    mtrx Гость

    В БД собственных документов нет, она служит только в качестве оболочки, поэтому, впринципе, может быть и локальной

    а, кстати, по нажатии F9 обновляется только активный фрейм, а все остальные нет. Надо чтобы все сразу обновлялись..
     
  6. Гость

    @Command( [RefreshFrame]; targetFrame ) не пробовали?
     
  7. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Как я понимаю, во фреймах отображаются view.
    Теороетически могу предложить:
    ws.ViewRefresh на PostOpen у view по таймеру :)
     
  8. Yakov

    Yakov Гость

    Или еще один скрытый фрейм с формой, у которой на PostOpen @Command( [RefreshFrame]; targetFrame ) по таймеру.
     
  9. mtrx

    mtrx Гость

    @Command( [RefreshFrame]; targetFrame ) в агенте не работает, выдает:
    а если повесить на кнопку, то все ок... а как сделать, чтобы она по таймеру выполнялась?
    или еще, как можно на Lotus Script обновить фрейм по имени, типа @Command( [RefreshFrame]; targetFrame ) ?
     
  10. mtrx

    mtrx Гость

    что то похожее
    но этот код переоткрывает базу, а не обновляет
     
  11. Гость

    Да все вроде нормуль, я конечно на глаз не вижу обновляется что или нет, но ошибки никакой нет. Делаете агент, там выбираете формула (на чем писать), туда запихиваете @Command( [RefreshFrame]; targetFrame ). В свойствах агента выбираете на что распространяются действия агента (target), в этом пункте ставити "None". Теперь лотус ниже пишет серым шрифтом, что как раз в таком агенте и надо писать @Command. После этого никаких ошибок не возникает. Проверить обновляется ли фрейм на самом деле - лень :wacko:
     
  12. mtrx

    mtrx Гость

    Может это косяк лотуса...
    Если ставить триггер на "событие", то пункт "None" есть, и с ним, при выборе агента из меню, все работает, а если поставить триггер "по расписанию", то такого пункта нет.... только "Все новые и измененные документы" и "Все документы в базе данных"...
     
  13. Гость

    А если из одного агента по расписания запускать уже тот самый наш агент?
    Если только косяк разработчиков, так уж задумано...
     
  14. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Это не косяк. @Command только для работы через UI. Шедульные агенты по определению такими быть не могут.
     
  15. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Есть такой NotesTimer-класс.
    Прикручиваете его к UIView и оно автоматом рефрешится каждые N секунд
     
  16. mtrx

    mtrx Гость

    Пробовал, тоже не работает..
    А можно поподробней? Мне так и не удалось найти аналог @Command( [RefreshFrame]; targetFrame ) для LotusScript
     
  17. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Рефрешить надо не фрейм, а представление. notesUIWorkspace.ViewRefresh
     
Загрузка...

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