Top > OOoBasic > Generic > Desktop

Desktop Edit

com.sun.star.frame.Desktop サービス。

OOo のインスタンスがあるときには必ず存在します。また、古の StarDeskop に相当します。この名残は OOo Basic から Desktop にアクセスするときのランタイム関数に名前が残っています。

Desktop は一種のフレームオブジェクト (それぞれのドキュメントなどが持つフレーム) であり、いつも Active です。また、このサービスの XDesktop インターフェースのメソッド terminate により OOo を終了させることができます (OOo Basic からではうまくいきません)。

普通のドキュメントのフレームは Desktop のサブフレームとして追加されています。この場合、子フレームに階層をたどってアクセスできます。もちろん、追加されていないドキュメントのフレームには Desktop からアクセスできません。

Desktop Edit

OOo Basic では次のどちらかを利用してアクセスします。

oDesktop = StarDesktop
oDesktop = CreateUnoService("com.sun.star.frame.Desktop")

CurrentComponent Edit

現在のコンポーネントを利用したいときに Desktop からアクセスします。Desktop の CurrentComponent はスクリプトを実行したフレームのコンポーネントに相当します。

oModel = oDesktop.getCurrentComponent()

これを利用すれば ThisComponent とは違い、別のドキュメントに存在するマクロを別のドキュメントから実行して実行したドキュメントを操作することもできます。しかし、動作が複雑になることがあるので注意が必要です。

フレーム Edit

Desktop を最上階層として一般的なドキュメントは子フレームとしてその下に存在します。階層を通じて子フレームであるドキュメントのフレームにアクセスできます。

oFrames = oDesktop.getFrames()
For i = 0 To oFrames.getCount() -1
  msgbox oFrames.getByIndex(i)
Next i

タイトルバーに表示されているタイトルなどを参照してフレームを特定する必要があります。

アクティブフレーム Edit

アクティブなフレームを利用したいときには Desktop からアクセスします。

oActiveFrame = oDesktop.activeFrame()

ドキュメントの読み込み Edit

Desktop の com.sun.star.frame.XComponentLoader インターフェースの loadComponentFromURL メソッドを利用してドキュメントなどを開くことができます。

ドキュメントオブジェクトを取得 Edit

すでに開いているドキュメントのドキュメントオブジェクトを取得するには、デスクトップからアクセスできるコンポーネントから探します。

以下ではドキュメントの URL を指定して見つけます。

Function FindDocument(sURL As String) As Variant
  found = nothing
  oComponents = StarDesktop.getComponents()
  oEnume = oComponents.createEnumeration()
  Do While oEnume.hasMoreElements()
    oComp = oEnume.nextElement()
    If oComp.getURL() = sURL Then
      found = oComp
      Exit Do
    End If
  Loop
  FindDocument = found
End Function

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes