SHOEISHA iD

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

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

5分でわかるActiveReports帳票

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

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

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

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

 Designerコントロールを使うと、フォームにコントロールを貼り付けてメニューにイベントを追加していくだけでも、かなり多機能なランタイムデザイナを作成することができます。反面、このような自由度の高い帳票編集アプリケーションは、エンドユーザーの操作ミスによってレポートファイルを破損してしまう可能性もあり、業務の現場で利用するには強力すぎるかもしれません。ここからは、開発したランタイムデザイナをユーザーの利用環境に合わせて機能を制限していく方法について解説します。

Designerコントロールの機能を制限する

 ランタイムデザイナの中心部とも言えるDesignerコントロールの機能を制限するには、コントロールの各種プロパティを設定するのが簡単です。例えば、デザイナ下部に表示されているタブを非表示にするには、ReportTabsVisibleプロパティをFalseに設定します。「スクリプト」タブや「プレビュー」タブなど、個々のタブを非表示にする場合は、EnableScriptingプロパティ、EnablePreviewタブをそれぞれFalseに設定します。

 また、Detailセクションのバーに表示されているアイコンをクリックすると、レポートデータソースの接続先情報を編集できますが、ここで定義されているデータベース接続文字列やSQLを誤って変更されると、レポートファイルが起動しなくなってしまいます。接続情報の変更を防ぐためには、このデータソースアイコンを非表示にします。

 データソースアイコンを非表示にするには、ShowDataSourceIconプロパティをFalseにします。データソースだけでなく帳票レイアウトそのものをレポートそのものを編集できないようにするには、LockControlsプロパティをTrueにします。

フォームのLoadイベントで機能を制限する(C#)
private void Form1_Load(object sender, EventArgs e)
{
  this.designer1.Toolbox = this.toolbox1;
  this.toolbox1.Dock = DockStyle.Fill;

  //「スクリプト」タブを非表示にする
  this.designer1.EnableScripting = false;
  //「プレビュー」タブを非表示にする
  this.designer1.EnablePreview = false;

  //データソースアイコンを非表示にする
  this.designer1.ShowDataSourceIcon = false;

  //コントロールをロック(編集不可)にする
    this.designer1.LockControls = true;
}
フォームのLoadイベントで機能を制限する(Visual Basic)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _
    Handles MyBase.Load

  Me.Designer1.Toolbox = Me.Toolbox1
  Me.Toolbox1.Dock = DockStyle.Fill

  '「スクリプト」タブを非表示にする
  Me.Designer1.EnableScripting = False
  '「プレビュー」タブを非表示にする
  Me.Designer1.EnablePreview = False

  'データソースアイコンを非表示にする
  Me.Designer1.ShowDataSourceIcon = False

  'コントロールをロック(編集不可)にする
  Me.Designer1.LockControls = True

End Sub
機能を制限したランタイムデザイナ。Designerコントロールのタブやデータソースアイコンが非表示になっている
機能を制限したランタイムデザイナ。Designerコントロールのタブやデータソースアイコンが非表示になっている

右クリックメニューを抑制する

 Designerコントロールを右クリックして表示されるコンテキストメニューには、グループヘッダやグループフッタを追加する機能が含まれています。レポートファイルにグループが追加されるとレポートのデータ構造や集計単位が大きく変わってしまうため、ここもデータソース同様、設定の難しい箇所と言えます。コンテキストメニューの起動を抑制するには、DesignerコントロールのContextMenuOpenイベントに、「キャンセルする」という処理を追加します。このイベント処理では、ContextMenuOpenArgsオブジェクトのMenuTypeが「Section」であったときにCancelプロパティをtrueに設定することでメニューの起動を中止しています。

コンテキストメニューの起動を抑制する(C#)
private void ar3designer_ContextMenuOpen(object sender, _
                                         ContextMenuOpenArgs e)
{
  if(e.MenuType == ContextMenuTypes.Section)
  {
    e.Cancel = true;
  }
}
コンテキストメニューの起動を抑制する(Visual Basic)
Private Sub Designer1_ContextMenuOpen(ByVal sender As Object, _
    ByVal e As ContextMenuOpenArgs) _
        Handles Designer1.ContextMenuOpen
  If e.MenuType = ContextMenuTypes.Section Then
    e.Cancel = True
  End If
End Sub

 ランタイムデザイナのカスタマイズ方法については、ここで紹介したものの他にも、グレープシティ社のFAQ(よくある質問)ページでも技術情報が公開されています。

おわりに

 今回はActiveReportsのレポートファイルを編集するランタイムデザイナアプリケーション作成の手順について解説しました。

 次回はLinqなどVisual Studio 2008に対応したActiveReportsの新機能について紹介する予定です。

 

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

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

もっと読む

この記事の著者

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

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

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

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング