TableView は、表を表示するビューを表すクラスで 、ViewSchedule と PanelScheduleView の基本クラスです。1 つまたは複数のセクションからなる、関連付けられた TableData クラスがあります。ViewSchedule の場合、ヘッダとボディ セクションはそれぞれ 1 つしかありません。
TableSectionData クラスは、行と列に配列されたセルの連続したセットを表します。ViewSchedule の場合、TableSectionData のセル内容は ScheduleDefinition とパラメータから生成されます。また、ViewSchedule の場合、ヘッダ セクションには読み込みと書き込み権限がありますが、ボディ セクションは読み込み専用です。
表の実際のデータは TableData クラスに含まれます。TableData オブジェクトは TableView クラスから直接取得できませんが、両方の子クラスには、GetTableData()メソッドがあります。ViewSchedule の場合、このメソッドは TableData オブジェクトを返します。PanelScheduleView の場合は、GetTableData は、PanelScheduleData オブジェクトを返します。これは TableData 基本クラスから作成します。TableData クラスは、表の行、列、セルのスタイルを記述するデータの大部分を保持します。PanelScheduleData は、特にパネル集計表に関する追加メソッドを提供します。
表のデータはセクションに分かれています。TableData の行、列、セルで 作業するには、TableSectionData オブジェクトを取得する必要があります。TableData.GetSectionData()は、要求されたセクション データに対して整数で、または SectionType (Header または Body)を使用するかのいずれかで呼び出すことができます。
TableSectionData クラスを使用して、行または列、セルの書式設定を挿入または削除したり、セル タイプ(文字またはグラフィックス)またはセルのカテゴリの ID など、集計表のセクションを構成するセルの詳細を取得します。
次の例では、新しい行が集計表の見出しセクションに追加され、テキストが新しく作成されたセルに設定されています。ユーザ インタフェースで作成されたときのタイトルには、見出しセクションの既定の最初の行に注意してください。
コード領域: 行を挿入 |
public void CreateSubtitle(ViewSchedule schedule) { TableData colTableData = schedule.GetTableData(); TableSectionData tsd = colTableData.GetSectionData(SectionType.Header); tsd.InsertRow(tsd.FirstRowNumber + 1); tsd.SetCellText(tsd.FirstRowNumber + 1, tsd.FirstColumnNumber, "Schedule of column top and base levels with offsets"); } |
また上記のコード サンプルでは、FirstColumnNumber および FirstRowNumber プロパティを使用します。一部のセクションでは、行または列の番号が 0 または 1 から始まる場合があります。これらのプロパティは、常にハードコード化された 0 または 1 の代わりに使用する必要があります。
次の例では、カスタム ヘッダ セクションを持つ、単一カテゴリの新しい集計表を作成します。
コード領域: ヘッダ セクションのカスタマイズ |
public static void CreateSingleCategoryScheduleWithSimpleHeaderSection(Document doc) { using (Transaction t = new Transaction(doc, "Create single-category with custom headers")) { // Build schedule t.Start(); ViewSchedule vs = ViewSchedule.CreateSchedule(doc, new ElementId(BuiltInCategory.OST_Windows)); AddRegularFieldToSchedule(vs, new ElementId(BuiltInParameter.WINDOW_HEIGHT)); AddRegularFieldToSchedule(vs, new ElementId(BuiltInParameter.WINDOW_WIDTH)); AddRegularFieldToSchedule(vs, new ElementId(BuiltInParameter.ALL_MODEL_MARK)); AddRegularFieldToSchedule(vs, new ElementId(BuiltInParameter.ALL_MODEL_COST)); doc.Regenerate(); // Get header section TableSectionData data = vs.GetTableData().GetSectionData(SectionType.Header); int rowNumber = data.LastRowNumber; int columnNumber = data.LastColumnNumber; // Get the overall width of the table so that the new columns can be resized properly double tableWidth = data.GetColumnWidth(columnNumber); data.InsertColumn(columnNumber); data.InsertColumn(columnNumber); // Refresh data to be sure that schedule is ready for text insertion vs.RefreshData(); //Set text to the first header cell data.SetCellText(rowNumber, data.FirstColumnNumber, "Special Window Schedule Text"); // Set width of first column data.SetColumnWidth(data.FirstColumnNumber, tableWidth / 3.0); //Set a different parameter to the second cell - the project name data.SetCellParamIdAndCategoryId(rowNumber, data.FirstRowNumber + 1, new ElementId(BuiltInParameter.PROJECT_NAME), new ElementId(BuiltInCategory.OST_ProjectInformation)); data.SetColumnWidth(data.FirstColumnNumber + 1, tableWidth / 3.0); //Set the third column as the schedule view name - use the special category for schedule parameters for this data.SetCellParamIdAndCategoryId(rowNumber, data.LastColumnNumber, new ElementId(BuiltInParameter.VIEW_NAME), new ElementId(BuiltInCategory.OST_ScheduleViewParamGroup)); data.SetColumnWidth(data.LastColumnNumber, tableWidth / 3.0); t.Commit(); } } public static void AddRegularFieldToSchedule(ViewSchedule schedule, ElementId paramId) { ScheduleDefinition definition = schedule.Definition; // Find a matching SchedulableField SchedulableField schedulableField = definition.GetSchedulableFields().FirstOrDefault<SchedulableField>(sf => sf.ParameterId == paramId); if (schedulableField != null) { // Add the found field definition.AddField(schedulableField); } } |
行、列、または個別のセルのスタイルは、集計表用にカスタマイズすることができます。これには、セルのすべての 4 面の境界線のスタイルや、セルの色、文字の外観(色、フォント、文字サイズ)を設定する機能が含まれています。標準の集計表では、これは、表の見出しセクションでのみ行うことができます。
下の例では、ViewSchedule (見出しセクションの 2 番目の行と想定)のサブタイトルのフォントを太字に、フォント サイズを 10 に設定しています。
コード領域: セルの書式設定 |
public void FormatSubtitle(ViewSchedule colSchedule) { TableData colTableData = colSchedule.GetTableData(); TableSectionData tsd = colTableData.GetSectionData(SectionType.Header); // Subtitle is second row, first column if (tsd.AllowOverrideCellStyle(tsd.FirstRowNumber + 1, tsd.FirstColumnNumber)) { TableCellStyle tcs = new TableCellStyle(); TableCellStyleOverrideOptions options = new TableCellStyleOverrideOptions(); options.FontSize = true; options.Bold = true; tcs.SetCellStyleOverrideOptions(options); tcs.IsFontBold = true; tcs.TextSize = 10; tsd.SetCellStyle(tsd.FirstRowNumber + 1, tsd.FirstColumnNumber, tcs); } } |