- サマリ: 印刷プレビューの判定
- 環境: Writer
- 状態: 解決
- 投稿者: ジョジョ?
- 投稿日: 2008-09-18 (木) 10:39:01
質問 
たとえばWriterで、現在のViewが通常表示か印刷プレビューかの判断をしたいのですができますか?方法を教えてください。
回答 
- プロパティひとつで印刷プレビューかどうかを判断できるものがなかったような気がします。代わりに、コントローラのインターフェースを調べて判定できそうです。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| | 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 インターフェースをサポートしていないので使えませんでした。
- 判定することができました。ありがとうございました。 -- ジョジョ
感想,コメント,メモ 