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

IDEでダイアログを追加し、名称を「dlgEditProgress」とし必要なコントロールを追加します。配置後は下図となります。


そして、いつも通りモジュールを追加して「mdlEditProgress」とします。

Option Explicit
 
Private oDialog As Object
 
Private btnOK As Object
Private btnDel As Object
Private lstProgress As Object
 
Public dlgEditProgress_btnOK_Label As String
Public dlgEditProgress_btnDel_Label As String
 
Private oActionListener As Object
Private flgUpdate As Boolean

まず、変数宣言の強制をしてから、各種コントロール、表示、アクションリスナー用変数を宣言します。

Sub Show
    Initialize
    With oDialog
        .execute
        .dispose
    End With
End Sub
 
Sub Initialize
    
    oDialog = createUnoDialog(DialogLibraries.Standard.dlgEditProgress)
    'mdlText.MakeDialogModuleTemplete(oDialog)
    
    With oDialog
        btnOK = .getControl("btnOK")
        btnDel = .getControl("btnDel")
        lstProgress = .getControl("lstProgress")
    End With

    oActionListener = _
        CreateUnoListener("dlgEditProgressActionListener_", _
            "com.sun.star.awt.XActionListener")
    
    btnOK.addActionListener(oActionListener)
    btnDel.addActionListener(oActionListener)
    lstProgress.addActionListener(oActionListener)
    
    btnOK.Label = dlgEditProgress_btnOK_Label
    btnDel.Label = dlgEditProgress_btnDel_Label
    
    setlstProgress
    
End Sub

ダイアログを表示するためのShow関数を作成し、初期化用のInitialize関数を作成します。これまでと同様にダイアログを取得してからコントロールを変数に割当て、アクションリスナーを追加、表示設定を行います。
また、進捗データの一覧にsetlistProgress関数を作成し利用していますが、コードは下記となります。

Sub setlstProgress
    
    Dim i As Integer
    Dim s As String
    
    clearListBox(lstProgress)
    
    For i = 1 To 20
        s = i & " : "
        If Progresses(i) > FirstDate Then
            s = s & Progresses(i)
        End If
        
        lstProgress.addItem(s, i - 1)
    Next i
    
End Sub

mdlMain内にあるclearListBox関数で登録済みの内容を消去してから、進捗データをリストボックスに追加していきます。

次にそれぞれのコントロールの動作を作成します。

Private Sub lstProgress_actionPerformed
    
    Dim i As Integer
    
    i = lstProgress.getSelectedItemPos + 1
    If i < 1 Then Exit Sub
    
    Dim wk As Date
    
    wk = mdlCalendar.Show(Now(), CALENDARTYPE_SELECT)
    
    If 0 < wk Then
        Progresses(i) = wk
        mdlItem.setAllProgress(i)
        setlstProgress
    End If
    
End Sub

これはリストボックスをダブルクリックした場合の処理で、選択済みの位置を取得してからカレンダーダイアログを表示して日時を取得します。そして取得した日付から、前回作成したsetAllProgress関数を使って進捗データを生成して、リストを更新します。

Private Sub btnDel_actionPerformed

    Dim i As Integer
    
    i = lstProgress.getSelectedItemPos + 1
    If i < 1 Then Exit Sub
    
    mdlItem.clearAllProgress(i)
    setlstProgress
    
End Sub

これは、削除ボタン用の関数で、選択された進捗データをcleaeAllProgress関数で初期化し、リストを更新しています。

Private Sub dlgEditProgressActionListener_actionPerformed(oEvent)
    Select Case oEvent.Source.getModel().Name
        Case "btnOK"
            oDialog.endExecute
        Case "btnDel"
            btnDel_actionPerformed
        Case "lstProgress"
            lstProgress_actionPerformed
        Case Else
        
    End Select
End Sub
 
Private Sub dlgEditProgressActionListener_disposing(): End Sub

最後にアクションリスナー用の関数を作成します。ここでbtnOKボタンは一文で命令が終了するのであえて動作用の関数を生成しませんでした。これも従来通り、呼び出し元の名称から処理を分岐してそれぞれの動作を行わせます。また、終了時のエラーを回避するためdisposing関数も宣言しておきます。

以上で進捗データ管理ダイアログは完成です。

スポンサーサイト

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

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