Top > OOobbs2 > 142

** [[OOobbs2/142]] [#p7ca73d1]
-''サマリ'': 印刷プレビューの判定
-''環境'': Writer
-''状態'': 未解決
-''状態'': 解決
-''投稿者'': [[ジョジョ]]
-''投稿日'': 2008-09-18 (木) 10:39:01

*** 質問 [#a6974f42]
たとえばWriterで、現在のViewが通常表示か印刷プレビューかの判断をしたいのですができますか?方法を教えてください。
*** 回答 [#u909b1eb]
- プロパティひとつで印刷プレビューかどうかを判断できるものがなかったような気がします。代わりに、コントローラのインターフェースを調べて判定できそうです。

#code(ob){{
Sub test_a
  msgbox IsPrintPreview( ThisComponent )
End Sub


Function IsPrintPreview( oDoc ) As Boolean
  Dim bPreview As Boolean
  sViewInterface = ""
  oModMgr = CreateUnoService( _
      "com.sun.star.frame.ModuleManager")
  sModule = oModMgr.identify(oDoc)
  
  Select Case sModule
  Case "com.sun.star.text.TextDocument"
    sViewInterface = "com.sun.star.view.XViewSettingsSupplier"
  Case "com.sun.star.sheet.SpreadsheetDocument"
    sViewInterface = "com.sun.star.sheet.XSpreadsheetView"
  Case Else
    sViewInterface = ""
  End Select
  
  If sViewInterface <> "" Then
    oController = oDoc.getCurrentController()
    bPreview = NOT HasUnoInterfaces(oController, sViewInterface)
  End If
  
  IsPrintPreview = bPreview
End Function
}}

calc ではそれらしいインターフェースがありますが、writer ではいまいち。ほんとはサービスを調べたいのですが、印刷プレビュー時のコントローラが com.sun.star.lang.XServiceInfo インターフェースをサポートしていないので使えませんでした。

-- はにゃ? &new{2008-09-18 (木) 14:23:49};
- 判定することができました。ありがとうございました。 -- ジョジョ &new{2008-09-22 (月) 14:10:45};

#comment
*** 感想,コメント,メモ [#p8cb5e58]

#comment

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