2009年10月10日

非表示ドキュメント(Hidden=True)の注意事項

ドキュメントを非表示で開く事ができます。

 Dim aArg(1) As New com.sun.star.beans.PropertyValue
 aArg(0).Name = "ReadOnly"
 aArg(0).Value = True
 aArg(1).Name = "Hidden"
 aArg(1).Value = True
 oDoc = StarDesktop.loadComponentFromUrl(URL, "_blank", 0, aArg())

非表示のドキュメントには [ oDoc ]を使って普通にアクセスすることができます。

非表示ドキュメントは「非表示」ですからマニュアルでは閉じる事ができません。
マクロで非表示ドキュメントを指すオブジェクトを使ってClose メソッドを実行する
必要があります。

それでは、マクロで閉じないまま OOo を終了したらどうなるでしょう。

[ Hidden=True ] で開いた非表示ドキュメントは、OOo 終了時に自動的に
OOo が閉じてくれます(なお、同じ非表示でも Visible=False で非表示に
しているドキュメントは対象外です)。


ここで、問題が一点だけあります。

普段、『全画面(最大化)』で OOo.Calc を使っている人には特に煩わしい問題です。
ただし、何かトラブルを引き起こすというような問題ではありません。
単なる見た目の問題です。

それは、
    非表示ドキュメントを閉じた後に、
    次に開くドキュメントが『縮小ウィンドウ』で表示される。
という症状です。

これは、[ Hidden=True ] によるオープン処理が【その時の OOo ウィンドウ
サイズ】を無視して常に『縮小ウィンドウサイズ』で実行される為です。

「最後に閉じたドキュメントのウィンドウサイズ」という情報が保存されており、
次に開くドキュメントは、その保存されたウィンドウサイズで開くようになっています。

非表示ドキュメントをマクロで閉じないまま OOo を終了する場合、通常
ドキュメントが全て閉じて、OOo が終了する直前に非表示ドキュメントが
閉じられます。つまり、この場合、非表示ドキュメントの『縮小ウィンドウサイズ』
が保存され、次回のドキュメントのウィンドウサイズとなります。


このウィンドウ情報は以下のファイルに保存されている事が判りましたので、
[ $(user)/registry/data/org/openoffice/Setup.xcu ]
該当箇所を『全画面(最大化)』に書き換えるマクロを作成しました。

この問題の詳細は下記を参照して下さい。

   OpenOffice.org Q&A [ faq/5/106 ]



下記マクロを非表示ドキュメントを閉じた後のタイミング
  ・ 非表示ドキュメントへのクローズ命令の後  または
  ・ [ ツール>カスタマイズ>イベント>アプリケーションの終了 ]
で、実行すれば、その後に開くドキュメントは「最大化」で開かれます。

Sub WindowMaximum4HiddenDocument()
' OpenOffice.org Q&A [faq/5/106]
' http://oooug.jp/faq/index.php?faq/5/106

Dim oCP As Object
Dim oCUA As Object
Dim aProps(0) As New com.sun.star.beans.PropertyValue
Dim sAttr As String
Dim sItems As Variant

 oCP = CreateUnoService("com.sun.star.configuration.ConfigurationProvider")
 aProps(0).Name = "nodepath"
 aProps(0).Value = _
    "/org.openoffice.Setup/Office/Factories/Factory['com.sun.star.sheet.SpreadsheetDocument']"
 oCUA = oCP.createInstanceWithArguments _
    ("com.sun.star.configuration.ConfigurationUpdateAccess", aProps)
 sAttr = oCUA.ooSetupFactoryWindowAttributes
 sItems = Split(sAttr, ";")
 sItems(1) = "4"    '4: WindowSize Maximum
 oCUA.ooSetupFactoryWindowAttributes = Join(sItems, ";")
 oCUA.commitChanges()
End Sub



お役に立ちましたら拍手して貰えると嬉しいです

addinbox at 12:59コメント(0)マクロ・関数 | ブック・シート・セル 

コメントする

名前
URL
 
  絵文字
 
 
記事検索
プロフィール

角田(つのだ)




  • ライブドアブログ