Просмотр файлов в документе

Тема в разделе "OLE технологии", создана пользователем morpheus, 14 авг 2008.

  1. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Решение с использованием "сторонних" для нотеса, а точнее родных контролов windows.

    Пример
    Я использовал контрол браузера. Описание его найдёте в C:\Windows\system32\shdocvw.dll. В реестре обзываетсья как Shell.Explorer.2

    В нужное место на форме я через меню Create -> object... выбираю Control и в списке отмечаю "Обозреватель веб-страниц (Microsoft)" (название зависит от локализации). Если в списке контролов такового не оказалось - Вы можете сами добавить через кнопку Add Control To list... по указанному выше пути.

    Теперь у Вас на форме есть контрол. Можете задать ему некоторые параметы. Такие как:
    • На всю страницу
    • До первого региона
    • -
    • Автивироваться при просмотре
    • и т.д.

    Также Вы можете менять некоторые свойства контрола, например, Name - удобно для того что бы сразу обращаться к обьекту или размеры по ширине и высоте.

    Теперь добавляем рт-поле Body в котором будут храниться нужные файлы и пишем кнопку для обработки.

    Name обьекта мы заменим на "Browser"

    Краткое описание алгоритма
    • составить список всех атачментов
    • выбрать один который хотим просмотреть
    • скидываеться выбраный атачмент в тэмповую папку на машине пользователя
    • обращаемся к контролу0-просмотрщику
    • открываем нужный нам атачмент с диска


    [codebox]Sub Click(Source As Button)
    On Error Goto errorHandler

    Dim ws As New NotesUIWorkspace
    Dim mWebBrowser As Variant , varAttachmentNames As Variant, vPrompt As Variant, vFile As Variant
    Dim strTempPath As String
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    Dim rtitem As NotesRichTextItem

    Set uidoc = ws.CurrentDocument
    Set doc = uidoc.Document
    Set rtitem = doc.GetFirstItem( "Body" )

    'If Not (uidoc.IsNewDoc) Then Exit Sub
    If rtitem Is Nothing Then Exit Sub
    If Isempty( rtitem.EmbeddedObjects ) Then Exit Sub

    varAttachmentNames = ""
    Forall x In rtitem.EmbeddedObjects ' пробегаемся по атачментам в поле Боди
    If Len( varAttachmentNames ) > 0 Then varAttachmentNames = varAttachmentNames +Chr(10)
    varAttachmentNames = varAttachmentNames + x.Name
    End Forall
    If Len( varAttachmentNames ) = 0 Then Exit Sub
    Let strTempPath = Environ$("TEMP") ' путь во временную папку


    varAttachmentNames = Split( varAttachmentNames, Chr(10) ) ' список всех имен атачментов
    vPrompt = ws.Prompt( 4, "titile", "prompt", varAttachmentNames(0), varAttachmentNames ) ' выбираем кактой-то один
    If Isempty(vPrompt) Then Exit Sub
    Kill strTempPath + "\" + vPrompt ' удаляем на всякий случай

    Set vFile = rtitem.GetEmbeddedObject(vPrompt)
    Call vFile.ExtractFile(strTempPath + "\" + vPrompt) ' скидываем файл на диск

    Set mWebBrowser =uidoc.GetObject("Browser") ' обращаемся к нашему контролу-просмотрщику
    If mWebBrowser Is Nothing Then Exit Sub

    mWebBrowser.navigate strTempPath + "/" + vPrompt ' собственно открываем на просмотр
    Exit Sub

    errorHandler:
    Select Case Err
    Case 75
    'попытка удалить с ошибкой
    Resume Next
    Case Else
    Msgbox "Error " & Err & " in line: " & Erl & ": " & Error$
    Exit Sub
    End Select
    Resume Next
    End Sub[/codebox]

    За помощ благодарен EHT за то что натолкнул на идею

    з.ы. Для любых рисунков лучше использовать контрол PreView C:\Windows\system32\shimgvw.dll. Но у меня так и не получилось изменить размеры самого контрола (192х192 как я не старался). Хотя контрол очень удобный, можно зумить и переворачивать фото. разница лишь в Class контрола "Preview.Preview.1" и в том как происходит просмотр: через метод ShowFile( "File_path", 1 )

    з.з.ы. Замечания, пожалуйста, излагайте в этой теме http://codeby.net/forum/threads/25430.html
     
Загрузка...
Похожие Темы - Просмотр файлов документе
  1. NickProstoNick
    Ответов:
    2
    Просмотров:
    2.577
  2. morpheus
    Ответов:
    5
    Просмотров:
    4.273
  3. ghost
    Ответов:
    5
    Просмотров:
    183
  4. Irina7777
    Ответов:
    5
    Просмотров:
    199
  5. Serduko
    Ответов:
    0
    Просмотров:
    305

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