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

これまで作成してきた編集用のダイアログを使いやすくまとめたデータ管理ダイアログを作ります。

これで一気に使えるものを作っていると言う実感がわいてくるのではないでしょうか。蛇足になりますが、ここで感じてもらいたいと思う事は、それなりに使えるものを作ろうと考えた時、目に見えるもの以外に準備無くてはならないことが非常に多いということです。目的ばかりを見て、手段を見つけられない人をよく見かけます。また、面倒な手段を省こうと、必要な手順まで省く人もいます。プログラミングは「目的を実現させるための手段を検討し具現化させる」という生きるために必須の能力を訓練するのに非常によく合った分野ではないかと感じています。

では本題に戻って、IDEでダイアログを設計します。コントロールを配置して、完成したダイアログは下図となります。


まず、これまで通り必要なコントロールや文字列用の変数を宣言します。

Option Explicit
 
Private oDialog As Object
 
Private lstData As Object
Private btnAddCategory As Object
Private btnAddItem As Object
Private btnDelete As Object
Private btnUp As Object
Private btnDown As Object
Private btnSave As Object
Private btnEditProperty As Object
Private btnProgress As Object
Private btnImport As Object
Private btnPerson As Object
 
Public dlgDataManager_Title As String
Public dlgDataManager_btnAddCategory_Label As String
Public dlgDataManager_btnAddItem_Label As String
Public dlgDataManager_btnDelete_Label As String
Public dlgDataManager_btnUp_Label As String
Public dlgDataManager_btnDown_Label As String
Public dlgDataManager_btnSave_Label As String
Public dlgDataManager_btnEditProperty_Label As String
Public dlgDataManager_btnProgress_Label As String
Public dlgDataManager_btnImport_Label As String
Public dlgDataManager_btnPerson_Label As String
 
Private oActionListener As Object
 
Private flgUpdate As Boolean

次に、初期化用のInitialize関数を作成します。

Private Sub Initialize
    
    oDialog = createUnoDialog(DialogLibraries.Standard.dlgDataManager)
    
    With oDialog
        .Title = dlgDataManager_Title
        lstData = .getControl("lstData")
        btnAddCategory = .getControl("btnAddCategory")
        btnAddItem = .getControl("btnAddItem")
        btnDelete = .getControl("btnDelete")
        btnUp = .getControl("btnUp")
        btnDown = .getControl("btnDown")
        btnSave = .getControl("btnSave")
        btnEditProperty = .getControl("btnEditProperty")
        btnProgress = .getControl("btnProgress")
        btnImport = .getControl("btnImport")
        btnPerson = .getControl("btnPerson")
    End With
    
    oActionListener = _
        CreateUnoListener("dlgDataManagerActionListener_", _
            "com.sun.star.awt.XActionListener")
    
    With btnAddCategory
        .setLabel(dlgDataManager_btnAddCategory_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnAddItem
        .setLabel(dlgDataManager_btnAddItem_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnDelete
        .setLabel(dlgDataManager_btnDelete_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnUp
        .setLabel(dlgDataManager_btnUp_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnDown
        .setLabel(dlgDataManager_btnDown_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnSave
        .setLabel(dlgDataManager_btnSave_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnEditProperty
        .setLabel(dlgDataManager_btnEditProperty_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnProgress
        .setLabel(dlgDataManager_btnProgress_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnImport
        .setLabel(dlgDataManager_btnImport_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnPerson
        .setLabel(dlgDataManager_btnPerson_Label)
        .addActionListener(oActionListener)
    End With
    
    With lstData
        .addActionListener(oActionListener)
    End With
    
    Update_lstData
    
End Sub

各コントロールを変数に割当て、アクションリスナーと文字列を設定しています。最後にあるUpdate_lstData関数は前回作った管理用データを使って、登録されたデータを一覧できるようリストボックスを初期化する関数です。コードは下記となります。

Private Sub Update_lstData
    
    Dim i As Integer
    Dim s As String
    
    mdlBin.CreateBins
    clearListBox(lstData)
    
    For i = 1 To UBound(Bins())
        
        Select Case Bins(i)._Type
            Case BINTYPE_CATEGORY
                If Categories(Bins(i)._Id)._Visible Then
                    s = "[-]"
                Else
                    s = "[+]"
                End If
                s = s & " " & Categories(Bins(i)._Id)._Name
            Case BINTYPE_ITEM
                With Items(Bins(i)._Id)
                    s = Space(Bins(i)._Depth * 6) & ._Name & _
                        " [" & ._BeginDate & " - " & ._EndDate & "]"
                End With
        End Select
        
        lstData.AddItem(s, lstData.getItemCount())
        
    Next i
    
End Sub

分類が非表示か否かで+/-を付加して名前を表示し、項目ならばインデントをスペースで付加してから名称と開始・終了日を表示します。

そして、Show関数を作成して表示を行います。

Public Sub Show
    
    flgUpdate = False
    
    Initialize
    
    With oDialog
        .execute
        .dispose
    End With
    
End Sub

またいつものように、各文字列を初期化するためのコードをmdlMain.Initialize関数に追加しておきます。

dlgDataManager_Title = "データ編集"
dlgDataManager_btnAddCategory_Label = ControlLabelString("分類追加")
dlgDataManager_btnAddItem_Label = ControlLabelString("項目追加")
dlgDataManager_btnDelete_Label = ControlLabelString("削除")
dlgDataManager_btnUp_Label = ControlLabelString("上へ")
dlgDataManager_btnDown_Label = ControlLabelString("下へ")
dlgDataManager_btnSave_Label = ControlLabelString("保存")
dlgDataManager_btnEditProperty_Label = ControlLabelString("環境設定")
dlgDataManager_btnProgress_Label = ControlLabelString("進捗線")
dlgDataManager_btnImport_Label = ControlLabelString("データ取込")
dlgDataManager_btnPerson_Label = ControlLabelString("担当編集")

次回はアクションリスナーの設定を行います。

スポンサーサイト

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

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