SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

5分でわかるActiveReports帳票

5分で"もっと"わかるActiveReports帳票(2008年度版)-ランタイムデザイナの開発

第1回 レポートファイル編集アプリケーションの作り方

  • X ポスト
  • このエントリーをはてなブックマークに追加

イベントを追加する

MenuStripコントロールを追加する

 コントロールの配置が終わったら、次はこのフォームにrpxファイルのオープンや保存、デザイナに配置したコントロールを編集するためのイベント処理を実装していきます。今回はイベントを起動するためのコントロールとして、フォームにMenuStripコントロールを追加します。ランタイムデザイナのフォームにMenuStripコントロールをドロップし、トップレベルのメニュー項目として「File」と「Edit」を追加し、「File」メニューのサブメニューには「Open」「Save As」を、「Edit」メニューのサブメニューには「Undo」「Redo」「Cut」「Copy」「Paste」をそれぞれ追加します。

MenuStripコントロールを追加したところ
MenuStripコントロールを追加したところ
Fileメニューの詳細
Fileメニューの詳細
Editメニューの詳細
Editメニューの詳細

 MenuStripにメニューアイテムを追加して表示名(キャプション)を設定すると、その名前がコントロール名の一部に使われてしまいます。そこで、表示名を最初は英語で入力しておき、後からTextプロパティを日本語に変更する方法がおすすめです。また、ここで表示名に「&[アクセスキーのアルファベット]」のような書式の文字を入れると、アクセスキーを設定できます。この他、好みに合わせてShortCutKeysプロパティを設定することも可能です。

日本語化したFileメニュー
日本語化したFileメニュー
日本語化したEditメニュー
日本語化したEditメニュー

イベントを設定する

 MenuStripコントロールを構成したら、次は各メニュー項目にイベントを設定していきます。ここでは、「ファイル」メニューの「開く」に「rpxファイルを開いてDesignerコントロールへ展開する」という処理を実装します。イベント処理を記述する前に、ソースファイルの先頭に以下のusingディレクティブ(Importsステートメント)を追加しておきましょう。

usingディレクティブ(C#)
using DataDynamics.ActiveReports;
using DataDynamics.ActiveReports.Design;
using DataDynamics.ActiveReports.Design.Toolbox;
Importsステートメント(Visual Basic)
Imports DataDynamics.ActiveReports
Imports DataDynamics.ActiveReports.Design
Imports DataDynamics.ActiveReports.Design.Toolbox

 ランタイムデザイナで編集しているレポートファイルに対する操作は、DesignerコントロールのExecuteActionメソッドを実行することで実現します。ExecuteActionメソッドでは、DesignerAction列挙体でアクションの種類を指定します。ここでは、「ファイル」メニューの「開く」というメニュー項目をダブルクリックして、Clickイベントを実装します。

開くメニューのClickイベントに、ランタイムデザイナでrpxファイルを開く操作を追加(C#)
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
  this.designer1.ExecuteAction(DesignerAction.FileOpen);
}
開くメニューのClickイベントに、ランタイムデザイナでrpxファイルを開く操作を追加(Visual Basic)
Private Sub OpenToolStripMenuItem_Click(ByVal sender As Object, _
                                        ByVal e As EventArgs) _
    Handles OpenToolStripMenuItem.Click
  Me.Designer1.ExecuteAction(DesignerAction.FileOpen)
End Sub

 同じ要領で、メニューに追加したほかの項目にもイベントを実装していきます。なお、切り取りやコピーなどのように選択中のオブジェクトを操作するタイプのイベントでは、PropertyGridコントロールのSelectedObjectプロパティで対象のオブジェクトが指定されていることを確認しています。

メニューに追加したその他の処理(C#)
//名前をつけて保存
private void saveAsToolStripMenuItem_Click(object sender, 
                                           EventArgs e)
{
    this.designer1.ExecuteAction(DesignerAction.FileSave);
}
//元に戻す
private void undoToolStripMenuItem_Click(object sender, 
                                         EventArgs e)
{
    this.designer1.ExecuteAction(DesignerAction.EditUndo);
}
//やり直し
private void redoToolStripMenuItem_Click(object sender, 
                                         EventArgs e)
{
    this.designer1.ExecuteAction(DesignerAction.EditRedo);
}
//切り取り
private void cutToolStripMenuItem_Click(object sender, 
                                        EventArgs e)
{
    if (propertyGrid1.SelectedObject != null)
    {
        this.designer1.ExecuteAction(DesignerAction.EditCut);
    }
}
//コピー
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (propertyGrid1.SelectedObject != null)
    {
        this.designer1.ExecuteAction(DesignerAction.EditCopy);
    }
}
//貼り付け
private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
{
    this.designer1.ExecuteAction(DesignerAction.EditPaste);
}
メニューに追加したその他の処理(Visual Basic)
'名前をつけて保存
Private Sub SaveAsToolStripMenuItem_Click(ByVal sender As Object, _
                                          ByVal e As EventArgs) _
    Handles OpenToolStripMenuItem.Click
    Me.Designer1.ExecuteAction(DesignerAction.FileSave)
End Sub

'元に戻す
Private Sub UndoToolStripMenuItem_Click(ByVal sender As Object, _
                                        ByVal e As EventArgs) _
    Handles UndoToolStripMenuItem.Click
    Me.Designer1.ExecuteAction(DesignerAction.EditUndo)
End Sub

'やり直し
Private Sub RedoToolStripMenuItem_Click(ByVal sender As Object, _
                                        ByVal e As EventArgs) _
    Handles RedoToolStripMenuItem.Click
    Me.Designer1.ExecuteAction(DesignerAction.EditRedo)
End Sub

'切り取り
Private Sub CutToolStripMenuItem_Click(ByVal sender As Object, _
                                       ByVal e As EventArgs) _
    Handles CutToolStripMenuItem.Click
    If Me.PropertyGrid1.SelectedObject Is Nothing Then
        Me.Designer1.ExecuteAction(DesignerAction.EditCut)
    End If
End Sub

'コピー
Private Sub CopyToolStripMenuItem_Click(ByVal sender As Object, _
                                        ByVal e As EventArgs) _
    Handles CopyToolStripMenuItem.Click
    If Me.PropertyGrid1.SelectedObject Is Nothing Then
        Me.Designer1.ExecuteAction(DesignerAction.EditCopy)
    End If
End Sub

'貼り付け
Private Sub PasteToolStripMenuItem_Click(ByVal sender As Object, _
                                         ByVal e As EventArgs) _
    Handles PasteToolStripMenuItem.Click
    Me.Designer1.ExecuteAction(DesignerAction.EditPaste)
End Sub

次のページ
ランタイムデザイナの機能を制限する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
5分でわかるActiveReports帳票連載記事一覧

もっと読む

この記事の著者

宮本奈紗(ミヤモトナサ)

株式会社システムインテグレータ ERPソリューション部所属。ERPシステムの設計・開発に従事。業務でActiveReportsを使用。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

渡辺俊史(ワタナベトシフミ)

株式会社システムインテグレータ パッケージ開発部所属。ECサイト構築パッケージの設計・開発に従事。VSUG(Visual Studio User Group) データベース・データアクセスフォーラムリーダー。blog...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2374 2015/06/04 12:59

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング