OpenOffice.org Basicでガントチャート
OpenOffice.org Basicを使ってガントチャート作成用マクロ ガントチャートforOOoを開発する手順を紹介していきます。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
項目編集ダイアログ その5

配置したボタン類とリストボックスの動作を作成します。
これら全てのコントロールで同じアクションリスナーを利用するので、これまで同様にイベント発生元のコントロール名から処理を振り分ける処理を書きます。コードを示すと下記となります。

mdlEditItem

Private Sub dlgEditItemActionListener_actionPerformed(oEvent)
    Select Case oEvent.Source.getModel().Name
        Case "lstSchedule"
            lstSchedule_actionPerformed
        Case "btnEditPerson"
            btnEditPerson_actionPerformed
        Case "btnAddPerson"
            btnAddPerson_actionPerformed
        Case "btnDelPerson"
            btnDelPerson_actionPerformed
        Case "btnEditSchedule"
            btnEditSchedule_actionPerformed
        Case "btnAddSchedule"
            btnAddSchedule_actionPerformed
        Case "btnDelSchedule"
            btnDelSchedule_actionPerformed
        Case "btnOK"
            btnOK_actionPerformed
        Case Else
        
    End Select
End Sub
 
Private Sub dlgEditItemActionListener_disposing: End Sub

これだけの量になれば、これまで不必要に思われたこの書き方を納得して頂けるのではないでしょうか。
この書き方には多くのメリットがあり、ここでコントロールに動作を割り当てる別の設定方法と比較してその利点を示します。

IDEで各コントロールに直接動作を割り当てる方法
これが一番簡単であるように思われるかもしれませんが、これには欠点があります。それは、モジュールが違っても同じ名前の関数を割り当てることができないということです。いくつかのダイアログでbtnOKという名前を使っている関係上、btnOK_actionPerformed関数をいくつも作っていますが、これを各ダイアログのコントロールにそれぞれのモジュールにある関数を割り当てても、一番最初に書かれたbtnOK_actionPerformed関数が実行されてしまいます。
つまり、各ダイアログ毎に別々のコントロール名称を用いるか別々の関数名を用いなくてはなりません。
極少量のダイアログを使ったマクロならこれでいいかもしれませんが、10個を越えるダイアログにいくつものコントロールを配置したようなマクロを作成する時にはとても管理できなくなります。上記の方法であれば、アクションリスナーの名前だけ変えておけば、そのリスナー関数内で指定される処理はまず同じモジュール内の関数を優先してくれるので、このような名称の衝突がありません。
それぞれにリスナーを作成して割り当てる方法
リスナーを生成時に割り当てる名前を重複させる事はできないので、同じくダイアログやコントロールが増えればそれだけ名称を考えなくてはなりません。これにより、名称がとても複雑になり管理が難しくなることが予想されます。
また一つの処理のみを書きたいと思っていても、リスナーの持っている全ての動作を宣言しておかないとエラーになるので、必然的に書かなくてはならないコードが増えます。例えば、マウスリスナーでボタンを押した時のみの処理を書きたくても、離した時、カーソルが上に来た時、離れた時、終了時といった他の処理も書かなくてはならなくなります。

このことから、現在のOOoBasicの仕様ではこれまで利用してきた方法が一番簡単であると考えています。

スポンサーサイト

テーマ:OpenOffice.org - ジャンル:コンピュータ

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://shinob.blog42.fc2.com/tb.php/71-3fda09cc
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
COPYRIGHT(C) 2004 POWERD BY FC2 ALLRIGHT RESERVED.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。