リストデータ画面
YWorks Software Framework(以下、YWSFと呼びます)では、リストデータを表示する画面としてフォーム形式のYCDbListFormクラスとダイアログ形式のYCDbListDialogクラスを用意しています。どちらもYIDbListWindowインターフェイスを継承し、YCDbListオブジェクトを取得、設定するためのListプロパティを実装しています。YCDbListのサブクラスのオブジェクトが持つリスト形式のデータを表示するために、YCDbListFormクラスやYCDbListDialogクラスを継承したサブクラスを作成します。
YCDbList系ウィンドウではリスト表示のためにDataGridViewコントロールを使用します。この際、DataGridViewは継承フォームのスーパークラスに用いたときに、サブクラスで属性変更が全くできない仕様(表示位置を動かすことさえできません)になっているので、必ずサブクラスでコントロール配置をしなければなりません。そのため、スーパークラスのメソッドを機能させるためにListGridメソッド(DataGridViewを返します)をオーバーライド(サブクラスでの実装のことです)して、サブクラスで配置したDataGridViewコントロールを返すように記述しなければなりません。下記がそのサンプルで、dgListが配置したDataGridViewコントロールの名前です。
protected override DataGridView ListGrid { get { return dgList; } }
DataGridViewの表示項目の設定についてはCreateListGridColumnsメソッドとFormatListGridメソッドをオーバーライドします。では表示項目(列)を設定します。そしてFormatListGridメソッドで表示形式を整えます。下記にCreateListGridColumnsメソッドとFormatListGridメソッドのサンプルを記述します。
//表示項目(列)の追加 protected override void CreateListGridColumns() { this.AddGridTextColumn("ユーザグループコード"); this.AddGridTextColumn("ユーザグループ名"); this.AddGridTextColumn("プライオリティ"); this.AddGridCheckBoxColumn("管理者フラグ", -1, 0); this.AddGridCheckBoxColumn("ゲストフラグ", -1, 0); this.AddGridCheckBoxColumn("削除フラグ", -1, 0); } //表示体裁の設定 protected override void FormatListGrid() { string columnName; //this.ListGrid.ReadOnly = true; this.ListGrid.AllowUserToAddRows = true; this.ListGrid.AllowUserToDeleteRows = true; this.ListGrid.AllowUserToOrderColumns = false; this.ListGrid.AllowUserToResizeColumns = true; this.ListGrid.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; this.ListGrid.RowTemplate.Height = YCListGridConst.DEFAULT_ROW_HEIGHT; this.ListGrid.AlternatingRowsDefaultCellStyle.BackColor = Color.FromName(YCListGridConst.DEFAULT_ALTERNATING_ROWS_BACK_COLOR); this.ListGrid.DefaultCellStyle.WrapMode = DataGridViewTriState.False; columnName = "ユーザグループコード"; this.ListGrid.Columns[columnName].Width = 70; this.ListGrid.Columns[columnName].HeaderText = "コード"; //this.ListGrid.Columns[columnName].Frozen = true; //列表示を固定 //this.ListGrid.Columns[columnName].DividerWidth = 2; //列の境界線の太さの変更 columnName = "ユーザグループ名"; this.ListGrid.Columns[columnName].Width = 100; this.ListGrid.Columns[columnName].HeaderText = "グループ名"; columnName = "プライオリティ"; this.ListGrid.Columns[columnName].Width = 70; this.ListGrid.Columns[columnName].HeaderText = "順位"; this.ListGrid.Columns[columnName].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; //this.ListGrid.Columns[columnName].DefaultCellStyle.Format = "#,###"; //数値の桁区切り表示 columnName = "管理者フラグ"; this.ListGrid.Columns[columnName].Width = 50; this.ListGrid.Columns[columnName].HeaderText = "管理者"; columnName = "ゲストフラグ"; this.ListGrid.Columns[columnName].Width = 50; this.ListGrid.Columns[columnName].HeaderText = "ゲスト"; columnName = "削除フラグ"; this.ListGrid.Columns[columnName].Width = 50; this.ListGrid.Columns[columnName].HeaderText = "削除"; }
まずCreateListGridColumnsメソッドが呼び出されます。AddGrid〜〜Columnメソッドを用いて表示用の列項目を追加していきます。表示項目に利用できる列コントロールは文字列入力用のテキストボックス以外にもコンボボックスやチェックボックスも使用することができます。そして、FormatListGridメソッドにてリスト表示の体裁を整えます。DataGridViewを入力可能にするか読込み専用にするか、偶数行(行インデックスが奇数の行)の表示色をどうするかといったDataGridView自身の属性や、列の見出し、列ごとの属性を変更することが可能です。そして、画面のLoadイベントでLoadDataメソッドを呼び出すことにより関連付けられているYCDbListオブジェクトのリスト形式のデータを画面上に表示することができます。 また、YWSFではDataGridViewの内容の簡易印刷が可能です。YCPrintDocumentHelperクラスを使用してください。具体的には印刷ボタン等を作成して下記のソースコードを記述します。
//プレビューを表示せずに印刷します。 YCPrintDocumentHelper.PrintDataGridView(this.ListGrid, //DataGridView System.Drawing.Printing.PaperKind.A4, false, //用紙種別と用紙の向き(trueなら横向き) new System.Drawing.Printing.Margins(50, 50, 50, 50)); //用紙の余白 //印刷プレビューを表示します。 YCPrintDocumentHelper.OpenPreviewForDataGridView(this.ListGrid, //DataGridView System.Drawing.Printing.PaperKind.A4, true, //用紙種別と用紙の向き(trueなら横向き) new System.Drawing.Printing.Margins(50, 50, 50, 50), //用紙の余白 new Size(800, 600)); //プレビューウインドウのサイズ
上記の簡易印刷機能はPrintDocumentクラスを使って実装していますが、もし本格的な帳票が必要な場合はCrystal Reportsや他のサードパーティ製の帳票作成ツールでの作成やOpenOffice.orgへの出力といった方法もあります。