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

編集や描画を行う際にデータを扱いやすくするため、管理用データを作成します。ここで、この管理データにBinという名前を付けることにします。

まずモジュールを追加して「mdlBin」とします。

Type BinType
    _Type As Integer
    _Id As Integer
    _Depth As Integer
    _Row As Integer
End Type
 
Public Bins() As BinType

Bin型の構造体とその配列を宣言します。この構造体にある_TypeはこのBinに入れたデータが分類か項目かを区別するために使用します。
ここに入れる値は以下のような変数を利用します。

Public Const BINTYPE_CATEGORY = 1
Public Const BINTYPE_ITEM = 2

まず、このBinを追加するための関数を作ります。

Public Function Count As Integer
    Count = UBound(Bins())
End Function
 
Public Sub AddBins(_Type As Integer, _Id As Integer, _Depth As Integer)
    
    Dim i As Integer
    
    i = Count + 1
    Redim Preserve Bins(i)
    
    With Bins(i)
        ._Type = _Type
        ._Id = _Id
        ._Depth = _Depth
    End With
    
End Sub

次に、保存されたデータからこのBinを生成する関数を作ります。

Public Sub CreateBins(Optional setAll Boolean)
    
    Dim i As Integer, j As Integer, k As Integer
    
    If IsMissing(setAll) Then setAll = True
    
    mdlCategory.LoadAll
    mdlItem.LoadAll
    mdlSchedule.LoadAll
    mdlPerson.LoadAll
    
    Redim Preserve Bins(0)
    
    For i = 1 To UBound(Categories())
        AddBins(BINTYPE_CATEGORY, i, 0)
        If Categories(i)._Visible Then
            For j = 1 To UBound(Items())
                If Items(j)._CategoryId = i And _
                    (setAll Or Items(j)._Draw) Then
                        AddBins(BINTYPE_ITEM, j, 1)
                End If
            Next j
        End If
    Next i
    
    setItemsBeginAndEndDate
    
End Sub

この関数は、今後チャートの描画にも使用しますので、多少細工があります。
setAllという引数があるのですが、これは非表示に設定された分類を区別して取り扱うためです。ここにあるOptionalというのは、関数を呼び出し時に指定しなくてもエラーになりません。全データを扱う時はここにTrueを入れ、非表示の分類データを扱わない時はFalseを入れます。そして、指定しない時には全データを扱います。

処理の内容を簡単に説明すると、分類データを順に取得して、その分類に割り当てられている項目データを探して分類データの次に登録しています。これを分類データの回数だけ繰り返します。

次回はこれを使って、管理用のダイアログを作成します。

スポンサーサイト

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

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