Calc(48)ドキュメントイベントを調べる

2017-12-23

旧ブログ

t f B! P L
LibreOffice5(115)イベントが呼ばれる順を調べるマクロを埋め込んだCalcドキュメントを使ってその実行結果をみてみます。

前の関連記事:Calc(47)埋め込みマクロのためのPyDevプロジェクト


documentevent.odsの実行結果


Windows10 HomeのLibreOffice5.4.1.2でdocumentevent.odsを実行した結果です。

linuxBean14.04でも同じ結果になると思います。

LibreOfficeを起動していない状態で、
エクスプローラーでdocumentevent.odsをダブルクリック
マクロを有効化
ファイル→閉じる
キャンセル


ドキュメントを開いた時は、OnFocus→OnViewCreated→OnLoadの順で呼ばれています。

「文書を有効化した時」とはつまりはフレームにフォーカスが移ったときということになります。

ということでドキュメントを開くときは、フレームの作成(OnFocus)→ビュー(コントローラ?)の作成(OnViewCreated)→ビューの完成(OnLoad)という流れになっているようです。

LibreOffice5(114)ドキュメントのイベント名一覧ででてきたOnLoadFinishedは呼び出されていませんね。

ドキュメントを閉じるときは、OnPrepareViewClosing→OnPrepareUnload、とまずビューを閉じてからドキュメントを閉じています。

OnPrepareUnloadのあとにOnUnloadが呼ばれていると思われます。

スタートセンターからdocumentevent.odsを開く
マクロを有効化
ファイル→保存
ファイル→閉じる
キャンセル


ファイル→保存、とすると、OnSave→OnTitleChanged→OnSaveDone、が呼ばれていることがわかりました。

ドキュメントの編集せずに保存しているのですが、OnTitleChangedが呼ばれていました。

スタートセンターからdocumentevent.odsを開く
マクロを有効化
セルを編集する
ファイル→閉じる
キャンセル


セルを編集したときは、OnTitleChanged→OnModifyChanged、が呼ばれているようです。

新規シートを挿入しても同じ結果になりました。

編集モード(保存アイコンに星が付いた状態)になるとOnModifyChangedが呼ばれるようです。

OnTitleChangedは文書のタイトルの変更をしていなくても、ドキュメントの保存や編集をしただけで呼ばれていて、何を根拠に発火しているのかよくわかりませんでした。

スタートセンターからdocumentevent.odsを開く
マクロを有効化
ファイル→新規作成→表計算ドキュメント
新規ドキュメントをクリックした後にdocumentevent.odsをクリックして戻る
ファイル→閉じる
キャンセル


他のドキュメントをアクティブにしたときにOnUnfocusが呼ばれて、戻ってきたときにOnFocusが呼ばれています。

LibreOffice以外のウィンドウをアクティブにしてもOnUnfocusは呼ばれませんでした。

この他OnCopyToが呼ばれるときもあるのですが、どういう理由で発火されているのかよくわかりませんでした。

次の関連記事:Calc(49)追加できるリスナー一覧: その1

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ