作成日: 2014/09/26 最終更新日: 2014/09/26
文書種別
使用方法
詳細
グリッドにチェックボックスを設定しても、プレビューや印刷を行うと「True」や「False」という文字列として表示されます。
これは、C1TrueDBGridのプレビューや印刷に使用されているC1Reportで、チェックボックスをレポートにレンダリングする際のデフォルト設定が「テキストとして表示」となっているためです。
プレビュー/印刷時にもチェックボックスとして表示するには、動的にC1ReportのField.CheckBoxプロパティを「CheckBoxEnum.CheckBox」に設定してください。
◎サンプルコード(VB)
◎サンプルコード(C#)
これは、C1TrueDBGridのプレビューや印刷に使用されているC1Reportで、チェックボックスをレポートにレンダリングする際のデフォルト設定が「テキストとして表示」となっているためです。
プレビュー/印刷時にもチェックボックスとして表示するには、動的にC1ReportのField.CheckBoxプロパティを「CheckBoxEnum.CheckBox」に設定してください。
◎サンプルコード(VB)
Public Sub New() ' この呼び出しは、Windows フォーム デザイナで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後で初期化を追加します。 InitializeTDBGrid() BuildReportDefinition() End Sub Private Sub BuildReportDefinition() ' レポートを初期化します。 _c1r = New C1.C1Report.C1Report() _c1r.Clear() _c1r.Layout.MarginLeft = 500 ' データソースをアサインします。 _c1r.DataSource.Recordset = C1TrueDBGrid1.DataSource ' ヘッダーセクションを追加します。 Dim s As C1.C1Report.Section = _c1r.Sections(C1.C1Report.SectionTypeEnum.Header) s.Visible = True Dim f As C1.C1Report.Field f = s.Fields.Add("fldTitle", "Grid-based report", 0, 0, 4000, 700) ' ページヘッダーと詳細セクションを追加します。 Dim sHdr As C1.C1Report.Section = _c1r.Sections(C1.C1Report.SectionTypeEnum.PageHeader) sHdr.Visible = True Dim sDtl As C1.C1Report.Section = _c1r.Sections(C1.C1Report.SectionTypeEnum.Detail) sDtl.Visible = True ' ヘッダーと詳細セクションの詳細を設定します。 Dim rc As New Rectangle(0, 0, CInt(sDtl.Height), 0) For Each col As C1.Win.C1TrueDBGrid.C1DataColumn In C1TrueDBGrid1.Columns ' フィールドの四角形をTwips単位で計算します。 rc.Width = C1TrueDBGrid1.DefColWidth * 1440 ¥ 96 + 4000 ' ページヘッダーセクションのフィールドを作成します。 rc.Height = CInt(sHdr.Height) f = sHdr.Fields.Add("fh" + col.Caption, col.Caption, rc) f.Width = 1000 f.Height = 250 ' 詳細セクションのフィールドを作成します。 rc.Height = CInt(sDtl.Height) f = sDtl.Fields.Add("fd" + col.Caption, col.Caption, rc) f.Calculated = True f.CanGrow = True f.Format = col.NumberFormat If col.DataType IsNot Nothing Then If col.DataType.Equals(GetType(System.Boolean)) Then ' CheckBoxEnum.CheckBoxを指定します。 f.CheckBox = C1.C1Report.CheckBoxEnum.CheckBox End If End If ' 次のフィールドに移動します。 rc.Offset(rc.Width, 0) If rc.Left > 10 * 1440 Then Exit For End If Next End Sub Private Sub InitializeTDBGrid() ' データを作成します。 Dim dt As New DataTable("TEST") dt.Columns.Add("ColumnA", GetType(String)) dt.Columns.Add("ColumnB", GetType(Boolean)) For i As Integer = 0 To 9 dt.Rows.Add(String.Format("AA{0}", i), i Mod 2 = 0) Next dt.AcceptChanges() ' TrueDBGridを設定します。 C1TrueDBGrid1.DataSource = dt C1TrueDBGrid1.Splits(0).DisplayColumns(0).Width = 100 C1TrueDBGrid1.Splits(0).ColumnCaptionHeight = 30 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' プレビューダイアログを表示します。 Dim pd As C1.Win.C1Preview.C1PrintPreviewDialog = New C1.Win.C1Preview.C1PrintPreviewDialog() pd.Document = _c1r pd.ShowDialog() End Sub
◎サンプルコード(C#)
public partial class Form1 : Form
{
C1.C1Report.C1Report _c1r;
public Form1()
{
InitializeComponent();
// InitializeComponent() 呼び出しの後で初期化を追加します。
InitializeTDBGrid();
BuildReportDefinition();
}
private void button1_Click(object sender, EventArgs e)
{
// プレビューダイアログを表示します。
C1.Win.C1Preview.C1PrintPreviewDialog pd = new C1.Win.C1Preview.C1PrintPreviewDialog();
pd.Document = _c1r;
pd.ShowDialog();
}
private void BuildReportDefinition()
{
// レポートを初期化します。
_c1r = new C1.C1Report.C1Report();
_c1r.Clear();
_c1r.Layout.MarginLeft = 500;
// データソースをアサインします。
_c1r.DataSource.Recordset = c1TrueDBGrid1.DataSource;
// ヘッダーセクションを追加します。
C1.C1Report.Section s = _c1r.Sections[C1.C1Report.SectionTypeEnum.Header];
s.Visible = true;
C1.C1Report.Field f;
f = s.Fields.Add("fldTitle", "Grid-based report", 0, 0, 4000, 700);
// ページヘッダーと詳細セクションを追加します。
C1.C1Report.Section sHdr = _c1r.Sections[C1.C1Report.SectionTypeEnum.PageHeader];
sHdr.Visible = true;
C1.C1Report.Section sDtl = _c1r.Sections[C1.C1Report.SectionTypeEnum.Detail];
sDtl.Visible = true;
// ヘッダーと詳細セクションの詳細を設定します。
Rectangle rc = new Rectangle(0, 0, (int)(sDtl.Height), 0);
foreach (C1.Win.C1TrueDBGrid.C1DataColumn col in c1TrueDBGrid1.Columns)
{
// フィールドの四角形をTwips単位で計算します。
rc.Width = c1TrueDBGrid1.DefColWidth * 15 + 4000;
// ページヘッダーセクションのフィールドを作成します。
rc.Height = (int)(sHdr.Height);
f = sHdr.Fields.Add("fh" + col.Caption, col.Caption, rc);
f.Width = 1000;
f.Height = 250;
// 詳細セクションのフィールドを作成します。
rc.Height = (int)(sDtl.Height);
f = sDtl.Fields.Add("fd" + col.Caption, col.Caption, rc);
f.Calculated = true;
f.CanGrow = true;
f.Format = col.NumberFormat;
if (col.DataType != null)
{
if(col.DataType.Equals(typeof(System.Boolean)))
{
// CheckBoxEnum.CheckBoxを指定します。
f.CheckBox = C1.C1Report.CheckBoxEnum.CheckBox;
}
}
// 次のフィールドに移動します。
rc.Offset(rc.Width, 0);
if (rc.Left > 10 * 1440 )
{
break;
}
}
}
private void InitializeTDBGrid()
{
// データを作成します。
DataTable dt = new DataTable("TEST");
dt.Columns.Add("ColumnA", typeof(String));
dt.Columns.Add("ColumnB", typeof(Boolean));
for (int i = 0; i < 10; ++i)
{
dt.Rows.Add(String.Format("AA{0}", i), (i % 2) == 0);
}
dt.AcceptChanges();
// TrueDBGridを設定します。
c1TrueDBGrid1.DataSource = dt;
c1TrueDBGrid1.Splits[0].DisplayColumns[0].Width = 100;
c1TrueDBGrid1.Splits[0].ColumnCaptionHeight = 30;
}
}
旧文書番号
70325