いいね!数

0

閲覧数
99

とても基本的なことのような気がするのですが、うまくいかないので困っております。

アクションボタンを押すとフレームセットが開き、各フレームにそれぞれ文書を表示する処理をしたいのですが、下記のようにしてもそれぞれの文書が別々のウィンドウとして開いてしまい、一つのウィンドウの各フレームとして開いてくれません。

何か勘違いをしているとは思うのですが、どこがおかしいのでしょうか?

Dim Session as New NotesSession
Dim Uiws as New NotesUIworkspace
Dim Db as NotesDatabase
Dim DocA as NotesDocument
Dim DocB as NotesDocument

Set Db = Session.CurrentDatabase
Call Uiws.OpenFrameSet("FrameSet")
Set DocA = Db.CreateDocument
DocA.Form = "FormA"
Call Uiws.SetTergetFrame("FrameA")
Call Uiws.EditDocument(False , DocA , True , , False)
Set DocB = Db.CreateDocument
DocB.Form = "FormB"
Call Uiws.SetTergetFrame("FrameB")
Call Uiws.EditDocument(False , DocB , True , , False)

サーバー情報: | クライアント情報:9.0.1 | 
カテゴリ:アプリ開発 - Notes アプリ | タグ:
  | 質問日時:Oct 15, 2018, 3:57:59 PM

回答・コメント

いいね!数

0

Call Uiws.OpenFrameSet("FrameSet")

で処理を止めた場合、フレームセットは表示されますか?
ここで表示されないとフレームがないため、結果としてEditDocumentが別ウィンドウで開きます。
フレームセットのすべてのフレームが「コンテンツがありません」(初期表示未設定)でも再現しました。

また、SetTargetFrameで保存していないDocumentをEditDocumentしても開けませんでした。デバッグするとエラーが出ました。
EditDocument(True, DocA) で編集モードで開こうとしても同様)

いったん保存してからEditDocumentする、またはComposeすれば、FrameA,Bどちらも問題なく文書が表示されました。

回答日時:Oct 15, 2018, 5:58:26 PM

いいね!数

0

どうもありがとうございます。

>フレームセットのすべてのフレームが「コンテンツがありません」(初期表示未設定)

まずこの問題がありましたので、設定を行いました。(それぞれを「名前付き設計要素」にしてフォーム名を設定)

これでフレームセットは表示されたのですが、

 

>また、SetTargetFrameで保存していないDocumentをEditDocumentしても開けませんでした。

これは困りましたね。

DocA,DocBとも保存しない一時文書で、スクリプトからフィールド値を設定する必要があります。

ヘルプによるとComposeDocumentをフレームで使うためにはreturnNotesUIDocumentオプションをFalseにしてNotesUIDocumentを返さないようにする必要があるとのことですが、そうなるとフィールド値を設定するための対象オブジェクトを指定できなくなってしまいます。

 

文書をフレームに表示しつつ、その文書にスクリプトからフィールド値を設定することはできないのでしょうか?

回答日時:Oct 16, 2018, 9:01:39 AM

いいね!数

0

文書が保存されていればフレームに表示できるということなので、保存しない一時文書にすることは諦めてフレームセットを閉じる際に削除することを考えました。

DocA,DocBのonUnloadイベントでDeleteDocumentすればいいと思ったのですが、フレームセットを閉じると「Documentコマンドは利用できません」エラーが出てしまいます。ヘルプによると文書が編集モードだとこのエラーが出るようなのですが、文書は読み込みモードになっています。明示的にEditMode=Falseをしても駄目でした。

Sub Onunload(Source As Notesuidocument, Continue As Variant)
	Source.EditMode = False
	Call Source.DeleteDocument
End Sub

onUnloadイベントで文書を削除することはできないのでしょうか?

 

回答日時:Oct 17, 2018, 3:45:00 PM

いいね!数

0

かなり間が空いてしまいましたが、なんとかフレームセットを閉じる際に文書を削除することに成功しました。

かなり強引な方法ですが、FormA,FormBそれぞれに以下のコードを記述します。

'フォームのDeclarations
Private ThisUIDocument As NotesUIDocument

’フォームのOnUnloadイベント
Sub Onunload(Source As Notesuidocument, Continue As Variant)
	Set ThisUIDocument = Source
End Sub

'フォームのTerminateイベント
Sub Terminate
	ThisUIDocument.EditMode = False
	Call ThisUIDocument.DeleteDocument
End Sub

どうやら、フォームのOnUnloadイベントではSource.EditModeは強制的にTrueになり変更できないようです。

一方、フォームのTerminateイベントではEditModeを変更できますがNotesUIDocumentを取得することができません。

なので、両方のイベントを組み合わせて利用しました。

回答日時:Nov 9, 2018, 5:07:15 PM