Диалоговое окно, открытое из встроенного представления, показывает форму диалогового окна вместо возврата непосредственно во встроенное представление - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть встроенное представление, которое открывает диалоговое окно при нажатии на документ в представлении.
При закрытии диалогового окна (с помощью кнопки сохранения и закрытия или просто закрытия с использованием основных @Commands) вместодиалоговое окно, просто закрывая его, очищает основную форму от экрана и открывает диалоговое окно, как если бы оно было формой.
Если я закрою это, появится исходная базовая форма, что я и хочу сделать без промежуточной формы диалогового окнапоявляться.

Это потому, что я использую вызовы @Function на @Command([FileSave]); @Command([FileCloseWindow]) или мне чего-то не хватает?Есть ли на форме флаг, который я не устанавливаю или действия в диалоговом окне должны быть написаны на LotusScript, и они должны каким-то образом вызывать форму?

Диалоговое окно открывается из вида по следующей формуле:

Sub Queryopendocument(Source As Notesuiview, Continue As Variant)
    Call OpenDocInDialogBox( Source, True, 1, "frmOrganization", "Organization") 
End Sub

, а функция OpenDocInDialogBox:

Function OpenDocInDialogBox( Source As NotesUIView, Continue As Variant, WhatIfNonEmbed As Integer, Form_Name As String, Dlg_Title As string) As Integer

    Dim DocColl As NotesDocumentCollection
    Dim Doc As NotesDocument
    Dim flag As Integer
    Dim ws As New NotesUIWorkspace
    Dim temp As Variant

    Continue = False
    flag = False

    Set DocColl = Source.Documents 
    Set Doc = DocColl.GetFirstDocument

    doc.IsDialogBox = "Yes"

    If Not ws.CurrentDocument Is Nothing Then 'Checks if it is an embedded view  
        If ws.CurrentDocument.EditMode Then   
            flag = ws.DialogBox( FORM_NAME, True, True, True  , False, False , False , DLG_TITLE, Doc , True, True )
        Else   
            flag = ws.DialogBox( FORM_NAME, True, True, True  , False, False , True , DLG_TITLE, Doc , True, True )   
        End If  
    Else  'open from an action button
        Select Case WhatIfNonEmbed   
        Case 0   
            MsgBox "Sorry.. You cannot open documents From the current view.", 0 + 16, "Warning"   
        Case 1              
            flag = ws.DialogBox( FORM_NAME, True, True, True, False, False , False, DLG_TITLE, Doc , True, True )   
        Case 2   
            doc.IsDialogBox = "No"
            Continue = True    
    End Select  
    End If

    OpenDocInDialogBox = flag

End Function

Флаги в коде относятся кследующий

WhatIfNonEmbed tells how to open the document If gets opened From a non-embedded view.
WhatIfNonEmbed=0 ---- Dont Allow users To Open (meaning, doc can be only opened from the form In which it is embedded)
WhatIfNonEmbed=1 ---- Open In Dialog box.
WhatIfNonEmbed=2 ---- Normal Open using the form.

1 Ответ

0 голосов
/ 01 марта 2019

Умели уже ответил в комментариях, но так как он не написал полный ответ, я сделаю это:

Событие QueryOpenDocument имеет «Продолжить» - переменную, которая сообщает, если документ должен быть »действительно "открыт (Продолжить = Истина) или запрещен (Продолжить = Ложь).

Диалоговые окна блокируются.Что ваш код делает в данный момент:

  • показывает диалоговое окно во время события QueryOpenDocument- и приостанавливает это событие до тех пор, пока диалоговое окно не будет закрыто.
  • он НЕ устанавливает переменную continue в «False»: поэтому после закрытия диалогового окна начинается «нормальный» процесс: ваш документ открывается как новое окно.

Две возможности исправить это:

  1. Точно так же, как сказал umeli: используйте переменную «Продолжить» в качестве параметра для вызова вместо «Истина»: так как этаустановите значение «false», если в этой функции отображается диалоговое окно (или возвращается к значению true, если параметр подобен этому), и переменные по умолчанию передаются по ссылке, базовая переменная Continue-Variable будет изменена, а процесс QueryOpenDocument-остановлен.
    Call OpenDocInDialogBox( Source, Continue, 1, "frmOrganization", "Organization")
  2. Установить Продолжить = Ложь в событии QueryOpenDocument.Тот же эффект, но тогда ваш полный WhatIfNonEmbed = 2 - кодовая дорожка больше ничего не делает.
...