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

これまで作成した関数を組み合わせて、工程データと列番号からチャート用の横線を描画する関数を作成します。

この関数の処理の流れを簡単に説明すると

  1. getChartBarObject関数(後述)を使って、描画に使う図形オブジェクトを取得する
  2. 列番号から列オブジェクトを取得する
  3. BarTypeには"Plan"または"Act"を指定し、それぞれ予定か実績を区別する
  4. 予定または実績のデータから図形の位置と幅を計算し、合わせて色を取得する
  5. プロパティから図形の厚みを計算し、縦位置を補正する
  6. 描画する図形が直線か長方形であるかで分岐し、それぞれにあった図形の設定を行う
  7. setDrawSize関数で図形の位置と大きさを指定する
となります。

実際のコードを下記に示します。

Sub setChartBar(BarType As String, _
    Schedule As Object, Row As Integer)
    
    Dim X As Long
    Dim Y As Long
    Dim Width As Long
    Dim Height As Long
    Dim LineColor As Long
    Dim FillColor As Long
    
    Dim oDraw As Object
    Dim oRow As Object
    
    oDraw = getChartBarObject(Schedule)
    oRow = oSheet.Rows.getByIndex(Row - 1)
    
    Select Case BarType
        
        Case "Plan"
            X = getPositionXByDate(Schedule._PlanBegin)
            Y = oRow.Position.Y + oRow.Size.Height * _
                oProperty._ChartBarPlanPos / 100
            Width = getPositionXByDate(Schedule._PlanEnd) - X
            
            LineColor = oProperty._ChartBarPlanLineColor
            FillColor = Schedule._PlanColor
        Case "Act"
            X = getPositionXByDate(Schedule._ActBegin)
            Y = oRow.Position.Y + oRow.Size.Height * _
                oProperty._ChartBarActPos / 100
            Width = getPositionXByDate(Schedule._ActEnd) - X
        
            LineColor = oProperty._ChartBarActLineColor
            FillColor = Schedule._ActColor
    End Select
    
    Height = oProperty._ChartBarWeight * 50
    Y = Y - Height / 2
    
    Select Case Schedule._LineType
        Case LineType_Rectangle
            oDraw.lineColor = LineColor
            oDraw.fillColor = FillColor
            oDraw.lineWidth = 0
        Case LineType_Line
            oDraw.lineColor = FillColor
            oDraw.lineWidth = Height
            Height = 0
    End Select
    
    setDrawSize(oDraw, X, Y, Width, Height)
    
End Sub

getChartBarObject関数では、RectPosとLinePosというグローバル変数によって次々と使用していないオブジェクトを返すという処理をするものです。実際のコードは下記となります。

Function getChartBarObject(Schedule As Object) As Object
    
    Select Case Schedule._LineType
        Case LineType_Rectangle
            RectPos = RectPos + 1
            getChartBarObject = ChartBarRect(RectPos)
        Case LineType_Line
            LinePos = LinePos + 1
            getChartBarObject = ChartBarLine(LinePos)
    End Select
    
End Function
スポンサーサイト

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

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