Index エレメントはレポート内の特定の語を見つけ出すための方法を読む人に提供します。索引はレポート内で見つけた語句をレポートの最後に集めてアルファベット順に並べた語句の集合です。各語句には各語句に関連した番号が付いています。この番号は、読む人がその語句を見つけることができるレポートのページです。その語が複数のページで見つかった場合には、それらのページを表す複数の番号がその語に関連付けられます。
IText インターフェイスから AddTarget メソッドを呼び出すことによって語を索引に追加できます。このメソッドには 2 つのオーバーロードがあります。ひとつはターゲット名として文字列を認め、もうひとつはターゲットおよびキャプションの名前として 2 つの文字列を認めます。Text エレメントに必要な数だけターゲットを追加できます。索引が複数のページにあるひとつの語を認識するには、その語が属する各 Text エレメントにターゲットとしてその語を追加する必要があります。Index エレメントはこれらのターゲットを使用して、索引を作成します。したがって、AddTarget メソッドによってその語を明示的に索引に追加しない限り、ひとつの語が複数の場所にある場合には認識しません。
Index エレメントは、階層を使用して作成されるという点で TOC エレメントに非常に似ています。索引が提供する階層の数は、完全にユーザーとレポートの複雑さ次第で決定します。 IIndex インターフェイスから AddLevel を呼び出すことによって階層を索引に追加します。最も一般的な索引は、2 階層で構成されます。この構成によって、複合語句を同じカテゴリーにグループ化できます。たとえば、cargo container、cargo hold、cargo ship などの 3 つの複合語を索引に追加する必要があるとします。通常と全く同じように追加して、AddTarget を 3 回呼び出すことによって、各語に個別のターゲット名を提供します。唯一の違いはターゲットのキャプションにあります。コロン(:)を使用することによって、キャプションで索引の階層を分けます。この規則を使用すると、「cargo hold」のキャプションは「cargo:hold」になります。これによって、索引で「cargo」という語の下に「hold」という語が配置され、上記のスクリーンショットで示すように 2 番目の階層を使用します。語句をグループ化する方法は、完全にユーザー次第です。
以下のコードは、索引を格納するために、Text エレメントを作成し、いくつかのターゲットを追加します。これで 2 階層の索引が作成されます。
索引で使用するために 2 つの Style オブジェクトを作成します。
Visual Basic の場合:
Imports Infragistics.Documents.Reports.Reports.Report . . . Dim mainStyle1 As New _ Infragistics.Documents.Reports.Reports.Report.Text.Style(New Font("Verdana", 18), Brushes.Black) Dim mainStyle2 As New _ Infragistics.Documents.Reports.Reports.Report.Text.Style(New Font("Arial", 24), Brushes.SteelBlue)
C# の場合:
using Infragistics.Documents.Reports.Reports.Report; . . . Infragistics.Documents.Reports.Reports.Report.Text.Style mainStyle1 = new Infragistics.Documents.Reports.Reports.Report.Text.Style(new Font("Verdana", 18), Brushes.Black); Infragistics.Documents.Reports.Reports.Report.Text.Style mainStyle2 = new Infragistics.Documents.Reports.Reports.Report.Text.Style(new Font("Arial", 24), Brushes.SteelBlue);
索引に配置するために新しいセクションを作成します。
Visual Basic の場合:
Dim indexSection As Infragistics.Documents.Reports.Reports.Report.Section.ISection = _ report.AddSection() indexSection.PageMargins = New Margins(50)
C# の場合:
Infragistics.Documents.Reports.Reports.Report.Section.ISection indexSection = report.AddSection(); indexSection.PageMargins = new Margins(50);
Text エレメントを作成してターゲットをこのエレメントに追加します。
Visual Basic の場合:
Dim indexText As Infragistics.Documents.Reports.Reports.Report.Text.IText = _ indexSection.AddText() indexText.Style = mainStyle1 indexText.AddContent("Index targets are attached to this Text element.") indexText.AddTarget("Bear", "Animal:Bear") indexText.AddTarget("Tiger", "Animal:Tiger") indexText.AddTarget("Cat", "Animal:Cat") indexText.AddTarget("Lion", "Animal:Lion") indexText.AddTarget("cargo hold", "cargo:hold") indexText.AddTarget("cargo container", "cargo:container") indexText.AddTarget("cargo ship", "cargo:ship") indexText.AddTarget("Coffee", "Coffee") indexText.AddTarget("Espresso", "Espresso") indexText.AddTarget("Capuccino", "Capuccino") indexText.AddTarget("Energize", "Energize")
C# の場合:
Infragistics.Documents.Reports.Reports.Report.Text.IText indexText = indexSection.AddText(); indexText.Style = mainStyle1; indexText.AddContent("Index targets are attached to this Text element."); indexText.AddTarget("Bear", "Animal:Bear"); indexText.AddTarget("Tiger", "Animal:Tiger"); indexText.AddTarget("Cat", "Animal:Cat"); indexText.AddTarget("Lion", "Animal:Lion"); indexText.AddTarget("cargo hold", "cargo:hold"); indexText.AddTarget("cargo container", "cargo:container"); indexText.AddTarget("cargo ship", "cargo:ship"); indexText.AddTarget("Coffee", "Coffee"); indexText.AddTarget("Espresso", "Espresso"); indexText.AddTarget("Capuccino", "Capuccino"); indexText.AddTarget("Energize", "Energize");
Text エレメントとまもなく作成される予定の Index エレメント間にスペースを追加するためにギャップを作成します。
Visual Basic の場合:
Dim indexGap As Infragistics.Documents.Reports.Reports.Report.IGap = indexSection.AddGap() indexGap.Height = New FixedHeight(50)
C# の場合:
Infragistics.Documents.Reports.Reports.Report.IGap indexGap = indexSection.AddGap(); indexGap.Height = new FixedHeight(50);
索引の見出しを作成します。
Visual Basic の場合:
Dim indexHeading As Infragistics.Documents.Reports.Reports.Report.Text.IText = _ indexSection.AddText() indexHeading.Style = mainStyle2 indexHeading.AddContent("Index")
C# の場合:
Infragistics.Documents.Reports.Reports.Report.Text.IText indexHeading = indexSection.AddText(); indexHeading.Style = mainStyle2; indexHeading.AddContent("Index");
Index エレメントを定義して、2 階層追加します。
Visual Basic の場合:
Dim index As Infragistics.Documents.Reports.Reports.Report.Index.IIndex = _ indexSection.AddIndex() index.Alphabet.Style = mainStyle2 Dim indexLevel As Infragistics.Documents.Reports.Reports.Report.Index.IIndexLevel = _ index.AddLevel() indexLevel.Style = mainStyle1 indexLevel = index.AddLevel() indexLevel.Style = mainStyle1 indexLevel.Indents.Left = 30 indexLevel.Style = _ New Infragistics.Documents.Reports.Reports.Report.Text.Style(New Font("Verdana", 14), Brushes.Black)
C# の場合:
Infragistics.Documents.Reports.Reports.Report.Index.IIndex index = indexSection.AddIndex(); index.Alphabet.Style = mainStyle2; Infragistics.Documents.Reports.Reports.Report.Index.IIndexLevel indexLevel = index.AddLevel(); indexLevel.Style = mainStyle1; indexLevel = index.AddLevel(); indexLevel.Style = mainStyle1; indexLevel.Indents.Left = 30; indexLevel.Style = new Infragistics.Documents.Reports.Reports.Report.Text.Style(new Font("Verdana", 14), Brushes.Black);