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

ガントチャートforExcelでは、色を自由に設定できるようにします。
工程データには予定と実績の色情報を持たせていますし、休日の色分けもできるようにする予定ですが、色を直接入力させるようにしたのでは使い勝手が良くありません。
そこで、色をダイアログで確認しながら選択できるような機能を作りたいと思います。

まず、ダイアログの名称を「dlgSelectColor」とし、デザインは下図となります。


左側の5x5の四角はイメージボックスでImageControl1~25まで連番で名前をつけています。右側の2つは同じくイメージボックスでimgBaseとimgSelectedとしました。また、スクロールバーはscbBlueとします。

このダイアログの動作は、5x5個のイメージボックスにサンプル色を表示し、imgBaseに元の色を表示します。そして、サンプル色のイメージボックスをクリックするとimgSelectedに選択色を表示し、設定を押すと選択した色の番号が取得できるというものにします。また、色はRGBで指定するため、赤(R)と緑(G)を使ってサンプル色を生成し、青(B)はscbBlueを使って変化させることにします。
まず、これまでと同様にコントロール用の変数を作成し、表示と初期化用のマクロを作成します。この時、ボタンやイメージのクリック、スクロールバーの調整にリスナーを割り当てるので、3種類のリスナーを宣言します。下記にコードを示します。

mdlSelectColor

Option Explicit
 
Private oDialog As Object
 
Private imgPalette(24) As Object '---(1)
Private imgBase As Object
Private imgSelected As Object
Private scbBlue As Object
Private btnOK As Object
Private btnCancel As Object
Private btnNoColor As Object
 
Public dlgSelectColor_btnOK_Label As String
Public dlgSelectColor_btnCancel_Label As String
Public dlgSelectColor_btnNoColor_Label As String
 
Private oActionListener As Object '---(2)
Private oMouseListener As Object
Private oAdjustmentListener As Object
 
Public Function Show(Title As String, BaseColor As Long) As Long
    
    Initialize(BaseColor)
    
    With oDialog
        .Title = Title
        .execute
        Show = imgSelected.getModel.BackgroundColor '---(3)
        .dispose
    End With
    
End Function
 
Private Sub Initialize(BaseColor As Long)
    
    Dim i As Integer
    
    oDialog = createUnoDialog(DialogLibraries.Standard.dlgSelectColor)
    
    With oDialog
        btnOK = .getControl("btnOK")
        btnCancel = .getControl("btnCancel")
        btnNoColor = .getControl("btnNoColor")
        imgBase = .getControl("imgBase")
        imgSelected = .getControl("imgSelected")
        scbBlue = .getControl("scbBlue")
    End With
    
    imgBase.getModel().BackgroundColor = BaseColor '---(4)
    imgSelected.getModel().BackgroundColor = BaseColor
    
    oActionListener = CreateUnoListener("dlgSelectColorActionListener_", _
        "com.sun.star.awt.XActionListener")
    oMouseListener = CreateUnoListener("dlgSelectColorMouseListener_", _
        "com.sun.star.awt.XMouseListener")
    oAdjustmentListener = CreateUnoListener("dlgSelectColorAdjustmentListener_", _
        "com.sun.star.awt.XAdjustmentListener")
    
    btnOK.addActionListener(oActionListener)
    btnCancel.addActionListener(oActionListener)
    btnNoColor.addActionListener(oActionListener)
    
    btnOK.Label = dlgSelectColor_btnOK_Label
    btnCancel.Label = dlgSelectColor_btnCancel_Label
    btnNoColor.Label = dlgSelectColor_btnNoColor_Label
    
    For i = 0 To UBound(imgPalette())
        imgPalette(i) = oDialog.getControl("ImageControl" & (i+1)) '---(5)
        With imgPalette(i)
            .addMouseListener(oMouseListener)
        End With
    Next i
    
    scbBlue.addAdjustmentListener(oAdjustmentListener)
    
    setColors '---(6)
    
End Sub

各部の詳細を説明します。

  1. ImageControl1~25を格納する変数です。ここでは一つ一つ宣言するのではなく、配列で指定します。配列は0から数えるので、5x5 - 1で24を指定します。
  2. 動作に合わせて、3種類のリスナーを宣言しておきます。
  3. ダイアログを終了する時、imgSelectedの背景色を戻り値とします。
  4. 表示の時に指定した色をimgBaseとimgSelectedに指定しておきます。
  5. ImageConrol1~25をimgPaletteに格納し、マウスリスナーを割り当てます。
  6. 次回、この関数について説明を行います。

そして、mdlMainのInitialize関数に下記を追加します。

    dlgSelectColor_btnOK_Label = ControlLabelString("設定")
    dlgSelectColor_btnCancel_Label = ControlLabelString("キャンセル")
    dlgSelectColor_btnNoColor_Label = ControlLabelString("無色")
スポンサーサイト

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

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