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

IDEにて「BASIC ダイアログ」を挿入し、名称を「dlgEditSchedule」とします。そして、データ編集に必要なコントロールを配置すると下図のようになります。
ここで、chkCalendarというチェックボックスがありますが、これは日付のデータをカレンダーを使って入力できるようにするための工夫です。これは後に説明するカレンダーダイアログが完成してから補足する事にします。


次に、このダイアログを操作するためにモジュールを挿入し、名称を「mdlEditSchedule」とします。
このモジュールでのダイアログの操作を簡便にするため、ダイアログと登録した全コントロール用の変数を宣言し、初期化処理にてそれを割り当てます。
また、ボタンを押した時の処理もマクロ内で割り当てるためActionLestener用変数、色設定用のMouseListener用変数も宣言します。

下記にコードの一部を示し、各部の説明を行います。

Option Explicit

Private oDialog As Object '---(1)
 
Private lblId As Object '---(2)
Private lblName As Object
Private lblPlan As Object
Private lblAct As Object
Private lblLineType As Object
Private lblWeight As Object
 
Private txtId As Object
Private txtName As Object
Private txtPlanBegin As Object
Private txtPlanEnd As Object
Private imgPlanColor As Object
Private txtActBegin As Object
Private txtActEnd As Object
Private imgActColor As Object
Private lstLineType As Object
Private txtWeight As Object
 
Private chkCalendar As Object
Private btnOK As Object
 
Public dlgEditSchedule_Title As String
Public dlgEditSchedule_lblId_Text As String
Public dlgEditSchedule_lblName_Text As String
Public dlgEditSchedule_lblPlan_Text As String
Public dlgEditSchedule_lblAct_Text As String
Public dlgEditSchedule_lblLineType_Text As String
Public dlgEditSchedule_lblWeight_Text As String
Public dlgEditSchedule_chkCalendar_Label As String
Public dlgEditSchedule_btnOK_Label As String
Public dlgEditSchedule_PlanColor As String
Public dlgEditSchedule_ActColor As String
 
Private oActionListener As Object '---(3)
Private oMouseListener As Object
 
Private Id As Integer '---(4)
Private flgUpdate As Boolean '---(5)
Private flgCalendar As Boolean
 
Public Function Show(TargetId As Integer) As Boolean '---(6)
    
    flgUpdate = False
    
    Id = TargetId
    If Id < 1 Or mdlSchedule.Count < Id Then Exit Function
    
    Initialize
    setValues(Schedules(Id))
    With oDialog
        .execute
        .dispose
    End With
    
    Show = flgUpdate
    
End Function
 
Private Sub Initialize '---(7)
    
    oDialog = createUnoDialog(DialogLibraries.Standard.dlgEditSchedule)
    
    With oDialog
        .Title = dlgEditCategory_Title
        lblId = .getControl("lblId")
        lblName = .getControl("lblName")
        lblPlan = .getControl("lblPlan")
        lblAct = .getControl("lblAct")
        lblLineType = .getControl("lblLineType")
        lblWeight = .getControl("lblWeight")
        
        txtId = .getControl("txtId")
        txtName = .getControl("txtName")
        txtPlanBegin = .getControl("txtPlanBegin")
        txtPlanEnd = .getControl("txtPlanEnd")
        imgPlanColor = .getControl("imgPlanColor")
        txtActBegin = .getControl("txtActBegin")
        txtActEnd = .getControl("txtActEnd")
        imgActColor = .getControl("imgActColor")
        lstLineType = .getControl("lstLineType")
        txtWeight = .getControl("txtWeight")
        
        chkCalendar = .getControl("chkCalendar")
        btnOK = .getControl("btnOK")
    End With
    
    oActionListener = CreateUnoListener("dlgEditScheduleActionListener_", _
        "com.sun.star.awt.XActionListener") '---(8)
    oMouseListener = CreateUnoListener("dlgEditScheduleMouseListener_", _
        "com.sun.star.awt.XMouseListener")
    
    lblId.Text = dlgEditSchedule_lblId_Text
    lblName.Text = dlgEditSchedule_lblName_Text
    lblPlan.Text = dlgEditSchedule_lblPlan_Text
    lblAct.Text = dlgEditSchedule_lblAct_Text
    lblLineType.Text = dlgEditSchedule_lblLineType_Text
    lblWeight.Text = dlgEditSchedule_lblWeight_Text
    
    imgPlanColor.addMouseListener(oMouseListener)
    imgActColor.addMouseListener(oMouseListener)
    
    txtPlanBegin.addMouseListener(oMouseListener)
    txtPlanEnd.addMouseListener(oMouseListener)
    txtActBegin.addMouseListener(oMouseListener)
    txtActEnd.addMouseListener(oMouseListener)
    
    lstLineType.AddItem(LineType_Line_Text,0) '---(9)
    lstLineType.AddItem(LineType_Rectangle_Text,0)
    lstLineType.AddItem(LineType_Default_Text,0)
    
    chkCalendar.Label = dlgEditSchedule_chkCalendar_Label
    
    btnOK.setLabel(dlgEditSchedule_btnOK_Label)
    btnOK.addActionListener(oActionListener)
    
End Sub

各部の解説を行います

  1. ダイアログおよび各コントロール用変数の宣言
  2. 表示初期化用変数の宣言
  3. アクションリスナー用変数の宣言
  4. 編集中のデータを認識するためのIDを保存する変数を宣言
  5. データの更新を行ったか否かを保存するための変数を宣言
  6. ダイアログ表示用の関数で、編集したい分類IDを引数とします
  7. ダイアログ初期化用関数
  8. 本ダイアログ用のアクションリスナー生成
  9. 線の種類をリストボックスから選択するための項目追加

次に、表示初期化用変数をmdlMain内のInitialize関数にて定義します。

mdlMainのInitialize関数に追記

    dlgEditSchedule_Title = "工程編集"
    dlgEditSchedule_lblId_Text = ControlLabelString("ID")
    dlgEditSchedule_lblName_Text = ControlLabelString("名称")
    dlgEditSchedule_lblPlan_Text = ControlLabelString("予定")
    dlgEditSchedule_lblAct_Text = ControlLabelString("実績")
    dlgEditSchedule_lblLineType_Text = ControlLabelString("線種")
    dlgEditSchedule_lblWeight_Text = ControlLabelString("人数")
    dlgEditSchedule_chkCalendar_Label = ControlLabelString("カレンダーを使用")
    dlgEditSchedule_btnOK_Label = ControlLabelString("設定")
    dlgEditSchedule_PlanColor = "予定線色"
    dlgEditSchedule_ActColor = "実績線色"

このまま実行すると、各種Listener用の関数が正しく定義されていないので、エラーになります。もし、試しに動作させたい場合は、リスナーを追加する行をコメントアウトしてみて下さい。

スポンサーサイト

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

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