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

IDEにて「BASIC ダイアログ」を挿入し、名称を「dlgEditItem」とします。そして、データ編集に必要なコントロールを配置すると下図のようになります。


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

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

Option Explicit
 
Private oDialog As Object '---(1)
 
Private lblId As Object
Private lblName As Object
Private lblCategoryId As Object
Private lblPersonId As Object
Private lblNote As Object
Private lblStatus As Object
Private lblHyperlink As Object
Private lblSchedule As Object
 
Private txtId As Object
Private txtName As Object
Private lstCategoryId As Object
Private lstPersonId As Object
Private txtNote As Object
Private chkComplete As Object
Private txtStatus As Object
Private scbStatus As Object
Private txtHyperlink As Object
Private lstSchedule As Object
 
Private btnEditSchedule As Object
Private btnAddSchedule As Object
Private btnDelSchedule As Object
Private btnEditPerson As Object
Private btnAddPerson As Object
Private btnDelPerson As Object
Private btnOK As Object
 
Public dlgEditItem_Title As String '---(2)
Public dlgEditItem_lblId_Text As String
Public dlgEditItem_lblName_Text As String
Public dlgEditItem_lblCategoryId_Text As String
Public dlgEditItem_lblPersonId_Text As String
Public dlgEditItem_lblNote_Text As String
Public dlgEditItem_lblStatus_Text As String
Public dlgEditItem_lblHyperlink_Text As String
Public dlgEditItem_lblSchedule_Text As String
Public dlgEditItem_chkComplete_Label As String
Public dlgEditItem_btnEditSchedule_Label As String
Public dlgEditItem_btnAddSchedule_Label As String
Public dlgEditItem_btnDelSchedule_Label As String
Public dlgEditItem_btnEditPerson_Label As String
Public dlgEditItem_btnAddPerson_Label As String
Public dlgEditItem_btnDelPerson_Label As String
Public dlgEditItem_btnOK_Label As String
 
Private oActionListener As Object '---(3)
Private oAdjustmentListener As Object
 
Private Id As Integer '---(4)
Private flgUpdate As Boolean '---(5)
 
Private ScheduleList() As Integer '---(6)
 
Public Function Show(TargetId As Integer) As Boolean '---(7)
    
    flgUpdate = False
    
    Id = TargetId
    If Id < 1 Or mdlItem.Count < Id Then Exit Function
    
    Initialize
    setValues(Items(Id))
    With oDialog
        .execute
        .dispose
    End With
    
    Show = flgUpdate
    
End Function
 
Private Sub Initialize '---(8)
    
    oDialog = createUnoDialog(DialogLibraries.Standard.dlgEditItem)
    
    With oDialog
        .Title = dlgEditItem_Title
        lblId = .getControl("lblId")
        lblName = .getControl("lblName")
        lblCategoryId = .getControl("lblCategoryId")
        lblPersonId = .getControl("lblPersonId")
        lblNote = .getControl("lblNote")
        lblStatus = .getControl("lblStatus")
        lblHyperlink = .getControl("lblHyperlink")
        lblSchedule = .getControl("lblSchedule")
        
        txtId = .getControl("txtId")
        txtName = .getControl("txtName")
        lstCategoryId = .getControl("lstCategoryId")
        lstPersonId = .getControl("lstPersonId")
        txtNote = .getControl("txtNote")
        chkComplete = .getControl("chkComplete")
        scbStatus = .getControl("scbStatus")
        txtStatus = .getControl("txtStatus")
        txtHyperlink = .getControl("txtHyperlink")
        lstSchedule = .getControl("lstSchedule")
        
        btnEditSchedule = .getControl("btnEditSchedule")
        btnAddSchedule = .getControl("btnAddSchedule")
        btnDelSchedule = .getControl("btnDelSchedule")
        btnEditPerson = .getControl("btnEditPerson")
        btnAddPerson = .getControl("btnAddPerson")
        btnDelPerson = .getControl("btnDelPerson")
        btnOK = .getControl("btnOK")
    End With
    
    '---(9)
    oActionListener = CreateUnoListener("dlgEditItemActionListener_", _
        "com.sun.star.awt.XActionListener")
    oAdjustmentListener = _
        CreateUnoListener("dlgEditItemAdjustmentListener_", _
        "com.sun.star.awt.XAdjustmentListener")
    
    lblId.Text = dlgEditItem_lblId_Text
    lblName.Text = dlgEditItem_lblName_Text
    lblCategoryId.Text = dlgEditItem_lblCategoryId_Text
    lblPersonId.Text = dlgEditItem_lblPersonId_Text
    lblNote.Text = dlgEditItem_lblNote_Text
    lblStatus.Text = dlgEditItem_lblStatus_Text
    lblHyperlink.Text = dlgEditItem_lblHyperlink_Text
    lblSchedule.Text = dlgEditItem_lblSchedule_Text
    
    chkComplete.Label = dlgEditItem_chkComplete_Label
    
    'MsgBox scbStatus.Dbg_Methods
    scbStatus.addAdjustmentListener(oAdjustmentListener)
    
    lstSchedule.addActionListener(oActionListener)
    
    With btnEditSchedule
        .setLabel(dlgEditItem_btnEditSchedule_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnAddSchedule
        .setLabel(dlgEditItem_btnAddSchedule_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnDelSchedule
        .setLabel(dlgEditItem_btnDelSchedule_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnEditPerson
        .setLabel(dlgEditItem_btnEditPerson_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnAddPerson
        .setLabel(dlgEditItem_btnAddPerson_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnDelPerson
        .setLabel(dlgEditItem_btnDelPerson_Label)
        .addActionListener(oActionListener)
    End With
    
    With btnOK
        .setLabel(dlgEditItem_btnOK_Label)
        .addActionListener(oActionListener)
    End With
    
    mdlCategory.setListControl(lstCategoryId) '---(10)
    mdlPerson.setListControl(lstPersonId)
    
    Update_lstSchedule '工程データ用リストボックスを初期化する(後日解説予定)
    
End Sub

各部の解説を行います

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

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

mdlMainのInitialize関数に追記

    dlgEditItem_Title = "項目編集"
    dlgEditItem_lblId_Text = ControlLabelString("ID")
    dlgEditItem_lblName_Text = ControlLabelString("名称")
    dlgEditItem_lblCategoryId_Text = ControlLabelString("分類")
    dlgEditItem_lblPersonId_Text = ControlLabelString("担当者")
    dlgEditItem_lblNote_Text = ControlLabelString("備考")
    dlgEditItem_lblStatus_Text = ControlLabelString("進捗状況")
    dlgEditItem_lblHyperlink_Text = ControlLabelString("ハイパーリンク")
    dlgEditItem_lblSchedule_Text = ControlLabelString("工程")
    dlgEditItem_chkComplete_Label = ControlLabelString("完了")
    dlgEditItem_btnEditSchedule_Label = ControlLabelString("編集")
    dlgEditItem_btnAddSchedule_Label = ControlLabelString("追加")
    dlgEditItem_btnDelSchedule_Label = ControlLabelString("削除")
    dlgEditItem_btnEditPerson_Label = ControlLabelString("編集")
    dlgEditItem_btnAddPerson_Label = ControlLabelString("追加")
    dlgEditItem_btnDelPerson_Label = ControlLabelString("削除")
    dlgEditItem_btnOK_Label = ControlLabelString("設定")

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

スポンサーサイト

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

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