Calc(87).uno:Copy後の選択状態の解除

2018-06-15

旧ブログ

t f B! P L
ディスパッチコマンドでセルをコピーをすると選択範囲の周りの枠が破線になってぐるぐる回った状態になります。それを解除するコマンドは見つけられなかったので、マクロでEscキーイベントをシミュレートすると解除することができました。

前の関連記事: Calc(86)ActionTriggerContainer、ActionTrigger、ActionTriggerSeparatorのサービスとインターフェイスの一覧


マクロでEscキーイベントをシミュレートする

from com.sun.star.awt import Key  # 定数
from com.sun.star.awt import KeyEvent  # Struct
doc = XSCRIPTCONTEXT.getDocument()  # ドキュメントのモデルを取得。 
controller = doc.getCurrentController()  # コントローラの取得。
componentwindow = controller.ComponentWindow  # コンポーネントウィンドウを取得。
keyevent = KeyEvent(KeyCode=Key.ESCAPE, KeyChar=chr(0x1b), Modifiers=0, KeyFunc=0, Source=componentwindow)  # EscキーのKeyEventを取得。
toolkit = componentwindow.getToolkit()  # ツールキットを取得。
toolkit.keyPress(keyevent)  # キーを押す、をシミュレート。
toolkit.keyRelease(keyevent)  # キーを離す、をシミュレート。
これで.uno:Copy後の選択状態の解除ができました。

KeyEvent StructのKeyCharアトリビュートにはUnicode文字を渡すので、コードポイントをchr()に渡してその戻り値を渡していますが、0を渡してもいいのかもしれません。

参考にしたサイト


Create a macro that press "Enter" automatic once. - Ask LibreOffice
Returnキーの入力をシミュレートするBasicの例。

ASCIIコード表
ASCIIコードはUnicodeのコードポイントと一致します。

次の関連記事:Calc(88)入力履歴を保持するダイアログと定型句を保持するダイアログの例

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ