Отобразить коллекцию

Тема в разделе "Lotus - Программирование", создана пользователем Dragon108, 20 сен 2010.

  1. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0
    Возник следующий вопрос:

    Некоторым образом формируется коллекция документов.
    Хотелось бы всю эту коллекцию выводить во вью в отдельное окно (например dialog box), или как то ещё выводить пользователю, что бы он мог просмотреть её элементы, открыть их и т.д.
    Какие есть идеи? Спасибо.


    P.S. Пробовал через session.PickListCollection - не подходит, так как PickListCollection не ищет вхождения, а выводит элементы по жесткому критерию. Ищет в категоризованной вью, и выводит только одну категорию ;)
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    мб, закинуть коллекцию в папку?

    Добавлено: или просто показывать темповый документ с инфой о доках и со ссылками на документы коллекции.
     
  3. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0

    Да, можно. Но если честно с работой с папками мало знаком ;) Потом можно будет например настроить вью, что бы показывал документы из этой папки?
     
  4. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Как вариант во вьюшке менять селекшн формулу, рефрешить и подсовывать в тот же PickListCollection.

    Ну или с папкой, как предлагалось.
     
  5. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Папка упрощённо и есть представление, только документы в ней отображаются не в соответствии с формулой отбора, а те, что в неё положены. Пример работы тут:
    Отображение результата поиска во View
     
  6. iki

    iki Гость

    Есть еще 1 интересный и очень извращенный способ =)

    Перед открытием вьюшки с документами собираешь запрос для поиска во вьюхе. Фигачишь все это дело в буфер. Затем после открытия вьюшки открываешь поиск и вставляешь туда содержимое буфера после чего програмно жмакаешь ентер. что-то типо этого:

    @Command ([ViewShowSearchBar]; @False);
    @Command ([ViewShowSearchBar]; @True);
    @Command ([EditPaste]);
    @Command ([Compose]; "(pressEnter)")

    На инициалайзе формы стоит события нажатия клавиши ентер. на квери опене continue = False.
    Есть недостатки:

    1. остаеца видна строка поиска с ацки шаманским запросом
    2. после закрытия вьюхе надо прятать серчбар, иначе он помто в других вьюхах этой базы повылазит.

    зы. с криками еретик и сжечь прошу не обращаца так как механизм этот вполне удачно и главное быстро работает =)
    ззы мы с тобой помоему в одной конторе работаем так что ты мне звякни или зайди F8D82BE51B0E870AC325757C00681D2D - карточка в ТС =)
    я скажу где посмотреть =)
     
  7. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0
    :mellow:

    Боюсь что нет :) В конторе в которой работаю я всего два прогера: я и мой начальник. Если ты не он :) то значит ты работаешь удаленно и я ничего не знаю. Но вроде начальник никого не брал больше :))


    За способ спасибо! проверю обязательно!
     
  8. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    можно создать вид с одной колонкой и формулой отбора @true, по коллекции имеющихся документов создать в памяти коллекцию документов с заполненным (или несколькими по необходимости полями) полем (что в колонке значится), подсунуть коллекцию хитрым образом, и получим пиклист с выбором чего угодно и в любом количестве, затем обратная процедура, по выбранной коллекции значений определяем документы из которых они взяты и уже работаем с документами..
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    А можно пальцем показать, а не умничать (из анекдота)? ))
     
  10. iki

    iki Гость

    Вот код по переносу запроса в буфер. Мб будет полезно.

    Код (LotusScript):
    Declare Function OpenClipboard Lib "User32.dll" Alias "OpenClipboard" (Byval hWnd As Long) As Long
    Declare Function EmptyClipboard Lib "User32.dll" Alias "EmptyClipboard" ( ) As Long
    Declare Function SetClipboardData Lib "User32.dll" Alias "SetClipboardData" (Byval wFormat As Integer,Byval hAnsiText As Long ) As String
    Declare Function CloseClipboard Lib "User32.dll" Alias "CloseClipboard" ( ) As Long
    Declare Function GlobalAlloc Lib "Kernel32.dll" Alias "GlobalAlloc" (Byval wFlags As Long, Byval dwBytes As Long) As Long
    Declare Function GlobalLock Lib "Kernel32.dll" Alias "GlobalLock"(Byval hMem As Long) As Long
    Declare Function GlobalUnlock Lib "Kernel32.dll" Alias "GlobalUnlock" (Byval hMem As Long) As Long
    Declare Function lstrcpy Lib "kernel32.dll" (Byval lpString1 As Any, Byval lpString2 As Any) As Long

    Const CF_TEXT = &H001
    Const CF_LOCALE = 16

    'queryString - СТРОКА С ЗАПРОСОМ

    Dim ptr As Long, ghand As Long, handle As Long
    Dim ptrlocale As Long, ghandlocale As Long, handlelocale As Long

    'get global storage for field contense
    ghand = GlobalAlloc (0, (Len(queryString)+1))
    'lock global storage
    ptr = GlobalLock (ghand)
    'copy contense of field to global storage
    ptr = lstrcpy (ptr, queryString)
    'free global storage
    Call GlobalUnlock(ghand)

    ' проблема при заполнении не русской раскладкой, поэтому записываем русскую локаль в буфер
    ghandlocale = GlobalAlloc (0, 4 )
    ptrlocale = GlobalLock (ghandlocale)
    ptrlocale = lstrcpy (ptrlocale, Cstr (0000419))
    Call GlobalUnlock (ghandlocale)

    ' open clipboard
    Call OpenClipboard (0)
    Call EmptyClipboard()
    'write to clipboard
    Call SetClipboardData (CF_TEXT, ptr)

    Call SetClipboardData (CF_LOCALE, ptrlocale)

    'close clipboard
    Call CloseClipboard()
    ЗЫ насчет работы в одной конторе. Это я вот почему решил, но видимо ты ушел в другую. http://codeby.net/forum/threads/33717.html
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Эй, кто там в Конструкторском Бюро заведует? Внесите код, пожалуйста :)
     
  12. iki

    iki Гость

    Держите.

    Код (LotusScript):
     
    Declare Sub keybd_event Lib "user32.dll" (Byval bVk As Integer, Byval bScan As Integer, _
    Byval dwflags As Long, Byval dwextrainfo As Long)

    Sub Initialize
    keybd_event 13,0,0,0  
    keybd_event 13,0,2,0
    End Sub

    Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
    continue = False
    End Sub
     
  13. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    С этого места поподробнее, пожалуйста (с). Или Вы предлагаете для каждого найденного документа создавать документ-ссылку, подпадающий под условие отбора "хитрого" представления, а потом ссылки удалять?
     
  14. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    чуть позже или сами напишите...
    кста, а где же кроссплатформенность? винапапи сплошное)
     
  15. iki

    iki Гость

    От меня кроссплатформенность не требуют. Я пишу базы для одной конторы в которой конфигурации рабочих станций, версии клиентов, и проч. жестко заданы регламентом, который в ближайшие стопицот лет врятли изменится.

    Главное скорость.
     
  16. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0
    :)


    Ну да, в был в той конторе :) Преподу Андрею привет, если знаешь такого :)
     
  17. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    смелое утверждение...
    скорость чего увеличится? разработки - тока падает от такого подхода
    код на сервер не перенести (он часто не виндовые)
    оверхед по переписыванию по-человечески - ваще всё выбросить и переписать
    и это при том, что нет необхадимости в винапи, в большинстве случаев
     
  18. iki

    iki Гость

    Ненадо меня под расстрел пожалуйста.

    Я все это понимаю. И если использую такое то только в тех случаях когда это действительно необходимо и подругому не сделать никак. Тут спросили как это можно сделать. Я ответил, предупредив что способ извращенный.

    Я это использовал когда заказчик захотел полнотекстный поиск по базам с большим кол-вом документов + по любым полям через диалогбокс, и отображать результат в представлени + еще куча тонкостей. Если вы знаете как это можно сделать по-другому расскажите пожалуйста автору темы, а мы все возьмем на заметку.
     
  19. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    а апплет мона вывести шо хошь
     
  20. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    что-то в этом роде.. создается коллекция документов с данными для выбора, затем вид и документы сохраняются в кеш.ндк, виду устанавливается нужная формула отбора и вызывается пиклист, получаем вид с выбором того, что сформировали, а дальше как обычно - соотносим выбранные данные с документами откуда данные для выбора взяты и далее работаем..
     
Загрузка...

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