キーハンドラ 
ダイアログ上でキーハンドラを利用したいときには toolkit に追加したキーハンドラで全てのキー操作をトラップします。特定のダイアログ以外での操作までトラップされます。
ダイアログにテキストコントロールとボタンがある状態で Tab キー操作をトラップしています。
さらに複数行のテキストコントロールのフォーカス判定などを加えなければうまくいきません。
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
| | Dim bActivated As Boolean
sub dlg_keyhandler
GlobalScope.DialogLibraries.loadLibrary("Standard")
dlg = CreateUnoDialog(GlobalScope.DialogLibraries.Standard.D1)
oToolkit = dlg.getPeer().getToolkit()
oKeyHandler = CreateUnoListener("DlgKeyHandler_", "com.sun.star.awt.XKeyHandler")
oToolkit.addKeyHandler(oKeyHandler)
oWindowListener = CreateUnoListener("DlgTopWindow_", "com.sun.star.awt.XTopWindowListener")
dlg.addTopWindowListener(oWindowListener)
bActivated = False
dlg.execute()
dlg.dispose()
oToolkit.removeKeyHandler(oKeyHandler)
end sub
Sub DlgTopWindow_windowOpened(ev)
End Sub
Sub DlgTopWindow_windowClosing(ev)
End Sub
Sub DlgTopWindow_windowClosed(ev)
End Sub
Sub DlgTopWindow_windowMinimized(ev)
End Sub
Sub DlgTopWindow_windowNormalized(ev)
End Sub
Sub DlgTopWindow_windowActivated(ev)
bActivated = True
End Sub
Sub DlgTopWindow_windowDeactivated(ev)
bActivated = False
End Sub
Sub DlgTopWindow_disposing(ev)
End Sub
Function DlgKeyHandler_keyPressed(ev)
If bActivated and ev.KeyCode = com.sun.star.awt.Key.TAB Then
DlgKeyHandler_keyPressed = True
Exit Function
End If
End Function
Function DlgKeyHandler_keyReleased(ev)
DlgKeyHandler_keyReleased = True
End Function
Function DlgKeyHandler_disposing(ev)
End Function
|
新しく css.awt.Toolkit サービスのインスタンスを作成してダイアログを作成しても効果ありません。
MsgBox で Enter キーを無効に 
Sub MsgBoxTest()
oKeyHandler = CreateUnoListener("XKeyHandler_", "com.sun.star.awt.XKeyHandler")
oToolkit = StarDesktop.getActiveFrame().getContainerWindow().getToolkit()
oToolkit.addKeyHandler(oKeyHandler)
MsgBox "Choose Yes or No.", 4
oToolkit.removeKeyHandler(oKeyHandler)
End Sub
Function XKeyHandler_keyPressed(ev)
XKeyHandler_keyPressed = (ev.KeyCode = com.sun.star.awt.Key.RETURN)
End Function
Function XKeyHandler_keyReleased(ev)
XKeyHandler_keyReleased = True
End Function
Function XKeyHandler_disposing(ev)
End Function