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

終了日の計算ができれば、どの分類・項目・工程を描画するのかを決定する事ができるようになります。読込んだデータを走査し、そのデータが描画対象か否かを一つ一つ確認してフラグを設定し、描画しなくてはならない図形の数を数えています。

まずコードを示します。

Sub checkData
    
    Dim i As Integer
    Dim j As Integer
    Dim wk
    
    Dim ItemId As Integer
    Dim CategoryId As Integer
    Dim PersonId As Integer
    
    For i = 1 To mdlSchedule.Count
        
        With Schedules(i)
            
            wk = Schedules(i)
            
            ItemId = ._ItemId
            CategoryId = Items(ItemId)._CategoryId
            PersonId = Items(ItemId)._PersonId
            
            If (oProperty._CategorizeType = _
                    CATEGORIZETYPE_CATEGORY And _
                    Categories(CategoryId)._Visible = True ) _
                Or (oProperty._CategorizeType = _
                    CATEGORIZETYPE_PERSON And 0 < PersonId) Then
                
                If FirstDate < ._PlanBegin Then
                    If ._PlanEnd < ._PlanBegin Then _
                        ._PlanEnd = Int(wk._PlanBegin) + 1
                    If ._PlanBegin < oProperty._EndDate And _
                        oProperty._BeginDate < ._PlanEnd Then _
                        ._DrawPlan = True
                    Items(ItemId)._Plan = _
                        Items(ItemId)._Plan + _
                        (._PlanEnd - ._PlanBegin) * ._Weight
                End If
                
                If FirstDate < ._ActBegin Then
                    If ._ActEnd < ._ActBegin Then _
                        ._ActEnd = Int(wk._ActBegin) + 1
                    If ._ActBegin < oProperty._EndDate And _
                        oProperty._BeginDate < ._ActEnd Then _
                        ._DrawAct = True
                    Items(ItemId)._Act = Items(ItemId)._Act + _
                        (._ActEnd - ._ActBegin) * ._Weight
                End If
                
                If ._DrawPlan Or ._DrawAct Then _
                    Items(ItemId)._Draw = True
                
                j = 0
                If ._DrawPlan Then j = j + 1
                If ._DrawAct Then j = j + 1
                
                If ._LineType = LineType_Default Then _
                    ._LineType = oProperty._ChartBarType
                
                Select Case ._LineType
                    Case LineType_Rectangle
                        RectCount = RectCount + j
                    Case LineType_Line
                        LineCount = LineCount + j
                End Select
                
                If ._PlanColor < 0 Then ._PlanColor = _
                    oProperty._ChartBarPlanFillColor
                If ._ActColor < 0 Then ._ActColor = _
                    oProperty._ChartBarActFillColor
                
            End If
            
        End With
        
    Next i
    
    For i = 1 To mdlItem.Count
        
        With oProperty
            If ._PrintAllItems Or _
                (._PrintNotCompletedItem And _
                    Not Items(i)._Complete) Then
                    Items(i)._Draw = True
            End If
        End With
        
    Next i
    
    For i = 1 To 20
        If oProperty._BeginDate < Progresses(i) And _
            Progresses(i) < oProperty._EndDate Then _
                PrgsCount = PrgsCount + 1
    Next i
    
End Sub

まず全ての工程を走査し、工程の予定と実績から描画期間内にあるか否かを判断しています。
予定、実績の開始日がこのガントチャートforOOoの扱う2000年1月1日以降であるかを確認し、それ以降であれば割り当てられている項目に作業量を加算します。
工程を描画するのであればその項目を表示する必要があるので、項目の描画フラグを設定します。
そして、予定・実績の描画に必要なチャート線の数を数えて、設定された線種に合わせて図形数に加算します。また、色の設定をされていないものがあれば、プロパティから標準の色を割り当てます。

次に全ての項目を走査し、「全項目を表示する」や「未完の項目を表示する」というプロパティに合わせて項目の表示フラグを設定します。

最後に進捗(イナズマ)線のデータから必要なイナズマ線の本数を数えます。

スポンサーサイト

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

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