About the .NET ModelKit Suite

.NET ModelKit Suite Documentation

.NET ModelKit Suite について

.NET ModelKit Suite には、.NET Framework 用にデザインされた高品質なデータ分析、データ処理、視覚化コンポーネントが含まれています。本パッケージに含まれているコンポーネントは次の通りです。

  • OLAP ModelKit と Report Sharp-Shooter （合理的なデータ処理/表現のための BI コンポーネント）
  • Instrumentation ModelKit（デジタルダッシュボードや KPI を作成するための完璧なツール）
  • Chart ModelKit （チャートやグラフ作成のためにデザインされたコンポーネント）

本製品に含まれているこれらのコンポーネントはコードの使用を最小限に抑え、デザイン時の完全なカスタム化を提供します。

フィードバック：info@newtone.co.jp

Copyright(c) by Perpetuum Software
Japanese localization by NEWTONE Corporation


Product Registration

本製品のライセンス登録

本製品はインストールおよび使用する PC ごとにライセンス登録が必要です。複数の PC で本製品をご使用になる場合は、複数ライセンスまたは追加ライセンスが必要です。製品をご購入後ユーザ登録が完了いたしますと、ご購入のライセンスファイルと登録の手順などを E-Mail にてご案内いたします。


System Requirements

システムの必要条件

.Net ModelKit Suite コンポーネントでアプリケーションを作成するには、Microsoft Visual Studio 2005、Borland Delphi 8、Borland C# Builder またはその他の高水準の開発環境をお使いになることをお勧めいたします。

.NET ModelKit Suite コンポーネントを使ったアプリケーションを実行するには、Microsoft .NET Framework 2.0 が必要です。ハードウェアの最低限の必要条件は、Microsoft .NET Framework 2.0 の必要条件と同じです。


Installation

インストール

.Net ModelKit Suite は Microsoft のインストーラパッケージとして配布されます。インストールパッケージファイル名は NETModelKitSuite.msi です。本ソフトウェアをインストールするには、このファイルを実行し、ウィザードの支持に従ってインストールしてください。

インストール時に 「Visual Studio Toolbox にコンポーネントを追加」を選択すると、Microsoft Visual Studio .Net のツールボックスにコンポーネントが自動的に追加されます。これは Visual Studio 2005 でのみ行えます。他の IDE でコンポーネントを使用するには、手動でツールボックスに追加してください。その際、製品別にタブを作成することをお勧めします。手順は、Visual Studio を起動し、ツールボックス上で右クリックして、コンテキストメニューから[タブの追加]を選択し、タブ名を Report Sharp Shooter などと入力して 「Enter」 を押します。

次に作成したタブにコンポーネントを追加します。タブを左クリックして開き、右クリックしてコンテキストメニューを開き、「アイテムの選択」をクリックします。下図のようなダイアログボックスが表示されます。

名前空間（PerpetuumSoft で始まるコンポーネントすべての名前空間）でリストをソートするには、名前空間のヘッダーをクリックして、ReportManager、DesignerDataSourceTree、DesignerDocumentTree、DesignerErrorList、DesignerPropertyGrid、DesignerStatusBar、DesignerToolBar、DesignerToolBox、ReportDesigner、CSVExportFilter、ExcelExportFilter、ExcelXMLExportFilter、BitmapExportFilter、EmfExportFilter、GifExportFilter、JpgExportFilter、TiffExportFilter、HtmlExportFilter、PdfExportFilter、RTFExportFilter、ReportViewer、SharpShooterWebViewerコンポーネントを選択し、「OK」 をクリックします。

Visual Studio 2005 で Instrumentation ModelKit を使用するには、ツールボックスに IndicatorWidget、Widget、WidgetHolder、WidgetProducer、OPCChannel、OPCConnection コンポーネントを追加してください。OLAP ModelKit を使用するには、DataCube、DataCubePrintDocument、DataCubeGrid、DataCubeView コンポーネントを追加し、Chart ModelKit を使用するには、ChartViewer コンポーネントを Visual Studio のツールボックスに追加してください。


Components licensing

コンポーネントのライセンス認証

ライセンスファイルのインストール

本製品はライセンス認証を行わないと、「体験版」の警告が表示されます。

ユーザー登録後に弊社から送付されたライセンスファイル (xxx.elic) をライセンスの管理 (LicenseManager.exe) でインストールしてください。また、複数のライセンスを購入された場合には、各マシンに別々のライセンスをインストールしてください。

本製品を使用してプロジェクトを作成すると、license.licx ファイルが作成され、プロジェクトに追加されます。この license.licx ファイルにはライセンス認証を受けたコンポーネントの一覧が含まれます。

license.licx のライセンス情報はプロジェクトがビルドされると、アプリケーションのリソースに組み込まれます。このリソースに組み込まれたライセンス情報により、ライセンスがインストールされていないエンドユーザーの PC でもアプリケーションが正しく実行されます。

しかし、ライセンス認証を行っていない PC で作成されたアプリケーションにはライセンス情報がないので、このアプリケーションをエンドユーザーの PC で実行すると体験版のメッセージが表示されますので注意してください。

また、最終的にアプリケーションを配布する場合には、ライセンス情報がプロジェクトに含まれているか確認してください。作成された license.licx ファイルには使用されているコンポーネントの一覧があります。そして最後にライセンスがインストールされていない PC でアプリケーションを実行してみてください。

プロジェクトをビルドしてもソースファイルがコンパイルされないで、license.licx ファイルも更新されない場合があります。このときはコンポーネントが配置されているフォームを少し変更してプロジェクトをリビルドをしてください。license.licx ファイルが更新されます。

複数の開発者が複数のコンピュータでプロジェクトを作成する場合、各マシンに別々のライセンスをインストールする必要があります。１つのライセンスだけ使用して別のマシンにプロジェクトを移動すると、ライセンスが不法に使われているという警告が表示されます。ライセンス認証を行えばこの警告は表示されなくなります。

アプリケーションにフォームを貼り付けないでコードで動的に作成する場合、またはコードで動的に作成したフォームにコンポーネントを配置しないでコードで動的に作成する場合には、license.licx ファイルを動的に作成できます（例：レポートデザイナ、レポートビューアを立ち上げるレポートジェネレータや ReportManager コンポーネントを使用する場合）。そして license.licx ファイルを次のようにインクルードしてください。

PerpetuumSoft.Reporting.Components.ReportManager, PerpetuumSoft.Reporting, Version=3.0.0.0, Culture=neutral, PublicKeyToken=<keytoken>

PerpetuumSoft.Reporting.View.ReportViewer, PerpetuumSoft.Reporting, Version=3.0.0.0, Culture=neutral, PublicKeyToken=<keytoken>

PerpetuumSoft.Reporting.Designer.ReportDesigner, PerpetuumSoft.Reporting, Version=3.0.0.0, Culture=neutral, PublicKeyToken=<keytoken>

手動でこのファイルを作成するのが大変な場合は、アプリケーションに一時的なフォーム（または Web ページ）を作成し、そこに必要なコンポーネント型をすべて配置し、アプリケーションをコンパイルし直します。License.licx ファイルが作成されたらフォームを削除すれば license.licx ファイルはアプリケーションのリソースに残ります。

ビジュアルツールを何も使わずにアプリケーションを作成し、それをコマンドラインからコンパイルする場合は、.NET Framework の SDK にある lc ユーティリティを使用してください。例えば、MyApplication.exe という名前のアプリケーションを作成すると、ライセンス認証されたコンポーネントを使用します。次に、使用するコンポーネントの一覧が含まれている License.licx ファイルを作成し（このファイルの作成方法は上述してあります）、コマンドラインに下記を記述します。

lc.exe /target:MyApplication.exe /complist:licenses.licx /i:PerpetuumSoft.Framework.dll /i:PerpetuumSoft.Reporting.dll

これによりライセンス付きのリソースファイルが作成されます（MyApplication.exe.licensesファイル）。

その後下記のように、このファイルをアプリケーションのリソースに追加してください。

csc /res:MyApplication.exe.licenses /reference:….


Product Localization

本製品のローカライズ

Perpetuum Software の製品は簡単にローカライズすることができます。本製品で使われる文字列のリソースはすべてアドホックな localization ファイル（XML 形式）から取得されます。

言語設定の方法はいくつかあります。

1) パッケージに含まれている SelectLanguage アプリケーションを使用して設定する：
このアプリケーションは、本製品の言語に関する登録レコードを変更します。

ここで、インストールされている言語 （Select from list） から言語を1つ選択するか、カスタムな localization ファイル（Load from file） を使用してカスタムな言語を設定するか、規定の言語（Default） を設定するか、言語の一覧を選択するフォルダを変更できます。

2) アプリケーションから言語を設定する方法：
PerpetuumSoft.Framework.Localization 名前空間の型を使用します。

現在の言語は、PerpetuumSoft.Framework.Localization.Language.CurrentLanguage です。

次の方法で現在の言語を変更できます。

1. 特別な形式のファイルからローカライズ文字列を読み込む：

PerpetuumSoft.Framework.Localization.LocalizationFile localizationFile = new PerpetuumSoft.Framework.Localization.LocalizationFile();

localizationFile.Read(<filePath>);

PerpetuumSoft.Framework.Localization.Language  language = PerpetuumSoft.Framework.Localization.Language();

language. AddLocalizationFile(localizationFile);

PerpetuumSoft.Framework.Localization.Language.CurrentLanguage = language;

2. 規定の言語を設定する：

PerpetuumSoft.Framework.Localization.Language.CurrentLanguage = PerpetuumSoft.Framework.Localization.Language.DefaultLanguage;

3. レジストリでローカライズ言語を現在の言語として指定する：

PerpetuumSoft.Framework.Localization.Language.CurrentLanguage = PerpetuumSoft.Framework.Localization.Language.CreateLanguageFromRegistrySettings();

必要な言語がパッケージに含まれていない場合は、独自に文字列を全部訳して localization ファイルを作成できます。

リクエストに応じて XML 形式のファイルをお渡ししますので、その中の文字列をすべて訳してお送りください。localization ファイルをコンパイルしてメールにてお渡しいたします。


Report Sharp-Shooter

Report Sharp Shooter

Report Sharp Shooter の基本的な使い方

基礎知識

レポートデザイナ

テンプレートのオブジェクト

ユーザーガイド

本製品の特徴を使用する

本製品の高度な特徴を使用する


Report Sharp-Shooter Getting Started

Report Sharp Shooter の基本的な使い方

Report Sharp Shooter はさまざまな種類のソースを基にして複雑なレポートを作成したり、ドキュメントを色々なファイル形式にエクスポートすることができるフレキシブルな .NET 対応のレポート作成ルーチンです。本製品のコンポーネントは Windows アプリケーション、ASP.NET ページや Silverlight アプリケーションで使用できます。パッケージには、既存のレポートテンプレートやドキュメントの編集が可能なデザイナが含まれています。レポートにさまざまな要素を含めることができます。ビルドイン・ピボットテーブルコンポーネントを使用して動的なデータ分析が行えます。レポートに使用するデータをチャートや図形で表すことができます。表現詳細は弊社ホームページをご覧ください。


Main Features

本製品の機能

.Net 4.0 完全対応。

完全に制御されたコード。

評判のよい、統合された .NET 開発環境での互換性。

WinForms、ASP.NET の WebForms、Silverlight のサポート。

ADO.NET 完全対応。

任意の .NET オブジェクトをデータソースとしてサポート。

レポート生成ウィザード。

任意の .NET 言語を使った式やスクリプトの作成。

データバインディングモデル。

XML ベースのレポートファイルによるインターネットでのレポート転送処理が簡単。

WinForms、ASP.NET の WebForms、Silverlight のレポートビューアコンポーネント。

エンドユーザーレポートデザイナ。

一つのレポートに複数のデータソースを使用可能。

レポートにバンドを無制限に組み込んだり連続での使用が可能。

Pivot table を作成するために組み込まれたコンポーネント。

パラメータ化されたレポートの作成および使用。

パラメータ化されたサブレポートの作成および使用。

並列レポートを作成するための SideBySide の高度な概念。

短時間で統一したレポートの生成が可能。

生成したレポートをオブジェクトグラフとして保存。

完全なドキュメントオブジェクトモデルは使用が簡単で、レポートテンプレートと既存のドキュメントの両方に使用可能。

バウンド/アンバウンドレポートのサポート。

大半のファイル形式へのエクスポートをサポート。

マニュアルセクションの出力管理 （任意）。

Crystal Report のインポートオプション。

Zip コードやバーコードの作成をサポート。

さまざまなビジュアルオブジェクトの組み込み。

GDI+ を使用するための機能の向上。

さまざまなページサイズやレイアウトのページを無制限にレポートに組み込むことが可能。

ヘッダーやフッタを使用することで使いやすくなります。

背景に透かしを挿入可能。

スタイルを使用可能。

複数の計測システムのサポート。

詳細な説明書と豊富なサンプルを取得可能。

アプリケーションへのデプロイメントが簡単。

アプリケーションへの Report Sharp Shooter の配布は無償で、付加的なロイヤリティーはいりません。


System Requirements

システムの必要条件

.Net Model Kit Suite コンポーネントでアプリケーションを作成するには、Microsoft Visual Studio 2005、Microsoft Visual Studio 2008、Microsoft Visual Studio 2010、Borland Delphi 8、Borland C# Builder などのハイレベルな統合開発環境のご使用をお勧めいたします。

インストールには、Microsoft .Net Framework 2.0 またはそれ以上が必要です。Report Sharp Shooter for Silverlight をお使いになるには、Microsoft .Net Framework 2.0 またはそれ以上が必要です。最低限の必要条件は、Microsoft .Net Framework 2.0 の必要条件と同じです。


Installation

インストール

インストールパッケージのファイル名は .NetModelKitSuite.msi です。ウィザードの指示通りにインストールを行ってください。

インストール時に 「Visual Studio Toolbox にコンポーネントを追加」を選択すると、Microsoft Visual Studio .Net のツールボックスにコンポーネントが自動的に追加されます。これは Visual Studio 2005/2008/2010 でのみ行えます。それ以外（例：Microsoft Visual Studio Express Edition をお使いの場合）は手動で追加してください。Microsoft の Visual Studio にコンポーネントを追加する手順は次の通りです。

1) コンテキストメニューの「タブの追加」を選択してツールボックスに新しいタブを追加します。

2) 追加したタブを選択し、「アイテムの選択」をクリックします。

3) 本製品に含まれているコンポーネントを検索するには、フィルタに perpetuumsoft. を入力します。.NET ModelKit Suite に含まれているすべてのコンポーネント名は 「Perpetuum」 という単語で始まります。

4) Report Sharp Shooter に必要なすべてのコンポーネントにチェックを付けます。WinForms でお使いになる場合に必要なコンポーネントは次の通りです。
ReportManager、DesignerDataSourcesTree、DesignerDocumentTree、DesignerErrorList、DesignerPropertyGrid、DesignerStatusBar、DesignerToolBar、DesignerToolBox、ReportDesigner、CsvExportFilter、ExcelExportFilter、ExcelXmlExportFilter、BitmapExportFilter、EmfExportFilter、GifExportFilter、JpgExportFilter、PngExportFilter、TiffExportFilter、HtmlExportFilter、PdfExportFilter、RtfExportFilter、XpsExportFilter、ReportViewer。

SharpShooterWebViewer はレポートを Web ページとして表示するために使用します。 PerpetuumSoft.Reporting.Silverlight.Client に含まれている ReportViewer は、Silverlight を使ってレポートを作成したり表示するために使用します。

5) Ok ボタンをクリックすると、チェックを付けたコンポーネントが現在のタブに追加されます。

UAC が有効になっている Windows Vista または Windows 7 をお使いの場合は、セットアップファイルを管理者として実行してください。それには、CMD を管理者として実行し、そこからセットアップファイルを実行してください。


Editions

エディション

Report Sharp Shooter には次のエディションがあります。

エディション | 説明
Express | 製品の基本的な機能（レポートデザイン、プレビュー、印刷）を提供します。エクスポートオプション関連やレポートでのコンポーネントの使用（例：イメージ、チャート、図形やピボットテーブル）に制限があります。レポートビューア（Windows Forms ビューアコンポーネント）が含まれています。
Lite | 基本的な機能が提供されています。WinForms でレポートを表示できますが、エンドユーザーデザイナはありません。レポートビューアは含まれています。 Windows Forms エディションレポートを Windows Forms で作成/表示できます。レポートビューアとレポートデザイナ（レポートテンプレートや最終ドキュメントの編集が可能なエンドユーザデザイナ）が含まれています。
Web Forms | レポートを Web ページとして作成/表示できます。SharpShooterWebViewer - レポートを Web ページとして表示することが可能。
Win + Web | レポートを Windows Forms や Web ページとして作成/表示できます。パッケージには、すべてのコンポーネント：ReportViewer、SharpShooterWebViewer、ReportDesigner が含まれています。
Professional | レポートを Windows Forms、Web ページ、Silverlight アプリケーションとして作成/表示することができ、ソースコードも含まれています。
Report Sharp Shooter for Silverlight | Silverlight アプリケーションでレポートを作成/表示するための機能を提供します。ReportViewer （Silverlight アプリケーションでレポートを表示するコンポーネント）が含まれています。


Deploy

運用

本製品のコンポーネントを使用したプロジェクトを運用するために特別なことは全く必要ありません。コンピュータのファイルシステムまたはウェブサイトに、コンパイルしたファイルをコピーするだけです。本製品のインストールもクライアントコンピュータへのライセンス認証も必要ありません。開発者のコンピュータで本製品のライセンス認証を行うだけです。ライセンスはコンパイル時に製品に統合されます。


Migration

移行

Report Sharp Shooter は、 Active Reports、Crystal Reports または Report Sharp-Shooter1.x から移行した後でお使いいただけます。

レポート生成プロセスに新しい機能を追加するために、ドキュメントテンプレートや最終レポートの形式が新しいバージョンに変更されました。1.8 バージョンの Report Sharp Shooter で作成したテンプレートを使用するには、そのテンプレートをレポートデザイナで開いてください。レポートデザイナが自動的にテンプレートを新しい形式に変換します。次のメッセージが表示されます。

その後、変換されたテンプレートが保存されます。最終的なレポートを新しい形式で取得するには、変換されたテンプレートを使用して最終レポートをリビルドすることをお勧めいたします。

Active Reports や Crystal Reports を Report Sharp Shooter の形式に切り替えてレポートテンプレートを変換できます。本製品のパッケージに含まれているインポートプログラムを使用してください。 Active Reports のインポートプログラムは、「スタート」メニューの Perpetuum Software\dotNet ModelKit Suite\Report Sharp-Shooter\Import from Active Reports になります。Crystal Reports は、Perpetuum Software\dotNet ModelKit Suite\Report Sharp-Shooter\Import from Crystal Reports になります。

Active Reports のテンプレートのインポートは下図の通りです。

テンプレートをインポートするには、Active Reports ファイルのソースを設定し、Report Sharp Shooter ファイルのパスを出力し、「Run import」 ボタンを押します。インポートされたテンプレートは指定したフォルダに保存されます。

Crystal Reports のテンプレートのインポートは下図の通りです。

このインポートプロセスは Active Reports のインポートプログラムと似ています。Crystal Reports ファイルのソースを設定し、Report Sharp Shooter ファイルの出力フォルダを指定して 「Run import」 ボタンを押します。

本製品の仕様により、Active Reports や Crystal Reports のテンプレートを変換してすぐにレポートをビルドできないことがあります。全体的な表示は設定されますが、手動でデザインやデータソースなどを設定し直す必要が生じる場合があります。


Localization

ローカライズ

お使いになる本製品のコンポーネントをローカライズすることができます。本製品で使用されている行はすべて XML 形式の特別な Localization ファイルから読み込まれます。現在の言語の設定方法がいくつかあります。

1） 「言語設定」という専用のアプリケーションを使用してローカライズ言語を切り替える方法：
このアプリケーションは製品のパッケージに含まれています。これは Perpetuum Software のローカライズ言語の値を格納しているレジストリのレコードを変更します。下図のようなアプリケーションのメインウィンドウが表示されます。

「Select from list」 を使用してサポートされている任意の言語を選択できます。「Load from file」 は独自のローカライズ言語を設定できます。「Default」 は規定のローカライズ言語を選択できます。利用可能な言語を格納している特定のフォルダに変更できます。

2) コードから現在の言語をプログラムで変更する方法：
Classes from PerpetuumSoft.Framework.Localization 名前空間のクラスがこのために使用されます。ローカライズ言語は PerpetuumSoft.Framework.Localization.Language クラスの CurrentLanguage プロパティを初期化することによって設定されます。 次のことをコードで行えます。

a) 特別な形式の Localization ファイルからローカライズの行をダウンロード：

PerpetuumSoft.Framework.Localization.LocalizationFile localizationFile =

      new PerpetuumSoft.Framework.Localization.LocalizationFile();

localizationFile.Read("<;filePath>");

PerpetuumSoft.Framework.Localization.Language language =

      new PerpetuumSoft.Framework.Localization.Language();

language.AddLocalizationFile(localizationFile);

PerpetuumSoft.Framework.Localization.Language.CurrentLanguage = language;

b) デフォルト言語として設定されているローカライズ言語の変更：

      PerpetuumSoft.Framework.Localization.Language.CurrentLanguage =

      PerpetuumSoft.Framework.Localization.Language.DefaultLanguage();

c) レジストリの同一レコードに従ってローカライズ言語を設定：

      PerpetuumSoft.Framework.Localization.Language.CurrentLanguage =

PerpetuumSoft.Framework.Localization.Language.CreateLanguageFrom

RegistrySettings();

Localization ファイルがサポートされていない場合は、本製品のコンポーネントで使用されている Localization ファイルの行をすべて訳して作成できます。テクニカルサポートサービス (support@perpetuumsoft.com )宛に e-mail をお送りいただくとローカライズに必要な文字列が入った MS XML ファイルをお送りいたします。これをすべて訳して送り返していただければ Localization ファイルを作成いたします。


Getting Started

基本的な使い方

現在日付、テキスト、ロゴを表示するレポートテンプレート：

1. Microsoft Visual Studio で新しいプロジェクトを作成します。それには、メインメニューから[ファイル/新しいプロジェクト]を選択します。

Windows アプリケーションプロジェクトのテンプレートを選択し、プロジェクト名を 「SimpleReport」 に設定し、プロジェクトを保存するフォルダを指定します。

2. ソリューションエクスプローラの Form1.cs をダブルクリックしてエディタのウィンドウにアプリケーションのメインフォームを開きます。

ツールボックスから ReportManager コンポーネントをドラッグ&ドロップします。このコンポーネントはレポートテンプレートやデータソースのコレクションを格納します。

このコンポーネントはウィンドウ下部に表示されます。

3. プロパティグリッドから ReportManager コンポーネントを貼り付けたフォームを選択し、OwnerForm プロパティを初期化します。

4. ReportManager コンポーネントをダブルクリックして ReportManager のエディタを開きます。

レポートタブの「追加」ボタンを押して InlineReportSlot を選択します。

5. ReportName プロパティにレポート名（SimpleReport）を設定し、「デザイナの起動」ボタンを押してレポートデザイナを開きます。

6. メインメニューから[ファイル/新規]を選択し、新しい白紙のテンプレートを作成します。

ウィザードギャラリから「白紙」を選択し、OK ボタンを押します。

7. ツールボックスの「テンプレートプロパティの表示」ボタンを押します。

デザイナの右端のツールウィンドウの「プロパティ」タブに編集中のテンプレートのプロパティが表示されます。

ScriptLanguage プロパティを CSharp に設定します。

8. コンポーネントバーの TextBox ボタンを押します。

左クリックしてテンプレートにテキストボックスを追加し、Value プロパティを Now に設定します。

TextFormat プロパティを選択し、TextFormat プロパティにあるボタンを押してテキスト形式のエディタを開きます。

フォーマットの一覧からは「日付」を、プロパティの一覧からは 「dd/MM/yy」 を選択します。

9. テンプレートに TextBox オブジェクトをもう1つ追加し、ダブルクリックしてテキストエディタ（Text プロパティのエディタ）を開いて「最初のレポート」と入力します。

10. コンポーネントバーの Picture ボタンをクリックします。

テンプレート上を左クリックして Picture オブジェクトを追加します。

Picture オブジェクトをダブルクリックして、イメージのパスを設定するダイアログウィンドウを開きます。ロゴのイメージを選択し、「開く」ボタンを押します。SizeMode プロパティに Normal を設定します。

レポートテンプレート：

11. テンプレートを保存してレポートデザイナを閉じます。

12. フォームを右クリックし、コンテキストメニューの「コードの表示」を選択してコードを表示します。

Form クラスのコンストラクタにレポートを表示するコードを追加します。InlineReportSlot オブジェクトの RenderComplete イベントハンドラを作成します。

        public Form1()

        {

            InitializeComponent();

            inlineReportSlot1.RenderCompleted += new EventHandler(reportSlot_RenderCompleted);

        }

        private void reportSlot_RenderCompleted(object sender, EventArgs e)

        {

            using (PerpetuumSoft.Reporting.View.PreviewForm previewForm = new PerpetuumSoft.Reporting.View.PreviewForm(inlineReportSlot1))

            {

                previewForm.WindowState = FormWindowState.Maximized;

                previewForm.ShowDialog(this);

            }

        }

12. Form1.cs[Design] タブをクリックしてアプリケーションのフォームに戻ります。

フォームにボタンを2つ追加します（ツールボックスの Button コンポーネントをフォームにドラッグ&ドロップします）。

フォームの Button コントロールを選択し、Text プロパティを変更します。最初のボタンには Text = 「テンプレート」 を、２つ目のボタンには Text = ｢レポート｣ を設定します。

フォームの Button コントロールをダブルクリックして、ボタンの Click イベントハンドラを作成します。このハンドラにレポートの生成を開始するコードを追加します。コード例：

        private void button1_Click(object sender, EventArgs e)

        {

            inlineReportSlot1.DesignTemplate();

        }

        private void button2_Click(object sender, EventArgs e)

        {

            inlineReportSlot1.Prepare();

        }

13. Visual Studio のツールバーにある「デバッグ開始」ボタンを押してアプリケーションを実行します。

    生成されたレポートがレポートビューアに表示されます。

    テンプレートを編集するには、レポートビューアを閉じてアプリケーションのフォームにある「テンプレート」ボタンを押します。


Getting Started

基本的な使い方（DataSet 編）

この章では、順を追ってシンプルなレポートの作成を行います。

Visual Studio .NET を起動し、新規の C# Windows アプリケーションプロジェクトを作成します。（VB.NET でも同様な手順です。）

まず、レポートのデータソースを作成します。これを行うには、フォームにツールボックスの「データ」タブから DataSet オブジェクトを追加します。

「データセットの追加」ダイアログから「型指定のないデータセット」を選択します。

DataSet はビジュアルコンポーネントではないので、フォームデザイナウィンドウの下部に表示されます。

次にサンプルテーブルを作成します。

追加された DataSet コンポーネント（デフォルト名：DataSet1） を選択して、プロパティウィンドウの Tables プロパティを選択し、 [image] ボタンをクリックして「テーブル コレクション エディタ」を開きます。「追加」ボタンを使って、「Customers」 という名前のテーブルを作成します。

次に、「テーブル コレクション エディタ」のプロパティリストで 「Columns」（コレクション）をクリックして、表示される「列コレクション エディタ」を使って、テーブル内に 「Name」 と 「Phone」 という文字列型のフィールドを二つ作成してください。

次に、プログラム実行時に何件かのデータを表示するためにフォームの Load イベントに次のコードを追加します。

DataRow row = dataTable1.NewRow();
row["Name"] =
                    "Johnson Leslie";
row["Phone"] =
                    "613-442-7654";
dataTable1.Rows.Add(row);
row = dataTable1.NewRow();
row["Name"] =
                    "Fisher Pete";
row["Phone"] =
                    "401-609-7623";
dataTable1.Rows.Add(row);
row = dataTable1.NewRow();
row["Name"] =
                    "Brown Kelly";
row["Phone"] =
                    "803-438-2771";
dataTable1.Rows.Add(row);

次に、フォームに Report Sharp Shooter の 「ReportManager」 コンポーネントを置きます（このコンポーネントがツールボックスにない場合は、「インストール」を参照）。ReportManager はビジュアルコンポーネントではないので、フォームデザイナウィンドウの下部に表示されます。

次は、レポート用のデータソースを指定します。追加されたコンポーネント（デフォルト名は reportManager1 です）を選択し、ダブルクリックすると、レポートマネージャエディタが開きます。このウィンドウでデータソースを設定したりレポートのコレクションを編集できます。

レポートマネージャエディタのウィンドウから「データソース」タブを選択すると、データバインドリストが画面に表示されます。

「追加」ボタンをクリックすると新しいダイアログボックスが表示されるので、「名称」フィールドに 「CustomersDataSet」
                、「値」プロパティに 「dataSet1」 を入力して OK ボタンをクリックします。

OK ボタンを押してデータバインドエディタを閉じます。

では、レポートを追加してください。レポートマネージャエディタウィンドウからレポートタブを選択してください。

「追加」ボタンをクリックして InlineReportSlot オブジェクトを追加します。レポートデザイナを開くには、プロパティグリッドの Document プロパティの  [image]
                ボタンをクリックするか、「デザイナの起動」ボタンをクリックしてください。

レポートデザイナを開くと、次のようになっています。

ファイルメニューの「新規」を選択すると、次のダイアログが表示されます。

「新規」タブから「標準のレポート」を選択し、OK ボタンをクリックします。「標準のウィザード」のウィンドウが画面に表示されます。

「レポートのテンプレートのプロパティ」のレポートのタイトルを 「Customers」 と指定します。そして  [image] ボタンをクリックします。このボタンの下のリストに新しい「データセクション」タブが表示されます。

ここでリスト項目から一つ選択できます。利用可能な設定がパネルの右に表示されます。データセクション（  [image] ボタン）のデータソース（「データソース」フィールド）を CustomersDataSet.Customers と指定します。
                「全フィールド]」リストの 「Name」 フィールドを選択し、  [image] ボタンを使用するか、またはマウスでドラッグして「表示フィールド」タブに 「Name」 を追加します。 「Phone」 フィールドも同様に行います。この後の「標準のウィザード」のフォームは下記のようになるはずです。

  ボタンを押し、「レポートデザイナ」を閉じます。

フォームにボタンを一つ追加し、そのボタンの 「Text」
                プロパティに「プレビュー」と指定します。このボタンの Click イベントに次のコードを記述します。

if (inlineReportSlot1 != null)

                try

                {

                inlineReportSlot1.Prepare();

                } catch(Exception exc)

                {

                MessageBox.Show(exc.Message, "Report Sharp-Shooter", MessageBoxButtons.OK,
                MessageBoxIcon.Error);

                }

そして、プロパティエディタの inlineReportSlot1 オブジェクトを選択します。

RenderCompleted イベントを追加し、そこに次のコードを記述します。

using (PerpetuumSoft.Reporting.View.PreviewForm previewForm = new
                PerpetuumSoft.Reporting.View.PreviewForm(inlineReportSlot1))
{
previewForm.WindowState = FormWindowState.Maximized;
previewForm.ShowDialog(this);
}

このコードはレポートのテンプレートを使用して最終ドキュメントを作成し、「レポートビューア」コンポーネントを開きます。

アプリケーションを実行して「プレビュー」ボタンをクリックすると、作成されたレポートが表示されます。不明な点は、「GettingStartedExample」 サンプルを参照してください。

            【デザイン例】

【実行例】


Basic Information

概要

基本用語

レポートの作成に使用する主なコンポーネント

データソースの使用

スクリプトの使用

データに要素をバインドする

ドキュメントの生成

最終ドキュメントのビジュアル化と編集

エクスポート、印刷、保存


Basic Terms

基本用語

Report Sharp Shooter での処理に使用される基本用語について説明します。


Report Template

レポートテンプレート

レポートテンプレートは、IsTemplate プロパティが "True" に設定されている PerpetuumSoft.Reporting.DOM.Document クラスのオブジェクトです。レポートテンプレートには、複数のオブジェクトを格納している1または複数のページが格納されています。最終レポートの外観は、格納されているオブジェクトのレイアウトやプロパティの初期化によって設定されます。例えば、レポートのデータを取得するためのレポートのデータソースとレポートの表示方法を設定します。テンプレートには、レポート生成時に実行されるスクリプトが格納されます。テンプレートファイルは xml 形式のファイルと拡張子が .rst のファイルです（rst ファイルはテンプレートをレポートデザイナから保存すると作成されます）。PerpetuumSoft.Reporting.Components.ReportSlot クラスのオブジェクトは、レポートテンプレートの保存に使用されます。ReportSlot オブジェクトの LoadReport や SaveReport メソッドはレポートテンプレートを取得したり保存するために使用されます。

(参照：テンプレート)


Report Designer

ReportDesigner コンポーネントは、テンプレートの作成や編集に使用します。テンプレートのプロパティやテンプレートのページのプロパティ設定、オブジェクトの追加、オブジェクトのレイアウトおよびプロパティの設定、レポートのデータソース設定、レポートの外観やレポート内容を定義する機能を提供します。ReportDesigner コンポーネントを使用してテンプレートを保存したり、保存したテンプレートを開いてレポートの編集/編成を行うことができます。レポートデザイナからレポートビューアを呼び出して、作成したレポートを表示できます。

（参照：レポートデザイナ）


ReportManager

レポートマネージャは、レポートやデータソースのコレクションを保存するためのコンポーネントです。レポートテンプレートを保存するオブジェクトのコレクションには Reports プロパティからアクセスできます。データソースのコレクションには DataSource プロパティからアクセスできます。


Final Document

最終ドキュメント

最終ドキュメントは、IsTemplate プロパティが False に設定されている PerpetuumSoft.Reporting.DOM.Document クラスのオブジェクトです。最終ドキュメントには、テキスト、チャート、ゲージ、またはイメージなど目に見える情報を含んだオブジェクトだけが含まれます。最終ドキュメントのファイルは xml 形式で、拡張子は .rsd です。


Report Viewer

レポートビューア

レポートビューアは最終ドキュメントの表示に使用されるコンポーネントです。最終ドキュメントで可能な操作：ズーム、検索、ツリーのブックマーク、様々な表示パラメータ。レポートのエクスポート、印刷、ファイルへの保存が可能です。最終ドキュメントを編集するには、レポートデザイナを起動してください。

（参照：レポートビューアの使用）


Export Filter

エクスポートフィルタ

Report Sharp Shooter は、最終ドキュメントを GIF、PNG、JPG、BMP、EMF、PDF、HTML、CSV、TXT、Excel、XML、XML for Excel、RTF などの多数の一般的な形式にエクスポートする機能を提供します。

（参照：エクスポート）


Interaction Schema

インタラクションの構造

以下は、レポートのライフサイクルの構造です。


Main Components Used to Create a Report

レポートの作成に使用する主なコンポーネント

最終ドキュメントの外観は、レポートテンプレートのオブジェクトで決まります。どのオブジェクトもプロパティのセットがあります。プロパティの設定時にレポートの外観が決まります。これらのプロパティに一定の値またはレポートの生成時に計算される式を設定でき、スクリプトをバインドしています。

レポートを作成するために使用されるオブジェクトはすべて、バンドとビジュアルオブジェクトの2種類に分けられます。

バンドは最終ドキュメントには表示されません。バンドは他のオブジェクトのコンテナで、バンドに格納されているオブジェクトの表示方法を設定するためのものです。それには、リストや表の作成、データソースの設定、グループ化や並べ替え条件の設定などがあります。一部のバンドは他のバンドのコンテナになります。

（参照：バンド）

レポートのビジュアルオブジェクトは、テキスト、イメージ、Zip コード、バーコード、シェープ、Windows Forms コントロールのイメージといったさまざまなデータを表示するために使用されます。ビジュアルオブジェクトのプロパティは、データの形式やスタイルを設定します。

（参照：ビジュアルオブジェクト）


Using Data Sources

データソースの使用

ADO.NET オブジェクト、System.Collection.IEnumerable インターフェイスの System.ComponentModel.IListSource を実装するクラス、その他のデータソース。その他のデータソースの場合、渡されたオブジェクトのプロパティは使用されているレポートデータになります。

レポートマネージャを使用してデータソースを設定できます。データソースはレポートマネージャに格納されるすべてのレポートテンプレートに使用できます。加えて、データソースを特定のテンプレートに組み込むことができます。

組み込み式のデータソースは SqlDataSource、XmlDataSource、OdbcDataSource の3つがあります。

（参照：データソース）


Using Scripts

スクリプトの使用

スクリプトは、レポート生成時に計算される式を設定するために使用されます。式の計算結果はプロパティ値として使用できます。スクリプトは、最終ドキュメントに要素を生成したり、レポート要素のレイアウトを手動で行うために使用できます。

スクリプトは一部のプログラミング言語では式になり、.NET の任意のプログラミング言語を使用できます。

レポート生成時に Report Sharp Shooter を使用して、アプリケーションで使用可能な任意のクラスのインスタンスを作成したり使用することができます。

(参照：スクリプト）


Binding Elements to Data

データに要素をバインドする

データバインドは、データソースのデータを表示するレポートで使用され2つのパスで実行されます。まず、データソースとして使用するオブジェクトが設定されます。次に、特定の要素のフィールドが設定されます。レポートのデータソースがコレクションの要素の場合、コレクションの要素のフィールドが設定され、DataBand 内で入れ子になった要素がリストの表示に使用されます。オブジェクトがコレクションではない場合、レポートはオブジェクトのプロパティを表示できます。バインドの式で最終的な要素とデータソースがバインドされます。

（参照：プロパティのバインディング）


Document Generation

ドキュメントの生成

レポート生成プロセスを開始するには、ReportSlot オブジェクトの Prepare や RenderDocument メソッドが使用されます。これらの違いは、Prepare メソッドは個別のスレッドでレポート生成プロセスを行います。レポートマネージャには、レポート生成イベントを実行するフォームのスレッドを設定するための OwnerForm プロパティがあります。イベントハンドラがフォームに貼り付けられているオブジェクトを参照する場合、このプロパティの初期化が必要がな場合があります。このようなハンドラを個別のスレッドで実行すると、System.InvalidOperationException 例外が発生する場合があります。

レポートの生成プロセスの制御や宣言する機能を持たせるために、Prepare や RenderDocument メソッドのオーバーロードを使用することができます。これらのオーバーロードはオブジェクトをパラメータとして取得し、IRenderSite インターフェイスを実装します。このインターフェイスを実装するオブジェクトは、レポート生成プロセスの情報を取得するために使用できます。ただ、このインターフェイスで記述されたオブジェクトのメソッドを設定する必要があります。

テンプレートがデータソースからデータを取得する要素を使用している場合、その要素名に設定されたデータソースがレポート生成時に検索されます。検索は、レポートマネージャに追加されたソース（現在のレポートスロットに格納されたソース）と、組み込み式のデータソースで行われます。加えて、データソースの取得時にイベントが呼び出されます。そのイベントを使って動的にデータソースに接続できます。

レポート生成時にレポートパラメータが必要な場合があります。GetReportParameter イベントは、パラメータを取得するために使用します。このハンドラで指定したパラメータのコレクションを初期化する必要があります。このコレクションは、PerpetuumSoft.Reporting.Components.GetReportParameterEventArgs オブジェクトの Parameters プロパティから取得できます。このクラスのインスタンスはそのハンドラにパラメータとしてデリゲートされます。注意しなければならないことは、コントロールのプロパティからパラメータの値を取得する場合、対象のレポートマネージャの OwnerForm プロパティを初期化しなければならないということです。

レポートにサブレポートを使用する場合、対象のレポートマネージャに、SubReport.TemplateName プロパティと一致する ReportName プロパティを持ったレポートスロットを格納してください。入れ子のテンプレートを動的に作成する場合は、ReportManager の ResolveSubReport イベントうぃ使用して初期化できます。PerpetuumSoft.Reporting.Components.ResolveSubReportEventArgs オブジェクトは、このハンドラにパラメータとして渡されます。このオブジェクトには TemplateName プロパティがあり、入れ子のレポートが必要とする物を定義し、Template プロパティ経由で渡します。

（参照：レポート生成の操作）


Visualization and Editing Final Documents

最終ドキュメントのビジュアル化と編集

最終ドキュメントを表示するには、Windows アプリケーションの場合はレポートビューアを、 ASP.NET アプリケーションの場合は SharpShooterWebViewer を使用できます。

最終ドキュメントはレポートテンプレートに従って、レポートで作成および貼り付けられたビジュアルオブジェクトだけで構成されています。レポートデザイナで最終ドキュメントを開いて、オブジェクトの静的なプロパティ（サイズ、レイアウト、スタイル）をすべて編集できます。また、ドキュメントに新しいビジュアルオブジェクトを追加することもできます。バンドを追加すると、レポートデザイナで表示された状態で最終ドキュメントに表示されます。


Export, Print and Saving

エクスポート、印刷、保存

最終ドキュメントを作成してしまえば、ドキュメントはさまざまな形式で提供できます。Report Sharp Shooter はレポートを PDF、GIF、HTML、XML for Excel、RTF などのさまざまな形式にエクスポートできます。エクスポートパラメータを設定するためのオプションがあります。例えば、イメージ品質の設定、ドキュメントの特定ページの選択などです。

最終ドキュメントをハードディスクに保存できます。ドキュメントは、.rsd 拡張子の付いた xml 形式で保存されます。.rsd ファイルはレポートビューアで使われます。

ドキュメントをレポートビューアから印刷できます。印刷設定は、印刷するページ数やドキュメントのコピーの数を指定します。


Report Designer

レポートデザイナ

レポートデザイナを指定してレポートテンプレートの作成や編集を行います。デザイナを使って、テンプレートにページやオブジェクトを追加したり、静的/動的なプロパティの設定やデータソースへの接続が行えます。


Report Designer Main Window

レポートデザイナのメインウィンドウ

1 - メインメニュー - テンプレート、オブジェクト、デザイナでさまざまな動作を実行できます。

2 - ツールバー - 頻繁に使用するコマンドボタンが入っています。

3 - ツールウィンドウ - 3つのタブがあります。「プロパティ」タブは、プロパティの編集に使用します。「データソース」タブは、データのツリーが入っています。「ドキュメントツリー」タブは、レポート構造のツリーです。

4 - エラー一覧 - エラー（エラー一覧）と警告（警告一覧）という項目が2つあります。

5 - コンポーネントバー - テンプレートにオブジェクトを追加するために使用します。

6 - 作業領域 - テンプレートの領域です。


Main Menu

メインメニュー

メインメニューは、メインエディタの機能へのアクセスを提供します。


File Menu

ファイルメニュー

1 新規 - ウィザードギャラリダイアログを開いて新しいテンプレートを作成するためのメニューコマンドです。

2 開く - テンプレートまたはドキュメントを開くための「テンプレートを開く」ダイアログを開くメニューコマンドです。

3 保存 - 編集したテンプレートやドキュメントの変更を保存するメニューコマンドです。テンプレートやドキュメントが保存されていない場合、ハードドライブが「テンプレートの保存」ダイアログウィドウを開いて保存するフォルダやファイル名を選択できます。

4 名前を付けて保存 - 「テンプレートの保存」ダイアログウィンドウを開いてレポートやドキュメントを保存するフォルダやファイル名を選択するためのメニューコマンドです。

5 言語設定 - ローカライズ言語を選択するための「言語設定」ウィンドウを開くメニューコマンドです。

6 デザイナを閉じる - レポートデザイナを閉じるメニューコマンドです。


Edit Menu

編集メニュー

1 元に戻す - 最後の動作をキャンセルするためのメニューコマンドです。

2 やり直し - 最後にキャンセルした動作をやり直すメニューコマンドです。

3 オブジェクトの切り取り - 選択したオブジェクトをクリップボードに切り取るメニューコマンドです。

4 オブジェクトのコピー - 選択したオブジェクトをクリップボードにコピーするメニューコマンドです。

5 貼り付け - オブジェクトをクリップボードから選択した領域に貼り付けるメニューコマンドです。

6 オブジェクトの削除 - 選択したオブジェクトを削除するメニューコマンドです。

7 配列 - オブジェクトの順番を操作するメニューアイテムです。

7.1 前面に移動 - 選択したオブジェクトを前面に移動するメニューコマンドです。

7.2 背面に移動 - 選択したオブジェクトを背面に移動するメニューコマンドです。

7.3 先頭に移動 - 選択したオブジェクトを先頭に移動するメニューコマンドです。

7.4 最後に移動 - 選択したオブジェクトを最後に移動するメニューコマンドです。


Insert Menu

挿入メニュー

挿入メニューは下図で示されているオブジェクトをテンプレートに追加できます。

1 旧式 - これは旧式のオブジェクト（GroupHeader と GroupFooter）を追加するためのメニュー項目です。これらのオブジェクトは前のバージョンとの互換性のために必要ですが、これらのコンポーネントを使って新しいレポートを作成するのはお勧めいたしません。に GroupBand に Header や Footer を付けてお使いください。


View Menu

表示メニュー

1 選択 - 強調表示モードにするメニューコマンドです。

2 パン - スクロールモードにするメニューコマンドです。

3 ページの幅 - ページの幅に合わせてテンプレートをスケーリングするメニューコマンドです。

4 ページ全体 - テンプレートをスケーリングしてページ全体を表示するためのメニューコマンドです。

5 実サイズ - 100% ズーム（実際のページサイズ）を設定するメニューコマンドです。

6 ズームイン - 編集するテンプレートをズームインモードにするメニューコマンドです。

7 ズームアウト - 編集するテンプレートをズームアウトモードにするメニューコマンドです。

8 矩形に合わせてズーム - 選択した領域をズームするメニューコマンドです。

9 ダイナミックズーム - ダイナミックズームモードにするメニューコマンドです。

10 カスタムズーム - ズーム倍率を設定するダイアログを開くメニューコマンドです。

11 グリッドを表示 - グリッドを表示/非表示にするメニューコマンドです（Document.ShowGrid プロパティを設定するかどうかを定義します）。

12 グリッドに合わせる - 「グリッドに合わせる」オプションを切り替えるメニューコマンドです（Document.SnapToGrid プロパティを設定するかどうかを定義します）。

13 オブジェクトの領域を表示 - オブジェクトの領域を表示/非表示にするメニューコマンドです（Document.ShowObjectBounds プロパティを設定するかどうかを定義します）。

14 バンドのレイアウト - 「バンドの自動レイアウト」オプションを切り替えるメニューコマンドです。

15 ルーラの表示 - ルーラを表示/非表示にするメニューコマンドです。


Report Menu

「レポート」メニュー

1 ドキュメントのプロパティ - プロパティグリッドにドキュメントのプロパティを表示します

2 ページのプロパティ - プロパティグリッドにページのプロパティを表示します

3 ページの追加 - レポートに新規ページを追加します

4 ページの削除 - 現在のページとそこにあるすべてのオブジェクトを削除します

5 スクリプトのチェック - レポートのスクリプトをすべてチェックします

6 プレビュー - レポートの生成を開始し、レポートビューアにドキュメントを表示します


Window Menu

ウィンドウのメニュー

1 エラー一覧 - エラー一覧を開く/閉じるメニューです。

2 ツールウィンドウ - ツールウィンドウを開く/閉じるメニューです。


Help Menu

ヘルプメニュー

1 バージョン情報 - これはプログラム情報のウィンドウを表示するメニューコマンドです。


Select Language Window

言語設定ウィンドウ

ローカライズ言語を選択するウィンドウはインターフェイスに使用する言語を選択できます。このウィンドウを開くには、メインメニューコマンドの[ファイル/言語設定]または[スタート]メニューから SelectLanguage.exe を実行しなければなりません。これは C:\Program Files\Perpetuum Software\Net ModelKit Suite\Bin フォルダにあります。

1 Default - 規定値として設定するローカライズ言語を設定できます。

2 Select from list - 製品に含まれている言語一覧からローカライズ言語を選択できます。

3 テキストフィールド - 製品に含まれている Localization フォルダのパスを表示/設定します。

4 [Browse] ボタン - 製品に含まれている Localization フォルダを選択するために「フォルダの参照」ダイアログウィンドウを開きます。

5 製品に含まれているローカライズ言語の一覧

6 Load from list - カスタムなローカライズ言語を設定できます。

7 テキストフィールド - ローカライズ言語ファイルのフォルダのアドレスを表示/設定します。

8 [Browse] ボタン - カスタムなローカライズ言語ファイルのフォルダを選択するために「フォルダの参照」ダイアログウィンドウを開きます。

9 [Apply] ボタン - 変更を適用します。

10 [OK] ボタン - 変更を適用してウィンドウを閉じます。

11 [Cancel] ボタン - 変更をキャンセルしてウィンドウを閉じます。


Toolbar

ツールバー

コンポーネント バー

テンプレートのツールバー

ツールバーの表示

オブジェクトのツールバー

スタイルのツールバー

プロパティのツールバー


Component Bar

コンポーネント バー

テンプレートにオブジェクトを追加するためのツールバー。

1 TextBox - このボタンでテンプレートに TextBox オブジェクトを追加できます。

2 AdvancedText - このボタンでテンプレートに AdvancedText オブジェクトを追加できます。

3 Picture - このボタンでテンプレートに Picture オブジェクトを追加できます。

4 Shape - このボタンでテンプレートに Shape オブジェクトを追加できます。

5 ZipCode - このボタンでテンプレートに ZipCode オブジェクトを追加できます。

6 BarCode - このボタンでテンプレートに BarCode オブジェクトを追加できます。

7 RichText - このボタンでテンプレートに RichText オブジェクトを追加できます。

8 WinFomsControl - このボタンでテンプレートに WinformsControl オブジェクトを追加できます。

9 Chart - このボタンでテンプレートに Chart オブジェクトを追加できます。

10 Widget - このボタンでテンプレートに Widget オブジェクトを追加できます。

11 PageHeader - このボタンでテンプレートに PageHeader オブジェクトを追加できます。

12 DataBand - このボタンでテンプレートに DataBand オブジェクトを追加できます。

13 BandContainer - このボタンでテンプレートに BandContainer オブジェクトを追加できます。

14 Header - このボタンでテンプレートに Header オブジェクトを追加できます。

15 Detail - このボタンでテンプレートに Detail オブジェクトを追加できます。

16 GroupBand - このボタンでテンプレートに GroupBand オブジェクトを追加できます。

17 SideBySide - このボタンでテンプレートに SideBySide オブジェクトを追加できます。

18 SubReport - このボタンでテンプレートに SubReport オブジェクトを追加できます。

19 Content - このボタンでテンプレートに Content オブジェクトを追加できます。

20 Footer - このボタンでテンプレートに Footer オブジェクトを追加できます。

21 PageFooter - このボタンでテンプレートに PageFooter オブジェクトを追加できます。

22 PageOverlay - このボタンでテンプレートに PageOveray オブジェクトを追加できます。

23 CrossBand - このボタンでテンプレートに CrossBand オブジェクトを追加できます。

24 PivotTable - このボタンでテンプレートに PivotTable オブジェクトを追加できます。

25 GroupHeader* - このボタンでテンプレートに GroupHeader オブジェクトを追加できます。

26 GroupFooter* - このボタンでテンプレートに GroupHooter オブジェクトを追加できます。

*GroupHeader と GroupFooter は旧式のオブジェクトで前のバージョンとの互換性のために必要ですが、これらのコンポーネントを使用して新しいレポートを作成するのはお勧めいたしません。GroupBand に Header と Footer を付けてお使いください。


Template Toolbar

テンプレートのツールバー

1 新規ドキュメント - このボタンは新規レポートを作成するためにウィザードギャラリを開きます。

2 テンプレートの保存 - このボタンはレポート/ドキュメントを保存するためのフォルダ/ファイル名を選択するために「テンプレートの保存」ダイアログウィンドウを開きます。

3 開く - このボタンはテンプレート/ドキュメントを開くための「テンプレートを開く」ダイアログウィンドウを開きます。

4 選択したオブジェクトの切り取り - このボタンは選択したオブジェクトをクリップボードに切り取ります。

5 選択したオブジェクトのコピー - このボタンは選択したオブジェクトをクリップボードにコピーします。

6 クリップボードからの貼り付け - このボタンはクリップボードからオブジェクトを貼り付けます。

7 選択したオブジェクトの削除 - このボタンは選択したオブジェクトを削除します。

8 元に戻す - このボタンは最後の動作をキャンセルします。

9 やり直し - このボタンは最後にキャンセルした動作を繰り返します。


Viewing Toolbar

表示のツールバー

1 - 選択 - このボタンは選択モードに切り替えます。

2 - パン - このボタンはパンモードに切り替えます。

3 - ダイナミックズーム - このボタンはダイナミックズームモードに切り替えます。

4 - ズームイン - このボタンは編集するテンプレートをズームインモードに切り替えます。

5 - ズームアウト - このボタンは編集するテンプレートをズームアウトモードに切り替えます。

6 - 矩形に合わせてズーム - このボタンは矩形に合わせてズームに切り替えます。

7 - ページ幅に合わせる - このボタンはテンプレートをページ幅に合わせます。

8 - ページ全体に合わせる - このボタンはテンプレートをページ全体に合わせます。

9 - 実サイズ - このボタンはズーム倍率を 100% （実サイズ）に設定します。

10 - ズーム倍率 - ズーム倍率の一覧。現在の倍率を表示し、任意の倍率を設定できます。

11 - グリッドを表示 - このボタンはグリッドを表示/非表示にします（Document.ShowGrid プロパティを設定します）。

12 - グリッドに合わせる - このボタンは「グリッドに合わせる」オプションを切り替えます（Document.SnapToGrid プロパティを設定します）。

13 - オブジェクト領域の表示 - このボタンはオブジェクト領域を表示/非表示にします（Document.ShowObjectBounds プロパティを設定します）。

14 - ルーラの表示 - このボタンはルーラを表示/非表示にします。

15 - バンドのレイアウト - このボタンは「バンドの自動レイアウト」オプションを切り替えます。


Objects Toolbar

オブジェクトのツールバー

1 - オブジェクトの整列 - このボタンは、オブジェクトの整列を設定するために整列エディタを開きます。

2 - 選択したオブジェクトを前面に移動 - このボタンは選択したオブジェクトを前面に移動します。

3 - 選択したオブジェクトを背面に移動 - このボタンは選択したオブジェクトを背面に移動します。

4 - 選択したオブジェクトを先頭に移動 - このボタンは選択したオブジェクトを先頭に移動します。

5 - 選択したオブジェクトを最後に移動 - このボタンは選択したオブジェクトを最後に移動します。

6 - 新しいページの追加 - このボタンはレポートに新しいページを追加します。

7 - カレントページの削除 - このボタンはカレントページとそこにあるすべてのオブジェクトを削除します。

8 - ページプロパティの表示 - このボタンはプロパティグリッドにページプロパティを表示します。

9 - テンプレートプロパティの表示 - このボタンはプロパティグリッドにドキュメントのプロパティを表示します。

10 - データソース - このボタンはデータソースを追加/編集するためにドキュメントのデータソースエディタを開きます。

11 - スクリプトのチェック - このボタンはレポートスクリプトをチェックするための関数を呼び出します。エラーが合った場合、エラー一覧ウィンドウにエラー一覧が表示されます。

12 - レポートのプレビュー - このボタンはレポートを生成し、レポートビューアにドキュメントを表示します。


Style Toolbar

スタイルのツールバー

1 - ドキュメントスタイルエディタ - このボタンはスタイルシートエディタウィンドウを表示します。

2 - ドキュメントのスタイル - これは選択したオブジェクトのスタイルを表示するドキュメントスタイルの一覧です。一覧からスタイルを選択できます（選択下オブジェクトの StyleName プロパティを設定します）。

3 - スタイルのみ使用 - このボタンは選択したオブジェクトに設定したスタイルを設定します。これらの設定は選択したスタイルに対応し、すべての変更を削除します。

4 - フォント名 - これは利用可能なスタイルの一覧です。選択したオブジェクトのフォントを表示し、一覧からテキストのフォントを選択できます（選択したオブジェクトの Font プロパティを設定します）。

5 - フォントサイズ - これは選択したオブジェクトのフォントサイズの一覧です。任意のサイズを設定できます（選択したオブジェクトの Font プロパティを設定します）。

6 - 太字 - このボタンは選択したオブジェクトのテキストに太字フォントを設定します（選択したオブジェクトの Font プロパティを設定します）。

7 - 斜体 - このボタンは選択したオブジェクトのテキストに斜体フォントを設定します（選択したオブジェクトの Font プロパティを設定します）。

8 - 下線 - このボタンは選択したオブジェクトのテキストに下線フォントを設定します（選択したオブジェクトの Font プロパティを設定します）。

9 - 左揃え - このボタンは選択したオブジェクトのテキストに左揃えを設定します（選択したオブジェクトの TextAlign プロパティを設定します）。

10 - 中央揃え - このボタンは選択したオブジェクトのテキストに中央揃えを設定します（選択したオブジェクトの TextAlign プロパティを設定します）。

11 - 右揃え - このボタンは選択したオブジェクトのテキストに右揃えを設定します（選択したオブジェクトの TextAlign プロパティを設定します）。

12 - 上揃え - このボタンは選択したオブジェクトのテキストに上揃えを設定します（選択したオブジェクトの TextAlign プロパティを設定します）。

13 - 中間揃え - このボタンは選択したオブジェクトのテキストに中間揃えを設定します（選択したオブジェクトの TextAlign プロパティを設定します）。

14 - 下揃え - このボタンは選択したオブジェクトのテキストに下揃えを設定します（選択したオブジェクトの TextAlign プロパティを設定します）。

15 - 枠 - このボタンは選択したオブジェクトに枠を設定するためのエディタを呼び出します（選択したオブジェクトの Border プロパティを設定します）。

16 - マージン - このボタンは選択したオブジェクトにマージンを設定するためのエディタを呼び出します（選択したオブジェクトの Margins プロパティを設定します）。

17 - 背景色の塗りつぶし - このボタンは選択したオブジェクトに塗りつぶしを設定するためのエディタを呼び出します（選択したオブジェクトの Fill プロパティを設定します）。

18 - テキストの塗りつぶし - このボタンは選択したオブジェクトにテキストの塗りつぶしを設定するためのエディタを呼び出します（選択したオブジェクトの TextFill プロパティを設定します）。

19 - テキスト形式 - このボタンは選択したオブジェクトにテキスト形式を設定するためのエディタを呼び出します（強調表示されているオブジェクトの Format プロパティを設定します）


Properties Toolbar

プロパティのツールバー

1 - コントロール名 - このフィールドは、選択したオブジェクトの名前を設定します。

2 - バインド - これは、選択したオブジェクトの動的なプロパティ一覧です。値を設定するプロパティを選択できます。

3 - F(x) - このフィールドは、選択したオブジェクトの動的なプロパティを設定するための式を設定します。

4 - スクリプトエディタ - このボタンは、選択したオブジェクトの式を設定するためにスクリプトエディタを開きます。


Tool Window

ツールウィンドウ

プロパティ タブ

データソース タブ

ドキュメントツリー タブ


Properties tab

プロパティタブ

プロパティグリッドは、選択したオブジェクトのプロパティを表示したり編集するためのものです。

1 - オブジェクト一覧 - テンプレートの全オブジェクトを表示するテンプレートのオブジェクト一覧です。プロパティグリッドはオブジェクト一覧で選択したオブジェクトのプロパティを表示します。オブジェクト名、オブジェクト型の順で表示されます。

2 - 項目別 - 項目別によるプロパティ表示に切り替えます。

3 - アルファベット順 - アルファベット順でのプロパティ表示に切り替えます。

4 - プロパティ - 静的プロパティの表示モードに切り替えます。

5 - バインド - 動的プロパティの表示モードに切り替えます。

6 - プロパティ ページ。このボタンは使われていません。

7 - プロパティグリッド - オブジェクトのプロパティグリッド

8 - プロパティのグループ

9 - プロパティ： 名前と値

10 - 説明 - 選択したプロパティの説明

さまざまなメソッドがプロパティの選択に使用されます。

1 - テキストや数値を入力するためのフィールド

2 - プロパティエディタを開くためのボタンです。

3 - 値リスト


Data Sources tab

データソース タブ

データソースのツリー表示。

1 - バンドタブとデータソースタブを切り替えます。レポートのバンドのデータや専用フィールドがバンド タブに表示されます。レポートのデータソースのデータがデータソース タブに表示されます。

2 - データソースのフィールドのツリーからフィールドをドラッグすることにより、TextBox オブジェクトを作成してそこにデータソースのデータを出力できます。


Document Tree tab

ドキュメントツリー タブ

ドキュメントツリーは、レポート構造通りに並べられたオブジェクトのセットを表します。ドキュメントツリーは、オブジェクトを選択してプロパティを変更したり、オブジェクトの削除、テンプレート構造の変更が行えます。


Error List

エラーリスト

エラー

警告


Error

エラー

これはスクリプトエラー一覧です。このリストはエラーが発生したバンド名とエラーの説明が示されます。式またはスクリプトを修正するには、左マウスボタンでスクリプト エディタをダブルクリックして開けます。

（参照：エラー）


Warning

警告

未定


Text Editor

テキストエディタ

テキストを入力するためのエディタで、シンプルなテキストを入力できます。テキストエディタは、プロパティグリッドの Text プロパティのボタンをクリックするか、TextBox オブジェクト上をダブルクリックして開きます。

1 - テキストを入力する領域

2 - OK ボタン - 変更を適用してエディタを閉じます。

3 - キャンセル ボタン - 変更をキャンセルしてエディタを閉じます。


Script Editor

スクリプトエディタ

目的に合わせてスクリプトや式を入力するためのスクリプトエディタ。

このエディタはプロパティグリッドのスクリプトのプロパティにあるボタンか、ツールバーの「スクリプトエディタ」ボタンで開きます。

1 - スクリプトの入力領域

スクリプトエディタは構文の強調表示、選択の変更やコードのオートコンプリートを提供します。

2 - フィールドのツリーは、データソースのフィールド（データソースタブの部分）、バンドの構造と特別なフィールド（バンドタブの部分）を表示します。フィールドツリーからフィールドをスクリプトの入力領域にドラッグするか、ツリーのフィールドをダブルクリックすることにより、瞬時に式を入力できます。

3 - 「バンド」と「データソース」タブを切り替えます。

4 - [コードスニペット] ボタン - テンプレートで選択したオブジェクトに対してコードのフラグメントを追加するためのリストを開きます。

5 - [OK] ボタン - 変更を適用し、エディタを閉じます。

6 - [キャンセル] ボタン - 変更をキャンセルし、エディタを閉じます。


Formatted Text Editor

書式付きテキストエディタ

HTML 形式の書式付きのテキスト、同様のマークアップ言語を入力したり RTF テキストを読み込むためのエディタです。このエディタは、プロパティグリッドの Text プロパティのボタンまたは AdvancedText オブジェクトの領域をダブルクリックして呼び出します。

1 - テキストの入力領域

2 - フィールドツリーの「データソース」の部分にデータソースのフィールドを、「バンド」の部分に特別なフィールドを表示します。フィールドツリーからスクリプトの入力領域にフィールドをドラッグするか、ツリーのフィールドをダブルクリックすることで式を瞬時に入力できます。

3 - 「バンド」と「データソース」の切り替え

4 - RTF ドキュメントを開く - このボタンは RTF ファイルを選択するために [開く]ダイアログウィンドウを表示します。

5 - 太字 - このボタンは選択したテキストに タグを挿入して太字を設定します。

6 - 斜体 - このボタンは選択したテキストに タグを挿入して斜体を設定します。

7 - 下線 - このボタンは選択したテキストに タグを挿入して下線を設定します。

8 - フォント - このボタンは選択したテキストにスタイルやフォントを設定するための「フォント」エディタを開いて、テキストに タグを挿入します。

9 - 色 - このボタンは選択したテキストに色を設定するために「色の設定」エディタを開いて、テキストに タグを挿入します。

10 - 左揃え - このボタンは選択したテキストにタグを付けて左揃えにします。

11 - 中央揃え - このボタンは選択したテキストにタグを付けて中央揃えにします。

12 - 右揃え - このボタンは選択したテキストにタグを付けて右揃えにします。

13 - 両端揃え - このボタンは選択したテキストにタグを付けて両端揃えにします。

14 - スペースを挿入する - このボタンはテキストに &nbsp; タグを挿入してスペースを表示します。

15 - 改行を挿入する - このボタンはタグを挿入してテキストを改行します。

16 - OK - このボタンは変更を適用し、エディタを閉じます。

17 - キャンセル - このボタンは変更をキャンセルし、エディタを閉じます。


RichText Editor

RichText エディタ

RTF テキストの読込や編集するためのエディタで、プロパティグリッドの RTFText プロパティのボタンを押すと表示されます。また、このエディタは RichText オブジェクトの領域をダブルクリックしても開くことができます。

1 - テキストの入力領域

2 - [ファイルを開く] ボタン - RTF ファイルを選択するための「開く」ダイアログウィンドウを開きます。

3 - [ファイルに保存] ボタン - テキストを RTF ファイルに保存するために「名前を付けて保存」ダイアログウィンドウを開きます。

4 - [OK] ボタン - 変更を適用してエディタを閉じます。

5 - [キャンセル] ボタン - 変更をキャンセルしてエディタを閉じます。


Collection Editor

コレクションエディタ

コレクションエディタは、コレクションにメンバーを入力したりプロパティを設定します。このエディタはプロパティグリッドのプロパティの「（コレクション）」の隣にあるボタンで呼び出されます。

1 - コレクションのメンバー一覧。コレクションの関数に応じてメンバーの Name または DefaultValue プロパティがリストに表示されます。

2 - プロパティグリッド - コレクションのメンバーのプロパティテーブル。プロパティの編集が行えます。

3 - プロパティグリッドのプロパティの表示モードの切り替え

4 - この領域は、選択したテキストの説明を表示します。

5 - このボタンはコレクションに新しいメンバーを追加します。

6 - このボタンは選択したメンバーをコレクションから削除します。

7 - このボタンはリストのメンバーを上に移動します。

8 - このボタンはリストのメンバーを下に移動します。

9 - OK - このボタンは変更を適用してエディタを閉じます。

10 - キャンセル - このボタンは変更をキャンセルしてエディタを閉じます。


SQL Text Editor

SQL テキストエディタ

SQL コマンドを入力するためのエディタ。この SQL テキストエディタはデータソースを設定するためのもので、ドキュメントのデータソースエディタの SelectQuery プロパティのボタンから開きます。

1 - SQL コマンドの出力領域。SQL スクリプト コマンド エディタは構文を強調表示したり選択を変更します。

2 - OK - 変更を適用してエディタを閉じます。

3 - キャンセル - 変更をキャンセルしてエディタを閉じます。


Source Fields

ソースフィールド

ピボットテーブルのデータエディタは、データ形式やレイアウトを設定できます。このエディタは PivotTable の Layout プロパティのボタンか、ピボットテーブルウィザードの「レイアウトの構成」ボタンで開きます。

1 - [開く] ボタン - データ設定を読み込むために、「開く」ダイアログウィンドウを開いて Data cube layout ファイル（.dcl）を選択できます。

2 - [保存] ボタン - データ設定を保存するために「名前を付けて保存」ダイアログウィンドウを開きます。

3 - ソースフィールド - データソースのフィールド一覧

5 - X ディメンションフィールド - ピボットテーブルの水平方向の見出しのフィールド一覧

6 - Y ディメンションフィールド - ピボットテーブルの垂直平方向の見出しのフィールド一覧

7 - ファクトフィールド - ピボットテーブルのデータのフィールド一覧

8 - [新規フィールド] ボタン - 一覧に新規フィールドを追加します。

9 - [削除] ボタン - 選択したフィールドを一覧から削除します。

10 - [上] ボタン - 一覧のフィールドを上に移動します。

11 - [下] ボタン - 一覧のフィールドを1つ下に移動します。

12 - プロパティグリッド - プロパティの編集が行えるプロパティグリッドのフィールド

13 - プロパティグリッドのプロパティの表示モードを切り替えます。

14 - 説明 - 選択したプロパティの説明を表示する領域です。

15 - [OK] ボタン - 変更を適用してエディタを閉じます。

16 - [キャンセル] ボタン - 変更をキャンセルしてエディタを閉じます。


Style Sheet Editor

スタイルシートエディタ

スタイルシートエディタはテンプレートのスタイルを作成したり編集することができます。このエディタはツールバーの「ドキュメントスタイルエディタ」ボタンで開きます。

1 - スタイル - スタイルの一覧

2 - タイトル - 設定したスタイルの名前

3 - 説明 - 設定したスタイルの説明を表示します。

4 - [開く] ボタン - スタイルを読み込むために、「スタイルシートの読込」ダイアログウィンドウを開いて StyleSheet ファイル（.rss）を選択できます。

5 - [保存] ボタン - 設定したスタイルを保存するために、「スタイルシートの保存」ダイアログウィンドウを開きます。

6 - [スタイルの追加] ボタン - 新しいスタイルを追加します。

7 - [スタイルの削除] ボタン - 選択したスタイルを削除します。

8 - [スタイルを上に移動] ボタン - 一覧で選択したスタイルを上に移動します。

9 - [スタイルを下に移動] ボタン - 一覧で選択したスタイルを下に移動します。

10 - プロパティグリッドのプロパティの表示モードを切り替えます。

11 - プロパティグリッド - スタイルのプロパティグリッドで、Border、Fill、Font、Name、TextAlign、TextFill プロパティの編集が行えます。

12 - 説明 - 選択したプロパティの説明を表示します。

13 - [OK] ボタン - 変更を適用してエディタを閉じます。

14 - [キャンセル] ボタン - 変更をキャンセルしてエディタを閉じます。


Align Editor

整列エディタ

このエディタはテンプレートのオブジェクトの位置合わせを設定でき、ツールバーの「オブジェクトの整列」ボタンで呼び出されます。

1 - 水平 - 選択したオブジェクトの水平方向の位置やサイズを変更できます。

なし - 位置合わせなし

左 - 最左端のオブジェクトの左枠に揃えます（Location プロパティを設定します）。

中央 - 最右端と最左端のオブジェクトを中央に揃えます（Location プロパティを設定します）。

右 - 最右端のオブジェクトの右枠に揃えます（Location プロパティを設定します）。

両端揃え - オブジェクトの幅を右側のオブジェクトから左側のオブジェクトまで設定します（Size と Location プロパティを設定します）。

2 - 垂直 - 選択したオブジェクトの垂直方向の位置やサイズを変更できます。

なし - 位置合わせなし

上 - 最上端の上枠に揃えます（Location プロパティを設定します）。

中央 - 最上端と最下端のオブジェクトを中央に揃えます（Location プロパティを設定します）。

下 - 最下端のオブジェクトの下枠に揃えます（Location プロパティを設定します）。

両端揃え - オブジェクトの高さを上端のオブジェクトから下端のオブジェクトまで設定します（Size と Location プロパティを設定します）。

3 - 中央 - 選択したオブジェクトの位置を中央に変更できます。

ページ - 選択したオブジェクトが貼り付けられているページの中央に揃えます（Location プロパティを設定します）。

選択 - 選択したオブジェクト領域の中央に揃えます（Location プロパティを設定します）。

バンド - 選択したオブジェクトが貼り付けられているバンドコンテナの中央に揃えます（Location プロパティを設定します）。

4 - 適用 - このボタンは変更を適用します。

5 - 閉じる - このボタンはエディタを閉じます。


Border Editor

枠エディタ

オブジェクトの枠エディタです。このエディタはプロパティグリッドの Border プロパティのボタンで呼び出されます。

1 - 線種 - 線種の一覧で、枠線を選択できます。

2 - 線の描画 - 枠線の位置を選択する領域

3 - 設定した枠の表示領域

4 - 色 - このボタンは枠線の色を選択するために色エディタを開きます。

5 - 幅 - このカウンタは枠線の幅を設定します。

6 - OK - このボタンは変更を適用してエディタを閉じます。

7 - キャンセル - このボタンは変更をキャンセルしてエディタを閉じます。


Document Data Sources

ドキュメントのデータソース

データソースを組み込むためのコレクションエディタで、テンプレートにデータソース（Document.DataSources プロパティ）を設定できます。このエディタは、プロパティグリッドの Document オブジェクトの DataSource プロパティのボタンまたはツールバーの「データソース」ボタンで呼び出されます。

1 - ドキュメントのデータソース - ドキュメントのデータソースの一覧

2 - 追加 - このボタンはテンプレートに追加するデータソース型（SqlDataSource、OdbcDataSource、XmlDataSource）の一覧を開きます。

3 - 削除 - このボタンは選択したデータソースを削除します

4 - プロパティグリッド - データソースのプロパティグリッドでプロパティを編集できます。

5 - プロパティグリッドのプロパティの表示モードの切り替え

6 - 説明 - この領域は選択したテキストの説明を表示します。

7 - OK - このボタンは変更を適用してエディタを閉じます。

8 - キャンセル - このボタンは変更をキャンセルしてエディタを閉じます。


Wizards

ウィザード

ウィザードは、シンプルなレポートをすぐに作成するために使用します。


Wizards Gallery

ウィザードギャラリ

シンプルレポートの作成方法を選択できます。ウィザードギャラリは[ファイル/新規]メニューまたはキーの組み合わせ（Ctrl + N）で呼び出されます。

1- 「新規」タブと「保存」タブを切り替えます。

2 - 新規レポートの作成方法のリスト：

白紙 - 新しい白紙のレポートを作成します。

標準のレポート -スタンダードウィザードを呼び出します。

ピボットテーブルレポート - ピボットテーブルウィザードを呼び出します。

3 - ファイルから読込 - このボタンは「ウィザードファイルを開く」ダイアログを開きます。

4 - OK - このボタンは新しい白紙のテンプレートを作成するか、選択したウィザードを開きます。

5 - キャンセル - このボタンはウィザードギャラリを閉じます。

6 - 参照 - このボタンは保存してあるウィザードファイルのフォルダを選択するために「フォルダの参照」ダイアログを呼び出します。

7 - 位置 - このフィールドは保存してあるウィザードファイルのフォルダのアドレスを表示/設定します。

8 - 「位置」フィールドに指定したフォルダに置かれているウィザードファイルの一覧


Standard Wizard

スタンダードウィザード

スタンダードウィザードで、リストやグループ付きの標準のレポートを作成できます。スタンダードウィザードはウィザードギャラリダイアログから呼び出されます。

1 - このデータツリーはレポートの共通設定と追加したデータセクションを表示します。設定モードの切り替えが可能。

2 - データの追加 - このボタンはデータセクションを追加します。

3 - データの削除 - このボタンはデータセクションを削除します。

4, 19 - ウィザードの保存 - このボタンはウィザードの設定を保存するためのフォルダやファイル名を選択するために 「Save Wizard File」 ダイアログウィンドウを開きます。

5, 20 - テンプレートのプレビュー - このボタンは設定したパラメータでテンプレートを作成し、レポートデザイナに表示します。

6, 21 - ドキュメントのプレビュー - このボタンは設定したパラメータでレポートを生成し、レポートビューアに最終ドキュメントを表示します。

7 - タイトルを表示 - レポートにタイトルを表示するかどうかを設定します。

8 - レポートのタイトル - このフィールドはレポート名を設定します（Document.Title プロパティを設定します）。

9 - 計測単位 - 計測単位のリストで、テンプレートの計測単位を選択できます（Document.MetricUnit を設定します）。

10 - スタイルシート - スタイルの一覧で、レポートのスタイルを選択できます（Document.StyleSheet プロパティを設定します）。

11 - スクリプト言語 - サポートしているプログラミング言語の一覧で、レポートに記述するスクリプト言語を選択できます（Document.ScriptLanguage プロパティを設定します）。

12 - 標準 - レポートの用紙サイズのリスト（Page.PaperKind プロパティを設定します）。

13 - カスタム - このフィールドはレポートの用紙サイズを設定します（Page.CustomSize プロパティを設定します）。

14 - 向き - このラジオボタンはレポートの用紙の向きを設定します（Page.Orientation プロパティを設定します）。

15 - 位置 - 見出しの位置を選択する値リスト。テンプレートにページ番号を表示するための見出しの位置（なし、ヘッダー、フッター、両方）を選択できます。

16 - 整列 - 見出しに表示するページ番号（テキスト）の位置を選択するための値リスト（左、中央、右）。

17 - 列数 - レポート内のリストの列数を設定するカウンタです（DataBand.ColumnsCount プロパティを設定します）。

18 - 列の間隔 - レポート内のリストの列の間隔を設定するカウンタです（DataBand.ColumnsCount プロパティを設定します）。

22 - OK - このボタンはウィザードの設定を終了し、選択したパラメータでテンプレートを作成し、レポートデザイナに表示します。

23 - キャンセル - このボタンはウィザードの設定をキャンセルします。

24 - データソース - このボタンはデータソースを選択するためにデータソースツリーを表示します。フィールドには選択したデータソースの名前が表示されます。

25 - フィールドのレイアウト - このリストはデータの表示方法を選択できます。

26 - 全フィールド - データソースフィールドのツリー

27 - 右に移動 - このボタンはデータソースツリーから選択したフィールドを「表示フィールド」または「グループ」に追加します。これにより、Caption、Width、Aggregate プロパティの値は規定値に設定されます。

28 - 左に移動 - このボタンは「表示フィールド」または「グループ」から選択したフィールドを削除します。

29 - Add Blank - このボタンは「表示フィールド」にプロパティが設定されていないフィールドを追加します。

30 - 上に移動 - このボタンは「表示フィールド」または「グループ」で選択したフィールドを上に移動します。

31 - 下に移動 - このボタンは「表示フィールド」または「グループ」で選択したフィールドを下に移動します。

32 - 「表示フィールド」と「グループ」を切り替えます

33 - 表示フィールド - これはレポートを作成するためのフィールドの表で、追加したフィールドとそのプロパティを表示します。フィールドはデータソースから追加するか、新しいフィールドを追加できます。FieldName プロパティはフィールド名を表示します。Caption プロパティは表示フィールドのタイトルを表示します。Width プロパティは列幅を設定します。Aggregates プロパティは集計関数を設定します。

34 - キャプション - このフィールドは「表示フィールド」のレコードの Caption プロパティを設定します。レポートにフィールドタイトルを出力するオブジェクトの Textbox.Text プロパティを設定します。

35 - 幅 - このフィールドは「表示フィールド」のレコードの Width プロパティを設定し、リストの列幅をパーセントで定義します。

36 - 集計 - これは集計関数のリストで、フィールドごとに集計値を計算するための関数を選択できます。値はリストの末尾に出力されます。

37 - グループ - リストをグループ化するためのデータソースのフィールド一覧です。


Pivot Table Wizard

ピボットテーブルウィザード

ピボットテーブルウィザードは、ピボットテーブルを含んだレポートを作成できます。ウィザードギャラリダイアログから呼び出します。

1, 17 - ウィザードの保存 - ウィザードの設定を保存するためにフォルダやファイル名を選択するための「名前を付けて保存」ダイアログウィンドウを呼び出します。

2, 18 - テンプレートのプレビュー - 選択したパラメータでテンプレートを作成し、レポートデザイナに表示します。

3, 19 - ドキュメントのプレビュー - 選択したパラメータでレポートを生成し、それをレポートビューアに表示します。

4 - 共通設定 - レポートの共通設定タブ。

5 - タイトルを表示 - レポートにタイトルを表示するかどうかをチェックします。

6 - レポートのタイトル - レポート名を設定します（Document.Title プロパティを設定します）。

7 - 計測単位 - テンプレートの計測単位を選択できる計測単位の一覧（Document.MetricUnit プロパティを設定します）。

8 - スタイルシート - レポートのスタイルを選択できるスタイルの一覧（Document.StyleSheet プロパティを設定します）。

9 - スクリプト言語 - レポートに記述するスクリプト言語を設定できる、サポートされているプログラミング言語の一覧（Document.ScriptLAnguage プロパティを設定します）。

10 - 標準 - レポートの用紙サイズを選択できる用紙サイズの一覧（Page.PaperKind プロパティを設定します）。

11 - カスタム - レポートの用紙サイズを設定します（Page.CustomSize プロパティを設定します）。

12 - 向き - レポートの用紙の向きを設定します（Page.Orientation プロパティを設定します）。

13 - 位置 - テンプレートにヘッダーを表示する位置を選択できる値リスト（上、下）。

14 - 整列 - 見出しに表示するテキストの配置を選択できる一覧。

15 - OK - ウィザードを閉じ、選択したパラメータでテンプレートを作成し、レポートデザイナに表示します。

16 - キャンセル - ウィザードの処理をキャンセルします。

20 - ピボットテーブル設定 - ピボットテーブル設定タブ。

21 - データソース - ピボットテーブルのデータソースを選択するためのツリーを開きます。このフィールドは選択したデータソースを表示します。

23 - 追加 - 新規フィールドを入れ子フィールドの一覧に追加します。

24 - 削除 - 選択したフィールドを入れ子フィールドの一覧から削除します。

25 - レイアウトの構成 - ソースフィールドエディタを開いてピボットテーブルのデータを編集できます。

26 - テーブルのタイトル - テーブルのタイトルを設定します（PivotTable.TableCaption プロパティを設定します）。

28 - 単一ファクトの表示 - ファクト列のタイトルの表示/非表示を設定します（PivotTable.ShowSingleFact プロパティを設定します）。

29 - テキストの繰り返し表示 - 新しいページにテキストを繰り返し表示するかを設定します（PivotTable.ShowRepeatText プロパティを設定します）。

30 - 各ページにディメンションを表示 - 各ページにディメンションを表示するかを設定します（PivotTable.DimensionOnEveryPage プロパティを設定します）。

31 - 自動列幅 - 列の規定幅を設定します（PivotTable.AutoColumnWidth プロパティを設定します）。

32 - 行の高さ - 行の高さを設定するカウンタ（PivotTable.RowHeight プロパティを設定します）。

33 - 自動による行の高さモード - 行の自動高さモードを設定する一覧（PivotTable.AutoRowHeight プロパティを設定します）。


Hot Keys

ホットキー

組み合わせ | コマンド
Ctrl + N | 新しいレポートを作成します
Ctrl + O | テンプレートまたはドキュメントをファイルから読み込みます
Ctrl + S | テンプレートの変更を保存します
Ctrl + Z | 最後の動作をキャンセルします
Ctrl + Shift + Z | 最後の動作を繰り返します
Ctrl + A | エディタの全テキストを選択します
Ctrl + X | クリップボードに切り取ります
Ctrl + C | クリップボードにコピーします
Ctrl + V | クリップボードから挿入します
Ctrl + D; Delete | 削除します
F2 | 「選択」モードに切り替えます
F3 | 「パン」モードに切り替えます
F4 | 「ズームイン」モードに切り替えます
F5 | 「ズームアウト」モードに切り替えます
F6 | 「矩形に合わせてズーム」モードに切り替えます
F7 | 「ダイナミックズーム」モードに切り替えます
Ctrl + R | レポートビューアにドキュメントをプレビューします
Ctrl + E | レポートビューアからドキュメントをエクスポートします
Ctrl + K + X | スクリプトエディタで 「Insert Snippet」 一覧を開きます


Template Objects

テンプレートのオブジェクト

分類

バンド

ビジュアルオブジェクト


Classification

分類

レポート要素はすべて2つに分類されます。

バンド（DataBand、PageHeader、PageFooter、Header、Footer、GroupBand、PageOverlay、CrossBand、BandContainer、SideBySide、SubReport、Content、PivotTable）

ビジュアルオブジェクト（TextBox、AdvancedText、Picture、Shape、ZipCode、BarCode、RichText、WinFormsControl）


Bands

バンド

バンドは他のオブジェクトのコンテナで（レポートには表示されません）、バンドに格納されたオブジェクトの出力方法を定義します。バンドは他のバンドのコンテナとしても使われます。この場合、含まれているオブジェクトの出力方法はそのオブジェクトのコンテナバンドにすべて依存します。バンドの幅は変わらず、常にページ幅と同じになります。ページのオブジェクトの位置はレポート生成時に定義され、レポートのバンド順、バンドの内容、Render グループのプロパティに依存します。

(参照：オブジェクトのプロパティ)


DataBand

DataBand は、埋め込んだオブジェクトを複数出力します。行はそれぞれデータソースの1レコードと一致します。データバンドのデータソースは DataSource プロパティで指定します。データソースを指定しない場合は、InstanceCount プロパティに反復回数を設定します。

DataBand のコンテナとして使用可能なバンド： Page、DataBand、BandContainer、GroupBand、SideBySide

（参照：データソースのリスト）


Detail

Detail バンドは、コンテナバンドのデータソースのデータにアクセスしたり、様々なバンドにビジュアルオブジェクトを出力します。Detail バンドは、このバンドに組み込まれているオブジェクトの出力に必要な高さを指定します。

Detail のコンテナとして使用可能なバンド： Page、DataBand、BandContainer、GroupBand、SideBySide

（参照：シンプルリスト）


PageHeader and PageFooter

PageHeader と PageFooter

PageHeader/PageFooter は、ページヘッダー/ページフッターを作成するために使用します。PageHeader/PageFooter はコンテナであり、最終レポートに埋め込まれたオブジェクトの前後の間隔は、PageHeader/PageFooter とテンプレート内のバンドの上枠/下枠の距離で指定されます。PageHeader/PageFooter の位置は最終レポートのオブジェクトの位置には影響を与えません。

PageHeader/PageFooter のコンテナとして使用可能なバンド： Page のみ

（参照：ページの見出し）


Header and Footer

Header と Footer

Header と Footer は、DataBand と GroupBand によって出力されるリストにページのヘッダーとフッターを作成します。Header の内容は、GroupBand によって出力されるリストの先頭または各グループの見出しに表示されます。Footer の内容は、リストまたはグループの末尾に表示されます。

DataBand と GroupBand は Header や Footer のコンテナとして使用できます。

（参照：リストのヘッダー、グループヘッダー）


GroupBand

GroupBand は、指定した式（レポート生成時に計算されます）によってデータをグループ化するために使用されます。

DataBand と GroupBand は GroupBand のコンテナとして使用可能です。

（参照：グループ化）


PageOverlay

PageOverlay はページの下層レイヤーを作成します。最終ドキュメントのページの始めから埋め込まれたオブジェクトまでの距離は、テンプレートの PageOverlay の上端の境界線のインデントにより設定されます。PageOverlay は、互いに重なり合うことができる他のオブジェクトの位置付けに何の影響も及ぼしません。

PageOverlay のコンテナとして使用可能なバンド： Page のみ

(参照：ページの重ね合わせ）


CrossBand

CrossBand は埋め込まれたオブジェクトを左から右方向の行として出力します。反復回数は InstanceCount プロパティか、データソースのレコード数で指定します。クロスバンドは表の作成に使用できます。

CrossBand のコンテナとして使用可能なバンド： Header、Footer、Detail

（参照：水平方向のリストと表）


BandContainer

BandContainer コンポーネントは、コンテンツを一度に出力します。様々なバリエーションのバンドを結合するために、1つの接続された SideBySide に複数のバンドを結合するために使用されます。

BandContainer のコンテナとして使用可能なバンド： Page、DataBand、BandContainer、GroupBand、SideBySide


SideBySide

データを並列出力するためのバンドです。

SideBySide のコンテナとして使用可能なバンド：Page、DataBand、BandContainer、GroupBand、SideBySide

（参照：バンドの並列）


SubReport

サブレポートはレポートの埋め込みを追加でき、一緒に生成することができます。サブレポートとして使用するテンプレートから、バンド（例：DataBand、Detail など）だけが追加されます。

SubReport のコンテナとして使用可能なバンド： Page、DataBand、BandContainer、GroupBand、SideBySide

（参照：サブレポートの使用）


Content

Content コンポーネントは、親レポートで使用するバンドです。このコンポーネントは最終レポートのコンテンツの配置位置を指定します。

Content のコンテナとして使用可能なバンド：Page、DataBand、BandContainer、GroupBand、SideBySide

（参照：マスターレポート)


PivotTable

PivotTable バンドは、静的なデータを基にしてクロスレポートを作成したり集計表を作成するために使用します。PivotTable の使用結果は上述した CrossBand のビジュアル表現を含んでいるレポート部分です。

クロス集計の特別なエディタを使用して、計算に使用するデータを指定できます。スクリプトを使用して、計算命令を作成できます。これは、データソースから複数のフィールドを合計することから、必要とするレポートにさまざまなグループ化を行うことまで、テーブルを設定する機会を提供します。

PivotTable のコンテナとして使用できるバンド： Page、DataBand、BandContainer、GroupBand、SideBySide

（参照：ピボットテーブル）


Visual Elements

ビジュアルオブジェクト

レポートに表示されるオブジェクト。バンドに含めることによって位置を指定します。ビジュアルオブジェクトのサイズや表示/非表示はプロパティで指定します。

(参照：オブジェクトのプロパティ）


TextBox

TextBox コンポーネントは、テキスト情報を出力します。テキスト情報は、静的またはレポート生成時に作成されます。

（参照：テキストの出力）


AdvancedText

AdvancedText コンポーネントは、データを書式付きのテキストとして出力します。段落やテキストのスタイルを設定したり、記述したテキストに直接式を使用するオプションがあります。書式付きのテキストは、HTML のようなマークアップ言語や RTF 形式のサブセットを使用して設定できます。そのために書式付きテキストエディタを使用します。static 型の RTF テキストを読み込めます。アドバンステキストは、一部の RTF のサブセットしかサポートしません。

（参照：書式付きのテキスト）


Picture

Picture コンポーネントは、イメージを出力します。ハードドライバまたはデータソースからイメージを読み込むことができます。

（参照：イメージ）


Shape

Shape コンポーネントは、様々な幾何学的な形を出力します。

（参照：シェープの使用）


ZipCode

郵便番号を出力します。

（参照：Zip コード）


BarCode

BarCode コンポーネントは、様々なバーコード型を出力します。使用するバーコード型に応じて、設定がいくつかあります。

（参照：バーコード）


RichText

RichText コンポーネントは、RTF 形式でテキストを出力します。エディタで RTF ファイルを選択できます。

（参照： RTF 形式のテキスト）


WinFormsControl

WinFormsControl コンポーネントは、レポートに WinFormsControl コンポーネントを格納します。コントロールのイメージだけがレポートに格納されます（この機能は使用できません）。


User Guide

ユーザーガイド

テンプレート

ページ

オブジェクトの操作

オブジェクトのプロパティ

テキスト出力

リスト

グループ化

水平方向のリストと表

バンドの並列

ピボットテーブル

イメージ

シェープの使用

バーコード

パラメータ

ハイパーリンクとレポートのナビゲーション

サブレポートの使用

Zip コード

マスターレポート


Template

テンプレート

レポートテンプレートは、バンドやオブジェクトが入った複数のページです。

テンプレートの制御

テンプレートのプロパティ


Template Controls

テンプレートの制御

テンプレートの作成

テンプレートを開く

テンプレートの保存

テンプレートの生成


Template Creation

テンプレートの作成

メインメニューの[ファイル]->[新規]を選択するか、ツールバーの「新しいドキュメント」ボタンを押すと、新しいテンプレートを作成するためのウィザードギャラリが表示され、そこでテンプレートの作成方法を選択できます。

レポート | 説明
白紙のレポート | 白紙のテンプレートを作成します
標準のレポート | 標準のテンプレート（リストまたはデータカード）を作成するためのスタンダードウィザードを開きます
ピボットテーブルレポート | ピボットテーブルレポートを作成するためのピボットテーブルウィザードを開きます


Template Opening

テンプレートを開く

ダイアログウィンドウを開くには、メインメニューから[ファイル]->[開く]を選択するか、ツールバーの「テンプレートを開く」ボタンを押してください。このウィンドウで、開きたいレポートを選択できます。また、Report Design アプリケーションに関連付けられている .rst テンプレートファイルをダブルクリックすることもできます。


Template Saving

テンプレートの保存

テンプレートを保存するには、メインメニューの[ファイル]->[保存]を選択するか、ツールバーの「テンプレートの保存」ボタンを押してください。既にドキュメントが保存されている場合は同じファイルが変更されます。新しいテンプレートを編集する場合、テンプレートのフォルダとファイル名を選択する「テンプレートの保存」ダイアログウィンドウが表示されます。[ファイル]->[名前を付けて保存]は常に「テンプレートの保存」ダイアログを開きます。


Template Generation

テンプレートの生成

テンプレートを生成するには、メインメニューの[レポート]->[プレビュー]を選択するか、ツールバーの「プレビュー」ボタンを押してください。

（参照：ドキュメントの生成）


Template Properties

テンプレートのプロパティ

プロパティグリッドでテンプレートのプロパティを設定できます。プロパティグリッドにテンプレートのプロパティを表示するには、メインメニューの[レポート]->[ドキュメントのプロパティ]を選択するか、ツールバーの「テンプレートプロパティの表示」ボタンを押してください。


Graphical Settings

イメージ設定

GraphicsSettings のグループには次のプロパティがあります。

プロパティ | 説明
CompositingQuality | 合成処理で使用する品質レベルを設定します
InterpolationMode | 補間モードを設定します
SmoothingMode | スムージングモードを設定します
TextRenderingHint | テキストの表示モードを設定します

コントロールの表示とグリッド

ShowObjectBounds プロパティは、テンプレートにコントロールの領域を表示するかどうかを設定できます。

プロパティ | レポートテンプレート

ShowGrid プロパティは、グリッドを表示するかどうかを定義し、GridStep プロパティはグリッドの間隔を設定します。

プロパティ | レポートテンプレート

SnapToGrid プロパティは、オブジェクトを作成する時やオブジェクトのサイズや位置を変更する時にオブジェクトをグリッドに合わせるために使用します。

ツールバーのボタンを使用して、これらのプロパティを編集できます。


Measurement Units

計測単位

MetricUnit プロパティは、テンプレート全体の計測単位の設定に使用します。


Template Data Sources

テンプレートのデータソース

アプリケーションはデータソースになり得ますが、レポートデザイナの Document.DataSources プロパティ（内蔵されたデータソースのコレクション）を使用して、現在のテンプレートのデータソースを設定できます。このプロパティを設定するには、ドキュメントのデータソースエディタを使用します。

（参照：データソース）


Template Parameters

テンプレート パラメータ

Parameters コレクションでレポート パラメータを設定できます。

（参照：パラメータ）


Page

ページ

レポートテンプレートはページのセットです。各ページには、データを表示するオブジェクトが含まれています。規定の何も入っていないレポートにはページが1ページ含まれています。

ページのプロパティ

ページ スタイル


Page Properties

ページのプロパティ

プロパティグリッドでページのプロパティを設定できます。プロパティグリッドにページのプロパティを表示するには、メインメニューの[レポート]->[ページのプロパティ]をクリックするか、ツールバーの「ページプロパティの表示」ボタンを押してください。


Page Size

ページサイズ

ページサイズを設定するには、PaperKind プロパティを使用します。このプロパティを使用して一般的な用紙サイズ（例：A4（デフォルト）、B5、レターなど）を選択できます。ページの向きを縦または横に設定できます。この場合、Size や TemplateSize プロパティは選択した用紙のサイズ設定を取得できます。尚、変更することはできません。

ユーザー定義の用紙サイズを作成したい場合は、PaperKind プロパティの値を 「Custom」 にし、CustomSize プロパティの用紙サイズのパラメータを設定してください。


Page Margins

ページの余白

ページの余白は、ページの境界からバンド（コンテナ）に貼り付けたオブジェクトまでのインデントを設定します。Margins プロパティはページの余白を設定します。テンプレートでは、余白は赤線で表示されます。

ページの Margins プロパティの使用例：

レポートテンプレート：

crossBand1.InstanceCount = 2

プロパティ | レポート


Page Style

ページスタイル

StyleName プロパティは、ページの全オブジェクトに統一したスタイルを設定できます。スタイルシート エディタでスタイルを作成し、そのスタイルを StyleName プロパティにパラメータとして選択すると、ページに追加されたすべてのオブジェクトやバンドに規定値としてそのスタイルが設定されます。編集する時に個別にスタイルを変えなければ、ページの全オブジェクトにそのスタイルが適用されます。

(参照：StyleName （表示））


Multipage Report

マルチページレポート

レポートに必要な分のページを追加できます（例：表紙付きのレポート）。用意されたレポートは、ページのテンプレートに従って作成されたレポートの組み合わせです。レポート部分はテンプレートのページ順に表示されます。

[レポート]->[ページの追加]/[レポート]->[ページの削除]メニューをクリックするか、ツールバーの「新しいページの追加」/「カレントページの削除」ボタンを押してレポートにページを追加/削除してください。ページを削除すると、そのページに含まれているオブジェクトもすべて削除されます。レポートデザイナの左端角のタブでページ間を移動できます。


Page Headlines

ページの見出し

PageHeader と PageFooter は、ヘッダー/フッターを設定するために使用します。バンド内容は、ページ内のバンドの位置に関係なくページの上部/下部に表示されます。Mode プロパティは見出しの生成モード（各ページ、偶数/奇数ページ）を設定します。

ページの見出しの使用例：

レポートテンプレート：

textBoxPageHeader.Value = "Page " + PageNumber

Mode プロパティ | レポート


Page Numeration

ページ番号

PageNumber プロパティは、ページ番号の取得に使用します。PageCount プロパティはレポートのページ総数を格納します。最初のパス時はページ総数はわからないので、PageCount プロパティは PageNumber プロパティと同じになります。PageCount プロパティにページ総数を取得するには、Document オブジェクトの DoublePass プロパティを "True" に設定してください。

ヘッダーにページ番号を表示する例：

dataBand1.InstanceCount = 3;

textBoxHeader.Value = "Page " + PageNumber.ToString() + " of " + PageCount.ToString();

textBoxDetail.Value = "Line Number " + dataBand1.LineNumber().ToString();

レポートテンプレート | レポート


Page Overlay

ページの重ね合わせ

PageOverlay プロパティは、背景にデータを表示しなければならない場合に使用します。オブジェクトの位置は、ページ上の PageOverlay の位置に関係なく、バンドの位置に従って計算されます。このバンドは他のバンドの位置には影響を及ぼしません。PageOverlay オブジェクトの上に他のバンドの内容が表示されます。

レポートテンプレート | レポート

Mode プロパティは、重ね合わせモード（各ページ、奇数/偶数ページ）を設定します。


Objects窶� Controls

オブジェクトの操作

オブジェクトの追加

オブジェクトの削除

オブジェクトのプロパティ

ドキュメントツリー

オブジェクトの位置


Object Addition

オブジェクトの追加

コンポーネントバーの「追加」ボタンをクリックするか、メインメニューの[挿入]->[オブジェクト名]を選択します。次にマウスポインタをページ上に移動して左クリックしてオブジェクトを追加します。あるバンド上でクリックすると、プログラムはこのバンドに追加しようとしているオブジェクトを入れることができるかどうかを確認します（詳細は利用可能なバンドコンテナを参照してください）。バンドに対象のオブジェクトを入れられる場合はテンプレートのバンド内に追加されます。そうでなければエラーメッセージが表示されます。

出力したい項目をデータソース タブのツールウィンドウのデータツリーからテンプレートにドラッグアンドドロップすることにより、TextBox オブジェクトにデータソースのデータを出力できます。その場合、TextBox.Value プロパティは自動的に設定されます。


Object Deletion

オブジェクトの削除

オブジェクトを削除する方法はいくつかあります。オブジェクトを左クリックして[オブジェクトの削除]を選択するか、（オブジェクト一覧またはツールウィンドウのドキュメントツリーからオブジェクトを選択し)メインメニューの[編集]->[オブジェクトの削除]をクリック（またはキーボードの 「Delete」 ボタンを押すか）してください。バンドを削除すると、その中に格納されているオブジェクトもすべて削除されます。


Object Properties

オブジェクトのプロパティ

オブジェクトのプロパティは、プロパティグリッドを使用して設定できます。プロパティグリッドにプロパティを表示するには、テンプレートのオブジェクトを選択します。複数のオブジェクトを選択すると、プロパティグリッドに共通のプロパティが表示されます。

（参照：オブジェクトのプロパティ）


Document Tree

ドキュメントツリー

ドキュメントツリーには、ドキュメントの全オブジェクト一覧が含まれており、その構造を表します。ドキュメントツリーを使用して、オブジェクトを選択/削除したり、（オブジェクトを別のバンドにドラッグして）階層を変更したり、オブジェクトの順番を変更することができます。


Objects窶・Location

オブジェクトの位置

テンプレートのオブジェクトの位置は Size プロパティで設定されます。2つのオブジェクトが重なっている場合は前面のオブジェクトが表示されます。[編集/配列]メニューをクリックするか、ツールバーのボタンを使用してオブジェクトの順番を変更します。複数のオブジェクトをまとめて揃えるには、整列エディタを使用します。

同じコンテナに含まれている複数のオブジェクトを Shift キーを押しながらマウスポインタで選択することにより一斉に位置を変更することができます。

キーボードのナビゲーションボタン（↑←↓→）を使って、オブジェクトの位置を変更できます。Ctrl キーを押したままナビゲーションボタンを使用すると、グリッドから外れた位置にオブジェクトを移動できます。


Objects' Properties

オブジェクトのプロパティ

オブジェクトのプロパティは、レポート生成時のオブジェクトの外観や動作を定義します。オブジェクトのプロパティはプロパティタブで設定できます。プロパティグリッドにオブジェクトのプロパティを表示するには、テンプレート内のオブジェクトを左マウスボタンで選択するか、オブジェクト一覧から選択する必要があります。プロパティの規定値は普通のフォントで表示され、編集したプロパティ値は太字で表示されます。複数のオブジェクトを選択するには Shift ボタンを押しながら選択します。その場合、プロパティグリッドには選択したオブジェクトの共通のプロパティが表示されます。オブジェクトのプロパティはすべて次のようなグループに分けられます。

グループ | 説明
表示 | オブジェクトの表示や外観を定義するプロパティ
データ | データ処理を定義するプロパティ
デザイン | レポートデザイナでテンプレートを編集する時に、オブジェクトの表示を定義するプロパティ
レイアウト | オブジェクトの位置やサイズを定義するプロパティ
その他 | レポートに作成されたオブジェクトのプロパティ
Navigation （ナビゲーション） | レポートのナビゲーションを作成するプロパティ
PageSetting （ページ設定） | ページのプロパティ
Render （生成） | レポート生成時のオブジェクトの動作命令を定義するプロパティ
Script （スクリプト） | スクリプト - オブジェクトの処理


Angle (Appearance)

Angle （表示）

Angle プロパティは、その領域に対してオブジェクトの回転角度を設定するために使用します。設定可能な値は 0、90、180、270 度です。Picture と TextBox オブジェクトに回転角度を設定した例：

プロパティ | レポート


Border (Appearance)

Border（表示）

Border プロパティは、オブジェクトの枠の表示と線の描画スタイル（線種、幅、色）を設定します。

枠エディタ：

TextBox オブジェクトの枠の例：


Fill (Appearance)

Fill （表示）

Fill プロパティは、オブジェクトの塗りつぶし領域の色やスタイルを設定します。このプロパティを変更するには、塗りつぶしエディタを使用して塗りつぶし型、色、透明度や他のパラメータを設定できます。

TextBox オブジェクトに塗りつぶしを使用した例：


Font (Appearance)

Font （表示）

Font プロパティを使用してオブジェクトのフォント型を設定できます。プロパティを変更するためのフォントエディタがあります。それを使用して、フォント、フォントスタイル、サイズを設定できます。

TextBox オブジェクトのフォントの使用例：

備考：AdvancedText に出力するテキストとフォントが書式付きのテキストエディタで設定された場合、Font プロパティは無視されます。


Margins (Appearance)

Margins （表示）

Margins プロパティは、オブジェクトの余白を設定します。

Picture オブジェクトの余白の変更例：

プロパティ | レポート


StyleName (Appearance)

StyleName （表示）

StyleName プロパティは、1つまたは複数のオブジェクトに既存のスタイルを適用して、オブジェクトのスタイルをすばやく編集します。

ツールバーの「ドキュメントのスタイルエディタ」でスタイルシートエディタを開きます。

スタイルを開いたり保存するには、「開く」や「保存」ボタンを使用します。ファイルは XML 形式で、ファイル名の拡張子は .rss になります。「スタイルの追加」や「スタイルの削除」ボタンは、スタイルを追加したり削除します。

次のスタイルのプロパティを使用できます。

プロパティ | 説明
Border | オブジェクトの枠
Font | ドキュメントのテキストスタイル
Name | スタイル名
TextAlign | オブジェクトのテキストの配置
TextFill | オブジェクトのテキストの塗りつぶし

オブジェクトにこのスタイルを適用するには、必要とするスタイル名を StyleName プロパティのパラメータとして設定してください。

TextBox や Shape オブジェクトの StyleName プロパティの使用例

レポートテンプレート | 作成したスタイル
プロパティ |

注意 1： スタイルをコンテナに適用すると、含まれているオブジェクトすべてに適用されます。 オブジェクトのプロパティ値が規定値（つまり、手動で変更していない場合）の場合のみ、そのスタイルが持っているのと同じ値を取得します。規定値ではない値は太字で表示されます。

注意 2： AdvancedText で出力されるテキストとフォントが書式付きテキストエディタで設定された場合、Font プロパティは無効となります。


TextAlign (Appearance)

TextAlign （表示）

TextAlign プロパティは、オブジェクトの領域に応じてテキストを配置します。

TextBox オブジェクトの配置例：

プロパティ | レポート


TextFill (Appearance)

TextFill (表示)

TextFill プロパティはテキストの塗りつぶしを設定します。

塗りつぶしエディタで塗りつぶしのプロパティを設定します。塗りつぶし型、色、透明度、その他のパラメータを取得できます。

TextBox オブジェクトのテキストの塗りつぶし例：

備考：AdvancedText に出力するテキストが書式付きのテキストエディタで設定された場合、Font プロパティは無視されます。


TextFormat (Appearance)

TextFormat （表示）

TextFormat プロパティは、テキストを設定した形式（数値、通貨、日付、時刻、パーセント）に変更します。ユーザー定義の形式も作成できます。

フォーマットエディタのテキスト形式をユーザー定義に設定：

Textbox オブジェクトに使用したテキスト形式の例：

プロパティ | レポート


ToolTip (Appearance)

ToolTip (表示)

ToolTip プロパティは、オブジェクト上にマウスポインタを置いた時に表示されるヒントを作成します。

Shape オブジェクトでのツールチップの使用例：

プロパティ | レポート


Tag (Data)

Tag （データ）

Tag プロパティは、ユーザーが作成したオブジェクトに追加情報を持たせることができます。

タグの使用例：


Name (Design)

Name （デザイン）

Name プロパティは、オブジェクトの名前を設定します。すべてのオブジェクト名は一意でなければなりません。

BandContainer の名前の設定:


ShowBottom (Design)

ShowBottom (デザイン)

ShowBottom プロパティは、デザイナモードでのバンド下部の境界線の表示/非表示を設定できます。

DataBand の ShowBottom プロパティの使用例：

プロパティ | レポート


ShowCaption (Design)

ShowCaption （デザイン）

ShowCaption プロパティは、デザイナモードでのバンドのヘッダー部分の表示/非表示を設定します。

DataBand の ShowCaption プロパティの使用例：

プロパティ | レポート


Location (Layout)

Location （レイアウト）

Location プロパティは、コンテナに対するオブジェクトの左上端の位置を設定します。

オブジェクトの位置はマウスポインタまたはプロパティグリッドで変更できます。

Shape オブジェクトの位置の変更例：

プロパティ | レポート

注意1： X 座標は 0 で、変更できません。

注意２：「グリッドに合わせる」オプションは、マウスポインタで位置を変更する時にオブジェクトをグリッドに合わせるかどうかを定義します。 ツールバーの下図のボタンをクリックして切り替えてください。


Size (Layout)

Size （レイアウト）

Size プロパティは、オブジェクトのサイズを設定します。

このプロパティは、オブジェクトの枠をマウスポインタまたはプロパティグリッドから移動する時にサイズを変更します。

Shape オブジェクトのサイズを変更する例：

プロパティ | レポート

注意 1： バンドの X 座標は 0 と同じで変わりません。

注意 2：「グリッドに合わせる」は、位置変更する時にオブジェクトをグリッドに合わせるかどうかを定義します。 このオプションの切り替えには「グリッドに合わせる」ボタンを使用してください。


CanBreak (Render)

CanBreak プロパティは、オブジェクトがページサイズを超過した場合にオブジェクトの内容を改ページします。

Detail と AdvancedText オブジェクトの CanBreak プロパティの例：

プロパティ | レポート

注意：別のセクションに貼り付けたオブジェクトの CanBreak プロパティを設定する場合、その内容をページ分割するには、コンテナバンドに CanBreak プロパティを設定しなければなりません。


CanGrow (Render)

CanGrow プロパティは、コンテンツがテンプレート内のオブジェクトのサイズに収まりきらない場合にオブジェクトの高さを大きくします。

TextBox オブジェクトの CanGrow プロパティの使用例

レポートテンプレート：

プロパティ | レポート

注意：別のバンド内のオブジェクトに CanGrow プロパティを設定した場合、そのオブジェクトの高さに応じてコンテナバンドの高さを変更するには、コンテナバンドに同じプロパティを設定しなければなりません。


CanShrink (Render)

CanShrink プロパティは、レポート生成時に挿入されたコンテンツがコンテナのサイズよりも小さい場合にオブジェクトの高さを小さくします。

TextBox オブジェクトの CanShrink プロパティの使用例

レポートテンプレート：

プロパティ | レポート

注意：別のバンド内のオブジェクトに CanShrink プロパティを設定した場合、そのオブジェクトの高さに応じてコンテナの高さを変更するには、コンテナバンドの同じプロパティを設定しなければなりません。


MinSpaceAfter (Render)

MinSpaceAfter プロパティは、バンドの下端領域からページの下端領域までの最小間隔を設定します。

Detail に MinSpaceAfter を使用した例とその表示例：

レポートテンプレート：

プロパティ | レポート


Mode (Render)

Mode プロパティは、ヘッダーを設定したり、重ね合わせたり、コントロールを奇数、偶数、全ページに表示するかを定義できます。

ページヘッダーの Mode プロパティの使用例

レポートテンプレート：

プロパティ | レポート


GrowToBottom (Render)

GrowToBottom プロパティは、コンテナバンドの下枠までオブジェクトを引き伸ばします。

TextBox.GrowToBottom プロパティの使用例

レポートテンプレート：

プロパティ | レポート


NewColumnAfter (Render)

NewColumnAfter プロパティは、バンド内容の後に新しい列を追加するかどうかを設定します。

Detail の内容の後に新しい列を追加する例:

レポートテンプレート：

プロパティ | レポート


NewColumnBefore (Render)

NewColumnBefore プロパティは、バンドの内容の前に新しい列を追加するかどうかを設定します。

Detail (detail4) の内容の前に新しい列を追加する例：

レポートテンプレート：

プロパティ | レポート


NewPageAfter (Render)

NewPageAfter プロパティは、バンド内容の後に新しいページを追加するかどうかを設定します。

Detail オブジェクトの後に新しいページを追加する例：

レポートテンプレート：

プロパティ | レポート


NewPageBefore (Render)

NewPageBefore プロパティは、セクションの内容の前に新しいページを追加するかどうかを設定します。

Detail (detail3) オブジェクトの前に新しいページを追加する例：

レポートテンプレート：

プロパティ | レポート


Visible (Render)

Visible プロパティは、レポート内のオブジェクトの表示/非表示を設定します。

数字の "2" を持つテキストボックスの Visible プロパティの例

レポートテンプレート：

プロパティ | レポート

注意：コンテナのセクションが非表示の場合、格納されているオブジェクトもすべて非表示になります。


Text Output

テキストの出力

Report Sharp Shooter では次のコンポーネントを使用してテキストを入力します。

コンポーネント | 説明
TextBox | 普通のテキスト情報を入力でき、テキストの表示を調整できます。
AdvancedText | 書式付きテキストを出力します。
RichText | RTF テキストを出力します。


Static Text

static 型のテキスト

Text プロパティは、TextBox オブジェクトに出力するテキストを入力するために使用します。このプロパティはテキストエディタで定義されます。テキストエディタを開くには、テキストボックスをダブルクリックするか、プロパティグリッドの Text プロパティのボタンをクリックしてください。また、テキストセルに直接テキストを入力することもできます。

テキストエディタ：


Text from the Data Source

データソースのテキスト

データソースのテキストを入力するには、TextBox オブジェクトの Value プロパティ（選択したフィールドの値を取得します）を設定してください。GetData メソッドか DataBand のインデクサを使用できます。

（参照：データソースの一覧）


Border, Text in Cells

セルの枠とテキスト

Border プロパティを使用して、要素の枠を定義します。データを表として入力できます。

例：


Text Output LTR

テキストの出力方向

TextBox や AdvancedText コンポーネントのテキストの出力方向を変更できます。それには、RightToLeft プロパティを True に設定します。

Text プロパティ = "7 8 9 10 11"

プロパティ | レポート


Text Cutting

テキストの切り取り

出力するテキストがオブジェクトの領域に収まらない場合に StringTrimming プロパティを使用してテキストの切り取りを設定できます。

プロパティ | レポート
表示可能な最後の文字の後のテキストは切り取られます |
表示可能な最後の単語の後のテキストは切り取られます |
表示可能な最後の文字の後のテキストは切り取られ、省略記号が追加されます |
表示可能な最後の単語の後のテキストが切り取られ、省略記号が追加されます |
先頭と末尾のテキストが表示され、その間は省略記号が追加されます |

ClipText プロパティは、TextBox オブジェクトの領域に入り切らないテキスト行の処理方法を定義します。

プロパティ | レポート


Managing Text Element Size

テキストオブジェクトのサイズ操作

Size プロパティは、テキストオブジェクトのサイズを定義します。生成時にオブジェクトを適切なサイズに変更する機能があります。これは、テンプレートの作成時にオブジェクトのコンテンツを取得できない場合やレポート生成時にコンテンツが変わる場合に役立ちます。CanShrink や CanGrow プロパティはコンテンツに応じてオブジェクトを大きくする（またはプロパティの値に応じて大きくさせないようにする）ことができます。GrowToBottom プロパティはコンテナ要素の下の領域までオブジェクトのサイズを大きくするかを定義します。


Text Style

テキストスタイル

レポートを作成するための機能が多数あります。Fill プロパティは背景色を定義します。Font プロパティはフォント型、テキストスタイル（標準、太字、斜体、下線、打ち消し線）などのテキストの外観を設定します。テキストボックスのテキストの揃え方や位置は TextAlign プロパティで定義します。TextFill プロパティを使用してスタイルやテキストの背景色を設定できます。

また、複数のオブジェクトに1つのスタイルを適用することができます。スタイルシートエディタはスタイルエディタとして使用でき、 StyleName プロパティはオブジェクトにスタイルを適用します。


Text Format

テキスト形式

テキスト形式を指定して表示するには、TextFormat プロパティを使用します。フォーマットエディタで複数のテキスト形式（標準、数値、通貨、日付、時刻、パーセンテージ）を取得できます。


Formatted Text

書式付きのテキスト

AdvancedText コンポーネントは、書式付きのテキストとしてデータを入力できます。段落、テキストスタイルの設定や記述したテキストにステートメントを正しく使うオプションがあります。書式付きのテキストは、HTML のようなマークアップ言語（Text プロパティ）や RTF 形式のサブセット（RTF プロパティ）から指定できます。

書式付きテキストエディタ（Text プロパティ）で HTML のようなタグを使ってテキストに書式を設定できます。


Paragraph Formatting

段落の書式設定

<P></P> タグは、選択したテキストを別の段落にします。

Align 属性は段落のテキストの水平方向の位置合わせを指定します。使用可能な値は次の通りです。

align = “left” - 段落の左揃え

align = “right” - 段落の右揃え

align = “center” - 中央揃え

align = “justify” - 両端揃え

位置合わせの規定値は "left" （左揃え）です。編集するテキストを選択し、ツールバーの「左揃え」、「中央揃え」、「右揃え」、「両端揃え」ボタンを使用して位置合わせを設定してください。


Text Formatting

テキストの書式設定

<Font> タグは、この後に設定されたテキストの出力スタイルを設定し、終了タグ </font> はこの設定を解除します。<font> タグの囲い込みが可能です。テキストスタイルは次の属性を使って指定できます。

face - フォント名を設定します。

size - フォントサイズを設定します。

瞬時にスタイルを定義するには、「フォント」ボタンを押してスタイルエディタを開いてください。

color - フォントの色を設定します。

利用可能な値： 色名（例： color=”red”）、RGB の各カラーコンポーネントの16進形式（例：color=”#FF0000”）。瞬時に色を選択するには、「色」ボタンを押して ColorPicker を開いてください。

Tag <B> - この後に設定されたテキストは太字になります。終了タグ </B> はこの設定を解除します（「太字」ボタン）。

Tag <I> - この後に設定されたテキストは斜体になります。終了タグ </I> はこの設定を解除します（「斜体」ボタン）。

Tag <U> - この後に設定されたテキストには下線が付きます。終了タグ </U> はこの設定を解除します（「下線」ボタン）。

Tag <BR> - 段落内で行を折り込みます（「改行を挿入する」ボタン）。


Symbol Insert

記号の挿入

“ ” - スペース (「スペースを挿入する」 ボタン)

“&” -‘&’ 記号

“<” - ‘<’ 記号

“&#ddd;” - ddd コード付きの記号

備考：テキストが段落として記述されていない場合、TextAlign プロパティの配置が適用されます。はっきりとしたフォントが設定されていない場合、Font プロパティの設定が適用されます。テキストの色が指定されていない場合、TextFill プロパティの設定が適用されます。テキスト操作時の改行、複数のスペース、連続/不明なタグや属性は無視されます。タグ名の大文字/小文字の区別はありません。


Using Expressions

式を使用する

書式付きテキストに命令文を直接使用でき、その結果はテキストに追加されます。式は {=<Statement>} のように指定します（ {=<Statement>} - 設定したスクリプト言語の式）。利用可能な型やオブジェクトはすべて式に使用できます。Format プロパティで指定したマスクの書式は、テキストを挿入する前に式の結果に適用されます。エラーが発生した場合、エラーメッセージが式の結果としてテキストに挿入されます。

DataSources セクションはドキュメントとデータソースフィールドに特別なプロパティを追加します。


Using RTF Property

RTF プロパティの使用

テキストの書式に RTF フォーマットのサブセットが使用されます。RTF 形式の次の構造が使用されます：フォントテーブル、色テーブル、コメント、段落書式の演算子（“\par”, “\pard”, “\ql”, “\qr”,“\qc”, “\qj”, “\line”）、テキスト書式の演算子（“\fxx”, “\fsxx”, “\cfxx”, “\b”, “\i”, “\u”）。残りのすべての構造や演算子は無視されます。Rtf プロパティは、書き込み専用にデザインされています。Rtf プロパティは、Text プロパティに接続されます。Rtf プロパティが指定されると、Text プロパティの値は自動的に指定されます。

テキストを RTF ファイルから読み込むには、「RTF ドキュメントを開く」ボタンを押してください。


Breaking Text between Pages

テキストのページ分割

AdvancedText コンポーネントは、1つの要素からテキストを1ページまたは複数ページ出力します。改ページするには CanBreak プロパティを使用します。


RTF Text

RTF 形式のテキスト

RichText コンポーネントは、RTF 形式のテキストを出力するために使用されます。RichText エディタを使って、ファイルからテキストを読み込みます。

RTF 形式のテキストを読み込むには、[ファイルを開く]ボタンを押してダイアログウィンドウを開きます。[ファイルに保存]ボタンはテキストを保存します。


List

リスト

シンプルリスト

データソースのリスト

段組のリスト

リストのヘッダー

リストの並べ替え

リストのフィルタ処理

最終的なリストの値

ページの項目数


Simple List

シンプルリスト

DataBand を使用してリストを作成します。DataBand は要素を何度も埋め込んで出力します。ビジュアルオブジェクトをリストとして表示するには、DataBand 内の Detail に格納しなければなりません。Detail は行の高さを設定します。InstanceCount プロパティは何回表示するかを設定します。

命令文：<DataBand name>.LineNumber() は、行番号を取得するために使用します。

行番号を出力するリスト例：

dataBand1.InstanceCount = 5;

textBox.Value = "line number = " + dataBand1.LineNumber().ToString() + " of " + dataBand1.InstanceCount.ToString();

レポートテンプレート | レポート


List from the Data Source

データソースのリスト

DataBand はソースのデータに基づいてリストを作成します。データソースは、DataSource プロパティで設定されます。
備考：出力される行数は、InstanceCount プロパティを無視してデータソースの行数によります。

現在の（出力しなければならない）フィールドにアクセスするには、GetData(“<Data source name>.<Field name>”) または <DataBand name>[“<Field name>”] のどちらかのスクリプトを使用します。テキスト情報は、対象のフィールドをデータソースタブのドキュメントのツリーから（DataBand の） Detail にドラッグすることにより出力できます。

担当者名を出力するリスト例：

dataBand.DataSource = Employees;

textBox.Value = dataBand["EmployeeName"];

レポートテンプレート | レポート


List in Columns

段組のリスト

レポートの領域を減らしてレポートをより視覚的にするには、リストを段組で出力する方法があります。列数は DataBand の ColumnsCount プロパティに設定します。また、リストの列間のインデントも ColumnsGap プロパティで設定できます。

社員のリスト例：

dataBand.DataSource = Employees;

textBox.Value = dataBand["EmployeeName"];

レポートテンプレート：

プロパティ | レポート


List Header

リストのヘッダー

Header はリスト、ページ、または列の先頭に一度データを出力するために使用します。Header はそのために使用され、DataBand 内に貼り付けなければなりません。RepeatEveryColumn や RepeatEveryPage プロパティはヘッダーの反復モードに役立ちます。

リストのヘッダーの使用例：

dataBand3.DataSource = Employees; textBox1.Text = "Name"; textBox2.Value = dataBand3("EmployeeName");

レポートテンプレート：

プロパティ | レポート


List Sorting

リストの並べ替え

DataBand はデータソースに保存されている項目順で出力します。DataBand の Sort プロパティは特別な出力順を設定します。Sort プロパティはコレクションエディタを使用して定義します。Expression プロパティは並べ替えの式を設定するために使用します（スクリプトを式として使用しなければなりません）。Order プロパティは並べ替えの順番（昇順または降順）を定義します。

並べ替え条件に応じて社員の名前と誕生日を表示するリスト例：

レポートテンプレート：

dataBand.DataSource = Employees;

textBoxName.Value = dataBand["EmployeeName"];

textBoxDate.Value = dataBand["BirthDate"];

並べ替え条件 | レポート
なし |


List Filtering

リストのフィルタ処理

条件を満たしているデータを表示する場合、DataBand の FilterExpression プロパティを使用できます。

性別によって社員の名前を表示するリスト例：

レポートテンプレート：

dataBand.DataSource = Employees;

textBoxName.Value = dataBand["EmployeeName"];

プロパティ | レポート
dataBand.FilterExpression = dataBand1["Sex"].ToString() == "f" |
dataBand.FilterExpression = dataBand1["Sex"].ToString() == "m" |


Final List Values

最終的なリストの値

リストの合計を計算する場合、集計リストを使用できます。DataBand にデータを出力するには、Totals プロパティのコレクションエディタでリストの集計関数を指定できます。

AggregateFunction プロパティは集計関数を指定します。集計式は Expression プロパティで指定します。関数名は Name プロパティに指定します。スクリプト：GetTotal("<aggregate name>") は、指定した関数を呼び出してその合計を取得するために使用します。GetRunningTotal("<aggregate name>") は、現在の累計を取得するために使用します。集計値を出力する前に集計したデータを取得することができます。GetTotal の結果はこの関数を呼び出す要素の位置（前または後）には依存しません。Detail に GetRunningTotal の値を出力することをお勧めいたします。Header からの呼び出しは累計された値がないので役に立ちません。Footer から呼び出した GetRunningTotal の値は GetTotal の値と一致します。

レポートジェネレータは、組み込まれている次の12の集計関数をサポートしています。

集計関数の使用例：

レポートテンプレート：

dataBand.DataSource = Numbers; textBox1.Value = dataBand["Value"]; textBox.Value = GetTotal("Func");

プロパティ | レポート
合計： |
平均： |
最小値： |
最大値： |
個数： |
標準偏差： |
推定標準偏差： |
分散： |
標本分散： |
中央値： |
歪度： |
尖度： |


Entries Amount on the Page

ページの項目数

Detail の Aggregates プロパティはそのページの項目数を数えるために使用します。コレクションエディタの Count 関数：

PageFooter の Textbox オブジェクトは個数の出力に使用します。Textbox オブジェクトのプロパティ値 = detail.Count(PageNumber,"Count") + " / " + detail.Count("Count") + "レコード"。個数を計算するには、ドキュメントの DoublePass プロパティを True に設定してください。

レポートテンプレート | レポート


Grouping

グループ化

条件を指定してデータをグループ化することにより、データ行のロジックをグループ化して情報をもっとうまく表現できます。GroupBand コンポーネントはそのために使用されます。グループ化の基準は、GroupExpression プロパティで設定されます。このプロパティはスクリプトエディタで順番に設定されます。


Group Headers

グループヘッダー

グループヘッダーを表示するには、グループバンドにヘッダーを配置します。グループ値を表示するには、GroupExpression を使用します。

名前の頭文字ごとに担当者の一覧をグループ化する例：

レポートテンプレート

dataBand.DataSource = Employees; groupBand1.GroupExpression = dataBand6["EmployeeName"].ToString().Substring(0,1); textBoxHeader.Value = Group; textBoxDetail.Value = dataBand["EmployeeName"]

レポート：


Sorting in Groups

グループ内の並べ替え

GroupBand はデータソースに保存されている順番でレポートに項目を表示します。GroupBand の Order プロパティは出力順を設定します。このプロパティには次の３つの値：KeepOriginal（最初のまま）、Ascending（昇順）、Descending（降順）があります。

SortExpression プロパティは並べ替えの基準を設定します。

社員の名前の頭文字でグループ化し並べ替えをするリストの例：

dataBand.DataSource = Employees; groupBand.GroupExpression = dataBand["EmployeeName"].ToString().Substring(0,1); groupBand.Order = Ascending; textBoxHeader.Value = Group; textBoxDetail.Value = dataBand["EmployeeName"]

レポートテンプレート | レポート


Cascading Grouping

グループのカスケード表示

グループ構造の複雑なレポートを作成するためのオプションがあります。それには、複数の GroupBand を入れ子にして使用します。

まず国名、次に都市名でグループ化された社員リストの例：

dataBand.DataSource = Employees; groupBandCounty.GroupExpression = dataBand["Country"]; groupBandCity.GroupExpression = dataBand["City"]; textBoxDetail.Value = dataBand["EmployeeName"].

レポートテンプレート | レポート


Group Totals

グループの合計

グループの合計値を取得するには、グループ内で GetTotal を呼び出します。グループ内で GetRunningTotal を呼び出すと、グループの累計値を取得します。

グループごとの数値のリスト例：まず、グループごとの合計が計算され、全グループの合計が最後に表示されます。

dataBand1.DataSource = Numbers;

集計関数： AggregateFunction = Sum; Expression = dataBand1 ["Value"]; Name = SUM;

groupBand4.GroupExpression = dataBand1["Type"]; textBoxDetail.Value = dataBand1["Value"]; textBoxFooter.Value = GetTotal("SUM");

レポートテンプレート | レポート


Horizontal List and Table

水平方向のリストと表

水平方向のリスト

データソースのデータを使った水平方向のリスト

表


Horizontal List

水平方向のリスト

水平方向のリストを作成するには、CrossBand を使用します。CrossBand はこのバンド内のオブジェクトを水平方向（左から右）に反復表示します。CrossBand は、レポート内の CrossBand の位置を定義する Detail、Header または Footer に入れなければなりません。反復回数は InstanceCount プロパティで定義します。

<CrossBand name>. LineNumber() 文は、項目番号を取得するために使用します。CrossBand に出力される全項目が１行に収まらない場合は、次のページに表示されます。

項目番号を出力する水平方向のリストの例：

crossBand1.InstanceCount = 4;

textBox.Value = crossBand1.LineNumber().ToString + " of " + crossBand1.InstanceCount().ToString;

レポートテンプレート | レポート


Horizontal List from the Data Source

データソースのデータを使った水平方向のリスト

CrossBand はデータソースのデータを基に水平方向のリストを作成することができます。データソースは DataSource プロパティに設定します。出力項目数はソースの項目数に依存し、InstanceCount プロパティは無視されます。

GetData(“<Data source name>.<Field name>”) スクリプを使用して、出力する項目にアクセスします。

１行に数値を出力する水平方向のリストの例：

crossBand1.DataSource = Numbers; textBox.Value = GetData("Numbers.Value")

レポートテンプレート | レポート


Table

表

DataBand に CrossBand を入れて使用することで、データを表として出力することができます。

カレンダの出力例：

dataBand.InstanceCount = 5; crossBand. InstanceCount = 7; textBox.Value = (crossBand.LineNumber + ((dataBand.LineNumber - 1) * 7))>31?"":(crossBand.LineNumber + ((dataBand.LineNumber - 1) * 7)).ToString();

レポートテンプレート | レポート


Band Overlapping

バンドの並列

SideBySide は別のバンドのオブジェクトを並列表示するために使用します。SideBySide 内のオブジェクトはすべてバンドの先頭から出力されます。BandContainer は格納されている複数のセクションを（バンドの先頭からではなく）隣接して表示するために使用します。

さまざまなバンドから並列表示する例：

dataBand1.InstanceCount = 5; dataBand2.InstanceCount = 4; dataBand3.InstanceCount = 2;

レポートテンプレート | テンプレートの構造 | レポート


Pivot Table

ピボットテーブル

ピボットテーブルは、構造化されたデータ出力とその合計を計算するために使用します。PivotTable コンポーネントはピボットテーブルの作成に使用します。DataSource プロパティはピボットテーブルのデータソースを設定します。

Layout プロパティは処理後のピボットテーブルの行や列の値を設定します。このプロパティは、ソースフィールドで変更できます。

データソースのフィールド一覧が左側のソースフィールドに表示されます。DataCube フィールドはピボットテーブルにデータを割り当てます。ピボットテーブルの水平方向の見出しフィールドを X ディメンションフィールドに設定します。ピボットテーブルの垂直方向の見出しフィールドを Y ディメンションに設定します。ファクトフィールドにはデータを持ったセルのフィールドが格納されます。プロパティグリッドは左側に表示され、セルのプロパティを設定するために使用します。


Table Titles

テーブルのタイトル

TableCaption プロパティはテーブルのキャプションを設定します。

プロパティ | レポート

テーブルの行や列のキャプションは、ピボットテーブルの Layout プロパティのエディタで設定できます。Caption プロパティはそのために使用します。TotalLabel プロパティは合計値を持つ列や行のタイトルを設定します。このプロパティが設定されていない場合、合計値が合計として識別されます。

プロパティ | レポート

ピボットテーブルの DimensionOnEveryPage プロパティは、各ページのピボットテーブルのヘッダー出力を設定します。

プロパティ | レポート

ShowSingleFact プロパティを使用して、ファクト列のタイトル表示を設定できます。

プロパティ | レポート

文字列が現在のページに収まらない場合は、テキストを次のページに反復させることができます。それには、ShowRepeatText プロパティを使用してください。

プロパティ | レポート


Data Format

データ形式

ソースフィールド エディタの Format プロパティを使用して出力データの形式を定義できます。

プロパティ | レポート

ShowZeroValues プロパティはレポートに NULL 値を表示します。

プロパティ | レポート


Data Sorting

データの並べ替え

並べ替え順は SortOrder プロパティで設定します。このプロパティの値は Ascending （昇順）と Descending （降順）があります。


Data Filtering

データのフィルタ処理

フィルタ処理は、ある特定条件を指定してデータを出力しなければならない場合に使用します。FilterExpression プロパティは、その条件を設定するために使用します。式はスクリプトで設定します。この式の計算結果がピボットテーブルのデータを決めます。

プロパティ | レポート
フィルタ処理なし |
FilterExpression=”(double)GetData("Sales.Discount") >= 0.1” |


Table Size

テーブルのサイズ

ピボットテーブルのセルサイズは、規定ではピボットテーブルのデータの大きさに従って自動的に決まります。このために、AutoColumnWidth （列の幅を設定します）と AutoRowHeight （行の高さを設定します）プロパティを使用します。行の高さを任意に設定するには、AutoRowHeight プロパティの値を 「None」 に選択し、RowHeight プロパティの行の高さをピクセルで設定してください。

左側の余白は Shift プロパティで設定します。


Table Styles

テーブルスタイル

StyleName プロパティは、テーブルのスタイルを設定します。スタイルを作成するには、スタイルシートエディタを使用します。

Styles のプロパティグループを使用して、各セル型に個別のスタイルを設定できます。

プロパティ | レポート


Pivot Table Saving

ピボットテーブルの保存

Layout プロパティはピボットテーブルのフィールドの式や位置を設定します。後で使用するためにレイアウトをファイルに保存して、最初のピボットテーブルのフォームに瞬時に戻ることができます。Layout プロパティのエディタにある[保存]/[開く]ボタンを使用して、ピボットテーブルのパラメータの保存/読込ができます。ファイルは XML 形式で、拡張子は .dcl です。


Image

イメージ

Picture コンポーネントは、イメージの表示に使用されます。

Image プロパティはイメージを設定します。ファイルを選択するには、Image プロパティのボタンを押すか、Picture コンポーネント上で左マウスボタンをダブルクリックしてください。

アップロード可能なイメージ形式：*.bmp、*.gif、*.jpg、*.jpeg、*.png、*.ico、*.emf、*.wmf


Size and Scale of the Image

イメージのサイズとスケーリング

Size プロパティは Picture オブジェクトのサイズを設定します。イメージサイズが出力時に Picture オブジェクトのサイズに収まりきらない場合、SizeMode プロパティを使用してサイズ変更できます。

プロパティ | レポート
イメージの引き伸ばし - オブジェクトのサイズに従ってイメージの比率を変更します。 |
イメージの切り取り - イメージは実サイズのままで、オブジェクトのサイズに従って切り取られます。 |
自動サイズ - オブジェクトのサイズはイメージサイズに従って変更され、編集はされません。 |


Image Alignment

イメージの位置合わせ

SizeMode プロパティを Normal に設定し、オブジェクトのサイズよりもイメージサイズが小さい場合、ImageAlign プロパティはイメージの位置合わせをします。

プロパティ | レポート


Dynamic Image Loading

イメージの動的な読込

レポートの生成途中でイメージを読み込まなければならない場合、バインドのプロパティを開いて Image プロパティを使用できます。ファイルからイメージを読み込む場合、次のスクリプトを使用します。

System.Drawing.Image.FromFile("<path to the file>")

レポートテンプレート | レポート
dataBand.DataSource = Employees; textBox.Value = dataBand["EmployeeName"]; picture.Image = System.Drawing.Image.FromFile ("C:\\Data\\Pictures\\"+dataBand["EmployeeName"]. ToString()+".png"); picture.SizeMode = AutoSize; |


Image from Data Source

データソースのイメージ

データソースからイメージを出力するには、データソースが設定されている DataBand 内の Detail に Picture オブジェクトを配置、「バインド」タブで Image プロパティを設定します。この場合、イメージはデータソースにバイト型で格納されます。

レポートテンプレート | レポート
dataBand.DataSource = Employees; textBox.Value = dataBand["EmployeeName"]; picture.Image = dataBand["Picture"]; picture.SizeMode = AutoSize; |


Using Shapes

シェープの使用

Shape コンポーネントを使用して、様々なグラフィカルな形を出力できます。


Shape Types

シェープの種類

ShapeStyle プロパティは図形の種類を定義します。次の種類を使用できます。

シェープのスタイル | レポート
RectangleShape - 四角形を描画します |
TriangleShape - 二等辺三角形を描画します。Direction プロパティは三角形の向きを設定します。 |
CrossShape - 十字を描画します |
DiamondShape - ひし形を描画します |
StarShape - 星型を描画します。InternalRadius プロパティは内接円の半径を設定します。KeepRoundForm プロパティは星の形（楕円または円）を定義します。Points プロパティは放射線の数を定義します。StartAngle プロパティは星の回転角度を設定します。 |
ArrowShape - 矢印を描画します。Direction プロパティは矢印の向きを設定します。 |
RectTriangleShape - 5角形を描画します。Direction プロパティは形状の向きを設定します。 |
EllipseShape - 楕円を描画します |
RoundRectangleShape - 角丸四角形を描画します。Round プロパティは角丸の半径を設定します。 |
ParallelogramShape - 平行四辺形を描画します。Angle プロパティは平行四辺形の回転角度を設定します。 |
LineShape - 線を描画します。LineKind プロパティは線の回転角度を設定します。 |


Shape Shadow

シェープの影

シェープの影は Shadow プロパティで設定します。DX 値と DY 値は影のオフセットを設定します。Fill プロパティは塗りつぶしを設定します。影を追加するとオブジェクトの大きさは同じですが、シェープの大きさは小さくなります。

シェープの影の使用例：


Shape Border

シェープの枠

枠の線種は、Line プロパティで定義します。Color プロパティは線の色を設定します。Style プロパティは線のスタイルを設定します。Width プロパティは線の幅を設定します。

枠線の例：


Barcodes

バーコード

BarCode コンポーネントは、バーコードを作成するために使用します。バーコードのコードは Code プロパティに設定します。大半のバーコードに数字を使用できます。一部の高度なバーコードにラテン記号を使用できます。

プロパティ | レポート

バーコードの比率は BarRatio プロパティに設定します。


Barcode Types

バーコードの種類

バーコードの種類は CodeType プロパティに設定します。利用可能なバーコード型は次の通りです。

2 次元バーコードを使用するには次のような付加的な設定が必要です。

PDF417、PDF417Compact の場合： Pdf417Settings のプロパティ群の設定

QRCode の場合：QRCodeSettings のプロパティ群の設定

MicroQRCode の場合：MicroQRCodeSettings のプロパティ群の設定

郵便カスタマバーコードを利用するには、BarCode オブジェクトの CodeType プロパティを 「Japan_Postal」 に設定します。このバーコードでは、BarPoint プロパティにバーコードのポイント数（日本郵便では 8 ポイントから 11.5 ポイントを推奨、デフォルト 10 ポイント）を指定することでデザイン時および実行時に自動的に BarCode オブジェクトの大きさが決まるようになっています。なお、BarPoint プロパティは CodeType プロパティが Japan_Postal の場合のみ有効なプロパティです。

プロパティ | レポート


Barcode Style

バーコードのスタイル

バーコードの背景色を作成するには、BackColor プロパティを使用します。バーコード自体の色は BarColor プロパティで設定できます。

プロパティ | レポート

ShowLabel プロパティはバーコードのラベル表示を定義します。ラベルのフォント（Font プロパティ）、色（TextColor プロパティ）、位置（LabelPosition プロパティ）を設定できます。

プロパティ | レポート


CalcCheckSumm and ShowCheckDigit Properties

CalcCheckSumm と ShowCheckDigit プロパティ

未定


Parameters

Parameters プロパティは、レポートパラメータの設定に使用します。コレクションエディタは、このプロパティのエディタです。

DefaultValue プロパティはパラメータ値を設定します。Name プロパティはサブレポートのパラメータ値を参照するための名前を設定します。ParameterType プロパティはパラメータ型を設定します（規定ではすべてのパラメータに string 型が使用されます）。

サブレポートのパラメータ値を取得する式： GetParameter("<ParameterName>")


Hyperlinks and Report Navigation

ハイパーリンクとレポートのナビゲーション

ハイパーリンクを設定するには、オブジェクトの Hyperlink プロパティを使用します。


Calling External Applications

外部のアプリケーションの呼び出し

Hyperlink プロパティを使用して、外部のアプリケーションを呼び出すことができます。

TextBox オブジェクトの Hyperlink プロパティを使用してアプリケーションを呼び出す例：

Property textBox.Hyperlink = “C:\Program Files\Perpetuum Software\Net ModelKit Suite\Bin\ReportSharpShooterSamplesCenter.exe”.

レポート：

TextBox をクリックすると Report Sharp Shooter Samples Center が起動します。


Opening Files

ファイルを開く

Hyperlink プロパティに設定されたリンクのファイルがファイルの種類に応じたプログラムによって開かれます。

ファイルにリンクを設定する例：

Hyperlink プロパティは、レポートの生成過程にファイルアドレスを作成するスクリプトで設定されます。

レポートテンプレート：

dataBand.DataSource = Employees;

textBox.Value = dataBand["EmployeeName"]; textBox.Hyperlink = "C:\\Data\\Pictures\\"+dataBand["EmployeeName"].ToString()+".png"

レポート：

TextBox オブジェクトの領域をクリックすると、イメージビューアによって対象のイメージが開きます。


Hyperlinks to Internet Resources and Emails

インターネットリソースのハイパーリンクと Email

Hyperlink プロパティにインターネットリソースのハイパーリンクを取得するには、URL を設定する必要があります。例： textBox.Hyperlink = “http://www.perpetuumsoft.com/”

最終ドキュメントの TextBox オブジェクトをクリックすると、ブラウザにハイパーリンクが表示されます。

リンクをクリックすると電子メールクライアントが開くようにするには、Hyperlink プロパティに mailto ハイパーリンク（例：textBox.Hyperlink = “mailto:sales@perpetuumsoft.com”）を設定します。そしてそのハイパーリンクをクリックすると、電子メールクライアントが開いて、設定されたアドレスにメッセージを送ることができます。件名、本文、Cc、Bcc などのパラメータも同じです。件名、本文、Cc/Bcc を送信するための Email の設定が可能です。例えば、ハイパーリンク： “mailto:sales@perpetuumsoft.com?subject=Suggestion&Body=Hello!%0DI%20have%20some%20ideas%20for%20you.&bcc=support@perpetuumsoft.com” は次のようなデータの電子メールクライアントを開きます。


Bookmarks

ブックマーク

レポートを簡単に移動するには、Bookmark プロパティを使用できます。このプロパティは、レポートビューアのコンテンツツリーを使ってレポートの別の場所から対象のオブジェクトに移動できるブックマークを作成します。ブックマーク名は、# 記号で始めなければなりません。そうしないと Bookmark プロパティの値は無視されます。

レポートテンプレート：

textBoxHeader.Bookmark = #Begin;

picture.Bookmark = #logo;

レポートビューアのレポート：

ブックマークのツリーは左側に表示されます。「コンテンツ表示」ボタンはこのツリーを表示/非表示にするために使用します。コンテンツからブックマークが設定されている項目を選択すると、ブックマークの設定先のレポート領域に移動します。


Joint Use of Hyperlinks and Bookmarks for Report Navigation

ハイパーリンクとブックマークを使用してレポートをナビゲートする

ハイパーリンクから移動するように、Bookmark を使用して移動できます。それには、Hyperlink プロパティにブックマークの名前を設定する必要があります。

レポートテンプレート：

picture.Bookmark = #logo;

textBoxToLogo.Hyperlink = #logo

レポートビューアのレポート：

“To logo” というテキストが設定された TextBox をクリックすると、ロゴの入ったレポート部分が開きます。

前のレポート領域に戻るには、Back というハイパーリンクを設定して戻すことができます。


Using subreports

サブレポートの使用

複数のレポートをひとつにまとめなければならない場合にサブレポートを使うメカニズムが使用されます。サブレポートはそのために使用され、テンプレートに入れるサブレポートとその位置を定義します。サブレポートのテンプレートは、現在のテンプレートが含まれている ReportManager に入れてください。

サブレポートのテンプレートを設定するには、サブレポートの TemplateName プロパティを使用します。このプロパティのコンボボックスには、現在の ReportManager に含まれているレポート名が表示されます（ReportManager で ReportSlot の ReportName プロパティが 設定されていない場合、リストにテンプレート名は表示されません）。

マスターレポートのテンプレート | サブレポートのテンプレート | レポート
Property subReport.TemplateName = Report1 |  |

最終レポートには、（DataBand、Detail などの）バンドに配置されたオブジェクトしか含まれません。サブレポートのオブジェクトにスタイルが設定されていない場合、マスターテンプレートまたはサブレポートコントロールのスタイルが適用されます。

Report1 の左領域を移動するには、サブレポートの Shift プロパティを使用します。

レポートテンプレート：

プロパティ | レポート


Complex Report

複雑なレポート

1つのレポートにサブレポートを好きなだけ追加できます。

マスターレポートのテンプレート | サブレポートのテンプレート | レポート
プロパティ： subReport1.TemplateName = Report1 subReport2.TemplateName = Report2 | Report1 |
 | Report2 |

入れ子のレポートに使用できます。

マスターレポートのテンプレート | サブレポートのテンプレート | レポート
プロパティ： subReport1.TemplateName = Report1 | Report1 Property subReport1.TemplateName = Report2 |
 | Report2 |


Passing Parameters to Subreport

サブレポートにパラメータを渡す

サブレポートの Parameters プロパティを使用してマスターレポートからサブレポートにパラメータを渡すことができます。コレクションエディタはこのプロパティのエディタです。

Expression プロパティは式を設定し、その計算結果がパラメータとして渡されます。Name プロパティはサブレポートでパラメータ値の参照に使用する名前を設定します。

サブレポートでパラメータ値を取得するには、式： GetParameter("<ParameterName>") を使用します。

下図は社員の一覧を表示するテンプレートのサンプルです。名前と番号（連番）がサブレポートに表示されます。

マスターレポートのテンプレート：

プロパティ： subReport1.TemplateName = Report1

subReport1.Parameters のコレクションにパラメータが2つ追加されています。

1つ目のパラメータ： Expression = dataBand1.LineNumber
Name = Number
2つ目のパラメータ： Expression = dataBand1["EmployeeName"]
Name = Name

サブレポートのテンプレート：

textBox1.Value = GetParameter("Number");

textBox2.Value = GetParameter("Name")

レポート：


Zip code

Zip コード

Zip コードを表示するには、ZipCode コンポーネントを使用します。コードは Code プロパティに設定します。

コードの色は Color プロパティに設定します。

テンプレートの Zip コード：

ZipCode コンポーネントのサイズは Size プロパティで設定します。Zip コードの割合が一定であることを考慮する必要があります。Zip コードのラベルの高さは ZipCode コンポーネントの高さに依存します。ラベルが ZipCode コンポーネントの幅に収まらない場合、Zip コードは途中で切れてしまいます。


Master-Report

マスターレポート

マスターレポートを使用するための機能があります。マスターレポートを使用してドキュメントを生成する場合、最終ドキュメントにはマスターテンプレートとドキュメントテンプレートの生成結果が含まれます。これは均一のレポートを作成できます。

マスターレポートを設定するには、Document.MasterReport プロパティにマスターレポートの名前を設定する必要があります。

名前が設定されているテンプレートは生成時に IResolveSubReport インターフェイスを介して取得されます。例えば、名前の付いたマスターテンプレートを、最初のテンプレートが追加されているのと同じ ReportManager に追加できます。

マスターとして使用するテンプレートを作成する場合、そのテンプレートに Content オブジェクトを追加する必要があります。

マスターレポートのテンプレート：

マスターテンプレートを使用したドキュメント生成は次のように行われます。結果となるレポートにマスターテンプレートの生成結果が含められ、Content オブジェクトは最初のレポート結果の代わりに使われます。

レポートテンプレート | レポート


Creation of Reports Using Wizard

ウィザードを使ったレポートの作成

シンプルなレポートテンプレートを作成する簡単な方法は、「ウィザード」を使うことです。ウィザードにより、外観やデータソースなどのレポートパラメータを設定できます。そして、自動的にパラメータを設定してレポートテンプレートをビルドできます。

ウィザードの設定はすべて .rsw ファイルに xml 形式で保存できます。


Creation of simple reports (Standard Wizard)

（スタンダードウィザードを使用した）シンプルレポートの作成

スタンダードウィザードを使用してレポートテンプレートを作成できます。スタンダードウィザード内でデータソースのデータをリストまたはカードとして出力するかを定義します。

ウィザードギャラリダイアログからスタンダードウィザードを開くことができます。


Report Properties in Standard Wizard

スタンダードウィザードのレポートのプロパティ

スタンダードウィザードの「共通」セクションを使って、レポートの外観を定義するテンプレート共通のプロパティを設定できます。

（Document.Title プロパティを使用して「タイトル」フィールドに設定した）レポート名はレポートヘッダーに表示されます。

タイトル | レポートテンプレート | レポート

レポートの計測単位は、「計測単位」フィールド（Document.MetricUnit プロパティ）で設定します。

レポートのスタイルは、「スタイルシート」フィールド（Document.StyleSheet プロパティ）で設定できます。

スタイルシート | プロパティ | レポート

「スクリプト言語」フィールドは、スクリプト言語を選択できます。スクリプト言語は Document.ScriptLanguage プロパティを使用して設定されます。


Page Properties in Standard Wizard

スタンダードウィザードのページのプロパティ

スタンダードウィザードのページのプロパティで、ページのプロパティを設定できます。用紙サイズは「標準」のリストから選択し、Page.PaperKind プロパティで設定されます。カスタムな用紙サイズを設定するには、「標準」コンボボックスから「ユーザー定義用紙」を選択し、「カスタム」フィールドに値を設定してください。

「向き」セクションで用紙の向きを縦または横に設定できます。

ページ番号を出力するには見出しを使用します。見出しの表示モードやテキストの位置合わせは「ページ番号」セクションで設定できます。

レポート：

スタンダードウィザードを使用して段組レポートを作成できます。それには、「列のレイアウト」を設定します。「列数」は列の数（DataBand.ColumnsCount プロパティ）を定義し、「列の間隔」は列の間隔（DataBand.ColumnsGap プロパティ）を定義します。

レポート：


Report Data, Simple List

レポートデータ - シンプルリスト

レポートを作成するためのデータは、レポートデザイナが呼び出されるアプリケーションで用意してください。データを追加するには、「データの追加」ボタンを押してください。この後、テンプレート構造のツリーに新しいレコードが表示され、データソースを設定したりデータを表示するためのセクションが開きます。

データソースは、「データソース」フィールドに設定します。

「データソース」フィールドに設定したデータソースのフィールドが「全フィールド」の一覧に表示されます。コントロールボタンを使用して「全フィールド」から「表示フィールド」にフィールドを追加できます。タイトルや幅の編集、集計関数の設定が各フィールドで行えます。

レポートテンプレート | レポート

「フィールドのレイアウト」はレポートのデータビュー（リストまたはカード）を選択できます。

フィールドのレイアウト | レポートテンプレート | レポート
リスト |  |
カード |  |


Grouping data

データのグループ化

レポートをグループ化して作成するには、グループ化するフィールドを「全フィールド」のツリーから「グループ」タブのテーブルに移動します。

レポートテンプレート | レポート


Several Data Sources

複数のデータソース

複数のデータソースのデータをレポートに続けて出力できます。これを行うには、テンプレートの構造ツリーにデータソースを追加し、必要なフィールドを可視フィールドに移動してください。

レポートテンプレート | レポート


Master Detail Report

マスター詳細レポート

マスター詳細レポートを作成するには、テンプレートの構造ツリーにあるデータソースにもう1つのデータソースと詳細を追加します。

レポートテンプレート | レポート


Creation of Report with Pivot Table (Pivot Table Wizard)

ピボットテーブル（ピボットテーブルウィザード）を使ったレポートの作成

ピボットテーブルウィザードは、データソースのデータをピボットテーブル形式で出力するレポートテンプレートを作成できます。

ウィザードギャラリダイアログからピボットテーブルウィザードを開くことができます。


Report Properties in Pivot Table Wizard

ピボットテーブルウィザードのレポートのプロパティ

ピボットテーブルウィザードの「共通」設定タブで、レポートの外観を定義するテンプレート共通のプロパティを設定できます。

Document.Title プロパティを使って「タイトル」フィールドに設定したレポート名が、レポートヘッダーに表示されます。

タイトル | レポートテンプレート | レポート

レポートの計測単位は、「計測単位」フィールド（Document.MetricUnit プロパティ）で設定します。

レポートのスタイルは、「スタイル」フィールドで設定できます。

スタイルシート | レポートテンプレート | レポート

「スクリプト言語」フィールドは、Document.ScriptLanguage プロパティを使用してスクリプト言語を選択できます。


Page Properties in Pivot Table Wizard

ピボットテーブルウィザードのページのプロパティ

ピボットテーブルウィザードのページのプロパティで、ページのプロパティを設定できます。用紙サイズは「標準」の一覧から選択し、Page.PaperKind プロパティで設定します。カスタムサイズを設定するには、「標準」コンボボックスから「ユーザー定義用紙」を選択し、「カスタム」に値を設定してください。

「向き」セクションでページの向きを縦または横に設定できます。

ページ番号を出力するには見出しを使用します。「ページ番号」セクションで見出しの表示モードやテキストの位置合わせを設定できます。


Data for the Table

表のデータ

データや表の外観は、「ピボットテーブル設定」タブの設定で定義されます。

データソースは、「データソース」フィールドで設定されます。ピボットテーブルのセルを調節するには、「レイアウトの構成」ボタンでソースフィールドエディタを開いてください（参照：ピボットテーブル）。

「テーブルのタイトル」フィールドでピボットテーブルのタイトルを設定できます。

「生成」のプロパティでは、次のプロパティを設定できます。

ピボットテーブルのセルサイズは、「形式」セクションで設定できます。次のプロパティを設定できます。

（参照：ピボットテーブル）


Scripts

スクリプト

目的とその働き

スクリプトの背景

スクリプトの設定方法

スクリプト言語とコンパイラバージョンの設定

スクリプトの種類

ドキュメント オブジェクト モデル

メソッドとプロパティ

レポート生成時のスクリプトの動作

型、基本型およびメソッドへのアクセス

エラー

スクリプトにおける典型的なタスクと解決法


Designation and Abilities

目的とその働き

スクリプトは、ドキュメントのテンプレートに接続された .NET 型の抽象宣言子で、この型は "DocumentScripts" 型と呼ばれています。

DocumentScript 型の一部の特定メソッドはレポート生成時に呼び出されます。大半のイベントは生成時に特定のメソッドを呼び出します。メソッドのロジックはスクリプトで定義されます。

わかりやすく言うと、スクリプトはレポートまたはそれぞれのオブジェクトの生成時やデータ処理時に初期化されるイベントハンドラのセットと考えることができます。また、スクリプトは補助的なロジック（例：Windows Forms でのマウスクリック処理）にも使えます。

スクリプトの主な使用目的は、レポートの生成に必要なデータを提供し、そのデータに基づいて決定を下し、生成プロセスを操作することです。

DocumentScripts クラスのメソッドは以下にアクセスします。

  • ドキュメントのテンプレートのデータソースのデータ
  • ドキュメントのテンプレート（ドキュメント、ページ、オブジェクト）のオブジェクトモデル
  • ドキュメントの生成エンジン（現在の生成状態を表すプロパティやその先の生成プロセスに影響を与えるメソッドを持った、生成プロセスを表す特殊なオブジェクト）
  • すべてのパブリックデータやアプリケーションのメソッド、アプリケーションが参照するアセンブリ

スクリプトを使うことによってレポートを柔軟に生成することができます。スクリプトはすべての .NET の特徴や標準/他社のライブラリを使用できる、.NET コードです。

C#、Visual Basic.Net またはその他の任意の言語を .NET 環境をサポートするスクリプト言語として使用できます。

備考：スクリプトはすべてソースコードとして保存されるので、レポートの生成を行うクライアントコンピュータに対象のコンパイラをインストールしておくのはそのためです。C#、Visual Basic. NET や Jscript.NET コンパイラは Microsoft .NET Framework に含まれています。


Scripting Background

スクリプトの背景

レポートジェネレータで使用するスクリプトの内部メカニズムです。すべてのスクリプトや式は次の構造でクラスを構成します。

public class Script : PerpetuumSoft.Reporting.Rendering.ReportScriptBase

{

  private PerpetuumSoft.Reporting.DOM.Page page1;

  private PerpetuumSoft.Reporting.DOM.TextBox textBox1;

  …

  <Document.CommonScript>

  public Script(PerpetuumSoft.Reporting.DOM.Document document,  PerpetuumSoft.Reporting.Components.ObjectPointerCollection dataObjects, PerpetuumSoft.Reporting.Rendering.RenderEngine engine) : base(document,  dataObjects, engine)

  {

    this.page1 = ((PerpetuumSoft.Reporting.DOM.Page)(document.ControlByName("page1")));

    this.textBox1 = ((PerpetuumSoft.Reporting.DOM.TextBox) (document.ControlByName("textBox1")));

    …

    this.page1.ManualBuild += new System.EventHandler(this.page1_ManualBuild);

    this.textBox1.Generate += new System.EventHandler(this.textBox1_Generate);

    …

  }

  private void page1_ManualBuild(object sender, System.EventArgs e)

  {

    …

  }

  private void textBox1_Generate(object sender, System.EventArgs e)

  {

    this.textBox1.Value = <binding expression for Value property of the textBox1>

    …

    <textBox1.GenerateScript>

  }

  …

}

下記は、累計計算の2番目のレポートで生成されるクラスの内部メカニズムです。

namespace PerpetuumSoft.Reporting.ReportScript

{

  #line 1 "Document$ImportsString"
  using System;

  #line default
  #line hidden

  #line 1 "Document$ImportsString"
  using PerpetuumSoft.Reporting.DOM;

  #line default
  #line hidden
  #line 1 "Document$ImportsString"
  using PerpetuumSoft.Framework.Drawing;

  #line default
  #line hidden

  public class Script : PerpetuumSoft.Reporting.Rendering.ReportScriptBase

  {

    private PerpetuumSoft.Reporting.DOM.TextBox textBox2;

    private PerpetuumSoft.Reporting.DOM.TextBox textBox3;

    private PerpetuumSoft.Reporting.DOM.TextBox textBox1;

    private PerpetuumSoft.Reporting.DOM.Header header1;

    private PerpetuumSoft.Reporting.DOM.Detail detail1;

    private PerpetuumSoft.Reporting.DOM.TextBox textBox4;

    private PerpetuumSoft.Reporting.DOM.DataBand dataBand1;

    private PerpetuumSoft.Reporting.DOM.Page page1;

    #line 1 "Document$Common"
    int sum1 = 0;

    int sum2 = 0;

    #line default
    #line hidden

    public Script(PerpetuumSoft.Reporting.DOM.Document document, PerpetuumSoft.Reporting.Components.ObjectPointerCollection dataObjects, PerpetuumSoft.Reporting.Rendering.RenderEngine engine) : base(document, dataObjects, engine)

    {

      this.textBox2 = ((PerpetuumSoft.Reporting.DOM.TextBox)(document.ControlByName("textBox2")));

      this.textBox3 = ((PerpetuumSoft.Reporting.DOM.TextBox)(document.ControlByName("textBox3")));

      this.textBox1 = ((PerpetuumSoft.Reporting.DOM.TextBox)(document.ControlByName("textBox1")));

      this.header1 = ((PerpetuumSoft.Reporting.DOM.Header)(document.ControlByName("header1")));

      this.detail1 = ((PerpetuumSoft.Reporting.DOM.Detail)(document.ControlByName("detail1")));

      this.textBox4 = ((PerpetuumSoft.Reporting.DOM.TextBox)(document.ControlByName("textBox4")));

      this.dataBand1 = ((PerpetuumSoft.Reporting.DOM.DataBand)(document.ControlByName("dataBand1")));

      this.page1 = ((PerpetuumSoft.Reporting.DOM.Page)(document.ControlByName("page1")));

      this.textBox2.Generate += new System.EventHandler(this.textBox2_Generate);

      this.textBox1.Generate += new System.EventHandler(this.textBox1_Generate);

      this.dataBand1.Generate += new System.EventHandler(this.dataBand1_Generate);

    }

    private void textBox2_Generate(object sender, System.EventArgs e)

    {

      #line 1 "textBox2$Value"
      this.textBox2.Value = sum1-sum2+(int)dataBand1.DataItem;

      #line default
      #line hidden

      #line 1 "textBox2$Generate"

      #line default
      #line hidden
    }

    private void textBox1_Generate(object sender, System.EventArgs e)

    {

      #line 1 "textBox1$Value"
      this.textBox1.Value = dataBand1.DataItem;

      #line default
      #line hidden

      #line 1 "textBox1$Generate"

      #line default
      #line hidden
    }

    private void dataBand1_Generate(object sender, System.EventArgs e)

    {

      #line 1 "dataBand1$Generate"
      if(!Engine.IsDoublePass)

        sum1 += (int) dataBand1.DataItem;

      else

        sum2 += (int) dataBand1.DataItem;

      #line default
      #line hidden
    }

  }

}


Ways of Setting Scripts

スクリプトの設定方法

スクリプトはテンプレートのデザイナ（レポートデザイナ）で設定/編集され、テンプレートと一緒に保存されます。スクリプトはオブジェクトの文字列のプロパティにテキストとして保存され、プロパティグリッドで取得できます。

テンプレートのすべてのオブジェクトには Script グループのプロパティがあり、いろいろな種類のスクリプトを設定できます。

特別な型「バインド」のスクリプトは、プロパティグリッドの「バインド」タブで設定されます。

「バインド」に瞬時にアクセスするには、ツールバーの専用の要素を使用できます。

スクリプトの編集にデザインされた、構文の強調表示やコードコンプリート付きの特別なスクリプトエディタがあります。


Setting Script Language and Compiler Version

スクリプト言語とコンパイラ バージョンの設定

VB.NET、C# またはその他の任意のプログラミング言語（J#、managed c++ やその他）をスクリプトの記述に選択できます。

言語は、Document.ScriptLanguage プロパティに設定します。VisualBasic.NET が規定の言語です。

その他の任意の言語を使用するには、必要とするコンパイラの位置を指定します（例：System.CodeDom.Compiler.CodeDomProvider 派生型の名前）。

必要であれば、Document.CompilerVersion プロパティを使用して、コンパイラバージョンを設定できます。例えば、C# v. 3.5 を使用するには、Document.CompilerVersion = "3.5" に設定してください。

備考： スクリプトはレポート生成時にコンパイルされます。このテンプレートでレポートを生成するすべてのコンピュータに対象バージョンのコンパイラをインストールするのはそのためです。


Script Types

スクリプトの種類

スクリプトは、名前によって3つのグループに分類できます。


Event Handlers

イベントハンドラ

イベントハンドラは、イベント発生時に実行される連続する演算子を表したスクリプトです。この種のスクリプトはすべて、プロパティグリッドの Script のプロパティにあります。

プロパティ | オブジェクト | 説明
GenerateScript | すべてのオブジェクト | オブジェクトの生成前に実行されるコード
ManualBuildScript | Page | ページ内容を生成するコード。スクリプトが設定されている場合、標準の生成メカニズムは取得できません。
CommonScript | Document | 式の主要部分のコード。ここに、グローバル変数、関数、プロシージャを指定することができます。
GetDataScript | DataBand、CrossBand | データソースからデータを取得する時に実行される式のコード。


Property Binding

プロパティのバインディング

プロパティのバインディングは、オブジェクトのプロパティに設定された式を表すスクリプトで、計算結果はそのプロパティの値として設定されます。プロパティグリッドの「バインド」タブの大半のオブジェクトのプロパティに式を設定できます。式は GenerateScript プロパティが呼び出される前で、オブジェクトが生成される前に計算されます。式の計算順は決められません。異なるプロパティに、計算順に基づいて式のロジックを記述しないようお勧めするのはそのためです。

例：

textBox.Value = a + b

textBox.Style = (textBox.Value == 0) ? "Zero" : "Normal"

記述に間違いはありませんが、textBox.Style プロパティの式の計算結果が無効になってしまう場合があるので次のように設定します。

textBox.Style = (a + b == 0) ? "Zero" : "Normal"


Properties-Expressions

プロパティの式

プロパティの式は、特定の型の値を取得する特別なプロパティです。プロパティの式はプロパティのバインディングに似ていますが、どのプロパティにも合致しません。式で取得した結果が使用されますが、プロパティには格納されません。

プロパティの式はプロパティグリッドで設定され、スクリプトエディタを使用して設定できます。プロパティの式のコレクションを表すプロパティがあります。

プロパティの式：

GroupBand.GroupExpression プロパティ

グループ順を設定します。式はグループキーを取得します（キーが等しい場合、行は同じグループになります）。計算された値はプロパティに設定されませんが、内部の生成アルゴリズムで使用されます。

(参照：グループ化)

GroupBand.SortExpression プロパティ

並べ替え順を設定します。

(参照：グループ内の並べ替え)

DataBand.FilterExpression プロパティ

データのフィルタ処理のルールを設定します。

(参照：リストのフィルタ処理)

DataBand.Sort プロパティ

並べ替えの条件のコレクション。それぞれの並べ替えの条件は、Expression プロパティ（データの並べ替えを行うキーを取得するための式を設定します）を持つオブジェクトになります。

(参照：リストの並べ替え)

DataBand.Totals プロパティ

集計関数の式のコレクション。

(参照：最終的なリストの値)

これらの式は生成の内部ロジックとして計算されるので、計算時間や計算順は設定されません。仮の計算順/計算時間を基にしてロジックを作成しないでください。原則としてこのような式はソースデータの値が基になります。もちろん、全ドキュメントおよび DocumentScripts スクリプトクラスの初期設定に設定されたスクリプトが最初に実行されることを前提とすることは可能です。


Document Object Model

ドキュメント オブジェクト モデル

テンプレートのすべてのオブジェクトやドキュメントそのものを Name プロパティに設定された名前やドキュメントの名前を使用して参照できます。

すべてのパブリックメソッドや要素の型のプロパティを使用できます（型の詳細はクラスリファレンスを参照してください）。それは、テンプレートに追加された要素の型や名前と一致するフィールドが DocumentScripts スクリプトクラスに追加されるため使用可能となります。これらのフィールドはレポート生成プロセスで使用されるオブジェクトのインスタンスによって初期化されます。例えば、テンプレートに "textBox1" というテキストボックスを追加した場合、プライベート型のテキストボックスの textBox1 フィールドが DocumentScripts クラスに追加されます。そして生成開始前に、TextBox オブジェクトの特定のインスタンスや生成プロセスに使用されるまさしくインスタンスによって初期化されます。任意のスクリプトでこの要素を参照し、例えば textBox1.Value = 1 に設定できます。このメカニズムはビジュアルデザイナに追加された各要素に適用されます。ビジュアルデザイナに要素を追加することにより、対象のフィールドの記述をコードに追加します。

（参照：付録1 ドキュメント オブジェクト モデル）


Methods and Properties

メソッドとプロパティ

テンプレートのデザイン時やスクリプトの記述時に作成される 「DocumentScripts」 クラスは、特別なクラス： PerpetuumSoft.Reporting.Rendering.ReportScriptBase から派生されます。この型には、スクリプトに使用可能な便利なメソッドやプロパティが多数あります。上述したように、スクリプトは Rendering.ReportScriptBase から継承されたクラスのコードの一部となります。（クラスリファレンスの型の記述に関する詳細はクラスリファレンスを参照してください。）


Work of Scripts during Report Rendering

レポート生成時のスクリプトの動作

未定


Access to the Base Class

基本クラスへのアクセス

スクリプトの基本クラスの主要なプロパティやメソッドは次の通りです。

プロパティ/メソッド | 説明
Now | データと生成開始時間を取得します
PageCount | ドキュメントのページ数を取得します
PageNumber | 現在のページ番号を取得します
ColumnNumber | 現在の列番号を取得します
DataObjects | 関連するデータソースのコレクションを取得します
Document | 現在生成したドキュメントのテンプレートを取得します
Engine | 関連する RenderEngine を取得します
Group | データをグループ化した時の現在のグループを取得します
GetData | 指定したデータメンバのデータを返します
GetParameter | 指定した名前のパラメータを返します
GetTotal | フィールドごとの合計を取得します。参照の位置に応じて、グループの合計/入力データの総計を取得できます。
GetRunningTotal | その名前の現在高を取得します

PerpetuumSoft.Reporting.Rendering.RenderEngine 型の Engine プロパティは、レポート生成エンジンを表す複雑なオブジェクトなので少し説明します。

RenderEngine 型の主要なプロパティやメソッドは次の通りです。

プロパティ/メソッド | 説明
ColumnsCount | 列数を取得します
LineNumber | 現在の行番号を取得します
PageCount | ドキュメントのページ数を取得します
PageNumber | 現在のページ番号を取得します
現在生成したページに設定されているデータ： |
PageRenderArea | そのページで利用可能な余白スペースを定義する四角形を取得および設定します
Caret | 生成したページの現在位置を取得および設定します
UsedHeight | 使用したページの高さを取得します
UsedWidth | 使用したページ幅を取得します
FreeHeight | 余白ページの高さを取得します
FreeWidth | 余白ページの幅を取得します
データソースおよびパラメータ： |
Objects | データソースのコレクションを取得および設定します
Parameters | パラメータのコレクションを取得します
生成したドキュメントおよび現在のページ： |
ProductionDocument | 最終ドキュメントを取得します
ProductionPage | 最終ドキュメントの現在のページを取得します
使用したドキュメントのテンプレートや現在使用したテンプレートページのデータ： |
TemplateDocument | ドキュメントのテンプレートを取得します
TemplatePage | テンプレートの現在のページを取得します

生成プロセスの現状を知るだけでなく、対象の値を変更することで生成プロセスを操作することができます。

メソッド | 説明
生成プロセスを操作するために使用する RenderEngine のメソッド |
NewColumn | 新しい列を作成します
NewPage | 新しいページを作成します
CancelRender | 生成をキャンセルします


Access to Data

データへのアクセス

スクリプトは、レポートコントロールと特定のデータとの関連付けによく使われます。さまざまなプロパティの設定は、ソースとなるデータを使ってプロパティのバインディングで行われます。ソースフィールドの現在値を取得するには、GetData メソッドを使用します。“.” 記号で区切られたデータのパスをパラメータとして指定します。

データバンドに追加されたコントロールは、DataBand.DataSource プロパティに設定したのと同じソースフィールドを頻繁に表示します。この場合、DataBand のインデクサを使った方が便利です。

GetData, DataBand[] は現在行の値を取得します。データバンドはレポート生成時にカーソルを行から行へと移動します。スクリプトエディタのデータソースツリーからフィールドをドラッグ&ドロップすることで、そのようなスクリプトを設定できます。


Access to Rendering Engine

生成エンジンへのアクセス

未定


Access to Other Assemblies

他のアセンブリへのアクセス

未定


Errors

エラー

スクリプトの記述時に、構文エラー、セマンティックエラー、スクリプトのロジック内のエラーなどさまざまなエラーを起こしてしまう場合があります。

スクリプトエディタでの構文エラーは、構文が強調表示されてエラーに下線が付くのですぐわかります。

ドキュメントを生成しようとしてスクリプトをチェックする時に、構文エラーやセマンティックエラーが個別のエラー一覧にリストアップされます。

（[レポート]->[スクリプトのチェック]メニューまたはツールバーの「スクリプトのチェック」ボタンをクリックしてスクリプトを確認することができます）

スクリプトをデバッグするために、コントロールポイントに変数の値を表示できます。例えば、次のダイアログを使用して表示できます。

System.Windows.Forms.MessageBox(var1.ToString())

スクリプトに高度なロジックは使わずに基本的なロジックだけを使用することを強くお勧めします。スクリプトが複雑すぎる場合は、レポートテンプレートのコンセプトを見直す必要があります。

高度な計算ロジックをデバッグしなければならない場合の回避策としては、こういったロジックをすべて関数内に分離することです。これらの関数はアプリケーションに含められ、スクリプトはアプリケーションを参照して必要な計算を行います。使用している開発環境のデバッガをアプリケーションで使用できます。テンプレートをアプリケーションから独立させなければならない場合、ロジックをデバッグした後で関数をスクリプトコードに戻すことができます。


Data Processing

データ処理

未定


Managing Visibility

表示/非表示の操作

現在の行番号を表示するサンプル。奇数行だけが表示されます。

レポートテンプレート：

dataBand1.InstanceCount = 100 (このプロパティは、レポートにバンド内容を表示する回数を設定します)

textBox1.Value = dataBand1.LineNumber (現在のページ番号を出力)

detail1.Visible (dynamic property, Binding) = “dataBand1.LineNumber % 2 == 0 ? false : true”

従って、現在のページが奇数の場合に Detail オブジェクトが表示されます。

レポート：

（Detail ではなく） TextBox オブジェクトを表示/非表示にした場合、奇数行の間に空白行（非表示の Textbox オブジェクトを持つ Detail オブジェクト）が表示されます。


Managing Position

位置の操作

オブジェクトの位置を示すサンプル

レポートテンプレート：

dataBand1.InstanceCount = 100 (このプロパティはレポートにバンドの内容を表示する回数を設定します)

textBox1.Value = dataBand1.LineNumber (現在の行番号を出力します)

textBox1.Location (dynamic property, Binding) = “ PerpetuumSoft.Framework.Drawing.Vector(0.25f+1f*((dataBand1.LineNumber - 1) % 5),0f).ConvertUnits(Unit.Centimeter,Unit.InternalUnit)”

TextBox オブジェクトを5つづつ右に 1 cm 移動させて表示します。

ConvertUnits メソッドは計測単位を変換します。

レポート：


Access to Application Logic

アプリケーション ロジックへのアクセス

アプリケーションのアセンブリのすべてのオブジェクトをスクリプトから取得できます。HostingApplicationExample サンプルにアプリケーションでのメソッドの使い方を示しています。“Hello from HostingApplicationExample.exe”という文字列を取得する GetString() メソッドがメインフォームのクラスで指定されています。フォーム クラスへのアクセスを取得するには、フォームが置かれている名前空間を Document.Imports プロパティに追加するだけです。textBox1 オブジェクトの Value プロパティに、GetString() メソッドが呼び出されます。


Data Sources

データソース

データソースのクラス

データソースの設定

ADO.NET オブジェクトの使用

ビジネスオブジェクトの使用

XML ファイルをデータソースとして使用する

リレーショナルデータベース管理システム

データベースに直接アクセスする

データがないレポート

一般的ではないデータソース


Data Source Classes

データソースのクラス

Report Sharp Shooter のデータソースとして使用可能なクラス：

ADO.NET のオブジェクト - System.Data.DataSet、System.Data.DataView、System.Data.DataTable;

System.ComponentModel.IListSource または System.Collections インターフェイスを実装するカスタムクラス（ビジネスオブジェクト）。IEnumerable (IEnumerable インターフェイスは多くの標準クラスで実装されます（例: System.Array、System.Collections.ArrayList、System.Collections.CollectionBase やその他）;

上記の一覧に含まれていないその他のカスタムクラス（ビジネスオブジェクト）やこのオブジェクトのすべてのプロパティをデータとして利用できます。


Setting Data Source

データソースの設定

レポートのデータソースは ReportManager クラスの DataSources プロパティに設定します。このプロパティには PerpetuumSoft.Reporting.Components.ObjectPointerCollection 型があります。このクラスは文字列キーにバインドされたオブジェクトのコレクションです。

DataSources プロパティのエディタを使ってレポートのデータソースを設定するには、ReportManager オブジェクトを選択し、プロパティグリッドの DataSources プロパティのボタンをクリックすると、下図のようなデータバインドエディタが表示されます。

「編集」ボタンは、データバインドリストで選択したデータソースのエディタを開きます。「削除」ボタンは、選択したデータソースを削除します。「閉じる」ボタンはデータバインドエディタを閉じます。

新しいデータソースを追加するには、「追加」ボタンをクリックして下図のエディタを開きます。

「名称」フィールドは、レポートに使用するデータソース名を入力するために使用します。「値」フィールドは、アプリケーションで使用するオブジェクト名（データソースそのもの）を選択するために使用します。結果、InitializeComponent() メソッドが下のコードに追加されます。

(C#)

this.reportManager.DataSources =

  new PerpetuumSoft.Reporting.Components.ObjectPointerCollection(

    new string[] {"AccountsDataSet", "CustomersByCity"},

    new object[] {this.accountsDataSet, this.customersByCity});

(VB)

Me.reportManager.DataSources =

  New PerpetuumSoft.Reporting.Components.ObjectPointerCollection(

    New String() {"AccountsDataSet", "CustomersByCity"},

    New Object() {Me.accountsDataSet, Me.customersByCity })

「値」リストにデータソースを表示させるには、System.ComponentModel.Component クラスから継承していなければなりません。

コードからデータソースを追加するには、ObjectPointerCollection.Add メソッドまたは ObjectPointerCollection.Item プロパティを使用できます。

(C#)

reportManager.DataSources.Add("DataSourceName", dataSource);

(VB)

reportManager.DataSources.Add("DataSourceName", dataSource)

or

(C#)

reportManager.DataSources["DataSourceName"] = dataSource;

(VB)

reportManager.DataSources("DataSourceName ") = dataSource

Add メソッドは2つのパラメータ（レポートで使用可能なデータソース名とデータソースそのもの）を受け取ります。Item プロパティを使う場合も同様にデータソース名とデータソースそのものを設定できます。

レポートのデータソースは、直接テンプレートでレポートを使うことによって読み込めます。


Using ADO.NET Objects

ADO.NET オブジェクトの使用

データソースに ADO.NET を使用したサンプルについて説明します。「Authors」 と 「Books」 という2つのテーブルを持つデータソースがあります。「Authors」 には作者名、「Books」 には本のタイトルが格納されています。「Authors」 テーブルには、AuthorID （主キー）と Name （作者名）の2つのフィールドがあります。「Books」 テーブルには、BookID （主キー）、Name （本のタイトル）、AuthorID （作者キー）、Price （値段）があります。このサンプルは、ADODataSource フォルダにあります。


Using Business Objects

ビジネスオブジェクトの使用

カスタムなデータソースでデータを表すには、System.Collections.IEnumerable または System.ComponentModel.IListSource インターフェイスを実装してください。（IEnumerable インターフェイスは System.Collections.ArrayList、System.Collections.CollectionBase やその他の多数の標準クラスで実装されています）。

このサンプルは UserDataSource フォルダにあります。データソースの設定やデータソースを ReportManager クラスの DataSources プロパティのコレクションに追加するのは Init() メソッドで行われています。

IListSource インターフェイスには2つのメンバがあります。IlistSource インターフェースには Report Sharp Shooter の動作に関係のない ContainsListCollection プロパティと、GetList() メソッドがあります。 GetList() メソッドは、順次に IEnumerable インターフェースを実装する System.Collections.Ilist インターフェースの参照を取得します。

つまり、カスタムなデータの処理は System.Collections.IEnumerator インターフェイスの参照を取得する IEnumerable.GetEnumerator() メソッドで行われます。このインターフェースを使用してコレクションの項目をすべて表示できます。IEnumerator インターフェイスには Current プロパティ、IEnumerator.MoveNext() メソッド、IEnumerator.Reset() メソッドがあります。Current プロパティは、コレクションの現在のオブジェクトを表します。MoveNext() メソッドは、次のコレクションの要素に移動し、成功した場合は True を、現在の要素がコレクションの末尾の場合は False を返します。Reset() メソッドは、列挙子を初期位置、つまりコレクションの最初の要素の前に設定します。

プロパティはすべて、カスタムなデータ配列に格納されたオブジェクトのデータフィールドとして利用できます。IListSource または IEnumerable インターフェイスを実装する型のプロパティの場合はカスタムなデータ配列と見なされ、カスタムなデータソースを使用してマスター詳細のリレーションを持った複雑なレポートを作成できます。

データソースが IListSource も IEnumerable インターフェイスも実装しない場合、プロパティはすべてデータとして取得できるので、テーブルからレコードを1つ実装できます。

では、ADO.NET オブジェクトの使用で取り上げた作者と本のデータソースの代わりにカスタムなデータソースを作成します。

一冊の本に関する情報を格納するために、次のクラスを作成します。

public class Book

{

    public Book()

    {

    }

    private string name = string.Empty;

    public string Name

    {

        get

        {

            return name;

        }

        set

        {

            name = value;

        }

    }

    private decimal price;

    public decimal Price

    {

        get

        {

            return price;

        }

        set

        {

            price = value;

        }

    }

}

    このクラスには、レポート作成時に取得可能なプロパティが2つあります。

    では、BookCollection にこのクラスを追加して、IEnumerable インターフェイスを実装する Book クラスのインスタンスを格納します。データを
    ArrayList クラスのインスタンスに格納します。更に、2つのメソッド：Add() メソッド（項目を BookCollection に追加します）と GetEnumerator
    メソッドの実装、そして IEnumerable インターフェイスの実装をこのように行います。このクラスのコードは次の通りです。
public class BookCollection : IEnumerable

{

  private ArrayList list = new ArrayList();

  public BookCollection()

  {

  }

  public void Add(Book b)

  {

    list.Add(b);

  }

  public IEnumerator GetEnumerator()

  {

    return list.GetEnumerator();

  }

}

    更に、クラスを作成して1作者の情報を格納する必要があります。作者の本を多数格納するために、本が格納されるプロパティはコレクションでなければなりません。従って、カスタムなデータソースにマスター詳細のリレーションを実現します。
public class Author

{

  public Author()

  {

  }

  private string name = string.Empty;

  public string Name

  {

    get

    {

      return name;

    }

    set

    {

      name = value;

    }

  }

  private BookCollection books = new BookCollection();

  public BookCollection Books

  {

    get

    {

      return books;

    }

  }

}

    最後に、作者を格納するコレクションを作成しなければなりません。例えば、このクラスは System.Collections.CollectionBase （厳密に型指定されたコレクションの基本クラスで、IEnumerable
    インターフェイスを実装します）から継承することができます。
public class AuthorCollection : CollectionBase

{

  public Author Add(Author value)

  {

    base.List.Add(value as object);

    return value;

  }

  public void Remove(Author value)

  {

    base.List.Remove(value as object);

  }

  public void Insert(int index, Author value)

  {

    base.List.Insert(index, value as object);

  }

  public Author this[int index]

  {

    get

    {

      return (base.List[index] as Author );

    }

    set

    {

      base.List[index] = value;

    }

  }

}

    このサンプルでは、このような機能があることを実装するためだけに BookCollection クラスが IEnumerable インターフェイスを実装しています。もちろんコレクションを配列や
    ArrayList クラスのインスタンスに格納することはできますが、型指定されたコレクション（CollectionBase から継承されたクラス）を使用することをお勧めいたします。


Non-Standard Ways of Using Business Objects

ビジネスオブジェクトの変わった使い方

（オブジェクトのプロパティではなく）動的に計算されたプロパティをフィールドとして取得できるように、カスタムなデータソース処理の標準メカニズムを変更しなければならない場合、データソースの1レコードを表すオブジェクトには ICustomTypeDescriptor インターフェイスを、これらのオブジェクトを格納するコレクションには ITypedList インターフェイスを実装しなければなりません。

CustomTypeDescriptorExample サンプルを例にあげて説明します。世界中に部品を販売する企業向けのプログラムを開発する場合、基準となる通貨を各国の通貨に換算して価格表示しなければなりません。

Currency クラスは、あらゆる通貨情報を格納するために使用します。 このクラスには名前と為替レートを設定する2つのプロパティがあります。SystemCurrencies という静的な配列がこのクラスに設定されています。この配列は、このシステムで使用されるすべての通貨を格納するために使用されます。このサンプルでは、配列には限定された値が設定されていますが、実際のアプリケーションではこの配列をデータベースから読み込みます。

Path クラスは、部品のレコードを1つ格納するために使用します。このクラスは ICustomTypeDescriptor インターフェイスを実装します。下記にこのクラスの動的プロパティのコレクションを生成する静的メソッドのコードを示します。

public static PropertyDescriptorCollection GetPartProperties()

{

  PropertyDescriptorCollection props = new PropertyDescriptorCollection(null);

  foreach(Currency c in Currency.SystemCurrencies)

  {

    props.Add(new CurrencyPropertyDescriptor(c));

  }

  props.Add(TypeDescriptor.CreateProperty(typeof(Part), "Name", typeof(string)));

  return props;

}

動的なプロパティのコレクションを取得するために、まさしくこのメソッドはインターフェイスのメソッドによって呼び出されます。

ICustomTypeDescriptor.GetProperties(Attribute[] attributes)

ICustomTypeDescriptor.GetProperties()

コードからお分かりになるように CurrencyPropertyDescriptor クラスの冒頭で、Currency.SystemCurrencies の配列からすべての通貨型のインスタンスが作成され、次に部品名が追加されます。

CurrencyPropertyDescriptor クラスは、クラスのプロパティの抽象化を提供する PropertyDescriptor クラスから継承されます。CurrencyPropertyDescriptor クラスの PropertyType プロパティと ComponentType プロパティの実装に注目してください。PropertyType/ComponentType プロパティは、プロパティ値を取得/設定する GetValue/SetValue メソッドと同じように、このクラスを実装するプロパティ型/クラス型を取得します。

最後に、部品のコレクションを格納するために使用される、PartCollection クラスについて説明します。このクラスは ITypedList インターフェイスを実装します。このインターフェイスには2つのメソッドがあります。GetListName メソッドはリスト名を取得し、GetItemProperties メソッドはリストのオブジェクトの動的なプロパティを定義する PropertyDescripter オブジェクトの配列を取得します。このメソッドは Part.GetPartProperties() 静的メソッドの処理結果を取得するだけです。

従って、各国の通貨で価格を表示するレポートテンプレートを作成する必要があります。


Using XML File as Data Source

XML ファイルをデータソースとして使用する

XML ドキュメントをデータソースとして使用するには、次の手順を行ってください（XML ファイルのデータを使用したサンプルが XmlDataSourceExample フォルダにあります）。

1. PerpetuumSoft.Reporting.Data.XmlDataSource オブジェクトを作成する

2. DataFile プロパティに XML ファイルのパスを設定する

3. XPath プロパティに、XML データに適用する最初のパス（XPath 言語の式）を設定する

4. 作成したオブジェクトを ReportManager のデータソースとして設定する

これは、ReportManager.DataSources.Add(“DataSourceName”, “DataSource”) メソッドを使用して行えます。

他のデータソースと同じように、テンプレートでこのデータソースを使用することができます。

データソースは、最初のパス（XPath プロパティ）を設定することにより、最初の XML ドキュメントのレコードと同じレコード数を格納します。

レポートテンプレートのデータを取得するには、GetData(“SourcePath”) メソッドを使用してください。

この SourcePath は、データソース名を指定する文字列、その次に XML ドキュメントの構造に従ってカンマで区切られた要素のパスとなります。

SourcePath が XML のタグ属性のパスを設定する場合、GetData メソッドはこの属性の文字列の値を取得します。XML タグのテキストを取得するには、SourcePath プロパティにタグのパス、その次にカンマで区切られた “GetText()” を設定してください。

サンプルに注目してください。

本の情報を格納している XML ドキュメントをデータソースとして使用しています。

すべての本の情報を表示するレポートを作成しなければなりません。以下はその手順です。

1. XmlDataSource データソースを作成し、 DataFile プロパティにはこの XML ファイルを、XPath プロパティには book のパス（XPath=’bookstore/book’）を設定します。

2. ReportManager.DataSources.Add メソッドを使用して、データソースのコレクション（“XmlSource”）に、作成したデータソースを追加します。

3. レポートテンプレートを作成し、DataBand を貼り付けて、DataBand.DataSource = “XmlSource” に設定します。

4. すべての本（“book”）の情報を表示するために、DataBand の中に Detail を追加します。

5. 本のさまざまなデータを表示するために、Detail の中に TextBox オブジェクトを追加します。例えば、本のタイトルを表示するには、TextBox.Value(property binding) = ‘GetData(“XmlSource.title.GetText()”)’を設定します。作者名の情報を表示するには、'GetData(“XmSource.author.first-name.GetText()”)’を設定します。XML の属性、例えば ‘publicationdate’のデータを表示するには、'GetData(“XmSource. publicationdate ”)’を設定します。

レポートテンプレートは下図のようになるはずです。

実行例：

場合によっては、テンプレートのデザイナで直接 XML ドキュメントをデータソースとして設定しなければならない場合があります。その際は、データベースに直接アクセスするを参照してください。


Relational DBMS

リレーショナルデータベース管理システム

未定


Direct Access to Data Base

データベースに直接アクセスする

Report Sharp Shooter のレポートジェネレータは「アプリケーションがレポートのデータを提供する」というコンセプトを実現します。これは任意のデータソースを使ったり特定のデータソースとは関係ないデータ（レポートテンプレート）を提供するためのルールを作成できます。

しかし、レポートテンプレートを特定のデータソースにバインドしたり、エンドユーザがレポートテンプレートを作成/編集したり独自のデータソースを追加できるようにしなければならない場合があります。

ドキュメントのテンプレートに組み込まれたデータソースのコレクション、つまり直接テンプレートに指定されたソース（Document.DataSourcesプロパティ）があるのはそのためです。レポートデザイナで組み込み式のデータソースを追加したり編集することができます。

組み込まれているドキュメントのデータソースエディタ

このエディタは Document.DataSources プロパティを設定する時やツールバーの「データソース」ボタンをクリックすると表示されます。

このエディタで、次のデータソース型を追加または編集できます。

1) OdbcDataSource - ODBC インターフェイスを使用してさまざまな DBMS からデータを取得します

2) SqlDataSource - MS SQL からデータを取得します

3) XmlDataSource - ドキュメントのデータを取得しますドキュメントのテンプレートに組み込まれたデータソースとアプリケーションから接続したデータソースの使い方に違いはありません。組み込まれたデータソースとその構造は、（テンプレートのデザイン時にこのデータソースからデータを取得できれば）テンプレートのデザイナのデータソースツリーから取得できます。

テンプレートのデータを直接データベースから取得するには、OdbcDataSource か SqlDataSource を使用できます。どちらも機能やプロパティは同じですが、DBSM への接続方法が違います。MS SQL を使用する場合は SqlDataSource の使用をお勧めします。

OdbcDataSource または SQL SqlDataSource を設定するには次のプロパティを設定しなければなりません。

1. Name プロパティ - テンプレートからデータソースを参照するために使用するデータソース名を設定します。

2. ConnectionString プロパティ - データソースへの接続文字列を設定します。

3. SelectQuery プロパティ - データを取得するための SQL クエリーを設定します。

XML ドキュメントから直接テンプレートにデータを取得するには XmlDataSource を追加し、次のプロパティを設定しなければなりません。

1. Name プロパティ - テンプレートからデータソースを参照するために使用するデータソース名を設定します。

2. DataFile プロパティ - ХML ドキュメントのパスを設定します。

3. XPath プロパティ - XML データに適用する最初のパス（XPath 言語での式）を設定します。

XmlDataSource の使い方に関する詳細は、「XML ファイルをデータソースとして使用する」をご覧ください。


Report without Data

データがないレポート

レポートはデータソースを設定しなくても作成できます。DataBand オブジェクトには、レポートにオブジェクトの内容を何回出力するかを定義する InstanceCount プロパティがあります。データソースなしのレポートサンプルは WithoutDataExample フォルダにあります。このサンプルは乗算テーブルを出力します。レポートテンプレートには2つの DataBand があります。DataBand2 は dataBand1 に含まれています。どちらの InstanceCount プロパティも10に設定されています。textBox1 オブジェクトの Value プロパティには次の値が設定されています。

dataBand1.LineNumber.ToString() + " * " + dataBand2.LineNumber.ToString() + " = " + (dataBand1.LineNumber * dataBand2.LineNumber).ToString()

DataBand.LineNumber プロパティは現在の行番号を示すので、1から10までの乗算テーブルを表示します。


Non-Standard Data Sources

一般的ではないデータソース

未定


Export

エクスポート

Report Sharp Shooter は最終ドキュメントを一般的な形式にエクスポートできます。このためにエクスポートフィルタが使用され、Export 関数はオーバーロードされた状態になります。

public void Export(Document document, string fileName)

public virtual void Export(Document document, string fileName, bool showDialog),

上記の document は最終レポート、filename はエクスポートするドキュメントの保存先のファイル名を表し、showDialog はエクスポート設定ウィンドウの表示/非表示を設定します。最初の Export メソッドを使用する場合、エクスポートフィルタ設定のダイアログウィンドウが表示されます。PerpetuumSoft.Reporting アセンブリに位置付けられているフィルタ形式へのエクスポートは常にレポートビューアから行えます。他のエクスポートフィルタを使用するには、対象アセンブリへの接続と、少なくともそのフィルタクラスのインスタンスを1つ作成する必要があります。最も簡単な方法は、必要とするフィルタをフォームに追加することです。更に、PerpetuumSoft.Reporting.Export.RegisterExportFilter(ExportFilterFactory factory) 静的メソッドや PerpetuumSoft.Reporting.Export.ExportFilters 静的コレクションにアクセスすることで利用可能なエクスポートフィルタを操作できます。

どの形式も標準の設定があります。ページ範囲はエクスポートするレポートページの範囲を設定します。符号化はテキストコードを設定します。解像度はイメージの解像度を設定します。


CSV Export

CSV へのエクスポート

CSV エクスポートフィルタは PerpetuumSoft.Reporting.Export.CSV アセンブリに位置付けられています。テキスト情報だけ CSV にエクスポートされます。TextBox や AdvancedText オブジェクトのコンテンツは CSV にエクスポートされます。ファイルの行はすべてテーブルの行と一致します。各列の値は区切り記号（区切りフィールドで設定できます）で区切られます。


TXT Export

TXT へのエクスポート

TXT へのエクスポートは、PerpetuumSoft.Reporting.Export.Text アセンブリに位置付けられています。TextBox や AdvancedText オブジェクトのコンテンツは TXT にエクスポートされます。エクスポートモードの設定で生成モードを選択できます。「ページ毎」は改ページ記号を追加します。「ドキュメント全体」の場合は改ページ記号の表示はありません。


PDF Export

PDF エクスポート

PDF エクスポートフィルタは、PerpetuumSoft.Reporting.Export.Pdf と PerpetuumSoft.Writers.Pdf アセンブリに位置付けられています。TextBox や AdvancedText オブジェクトのコンテンツは PDF にエクスポートされ、スタイルが保存されます。Picture、ZipCide、BarCode、RichText、WinFormsControl、Chart、Widget オブジェクトはイメージとしてエクスポートされます。ConicalFill や HatchFill は SolidFill としてエクスポートされます。PDF ドキュメントにセキュリティ設定を行えます。


Excel Export

Excel へのエクスポート

Excel エクスポートフィルタは、PerpetuumSoft.Reporting.Export.Excel と PerpetuumSoft.Writers.Excel アセンブリに位置付けられています。Shape オブジェクト同様、TextBox や AdvancedText オブジェクトのテキスト情報は Excel にエクスポートされます。すべての Fill や TextFill プロパティの塗りつぶし型は SolidFill としてエクスポートされます。エクスポートモードで、1ページに全レポートページをエクスポートする（シートにドキュメント）か、個別のページにエクスポートする（シートごとのページ）かを選択できます。


Excel (XML) Export

Excel (XML) のエクスポート

Excel XML エクスポートフィルタは、PerpetuumSoft.Reporting.Export.ExcelXML と PerpetuumSoft.Writers.Excel アセンブリに位置付けられています。TextBox や AdvancedText オブジェクトのコンテンツは Excel (XML) にエクスポートされ、スタイルが保存され、Fill と TextFill のすべての塗りつぶし型が SolidFill としてエクスポートされます。


RTF Export

RTF のエクスポート

TextBox や AdvancedText オブジェクトのコンテンツは RTF にエクスポートされ、スタイルが保存されます。Picture、Shape、ZipCide、BarCode、RichText、WinFormsControl、Chart、Widget オブジェクトはイメージとしてエクスポートされます。Fill や TextFill の塗りつぶし型はすべて SolidFill （単色）としてエクスポートされます。


HTML Export

HTML へのエクスポート

HTML エクスポートフィルタは PerpetuumSoft.Reporting.Export.Html アセンブリにあります。TextBox や AdvancedText オブジェクトのコンテンツは RTF にエクスポートされ、スタイルが保存されます。Picture、ZipCide、BarCode、RichText、WinFormsControl、Chart、Widget オブジェクトはイメージとしてエクスポートされます。Shape オブジェクトはエクスポートされません。テキスト情報だけを保存するには、エクスポート設定で「テキストのみ」にチェックを付けてください。Fill や TextFill のすべての塗りつぶし型は SolidFill としてエクスポートされます。「上級オプション」の設定で、エクスポートの付加的なパラメータを設定できます。


GIF, JPG, BMP, EMF, TIFF, PNG Export

GIF、JPG、BMP、EMF、TIFF、PNG へのエクスポート

ビットマップやベクタ（EMF）イメージのエクスポートフィルタは PerpetuumSoft.Reporting アセンブリに位置付けられています。ドキュメントにはすべてのレポート要素が含まれます。ページはそれぞれ個別のファイルとしてエクスポートされます（TIFF へのエクスポートは除く）。JPG へのエクスポートでは、イメージの解像度だけでなくイメージ品質も設定できます。


Projects

プロジェクト

Win フォーム

Web フォーム


Using Report Viewer

レポートビューアの使用

レポートビューアは、外観設定のプロパティのセットを持った独自のコンポーネントです。以下のプロパティで、ステータスバー、ツールバー、ツールバーの個別/グループのボタンを表示/非表示に切り替えることができます。

プロパティ | 説明
ShowContent | 「コンテンツ表示」ボタンやドキュメントの目次を表示/非表示にします
ShowDesigner | 「編集」ボタンを表示/非表示にします
ShowExport | 「エクスポート」ボタンを表示/非表示にします
ShowFind | 「検索」ボタンを表示/非表示にします
ShowNavigator | 「戻る」「進む」ボタンを表示/非表示にします
ShowOpen | 「（ドキュメントを）開く」ボタンを表示/非表示にします
ShowPageNavigator | 「先頭ページに移動」「前のページに移動」「次のページに移動」「最後のページに移動」ボタンを表示/非表示にします
ShowPrint | 「印刷」ボタンを表示/非表示にします
ShowRefresh | 「更新」ボタンを表示/非表示にします
ShowSave | 「保存」ボタンを表示/非表示にします
ShowScale | 「パン」、「ダイナミックズーム」、「ズームイン」、「ズームアウト」、「矩形に合わせてズーム」、「ページ全体に合わせる」、「ページの幅に合わせる」、「実サイズ」ボタンを表示/非表示にします
ShowStatusBar | ステータスバーを表示/非表示にします
ShowStatusBarGrip | ステータスバーにグリッドを表示/非表示にします
ShowToolBar | ツールバーを表示/非表示にします

レポートビューアには Actions プロパティがあります。このプロパティはすべての動作へのアクセスを提供し、定義することができます。すべての動作一覧は次の通りです。

プロパティ | 説明
Print | 「印刷」ボタンがクリックされると呼び出されます
Load | 「（ドキュメントを）開く」ボタンがクリックされると呼び出されます
Save | 「保存」ボタンがクリックされると呼び出されます
Export | 「エクスポート」ボタンがクリックされると呼び出されます
Pan | 「パン」ボタンがクリックされると呼び出されます
DynamicZoom | 「ダイナミックズーム」ボタンがクリックされると呼び出されます
ZoomIn | 「ズームイン」ボタンがクリックされると呼び出されます
ZoomOut | 「ズームアウト」ボタンがクリックされると呼び出されます
ZoomRectangle | 「矩形に合わせてズーム」ボタンがクリックされると呼び出されます
Content | 「コンテンツ表示」ボタンがクリックされると呼び出されます
WholePage | 「ページ全体に合わせる」ボタンがクリックされると呼び出されます
PageWidth | 「ページの幅に合わせる」ボタンがクリックされると呼び出されます
ActualSize | 「実サイズ」ボタンがクリックされると呼び出されます
Zoom25 | ズーム倍率を 25% に設定します
Zoom50 | ズーム倍率を 50% に設定します
Zoom75 | ズーム倍率を 75% に設定します
Zoom100 | ズーム倍率を 100% に設定します
Zoom125 | ズーム倍率を 125% に設定します
Zoom150 | ズーム倍率を 150% に設定します
Zoom200 | ズーム倍率を 200% に設定します
Zoom300 | ズーム倍率を 300% に設定します
Zoom500 | ズーム倍率を 500% に設定します
Forward | 「進む」ボタンがクリックされると呼び出されます
Backwards | 「戻る」ボタンがクリックされると呼び出されます
CustomZoom | Ctrl+Z ホットキーまたは「カスタムズーム」コンテキストメニューがステータスバーのズームブロックで選択されると呼び出されます
FirstPage | 「先頭ページに移動」ボタンがクリックされると呼び出されます
PrevPage | 「前のページに移動」ボタンがクリックされると呼び出されます
NextPage | 「次のページに移動」ボタンがクリックされると呼び出されます
LastPage | 「最後のページに移動」ボタンがクリックされると呼び出されます
GotoPage | 現在のページやページ総数の情報を表示するステータスバーでマウスをクリックすると呼び出されます
EditReport | 「編集」ボタンがクリックされると呼び出されます
RefreshReport | 「更新」ボタンがクリックされると呼び出されます
SinglePage | 「単一ページ」ボタンがクリックされると呼び出されます
ContinuedPage | 「連続ページ」ボタンがクリックされると呼び出されます

規定値に設定された動作を再定義するには、Executing イベントハンドラを作成する必要があります。このイベントハンドラに委任された ExecutiongEventArgs オブジェクトの Handled プロパティが true に設定された場合、Execute イベントで定義された標準の動作は呼び出されません。Export の動作を再定義する例：

reportViewer1.Actions["Export"].Executing += new Action.ExecutingEventHandler(Export);

and create event handler:

private void Export(object sender, ExecutingEventArgs e)

{

  // Do something

  e.Handled = true;

}


Without Report Viewer

レポートビューアなし

未定


Peculiarities of the Working Web

Web での特色

Report Sharp Shooter を WebForms アプリケーションで使用する場合、レポートは常にサーバー側で生成されてからクライアントに送られます。また、レポートを html、pdf などの様々な形式でクライアントに送ることができます。レポートは全部または指定したページだけ送ることができます。では、Web アプリケーションで Report Sharp Shooter を使用したさまざまなサンプルについて説明します。


Using SharpShooterWebViewer

SharpShooterWebViewer の使用

Report Sharp Shooter には ASP.NET アプリケーションのレポートを表示する PerpetuumSoft.Reporting.Web.SharpShooterWebViewer コントロールがあります。このコンポーネントのレポートの表示モードを設定する ViewMode プロパティは PerpetuumSoft.Reporting.Web.ViewMode リストから次の値を取得できます。

HtmlSinglePage - 単一ページ表示

HtmlWholeReport - レポート全体を表示

WindowsForms - PerpetuumSoft.Reporting.View.ReportViewer （Windows アプリケーションのレポートビューア）にレポートを表示

SharpShooterWebViewer のドキュメントのソースは、継承された ReportSlot を持つ IReportSource 型の Source プロパティに設定されます。SharpShooterWebViewer はレポート全体を pdf 形式で表示することができます。SharpShooterWebViewer は表示したドキュメントをキャッシュし、レポートをキャッシュに保存する時間を CacheTimeOut プロパティに設定します。ImageFormat プロパティはレポートに送るイメージ形式を設定します。

WebDemo サンプルは SharpShooterWebViewer の使い方を示しています。


Use of the Product without SharpShooterWebViewer

SharpShooterWebViewer を使わずにレポートを表示する

ウェブ用サンプルの「WebPublish」は SharpShooterWebViewer を使わずにウェブページにレポートを表示する方法を示しています。レポートタイトルとレポート形式は MainPage で設定します。「表示」ボタンをクリックすると、Clickイベントハンドラのクエリが ReportPage のページに転送します。

Response.Redirect("ReportPage.aspx?format="+DropDownList1.SelectedItem.Value.ToString()+"&title="+TextBox1.Text)

ReportPage のページの Load イベントハンドラがレポートを指定した形式にエクスポートし、クライアントに送ります。


Using HttpHandler

HttpHandler の使用

SharpShooterWebViewer を使わずにレポートを表示する別の方法は、カスタム Http ハンドラを作成しそれに特定の拡張子（例：*.rst）を設定する System.Web.IHttpHandler インターフェイスを実装することです。このイベントハンドラは、リクエストで指定されたテンプレートによって生成されたドキュメントを返します。リクエスト処理は ReportHttpHandler クラスの ProcessRequest メソッドで実装されます。リクエストハンドラはレポートを指定した形式にエクスポートし、それを応答するスレッドに書き込みます。このようなハンドラを使用するには、Web.config に次の情報を入れる必要があります。

<configuration>

  <system.web>

  <httpHandlers>

    <add verb="*" path="*.rst" type="HttpHandler.ReportHttpHandler,HttpHandler"/>

  </httpHandlers>

  </system.web>

</configuration>

verb 属性は、このハンドラを呼び出すための HTTP 命令のリストを定義します。path 属性は、このハンドラを呼び出す URL または URL マスクを定義します。type 属性は、このハンドラのクラスとそれを位置付けるアセンブリを定義します。

特定の拡張子を使う場合、その拡張子をマッピングする必要があります。それには、Web サイトのプロパティの「ホームディレクトリ」タブの「構成」ボタンをクリックして「アプリケーションのマッピング」タブにある「追加」ボタンを押して実行ファイルを {disk}:\{Microsoft.NET Framework path}\aspnet_isapi.dll に、拡張子を .rst に設定してください。


Using Advanced Product Features

本製品の高度な特徴を使用する

カスタムレポートデザイナ

カスタム レポート コントロール

カスタムエクスポートフィルタ

カスタムテンプレートの保存

ライブレポート

レポート生成の操作


Custom Report Designer

カスタムレポートデザイナ

レポートデザイナの標準インターフェースを変更する場合があります。レポートデザイナの要素（例：ツールバー、ステータス行、エラーリストなど）はすべて個別のコンポーネントとして使用できるので簡単にカスタマイズできます。以下に対象のコンポーネントの一覧を示します。

コンポーネント | 説明
DesignerDataSourceTree | データソースを表示するコンポーネント。標準のレポートデザイナでは、ツールウィンドウの「データソース」タブに表示されます。
DesignerErrorList | スクリプトのエラーリストを表示するコンポーネント。標準のレポートデザイナでは、スクリプトのチェックを呼び出してスクリプトにエラーがある場合はフォーム下部に表示されます。
DesignerPropertyGrid | 選択したオブジェクトのプロパティ一覧を表示するコンポーネント。標準のレポートデザイナでは、ツールウィンドウの「プロパティ」タブに表示されます。
DesignerStatusBar | レポートデザイナのステータスバー。
DesignerToolBar | レポートデザイナのツールバー。
DesignerToolBox | ツールボックス。標準のレポートデザイナでは、フォームの左側に表示されます。
ReportDesigner | 編集するレポートテンプレートを表示するメインコンポーネント。レポートデザイナはその他のすべてのコンポーネントにつながります。各コンポーネントの Designer プロパティに対象のレポートデザイナを指定するだけです。

カスタムレポートデザイナのサンプルは、CustomDesignerViewer フォルダにあります。カスタムレポートデザイナを呼び出すために、フォームには「カスタムデザイナ」ボタンがあります。このボタンをクリックすると、button1_Click イベントハンドラが実行されます。1行目はレポートデザイナのフォームを設定します。

CustomDesignerForm f = new CustomDesignerForm();

このフォームには、レポートのデータソース、サブレポート、編集するレポートテンプレートの設定に使用する、ReportDesigner 型の指定された Designer プロパティが含まれています。

f.Designer.DataSourceManager = reportManager1.DataSources;

f.Designer.SubReportResolver = reportManager1;

f.Designer.Document = reportSlot1.LoadTemplate();

次にフォームの表示：

f.ShowDialog();

最終レポートをカスタムレポートビューアに表示するために、ReportDesigner コンポーネントの Actions プロパティを使用して「レポートプレビュー」ボタンのクリックハンドラを再定義します。必要な動作は "Preview" です。"Preview" を呼び出すと、Executing イベントが呼び出され、次に Execute イベントが呼び出されます。Executing イベントハンドラがパラメータによって処理されたことがわかると、Execute イベントは呼び出されません。Execute イベントを呼び出す場合、このイベントの標準ハンドラが呼び出されます。従って、レポートビューアを呼び出してイベントが処理されたことを通知するフラグを設定する、カスタムな Executing イベントハンドラを作成しなければなりません。そのイベントハンドラは次のようになります。

private void Preview(object sender, ExecutingEventArgs e)

{

  if (reportDesigner1.Document != null)

  {

    ReportManager manager = new ReportManager();

    InlineReportSlot slot = new InlineReportSlot();

    manager.Reports.Add(slot);

    manager.DataSources = this.DataSources;

    slot.SaveReport(this.Document);

    manager.OwnerForm = ParentForm;

    manager.ResolveSubReport += new ResolveSubReportEventHandler(manager_ResolveSubReport);

    slot.RenderCompleted += new EventHandler(slot_RenderCompleted);

    slot.HyperlinkClick += new HyperlinkEventHandler(slot_HyperlinkClick);

    slot.GetReportParameter += new GetReportParameterEventHandler(slot_GetReportParameter);

    slot.Prepare();

    e.Handled = true;

  }

}

private void slot_RenderCompleted(object sender, EventArgs e)

{

  ReportSlot slot = sender as ReportSlot;

  using(ViewerForm f = new ViewerForm(slot))

  {

    f.WindowState = FormWindowState.Maximized;

    f.ShowDialog(this);

  }

}

このプロシージャを Preview の Executing イベントハンドラとして設定
reportDesigner1.Actions["Preview"].Executing +=

new Action.ExecutingEventHandler(Preview);


Custom Report Viewer

カスタムレポートビューア

例えば、アプリケーションのスタイルに合わない場合やツールバーを変更しなければならない場合など、標準のレポートビューアコンポーネントの標準インターフェイスを使用しなければならない場合があります。

このサンプルは、CustomDesignerViewer フォルダにあります。

（ReportViewer.ShowToolBar プロパティを False 設定して）ツールバーのないレポートビューアを作成し、「前のページ」、「次のページ」、「印刷」という3つのボタンをフォームに追加します。 これを行うには、ReportViewer コンポーネントの Actions プロパティのコレクションを使用します。

コントロールと Action とのリレーションは ActionBind 型のメソッドで設定されます。ナビゲーションボタン（3つのボタンと Action をバインドするには、ActionBind の派生クラスを実装する必要があります。

下記に例があります。

public class ButtonActionBind : ActionBind

{

    public ButtonActionBind(Button button)

    {

      SetComponent(button);

    }

    public Button Button

    {

      get

      {

        return this.Component as Button;

      }

    }

    protected override void Bind()

    {

      Button.Click += new EventHandler(Button_Click);

    }

    protected override void Unbind()

    {

      Button.Click -= new EventHandler(Button_Click);

    }

    public override void Update()

    {

      if (Action != null)

      {

        Button b = Button;

        b.Enabled = Action.Enabled;

        b.Text = Action.Text;

        b.Visible = Action.Visible;

      }

    }

    private void Button_Click(object sender, EventArgs e)

    {

      if (Action != null)

        Action.ExecuteAction();

    }

  }

    レポートビューアのボタンと Actions をバインドする：

  PerpetuumSoft.Reporting.Windows.Forms.Action action = reportViewer1.Actions["PrevPage"];

  ButtonActionBind bind = new ButtonActionBind(prevPageButton);

  action.Bind(bind);

  action = reportViewer1.Actions["NextPage"];

  bind = new ButtonActionBind(nextPageButton);

  action.Bind(bind);

  action = reportViewer1.Actions["Print"];

  bind = new ButtonActionBind(printButton);

  action.Bind(bind);

    このようにボタンをレポートビューアのアクションにバインドしました。

    レポートビューアに生成されるレポートのソースは、Source プロパティに（IReportSource インターフェイスを実装する型を）設定します。ReportViewer
    が貼り付けられているフォームのコンストラクタは、IReportSource インターフェイスを実装する型のパラメータを受け取って、それを Source プロパティに設定します。


Custom Wizard

カスタム ウィザード

未定


Custom Report Element

カスタム レポート コントロール

カスタム レポート コントロールのサンプルが CustomReportControlDemo フォルダにあります。

このサンプルで作成されるコンポーネント - Color プロパティ（色を設定します）と Checked プロパティは、追加された Box オブジェクトから派生されます。Checked プロパティが true の場合、オブジェクトの領域に2本の対角線（×印）が表示されます。Stored 属性は、ドキュメントの書き込み時にこのプロパティが保存されることを設定します。ReportBindable 属性は、このプロパティにその値を計算するためのスクリプトを含められることを設定します。

一部のクラスのプロパティの規定値を変更したい場合は、InitNew() メソッドにコードを記述しなければなりません。PaintContent メソッドはコンポーネントを描画します。そして主要メソッドは Render メソッドです。このメソッドを呼び出すと、最終レポートにコンポーネントが表示されます。このメソッドに、独自のオブジェクトの新しいインスタンスを作成しなければなりません。

CheckBoxReportControl result = new CheckBoxReportControl();

次にメソッドを呼び出してプロパティを設定

PopulateProperties(result);

最終レポートでのカスタムコントロールの位置設定

RenderLocation(result);

最終レポートのページに貼り付け

Engine.ProductionPage.Controls.Add(result);

コンポーネントを登録し、それをレポートテンプレートに追加するために、Load イベントハンドラに次のコードを追加：

PerpetuumSoft.Reporting.DOM.ReportControl.RegisterControlType(typeof(CheckBoxReportControl));

CheckBoxReportControl customControl = new CheckBoxReportControl();

customControl.Location = new Point(300, 300);

customControl.Size = new Size(300, 300);

Document template = reportSlot.LoadReport();

template.Pages[0].Controls.Add(customControl);

reportSlot.SaveReport(template);


Custom Export Filter

カスタムエクスポートフィルタ

未定


Custom Template Storage

カスタムテンプレートの保存

未定


Live Report

ライブレポート

Report Sharp Shooter は、ハイパーリンクのクリックやレポートにある他の任意のオブジェクトを処理する標準メカニズムを再定義することができます。このサンプルは LiveReportExample フォルダにあります。レポートテンプレートには、TextBox オブジェクトと2つの Shape オブジェクトがあります。TextBox.Hyperlink プロパティが新しいレポートに設定されています。ハイパーリンクのクリックを遮断するには、ReportManager コンポーネントの HyperlinkClick イベントを使用します。このリンクをクリックした時に新しいレポートが表示されるようにします。HyperlinkClick イベントハンドラのコードは以下の通りです。

private void reportManager1_HyperlinkClick(object sender, PerpetuumSoft.Reporting.Components.HyperlinkEventArgs e)

{

  if (e.Hyperlink == "New report")

  {

    e.Handled = true;

    try

    {

      reportSlot2.RenderDocument();

      using(PerpetuumSoft.Reporting.View.PreviewForm previewForm = new PerpetuumSoft.Reporting.View.PreviewForm(reportSlot2))

      {

        previewForm.WindowState = FormWindowState.Maximized;

        previewForm.ShowDialog(this);

      }

    }

    Catch (Exception exception)

    {

      MessageBox.Show(exception.Message, "Report Sharp-Shooter", MessageBoxButtons.OK, MessageBoxIcon.Error);

    }

  }

}

HyperlinkEventArgs クラスには重要なプロパティが2つあります。

  • Hyperlink プロパティ - ハイパーリンクの文字列
  • Handled プロパティ - イベント処理する値を取得します

Shape オブジェクトをクリックするとオブジェクト名が表示されます。それには、ReportViewer コンポーネントの ViewObjectClick イベントを使用してください。このイベントハンドラには次のコードが含まれています。

private void reportManager1_ViewObjectClick(object Sender, PerpetuumSoft.Reporting.View.ReportViewEventArgs e)

{

  if(e.Control is PerpetuumSoft.Reporting.DOM.Shape)

  {

    MessageBox.Show("You click on shape: " + (e.Control as PerpetuumSoft.Reporting.DOM.Shape).Name);

    e.Handled = true;

  }

}

ReportViewEventArgs クラスには2つのプロパティが含まれています。

  • PerpetuumSoft.Reporting.DOM.ReportControl 型の Control プロパティ - クリックされたオブジェクト

    •

  • bool 型の Handled プロパティ - イベントが処理されたかどうかを取得します
    •


Managing Report Generation

レポート生成の操作

Report Sharp Shooter は必要に応じて標準のレポート生成メカニズムを変更することができます。それには、対象の Page オブジェクトの ManualBuildScript プロパティにコードを記述する必要があります。ManualBuildExample フォルダに、手動でレポート生成を行うサンプルがあります。このサンプルには2つのレポートが含まれています。1つのレポートには乗算テーブルが、もう一方のレポートには Report Sharp Shooter がインストールされているフォルダーのツリーが表示されます。

まず、簡単な乗算テーブルのサンプルから説明します。レポートテンプレートには Detail とその中に3つの TextBox があります。各 TextBox オブジェクトの Value プロパティにはそれぞれ a、b、c が設定されています。a、b、c は Document.CommonScript プロパティに指定された int 型の変数です。このページの ManualBuildScript プロパティには次のコードが設定されています。

for (a = 1; a < 10; a++)

  for (b = 1; b < 10; b++)

  {

    c = a*b;

    detail1.Render();

  }

つまり、a と b の変数に1から9までのすべての値をループで渡して値 c を計算し、detail1.Render() メソッドによってレポートに Detail が表示されます。この Detail に含まれている TextBox オブジェクトに表示される変数 a、b、c に新しい値を設定しました。

では、フォルダのツリーを表示するサンプルについて説明します。テンプレートには detail1 とその中に textBox1 オブジェクトがあります。このテキストボックスは現在のカタログまたはファイルを表示するために使用されます。Document.CommonScript プロパティには次のコードが設定されています。

private string fileName;

private float x = 0;

private void walkTree(DirectoryInfo dirInfo, int c)

{

  x = (float)c * 0.5f;

  fileName = "[" + dirInfo.Name + "]";

  detail1.Render();

  DirectoryInfo[] di = dirInfo.GetDirectories();

  foreach(DirectoryInfo d in di)walkTree(d,c+1);

  FileInfo[] fi = dirInfo.GetFiles();

  x = (float)(c+1) * 0.5f;

  foreach(FileInfo f in fi)

  {

    fileName = f.Name;

    detail1.Render();

  }

}

private void buildTree()

{

  string path = (string)Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\PerpetuumSoft\\Report Sharp-Shooter").GetValue("Reports");

  path = path.Substring(0,path.LastIndexOf("Examples\\Reports"));

  DirectoryInfo dirInfo = new DirectoryInfo(path);

  walkTree(dirInfo,0);

}

スクリプトに2つ変数： 「fileName」 と 「x」 が設定されています。変数 「fileName」 は textBox1 オブジェクトの Value プロパティに設定され、変数 「x」 は textBox1 オブジェクトの Location と Size プロパティの新しい値を計算するために使用されます。buildTree() メソッドは Report Sharp Shooter がインストールされているフォルダを算出し、walkTree() メソッドは繰り返し使うフォルダツリーのバイパスを作成しフォルダ名やファイル名を表示するために呼び出されます。レポートの生成時にフォルダーのツリーを表示するには、Page.ManualBuildScript プロパティに buildTree() メソッドの呼び出しを追加する必要があります。


Appendix 1 Document Object Model

付録 1 ドキュメントオブジェクトモデル

最終レポートとテンプレートの作成時に使用されるクラスの階層構造について説明します。

Report Sharp Shooter の全クラスの基本クラスは PerpetuumSoft.Framework.Atom クラスです。これは System.Object から継承され、System.IClonable インターフェイスを実装します。

この Atom クラスは ReportComponent の親クラスで、すべての Report Sharp Shooter コンポーネントの基本クラスです。ReportComponent と後述のすべてのクラスやインターフェイスは PerpetuumSoft.Reporting.DOM 名前空間にあります。このクラスには、オブジェクト名を設定する Name プロパティがあります。

Document クラスと ReportControl クラスは ReportComponent から継承されています。Document クラスを使用してレポートのテンプレートや最終ドキュメントを表示し、Pages と呼ばれるドキュメントページのコレクションが格納されています。

ReportControl クラスはテンプレートの全オブジェクトまたは最終ドキュメントの基本クラスです。ContainerControl クラスと VisualControl クラスは ReportControl から継承されています。ContainerControl クラスはレポートのすべての非ビジュアルオブジェクトの基本クラスで、ReportControl クラスから継承されたオブジェクトを格納することができます。VisualControl クラスはレポートのすべてのビジュアルオブジェクトの基本クラスです。

ContainerControl クラスについて説明します。このクラスは Controls プロパティが格納されている IContainerControl インターフェースを実装します。Controls プロパティはこのオブジェクト内で入れ子になったオブジェクトのコレクションです。IContainerControl インターフェイスには IsValidChild メソッドがあります。このメソッドは、ReportControl 型のパラメータを取得し、渡されたオブジェクトをこの中に埋め込むことができる場合は true を設定します。ContainerControl クラスから継承されたクラスの階層が下記にあります。

Page および Section.Page オブジェクトは ContainerControl から直接継承されています。Page および Section.Page オブジェクトはテンプレートや最終ドキュメントのページを表します。

Section オブジェクトはすべてのバンドの基本オブジェクトで、CrossBand と BandBase は Section オブジェクトから継承されています。CrossBand はレポートを左から右に表示することができます。PageBand と RegularBand は BandBase から継承されています。PageBand は各ページに表示する PageHeader、PageFooter、PageOverlay の基本クラスです。RegularBand クラスはその他の全セクションの基本クラスです。この中に集計コレクション（Aggregates プロパティ）が格納されており、DataBand 型の MasterBand プロパティがあります。従って、RegularBand クラスから継承されているこれらのオブジェクトを DataBand セクションに配置することができます（DataBand 自体も含む）。これにより任意の入れ子レベルのマスター - サブレポートを作成することができます。

DetailBase クラスは RegularBand クラスから継承されています。このクラスはすべてのセクションの基本クラスで、ビジュアルコントロール要素を入れることができ、最終ドキュメントにセクションの内容を表示する Render メソッドがあります。Header と Footer は DetailBase から直接継承されています。これらは DataBand の見出しです。GroupBandBase は GroupHeader と GroupFooter の基本クラスで、式を設定する Group プロパティがあります。式を変更した場合、GroupHeader と GroupFooter に格納されているビジュアルコントロールが最終ドキュメントに出力されます。

では、VisualControl クラスについて説明します。

Shape クラスは VisualControl クラスから継承されています。Shape クラスはレポートにさまざまな形状を表示することができます。Box クラスも VisualControl クラスから継承されています。Box クラスは矩形領域に配置されるコントロール要素の基本クラスで、領域の枠を指定する Border プロパティとその領域の塗りつぶしを指定する Fill プロパティ、マージンを定義する Margins プロパティがあります。

BarCode、Picture、RichText, WinFormsControl、ZipCode は Box クラスから継承されています。BarCode はバーコードを出力するためのコントロール要素です。Picture はイメージを出力するためのコントロールです。RichText は RTF 形式でテキストを出力するコントロール要素です。WinFormsControl は Windows Forms コントロール要素を出力するためのコントロール要素です。ZipCode は Zip コードを出力するためのコントロール要素です。TextControl クラスは Box クラスから継承されています。TextControl はレポートにテキストを出力するための基本クラスで、テキストの回転角度を設定できる Angle プロパティ、出力するテキストに応じて自動的にオブジェクトの高さを変更できる CanGrow および CanShrink プロパティ、フォントを設定する Font プロパティ、テキストの位置合わせをする TextAlign プロパティ、テキストの塗りつぶしを設定する TextFill プロパティ、テキスト形式を設定する TextFormat プロパティがあります。TextBox は TextControl から継承されています。TextBox クラスにはテキストのスタティック値を設定する Text プロパティ、生成時にテキストを計算するための式を設定する Value プロパティがあります。TextBox クラスにはテキスト情報を検索するための FindText メソッドがあります。


Introduction

はじめに

このユーザーマニュアルの目的は、Report Sharp Shooter for Silverlight を使用するための主要なポイントを示し、このコンポーネントを使用するための情報を提供することです。Report Sharp Shooter for Silverlight を使用して Web アプリケーションを作成する方法を順を追って説明します。サービスの作成と設定方法、レポートのデザイン、そして最後にアプリケーションのページにレポートビューアを統合する方法がわかります。


Product Prerequisite

必要条件

サンプルを動かすには、次のソフトウェアがインストールされていることが前提です。

  • MS Visual Studio 2010
  • .Net 4.0
  • ASP.Net 4.0
  • Silverlight 4.0
  • Report Sharp Shooter for Silverlight 4.1.0.0 またはそれ以上


Creating Sample Application

サンプルアプリケーションの作成方法

手順1. 新しい Silverlight アプリケーションのプロジェクトを作成し、SampleApplication という名前にします。

プロジェクトの作成時に「Silverlight アプリケーションを新しい Web サイトで ホストする」にチェックを付け、Web プロジェクトの名前を SampleApplication.Web にします。

これで VS が、2つのプロジェクトを含んだ新しいソリューションを作成します。

手順2. 静的ポート 5555 を使用するための Web アプリケーションの設定
SampleApplication.Web のプロパティを開きます。

SampleApplication.Web のプロパティの Web タブで「ポートを指定する」にチェックを付けて、5555 を設定します。

手順3. WCF サービスの追加と設定

クライアントとサーバーの情報をやり取りできるようにするには特別なサービスが必要です。このサービスを作成する前に、SampleApplication.Web プロジェクトの参照設定を右クリックし、ポップアップメニューから「参照の追加」を選択して PerpetuumSoft.Reporting.Silverlight.Server.dll の参照を追加しなければなりません。

SampleApplication.Web プロジェクトに Silverlight 対応の WCF サービスを追加し、名前を ReportService.svc にします。
それを行うには、SampleApplication.Web を右クリックし、ポップアップメニューから「追加」->「新しい項目」を選択します。

「インストールされたテンプレート」の中から 「RSS for SL」 を選択し、Report Service Over HTTP テンプレートを追加します。

ReportService クラス （ReportService.svc.cs） のソースコードを開いて、次の using ディレクティブがない場合は追加します。

※ C# の場合

using PerpetuumSoft.Reporting.Silverlight.Server;

using PerpetuumSoft.Reporting.Silverlight.Server.Cache;

※ VB.NET の場合

Imports PerpetuumSoft.Reporting.Silverlight.Server

Imports PerpetuumSoft.Reporting.Silverlight.Server.Cache

ReportService クラスは、Silverlight のレポートビューアの WCF サービスの実装を格納する PerpetuumSoft.Reporting.Silverlight.Server.ReportServiceBase クラスを拡張します。

手順4. レポートテンプレートの作成

まず、データソース構造を作成します。デザイナでサービスを開きます。
それには、ReportService.svc.cs を右クリックしてポップアップメニューから「デザイナの表示」を選択します。

ツールボックスから Dataset を追加します（ツールボックスの Dataset をダブルクリックします）。

そして、「型指定のないデータセット」を選択します。

その後、データセットのノード （dataSet1） がデザイナに表示されます。

Tables プロパティのコレクション エディタ（Tables プロパティのボタンをクリック）を開きます。

dataSet1 に Customers テーブルを追加します（「追加」ボタンをクリックし、TableName プロパティの値を 「Customers」 に設定し、Name プロパティの値を 「customers」 に設定します）。その後、Columns コレクション エディタ（Tables コレクション エディタのプロパティグリッドのボタンをクリック）を開きます。

「追加」ボタンをクリックして列を2つ追加し、ColumnName プロパティの値をそれぞれ 「Name」 と 「Phone」 に設定します。

データ構造が決まったので、Customers テーブルにデータを設定します。

ソースコードを表示するには、デザイナの領域を右クリックし、コンテキストメニューから「コードの表示」をクリックします。

ReportService クラスの OnLoadData オーバーライドメソッドを使用してデータソースに値を設定してください。

[C# の場合]

protected override void OnLoadData(IDictionary<string, object> parameters, string reportName, PerpetuumSoft.Reporting.Components.ReportSlot reportSlot)

{

base.OnLoadData(parameters, reportName, reportSlot);

DataRow row = customers.NewRow();

row["Name"] = "Johnson Leslie";

row["Phone"] = "613-442-7654";

customers.Rows.Add(row);

row = customers.NewRow();

row["Name"] = "Fisher Pete";

row["Phone"] = "401-609-7623";

customers.Rows.Add(row);

row = customers.NewRow();

row["Name"] = "Brown Kelly";

row["Phone"] = "803-438-2771";

customers.Rows.Add(row);

}

[VB.NET の場合]

Protected Override Sub OnLoadData(ByVal parameters As System.Collections.Generic.IDictionary(Of String, Object), ByVal reportName As String, ByVal reportSlot As PerpetuumSoft.Reporting.Components. ReportSlot)

MyBase.OnLoadData(parameters, reportName, reportSlot)

Dim row As DataRow = customers.NewRow()

row("Name") = "Johnson Leslie"

row("Phone"] = "613-442-7654"

customers.Rows.Add(row)

row = customers.NewRow()

row("Name") = "Fisher Pete"

row("Phone") = "401-609-7623"

customers.Rows.Add(row)

row = customers.NewRow()

row("Name") = "Brown Kelly"

row("Phne") = "803-438-2771"

customers.Rows.Add(row)

End Sub

備考：

問い合わせた（クエリされた）ドキュメント情報とそのパラメータは OnLoadData メソッドのパラメータに渡されます。

では、ReportManager コンポーネントを追加します（ツールボックスで ReportManager をダブルクリックします）。このコンポーネントはレポート生成を行います。

その後、ReportManager のノード （reportManager1） がデザイナに表示されます。

ReportService サービスの ReportManager プロパティを設定します。 それには、プロパティ ウィンドウから ReportService のプロパティを開きます。

プロパティ一覧から reportManager1 を選択します。

では、レポートを作成します。
reportManager1 を右クリックして「エディタの起動」を選択してレポートマネージャのエディタを起動します。

レポートテンプレートを作成する前に、レポートを生成するデータソースを追加します。

「データソース」タブのデータバインドリストに 「Customers」 テーブルを追加します（「追加」ボタンをクリックし、「オブジェクト名の編集」の「名称」を "Customers" に、「値」にはコンボボックスから dataSet1.Customers を選択します）。

「レポート」タブで新しいオブジェクトを追加します（「追加」ボタンをクリックして InlineReportSlot を追加します）。

ReportName プロパティの値を CustomersReport に設定します。以後、レポートマネージャからこの名前でドキュメントを取得します。次に、「デザイナの起動」を押してレポートデザイナを立ち上げます。

[ファイル] ->[新規]メニューを選択すると、下図の画面に表示されているフォームが表示されます。

「新規」タブのリストから「標準のレポート」を選択し、「OK」 ボタンを押します。

画面に、「スタンダード ウィザード」ウィンドウが表示されます。

ドキュメントのパラメータを下図のように設定します。

「追加」ボタンを使ってデータソースを追加します。

データソースフィールドの近くのボタンをクリックし、表示されたツリービューから Customers をダブルクリックして選択します。

レポートに出力したいフィールドを選択します（フィールドの 「Name」 と 「Phone」 フィールドの両方を移動できるはずです）。

OK ボタンを押すと、テンプレートが作成されます。

では、テンプレートを保存してデザイナを閉じます。

手順5. Silverlight の ReportViewer コンポーネントの追加と設定

レポートを表示するために、Silverlight アプリケーションにレポートビューア コンポーネントを追加します。それには、ReportViewer を格納している PerpetuumSoft.Reporting.Silverlight.Client アセンブリの参照を追加してください（ソリューションエクスプローラの SampleApplication の参照設定を右クリックし、ポップアップメニューから「参照の追加」を選択してください）。

System.Windows.Controls.Toolkit.dll アセンブリの参照も追加します。

デザイナで MainPage.xaml を開き、PerpetuumSoft.Reporting.Silverlight.Client アセンブリの "rss" xml 名前空間を追加します。

次に、Grid セクションに ReportViewer コンポーネントを追加します。

<rss:ReportViewer x:Name="ReportViewer1"

ServiceUrl="http://localhost:5555/ReportService.svc"

ReportName="CustomersReport"/>

変更した後、UserControl セクションは次のようになるはずです。

<UserControl x:Class="SampleApplication.MainPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:rss="clr-namespace:PerpetuumSoft.Reporting.Silverlight.Client;assembly=PerpetuumSoft.Reporting.Silverlight.Client"

mc:Ignorable="d"

d:DesignHeight="300" d:DesignWidth="400">

<Grid x:Name="LayoutRoot" Background="White">

<rss:ReportViewer x:Name="ReportViewer1"

ServiceUrl="http://localhost:5555/ReportService.svc"

ReportName="CustomersReport"/>

</Grid>

</UserControl>

MainPage のソースコードを開いて、コード行を次のように変更/追加します。

[C# の場合]

public partial class MainPage : UserControl

{

public MainPage()

{

InitializeComponent();

Loaded += new RoutedEventHandler(MainPage_Loaded);

}

void MainPage_Loaded(object sender, RoutedEventArgs e)

{

ReportViewer1.RenderDocument();

}

}

[VB.NET の場合]

Pertical Public Class MainPage

nherits UserControl

Public Sub New()

InitializeComponent()

AddHandler Loaded, Address Of MainPage_Loaded

End Sub

Sub MainPage_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)

ReportViewer1.RenderDocument()

End Sub

End Class

備考：

RenderDocument() メソッドの呼び出しは、サーバーにある現在のレポートの生成し、レポートビューアに表示します。

手順6. アプリケーションの起動

SampleApplication.Web アプリケーションを「スタートアップ プロジェクト」に設定します。それには、SampleApplication.Web を右クリックし、ポップアップメニューから「スタートアップ プロジェクトに設定」を選択します。

Visual Studio のメインツールバーにある「デバッグ開始」ボタンをクリックしてアプリケーションを実行します。


Select Language

実行時の日本語設定について

PDF エクスポートダイアログなどの日本語表示の設定方法について説明します。

[1] 日本語ローカライズファイルの配置

次の Silverlight 用のサンプルプロジェクト内にあるファイル 「ja-JP.xml」

（インストール先がデフォルトの場合）

C:\Program Files\Perpetuum Software\Net ModelKit Suite\Samples\Report Sharp-Shooter\CSharp\SilverlightDemo_SL4(VS2010)\SilverlightDemo.Web\ClientBin\RSS_Res\ja-JP.xml

を

（このサンプルプロジェクトと同様な場所）

Silverlight の Web 側プロジェクトのフォルダの ClientBin フォルダ内の RSS_Res フォルダにコピーします。

[2] コードの追加

Silverlight クライアント側のプロジェクトのメインページのソースファイル、 例えば、サンプルプロジェクトの

（インストール先がデフォルトの場合）

C:\Program Files\Perpetuum Software\Net ModelKit Suite\Samples\Report Sharp-Shooter\CSharp\SilverlightDemo_SL4(VS2010)\SilverlightDemo\MainPage.xaml.cs

のようなソースコードに次のコードを追加します。

1) 名前空間の使用宣言で、次のコードを1行記述します。

//---------日本語化時、必要---------------

using System.Globalization;

//----------------------------------------

2) 最初に（メインページが）ロードされるタイミングなどで以下のコメント行の間のコードを1行記述します。

void MainPage_Loaded(object sender, RoutedEventArgs e)

{

//-------日本語化---------------------------------

System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja-JP");

//------------------------------------------------

reportViewer.RenderDocument();

}


Conclusion

終わりに

一般的な手順を踏んで、シンプルでかなり操作可能なアプリケーションができました。コードをたくさん記述する必要はなく、既存の実装を使用しただけです。大半はそれで十分です。Report Sharp Shooter for Silverlight の多数の動作面だけでなく、レポートビューアの外観も変更できるので、必要に応じてデフォルトの動作を大幅に変えることができます。


Destination and Basic Features

Instrumentation ModelKit の目的と基本的な機能

Instrumentation ModelKit は GUI で操作するメータやゲージ等を作成したり使用するためのコンポーネントです。

最近、大半の開発者は見た目が自然で利便性が高くかつ独創的なアプリケーションインターフェースを作成するために努力していますが、Instrumentation ModelKit はこれらを簡単に実装することができます。

専用のグラフィックエディタを使用することにより簡単に独創的な外観と機能を備えた新しいビジュアルンポーネントを作成することができます。進捗バー、メーター、ダイアル、スライダ、ゲージ、オドメータ、温度計、スイッチなどの一般的なコントロールや、マニピュレータ、スケール、専用デバイス、その他色々な計器のコンポーネントを作成することができます。

Instrumentation ModelKit の各コントロールは互いに関連して動作するビジュアルオブジェクトと非ビジュアルオブジェクトで構成されています。これらのオブジェクトを使用することにより、希望するビジュアルコントロールを作成することができます。

各オブジェクトのプロパティに式を設定できるので、マウスによる操作だけでなく現在の計器の状態に応じてプロパティを調整することができます。

OPCChannel コンポーネントを使用すれば、OPC 業界基準に合ったリアルタイムデータチャンネルが使用できます。読み取り専用モードと書き込みモードの両方でバインドできます。

作成した計器をファイルに保存して再利用することができます。


Instrumentation ModelKit Concepts

Instrumentation ModelKit のコンセプト

ModelKit の主なコンセプトは、開発者が専門な知識や高度な能力がなくても設定した条件に応じて独創的なコントロールを早く作成することができるということです。

Instrumentation ModelKit には計器の表示や管理を行うためのコンポーネントが含まれています。

Instrument ModelKit は階層構造を持った複合オブジェクトです。計器の構造には、外観や動作を指定するためのプリミティブがあります。計器を使用して何らかのコントロールオブジェクトをデザインできます。

計器の作成には、デザイナを使用します （Instrumentation ModelKit の配布パッケージにも含まれています）。デザイナを使用することにより、単純なオブジェクトを色々組み合わせて計器を作成します。また、プリミティブ（便利な基本図形）の各プロパティを設定することも可能です。式を使用してプリミティブを一緒にバインドしたりその複雑な機能を指定することができます。

計器に含まれているプリミティブを色々と組み合わせたり、色々なオブジェクトのプロパティをフレキシブルに設定したり、式を使用して開発者の要求に応じたコントロール要素を作成することができます。


Getting Started

基本的な使い方

Instrumentation ModelKit を使った、Windows フォームのコントロール要素の簡単な作成方法を説明します。

このサンプルは Instrumentation ModelKit の 「GettingStartedExample」 フォルダにあります。

Microsoft Visual Studio を起動し、新規プロジェクト（ここでは、C#アプリケーション）を作成します。

フォームに 「IndicatorWidget」 コンポーネントを貼り付けます。（このコンポーネントが Instrumentation ModelKit のツールボックスにない場合は、ユーザガイドの「インストール」を参照してください。） IndicatorWidget は計器を表示するためのビジュアルコンポーネントです。

次にこのコンポーネントに表示する計器を設定します。IndicatorWidget をダブルクリックしてデザイナを起動します。デザイナが立ち上がると、計器のテンプレートを選択するためのダイアログウィンドウ（下図）が表示されます。

ウィンドウ左側には、使用可能な計器のテンプレートが表示されます。テンプレートはすべて機能別にグループ化されています。では、希望する計器のテンプレートを選択します。

ここでは、「Dials」 グループの 「Dial6」 を選択します。

「OK」 をクリックすると選択したオブジェクトがデザイナに追加され、編集することができます。

計器の機能と外観を編集します。計器は個別のオブジェクトで構成されており、それぞれ独自の機能やプロパティがあります。デザイナでプロパティの追加、削除、編集が可能です。オブジェクトを操作するには、Instrument ウィンドウまたは計器の構造ツリーからマウスでオブジェクトを選択します。例えば、ダイアルの内側の円 （Circle2） を選択します。

ここで、Circle2のプロパティの編集や削除が行えます。「削除」ボタンを押して Circle2 を削除します。

では、スケール値の範囲を設定します。オブジェクトツリーから 「Scale1」 を選択し、プロパティウィンドウの Maximum プロパティの値を 100 に設定します。

次に、スケールに新しい色を設定します。Colorizer プロパティを選択し、色エディタを開きます。色エディタは次のように表示されます。

このエディタを使用して、スケールの各部分の色や境界範囲を指定できます。新しい境界範囲を追加したり既存の境界範囲を削除できます。境界範囲や色を指定するには、ポインタをマウスで移動したり、エディタ右側にあるボタンを使用します。スケールから最初のポインタを削除し、二つ目のポインタを80の手前までマウスで移動して変更し、色を黒にします。

「OK」 ボタンをクリックして変更を適用します。

次に、トラジェクトリの角度を設定します。それには、ツリーから Joint1 オブジェクトを選択します。プロパティグリッドの StartAngle プロパティと TotalAngle プロパティを変更するか、マウスで Joint1 オブジェクト（ジョイントの領域）を動かして変更します。

針の外観を変更していきます。デザイナを使用して針の大きさを変更します。80 を超えるとポインタの色が赤になるように機能を変更します。それには、Instrument.Styles プロパティに 「HotValue」 というスタイルを追加し、その Fill プロパティと Color プロパティにそれぞれ 「SolidFill」 と 「red」 を設定してください。 「Needle1」 を選択し、次の式を式エディタ（デザイナ下部）の Style プロパティに設定します。

if(Pressed, if(Slider1.Value >= 80, "HotValue", "NeedlePressed"), "Needle")

この式は指定した条件に従って Needle1 オブジェクトに HotValue というスタイル名を指定します。変数 「Pressed」 はマウスがクリックされたことを表します。

Circle3 オブジェクトにも同じような式を記述します。式エディタはデザイナ下部に表示されます。 「スクリプトのチェック」 [image] ボタンをクリックして記述した式が正しいか確認してください。

スライダの現在値を表示するために、新しいオブジェクトを追加します。まず、「Slider1」 に 「Label」 オブジェクトを追加し、次の式を式エディタの Text プロパティに設定します。

format(Slider1.Value, "##0.0")

この式は、マスクどおりにフォーマットされた 「Slider1」 の値が 「Label1」 の Text プロパティに指定されることを示しています。

この計器を後で使えるように、[ファイル/保存]メニューを使用してファイルに保存します。画面左下の 「OK」 ボタンをクリックして、デザイナを終了します。最終的な計器はIndicatorWidget コンポーネントで使われます。

IndicatorWidget コンポーネントに Value プロパティを取得するスライダを指定します。それには、プロパティウィンドウの SliderName プロパティに 「Slider1」 を設定します。

IndicatorWidget の現在値を表示するために、フォームに Label コンポーネントを貼り付けます。 IndicatorWidget1 に ValueChanded イベントハンドラを記述します。

private void indicatorWidget1_ValueChanged(object sender, PerpetuumSoft.Framework.Model.PropertyEventArgs args)

{

  label1.Text = "indicatorWidget1.Value = " + indicatorWidget1.Value.ToString();

}

アプリケーションの実行画面です。


The General Instrument Model

計器について

計器は階層構造を持った複合オブジェクトです。計器に任意のオブジェクトを含めることができます。オブジェクトは構造的に「複合」と「単一」の2つのグループに分けることができます。複合オブジェクトは他の任意のオブジェクトを含めることができるオブジェクトです。

オブジェクトは機能的に「ビジュアルオブジェクト」と「非ビジュアルオブジェクト」に分けることができます。ビジュアルオブジェクトは計器の外観に関するものです。非ビジュアルオブジェクトは計器の機能性に関するだけでなく、オブジェクトをバインドしたりグループ化するためのものです。オブジェクトを色々組み合わせて計器に含めることができます。しかし実際は、ある特定の値を表示したり指定する計器が活用されます。

このようなオブジェクトは次のようにして作成されます。値の範囲を指定したり表示するスケール（1つまたは複数）が計器に含められます。現在値を表示（指定する）する複数のスライダが含められます。別のフォーム（例：テキスト行のフォーム）に、値を表示するオブジェクトを含めることもできます。

スケールを作成するには、スケールを配置させる境界線を表す 「Trajectory」 オブジェクトとスケールの範囲を指定する 「Scale」 オブジェクトを使用します。トラジェクトリを指定するには、ITrajectory インターフェースをサポートする、「Guide」 オブジェクト（線状のトラジェクトリ）や 「Joint」 オブジェクト（円状のトラジェクトリ）を使用します。スケールの値を表示させるには、ScaleElement 基本クラスから継承された、「NumericLabels」、「ScaleLabels」、「TextLabels」、「Ticks」 クラスなどのオブジェクトを使用します。スライダを指定するには、スケールの現在値を表示し、その値をマウスで変更できる 「Slider」 オブジェクトを使用します。スライダの表記には、さまざまなビジュアルオブジェクト（例：値マーカや目盛など）を使用でき、スライダに式でバインドさせます。

例えば簡単な計器を作成するには、次のような構造を使用します。

上記のルートオブジェクトは 「Instrument」 で、この中に円状のトラジェクトリ （「Joint1」）、そして Joint1 の中に 「Scale1」 が含まれています。スケールの表記には、Ticks1 （目盛）や NumericLabels1 （値ラベル）を使用します。スライダ （Slider1） はスケールに沿って移動することができます。針 （Needle1） を使ってスライダの現在値を表します。上記の構造は、下図に示されているような複数のスケールやスライダを含んでいる Instrument と似ています。


Elements Hierarchy

オブジェクトの階層

計器の作成時に使用するクラス階層について説明します。

Instrumentation ModelKit のすべてのオブジェクトの基本クラスは Element クラスです。これは System.Object から継承されており、次のインターフェースを実装します。

インターフェイス | 説明
PerpetuumSoft.Framework.Model.IElement | Element オブジェクトが、あるドキュメントオブジェクトモデルのオブジェクトであることを示します
PerpetuumSoft.Framework.Model.Runtime.IActiveElement | オブジェクトがマウスイベントを処理できることを示します
PerpetuumSoft.Framework.Expressions.IExpressionSite | オブジェクトが式の関数やオブジェクトソースであることを示します
System.IDisposable | 割り当てられたアンマネージ リソースを解放するメソッドを定義します

Element クラスにはオブジェクトに名前を指定する Name プロパティと、オブジェクトの描画時に使用する Style プロパティ、Fill プロパティ、Stroke プロパティなどがあります。

Element クラスは Composite、ScaleElement、Circle、CircularShape、LineElement、RectangleElement クラスの親です。

Circle クラスは円形を表します。

CircularShape クラスは中心や半径を含んでいるすべての形の基本クラスを示します。

LineElement クラスは開始点と終了点を持つすべての形の基本クラスです。

RectangleElement クラスは中心、幅、高さを含んでいるすべての形の基本クラスです。

ScaleElement クラスはスケールに配置された全オブジェクトの基本クラスを示します。

Composite クラスは全コンテナ要素、つまり必然的に他のオブジェクトを含めることが可能なオブジェクトの基本クラスです。

●Composite クラス

Composite クラスは、このクラスが他のオブジェクトのコンテナであることを示す ICompositeElement インターフェースを実現し、これらのオブジェクトへのアクセスを提供します。Instrument、Group、Scale、SliderBase、DockableTrajectory クラスはこの Composite クラスから継承されています。

Instrument クラスのオブジェクトは全オブジェクトの階層型のルートオブジェクトを表し、それがルートオブジェクトであることを示す IRootElement インターフェースを実現します。

Group クラスのオブジェクトは他のオブジェクトをグループ化するための「非ビジュアル」要素です。

Scale クラスのオブジェクトはスケールの範囲を指定する「非ビジュアル」要素です。

SliderBase クラスはスライダの基本クラスを表します。スライダには現在値があり、マウスで変更できます。スライダが含まれているトラジェクトリから少し離れたところにあるスライダの現在値のポイントを定義できます。Slider クラス（このオブジェクトは現在値を表す非ビジュアルオブジェクトです）は SliderBase クラスから継承されています。

Guide クラスと Joint クラスはこの2つのクラスがトラジェクトリを表現することを示す ITrajectory インターフェースを実現します。Guide クラスは線状のトラジェクトリです。Joint クラスは弧のトラジェクトリです。

DockableTrajectory 抽象クラスはこのクラスが Trjectories を表現することを示す ITrajectory インターフェースを実現します。Guide は線状のトラジェクトリです。Joint は円状のトラジェクトリです。

●ScaleElement クラス

ScaleElement クラスの派生クラスはスケールの表記に使用するクラスです。

ScaleMarksBase クラスはスケールにマーカを表します。このクラスは Ticks クラスや ScaleMarks クラスの基本クラスです。Ticks クラスのオブジェクトはスケールの目盛です。ScaleMarks クラスのオブジェクトはスケールのマーカです。

ScaleLabelsBase 抽象クラスはスケールにテキストラベルを表示します。このクラスは ScaleLabels クラス、CustomLabels クラス、ScaleTitle クラスの基本クラスです。ScaleLabels クラスはスケールの範囲に数値ラベルを表示します。CustomLabels クラスはスケールのテキストラベルのコレクションを表します。ScaleTitle クラスはスケールのタイトルを表します。

ValuePresenterScaleElement 抽象クラスの派生クラスはスケールの値を表示するためにあります。Tank クラスはタンクの計量を目盛線で表します。LevelBase 抽象クラスはLinearLevel クラスと RangedLevel クラスの基本クラスです。LinearLevel は計量範囲を縦棒で表示します。RangedLevel はスケール値を異なる幅で表します。

●CircularShape クラス

CircularNotches、Polygon、Gear、Highlight クラスは CircularShape クラスから継承されます。

CircularNotches クラスのオブジェクトはノッチ（切り込み）を描画します。これはスライダの外観のデザインに使用します。

Polygon クラスは多面体を表し、面の数を表す Sides プロパティがあります。星型の Star クラスは Polygon クラスから継承されています。

Gear クラスはギアを表します。

Highlight クラスはハイライトをつけるためにあります。

●LineElement クラス

LineElement クラスは Line、Needle 、Spring 、LinearNotches クラスの基本クラスです。Line クラスは線を表します。

Needle クラスは針を表し、針の形は NeedlePoints プロパティを使用して指定します。スライダの針として使用します。

Spring クラスはスプリングを表します。

LinearNotches クラスのオブジェクトは線形ノッチ（切り込み線）を描画します。スライダの外観のデザインに使用します。

●RectangleElement クラス

Ellipse、Rectangle、RoundedRectangle、Frame、ArcBase、Picture、PictureSet、Label、Digits、Odometer クラスは RectangleElement クラスから継承されます。

Ellipse クラスは楕円を表します。

Rectangle クラスは四角形を表します。

RoundedRectangle クラスは角丸四角を表します。

Frame クラスは四角形の枠を表します。

ArcBase クラスは、弧を表す Arc クラス、パイスライスを表す Pie クラス、ドーナツ状の一部を表す RingSector クラスの基本クラスです。

Picture クラスのオブジェクトは Image プロパティに指定したイメージを表示するためにあります。

PictureSet クラスのオブジェクトは指定したイメージのコレクションからイメージを1つ表示するためにあります。

Label クラスのオブジェクトはラベルを表示するためにあります。

Digits クラスのオブジェクトはデジタル表示のためにあります。

Odometer クラスのオブジェクトは機械メータ（オドメータ）を表示するためにあります。


Description of General Properties

一般的なプロパティについて

Instrument クラスのすべての派生オブジェクト特有のプロパティの一覧です。

プロパティ名 | 説明
Name | 計器全体で一意の名前を指定します
Fill | オブジェクトの描画に使用する塗りつぶしを指定します
Stroke | オブジェクトの描画に使用する線のトレーススタイルを指定します
Style | オブジェクトの描画に使用するオブジェクトのスタイル名を指定します。 利用可能なスタイルは、オブジェクトが格納されている計器の Styles プロパティに指定します。オブジェクトに Fill/Stroke プロパティが指定されていない場合、Style プロパティで指定したスタイルが使用されます。
Smooth | 出力イメージの品質を指定します
Visible | オブジェクトの表示/非表示を指定します
Active | オブジェクトがマウスイベントを認識するかどうかを示します
BreakEventBubbling | その先の処理を行うために親オブジェクトにマウスイベントを渡すかどうかを示します
RecalculateAll | オブジェクトの状態が変わった場合、どのオブジェクトに対して式の再計算を行うかを示します。 False の場合、選択したオブジェクトとその中に含まれているすべてのオブジェクトに対してのみ式が再計算されます。True の場合は計器の全オブジェクトの式が再計算されます。

マウスからイベントを受け取るプロセスとそのイベント処理は次のように行われます。

オブジェクト上にマウスがある場合、ビジュアルオブジェクトはマウスイベントを受け取ります。ビジュアルオブジェクトはこれらのイベントを処理し、BreakEventBubbling プロパティが False の場合は処理するためにイベントをその親に渡します。従って、マウスから受け取ったイベントはビジュアルオブジェクトからドキュメントツリーにまで渡されます。非ビジュアルオブジェクトは含んでいるビジュアルオブジェクトからのみ、マウスイベントを受け取ることができます。


The Description All Elements and Their Properties

すべてのコンポーネントとそのプロパティについて

すべてのコンポーネントには、ユーザガイドの「一般的なプロパティについて」で説明したプロパティがあります。ここでは、計器を作成するために使用するコンポーネントについて説明します。

Instrument コンポーネント

Instrument コンポーネントは計器を作成するための基本コンポーネントです。Instrument コンポーネントには次のプロパティがあります。

プロパティ | 説明
Size | 計器の作業領域の大きさを表します
Enabled | 計器がユーザーの動作に反応するかどうかを示します
Focused | 計器がフォーカスされているかどうかを示します

これらの値は計器の開発時に任意に設定できます。計器を 「Widget」 に表示する場合、Widget の Enabled プロパティや Focusedプロパティに応じて上記のプロパティが設定されます。これらのプロパティは 「Widget」 （この中に計器が表示されます）の状態に応じて計器の外観や動作を実装します。

次のプロパティは計器のデザイン時にのみ使用され、計器と一緒に保存されます。

プロパティ | 説明
SnapToGrid | グリッドに合わせるかどうかを定義します
ShowGrid | グリッドを表示するかどうかを定義します
GridStep | グリッドの大きさを指定します
MeasureUnit | 計測単位を定義します

Joint コンポーネント

Joint コンポーネントは弧のトラジェクトリで、ダイアルを作成するために使用します。

プロパティ | 説明
Center | 弧の中心を指定します
Radius | 弧の半径を指定します
StartAngle | 弧の開始角度を指定します
TotalAngle | 弧の全角度を指定します

*角度は水平軸から時計周りです。

Joint コンポーネント

Guide コンポーネント

Guide コンポーネントは線状のトラジェクトリで、線状のスケールを作成するために使用します。

プロパティ | 説明
StartPoint | 線の開始点を指定します
EndPoint | 線の終了点を指定します

Guide コンポーネント

Scale コンポーネント

Scale コンポーネントは非ビジュアルコンポーネントです。

プロパティ | 説明
Minimum | 変動範囲（最小値）を指定します
Maximum | 変動範囲（最大値）を指定します

スケール値の変動範囲を指定します。スケール表記のために、スケールに Ticks コンポーネント（目盛）、NumericLabels コンポーネント（値ラベル）、TextLabels コンポーネント（テキストラベル）を含めます。

Slider コンポーネント

Slider コンポーネントは非ビジュアルコンポーネントです。

プロパティ | 説明
Value | スライダが含まれているスケールに現在値を指定します
MaxLimit | 値の変動範囲（上限）を指定します
MinLimit | 値の変動範囲（下限）を指定します
UseLimit | 指定した変動範囲を使用するかどうかを定義します

*MaxLimit プロパティと MinLimit プロパティは絶対値と相対値の両方を処理することができます。

Slider コンポーネントはマウスイベントを次のように処理します。マウスポインタの現在位置とトラジェクトリの形状に応じて Value プロパティを同期させて（マウスイベントを）処理します。Slider コンポーネントは非ビジュアルコンポーネントなので、マウスから直接イベントを受け取ることができません。マウスイベントは Slider に含まれているビジュアルコンポーネントから渡されるので、Slider コンポーネントをマウスの移動に反応させるにはビジュアルコンポーネントを含めなければなりません。

スライダの現在値を表記するには、さまざまなビジュアルコンポーネントをスライダに含めて式でスライダにバインドさせて使用できます。

Group コンポーネント

Group コンポーネントは非ビジュアルコンポーネントで、他のコンポーネントをグループ化するために使用します。

CustomLabels コンポーネント

CustomLabels コンポーネントはスケール値にバインドされていないテキストラベルをスケールに表示します。スケール値同様、テキストラベルも Labels プロパティのコレクションに指定されます。スケール値は絶対値と相対値の両方を（スケール範囲からのパーセントで）指定できます。

プロパティ | 説明
Labels | Auto の場合、ラベルは Origin プロパティに設定した基準点に従ってスケールに均等に配置されます
Distance | スケールとカスタムラベルの間隔を定義します
Padding | 境界線から CustomLabels コンポーネントまでの間隔を定義します
Dock | Padding プロパティに指定した間隔に従って CustomLabels コンポーネントの相対位置を定義します
OddLabelDistance | 奇数ラベルの間隔を偶数ラベルからどれくらいあけるかを定義します
Position | ラベルの位置合わせを定義します（例：Near、Center、Far）
TextAlingment | スケール値に対するラベルの配置場所を定義します（例：Near、Center、Far）
Angle | テキストの角度を定義します
TextRotationMode | テキストの向きを定義します
ItemMargins | ラベル領域のマージンからテキストまでの間隔を定義します
ShowSuperposableLabels | ラベルを重ね合わせて表示するかどうかを定義します
MaxLimit/MinLimit | ラベルを指定した範囲にだけ表示する場合に境界範囲を指定します
UseLimit | 指定した範囲にのみカスタムラベルを表示します

CustomLabels コンポーネント

ScaleLabels コンポーネント

ScaleLabels コンポーネントはスケールに数値ラベルを表示します。値はスケールに設定した範囲内に Step プロパティに指定した間隔で表示されます。ラベルはスケールに均等に配置されます。

プロパティ | 説明
Step | ラベルの間隔を定義します。Auto の場合、ラベルの分割数が Divisions プロパティに設定されます。
Origin | 基準点を定義します
Divisions | ラベルの（分割）数を指定します
UseRoundValues | True の場合、数値ラベルの値は小数点以下の桁数が丸められて表示されます（False の場合は小数点以下の桁数がすべて表示されます）。 分割数は Divisions プロパティの値よりも少ないか等しくなります。
Distance | スケールとラベルの間隔を定義します
Padding | 境界から ScaleLabels コンポーネントまでの間隔を定義します
Dock | Padding プロパティに指定した間隔に従って、スケールラベルの相対位置を定義します
OddLabelDistance | 奇数ラベルの間隔を偶数ラベルからどれくらいあけるかを定義します
Position | ラベルの配置を定義します（例：Near、Center、Far）
TextAlignment | スケール値に対するラベルの位置を定義します（例：Near、Center、Far）
Angle | ラベルの角度を定義します
TextRotationMode | ラベルの向きを定義します
ShowSuperposableLabels | ラベルを重ね合わせて表示するかどうかを定義します
ItemsMargins | ラベル領域のマージンからテキストまでの間隔を定義します
MaxLimit/MinLimit | ラベルを指定した範囲にだけ表示する場合に境界範囲を指定します
UseLimit | 指定した範囲にのみスケールラベルを表示します

ScaleLabels コンポーネント

ScaleTitle コンポーネント

ScaleTitle コンポーネントはスケールタイトルを表します。

プロパティ | 説明
Text | タイトルテキストを定義します
Origin | 基準点を定義します
Padding | 境界から ScaleTitle コンポーネントまでの間隔を定義します
Dock | Padding プロパティに設定した間隔に従って、ScaleTitle コンポーネントの相対位置を指定します
TextAlignment | タイトルの位置合わせを定義します
Angle | テキストの角度を定義します
TextRotationMode | テキストの向きを定義します

ScaleTitle コンポーネント

Ticks コンポーネント

Ticks コンポーネントはスケールに目盛を表示します。 値はスケールに指定した範囲内に Step プロパティに指定した間隔で表示されます。副目盛は主目盛と主目盛の間に表示されます。主目盛は Ticks コンポーネントの描画時にスケールの線に均等に配置されます。

プロパティ | 説明
Step | 主目盛の間隔を定義します
Divisions | 主目盛の（分割）数を定義します
Origin | 基準点を定義します
UseRoundValues | True の場合、スケールの主目盛には小数点以下の桁数が丸められた値が表示されます（False の場合は小数点以下の桁数がすべて表示されます）。 Divisions プロパティの値と同じかそれより少なくなります。
Length | 主目盛の目盛の長さを定義します
SubDivisions | 副目盛の数を定義します
SubLength | 副目盛の長さを定義します
SubTicksPosition | 主目盛と副目盛の相対位置を定義します
Distance | スケールと目盛の間隔（インデント量）を定義します
Padding | 境界から Ticks コンポーネントまでの間隔を定義します
Dock | Padding プロパティに設定した間隔に従って Ticks コンポーネントの位置を定義します
MaxLimit/MinLimit | 目盛を指定した範囲にだけ表示する場合に境界範囲を定義します
UseLimits | 指定した範囲にのみ目盛を表示します

Ticks コンポーネント

ScaleMarks コンポーネント

ScaleMarks コンポーネントはスケールにマーカを表します。値はスケールに設定した範囲内に、Step プロパティに指定した間隔で表示されます。副マーカは主マーカと主マーカの間に表示されます。 マーカは ScaleMarks コンポーネントの描画時にスケールに均等に配置されます。

プロパティ | 説明
Shape | マーカの形状を定義します
Step | マーカの間隔を定義します。Auto の場合、マーカの分割数が Divisions プロパティに設定されます。
Divisions | 主マーカの（分割）数を定義します
Origin | 基準点を定義します
MarkSize | 主マーカの大きさを定義します
SubDivisions | 副マーカの（分割）数を定義します
SubMarkSize | 副マーカの大きさを定義します
SubTicksPosition | 主マーカと副マーカの相対位置を定義します
Distance | スケールとマーカの間隔（インデント量）を定義します
Padding | 境界からマーカまでの間隔を定義します
Dock | Padding プロパティに指定した間隔に従ってマーカの相対位置を定義します
MarksAngle | マーカの角度を定義します
MaxLimit/MinLimit | マーカを指定した範囲にだけ表示する場合に境界範囲を定義します
UseLimit | 指定した範囲にのみマーカを表示します

ScaleMarks コンポーネント

RangedLevel コンポーネント

RangedLevel コンポーネントはスケールに例えば強弱、高低などの度合いを表示するためのものです。例として、タコメータでスピードの安全/危険範囲を表すために使用されます（RangedLevel コンポーネントの使用例が Instrumentation ModelKit の SamplesCenter サンプルにあります）。

プロパティ | 説明
Value | RangedLevel コンポーネントをいくつ（最大値）まで表示するかを定義します
StartWidth | RangedLevel コンポーネントの開始幅を設定します
EndWidth | RangedLevel コンポーネントの終了幅を定義します
Fill | 塗りつぶしの色を定義します。
Colors | Fill プロパティが設定されていない場合、Colors プロパティに指定した色で描画されます
StartColor/EndColor | Colors プロパティが設定されていない場合、StartColor プロパティと EndColor プロパティに設定した色で描画されます
Divisions | RangedLevel コンポーネントの（分割）数を定義します
DivisionsStroke | 分割線の種類を定義します
AlignmentMode | スケールに RangedLevel コンポーネントをバインドする方法を指定します
MaxLimit/MinLimit | 指定した範囲にだけ表示する場合に境界範囲を定義します

RangedLevel コンポーネント

LinearLevel コンポーネント

LinearLevel コンポーネントは線スケールに例えば強弱、高低などの度合いを表示するためのものです。

プロパティ | 説明
Value | コンポーネントをいくつ（最大値）まで表示するかを設定します
Divisions | 分割数を定義します
DivisionsStroke | 分割線の種類を定義します
Fill | コンポーネントの塗りつぶしの色を定義します
Colors | Fill プロパティが設定されていない場合、Colors プロパティに設定した色で描画されます
StartColor/EndColor | Colors プロパティが設定されていない場合、StartColor/EndColor プロパティに設定した色で描画されます
Width | LinearLevel コンポーネントの幅を定義します
StartCap/EndCap | LinearLevel コンポーネントの開始スタイルと終了スタイルを定義します
Effect3D | LinearLevel コンポーネント全体の表示スタイルを定義します
ShowAsThermometer | LinearLevel コンポーネントを温度計として表示するかどうかを定義します。つまり、スケールの始めに温度計の玉 （PocketRadius プロパティで玉の半径を設定）を付けて表示されます
PocketRadius | 温度計の玉の半径を設定します
Dock | LinearLevel コンポーネントのスケールへのドッキング型を定義します

LinearLevel コンポーネント

Tank コンポーネント

Tank コンポーネントはビジュアルコンポーネントで、液体の入ったタンクを表します。

プロパティ | 説明
Width | タンクの幅を定義します
Depth | タンクの深さを定義します
TankWidth | 容器の厚さを定義します
TankColor | タンクの色を定義します
LiquidColor | 液体の色定義します
Effect3D | Tank コンポーネント全体の表示スタイルを定義します
Dock | Tank コンポーネントのスケールへのドッキング型を定義します

Tank コンポーネント

Circle コンポーネント

Circle コンポーネントはビジュアルコンポーネントで、円を表します。

プロパティ | 説明
Center | Circle コンポーネントの中心を定義します
Radius | Circle コンポーネントの半径を定義します

Circle コンポーネント

Ellipse コンポーネント

Ellipse コンポーネントはビジュアルコンポーネントで、楕円を表します。

プロパティ | 説明
Center | Ellipse コンポーネントの中心を定義します
Size | Ellipse コンポーネントの大きさを定義します
Angle | 楕円の回転角度を定義します（中心から時計回り）

Ellipse コンポーネント

Rectangle コンポーネント

Rectangle コンポーネントはビジュアルコンポーネントで、四角形を表します。

プロパティ | 説明
Center | Rectangle コンポーネントの中心を定義します
Size | Rectangle コンポーネントの大きさを定義します
Angle | Rectangle コンポーネントの回転角度を定義します（中心から時計回り）

Rectangle コンポーネント

RoundedRectangle コンポーネント

RoundedRectangle コンポーネントはビジュアルコンポーネントで、角丸四角形を表します。

プロパティ | 説明
Center | RoundedRectangle コンポーネントの中心を定義します
Size | RoundedRectangle コンポーネントの大きさを定義します
Radius | RoundedRectangle コンポーネントの角を丸めるための半径を定義します
Angle | RoundedRectangle コンポーネントの回転角度を定義します（中心から時計回り）

RoundedRectangle コンポーネント

Arc コンポーネント

Arc コンポーネントはビジュアルコンポーネントで、（楕円状の）弧を表します。

プロパティ | 説明
Center | 楕円の中心を定義します
Size | 楕円の大きさを定義します
StartAngle | 弧の開始角度を定義します
SweepAngle | 弧の終点までの角度を定義します
Angle | Arc コンポーネントの回転角度を定義します（中心から時計回り）

Arc コンポーネント

Pie コンポーネント

Pie コンポーネントはビジュアルコンポーネントで、パイを表します。

プロパティ | 説明
Center | パイの中心を定義します
Size | パイの大きさを定義します
StartAngle | パイの開始角度を定義します
SweepAngle | パイの終点までの角度を定義します
Angle | パイの回転角度を定義します（中心から時計回り）

Pie コンポーネント

RingSector コンポーネント

RingSector コンポーネントはビジュアルコンポーネントで、（楕円状の）ドーナツ型を表します。

プロパティ | 説明
Center | ドーナツの楕円の中心を定義します
Size | ドーナツの楕円の大きさを定義します
StartAngle | ドーナツ型の開始角度を定義します
SweepAngle | ドーナツ型の終点までの角度を定義します
InternalRadius | 内輪と外輪の半径の比率を定義します
Angle | ドーナツ型の回転角度を定義します（中心から時計回り）

RingSector コンポーネント

Line コンポーネント

Line コンポーネントはビジュアルコンポーネントで、線を表します。

プロパティ | 説明
StartPoint | 開始点を定義します
EndPoint | 終了点を定義します

Line コンポーネント

Needle コンポーネント

Needle コンポーネントはビジュアルコンポーネントで、針を表します。スライダの現在値を示すために使用します。

プロパティ | 説明
StartPoint | 針の開始点を定義します
EndPoint | 針の終点を定義します
StartWidth | 針の底辺の幅を定義します
EndWidth | 針の先端の幅を定義します
NeedlePoints* | 複雑な針の形を指定します
ShowMode | 針の表示モードを定義します

*NeedlePoints プロパティは針の中間ポイントの記述子のコレクションです。各中間ポイントの記述子は指定したポイントの針幅、針の底辺から指定したポイントまでの距離と針の長さの割合で指定されます（下図参照）。

Needle コンポーネント

Spring コンポーネント

Spring コンポーネントはビジュアルコンポーネントで、スプリングを表します。

プロパティ | 説明
StartPoint | 開始点を定義します
Amplitude | スプリングの幅を定義します
CoilCount | コイル数を定義します

Spring コンポーネント

Star コンポーネント

Star コンポーネントはビジュアルコンポーネントで、星型を表します。

プロパティ | 説明
Center | 星型の中心を定義します
Radius | 星型の外輪半径を定義します
InternalRadius | 星型の内輪半径を定義します
Sides | 星型の角の数を定義します
Angle | 星形の回転角度を定義します（中心から時計回り）

Star コンポーネント

Polygon コンポーネント

Polygon コンポーネントはビジュアルコンポーネントで、正多角形を表します。

プロパティ | 説明
Center | 多角形の内接円の内心を定義します
Radius | 多角形の外接円の半径を定義します
Side | 多角形の辺の数を定義します
Angle | 多角形の回転角度を定義します（中心から時計回り）

Polygon コンポーネント

Label コンポーネント

Label コンポーネントはビジュアルコンポーネントで、テキストの出力に使用します。

プロパティ | 説明
Text | 出力テキストを定義します
Center | テキストを表示する領域の中心を定義します
Size | テキストを表示する領域の大きさを定義します
TextAlign | 表示領域のテキストの位置合わせを定義します
Font | テキストのフォントを定義します
Angle | テキストの回転角度を定義します（中心から時計回り）

Label コンポーネント

Frame コンポーネント

Frame コンポーネントはビジュアルコンポーネントで、傾斜のついた枠を表します。

プロパティ | 説明
Center | 枠の中心を定義します
Size | 枠の大きさを定義します
BevelStyle | 枠のスタイルを定義します
DarkColor | 枠のダークカラーを定義します
LightColor | 枠のライトカラーを定義します
OuterColor | 外枠の色を定義します
InnerColor | 内枠の色を定義します
Angle | 枠の回転角度を定義します（中心から時計回り）

Frame コンポーネント

Picture コンポーネント

Picture コンポーネントはイメージを表示するために使用します。

プロパティ | 説明
Image | イメージを定義します
Center | イメージの中心を定義します
Size | イメージの大きさを定義します
Angle | イメージの回転角度を定義します（中心から時計回り）

Picture コンポーネント

PictureSet コンポーネント

PictureSet コンポーネントは指定した複数のイメージの中から1つのイメージを表示するために使用します。

プロパティ | 説明
Images | イメージのコレクションを指定します
ImageIndex | 出力イメージの数を定義します
Center | イメージの中心を定義します
Size | イメージの大きさを定義します
Angle | イメージの回転角度を定義します（中心から時計回り）

CircularNotches コンポーネント

CircularNotches コンポーネントは円形ノッチ（刻み目）を作成します。コントロール要素のデザインとして使用され、Center プロパティと Radius プロパティに設定した円の内側に表示されます。

プロパティ | 説明
Center | CircularNotches コンポーネントの円の中心を定義します
Radius | CircularNotches コンポーネントの円の半径を定義します
Count | ノッチの数を定義します
Length | ノッチの長さを定義します
DarkColor | ノッチのダークカラーを定義します
LightColor | ノッチのライトカラーを定義します
Angle | ノッチの回転角度を定義します（中心から時計回り）

CircularNotches コンポーネント

LinearNotches コンポーネント

LinearNotches コンポーネントは線形ノッチ（刻み目）を作成します。コントロール要素のデザインとして使用され、StartPoint プロパティと EndPoint プロパティに指定した線に平行に配置されます。

プロパティ | 説明
StartPoint | ノッチの開始点を定義します
EndPoint | ノッチの終了点を定義します
Width | ノッチの端から端までの距離を定義します
Count | ノッチの数を定義します
DarkColor | ノッチのダークカラーを定義します
LightColor | ノッチのライトカラーを定義します

LinearNotches コンポーネント

Digits コンポーネント

Digits コンポーネントはデジタルインジケータで、値をデジタル表示します。値は7セグメントディスプレイで表示されます。

プロパティ | 説明
Text | インジケータに表示するテキストを定義します。 0から9までの数値、点、ダッシュ、コロン、スペースを使用できます。
Center | インジケータの中心を定義します
Size | インジケータの大きさを定義します
Angle | インジケータの回転角度を定義します（中心から時計回り）
SegmentThickness | デジタル数字の線の太さを定義します
SegmentSpace | デジタル数字のセグメントの間隔を定義します
DigitWidth | デジタル数字の表示幅を定義します
DigitHeight | デジタル数字の高さを定義します
DigitSpace | 数値と数値の間隔を定義します
ActiveColor | 数値の色を定義します
InactiveColor | デジタル表示のアクティブではないセグメントの色を定義します

Digits コンポーネント

Odometer コンポーネント

Odometer コンポーネントは機械のメータで、値を表示します。指定した値は各メータ盤に表示されます。

プロパティ | 説明
Value | 表示する数値を指定します
Center | オドメータの中心を定義します
Size | オドメータの大きさを定義します
Angle | オドメータの回転角度を定義します（中心から時計回り）
Font | フォントを定義します
FirstDigitBackFill | 最小桁のディスクの色を定義します
FirstDigitForeFill | 最小桁の数字の色を定義します
BackFill | 最小桁以外のメータ盤の色を定義します
ForeFill | 最小桁以外のメータ盤に表示される記号の色を定義します

Odometer コンポーネント

Highlight コンポーネント

Highlight コンポーネントは円形の計器にハイライトをつけるために使用します。

プロパティ | 説明
Center | ハイライトの中心座標を定義します
Radius | ハイライトの半径を定義します
Angle | ハイライトの開始角度を定義します
SweepAngle | ハイライトの終点までの角度を定義します
K | ハイライトの幅を定義します

Highlight コンポーネント

Gear コンポーネント

Gear コンポーネントはギアを表すために使用します。

プロパティ | 説明
Center | ギアの中心座標を定義します
Radius | ギアの半径を定義します
Count | ギアの歯車の数を定義します
Depth | 歯車の大きさを定義します
DimentionsRatio | 歯車の相対幅を定義します

Gear コンポーネント

DigitalText コンポーネント

DigitalText コンポーネントはテキストを表示するために使用します。 インジケータのテキストは四角形のセグメントで表わされます。

プロパティ名 | 説明
Text | インジケータに表示するテキストを指定します
Center | インジケータの中心を定義します
Size | インジケータの大きさを定義します
Angle | インジケータの回転角度を定義します（中心から時計回り）
ActiveColor | アクティブなセグメントの色を指定します
InactiveColor | アクティブではないセグメントの色を指定します
SegmentSize | セグメントの縦横の大きさを指定します
SegmentSpaces | セグメントの間隔を指定します
TextHorizontalOffset | インジケータの左端からのテキストのオフセットを指定します
TextVerticalOffset | インジケータの上からのテキストのオフセットを指定します
Font | フォントを指定します

DigitalText コンポーネント

フィードバック：info@newtone.co.jp

Copyright(c) by Perpetuum Software
Japanese localization by NEWTONE Corporation


Destination and General Principles of the Expressions Use

式の使用目的とそのしくみ

計器やそのすべてのオブジェクトに式を使用できます。計器のほとんどのプロパティに式を指定でき、その計算結果がプロパティにバインドされます。オブジェクトの相互作用を提供したり、計器に必要な機能を指定するために式を使用します。

式は次の順番で計算されます。オブジェクトの状態が変わると、そのオブジェクトとその中に含まれているすべてのオブジェクトの式が再計算されます。オブジェクトのプロパティに式の計算結果がバインドされます。

オブジェクトの状態が変わった時に計器の全オブジェクトの式の値を再計算するには、RecalculateAll プロパティを True にします。Fill プロパティや Stroke プロパティなどオブジェクトの外観を定義するプロパティを変更しても式の再計算は行われません。従って、これらのプロパティ値に設定する必要はありません。

式に構文が含まれていると、計算プロセス中にセマンティックエラーもしくは例外が表示されて、式は無効になります。


Description of Expression Language Syntax and Semantics

式言語の構文と意味論について

式は公式の計算に関するタスクです。式の値は計算結果です。式は定数、オブジェクトとそのプロパティやメソッド、演算子、関数の呼び出し、括弧で記述されます。

<使用するデータ型>

.NET framework で利用可能なすべてのデータ型が式に使用されます。また、整数値、不動小数点数、論理値、文字列やベクトル用の特別なサポートもあります。

PerpetuumSoft.Framework.Drawing.Vector データ型がベクトルに使用されます。

次の演算子を式に使用することができます。

算術演算子

記号 | 説明
+ | 加算。 数値とベクトルに定義されます。
- | 減算。数値とベクトルに定義されます。
- | 単項マイナス。 数値に定義されます。
* | 乗算。最初の引数には数値とベクトル、二番目の引数には数値を使用してください。
/ | 除算。数値に定義されます。
% | 除算の剰余。 数値に定義されます。

論理演算子

記号 | 説明
or | 論理和を表すOR。論理値に定義されます。
and | 論理積を表すAND。 論理値に定義されます。
= | 等しい。 数値、論理値、ベクトルに定義されます。
!= | 等しくない。数値、論理値、ベクトルに定義されます。
< | ～より小さい。数値に定義されます。
<= | ～と同じか小さい。数値に定義されます。
> | ～より大きい。数値に定義されます。
>= | ～と同じか大きい。数値に定義されます。
not | 反転。 論理値に定義されます。

文字列演算子

記号 | 説明
& | 文字列の結合。文字列の値に定義されます。

演算子の優先順位（降順）

- (単項マイナス)、not

*、/、%

+、-、&

>、>=、<、<=

=、!=

and

or

定数の割り当て

記号 | 説明
* | 値全体
*.* | 値

例：1234 は全体で、1234.1234 は不動小数点数です。

線の長さを一般的な単位で指定するには、定数の後に後置記法を使用します。

単位 | 説明
in | インチ
mm | ミリメートル
cm | センチメートル
pt | 1/72 インチポイント
px | ピクセル

例：3in は3インチで、3cm は3センチメートルです。

文字列の定数はダブルアポストロフィ（”）で指定します。

例："これは文字列の値です"

ベクトルは "[" и "]" で指定します。

例：[< 数値>,< 数値>] - ベクトルの指定。

論理定数は 'true' と 'false' の2つのキーワードで指定します。

<変数、オブジェクト、オブジェクトフィールドやメソッドへのアクセス>

計器で利用可能な変数の名前を指定することで式に変数を使用できます。変数名やオブジェクト名での検索は次のように行われます。式に、指定したオブジェクト名のアドレスがある場合、式を記述したオブジェクトに対して GetObject 関数（希望するオブジェクトを返します）が呼び出されます。GetObject 関数はどのオブジェクトに対しても次のことを行います。その名前が要求した名前と一致した場合、オブジェクトそのものを返します。そうでなければ親から GetObject 関数を呼び出します。オブジェクトコンテナは、含まれているすべてのオブジェクトから希望するオブジェクトを検索します。従って、計器の全オブジェクトを式に使用できます。一部のオブジェクト（例：Slider） に関しては、GetObject 関数は特別変数を返します。上述の規則に従って、オブジェクトコンテナとその中に含まれているオブジェクトに対してそういった変数を使用できます。オブジェクトの構造は下図の通りです。

Instrument、Joint1、Scale1、NumericLabels1、Ticks1、Slider1、Needle1 などの計器のオブジェクトをどのオブジェクトの式にでも使用できます。

Slider の特別変数を Slider1 や Needle1 オブジェクトの式に使用できます。

特別変数

次の特別変数を SliderBase オブジェクトの派生オブジェクト（例：Slider オブジェクト）に使用できます。

特別変数 | 説明
value | double 型の変数。スライダの現在値。
hot | 論理型変数。マウスポインタがオブジェクト上にある場合、Hot は True に設定されます。
pressed | 論理型変数。ポインタがオブジェクト上にある時にマウスボタンを押すと、Pressed は True に設定されます。
center | ベクトル型変数。スライダの現在値のポイントで、トラジェクトリの中心0から離れたポイント。

次の特別変数を Joint オブジェクトの派生オブジェクト （Joint オブジェクト）に使用できます。

特別変数 | 説明
JointRadius | Joint の半径
JointCenter | ベクトル型の変数。Joint の現在値のポイントで、トラジェクトリの中心0から離れたポイント
JointTotalAngle | Joint の全角度
JointStartAngle | X 軸から Joint の始点までの角度（時計回り）

次の特別変数を Guide オブジェクトの派生オブジェクト （Guide オブジェクト）に使用できます。

記号 | 説明
GuideLength | Guide の長さ
GuideCenter | Guide の中心ポイント
GuideEndPoint | Guide の終点
GuideStartPoint | Guide の始点

オブジェクトのフィールドやメソッドを使用するには、点 '.'を使用します。

例:

記号 | 説明
Slider1.Value | Slider1 オブジェクトの Value プロパティを適用します
Slider1.ToString() | Slider1 オブジェクトの ToString() メソッドを呼び出します
Line1.StartPoint.Rotate(30) | Line1 オブジェクトの StartPoint プロパティの Rotate メソッドを呼び出します
[10, 20].Rotate(30).X | X のベクトル座標[20, 30]。30度回転されます。

注意： オーバーロードされた場合、オブジェクトのメソッドを呼び出すことはできません。

式の言語が型指定されていない場合、どのメソッドを起動させるか定義することができません。

計器で利用可能な関数の名前を指定することで式に関数を使用できます。同様にオブジェクト名で検索したように関数名で検索されます。

次の関数を任意のオブジェクトに使用できます。

条件付き関数

関数 | 説明
If(condition, value1, value2) | 最初のパラメータは論理型で、二番目と三番目は object 型になります。最初のパラメータが True の場合、この関数は二番目のパラメータの値を返します。そうでなければ三番目のパラメータの値を返します。
switch (condition[0], value[0], … , value by default) | condition[i] が True の場合、この関数は value[i] を返します。任意の i の condition[i] が False の場合、規定で value が返されます。

形式関数:

関数 | 説明
format (object, mask) | object は object 型で、mask は string 型です。マスクに従ってオブジェクトの文字列を返します。

数学的関数:

関数 | 説明
sin(argument) | 引数のサインを計算します。argumentは double 型で、その計算結果は double 型になります。
cos(argument) | 引数のコサインを計算します。argument は double 型で、その計算結果は double 型になります。
tan(argument) | 引数のタンジェントを計算します。argument は double 型で、その計算結果は double 型になります。
atan(argument) | 引数のアークタンジェントを計算します。argument は double 型で、その計算結果は double 型になります。
sqr(argument) | 引数を二乗に計算します。argument は double 型で、その計算結果は double 型になります。
sqrt(argument) | 引数の平方根を計算します。argument は double 型で、その計算結果は double 型になります。
log(argument) | 引数の自然対数を計算します。argument は double 型で、その計算結果は double 型になります。
exp(argument) | e を底とする数値のべき乗を計算します。argument は double 型で、その計算結果は double 型になります。
sign(argument) | 引数が負の場合は -1、0 の場合は 0、正の場合は 1 を返します。argument は double 型で、その計算結果は int 型になります。
abs(argument) | 引数の絶対値を返します。argument は double 型で、その計算結果は double 型になります。
round(argument1, argument2) | argument1 に四捨五入の対象となる数値を、argument2 に基準値を指定します。argument1 は double 型で、argument2 は int 型で、計算結果は double 型になります。

式は任意の関数やメソッドの引数になることができます。式の計算結果が引数型に合わない場合、式は計算されません。

日付関数:

記号 | 説明
getMonth (argument) | argument に指定した日付で月を返します。 argument は System.DateTime 型になります。
getDayOfWeek (argument) | argument に指定した日付で曜日を返します。 argument は System.DateTime 型になります。
getQuarter (argument) | argument に指定した日付の四半期を返します。 argument は System.DateTime 型になります。

また、System.DateTime 型の他のプロパティやメソッドを使用して他の日付値を取得することもできます。

ランキング関数：

関数 | 説明
Range (currentValue, range, zeroPoint) | データの間隔を取り出します。すべての引数は数値型になります。 currentValue は 現在値、 range は範囲、zeroPoint は原点になります。

PerpetuumSoft.Framework.Vector 型のオブジェクトを作成するための構文が式言語に提供されています。ベクトルは次の構文で作成されます。

[<式>,<式>] 直接、式に他の型のオブジェクトを作成することはできませんが、カスタム関数（希望する型のオブジェクトを作成するために式で使用します）を実現できます。

SliderBase 型のオブジェクト（例：Slider） やその中に含まれているオブジェクトに次のような特別関数を使用できます。

関数 | 説明
r(radius) | スライダの現在値を示すポイントで、トラジェクトリの半径（中心から）の距離を返します
r(value, radius) | Value パラメータのポイントで、トラジェクトリの半径（中心から）の距離を返します
a() | スライダの回転角度を返します

<式に利用可能なカスタム関数やカスタム変数の実現>

オブジェクトの式に利用可能なカスタム関数やカスタム変数を作成するには、カスタムオブジェクトを実現する必要があります（それに応じてPerpetuumSoft.Framework.Expressions.IExpressionSite インターフェースを実現します）。

その後でカスタム関数を登録する必要があります。登録は次のように行えます。

PerpetuumSoft.Framework.Expressions.BuiltInFunctions.RegisterFunction(<Function name>, <inplemented IFunction object>);


Use and Capabilities of the Instrument Designer

Instrument デザイナの使い方とその機能について

Instrumentation ModelKit のデザイナは計器の作成に使用します。デザイナの外観は下図の通りです。計器はさまざまなオブジェクトが配置されているオブジェクトを表します。各オブジェクトにはプロパティがあり、プロパティウィンドウに表示されます。このウィンドウでプロパティ値を編集できます。特別な言語で指定された式を大半のプロパティにバインドできます。式は式ウィンドウに表示されます。このウィンドウで式を編集できます。

Instrumentation ModelKit のデザイナで計器の作成に使用するビジュアルオブジェクトや非ビジュアルオブジェクトは、[挿入]メニューまたはコンポーネントツールボックス （Elements toolbar） のボタンに用意されています。計器にコンポーネントを配置するには、「コンポーネントツールボックス （Elements toolbar）」 のメニューから希望するコンポーネントを選んで作業領域で左マウスボタンをクリックするか、左マウスボタンを押したままコンポーネントを希望するサイズまで引き伸ばしてください。

計器の構造は Instrument のオンラインウィンドウに表示されます。マウスでドラッグしてオブジェクトの位置関係を変更できます。

[ファイル]メニューについて説明します。ファイルメニューのコマンドは次の通りです。

コマンド | 説明
[ファイル/新規/白紙] | 新しい白紙の計器を作成します
[ファイル/新規/ウィザード] | ウィザードを使用して新しい計器を作成します
[ファイル/開く Ctrl+O] | ファイルから計器を読み込むためにダイアログボックスを呼び出します
[ファイル/開いて結合] | ファイルから計器を読み込むためにダイアログボックスを呼び出します。同時に新しい計器が既存の計器に追加されます。
[ファイル/ウィザードで開いて結合] | 計器を読み込むウィザードを呼び出します。同時に新しい計器が既存の計器に追加されます。
[ファイル/保存 Ctrl+S] | 計器を保存します
[ファイル/名前を付けて保存] | 計器に名前を付けて保存します
[ファイル/エクスポート] | 計器を一般的なビットマップまたはベクトル形式 （JPEG、GIF、PNG、BMP、SVG、Macromedia Flash） にエクスポートし、[ファイルに保存]ダイアログボックスを呼び出します

セパレータの下にファイルシステムのパスを含む、最近使ったファイルの履歴を見ることができます。

[編集]メニューについて説明します。編集メニューのコマンドは次の通りです。

コマンド | 説明
[編集/元に戻す Ctrl+Z] | 計器で行った変更をキャンセルします
[編集/やり直し Ctrl+Y] | 計器の編集時に元に戻した動作をやり直します
[編集/切り取り Ctrl+X] | 選択したオブジェクトを切り取ります
[編集/コピー Ctrl+C] | 選択したオブジェクトをコピーします
[編集/貼り付け Ctrl+V] | 選択したオブジェクトがコンテナではない場合、バッファから選択したオブジェクトまたはその親に貼り付けます
[編集/削除 Ctrl+Del] | 選択したオブジェクトを削除します

[表示]メニューについて説明します。表示メニューのコマンドは次の通りです。

コマンド | 説明
[表示/ルーラの表示] | 作業領域にルーラを表示するかどうかの切り替えを行います
[表示/グリッドの表示] | 作業領域にグリッドを表示するかどうかの切り替えを行います
[表示/グリッドに合わせる] | オブジェクトの制御ポイントをグリッドに合わせるかどうかの切り替えを行います

[ツール]メニューについて説明します。ツールメニューのコマンドは次の通りです。

コマンド | 説明
[ツール/選択 F2] | [選択]ツールを有効にします。[選択]ツールは作業領域のオブジェクトを選択したり、デザイナで編集することができます。
[ツール/テスト F3] | 編集した計器をテストするために[テスト]ツールを有効にします
[ツール/パン F4] | 作業領域のイメージをパンします
[ツール/ズームイン] | オブジェクトをズームインします
[ツール/ズームアウト] | オブジェクトをズームアウトします
[ツール/矩形に合わせてズーム] | 選択した矩形をズームインするために[矩形に合わせてズーム]ツールを有効にします
[ツール/ダイナミックズーム] | 選択した領域のズームを変更するために[ダイナミックズーム]ツールを有効にします

[挿入]メニューについて説明します。挿入メニューのコマンドは次の通りです。

挿入コマンドはオブジェクトの挿入先ごとにグループ化されています。

[挿入/Structure] メニューにあるオブジェクトは計器構造を割り当てるために使用します。

コマンド | 説明
[挿入/Structure/Joint] | 円状のトラジェクトリ （Joint オブジェクト）を追加します
[挿入/Structure/Guide] | 線状のトラジェクトリ （Guide オブジェクト）を追加します
[挿入/Structure/Scale] | スケール （Scale オブジェクト）を追加します
[挿入/Structure/Slider] | スライダ （Slider オブジェクト）を追加します
[挿入/Structure/Group] | オブジェクトをグループ化するコンテナ （Group オブジェクト）を追加します

[挿入/Primitives] メニューにはプリミティブ（基本図形）を追加するためのコマンドがあります。

コマンド | 説明
[挿入/Primitives/Line（線）] | 線 （Line オブジェクト）を追加します
[挿入/Primitives/Circle(円)] | 円（Circleオブジェクト）を追加します
[挿入/Primitives/Ellipse（楕円）] | 楕円 （Ellipse オブジェクト）を追加します
[挿入/Primitives/Rectangle（矩形）] | 矩形 （Rectangle オブジェクト）を追加します
[挿入/Primitives/RoundedRectangle（角丸矩形）] | 角丸矩形 （RoundedRectangle オブジェクト）を追加します
[挿入/Primitives/Frame（枠）] | 枠 （Frame オブジェクト）を追加します
[挿入/Primitives/Picture（イメージ）] | イメージ （Picture オブジェクト）を追加します
[挿入/Primitives/PictureSet（イメージセット）] | イメージセット （PictureSet オブジェクト）を追加します
[挿入/Primitives/Label（ラベル）] | ラベル （Label オブジェクト）を追加します
[挿入/Primitives/Arc（弧）] | 弧 （Arc オブジェクト）を追加します
[挿入/Primitives/Pie（パイ）] | パイ （Pie オブジェクト）を追加します
[挿入/Primitives/RingSector（ドーナツ型）] | ドーナツ型 （RingSector オブジェクト）を追加します

[挿入/Scale Elements]メニューにはスケールをデザインするためにオブジェクトを追加するコマンドがあります。

コマンド | 説明
[挿入/Scale Elements/ScaleLabels（スケールラベル）] | スケールの分割領域に番号を表示するためにスケールラベルを （ScaleLabels オブジェクト）を挿入します
[挿入/Scale Elements/ScaleMarks（スケールマーカ）] | スケールにマーカ （ScaleMarks オブジェクト）を追加します
[挿入/Scale Elements/[目盛] | スケールに目盛 （Ticks オブジェクト）を追加します
[挿入/Scale Elements/CustomLabels（カスタムラベル）] | スケールにテキストラベル （CustomLabels オブジェクト）を追加します
[挿入/Scale Elements/RangedLevel] | RangedLevel オブジェクトを追加します
[挿入/Scale Elements/LinearLevel] | LinearLevel オブジェクトを挿入します
[挿入/Scale Elements/Tank（タンク）] | Tank オブジェクトを挿入します
[挿入/Scale Elements/ScaleTitle（スケールタイトル）] | スケールタイトル （ScaleTitle オブジェクト）を挿入します

[挿入/Advanced] には特別な目的を持ったオブジェクトを追加するためのコマンドがあります。

コマンド | 説明
[挿入/Advanced/Needle針] | 針 （Needle オブジェクト）を追加します
[挿入/Advanced/CircularNotches（円形ノッチ）] | 円形ノッチ （CircularNotches オブジェクト）を追加します
[挿入/Advanced/LinearNotches（線形ノッチ）] | 線形ノッチ （LinearNotches オブジェクト）を追加します
[挿入/Advanced/Spring（スプリング）] | スプリング （Spring オブジェクト）を追加します
[挿入/Advanced/Star（星型）] | 星型 （Star オブジェクト）を追加します
[挿入/Advanced/Polygon（ポリゴン）] | 正多角形 （Polygon オブジェクト）を追加します
[挿入/Advanced/Highlight（ハイライト）] | HighLight オブジェクトを挿入します
[挿入/Advanced/Gear（ギア）] | Gear オブジェクトを挿入します
[挿入/Advanced/Digits（デジタル）] | デジタルインジケータ （Digits オブジェクト）を追加します
[挿入/Advanced/Odometer（オドメータ）] | オドメータオブジェクト （Odometer オブジェクト）を追加します

[ヘルプ]メニューについて説明します。ヘルプにはバージョン情報を表示する「バージョン」サブメニューもあります。

また、ツールバーには選択したオブジェクトの出力順を変更するためのボタンもあります。

ボタン | 説明
[選択したオブジェクトを前方に移動]* | 選択したオブジェクトを１つ上に移動します
[選択したオブジェクトを後方に移動]* | 選択したオブジェクトを１つ下に移動します
[選択したオブジェクトを先頭に移動]* | 選択したオブジェクトを先頭に移動します
[選択したオブジェクトを最後に移動]* | 選択したオブジェクトを最後に移動します
[スクリプトのチェック] | （計器で使用する）構文チェックを行います。スクリプトのチェックをしてください。

*選択したオブジェクトのグループ順を変更しても、グループ内の順序関係はそのままです。

作業領域での[選択]ツールの使い方について説明します。

[選択]モードが有効の場合、作業領域内 （Work area） のビジュアルオブジェクトをマウスで選択できます。オブジェクトのグループを選択するには Ctrl キーを押したまま各オブジェクトを選択するか、左マウスボタンを押したままオブジェクトのグループを選択できます。

選択したオブジェクトに、円形の制御ポイントが表示されます。

選択したオブジェクトは計器構造のツリーに強調表示されます。

選択したオブジェクトに次のような編集処理を行うことができます。

・クリップボードへのコピー（クリップボード）

・クリップボードからの貼り付け

・削除

・出力順の変更

・プロパティウィンドウ （Properties window） を使用してプロパティを変更する

・マウスでのオブジェクトの位置変更

・オブジェクトの制御ポイントを移動して、あるオブジェクトのプロパティを変更する

選択したオブジェクトの制御ポイントは主要なプロパティを変更するために使用します。ポイントの位置はマウスでドラッグして変更できます。

各オブジェクトには独自の制御ポイントのセットがあります。例えば、矩形オブジェクトには 10 個のポイントがあり、そのうちの1つは中心を変更するためのもので、1 つは回転角度を変更するためのもので、それ以外のポイントは矩形領域のサイズを変更するために使用します。

矩形オブジェクトのデザイナの制御ポイント

線形オブジェクトのデザイナの制御ポイント

一部のオブジェクトのデザイナには特定のオブジェクト型（例：RingSector オブジェクトのデザイナ）専用のプロパティを変更するための制御ポイントがあります。

RingSector のデザイナの制御ポイント

制御ポイントの位置が変わると、そのオブジェクトのプロパティも変わります。しかし、そのプロパティに式が設定されている場合は制御ポイントの位置を変えても意味がありません。そのような制御ポイントは赤く表示されます。プロパティにバインドされた式をデザイナが自動的に変更できる場合、その制御ポイントは黄色で表示されます。

制御ポイントに式がバインドされているオブジェクトのデザイナ例

現在値を示すために Slider オブジェクトにオブジェクトが含まれている場合、デザイナでオブジェクトの位置を Slider の現在値にバインドできます。それには、Cｔｒｌ ボタンを押したまま制御ポイントをクリックしてください。式のバインドは同様なアクションでキャンセルされます。

「Instrument Outline」 ウィンドウは現在の計器構造をツリー表示します。作業領域 （Work area）にオブジェクトを貼り付けると、自動的に 「Instrument Outline」 ウィンドウに表示されます。選択したオブジェクトは青色でツリーに表示されます。オブジェクトをマウスでドラッグすることにより、このウィンドウでオブジェクトの相対位置を変更することができます。

"Needle1" を "Slider1" にドラッグする

「式ウィンドウ」はオブジェクトのプロパティにバインドした式を編集するために使用します。左側には、式を指定できるプロパティ名が表示されます。右側には、式のスクリプトを記述したり、スクリプトエディタを開くことができます。プロパティにスクリプトが指定されていない場合、右欄の四角形に空白で表示されます。スクリプトが正確に指定されている場合、その四角形に青いチェックマークが表示されます。指定したスクリプトに構文エラーがある場合は、四角に赤いバツ印が表示されます。

「プロパティウィンドウ」は選択したオブジェクトのプロパティを表示したり編集するために使用します。


Components Used in Windows Forms Applications.

WinForms アプリケーションで使用するコンポーネント

WinForms アプリケーションで計器を表示したり編集するには、Widget と IndicatorWidget という2つのコンポーネントを使用します。Widget コンポーネントはマウスで計器を表示したり操作することを目的としています。IndicatorWidget コンポーネントは Widget から派生しており、Slider コンポーネントを格納している計器を表示することを目的としています。IndicatorWidget コンポーネントは、指定したスライダの Value プロパティや ValueChanged イベントにアクセスするための付加的な機能を提供します。


The Widget Component Use and Capabilities.

Widget コンポーネントの使い方とその機能

Widget コンポーネントの使い方について例を挙げて説明します。

この結果は WidgetUseExample で確認することができます。

Windows フォームアプリケーションを作成します。そしてフォームに Widget コンポーネントを貼り付けます （Instrumentation ModelKit のツールボックスにあります）。

コンポーネントをダブルクリックすると、Instrument デザイナが立ち上がります。デザイナに、Instrumentation ModelKit のウィザードから既存のオブジェクトを開きます。例えば、Dials フォルダから 「Double Dial1」 を開き、「Ok」 ボタンをクリックします。選択したオブジェクトが Widget コンポーネントに表示されます。

計器を使えるか確認するためにアプリケーションを実行します。

Widget コンポーネントに取得したコントロール要素が表示され、ユーザの動作に応じて反応します。次に、コントロール要素の現在値を取得したり設定する機能が必要です。それには Instrument オブジェクトを返す widget1.Instrument プロパティを使用します。例えば、Slider1 または Slider2 に必要なオブジェクトを取得するために、Instrument の GetObject 関数を使用します。次に、フォームに Label コンポネントを貼り付けてコントロール要素の値をテキストで表示するようにします。

プログラムコードに次のコードを追加してください。ここでは、Form1_Load がプログラムのメインフォームの Load イベントハンドラです。

    private Slider slider1 = null;

    private Slider slider2 = null;

    private void Form1_Load(object sender, System.EventArgs e)

    {

      slider1 = widget1.Instrument.GetObject("Slider1") as Slider;

      slider2 = widget1.Instrument.GetObject("Slider2") as Slider;

      slider1.ValueChanged += new PerpetuumSoft.Framework.Model.PropertyEventHandler(slider1_ValueChanged);

      slider2.ValueChanged += new PerpetuumSoft.Framework.Model.PropertyEventHandler(slider2_ValueChanged);

    }

    private void slider1_ValueChanged(object sender, PerpetuumSoft.Framework.Model.PropertyEventArgs args)

    {

      label1.Text = "Slider1.Value = " + slider1.Value.ToString("0.00");

    }

    private void slider2_ValueChanged(object sender, PerpetuumSoft.Framework.Model.PropertyEventArgs args)

    {

      label2.Text = "Slider2.Value = " + slider2.Value.ToString("0.00");

    }

                        プログラムの実行結果は次の通りです。

                        マウスが置かれている計器のオブジェクトを取得するには、GetElementAt メソッドを使用できます。

                        次のように MouseMove イベントハンドラを記述します。

    private void widget1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)

    {

      PerpetuumSoft.Instrumentation.Model.Element element = widget1.GetElementAt(e.X, e.Y);

      label3.Text = "マウスは " + element.Name + " 上です";

    }

                        プログラムの実行結果は次の通りです。

                        Widget コンポーネントには次の専用プロパティがあります。

  • ZoomScale - 計器のズーム倍率を指定します
    •

  • HideFocusRectangle - フォーカス時にコントロールの周りに矩形を描画するかどうかを定義します
    •

  • InvalidateInterval - この値がゼロ以上の場合、計器の領域を更新するタイマが使用されます
    •

                          （InvalidateInterval プロパティはミリ秒単位で更新間隔を設定します）


The IndicatorWidget Component Use and Capabilities.

IndicatorWidget コンポーネントの使い方とその機能

IndicatorWidget コンポーネントの使い方は Widget コンポーネントと似ています。

しかし、IndicatorWidget コンポーネントには複数のスライダの1つの現在値を簡単に取得できるプロパティが追加されています。

IndicatorWidget コンポーネントには Value プロパティと ValueChanged イベントが追加されています。これらは IndicatorWidget コンポーネントで使用する複数のスライダの1つのスライダの Value プロパティと ValueChanged イベントに対応します。利用可能なスライダを指定するには、SliderName プロパティにスライダ名を指定します。

さらに、IndicatorWidget コンポーネントはキーボードを使用して、指定したスライダを自動的に移動することができます。

移動量は Increment プロパティに指定します。

Minimum プロパティと Maximum プロパティを使用して、選択したスライダのスケール値（最小値/最大値）を変更できます。

上述したプロパティはすべて、IndicatorWidget コンポーネントに計器またはスライダ名を指定しなければ意味がないので十分注意してください。計器を指定したら、使用するスライダ名を SliderName プロパティのプルダウンリストから指定する方が便利です。計器のスライダ名がすべてそこに表示されます。

IndicatorWidget コンポーネントの使用例について説明します。

この例は 「IndicatorWidgetUseExample」 サンプルで確認できます。

フォーム付きの Windows フォームアプリケーションを作成し、そのフォームに IndicatorWidget コンポーネントを配置します。

IndicatorWidget コンポーネントをダブルクリックして Instrument デザイナを立ち上げ、Instrumentation ModelKit のウィザードから既存の計器を開きます。例えば、Dials フォルダから 「Dial6」 を開き、「Ok」 ボタンをクリックします。選択した計器が IndicatorWidget コンポーネントに表示されます。

アプリケーションを実行して計器が使えるか確認します。

フォームに Label コンポーネントを貼り付けてコントロール要素の現在値をテキストで表示するようにします。スライダ値にアクセスするには、IndicatorWidget コンポーネントの SliderName プロパティに 「Slider1」 を指定します。次のように ValueChanged イベントハンドラを記述します。

    private void indicatorWidget1_ValueChanged(object sender, PerpetuumSoft.Framework.Model.PropertyEventArgs args)

    {

      label1.Text = "現在値 = " + indicatorWidget1.Value.ToString("0.00");

    }

プログラムの実行結果は次の通りです。

スライダの現在値にアクセスするのは簡単です（Widget コンポーネントのサンプルと比較してみてください）。 スライダの現在値にアクセスする場合は IndicatorWidget コンポーネントの使用をお勧めします。

では、Minimum プロパティと Maximum プロパティを使用してスライダを移動させるスケール値（最小値/最大値）を変更します。最大値を 100 に設定します。

キーボードからスライダ値を変更するのに都合がいいように、Increment プロパティを 10 に設定します。ここで左ボタンキーまたは下ボタンキーを押すたびに、スライダ値が 10 づつ減ります。右ボタンまたは上ボタンを押すたびに、スライダ値は 10 づつ増えます。

IndicatorWidget コンポーネントは Widget コンポーネントから継承されているので、ZoomScale、HideFocusRectangle、InvalidateInterval プロパティを使用できます。


Components Used in Web Applications.

Web アプリケーションで使用するコンポーネント

Web アプリケーションで計器を表示したり操作するには、WidgetProducer と WidgetHolder という2つのコンポーネントを使用します。WidgetProducer は表示する計器を格納します。このコンポーネントは別のページに配置されます。このページが適用されると、WidgetProducer はページ内容を計器のイメージに置き換えます。WidgetHolder コンポーネントは、計器を表示したり計器をマウスで操作するために使用します。WidgetHolder コンポーネントは、WidgetProducer コンポーネントに格納された計器を表示します。


The WidgetProducer and WidgetHolder Components Use and Capabilities

WidgetProducer と WidgetHolder の使い方とその機能

WidgetProducer コンポーネントと WidgetHolder コンポーネントの使い方について例を挙げて説明します。

この結果は Web サンプルで確認できます。

Web アプリケーションを作成し、WidgetProducer コンポーネントを表示するページを追加し、そのページに 「ProducerPage」 という名前をつけます。

そのページに WidgetProducer コンポーネントを貼り付け、（コンテキストメニューから 「Run Designer」 を選んで） Instrument エディタを開き、表示する計器を指定します。

ウィザードを使用してデザイナで使用する計器を選ぶか、新しい計器を作成します。「Ok」 ボタンをクリックして計器の設定を行います。

アプリケーションのスタートページに WidgetHolder コンポーネントを貼り付けます。ProducerUrl プロパティに、WidgetProducer コンポーネントが貼り付けられているページアドレス （ProducerPage.aspx） を設定します。そのページにコントロール要素を追加し、計器の針の値を2つ指定します。

上部の入力ウィンドウには、計器の上の針の値が設定されます。

下部の入力ウィンドウには、計器の下の針の値が設定されます。

「更新」ボタンを押すと、計器の値が更新されます。

次のように、「更新」ボタンの Click イベントハンドラを記述します。

    private void Button1_Click(object sender, System.EventArgs e)

    {

      WidgetHolder1.Parameters["Slider1", "Value"] = value1TextBox.Text;

      WidgetHolder1.Parameters["Slider2", "Value"] = value2TextBox.Text;

    }

ここでの Parameters プロパティは典型的なコレクションを表します。各コレクションの要素は「オブジェクト」、「プロパティ」、「値」の3つを表します。

プログラムを実行します。

WidgetHolder コンポーネントは System.Web.UI.IPostBackEventHandler インターフェースを実現します。EnablePostBack プロパティが True に設定されている場合、計器でのマウスクリックは InstrumentClick イベントで処理されます。その記述例が下記にあります。WidgetHolder コンポーネントの InstrumentClick イベントハンドラは次のように記述します。

    private void WidgetHolder1_InstrumentClick(object sender, PerpetuumSoft.Instrumentation.Web.InstrumentClickEventArgs args)

    {

      PerpetuumSoft.Instrumentation.Model.Instrument instrument = args.Element.Instrument;

      PerpetuumSoft.Instrumentation.Model.Scale scale = instrument.GetByName("Scale1") as PerpetuumSoft.Instrumentation.Model.Scale;

      WidgetHolder1.Parameters["Slider1", "Value"] = scale.PointToValue(new PerpetuumSoft.Framework.Drawing.Vector(args.X, args.Y)).ToString(System.Globalization.CultureInfo.InvariantCulture);

    }


Designing the Simple Instrument with a Slider

スライダ付きの簡単な計器をデザイン

計器のデザインに使用する Instrument デザイナについて説明します。

このサンプルは Instrument デザイナに含まれている HorisontalSlider.imk ファイルで確認できます。

＜スライダ付きの計器を作成する＞

デザインする計器の必要条件を定義します。

1. 0 から 100 までの範囲をスライダに設定する

2. スケールの 0～80 までと 80～100 までの範囲にそれぞれ違う色を設定

3. スライダの値が 80 を超えると、針の色を変更

4. マウスをスライダ上に移動させると、近くに現在値をテキストで表示する

条件1： 0～100までの範囲をスライダに設定

計器に線状のトラジェクトリ( [image])を配置します。トラジェクトリはスケールの形状を割り当てるために使用します。計器に Scale コンポーネント( [image])を配置します。スケールには値の範囲（最小値/最大値）を割り当てます。スケールをトラジェクトリ上に配置させるには、スケールをトラジェクトリ内に配置してください（それには、スケールを Instrument のツリーにドラッグしてください）。

計器の構造は次のようになります。

スケールオブジェクトの外観を設定するために、スケールオブジェクトに目盛やテキストマーカを追加します。それには、コンポーネントツールボックスから Ticks コンポーネントと ScaleLabels コンポーネントを Scale1 オブジェクトに追加します。追加した後の計器の構造は次のようになります。

計器自体は次のように表示されます。

Ticks1 の Distance プロパティを 10 に設定し、NumericLabels の Distance プロパティは 20 に設定します。

現在値を表示したり、マウスでスライダ値を変更するために、計器に Slider コンポーネント( [image])を追加します。計器の構造は次のようになります。

スライダの外観設定のために、Slider1 に Needle コンポーネント( [image])を追加します。

Needle1 をスライダ値にバインドします。それには、Needle1 の式ウィンドウの各プロパティに以下の式を記述します。

StartPoint プロパティ："r(0px)"

EndPoint プロパティ："r(-50px)"

これで、マウスでスライダを動かせます。

条件2： スケールの0～80までと80～100までの範囲にそれぞれ違う色を設定

色エディタを使用して、Scale1 オブジェクトの Colorizer プロパティを変更します。

変更後、計器は次のように表示されます。

条件3： スライダの値が 80 を超えると、針の色を変更

計器のスタイルコレクション （Instrument.Styles プロパティ）に、「ColdColor」 （針を青色で表示）と 「HotColor」 （針を赤色で表示）という2つのスタイルを追加します。Needle1 オブジェクトの（式ウィンドウの） Style プロパティに、次の式を記述します。

if (Slider1.Value < 80, "ColdColor", "HotColor")

現在値が 80 未満の場合

現在値が 80 以上の場合

条件4： マウスをスライダ上に移動させると、近くに現在値をテキストで表示する

Slider1 オブジェクトに Label コンポーネント( [image])を追加します。

Label1 オブジェクトの BreakEvenBubbling プロパティを True に設定します。これはマウスイベントを Label1 から Slider1 に渡さないようにするためです。

Label1 オブジェクトの式ウィンドウの Center プロパティに、"r(-38px) + [120, 20]" を記述します。Label1 の中心はスライダの値に応じて設定され、少し移動します。

（式ウィンドウの） Visible プロパティを "hot" に設定します。マウスが Needle1 上にきたときだけ Label1 オブジェクトが表示されます。


Creation of Instruments Using Complex Expressions

複雑な式を使用して計器を作成

スライダを平面内で移動させられる計器を作成します。

この計器は Instrument デザイナの Gauge2D.imk ファイルにあります。

まず、計器の必要条件を定義します。

1. 計器に基準線（軸）を2つ設定

2. 平面内でスライダを移動

3. 各軸にスライダの中心を示す線を表示

4. 平面上のスライダの脇に位置を示すテキストを表示

条件1： 計器に基準線（軸）を2つ設定

スケールの形状を割り当てるために、計器に Guide( [image]) を配置します。

計器に Scaleコンポーネント( [image])を配置します。Scale には範囲（最小値/最大値）を割り当てました。トラジェクトリに沿って Scale を配置するには、トラジェクトリ内に Scale を配置しなければなりません（ただオブジェクトツリーに Scale をドラッグアンドドロップするだけです）。

現在値を表したり、マウスを移動させて変更できるように、Slider コンポーネント( [image])を追加します。

スケールの外観設定として、スケールに目盛やテキストを配置します。それには、コンポーネントツールボックスから Ticks コンポーネントと NumericLabels コンポーネントを Scale1 オブジェクトに追加してください。追加後のオブジェクトの構造は次のように表示されます。

計器自体は次のように表示されます。

Ticks1 の Distance プロパティを 10 に、NumericLabels1 の Distance プロパティを 20 に設定します。

スケールの外観設定として、Slider1 オブジェクトに Needle コンポーネント( [image])を追加します。

Needle1 オブジェクトの Stroke プロパティを 「SimpleStroke」 に設定します。

では、Needle1 オブジェクトをスライダ値にバインドします。Needle1 の式ウィンドウに、次の式を記述します。

StartPoint プロパティ："r(0px)"

EndPoint プロパティ：" r(1.3cm)"

マウスでスライダを動かすと移動します。

結果的には OX 軸を取得します。

別の線形トラジェクトリ、スケール、スライダを割り当てるために上述した手順を繰り返し行い、OY 軸を取得します。オブジェクトの構造は下図のようになるはずです。

計器自体は次のように表示されます。

条件2： 平面内でスライダを移動

OX 軸と OY 軸に共通のスライダを作成します。それには Slider2 に Rectangle コンポーネント( [image])を追加し、Rectangle( [image]) の Stroke プロパティを 「SimpleStroke」 に設定します。同時に Slider1 オブジェクトに Guide2 を配置します。追加後のオブジェクトの構造は次のようになります。

では、Rectangle オブジェクトの式ウィンドウの Center プロパティに、次の式をを記述します。

“[Slider1.GetPosition(0).X, Slider2.GetPosition(0).Y]”

Slider の GetPosition 関数は引数によって割り当てられた値のポイントを返します。

これで Rectangle1 オブジェクトをマウスで動かすと、Slider1 と Slider2 の値が変わります。

条件3： 各軸にスライダの中心を示す線を表示

Slider1 オブジェクトに Line1 コンポーネント( [image])を追加します。Line1 の Stroke プロパティを SimpleStroke に設定し、線の色を赤に設定します。Line1 オブジェクトの式ウィンドウに、次の式を記述します。

StartPointプロパティ："r(0.42cm)"

EndPointプロパティ："r(-5.93cm)"

OX 軸にスライダの中心を示す線が取得されます。

Slider2 に Line2 コンポーネント( [image])を追加します。Line2 の Stroke プロパティを 「SimpleStroke」 に設定し、線の色を青に設定します。Line2 オブジェクトの式ウィンドウに、次の式を記述します。

StartPointプロパティ："r(7.2cm)"

EndPointプロパティ："r(-0.42cm)"

窶徨(7.2cm)窶・for StartPoint; and

OY 軸にスライダの中心を示す線が取得されます。

結果的にオブジェクトの構造は次のようになります。

計器自体は次のように表示されます。

条件4： 平面上のスライダの脇に位置を示すテキストを表示

Slider2 オブジェクトに Label コンポーネント( [image])を作成します。

Label1 オブジェクトの Fill プロパティの塗りつぶしの色を緑色に設定します。Label1 オブジェクトの式ウィンドウの Center プロパティと Text プロパティに、次の式を設定します。

Center プロパティ："[Slider1.GetPosition(0).X, Slider2.GetPosition(0).Y] + [35px, -15px]"

Text プロパティ：" "(" & format(Slider2.Value, "00.0") & "; " & format(Slider1.Value, "00.0") & ")" "


General Information

基礎知識

Instrumentation ModelKit は、OPC サーバーとデータのやり取りをする機能を提供します。OPC はリアルタイムデバイスでデータ交換を行うための業界標準です。PerpetuumSoft 社の OPCConnection や OPCChannel コンポーネントを利用すれば、複雑な COM インターフェイスの使用に頼らずにデータのやり取りが行えます。


OPCConnection

OPCConnection コンポーネント ( [image]) は、プロデューサから提供されるデバイスの COM サーバーの接続設定を目的としています。デザイン時の調整は、便利な標準インターフェイスを使用して行われます。フォームに OPCConnection コンポーネントを配置し、プロパティグリッドから接続設定ウィンドウを呼び出すだけです。

この接続設定ウィンドウは、ローカルの OPC サーバーを表示し、ローカルネットワークで取得可能な任意のサーバーに接続できます（DCOM の許可を含む必須の許可が必要なので、システム管理者に連絡してください）。


OPCChannel

OPCChannel コンポーネント

OPCChannel コンポーネント( [image])は選択した接続データ転送チャンネルを換えるために使用します。データ転送チャンネルを換える前に、プロパティグリッドの OPCConnection プロパティを使用して、必要な OPCConnection をコンポーネントに設定する必要があります。デザイン時または実行時にユーザの要求 （EstablishConnection メソッド）に応じて OPCConnection が設定された場合、OPC サーバへの接続が行われます。

接続設定を行った後、プロパティグリッドの Items プロパティを使用してサーバで利用可能な任意の位置を選択できます。

位置が選択されると、ID、アクセス権限、正規のデータ型など、位置に関するプロパティが表示されます。

正規のデータ型とは標準の CLS 対応の .NET 型です。

データチャンネルからの読み取り/データチャンネルへの書き込みは OPCChannel のパブリックメソッドで処理されます。

AsynchronousRead - 非同期のデータスライスの読み取り

AsynchronousSubscription - 1つのイベントで指定した頻度とデータスライス数によるデータスライスの非同期のサブスクリプション

Write - 書き込み

どの操作結果も非同期で返されます。この場合、OPCChannel はイベントを1つ発生します。非同期の読み取り （AsynchronousRead メソッド）または非同期のサブスクリプション （AsynchronousSubscription メソッド）で取得したデータの転送時に、DataTransmission イベントが発生します（このイベントの引数には要求されたデータと ITransaction 転送識別子が含まれます）。WriteStatus イベントは書き込み命令の結果を返すために使用します。

イベントを処理するには、次のようにイベントハンドラを指定する必要があります。

opcChannel1.DataTransmission += new PerpetuumSoft.Framework.Connectivity.DataTransmissionEventHandler(this.handler);

詳細はパッケージに含まれているクラスレファレンスやサンプルを参照してください。サンプルをきちんと動かすには、Matrikon 社の OPC のシミュレーションサーバをインストールする必要があります。


Step-by-step Example of Application Creation

アプリケーションの作成手順

OPCChannel コンポーネントと OPCConnection コンポーネントの使い方について例を挙げて説明します。フォーム付きの Windows フォームアプリケーションを立ち上げます。次に、Instrumentation ModelKit のツールボックスから IndicatorWidget コンポーネント（取得可能な値を表示する）と OPCConnection をフォームに貼り付けます。

プロパティグリッドの OPCServer プロパティを使用して、接続する OPC サーバを選択します。OPCConnection ダイアログウィンドウから、ローカルホストまたはローカルネットワークにインストールされている OPC サーバを1つ選択します。

次に、Instrumentation ModelKit のツールボックスタブにある OPCChannel コンポーネントをフォームに貼り付けます。

あらかじめ指定しておいた接続に OPCChannel をバインドします。それには、プロパティグリッドの OPCConnection プロパティを設定します。

次に、プロパティグリッドの OPCChannel の Items プロパティに、データを受け取る OPC サーバの位置を指定します。任意の位置を選択できますが、各 OPCChannel に同じ位置を設定しないよう注意してください。

チャンネル設定が済んだら、データを読み取るためにクエリをチャンネルにディスパッチします。フォームのアップロード時またはユーザの要求に従って、AsynchronousSubscription メソッドを呼び出すだけです。このメソッドはオーバーロードされます。このオーバーロードされた最初のメソッドにはパラメータが1つあります（イベントの間隔はミリ秒）。

    private void Form1_Load(object sender, System.EventArgs e)

    {

      opcChannel1.AsynchronousSubscription(500);

    }

次に、OPCChannel が OPC サーバからデータを受け取る際に発生する DataTransmission イベントのイベントハンドラを作成します。それには、プロパティグリッドの Events タブをダブルクリックして新しいメソッド （DataTransmission イベントハンドラ）を追加します。

    private void opcChannel1_DataTransmission(object sender, PerpetuumSoft.Framework.Connectivity.DataSlicesEventArgs e)

    {

      DataSlice slice = e[0];

      double d = System.Convert.ToDouble(slice.GetDataPoint(opcChannel1.Items[0].Item.ItemID).Value);

      this.indicatorWidget.Value = Math.Abs(d);

    }

この場合、イベントが発生するたびに最初のデータスライスの最初の位置を取得します。複数のデータスライスの処理は、データ転送の頻度だけでなくデータ更新の頻度も取得する AsynchronousSubscription メソッドの拡張バージョンで処理することを意味します。

アプリケーションを起動すると、計器が表示した OPC サーバのデータをリアルタイムモードでご覧いただけます。


Capabilities

特性

DataChannel コンポーネントの基礎となる DataChannel の概念は、分析的に指定した機能を含む任意のデータプロバイダを仮想的に使用してリアルタイムのデータ伝送チャンネルを開発者が作成できるようにすることです。


Design

デザイン

カスタムな DataChannel 実装を作成するには、抽象的な DataChannel から継承されたコンポーネントのクラスと抽象的な Connection を継承するコンポーネントのクラスだけを作成してください。実用的な DataChannel を実装するために、メソッドやプロパティをすべて機能的に実装する必要はありません。（CultureInfo、ProviderCurrentTime などの）付加的なサービスを提供する多くのメソッドやプロパティは実装されない場合があります。

OPCChannel は DataChannel の実装例です。カスタムコンポーネントを実装する前にソースコードを調査するのに役立ちます。


Destination and Basic Features

OLAP ModelKit の目的と基本的な機能

OLAP ModelKit は大量の統計データに基づいてクロスレポートを開発したり処理するためのものです。近頃は、大量の統計データの処理は自動的に行う以外には不可能なようです。同じ1つのデータセットのデータを同時に動的に変更しようとすると、行き詰ってしまうことがよくあります。OLAP ModelKit はそのようなことを処理する有効的な解決法と言えます。

OLAP ModelKit にはピボットテーブルを操作するためのグラフィカルデザイナが完全装備されています。これを使用してレポート作成に使用するデータを表現できます。既存のレポートを表示するには、データセットから必要なフィールドをデザイナのフィールドにドラッグするだけです。ボタンをいくつかクリックするだけでレポートのスタイルを設定できます。

すべてのディメンショングループを考慮に入れて同じデータを表現することも簡単で、グループヘッダをテーブルのフィールドにドラッグするだけです。

テーブルのディメンションとディメンションの交差セルに値を計算するための法則を割り当てるには、さまざまな式を使用できます。これによりデータセットのデータに応じてテーブルを編集することができます。式を使用することで、希望するレポートの複数のデータセットのフィールド値の基本的な足し算から、色々なグループの並べ替え（例えば、日付を年、月、四半期、曜日ごとに並べ替えたり、グループ内で値の間隔を示して並べ替えるなど）まで、色々なことを行うことができます。

ピボットテーブルのディメンションの交差値を計算するには、集計関数の1つを使用することができます（例：平均値計算または最大値/最小値の検索）。

前もって設定されたピボットテーブルの表示スタイルから1つを選択するか、XP スタイルを使用することができます。また、独自のスタイルを作成して、ファイルに保存して後で使用することもできます。

生成したピボットテーブルを使用するのはアプリケーションだけではありません。クロスレポートを印刷したり、現在のピボットテーブルの全設定（ユーザが指定したグループ化、データの並べ替えやフィルタ処理、表示スタイルなど）を考慮する Excel テーブル、PDF、HTML ドキュメントにエクスポートできます。

すべてのピボットテーブル設定をファイルに保存できるので、テーブルをいつでも構成前の状態に瞬時に戻すことができます。


Getting Started

基本的な使い方

DataCube コンポーネントは外部のデータソースのデータをピボットテーブルとしてまとめるためのものです。テーブルを指定するには、（行や列ごとに）各ディメンションフィールドを指定しなければなりません。また、行と列の交差セルの値を計算するために、データを取得するフィールドも指定しなければなりません。

データにアクセスする法則は、式を使用してフィールドに指定します。

簡単な算術演算や論理演算を式に使用することができます。変数としてソースフィールドも式に使用することができます。

行と列の交差セルのデータ集計に使用する集計関数をファクトフィールドにも指定できます。

DataCubeGrid コンポーネントは Datacube のデータを表示するためのものです。それには、DataCubeGrid の Source プロパティを指定する必要があります。

ここに、簡単な OLAP ModelKit の使用例があります。このサンプルは OLAP ModelKit の 「GettingStartedExample」 フォルダにあります。

ある製品の各企業の売上データを表すピボットテーブルを作成します。

最初のデータテーブルの構造は下図の通りです。

処理後のテーブル内のデータのグループ化は下図のようになります。

列には「会社名」が、行には「商品分類」と「商品名」が表示されます。ファクトフィールドには商品の価格、数量、割引を考慮した「金額」が表示されます。

デモのデータベース：Access の 「NWind.mdb」 をソースデータとして使用します。

Microsoft Visual Studio を立ち上げ、新規の C# の Windows Application プロジェクトを作成します。

始めに、レポートのデータソースを作成します。それには、フォームに System.Data.DataSet オブジェクトを追加して最初のデータテーブル構造と同じフィールドを含んだ Sales テーブルを作成します。

フォームに DataCube オブジェクトを追加します。DataSource の値として DataSet の Sales テーブルを設定します。DataCube オブジェクトをダブルクリックするか、DataCube オブジェクトのスマートタグから「デザイナの起動」を選択してデザイナ（データキューブウィザード）を立ち上げます。

[ソースフィールド]にある 「CompanyName」 を [X ディメンションフィールド] にドラッグし、キャプションを「会社名」に変更します。[ソースフィールド]の 「CategoryName」 と 「ProductName」 を [Yディメンションフィールド]にドラッグして追加し、キャプションをそれぞれ「商品分類」と「商品名」に変更します。

[ファクトフィールド]の追加ボタンをクリックし、新規フィールドに次のプロパティを定義します。

Expression プロパティ：UnitPrice * Quantity * (1 - Discount)

Caption プロパティ：金額（割引後）

Field type プロパティ：FactOnly

Format プロパティ：0.00

Width プロパティ：150

Total label プロパティ：Total price

「スタイルシート」タブで、ピボットテーブルの表示スタイルを指定します。「自動フォーマット」ボタンをクリックすると既存のスタイルから1つ選択できます。

フォームに 「DataCubeGrid」 オブジェクトを追加します。

「DataCubeGrid」 の Source プロパティに、編集した 「DataCube」 オブジェクトを設定します。

フォームの upload イベントハンドラに、DataSet の Sales テーブルを表示させるコードを追加します。

アプリケーションを実行すると、フォームに作成したピボットテーブルが表示されます。

このテーブルで、フィールドのヘッダーをドラッグしてレイアウトを変更できます。また、並べ替えや値や条件によるフィルタ処理も設定できます。


Concept

コンセプト

OLAP ModelKit のピボットテーブルは複数データの統計分析に使用するよう設計された、一種のインタラクティブなテーブルです。このようなインタラクティブなテーブルの行や列は、初期テーブルの複数の列から取得したデータ、または他のデータソースから取得したデータに基づいています。

ピボットテーブルのセル情報は対象となる行や列の集計データです。

一般的に、OLAP キューブはマルチディメンションの OLAP データ、つまりディメンション（マルチディメンションキューブの軸を形成する記述データ）やファクト（コンピュータによる定量値）を含んだ構造を表します。ディメンションに値のマルチレベル階層を含めることができ、メジャーは統計分析で関心のあるデータソースフィールドに基づいた集計データ（合計、平均値、最大値または最小値、レコード数）です。

ピボットテーブルを作成するにはあらかじめ次の作業を行っておかなければなりません。

  • データのグループ化
  • サブグループの小計計算
  • 合計計算

フィールドオブジェクトを使用してディメンションやファクトを定義します。フィールドには、ピボットテーブルの計算に使う初期テーブルのデータやピボットテーブルの提供方法を指定できます。また、1つのディメンションフィールドの表示順がそのディメンションのデータのグループ化も行っています。

（ディメンションやファクトの）フィールドに式を設定することによりフィールド値を定義できます。集計関数はファクトに設定され、ファクトの値は式の集計結果となります。従って、ピボットテーブルの作成手順は次のように行われます。

「データのグループ化」段階

この段階で、テーブルのディメンションのツリー構造が構成されています。各ツリーノード（ディメンションフィールドの値）については、データソースのデータと一致するフィールドの式が計算されます。ここで次のグループ化が考慮されています。

グループ： ツリーノード（ディメンションフィールド一覧のフィールドが挿入されています）

サブグループ： このツリーノードのリーフ（ディメンションフィールド一覧の後続フィールド）

「サブグループの小計計算」段階

この段階で、結果となるピボットテーブルに直接読み込まれます。ファクト（ディメンションの交差セル）の値はファクトのフィールドの式（Expressionプロパティ）により計算されます。式の計算は「データのグループ化」の段階で構成された、すべてのディメンションのグループの値に応じて行われます。

「合計計算」段階

一般的には、合計計算はサブグループのテーブルの読み込みと同時に行われます。計算済みのファクト値を基にして、フィールドに指定した集計関数を考慮しながら合計計算が行われます。

さらに、並べ替え順を変更してデータをランダムに組み合わせてフィルタ処理を行ったり、データをパーセント表示にしたり、ピボットテーブルを色々と便利に変換したりすることができます。


Data Sources

データソース

次のクラスを OLAP ModelKit のデータソースとして使用できます。

- ADO.NET オブジェクト - System.Data.DataSet、System.Data.DataView、System.Data.DataTable

- System.ComponentModel.IListSource または System.Collections.Ilist インターフェースを実装するユーザ定義のクラス（ビジネスオブジェクト）

ピボットテーブルのデータソースは DataCube クラスの DataSources プロパティで指定します。このプロパティは System.Object 型です。

プロパティエディタからピボットテーブルのデータソースを指定するには、DataCube オブジェクトを選択し、プロパティウィンドウの DataSource プロパティのエディタを開きます。このエディタにはフォーム上のデータソースとして使用するのに適したオブジェクト名のリストが表示されます。データソースとして使用するオブジェクト名を選択します。

その後、データソースとして選択したオブジェクトのプロパティがピボットテーブルを編集するために DataCube オブジェクトで使用可能になります。

＜入れ子のデータソース＞

OLAP ModelKit は入れ子のデータソースをサポートします。現在は、計算に必要な特別なデータアクセスを用意する必要はありません。接続した複数のテーブルから単一のデータセットにデータをアップロードするだけです。次に、親テーブルを DataCube オブジェクトの DataSource プロパティに指定します。JointFields プロパティ（文字列配列）には、データソースの子要素との接続を行うデータソースフィールドのリストを含むよう設定します。

例えば、下図のデータ構造を使用する場合、Customers テーブルを DataCube オブジェクトの DataSource プロパティに指定し、JointFields プロパティは次のように設定されなければなりません。

"CustomersTable"

"CustomersOrders"

ディメンションフィールドとファクトフィールドの式に、ソースのパス（例：CustomersTable.tableRowValue または CustomersOrders.OrderId） を指定して、入れ子のデータソースフィールドを参照することができます。


Working with the DataCubeGrid Component (Pivot Table Presentation, Manipulation)

DataCubeGrid コンポーネントの使い方（ピボットテーブルの表現と操作法）

DataCubeGrid オブジェクトはピボットテーブルをアプリケーションのフォームに表示する、インタラクティブなコントロールです。ユーザはそこで最終的なピボットテーブルを表示したり、外観や内容を編集したり、印刷またはテーブルを他のファイル形式にエクスポートできます。

DataCubeGrid は次のように表示されます。

「除外するフィールド」の領域には DataCube で指定したフィールドヘッダーが表示されますが、ピボットテーブルの計算には含まれません。

「X ディメンションフィールド」の領域にはピボットテーブルの列を定義するフィールドヘッダーが表示されます。

「Y ディメンションのフィールド」の領域にはピボットテーブルの行を定義するフィールドヘッダーが表示されます。

「ファクトフィールド」の領域にはピボットテーブルのファクトのフィールドヘッダーが表示されます。

「X ディメンションフィールド」の領域のフィールドにはピボットテーブルの行を指定し、「Y ディメンションフィールド」の領域のフィールドにはピボットテーブルの列を指定します。DataCubeGrid の列幅は枠をマウスでドラッグして変更できます。

ディメンションのフィールドヘッダーの直下に、（グループ化に応じて）ディメンションの値が表示されます。グループ化はデータキューブフィールドの表示順で定義されます。また、条件の [image] ( / [image] ボタン)で、グループ値をドリルダウン/ロールアップすることができます。このグループ値には合計とは別のサブグループの値があります。

フィールドヘッダーをドラッグできます。ヘッダーは「除外するフィールド」、「X ディメンションフィールド」、「Y ディメンションフィールド」、「ファクトフィールド」の領域に移動できます。また、1つの領域でフィールドの順番を変更することもできます。

フィールドのヘッダーはインタラクティブで、各ヘッダーには各フィールドのフィルタ設定ダイアログを開くフィルタボタン（ [image] ）があります。

フィールド値のフィルタ処理には、「値によるフィルタ処理」と「条件によるフィルタ処理」の2つの方法があります。

値によるフィルタ処理を設定するには、表示するフィールド値を選択します。また、「すべて選択」 [image] ボタンをクリックすると、すべてのフィールド値にフィルタ処理を設定することもできます。フィルタ処理をキャンセルするには、「すべて解除」 [image] ボタンをクリックします。フィルタ処理の選択を反転するには、「すべて反転」 [image] ボタンをクリックします。

条件によりデータをフィルタ処理するには、必要なフィールド値を選択するための式を指定します。OK ボタンをクリックするとフィルタ処理の条件を保存し、あらかじめ設定したフィルタ処理の条件に応じてピボットテーブルの再計算が行われます。「キャンセル」ボタンはすべてのフィルタ処理の変更を無視してダイアログウィンドウを閉じます。

ピボットテーブルの計算に使用するフィールドヘッダーを使用してピボットテーブルの並べ替え指定が行えます。ディメンションのフィールドヘッダーをクリックすると、グループ化を考慮しながらそのディメンションの並べ替えが行われます。テーブルのファクトを定義するフィールドヘッダーをクリックすると、そのディメンションを考慮しながらファクト値の列の並べ替えが行われ、文字列表示順が変わります。合計の列で並べ替え機能を使用すると、容易に定量分析が行えます。

右マウスボタンをクリックすると、次のコンテキストメニューが表示されます。

このコンテキストメニューには次の項目が含まれています。

メニュー | 説明
昇順 | 昇順ソートの設定に使用します
降順 | 降順ソートの設定に使用します
すべて折りたたむ | すべてのフィールドグループを折りたたむために使用します
すべて開く | すべてのフィールドグループを開くために使用します
フィールドの幅を揃える | フィールドの幅を最大幅に合わせるために使用します
ファクトに移動 | フィールドをファクトに移動するために使用します
行に移動 | フィールドを行のディメンションに移動するために使用します
列に移動 | フィールドを列のディメンションに移動するために使用します
除外するフィールドに移動 | フィールドをピボットテーブルの計算から除外するために使用します
グループ設定 | フィールドのグループ設定を行うウィンドウを開くために使用します

DataCubeGrid ツールのセットにはツールボックスも含まれます。

次のボタンがあります。

ボタン | 説明
「開く」ボタン | DataCube のレイアウトや/または表示スタイルをダウンロードするファイルを選択できます
「保存」ボタン | ファイルの保存ダイアログを呼び出します。ここで何を保存するか（DataCube レイアウト、ピボットテーブルの表示スタイル、両方）を定義できます。
「HTML にエクスポート」ボタン | HTML エクスポートダイアログボックス（名前を付けて保存ダイアログボックス）を開きます。しかも、ピボットテーブルの現在の状態（レイアウト、スタイル、列幅、並べ替え、フィルタ処理、ディメンションフィールドのグループの折りたたみ）が考慮されます。
「エクセルにエクスポート」ボタン | MS Excel エクスポートダイアログ（名前を付けて保存ダイアログボックス）を開きます。ファイルはピボットテーブルの現在の状態のまま保存されます。
「PDF にエクスポート」ボタン | PDF エクスポート設定ダイアログボックスを開きます。「ページ設定」タブで、最終的な PDF ドキュメントの設定（ページサイズ、用紙の向き、インデント）を指定できます。
「印刷設定」ボタン | 印刷設定ダイアログを開きます。
「印刷プレビュー」ボタン | 印刷前にピボットテーブルのプレビューが行えます。しかも、印刷設定ダイアログウィンドウで指定した設定はそのままで、ピボットテーブルはページごとに表示されます。
「印刷」ボタン | ピボットテーブルの印刷を行います。
「再計算」ボタン | ピボットテーブルの再計算を行います。
「自動再計算」ボタン | テーブルのレイアウトやフィルタ処理の条件が変わった場合にピボットテーブルの自動再計算を行うかどうかの切り替えをオン/オフにします。このボタンは大量のデータを操作する場合に使用すると合理的です。設定を指定した後にピボットテーブルを再計算するには、「自動再計算」ボタンをオンにして「再計算」ボタンを押してください。
「ウィザード」ボタン | ピボットテーブルを編集するためにデータキューブウィザードを開きます。

PDF の「ページ設定」タブは次のように表示されます。

下図の「エクスポート設定」タブで、PDF ドキュメントのピボットテーブルの外観を設定できます。ここで、ピボットテーブルのディメンション、ディメンションのヘッダー名やフィールド名、ファクトをドキュメントの各ページに表示するかどうかを定義できます。さらに、ピポットテーブルで使用するフォントをドキュメントに組み込むかどうかも指定できます。

データキューブウィザードは下図のように表示されます。

データキューブウィザードで、ピボットテーブルのレイアウトや表示スタイルを変更できます。データキューブウィザードにはピボットテーブルを構成する4つのフィールド一覧があります。

ソースフィールド - すべてのデータソースフィールドの一覧

除外するフィールド - ピボットテーブルを構成するためのフィールド一覧ですが、ピボットテーブルの計算には含まれません。

X ディメンションフィールド - データソースから選択したフィールドまたは列のディメンションを構成するために作成されたフィールド一覧です。

Y ディメンションフィールド - データソースから選択したフィールドまたは行のディメンションを構成するために作成されたフィールド一覧です。

ファクトフィールド - データソースから選択されたフィールドまたはピボットテーブルのファクトを構成するために作成されたフィールド一覧です。

フィールドをドラッグして1つの一覧から別の一覧に移動したり、同じ一覧でフィールドをドラッグして順番を変更できます。ピボットテーブルのフィールド一覧の項目をより簡単に変更するために各一覧には次のようなボタンパネルがあります。

ボタン | 説明
上に移動 | 一覧で選択したフィールドを1つ上に移動します
下に移動 | 一覧で選択したフィールドを1つ下に移動します
フィールドの追加 | 一覧に新規フィールドを作成します
フィールドの削除 | 一覧から選択したフィールドを削除します

データキューブウィザードウィンドウには選択したフィールドのプロパティエディタ（フィールドのプロパティ）があります。

プロパティ | 説明
Aggregate | フィールドのデータ集計型を設定します（ファクトのみの場合に有効で）
Expression | フィールドに式を設定します
FieldType | フィールド型を設定します（ファクトのみ、ディメンションのみ、両方）
SortOrder | フィールドデータの並べ替え順を設定します
Caption | フィールドのキャプションを設定します
Format | フィールドのデータを出力する文字列形式を設定します
ShowPercent | フィールドのデータをパーセントで表すかを定義します
ShowProgress | セルに進捗バーを表示するかを定義します。このプロパティを設定するには、ShowPercent プロパティを 設定する必要があります（ファクトのみの場合に有効です）。
TotalLabel | フィールドの合計のキャプションを設定します
Width | フィールドの幅を設定します

データキューブウィザードには次のボタンもあります。

ボタン | 説明
開く | ピボットテーブルの設定をアップロードできます
保存 | ピボットテーブルの設定を保存できます。ピボットテーブルのレイアウト、表示スタイル、または両方を保存できます。
自動フォーマット | スタイルを選択するダイアログボックスを開きます

データキューブウィザードには「スタイルシートタブ」があります。

このタブで、ピボットテーブルの外観設定を指定できます。特に、X ディメンションや Y ディメンション、フィールドのヘッダー、ファクトテーブルの偶数/奇数行の文字列、合計の交差部分などの表示スタイルを定義できます。これを行うには、一覧からテーブルの項目を選択してプロパティグリッドでその項目のプロパティを指定します。


Destination and General Principles of Expression Use

式の使用目的とそのしくみ

ピボットテーブルに指定したすべてのフィールド（ファクトやディメンション）に式を割り当てることができます。式の計算結果はフィールド値を定義し、その結果ディメンションフィールドの値とファクト値を定義します。ファクトに関しては、式の結果として定義された値が集計に使用されます。

式の使用順は次の通りです。ピボットテーブルの構成時に、ディメンションフィールドまたはファクトセルの値を計算するためにディメンションフィールドまたはファクトフィールドに式が割り当てられます。そこでファクトとディメンションの交差部分やディメンションフィールドのデータソースの値を考慮しながらフィールドの式が計算されます。計算された値がテーブルに表示されます。

計算時に式に構文エラー、セマンティックエラーまたは例外が生じた場合、例外メッセージが生成され、ユーザにエラーの種類やその位置に関する情報を提供します。


Description of the Expression Language Syntax

式言語の構文について

式は公式計算に関するタスクです。式の値は計算結果です。式は定数、オブジェクトおよびそのプロパティ・メソッド・演算子・関数の呼び出し、括弧で構築されます。

＜使用するデータ型＞

.NET Framework で利用可能なすべてのデータ型が式に使用されます。また、不動小数点数や論理値、文字列、DataTime 型の特別なサポートもあります。

＜式に使用可能な演算子＞

算術演算子：

記号 | 説明
+ | 加算。 数値に定義されます。
- | 減算。数値に定義されます。
- | 単項マイナス。 数値に定義されます。
* | 乗算。数値に定義されます。
/ | 除算。数値に定義されます。
% | 除算の剰余。数値に定義されます。

論理演算子：

記号 | 説明
or | 論理和を表す OR。論理値に定義されます。
and | 論理積を表す AND。 論理値に定義されます。
= | 等しい。 数値、文字列、論理値に定義されます。
! = | 等しくない。数値、文字列、論理値に定義されます。
< | ～より小さい。数値に定義されます。
<= | ～と同じか小さい。数値に定義されます。
> | ～より大きい。数値に定義されます。
>= | ～と同じか大きい。数値に定義されます。
not | 反転。 論理値に定義されます。

文字列演算子：

記号 | 説明
& | 文字列の結合。文字列の値に定義されます。

演算子の優先順位（降順）

'-' （単項マイナス）、'not'

'*'、'/'、'%'

'+'、'?'、'&'

'>'、'>='、'<'、'<='

'='、'!?'

'and'

'or'

定数の割り当て：

< 10進数字 >* - 整数値

< 10進数字 >*.< 10進数字 >* - 値

例：

1234 - 整数値

1234.1234 - 不動小数点数

文字列定数はダブルクォーテーションマーク(")で指定します。

例："それは文字列の値です"

論理的な定数は2つのキーワード、「True」 と 「False」 で指定します。

「Null」 定数 - この定数は不定値を指定するのに使用します。

＜変数、オブジェクト、オブジェクトフィールドやメソッドへのアクセス＞

フィールドに利用可能な変数の名前を指定することで式に変数を使用できます。変数名やオブジェクト名での検索は次のように行われます。式に、指定したオブジェクト名のアドレスがある場合、式を記述したフィールドに対して GetObject 関数（希望するオブジェクトを返します）が呼び出されます。

オブジェクトとしてのフィールドは「値」名で利用可能です。

点「.」 はオブジェクトフィールドやメソッドを参照するために使用します。

例：

Value.Year - フィールドの Year プロパティ （DateTime 型の値）への参照

Field1.ValueToString() - フィールド： Field1 ValueToString() メソッドの呼び出し

注意! オブジェクトのメソッドがオーバーロードの場合、呼び出すことはできません。

式言語が型指定されていない場合、何のメソッドを呼び出すか定義することはできません。

フィールドに利用可能な関数名を指定することで式に関数を使用できます。検索はオブジェクト同様、関数名で検索されます。

利用可能な関数は次の通りです。

条件付き関数

関数 | 説明
If(condition, value1, value2) | 最初のパラメータは論理型で、二番目と三番目は object 型になります。最初のパラメータが True の場合、関数は二番目のパラメータの値を返します。そうでなければ三番目のパラメータの値を返します。
switch (condition[0], value[0], … , value by default) | 条件 [i] が True の場合、関数は [i] の値を返します。任意の i の条件 [i] が False の場合、規定で value が返されます。

形式関数:

関数 | 説明
format (object, mask) | object は object 型で、mask は string 型です。マスクに従ってオブジェクトの文字列を返します。

数学的関数:

関数 | 説明
sin(argument) | 引数のサインを計算します。引数は double 型で、その計算結果は double 型になります。
cos(argument) | 引数のコサインを計算します。引数は double 型で、その計算結果は double 型になります。
tan(argument) | 引数のタンジェントを計算します。引数は double 型で、その計算結果は double 型になります。
atan(argument) | 引数のアークタンジェントを計算します。引数は double 型で、その計算結果は double 型になります。
sqr(argument) | 引数を二乗に計算します。引数は double 型で、その計算結果は double 型になります。
sqrt(argument) | 引数の平方根を計算します。引数は double 型で、その計算結果は double 型になります。
log(argument) | 引数の自然対数を計算します。引数は double 型で、その計算結果は double 型になります。
exp(argument) | eを底とする数値のべき乗を計算します。引数は double 型で、その計算結果は double 型になります。
sign(argument) | 引数が負の場合は-1、0の場合は0、正の場合は1を返します。引数は double 型で、その計算結果は int 型になります。
abs(argument) | 引数の絶対値を返します。引数は double 型で、その計算結果は double 型になります。
round(argument1, rgument2) | 第一引数に四捨五入の対象となる数値を、第二引数に基準値を指定します。最初の引数は double 型で、二番目の引数は int 型で、計算結果は double 型になります。

式は任意の関数やメソッドの引数になることができます。式の計算結果が引数の型に合わない場合、式は計算されません。

文字列関数:

関数 | 説明
сoncat(string1, string2) | パラメータに指定した2つの文字列を結合して返します
indexOf(string1, string2[, start]) | string1 の指定した位置から string2 のインデックスを返します
insert (string, position, subString) | position の位置から subString を String に貼り付けます
length(string1) | string1 の長さを返します
padLeft(string, length, char) | 左から指定した長さ （length） まで string に char の文字を補足します
padRight(string, length, char) | 右から指定した長さ （length） まで string に char の文字を補足します
remove (string1, start, length) | string1 の start 位置から length まで substring を削除します
replace(string, subString, newSubString) | string 内の substring を newSubString に置換します
subString(subString (string, start, length)) | 文字列内の指定位置からの指定された長さを持つ部分を返します
toLower(string) | string を下のレジストリにキャストします
toUpper(string) | string を上のレジストリにキャストします
trim(string) | string の空白文字を削除します
trimEnd(string) | string の終わりにある空白文字を削除します
trimStart(string) | string の始めにある空白文字を削除します
regIsMatch(string, expressionString) | expressionString の正規表現に一致する string の文字を返します
regReplace(string, expressionString, newString) | string 内の expressionString の正規表現に該当する substring を newString で置換します

日付関数

関数 | 説明
getMonth (argument) | 引数に指定した日付で月を返します。引数は System.DateTime 型になります。
getDayOfWeek (argument) | 引数に指定した日付で曜日を返します。引数は System.DateTime 型になります。
getQuarter (argument) | 引数に指定した日付の四半期を返します。引数は System.DateTime 型になります。
addDays(date, n) | Date オブジェクトに ｎ 日を追加します
addHours(date, n) | Date オブジェクトに ｎ 時 （Hour） を追加します
addMinutes(date, n) | Date オブジェクトに ｎ 分を追加します
addMonths(date, n) | Date オブジェクトに ｎ 月を追加します
addSeconds(date, n) | Date オブジェクトに ｎ 秒を追加します
addYears(date, n) | Date オブジェクトに ｎ 年を追加します
getDate(date) | 時間なしの Date オブジェクトを返します
getDayOfMonth(date) | Date オブジェクトの日付を返します
getDayOfYear(date) | Date オブジェクトの年間の通算日を返します
getHour(date) | Date オブジェクトの指定した日時 （Hour） を返します
getMinute(date) | Date オブジェクトの指定した日の分を返します
getSecond(date) | Date オブジェクトの指定した日の秒を返します
getTime(date) | Date オブジェクトの指定した日の時間を返します
getYear(date) | Date オブジェクトの指定した日の年を返します
toShortDateString(date) | 日付の文字列を返します
toShortTimeString(date) | 時間の文字列を返します

ランキング関数:

関数 | 説明
Range (currentValue, range, zeroPoint) | データの間隔を取り出します。すべての引数は数値型になります。
currentValue | 現在値
range | 範囲
zeroPoint | 原点

例：

新しいフィールドを作成して Expression プロパティに "Range(OrderDate.Year, 4, 0)" を指定します。ここでは、OrderDate は System.DateTime 型のデータソースフィールドです。 結果は下図のようになります。

式に、カスタム関数や変数を記述できます。

オブジェクトの式に使用可能なカスタム関数や変数を作成するには、PerpetuumSoft.Framework.Expressions.IExpressionSite インターフェースを実現するカスタムなオブジェクトを実装する必要があります。その後、カスタム関数を登録してください。登録は次のように行います。

PerpetuumSoft.Framework.Expressions.BuiltInFunctions.RegisterFunction(<Function name>, <inplemented IFunction object>);

＜データソースの入れ子フィールドへのアクセス＞

式で、データソースの入れ子フィールドを参照することができます。参照自体は DataCube.DataSource プロパティに指定したメインソースの入れ子フィールドの絶対パスを指定することにより参照されます。例えば、下図のデータ構造を使用する場合、Orders tableのOrderDateフィールドとFreightフィールドのアクセスコードは次のようになります。

メインソースに関するフィールドの完全なパスを DataCube.DataSource プロパティに指定することにより参照されます。例えば、下図のデータスキーマを使用する場合、Orders テーブルの OrderDate フィールドと Freight フィールドのアクセスコードは次のようになります。

OrderDate フィールド："CustomersOrders.OrderDate"

Freight フィールド："ustomersOrders.Freight"


Components Used in Windows Forms Applications

Windows フォームアプリケーションで使用するコンポーネント

Windows フォームアプリケーションでピボットテーブルを表示したり操作するには、以下の4つのコンポーネントを使用します。

コンポーネント | 説明
DataCube（ [image] ） | 外部ソースのデータをピボットテーブルにまとめます。DataCube はピボットテーブルのレイアウト、表示スタイルを格納し、ピボットテーブルの印刷やエクスポートが可能です。
DataCubeGrid（ [image] ） | DataCube のデータを表示します。DataCubeGrid は印刷やエクスポートを行うだけでなく、ピボットテーブルのレイアウトや表示スタイルをインタラクティブに変更できます。
DataCubePrintDocument（ [image] ） | ピボットテーブルをページ分割して印刷デバイスに送ります。
DataCubeView（ [image] ） | DataCube オブジェクトに格納されているデータ表現を作成できます。（チャートコンポーネントやダイアグラムコンポーネントのような）同じデータを使用する他社のコンポーネントから DataCube に格納されているデータにアクセスするには、インターフェースを提供する必要があります。 DataCubeView コンポーネントはデータを線形テーブルとして提供して、ピボットテーブルのディメンションキューブを「詳細に表します」。線形テーブルの列には最初のキューブのファクトと1つのディメンションフィールドがあります。 DataCubeView はどのディメンションでも1つのキューブを線形テーブルに再編することができます。


The Use and Capabilities of the DataCube

DataCube の使い方とその機能

次のサンプルを使用して DataCube コンポーネントの使い方について説明します。

このサンプルは 「DataCubeUseExample」 フォルダにあります。

Windows フォームアプリケーションを作成し、フォームに OLAP ModelKit タブの DataCube コンポーネントオブジェクトを追加します。この新たに作成したオブジェクトの名前を 「salesDataCube」 にします。データソース （DataSource プロパティ）を指定する必要があります。それには、フォームに DataSet オブジェクトを追加し、このオブジェクトに 「Sales」 テーブルを作成します。「Sales」 テーブルの構造は下図の通りです。

ピボットテーブルのレイアウトを編集するには、「salesDataCube」 オブジェクトをダブルクリックするか、「salesDataCube」 を右クリックして 「デザイナの起動」を選択しデータキューブウィザードを呼び出します。

デザイナの「ソースフィールド」には 「Sales」 テーブルのフィールド名が表示されています。ピボットテーブルの行ディメンションを割り当てます。それには、「ソースフィールド」にある 「CategoryName」 フィールドと 「ProductName」 フィールドを 「Y ディメンションフィールド」にドラッグします。これが行ディメンションになり、品名別、カテゴリ別でグループ化されます。次に、列ディメンションに、売上のあった年、四半期、月、会社名を割り当てていきます。「X ディメンションフィールド」に次の3つのフィールドを作成し、その新たに作成したフィールドの Expression プロパティを次のように設定します。

Year    -  OrderDate.Year

Quarter -  getQuarter(OrderDate)

Month   -  getMonth(OrderDate)

また、「ソースフィールド」の 「CompanyName」 フィールドを 「X ディメンションフィールド」にドラッグします。これで列ディメンションができました。ここに、会社名、年、四半期、月別にデータがグループ化されます。

すべてのディメンションフィールドの FieldType プロパティを 「DimensionOnly」 に指定します。

ピボットテーブルにファクトを指定します。まず、「ファクトフィールド」にフィールドを1つ作成し、このフィールド名を設定するために Caption プロパティに「合計」を割り当てます。このフィールドの Expression プロパティに、"UnitPrice*Quantity*(1 - Discount)" を定義します。このファクトは単価、数量、値引きを考慮した、ある会社の指定した日の商品の最終的な売上合計を表します。また、「ソースフィールド」の 「Discount」 フィールドを「ファクトフィールド」にドラッグし、ShowPercent プロパティと ShowProgress プロパティを True に設定します。その後、そのファクトの集計関数を選択します。Aggregate プロパティに「平均」を指定します。このファクトは指定した商品の平均的な値引額をパーセントで表します。また、「ファクトフィールド」のすべてのフィールドの Format プロパティに "0.00" を設定します。

ピボットテーブルのレイアウトは次の通りです。

では、データキューブウィザードの「スタイルシート」タブでピボットテーブルの表示スタイルを指定します。

それには、「自動フォーマット」ダイアログを開き、あらかじめ定義されているピボットテーブルの表示スタイルから1つを選択します。次に、保存ダイアログボックスを開いてファイルの種類を 「Layout and sheet」 に指定してピボットテーブルの設定を保存します。


The Use and Capabilities of the DataCubeGrid

DataCubeGrid の使用法とその機能

DataCubeGrid の機能について例をあげて説明します。

このサンプルは 「DataCubeGridUseExample」 フォルダにあります。

Windows フォームアプリケーションを作成し、OLAP ModelKit タブにある DataCubeGid コンポーネントオブジェクトをフォームに追加します。

「DataCubeGrid」 を使用するには、「DataCubeGrid」 に 「DataCube」 を指定する必要があります。フォームに 「DataSet」 と 「DataCube」 を追加して作成します。DataCube の使い方とその機能で紹介したように 「DataCube」 と 「DataSet」 を設定してください。

「DataCube」 （サンプルでは salesDataCube） の ShowSingleFact プロパティを True に設定します。これはファクトヘッダーが1つ表示されるようにするためです。

取得した 「DataCube」 を 「DataCubeGrid」 の Source プロパティに設定します（サンプルでは salesDataCube）。

form_load イベントに、「DataSet」 の 「Sales」 テーブルを出力するコードを追加します。

それから、form_load イベントハンドラに次のコードを記述します。

salesDataCube.RaiseDataCubeChanged();

「DataCube」 の設定を （DataCubeGrid からではなく）コードから変更する場合、「DataCubeGrid」 に設定変更を通知するよう DataCube.RaiseDataCubeChanged() を発生させる必要があります。この場合のみ、正しく変更されたピボットテーブルが表示されます。

アプリケーションを実行します。ピボットテーブルがフォームに表示されます。

「DataCubeGrid」 はピボットテーブルにビジュアルコントロールを実装できます。

保存ダイアログボックスのファイルの種類を "Layout and sheet" に指定し、ピボットテーブルの設定をファイルに保存します。目的は割引を考慮せずに、ある期間の、ある商品の金額を表示するようピボットテーブルを作成することです。まず、ファクトフィールド、X ディメンション、Y ディメンションから不要なフィールドを除きます。ここでの不要なフィールドは月、四半期、会社名、割引です。この4つのフィールドヘッダーを 「DataCubeGrid」 の「除外するフィールド」にドラッグすると、ピボットテーブルの計算から除外できます。

他には、フィールド上で右マウスボタンをクリックして、コンテキストメニューの「除外するフィールドに移動」を選択しても計算から除外できます。

指定したフィールドを計算に入れる必要がなくなった場合、データキューブウィザードを立ち上げて対象のフィールド一覧から削除するとテーブルから除外できます。

それから、ファクトフィールドの「金額」の Expression プロパティに "UnitPrice * Quantity" を設定します。これは割引を計算から除外します。OK ボタンを押してデザイナを閉じます。

ピボットテーブルの構成サイクルを指定するためにフィルタ処理機能を使用します。「Year」 フィールドヘッダーの [image] ボタンをクリックしてフィルタ処理ダイアログを呼び出して、「条件によるフィルタ処理」を選択します。例：「value < 1996 and value > 1994」

結果として、次のピボットテーブルが表示されます。

次に、保存しておいたピボットテーブルの設定を開きます。いらないグループを折りたたんだり並べ替え順を変更したりして、ピボットテーブルの外観を変更できます。それには、いらないグループの「-」ボタンをクリックして折りたたむか、フィールドのコンテキストメニューから変更内容を選択して外観を変更できます。

現在の設定のままでこのテーブルを印刷したり/または Excel、PDF、HTML ドキュメントにエクスポートできます。

テーブルの印刷は現在の印刷設定通りに行われます。印刷設定ダイアログを開いて設定を変更します。

次のように変更します。

「色を無効にする」（あらかじめ設定したピボットテーブルの表示スタイルを無視して印刷されます）と「各ページにフィールドタイトルを表示」（ピボットテーブルのフィールドタイトルがドキュメントの各ページに表示されます）を設定します。

また、「各ページにディメンションを表示」と「各ページにタイトルを表示」を無効にします（ディメンションのグループが1回しか印刷されません）（ピボットテーブルのヘッダーが1回しか印刷されません）。

その後、この設定通りに印刷プレビューや印刷が行われます。


Working with Groups

グループを使用する

ピボットテーブルのディメンションのデータをグループ化することにより、さらに詳細なレポートを作成できます。OLAP ModelKit はデータを表すフィールドを指定する順番を考慮しながらデフォルトでディメンションのデータをグループ化することができます。グループ化をさらにフレキシブルにするために、OLAP ModelKit はグループ化の規則をカスタマイズすることができます。この機能を示した例について説明します。

このサンプルは 「CustomGroupingExample」 にあります。

国とその国の地域ごとに売上の詳細情報を取得しなければならない場合について考えていきます。

Windows フォームアプリケーションを作成し、フォームに DataCube コンポーネントオブジェクトを追加します。その新たに作成したオブジェクト名を 「salesDataCube」 にします。ピボットテーブルのレイアウトが下図のようになるように、「salesDataCube」 オブジェクトを編集します。

結果としてピボットテーブルは次のようになるはずです。

グループ化を指定するために、データキューブウィザードを使用してピボットテーブルにフィールドをもう1つ作成します。その新たに作成したフィールドに次のプロパティを設定します。

Caption = 「地域」

Expression = 「Country」

ピボットテーブルは次のようになります。

次に、「地域」フィールド上を右クリックしてコンテキストメニューから「グループ設定」を選択します。

これで、このフィールドの「グループ設定」ダイアログが表示されます。

項目リストに、式の計算結果として取得したすべてのフィールド値が表示されます。この場合は、国名が表示されます。これらの国を地域ごとにグループ化するには、グループを追加する必要があります。「追加」ボタンをクリックして、グループ名を指定します（例：America）。

「America」 のグループに、Brazil、Canada、USA を追加します。それには、国を選択し、下図にあるようにマウスで希望するグループまでドラッグします。

値を「グループ」に追加すると項目リストからなくなり、グループのツリーにリーフのように表示されます。

同じように 「Asia」 と 「Europe」 を追加します。

「OK」 ボタンを押します。結果としてこのピボットテーブルは下図のようになります。

式を使用することにより、もっとフレキシブルにグループ化を行うことができます。

例えば、前のサンプルで示した国のグループ化を国名の頭文字で行うことができます。それには、「アルファベット」フィールドを作成し、Expression プロパティに、subString(Country, 0, 1) を指定します。このグループ化の実行結果は下図の通りです。

グループを指定するには、式言語で定義された Range 関数を使用することもできます（ユーザガイドの「式言語の構文について」を参照してください）。


The Work with Large Body of Data

大量のデータを扱うには

OLAP ModelKit は大量のデータを使用するピボットテーブルを作成できます。その際に、さらに便利に使用できるように OLAP ModelKit には特別な機能が提供されています。

ピボットテーブルの計算は独立したスレッドで行われます。これはユーザがいつでも計算を中断できるようにするためです。「DataCubeGrid」 を使用する際に、次のように中断できます。ピボットテーブルの再計算が始まると、計算の進捗状況を示すダイアログボックスが表示されます。このダイアログボックスにもキャンセルボタンがあるので、これを押すだけで正確に計算を中断できます。

ピボットテーブルの同時計算をオン/オフにするには、DataCubeGrid.CalculationMode プロパティを使用します。

「DataCubeGrid」 の対話型処理を一時的にオフにできます。従って、テーブルの再計算に必要な設定を行う際には計算は行われません。結果として、大量のデータを扱う際に、ピボットテーブルのレイアウトを変更したり、必要なフィルタ処理を設定したり、値をグループ化することができ、その後にしか再計算を行うことができません。この操作を行うために、 「DataCubeGrid」 ツールバーに再計算 [image] ボタンと自動再計算 [image] ボタンが用意されています。自動再計算ボタンは対話型処理をオン/オフにできます。


Custom Cell Styles

セルスタイルのカスタマイズ

DataCubeGrid コンポーネントを使用する場合、表示されたデータキューブのスタイルシートのセルスタイルを部分的に変更する場合があります。

セルスタイルをカスタマイズする方法を示したサンプルが 「DataCubeGridCustomDrawing」 にあります。

セルスタイルを変更するには、DataCubeGrid オブジェクトの DrawCell イベントを使用します。

DrawCell イベントは DataCubeGrid オブジェクトが描画されるたびに呼び出されます。しかも、このイベントハンドラは引数として DrawCellEventArgs オブジェクトを取得します。

DrawCellEventArgs オブジェクトの次のプロパティを使用してください。

プロパティ | 説明
CellStyle | PerpetuumSoft.Olap.CellStyle 型のオブジェクトで、描画されたテーブルオブジェクトの現在のスタイル情報を含んでいます。セルの表示スタイルをカスタマイズするには、このプロパティを変更してください。
CellInfo | テーブルセルの情報です。PerpetuumSoft.OlapCellInfo 型についての詳細は、クラスリファレンスを参照してください。
IsActiveCell | 指定したセルがアクティブなテーブルセルかどうかを定義します。

DrawCell イベントハンドラの例は次の通りです。

private PerpetuumSoft.Olap.CellStyle customStyle = new CellStyle(Color.Purple, Color.Black);

private void dataCubeGrid1_DrawCell(object sender, PerpetuumSoft.Olap.DrawCellEventArgs e)

{

    if (e.CellInfo.XFieldItem != null && e.CellInfo.YFieldItem != null)

    {

        bool contains = CanChangeStyle(e.CellInfo.XFieldItem, textBox1.Text);

        if (contains && !e.IsActiveCell)

            e.CellStyle = customStyle;

        contains = CanChangeStyle(e.CellInfo.YFieldItem, textBox2.Text);

        if (contains && !e.IsActiveCell)

            e.CellStyle = customStyle;

    }

}

private bool CanChangeStyle (PerpetuumSoft.Olap.FieldItem item, string text)

{

    PerpetuumSoft.Olap.FieldItem fi = item;

    while(fi != null && fi.Value != null)

    {

        if ((text.Length > 0) && (fi.Value.ToString().IndexOf(text) >= 0))

            return true;

        fi = fi.Parent;

    }

    return false;

}


Custom Drawing

カスタム描画

DataCubeGrid コンポーネントの使用時にテーブルの各オブジェクトのスタイルを変更できるだけでなく、1つもしくは別のテーブルのオブジェクトを手で書くことができます。グリッドセルの描画時に、DataCubeGrid.DrawGridItem イベントが呼び出されます。従って、特定のテーブルセルの描画メソッドを変更するには、このイベントにハンドラを実装する必要があります。引数としてこのイベントハンドラに DrawGridItemEventArgs オブジェクトが渡されます。

DrawGridItemEventArgs オブジェクトの次のプロパティを使用します。

プロパティ | 説明
Graphics | System.Drawing.Graphics 型のオブジェクトで、テーブルを描画するためにあります。
Bounds | System.Drawing.Rectangle 型のオブジェクトで、テーブル内のオブジェクトの位置情報を含んでいます。
CellStyle | PerpetuumSoft.Olap.CellStyle 型のオブジェクトで、描画されたテーブルセルの現在のスタイル情報を含んでいます。
CellInfo | テーブルセルに関する情報です。PerpetuumSoft.OlapCellInfo 型の詳細はクラスリファレンスを参照してください。
Handled | True の場合、DataCubeGrid はオブジェクト自体を描画しません。

DrawGridItemCell イベントハンドラの例は次の通りです。

private void dataCubeGrid1_DrawGridItem(object sender, PerpetuumSoft.Olap.DrawGridItemEventArgs e)

{

    if ((e.CellInfo.XFieldItem != null && e.CellInfo.YFieldItem == null && e.CellInfo.XFieldItem.Value.ToString().IndexOf(textBox1.Text) >= 0 && textBox1.Text.Length > 0)

        ||(e.CellInfo.XFieldItem == null && e.CellInfo.YFieldItem != null && e.CellInfo.YFieldItem.Value.ToString().IndexOf(textBox2.Text) >= 0 && textBox2.Text.Length > 0))

    {

        Brush b = new System.Drawing.Drawing2D.LinearGradientBrush(e.Bounds, Color.White, Color.Purple, 30);

        e.Graphics.FillRectangle(b, e.Bounds);

        e.Graphics.DrawString(e.Value, new Font("Arial", 8, FontStyle.Bold), Brushes.Black, e.Bounds);

        e.Handled = true;

    }

}

カスタム描画を使用したサンプルは 「DataCubeGridCustomDrawing」 フォルダにあります。

前述したイベント（DataCubeGrid.DrawCell イベントや DataCubeGrid.DrawGridItem イベント）が提供する機能で、テーブルに特殊なタスク向きのカスタムメイドな外観を提供できます。しかし、それでも十分ではない場合は、DataCubeGrid オブジェクトに完全なカスタム描画を割り当てることができます。それには、PerpetuumSoft.Olap.Painter 抽象クラスから派生したクラスを作成し、そのクラスを本来のピボットテーブルのペインタ （myDataCubeGrid.Painter = myCustomPainter） として指定してください。


The Use and Capabilities of DataCubePrintDocument

DataCubePrintDocument の使い方とその機能

DataCubePrintDocument コンポーネントはピボットテーブルを印刷デバイスに出力するために使用します。

このサンプルは 「DataCubePrintDocumentUseExample」 フォルダにあります。

Windows フォームアプリケーションを作成し、フォームに OLAP ModelKit タブの DataCubePrintDocument コンポーネントオブジェクトを追加します。

後で使用するために DataCube を DataCubePrintDocument に指定します。フォームに、DataSet と DataCube を追加し、ユーザガイドの 「DataCube の使い方とその機能」で説明したように設定します。

取得した DataCube を DataCubePrintDocument の DataCube プロパティに指定します。

次のコードを DataCubePrintDocument オブジェクトの BeginPrint イベントに追加します。

MessageBox.Show("Start of printing.");

MessageBox.Show("End of printing.");

DataSet の Sales テーブルを出力するコードをフォームの filling イベントに追加します。

また、フォームに次の4つの System.Windows.Forms.CheckBox オブジェクトも追加します。

isMultiColorCheckBox;

dimensionsOnEveryPageCheckBox;

titleOnEveryPageCheckBox;

fieldCaptionsOnEveryPageCheckBox;

そして、そのプロパティを下図のように設定します。

次に、フォームに System.Windows.Forms.PrintDialog コンポーネントを追加し、その Document プロパティに DataCubePrintDocument オブジェクトを設定します。

フォームに System.Windows.Forms.Button コンポーネントの printButton オブジェクトを追加し、button click イベントハンドラに次のコードを記述します。

PerpetuumSoft.Olap.DataCubePrintSettings settings = new PerpetuumSoft.Olap.DataCubePrintSettings();

settings.IgnoreColors = isMultiColorCheckBox.Checked;

settings.DimensionsOnEveryPage = dimensionsOnEveryPageCheckBox.Checked;

settings.TitleOnEveryPage = titleOnEveryPageCheckBox.Checked;

settings.FieldCaptionsOnEveryPage = fieldCaptionsOnEveryPageCheckBox.Checked;

dataCubePrintDocument.PrintSettings = settings;

dataCubePrintDocument.PrinterSettings = printDialog.PrinterSettings;

dataCubePrintDocument.Print();

フォームに System.Windows.Forms.Button コンポーネントの printerSettingsButton オブジェクトを追加し、button click イベントハンドラに次のコードを記述します。

printDialog.ShowDialog();

アプリケーションを実行します。

次に、ピボットテーブルの印刷に必要な設定をすべて指定します。「印刷設定」ボタンを押して希望する印刷設定を指定し、「印刷」ボタンをクリックするとピボットテーブルが印刷されます。


The Interaction of the OLAP ModelKit with Third Party Components

OLAP ModelKit と他社コンポーネントとの相互作用

OLAP ModelKit は大量の統計データを基にしてクロスレポートを作成したり使用するためのものです。OLAP ModelKit は最終的なレポートデータを表にするだけでなく、他社のチャートコンポーネントでも使えるようにデータを構成することもできます。現在はチャート、ダイアグラム、レポート、グリッドを作成するためのコンポーネントが多数あります。

OLAP ModelKit パッケージに含まれている DataCubeView コンポーネントを使用して、ピボットテーブルコンポーネントやイメージ表示コンポーネントのようなインターフェースを実装することができます。DataCubeView は DataCube オブジェクトに格納されているデータ表現を作成できます。DataCubeView コンポーネントはデータを線形テーブル（この列は最初のキューブのファクトとディメンションの1フィールドです）として表して、ピボットテーブルのディメンションキューブを「詳細に表します」。DataCubeView は1つのディメンションから別のディメンションへ、同じディメンションの1つのグループから他のグループに移動することができます。

ピボットテーブルのデータ表現を他社コンポーネントで構成するには、DataCubeView コンポーネントの使用をお勧めします。ご存知のように、データソースとして表現するのに必要なインターフェースをきちんと実装しないイメージ表示コンポーネントが沢山あるので、OLAP ModelKit が ADO.NET オブジェクトを使用して他社コンポーネントと相互作用するためのツールを提供しています。

DataCubeView コンポーネントは、エンドユーザが意のままに使用できる ADO.NET オブジェクトに、DataCubeView コンポーネントで表したピボットテーブルを部分的に表示できます。


The Interaction with OLAP ModelKit by Means of ADO.NET Objects

OLAP ModelKit と ADO.NET オブジェクトとの相互作用

DataCube オブジェクトで Fill() オープンメソッドにアクセスできます。Fill() オープンメソッドは ADO.NET データオブジェクトにピボットテーブルのデータを表示します。

Fill() オープンメソッドはオーバーロードされます。その簡単な使用法を詳しく説明します。

PerpetuumSoft.Olap.DataCube.Fill(PerpetuumSoft.Olap.ViewDimension primaryDimension, System.Data.DataSet dataSet, int depth) メソッドは primaryDimension リストの値（X - 列ごと、Y - 行ごと）で定義したディメンションごとにピボットテーブルのデータを表示します。データはディメンション内の最大グループの入れ子の深さ （depth パラメータ）に従って dataSet オブジェクトに表示されます。必要に応じてここでテーブルを作成したり、データセットにテーブルを追加します。各テーブル名はグループの値を計算するフィールド名と一致します。depth パラメータの値が指定したディメンションのグループ数を超えないようにしてください。

PerpetuumSoft.Olap.DataCube.Fill(PerpetuumSoft.Olap.ViewDimension primaryDimension, System.Data.DataSet dataSet, params string[] tableNames) メソッドはprimaryDimension リストの値（X - 列ごと、Y - 行ごと）で定義したディメンションごとにピボットテーブルのデータを dataSet に表示します。しかも、文字列の名前の配列で割り当てたテーブルがデータセットに作成されます。その配列内のテーブル名の数が指定したディメンションのグループ数を超えないようにしてください。

PerpetuumSoft.Olap.DataCube.Fill(PerpetuumSoft.Olap.ViewDimension primaryDimension, System.Data.DataSet dataSet, params System.Data.DataTable[] tables) メソッドは primaryDimension リストの値（X - 列ごと、Y - 行ごと）で定義したディメンションごとにピボットテーブルのデータをテーブル配列に含まれた DataTable オブジェクトに表示します。必要条件はすべてのテーブルを1つの DataSet オブジェクトに含めることです。配列のテーブル数が指定したディメンションのグループ数を超えないようにしてください。

バインドされ設定されたテーブルのセットはこの結果または Fill() メソッドの実装結果を表します。テーブルには次のものが含まれます。

- 指定したディメンションのグループの値（テーブルの列の名前はグループの値を計算するフィールド名と一致します）

- ファクト値（列の名前はファクトの値を計算するフィールド名と一致します）

- さまざまなテーブル間のバインドの構成に使用するプライマリ値と外部キーの値

Fill() メソッドの実行時に、親テーブルが下位のテーブルのグループより下の入れ子レベルのディメンショングループに対応するように、テーブルは「一対多」リレーション型で接続されています。

下図のピボットテーブルについて説明します。

Fill(PerpetuumSoft.Olap.ViewDimension.Y, System.DataSet dataSet, 3) メソッドの呼び出し （dataSet にはテーブルやバインドはありません）は dataSet オブジェクトを次のように出力します。


The Interaction with OLAP ModelKit by Means of the DataCubeView Component

DataCubeView コンポーネントによる OLAP ModelKit との相互作用

DataCubeView オブジェクトは DataCube プロパティに指定したテーブルのデータをスライスにします。DataCubeView オブジェクトの PrimaryDimension プロパティに、どのキューブを「スライス」にするかを定義する値（サンプルでは X または Y） を指定します。

DataCubeView コンポーネントの使用時に、1つのディメンショングループ（親）から入れ子のサブグループ（子）に移動できます。

注意！DataCubeView オブジェクトを正確に動作させるには、コンポーネントが IList、IBindingList、ICollection、IEnumerable、ITypedList インターフェースをきちんとサポートしているかを確認してください。

例：

フォームに DataCubeView オブジェクトを追加します。DataCube プロパティの値としてピボットテーブルを指定します。下図のピボットテーブルをご覧ください。

次に、DataCubeView オブジェクトの PrimaryDimension プロパティに Y を指定します。これで、DataCubeView オブジェクトを使用してピボットテーブルのデータを表すことができます。

下図に示されている結果は Chart ModelKit コンポーネントの出力で、DataCubeView で作成したピボットテーブルのデータをチャートのデータソースとして使用しています。


Destination and Basic Features

Chart ModelKit の目的と特徴

Chart ModelKit はいろいろな種類のチャートをデザインするためのものです。製品には Windows フォームアプリケーションにチャートを表示するための ChartViewer コンポーネントが含まれています。

データをチャートで表すことでかなりわかりやすくなりますが、それは時には開発者にとってとても大変な作業になります。

Chart ModelKit はチャートを作成したり、外観をカスタマイズしたり、チャートをいろいろなイメージ形式に保存したり印刷することができます。このコンポーネントはデータソースとの動作が非常にフレキシブルで、バインドなしのチャートを作成できます。

コードを使わずにデザイナでチャートを見ながら設定できます。作成したチャートはファイルに保存していつでも使用できます。


General Principles of the Chart ModelKit

Chart ModelKit のしくみ

Chat ModelKit の主な概念は開発者が専門知識や高度な技術がなくてもユーザの条件にあったチャートを早く作成できるようにすることです。本製品にはチャートを表示したり処理するためのコンポーネントが含まれています。

チャートは階層型表示の構造を持つ複合オブジェクトです。チャートには、外観や動作を指定するプリミティブが含まれています。

デザイナを使ってチャートを作成します。単純なオブジェクト（色々組み合わせてチャートに含められます）を使用したり、便利なグラフ式の方法を用いた各オブジェクトのプロパティを設定してチャートをデザインできます。式を使用して、プリミティブをバインドしたり複雑な機能を指定することができます。色々な組み合わせでプリミティブを結合したり、オブジェクトのプロパティをフレキシブルにカスタマイズしたり、式を使用することにより、エンドユーザの条件に合ったチャートを作成できます。


Creation of a Simple Chart with the Use of Wizard

ウィザードを使った簡単なチャートの作り方

Chart ModelKit で簡単なチャートを作成します。

それには、Microsoft の Visual Studio で新しい C# の Window アプリケーションを作成し、フォームに ChartViewer を貼り付けます。

DataSet テーブルをデータソースとして使用するチャートをデザインします。

フォームに DataSet を貼り付けてテーブルに double 型の列を1つ作成します。フォームの読込時に、テーブルにデータを設定するコードを追加します。

    private void GettingStartedForm_Load(object sender, System.EventArgs e)

    {

      dataTable1.Rows.Add(new object[] {7});

      dataTable1.Rows.Add(new object[] {4});

      dataTable1.Rows.Add(new object[] {9});

    }

ChartViewer に新しいデータソースを追加し、名前とデータソース （DataSource プロパティ）を設定します。

ChartViewer コンポーネントをダブルクリックしてデザイナを起動します。デザイナを開くとウィザードウィンドウも開きます。ここで、既存のテンプレートからチャートを選択できます。

リストからチャートを選択します。

「OK」 ボタンをクリックすると、選択したチャートがデザイナに読み込まれます。

デザイナを使用してチャートやすべてのオブジェクトの外観をすばやくカスタマイズできます。

ウィンドウの左側にはチャートを作成するためのオブジェクトが含まれます。各オブジェクトの説明は次の通りです。

- ChartArea （チャート領域） [image] は他のすべてのチャートオブジェクト（軸、系列、タイトルなど）を格納するオブジェクトです。チャートに、1つまたは複数のチャート領域を含めることができます。

- Axis （軸） [image] は（パイチャートを除く）すべての系列型の値が軸に表示されます。 正しくチャートを作成するには、ChartArea に別方向 （X 方向と Y 方向）の2つの軸を設定してください。

- Series （系列） [image] は単一セットのデータを表し、データの表示方法を定義するプロパティが含まれています。表示モードは SeriesView プロパティで設定します。系列を作成するためのデータはデータソースから取得するか、直接系列に設定できます。

- Legend （凡例） [image] はチャートに凡例を表示します 。

- ValueLabels （値ラベル） [image] はチャートにすべてのポイント値を表示します。

- Title （タイトル） [image] はチャートのタイトルを設定します。

- ScaleLabels （スケールラベル） [image] はi軸に値を表示します。

- CustomLabels （カスタムラベル） [image] は軸に任意のテキストラベルを表示します。

- GridLines （グリッド線） [image] は軸にグリッドを表示します。

- Ticks （目盛） [image] はスケールに目盛を設定します。

- ScaleMarks （スケールマーカ） [image] は軸にマーカを配置します。

- ScaleTitle （スケールタイトル） [image] は軸タイトルを設定します。

ウィザードを使用して作成したチャートには複数の値が含まれているので、チャートをデータソースにバインドしなくてもチャートの外観を設定できます。

チャートの外観をカスタマイズします。チャートのタイトルを変更します。それには、チャートツリーから 「Title」 オブジェクトを選択します。

また、必要なオブジェクトをデザイナでクリックして選択することも可能です。選択したオブジェクトはチャートツリーで強調表示され、利用可能なプロパティがすべてデザイナ右側のプロパティグリッドに表示されます。「Title」 オブジェクトの Text プロパティを「シンプルチャート」に変更します。

マウスで X 軸のスケールラベルを選択し、プロパティ（例：Font プロパティや Step プロパティ）をいくつか変更します。チャートツリーの 「ScaleLabels1 （スケールラベル）」は 「ChartArea （チャート領域）」ではなく、「AxisX （X 軸）」に配置されています。

X 軸の 「Ticks」 オブジェクトの Step プロパティを変更します。X 軸に 「GridLines」 オブジェクトを追加し、Stroke プロパティ、Step プロパティ、Origin プロパティを設定します。

作成したチャートをファイルに保存し、「OK」 ボタンを押してデザイナを閉じます。

テーブルのデータを使用してチャートを作成します。作成したチャートを実行し、 [image] ツールバーボタンを押してデザイナウィンドウを開きます。「Series」 オブジェクトをマウスでクリックして選択します。DataSource プロパティを選択し、チャートのデータソースのプロパティを編集するウィンドウを開きます。

チャートのデータソースに dataSource オブジェクトを選択し、系列の Value フィールドに 「Column1」 をバインドします。

「OK」 ボタンをクリックします。引数がすべてのチャートポイントに自動的に代入されるように、系列の AutoArgument プロパティを True に変更します。

指定したデータソースが値と一緒に引数を含んでいれば、系列の 「Argument」 フィールドにこのフィールドのバインドできます。

変更したチャートをファイルに保存して、そのチャートをデザイン時に ChartViewer に読み込みます。

このサンプルはウィザードを使ったチャートの作り方を示していますが、これ以外にもチャートの作り方はあります。ウィザードを使わないチャートのデザイン方法については次の章で説明します。


Creation of a Simple Chart without Using Wizard

ウィザードを使わない簡単なチャートの作り方

Double click on the ChartViewer component, open the designer window and create a new chart.

チャートに 「ChartArea」 コンポーネントを貼り付け、オブジェクトの塗りつぶしと枠を設定する Fill プロパティと Stroke プロパティを 「SolidFill」 に設定します。Dock プロパティを 「Client」 に設定して 「ChartArea」 オブジェクトが作業領域全体に収まるよう自動的に拡張します。

「ChartArea」 に軸を2つ配置し、AxisY の軸の向きを変更するために Direction プロパティを 「Y」 に設定します。

「ChartArea」 に 「Series」 コンポーネントを追加します。まず、データソースを使わずに系列に直接データを設定します。それには、DataSource プロパティエディタを開き、「系列ポイント」タブを選択します。

コレクションに値をいくつか追加します。「UserData」 フィールドを設定する必要はありません。このフィールドは 「ValueLabels」 オブジェクトの値に関連付けられていない情報を出力するために使用できます。

その後、「OK」 ボタンを押すと、下図のようなチャートが生成されます。

次に、チャートの外観を設定します。ChartArea に 「Title」 コンポーネントを追加して外観をカスタマイズします。

軸の外観を設定します。「SｃaleLabels」 コンポーネントを使用して軸に数値を指定します。X 軸に 「ScaleLabels」 を配置し、Origin プロパティと Step プロパティを指定します。「ScaleLabels」 に応じて軸のサイズを自動的に指定するために、Docking プロパティを設定します。

「Ticks」 コンポーネントを追加し、「ScaleLabels」 と同様にカスタマイズします。

Y 軸に 「ScaleLabels」 コンポーネントと 「Ticks」 コンポーネントを配置し、X 軸のオブジェクトと同じように設定します。Y 軸に 「GridLlines」 コンポーネントを配置し、Step プロパティと Origin プロパティを Ticks プロパティや ScaleLabels プロパティと同様に設定します。Fill プロパティと AlternativeFill プロパティを使用して背面のストライプの塗りつぶしを指定します。

「Series1」 に 「ValueLabels」 コンポーネントを配置します。これは規定でチャートにすべての値を表示します。

「ValueLabels」 の Formula フィールドに式を指定できます。この式で出力する値を指定します。このプロパティを次のように設定します。

UserData & ' = ' & Value

ViewType プロパティを使用して、表示するオブジェクトの型を 「Bar」 から 「Cylinder」 に変更します。

チャートのデザインは終了です。「OK」 ボタンをクリックしてデザイナを閉じます。

The GettingStarted application is included in the delivery package.


Chart Model

チャートは階層表示型のツリー型構造を持つ複合オブジェクトです。チャート全体は個別のシンプルなオブジェクトで構成されています。チャートをそれぞれのオブジェクトに分解することによってさまざまなオブジェクトを組み合わせて色々なチャート型を作成できます。オブジェクトのプロパティ設定がより直感的で容易になります。

チャートには次の構成要素が含まれています。

  • 系列 - データを表示します
  • 軸 - チャートの測定基準を割り当てます
  • 軸や系列上のさまざまなラベル
  • 凡例 - 注釈規約を表示します（チャート内で使用）
  • その他のチャートの装飾オブジェクト（チャートのデザインに使用）

これらのチャートのオブジェクトはすべてさまざまなプロパティを持った個別のオブジェクトとして Chart ModelKit で表現されます。オブジェクトを好きなだけチャートに組み合わせることができます。しかし、通常チャートには次のような典型的な構造があります。「ChartArea」 はチャート内に配置されます。このオブジェクトに軸、系列、凡例、いろんな説明をするラベル、タイトル、イメージなどが入ります。

軸に向きと最小値/最大値を割り当てます。値を表示するために、軸に 「Ticks」、「ValueLabels」、「CustomLabels」、「GridLines」、「ScaleTitle」 を含めることができます。

系列はデータセットを表示するために使用します。指定した 「SeriesView」 に応じて、系列はデータを色々な形（例：縦棒チャート、リボンチャートなど）で表示できます。値を表示するために、特定ポイントにマーカを付ける 「ValueLabels」 や 「ValueMarkers」 を系列に含めることができます。

オブジェクトは構造上、複合と単一の2つのグループに分けられます。複合オブジェクトには他のチャートオブジェクトを含めることができます。単一オブジェクトには他のチャートオブジェクトを含めることができません。


Description of Common Properties

共通プロパティについて

Element クラスのプロパティ、特にすべての派生オブジェクトについて説明します。Name プロパティは計器全体のオブジェクトに一意の名前を設定します。Fill プロパティはオブジェクトの描画時に使用する塗りつぶしを設定します。Smooth プロパティは表示するイメージ品質を設定します。Visible プロパティはオブジェクトの表示/非表示を設定します。Active プロパティはオブジェクトにマウスイベンを渡すかどうかを指定します。BreakEventBubbling プロパティは追加処理を行うために親オブジェクトにマウスイベントを渡すかどうかを指定します。RecalculateAll プロパティは、オブジェクトの状態を変更する時にオブジェクトの式を再計算するかどうかを指定します。RecalculateAll プロパティが False の場合、指定したオブジェクトとその中に含まれているすべてのオブジェクトの式だけが再計算されます。True の場合は計器のすべてのオブジェクトの式が再計算されます。

マウスイベントの受け取り作業とそのプロセスは次のように行われます。オブジェクト上にマウスが来るとオブジェクトはマウスからイベントを受け取ります。オブジェクトはこれらのイベントを処理できるようになり、BreakEventBubbling プロパティが False の場合、その親にイベントを渡します。従って、マウスイベントはビジュアル要素から計器のツリーにまで渡されます。


ChartArea

ChartArea コンポーネント

ChartArea コンポーネント [image] はチャートを描画する四角形の領域で、すべてのチャートコンポーネントのコンテナです。位置は Size プロパティと Center プロパティで定義します。Dock プロパティは親の Chart オブジェクトにドッキングさせる ChartArea の位置を設定します。Dock=ChartAreaDockStyle.None の場合、「ChartArea」 の位置は親チャートの位置に関係なく、Size プロパティと Center プロパティで設定されます。Dock=ChartAreaDockStyle.Client の場合、「ChartArea」 の位置とサイズは親チャートの位置とサイズに収められます。Margins プロパティは ChartArea の境界からのインデントを定義します。PrimaryArgumentAxis プロパティと PrimaryValueAxis プロパティは系列に規定で使用される引数軸と値軸を定義します。


Chart Series

チャートの系列

Chart ModelKit は、縦棒、リボン、パイ、株式やその他の一般的な系列型をサポートします。Chart ModelKit のコンセプトは、データの保存と表示を分けて提供します。つまり、系列データを変更せずに系列型を変更する機能を提供します。

系列型は View プロパティで指定します。

では、Chart ModelKit で提供されている系列型について説明していきます。


Bar Chart

縦棒チャート

縦棒チャートは BarSeriesView、StackedBarSeriesView、Stacked100BarSeriesView クラスであらわされます。SeriesValue クラスはデータ型として使用します。

BarSeriesView は各系列の値を表す縦棒を並列に配置した縦棒チャートです。

StackedBarSeriesView は各系列と1つの引数の縦棒を積み重ねた縦棒チャートです。

Stacked100BarSeriesView は各系列と1つの引数の縦棒を積み重ねた縦棒チャートですが、指定したポイントに指定した系列型の合計値から相対値を表します。

TankSeriesView は各系列の値をタンク型の縦棒で表し、並列に配置した縦棒チャートです。

LevelSeriesView は各系列の値をレベル型の縦棒で表し、並列に配置した縦棒チャートです。Upper レイヤと Lower レイヤは AciveLayer プロパティと InactiveLayer プロパティを使用して設定されます。

ThermometerSeriesView は各系列の値を温度計型の縦棒で表し、並列に配置した縦棒チャートです。Upper レイヤと Lower レイヤは AciveLayer プロパティと InactiveLayer プロパティを使用して設定されます。

縦棒チャートに、縦棒の相対幅 （AreaWidth プロパティ）や縦棒の種類（縦棒、円筒、3D バー、ピラミッド）を設定できます。


Line Chart

リボンチャート

リボンチャートは LineSeriesView 型（リボン）、StepLineSeriesView 型（階段状）、SplineSeriesView 型（スプライン）で表現されます。

LineSeriesView は、すべての系列ポイントを通過する折れ線を作成します。

StepLineSeriesView は、データをすべての系列ポイントを通過する階段状の線で表します。

SplineSeriesView は、データをすべての系列ポイントを通過するスプラインで表します。


Area Chart

面チャート

AreaSeriesView はデータを全系列ポイントを通過する折れ線で囲んだ面で表します。

StackedAreaSeriesView は各系列の面を積み重ねたチャートです。

Stacked100AreaSeriesView は各系列の面を積み重ねたチャートですが、指定したポイントに系列値の合計から相対値を表します。

SplineAreaSeriesView はデータを全系列ポイントを通過するスプライン曲線で囲んだ面で表します。


Point Chart

散布図チャート

PointSeriesView は、データを直径の異なる円で表します。散布図の円は Radius と Center を持ち、座標（Argument と Value の値）で割り当てられた円が各系列値として作成されます。MinRadius/MaxRadius プロパティは、表示される円の最小/最大半径を設定します。


Pie Chart

パイチャート

PieSeriesView はデータをパイで表します。値はすべて個別のパイスライスとして表示され、スライスの角は系列全体の合計となるよう定められた値の割合に依存します。すべてのパイスライスに、塗りつぶし、中心からの移動量、内側の半径、外側の半径を設定できます。

ChartArea （チャート領域）に複数の PieSeriesView 型の系列がある場合は、次のように配置できます： Horizontal（水平）、Vertical（垂直）、

または Inside（重ね合わせ）


Stock Chart

株式チャート

株式チャートは StockSeriesView や CandleStickSeriesView で表されます。StockSeriesView は株式情報を Hi、Lo、Open、Close パラメータで表示するために使用します。線のサイズと位置は Hi プロパティと Lo プロパティで定義します。四角形のサイズは Open プロパティと Close プロパティで定義します。

四角形の線の色と塗りつぶしは Color プロパティと ReductionColor プロパティで設定します。ReductionValue プロパティに設定した現在のフィールドがその前の系列値のフィールドより小さい場合、ReductionColor プロパティが使用されます。それ以外は Color プロパティが使用されます。Open 値（始値）が Close 値（終値）より小さい場合は、四角形が塗りつぶされます。

CandleStickSeriesView は Hi、Lo、Open、Close パラメータで株式情報を表示するために使用します。線の色は Color プロパティ と ReductionColor プロパティで定義します。

Chart ModelKit は、1つのチャートにさまざまな系列型を組み合わせることができます。


Series and Assignment of a Data Source

系列とデータソースの設定

Series コンポーネント [image] はデータを格納したり表示するためのものです。チャート型は View プロパティに設定します。引数軸と値軸は ArgumentAxis と ValueAxis プロパティに設定します。ScaleType プロパティはスケールの引数型 （Qualitative か Numerical） を定義します。ScaleType=Numerical の場合、すべての系列の引数が double 型に設定されて並べ替えられます。double 型以外の引数（例：string 型または date 型）を設定するには、ScaleType=Qualitative に設定してください。

これらの系列はデータソースを使用するか、Values コレクションを設定することで設定できます。データの取得方法に関係なく、SeriesValueBase 型のオブジェクトのコレクションを表します。チャートの作成時に各データソースの値が1つのチャートの値と一致するようになります。よくある例で、SeriesValeBase には object 型の Argument と、二次データを格納する object 型の UserData プロパティがあります。SeriesValueBase の派生オブジェクトには特殊なチャートの作成に必要なフィールドがあります。一般的な例としては、SeriesValue オブジェクトも double 型の Value プロパティがあります。


Data Binding

データバインディング

Chart ModelKit はチャートを作成するためのデータソースとして ADO.NET オブジェクトから取得したデータ、またはさまざまなコレクションから取得したデータを使用できます。IList インターフェースを実装する任意のオブジェクトをデータソースとして使用できます。データソースは Series.DataSource プロパティで設定します。

データバインディングは SeriesValueBase 型のオブジェクトフィールドとデータソースフィールドを照合させて行われます。照合はすべて SeriesBndingType オブジェクトで設定されます。SeriesBndingType オブジェクトには SeriesValueName プロパティ名を指定する SeriesValueName プロパティとデータソースからプロパティ名または式を指定する PropertyName プロパティがあります。SeriesBinding オブジェクトは SeriesBindingCollection 型の Bindings プロパティに格納されます。従って、Bindings プロパティにはデータソースフィールドと系列の値フィールドとの照合を記述します。

Series.AutoArgument プロパティが True の場合、Argument フィールドの値は自動的に昇順で設定されます。Argument フィールドに照合させる必要はありません。簡単な例としてデータソースとコレクションの照合を設定すると、系列が1つだけ作成されます。このようなデータバインディングを図で表すと下図のようになります。

データソースに2つ以上の似たような値がある場合、これらの値はチャートの作成時に集計されます。

あるデータソースフィールドが IList リストの場合、DataMember プロパティを使用して系列を入れ子リストのデータで作成できます。すべての入れ子データを含んでいるフィールドの名前を DataMember プロパティに指定する必要があります。照合の設定時に、この入れ子のデータソースのプロパティ名を使用できます。

入れ子のデータソースによるチャートは次のように作成されます。すべてのオブジェクトのために個々の系列がデータソースから作成されます。系列値は対象の入れ子のデータソースから取得されます。これは図で表すと下図のようになります。

1つのデータソースから複数の系列を作成しなければならない場合があります。その場合、あるパラメータによってデータソースのデータは別々の系列に分類されます。それには、データを系列に分類するための式を SeriesSplitter プロパティに設定してください。

作成したすべての系列のデータを並べ替えることができます。並べ替えは Sort プロパティに、並べ替えの順番（昇順/降順）は SortingType プロパティに設定します。


Axis and Axis Elements

軸と軸コンポーネント

大半のチャート型のデザインに必要なのは直角に交わる2つの軸で、軸に引数とチャートのポイント値が表示されます。系列と軸の関連付けは ArgumentAxis と ValueAxis プロパティで行います。軸線の種類は向きには関係ありませんが規定では引数の軸は水平軸で、値の軸は垂直軸となっています。

軸はスケールで、軸にチャートの値が表示されます。スケールの最小値は MinValue プロパティに、最大値は MaxValue プロパティに設定します。軸の MinValue と MaxValue プロパティの値が Auto の場合、軸は取得した系列ポイントの値によってスケールの範囲を自動的に計算します。MinValue と MaxValue プロパティが一定の値を取得する場合、スケールの範囲は自動的に計算された値ではなく MinValue と MaxValue プロパティの値によって割り当てられます。MinValue と MaxValue プロパティは自動的に計算された範囲から相対値をパーセントで取得します。スケールの範囲が自動的に計算された場合、その範囲を完全に負の値または正の値にすることができます。スケールに 0 ポイントを入れたい場合は、StartFromZero プロパティを定義します。

IsDiscrete プロパティは軸に分散した値を表示するか数値を表示するかを指定します。このプロパティは、軸を系列の引数軸（数値以外の値を表示する軸）として使用できます。

軸は垂直/水平方向の軸で、 Margins プロパティに設定した移動量で引き伸ばして ChartArea の高さ/幅に収めることができます。軸の外観は Stroke と Arrow プロパティで設定します。Stroke プロパティは軸線の種類、色、太さを設定します。Arrow プロパティは軸矢印の種類を設定します。軸の向きは Direction プロパティと Reverse プロパティで設定します。AxisIndent プロパティは軸矢印からスケールの終点までの距離を設定します。

CrossValue プロパティは、PerpendicularAxis プロパティに設定した軸との相対位置を設定します。

Chart ModelKit にはスケールに目盛、ラベル、その他の情報を表示するためのコンポーネントがあります。

Ticks コンポーネント [image] はスケールに主目盛を表示するためのものです。主目盛の幅は Stroke プロパティに設定します。主目盛の間隔は Step プロパティに設定します。Step=Auto の場合、Divisions プロパティに主目盛の間隔（分割数）を設定します。Ticks コンポーネントが描画される際にスケールに均等に配置されます。Origin プロパティは目盛の基準点（原点）を設定します。UseRoundValues=True の場合、スケールの主目盛は小数点以下の桁数が丸められた値が表示され、主目盛の数は Divisions プロパティの値より少ないか同じになります。主目盛の長さは Length プロパティに設定します。主目盛の間に副目盛が表示されます。主目盛の間隔を SubDivisions プロパティの値で割って副目盛の間隔が設定されます。副目盛の長さは SubLength プロパティに設定します。

主目盛と副目盛の相対位置は SubTicksPositon プロパティで設定できます。主目盛の描画時に主目盛がスケールに均等に描画されます。UseDicreteValue プロパティは分散したスケールに主目盛を描画するために使用します。このプロパティが True の場合、主目盛はスケールの分散した値にのみ表示されます。

ScaleMarks コンポーネント [image] はスケールマーカを表示するためのものです。マーカの種類は Shape プロパティで、マーカのサイズは MarkSize プロパティで設定します。サブマーカのサイズは SubMarkSize プロパティで設定します。スケールのマーカの位置を設定するロジックやプロパティは Ticks コンポーネントと似ています。

ScaleLabels コンポーネント [image] は軸の値を表示するためのものです。軸が分散している場合、スケールラベルは ScaleLabels は軸の分散値を表示します。軸が分散していない場合、ラベルはスケールに均等に表示されます。ラベルの間隔（分割数）は Step プロパティで設定します。Step=Auto の場合、ラベルの数は Divisions プロパティで設定します。Origin プロパティはラベルの基準点（原点）を設定します。UseRoundValues プロパティが True の場合、スケールラベルは小数点以下の桁数が丸められた値が表示され、ラベルの数は Divisions プロパティの値より少ないか同じになります。ラベルの角度は Angle プロパティで、ラベルの向きは TextRotationMode プロパティで設定します。Fill プロパティはラベルの塗りつぶし型を、Stroke プロパティはラベルの枠を設定します。ラベルの領域は ItemMargins プロパティで広げられます。ShowSuperposableLabels プロパティはスケールラベルを重ねて表示するかどうかを指定します。

CustomLabels コンポーネント [image] は ScaleLabels コンポーネントと似ていますが、軸の値だけでなく任意のスケールマーカを設定できます。すべてのラベルは「テキスト」 - 「スケール値」の組み合わせで設定され、Labels コレクションに格納されます。1つまたは複数のラベルに Auto 値が含まれている場合、そのラベルはスケールに均等に配置されます。

ScaleTitle コンポーネント [image] は軸のタイトルを設定するためのものです。Text プロパティで設定されたラベルは軸の末尾に配置されます。

ScaleLabels、 СustomLabels、ScaleTitle コンポーネントにはラベルの外観や位置を設定するプロパティがいくつかあります。OddLabelsDistance プロパティは偶数ラベルに対する奇数ラベルのインデントを設定します。TextAlingment プロパティはラベルの値と一致する軸ポイントのラベルの位置を設定します。Position プロパティは一番幅の広いラベルに対するラベルの位置を設定します。Formula プロパティはラベルの値を計算する式を設定します。TextFormal プロパティはラベルのテキスト形式を設定します。

Ticks、ScaleMarks、ScaleLabels、СustomLabels、ScaleTitle コンポーネントには共通のプロパティがあります。

指定した範囲内にだけ軸コンポーネントを表示する必要がある場合、MaxLimit と MinLimit プロパティを使って範囲を設定できます。UseLimits プロパティは指定した範囲内にコンポーネントを表示するかどうかを定義します。スケールからコンポーネントまでの間隔は Distance プロパティで設定します。例えば、軸に複数のコンポーネント： Ticks と ScaleLabels を表示する場合にスケールからコンポーネントまでの間隔を Distance プロパティで設定します。Dock プロパティはこのようなコンポーネントの相対位置を設定します。Dock=None の場合、軸のコンポーネントの位置は他のどの軸コンポーネントとも依存しません。この場合、コンポーネントの位置は Distance プロパティで定義されます。

Dock=Center の場合、コンポーネントは他のどの軸コンポーネントとも関係なく軸の中心に配置されます。Dock=Inside の場合、コンポーネントは Padding プロパティに設定した間隔で軸の内側に配置されます。Dock=Outside の場合、コンポーネントは Padding プロパティに設定した間隔で軸の外側に配置されます。

軸に、Dock=None 以外に設定されたコンポーネントが複数含まれている場合、まず Dock=Center のコンポーネントが配置され、次にその他のすべてのコンポーネントが既に配置されているコンポーネントのサイズで軸に追加された順に配置されます。

Colorizer プロパティはスケールのコンポーネントの色を設定します。また、軸の Colorizer プロパティを設定することにより、すべての軸コンポーネントの色を設定することもできます。

GridLines コンポーネントはチャートの値にグリッドを表示するためのものです。グリッドの間隔は Step プロパティで設定します。Step=Auto の場合、グリッドの数は Divisions プロパティで設定します。Origin プロパティは基準点（原点）を定義します。UseRoundValues プロパティが True の場合、スケールラベルには小数点以下の桁数が丸められた値が表示され、Divisions プロパティの値より少ないか同じになります。副線の数は SubLinesCount プロパティで設定します。

Fill と AlternativeFill プロパティは交互に並んだグリッドの塗りつぶしを設定します。Stroke と SubStroke プロパティは主線と複線の種類を定義します。


Additional Chart Elements

その他のチャートコンポーネント

Chart ModelKit にはチャートのデータを簡単に理解するためのコンポーネントや補助的な機能もあります。

＜Legend コンポーネント＞

Legend コンポーネント [image] はチャートで使用した系列を表示するよう設計されています。Series.DisplayingInLegendType プロパティは凡例に表示する系列情報の種類を割り当てます。「None」 の場合は、系列の情報が表示されません。「Series」 の場合は、系列の情報が表示されます。

「Values」 の場合、各系列値の情報が表示されます。

Center プロパティは凡例の中心位置を割り当てます。LegendType プロパティは凡例項目の整列（垂直方向、水平方向）を設定します。

ColumnsCount プロパティは凡例の列数を定義します。ItemMargins プロパティは凡例の各項目のマージンを割り当て、Margins プロパティは凡例全体のマージンを割り当てます。Padding プロパティは凡例の枠からのマージンを割り当てます。

LegendExpression プロパティには式を設定し、その結果が凡例に表示されます。式はすべての系列値の情報だけでなく、系列の情報を表示するために設定できます。例えば、式：“Argument & '=' & Value” を設定した場合、凡例は下図のように表示されます。

＜Title コンポーネント＞

Title コンポーネント [image] はデータにバインドされていないチャートのタイトルや様々なラベルを作成するよう設計されています。ラベルのテキストは Text プロパティで設定します。テキストのフォントは Font プロパティで設定します。TextFill プロパティはタイトルのテキストの塗りつぶしを割り当て、Fill プロパティはタイトルの背景の塗りつぶしを割り当てます。Stroke プロパティはタイトルの境界を定義します。Angle プロパティはテキストの回転角度を割り当てます。Margins プロパティはタイトルの枠からタイトルのテキストまでの間隔を設定します。Padding プロパティは色付けされた領域からタイトル領域までの間隔（左、上、右、下）を設定します。

Title コンポーネントと Legend コンポーネントは 「ChartArea」 領域にバインドすることにより自動的に位置付けることができます。DockingType プロパティはコンポーネントのドッキング位置 （None、Left、Right、Top、Bottom） を定義します。「None」 に設定した場合、ChartArea の側面にバインドされないので、好きな場所にコンポーネントを配置できます。

DockingStyle プロパティは Title コンポーネントの位置 （ChartArea の内側か外側）を定義します。このプロパティが 「Outside」 の場合、Title コンポーネントは ChartArea の外側に配置され、チャートの作成領域が少なくなります。「Inside」 の場合、Title コンポーネントは ChartArea の内側に配置され、チャートの作成領域に部分的に重なります。

Alignment プロパティは Title コンポーネントの領域内のタイトルの位置を設定します。

＜ValueLabelsコンポーネント＞

ValueLabels コンポーネント [image] は各系列ポイントに値または他の情報を表示するよう設計されています。

Distance プロパティは系列ポイントから ValueLabel までの距離を割り当てます。Angle プロパティは ValueLabels の角度を設定します。LineStroke プロパティはラベルとポイントをつなぐ線の種類を定義します。

Position プロパティはチャートのラベルの位置 （Top、Center、Bottom） を定義します。

Expression プロパティには式を割り当てることができ、その計算結果がラベルに表示されます。

＜ValueMarkersコンポーネント＞

ValueMarkers コンポーネント [image] は系列にマーカを表示するよう設計されています。Shape プロパティはマーカの種類を設定します。Size プロパティはマーカの大きさを設定します。

Distance プロパティは系列ポイントからマーカまでの（垂直方向の）距離を定義し、Shift プロパティは系列ポイントからマーカまでの移動量 （X、Y） を割り当てます。LineStroke プロパティはマーカとポイントを結ぶ線の種類を定義します。

Position プロパティはチャートのマーカの位置 （Top、Center、Bottom） を定義します。


Palettes

パレット

Chart ModelKit はあらかじめ定義された色、線種、形状のセットを使用して系列やそれぞれの値に色を設定できます。

パレットは系列やそれぞれの系列オブジェクトに色や塗りつぶしを割り当てます。また、パレットはリボンチャートの色や線種、ValueMarkers オブジェクトのマーカの種類も割り当てます。

ChartArea.Palette プロパティは系列のパレットを設定し、Series.Palette プロパティは系列オブジェクトのパレットを設定します。下図は ChartArea でのパレットの使い方を示しています。ChartArea には3つの系列があり、Series.Fill プロパティは設定されていません。この場合、系列はパレットの色を使用します。

Series.Palette プロパティは各系列オブジェクトの色を定義します。

リボンチャートの Palette プロパティは線の色だけでなく線種も設定できます。

CustomPalette クラスはカスタムパレットを設定できます。このクラスはオブジェクトのセットで構成されており、各オブジェクトには ValueMarkers やオブジェクトの線種を表示するための塗りつぶし、色、形状を含んでいます。


The Chart Viewer

チャートビューア

ChartViewer [image] はチャートを .Net の Windows フォームアプリケーションに表示するために設計されたコンポーネントです。Chart オブジェクトはChartStream プロパティの他に Chart プロパティでも割り当てることができます。文字列にシリアル化したチャートを ChartViewer にアップロードできます。

ツールバーは ChartViewer の上部に配置され、その他はチャートを表示するために使用します。

ツールバーには次のボタンがあります。

[新規チャート] [image] ボタン - 新規チャートを作成します

[チャートを開く] [image] ボタン - ファイルに保存したチャートを開くダイアログを呼び出します

[チャートの保存] [image] ボタン - チャートをファイルに保存するダイアログを呼び出します

[イメージとして保存] [image] ボタン - チャートをイメージとして保存するダイアログを呼び出します

[クリップボードにコピー] [image] ボタン - チャートをイメージとしてクリップボードにコピーします

[印刷] [image] ボタン - 印刷ダイアログを呼び出します

[デザイナの起動] [image] ボタン - デザイナを立ち上げます

ボタンをツールバーに表示させるには、それぞれ ShowNew プロパティ、ShowOpen プロパティ、ShowSave プロパティ、ShowSaveAsImage プロパティ、ShowCopyToClipboard プロパティ、ShowPrint プロパティ、ShowDesigner プロパティで設定します。ツールバーの表示は ToolBarVisible プロパティで設定します。

DataSource プロパティはチャートのデータソースを指定します。

更に開発するには、系列のデータソースを指定する際に DataSourceName プロパティを指定する必要があります。

実行時に ChartViewer をダブルクリックするとデザイナが呼び出されます。


The Designer

デザイナ

Chart ModelKit のデザイナはチャートの作成に使用します。デザイナは下図のように表示されます。チャートはさまざまなオブジェクトを含むオブジェクトです。すべてのオブジェクトにはプロパティがあり、プロパティウィンドウに表示されます。このウィンドウでプロパティを編集できます。

ビジュアルオブジェクトや非ビジュアルオブジェクトは[挿入]メニューかツールボックスのボタンから利用できます。チャートにコンポーネントを貼り付けるには、[挿入]メニューまたはツールバーからオブジェクトを選択し、作業領域でマウスをクリックし、オブジェクトの大きさを希望するサイズまで引き伸ばしてください。チャートの構造はチャートのアウトラインウィンドウに表示されます。オブジェクトの位置はマウスでドラッグして変更できます。

[ファイル]メニューから取得できる機能について説明します。ファイルに関するコマンドは次の通りです。

コマンド | 説明
[ファイル/新規/白紙] | 白紙の新規チャートを作成します
[ファイル/新規/ウィザード] | ウィザードを使って新規チャートを作成します
[ファイル/開く Ctrl+O] | ファイルからチャートを読み込むダイアログボックスを呼び出します
[ファイル/開いて結合] | ファイルからチャートを読み込むダイアログボックスを呼び出します。同時に、新規チャートが既存チャートに追加されます。
[ファイル/ウィザードで開いて結合] | チャートを読み込むウィザードを呼び出します。同時に、新規チャートが既存チャートに追加されます。
[ファイル/保存 Ctrl+S] | チャートを保存します
[ファイル/名前を付けて保存] | チャートに名前を付けて保存します
[ファイル/エクスポート] | チャートを一般的なビットマップ形式またはベクトル形式 （JPEG、GIF、PNG、BMP、SVG、Macromedia Flash） にエクスポートし、保存ダイアログボックスを呼び出します。

セパレータより下のファイルシステムパスを含む最近使ったファイルの履歴を見ることができます。

[編集]メニューから取得できる機能について説明します。編集に関するコマンドは次の通りです。

コマンド | 説明
[編集/元に戻す Ctrl+Z] | チャートでの変更をキャンセルします
[編集/やり直し Ctrl+Y] | チャートの編集時にキャンセルした動作をやり直します
[編集/切り取り Ctrl+X] | 選択したオブジェクトを切り取ります
[編集/コピー Ctrl+C] | 選択したオブジェクトをコピーします
[編集/貼り付け Ctrl+V] | 選択したオブジェクトがコンテナではない場合、バッファから選択したオブジェクトまたはその親に貼り付けます
[編集/削除 Ctrl+Del] | 選択したオブジェクトを削除します

[表示]メニューから取得できる機能について説明します。デザイナの表示に関するコマンドは次の通りです。

コマンド | 説明
[表示/ルーラの表示] | ルーラを作業領域に表示するかどうかの切り替えを行います
[表示/グリッドの表示] | グリッドを作業領域に表示するかどうかの切り替えを行います
[表示/グリッドに合わせる] | オブジェクトの制御ポイントをグリッドに合わせるかどうかの切り替えを行います

[ツール]メニューから取得できる機能について説明します。さまざまなツールを有効にするコマンドは次の通りです。

コマンド | 説明
[ツール/選択 F2] | [選択]ツールを有効にします。[選択]ツールは作業領域のオブジェクトを選択したり、デザイナで編集できます。
[ツール/パン F4] | 作業領域のイメージをパンします
[ツール/ズームイン] | オブジェクトをズームインします
[ツール/ズームアウト] | オブジェクトをズームアウトします
[ツール/矩形に合わせてズーム] | 選択した矩形をズームインします
[ツール/ダイナミックズーム] | 選択した領域のズームを変更するために[ダイナミックズーム]ツールを有効にします

[挿入]メニューから取得できる機能についてコンポーネントの挿入先ごとに説明します。

チャートにさまざまなコンポーネントを追加するためのコマンドは次の通りです。[挿入/Chart] メニューのコンポーネントはチャートの構造を指定するために使用します。

コマンド | 説明
[挿入/Chart/ChartArea] | ChartArea コンポーネントを追加します
[挿入/Chart/] | Axis コンポーネント（軸）を追加します
[挿入/Chart/Legend] | Legend コンポーネント（凡例）を追加します
[挿入/Chart/Series] | Series コンポーネントを追加します
[挿入/Chart/ValueLabels] | ValueLabels コンポーネント（値ラベル）を追加します
[挿入/Chart/Title] | Title コンポーネント（タイトル）を追加します
[挿入/Chart/GridLines] | GridLines コンポーネント（グリッド）を追加します
[挿入/Chart/ValueMarkers] | ValueMarkers コンポーネント（値マーカ）を追加します

[挿入/Scale Elements] メニューにはスケールをデザインするためにコンポーネントを追加するコマンドがあります。

コマンド | 説明
[挿入/Scale Elements/ScaleLabels] | ScaleLabel オブジェクト（スケールラベル）を追加します
[挿入/Scale Elements/ScaleMarks] | ScaleMarks オブジェクト（スケールマーカ）を追加します
[挿入/Scale Elements/Ticks] | Ticks オブジェクト（目盛）を追加します
[挿入/Scale Elements/CustomLabels] | CustomLabels オブジェクト（カスタムラベル）を追加します
[挿入/Scale Elements/ScaleTitle] | ScaleTitle オブジェクト（スケールタイトル）を追加します

[挿入/Primitives] メニューにはシェープなどの基本的な図形を追加するためのコマンドがあります。

コマンド | 説明
[挿入/Primitives/Line] | Line コンポーネント（）を追加します
[挿入/Primitives/Circle] | Circle コンポーネント（円）を追加します
[挿入/Primitives/Ellipse] | Ellipse コンポーネント（楕円）を追加します
[挿入/Primitives/Rectangle] | Rectangle コンポーネント（四角形）を追加します
[挿入/Primitives/RoundedRectangle] | RoundedRectangle コンポーネント（角丸四角）を追加します
[挿入/Primitives/Frame] | Frame コンポーネント（枠）を追加します
[挿入/Primitives/Picture] | Picture コンポーネント（イメージ）を追加します
[挿入/Primitives/PictureSet] | PictureSet コンポーネント（イメージセット）を追加します
[挿入/Primitives/Label] | Label コンポーネント（ラベル）を追加します
[挿入/Primitives/Arc] | Arc コンポーネント（弧）を追加します
[挿入/Primitives/Pie] | Pie コンポーネント（パイ）を追加します
[挿入/Primitives/RingSector] | RingSector コンポーネント（ドーナツ型）を追加します

[ヘルプ]メニューにはソフトウェアに関する情報を表示するためのメニュー項目があります。

また、ツールバーには選択したオブジェクトの出力順を変更するためのボタンもあります。

コマンド | 説明
[選択したオブジェクトを前方に移動]* | 選択したオブジェクトを１つ上に移動します
[選択したオブジェクトを後方に移動]* | 選択したオブジェクトを１つ下に移動します
[選択したオブジェクトを先頭に移動]* | 選択したオブジェクトを先頭に移動します
[選択したオブジェクトを最後に移動]* | 選択したオブジェクトを最後に移動します

* 選択したオブジェクトのグループ順を変更しても、グループ内の順序関係はそのままです。

作業領域での[選択]ツールの使い方について説明します。

[選択]モードが有効の場合、ビジュアルオブジェクトを左マウスでクリックして選択できます。オブジェクトのグループを選択するには Ctrl キーを押したまま各オブジェクトを選択するか、左マウスボタンを押したままオブジェクトのかたまりを選択できます。

選択したオブジェクトに、円形の制御ポイントが表示されます。

選択したオブジェクトはチャートのツリーに強調表示されます。

選択したオブジェクトに次のような編集処理を行うことができます。

  • クリップボードにコピー（クリップボード）
  • クリップボードからの貼り付け
  • 削除
  • 出力順の変更
  • プロパティウィンドウでのプロパティの変更
  • マウスによるオブジェクトの位置変更
  • オブジェクトの制御ポイントを移動することにより、あるオブジェクトのプロパティを変更する

選択したオブジェクトの制御ポイントは主要のプロパティを変更するために使用します。ポイントの位置はマウスでドラッグして変更できます。

各オブジェクトには独自の制御ポイントが設定されています。例えば、Rectangle オブジェクトには10個のポイントがあり、1つは中心を変更するためのもので、1つは回転角度を変更するためのもので、それ以外のポイントは矩形領域のサイズ変更に使用します。

Rectangle オブジェクトのデザイナの制御ポイント

制御ポイントの位置を変更すると、そのオブジェクトのプロパティも変更されます。

チャートのアウトラインウィンドウは、現在のチャートの構造をツリー表示します。作業領域にオブジェクトが追加されると、自動的にアウトラインウィンドウに表示されます。選択したオブジェクトはツリーで強調表示されます。このウィンドウでオブジェクトをマウスでドラッグすると、オブジェクトの相対位置を変更できます。


Using DashboardViewer

DashboardViewer の使用

DashboadViewer コントロールは Chart ModelKit のチャート機能と Instrumentation ModelKit のゲージ機能を組み合わせることができます。このコントロールは様々なオブジェクトやゲージが入ったチャートを Windows フォームアプリケーションに表示できます。

イメージの DashboardViewer コントロールでは、温度を温度計ゲージで表示し、それまでの温度の推移をチャートのラインで表示しています。現在の温度が定義した温度より高くなると点灯する Light インジケータもチャートにあります。同じ1つの軸がチャートや温度計のインジケータとして使用されます。

このサンプルは 「ChartSamplesCenter」 の 「DashboardViewer コントロールの使用」にあります。

DashboardViewer コントロールにはデザイナがあり、チャートやゲージの作成、カスタマイズ、組み合わせが可能です。また、オブジェクトのプロパティに式を使用したり、インタラクティブな計器をテストするための TestTool モードも利用できます。

DashboardViewer の使い方は ChartViewer の使い方と似ています。ユーザガイドの「チャートビューア」を参照してください。デザイナの使い方はチャートまたや計器を作成するためのデザイナの使い方と似ています。ユーザガイドの Chart ModelKit の「デザイナ」または Instrumentation ModelKit の 「Instrument デザイナの使い方とその機能について」を参照してください。計器の作成方法は Instrmentation ModelKit と似ています。チャートの作成方法は Chart ModelKit と似ています。

計器オブジェクトとチャートオブジェクトを組み合わせて使用する場合、何の制限もないのでどれを組み合わせても構いません。ただ、Chart オブジェクトを最上位のオブジェクトにしてください。Chart オブジェクトは Instrument から派生しているので計器として使用しても支障はありません。


Joint use of Chart ModelKit and OLAP ModelKit

Chart ModelKit と OLAP ModelKit の併用

ここでは、OLAP ModelKit と Chart ModelKit の併用について説明します。併用方法をご理解いただくために簡単なアプリケーションを作成します。

まず、使用するデータを定義しなければなりません。Access で work.mdb という小さなデータベースを作成します。データベースの構造は下図の通りです。

商品 （Goods）、顧客 （Customer）、受注 （CustomerOrder） という3つのテーブルがあります。キーはすべて int32 型で、Count と Cost 以外のフィールドは String 型です。

明細ごとにすべての商品の合計を表示するピボットテーブルを作成し、このピボットテーブルを基にチャートを作成します。

アプリケーションを作成していきます。

まず、データソースの構造について考えなければなりません。これには DataSet を使用します。DataSet に CustomerOrder というテーブルを作成します。フィールド一覧は下図の通りです。

Cust_name、country、name フィールドは String 型で、count と cost フィールドは Double 型で、id_order フィールドは int32 型です。

次のコードを OnLoad イベントに記述して、データベースから DataSet を読み込みます。

    private void Form1_Load(object sender, EventArgs e)

    {

      OleDbConnection Connection = new

      OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data  Source=\"..\\..\\Work.mdb\"");

      OleDbDataAdapter adapter2 = new OleDbDataAdapter("SELECT id_order, count, cost, cust_name, country, name FROM (CustomerOrder INNER JOIN Customer ON CustomerOrder.id_customer = Customer.id_customer) INNER JOIN goods on CustomerOrder.id_goods = Goods.id_goods", Connection);

      adapter2.Fill(customerOrder);

      Connection.Close();

    }

DataSet の用意ができました。BindingSource を追加して、作成した DatSet をデータソースとして指定します。忘れずに DataMember プロパティに CustomerOrder テーブルを設定してください。

フォームに DataCube コンポーネントと DataCubeGrid コンポーネントを追加します。

作成した BindingSource を DataCube のデータソース （DataSource プロパティ）として設定し、次のパラメータを指定してピボットテーブルを作成します。

DataCubeGrid.Source プロパティに、この DataCube を設定します。

これでピボットテーブルが表示されます。列には明細 ＩＤ が、行には商品名が表示されます。列と行の交差セルには各商品の金額が明細ごとに表示されます。

列や行ごとの金額をフィルタにかけるとチャートが書き直されるように、このテーブルを基にしてチャート（X 軸に明細 ＩＤ、Y 軸に明細ごとの金額）を作成します。

手順1：フォームに DataCubeView コンポーネントを追加します。データを取得する DataCube （DataCube プロパティ）と引数がある DataCube の軸 （PrimaryDimension プロパティ）を設定します。この場合、明細 ＩＤ が X 軸に配置されているので、PrimaryDimension プロパティが X に設定されるのはそのためです。

手順2：ChartViewer コンポーネントを追加し、作成した DataCubeView をデータソース一覧に追加します。これは一般的な DataSet の設定と同じです。

手順3：テンプレートを使用してチャートを作成するか、1 からチャートを作成し、系列のデータソースの編集に進みます。チャートのソースを選択します。

そして、Argument と Value プロパティを設定します。Argument プロパティには GenericCaption を、Value プロパティには GenericFact を設定します。GenericCaption は DataCubeView で指定した軸から取得され、GenericFact はこの GenericCaption ごとの合計になります。この場合、GenericCaption は id_order で、GenericFact は id_order の ID を持つ明細ごとの合計になります。

注意：フィールド名をそれぞれ引数、値として設定しても構いませんが、X ディメンション、Y ディメンション、もしくはファクトの値を変更した場合、チャートも変更しなければなりません。これは利便性に欠けるので GenericCaption と GenericFact をお使いになることを強くお勧めするのはそのためです。

後は、DataCubeView の change イベントハンドラ （ListChanged イベント）にテキストを追加するだけです。このイベントはデータのフィルタ処理を行った場合を含め、ピボットテーブルが再計算された時に呼び出されます。従って、このイベントにチャートを更新するためのテキストを書き込むことで、テーブルのデータが変わるたびにチャートを更新することができます。更に、アプリケーションの起動時にデータキューブを再計算するためのメソッドを設定します。OnLoad フォームハンドラにメソッドを追加します。

最終的には次のようになります。

private void Form1_Load(object sender, EventArgs e)

{

  OleDbConnection Connection = new

  OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data

     Source=\"..\\..\\Work.mdb\"");

  OleDbDataAdapter adapter2 = new OleDbDataAdapter("SELECT id_order, count, cost,

     cust_name, country, name FROM (CustomerOrder INNER JOIN Customer ON

     CustomerOrder.id_customer = Customer.id_customer) INNER JOIN goods on

     CustomerOrder.id_goods = Goods.id_goods", Connection);

  adapter2.Fill(customerOrder);

  Connection.Close();

  dataCube1.Recalculate();

}

    DataCubeView の refresh イベントハンドラのコード例は次の通りです。
delegate void DataChangedDelegate();

private void dataCubeView1_ListChanged(object sender, ListChangedEventArgs e)

{

   DataChangedDelegate dataChangedDelegate = chartViewer1.Chart.DataChanged;

   chartViewer1.BeginInvoke(dataChangedDelegate);

}


Using charts in Web forms applications

Web フォームアプリケーションでチャートを使用する

WebChartViewer コンポーネントは Web フォームにチャートを表示するために使用します。

このコンポーネントはチャートをデータソースにバインドでき、その作成したチャートをウェブページに表示できます。WebChartViewer は DataBoundControl から派生しており、DataBoundControl で取得可能なデータソース（例：SqlDataSource、XmlDataSource、ObjectDataSource などのさまざまなDataSourceControl） を使用できます。DataSourceID プロパティを使用してデータソースを設定します。

チャートは最終的な HTML ページにイメージとして表示されます。

WebChartViewer には PuctureFormat プロパティがあり、チャートのイメージ形式を指定します。このプロパティには下記の値のうちの1つを設定できます。

  • Jpeg - Jpeg (Joint Photographic Experts Group) 形式
  • Png - Png (Portable Network Graphics) 形式
  • Gif - Gif (Graphics Interchange Format) 形式
  • Bmp - Bmp (Bitmap) 形式
  • Svg - Svg (Scalable Vector Graphics) 形式
  • Flash - Flash (Flash) 形式

JPEG 形式を指定した場合、JpegQuality プロパティは Jpeg イメージのイ品質を指定します。


Example of using charts

チャートの使用例

Chart ModelKit タブにある WebChartViewer コンポーネントを ASP.NET のページに貼り付け、位置と大きさを指定します。WebChartViewer コンポーネントのスマートタグパネルから「データソースの選択」を選び、チャートのデータソースを指定します。例えば、ObjectDataSource （座標で指定したポイント）をデータソースとして指定します。

スマートタグパネルから 「Run Designer」 を選択し、チャートデザイナを立ち上げ、表示するチャートを指定します。

デザイナとチャートの作成方法は ChartViewer と似ています。

PictureFormat プロパティにイメージ形式（ここでは Jpeg）を指定します。

アプリケーションを実行します。ページにはデータソースのデータで設計されたチャートが表示されます。


Using dashboard in Web forms application

Web フォームアプリケーションでダッシュボードを使用する

WebDashboardViewer コンポーネントは Web フォームアプリケーションでチャートと計器を組み合わせて使用するためのものです。このコンポーネントは DashboardViewer と似ていますが、Web フォームにダッシュボードを表示するために使用します。

WebDashboardViewer コンポーネントは WebChartViewer から派生しているので使い方が似ています。

WebDashboardViewer コンポーネントはチャートと計器を同時に表示できます。

WebDashboardViewer のデザイナの機能が拡張されており、チャートと計器を同時に作成できます。


Appendix 1 Working with the Expression Editor

付録 1 式エディタの操作

式エディタは下図のように表示されます。

典型的な演算子や式言語の関数は、カテゴリ別で「演算子」タブと「関数」タブのツリーに表示されます。ウィンドウ右側のツリーには入れ子のデータソースフィールドがあります。どのツリーの構造でもテキストの入力フィールドにドラッグ&ドロップして移動できます。ツリーの要素をダブルクリックすると、その入力フィールドの現在位置にその構造を貼り付けることができます。

入力し終わったら、「Ok」 ボタンをクリックして変更を適用するか、「キャンセル」ボタンをクリックしてキャンセルしてください。「Ok」 ボタンを押すと、ウィンドウが閉じる前に構文チェックが行われます。

また、独自の関数を作成できます。指定したパラメータで値を計算できます。 PerpetuumSoft.Framework.Expressions.ICustomFunction インターフェイスを実現するクラスを作成する必要があります。その後、次のように PerpetuumSoft.Framework.Expressions.BuiltInFunctions を静的クラスに登録してください。

PerpetuumSoft.Framework.Expressions.BuiltInFunctions.RegisterFunction("Custom function", new CustomFunction());

式エディタには次のボタンパネルがあります。

ボタン | 説明
「保存」 | ファイルに式を保存します
「開く」 | ファイルから式を読み込みます
「式のチェック」 | 構文チェックを行います。構文エラーが見つかると、間違っている構造の先頭位置を示した警告が表示されます。


Using Product Features

本製品の特徴を使用する

フィードバック：info@newtone.co.jp

Copyright(c) by Perpetuum Software
Japanese localization by NEWTONE Corporation


Web Forms

Web フォーム

フィードバック：info@newtone.co.jp

Copyright(c) by Perpetuum Software
Japanese localization by NEWTONE Corporation


Win Forms

Win フォーム

フィードバック：info@newtone.co.jp

Copyright(c) by Perpetuum Software
Japanese localization by NEWTONE Corporation


Access to Types, Basic Types and Their Methods

型、基本型およびメソッドへのアクセス

フィードバック：info@newtone.co.jp

Copyright(c) by Perpetuum Software
Japanese localization by NEWTONE Corporation


Typical Tasks and Solutions in Scripts

スクリプトにおける典型的なタスクと解決法

フィードバック：info@newtone.co.jp

Copyright(c) by Perpetuum Software
Japanese localization by NEWTONE Corporation