MESCIUS CalendarGrid for Windows Forms 4.0J > CalendarGridの使い方 > InputManCell > GcComboBox型セル > リストボックスの使い方(CalendarGcComboBoxCellType) |
CalendarGcComboBoxCellType.ListColumnsプロパティを使用します。
CalendarGcComboBoxCellTypeのリストボックスでは、ヘッダと項目に複数のカラム(列)を持つことができます。表示できるカラム数に制限はありません。
カラムを設定するには、ListColumnsプロパティが参照するListColumnCollectionを使用します。ListColumnCollectionは、リストの個々のカラムを表すListColumnオブジェクトを保持するコレクションです。
カラムを追加するには、デザイナのプロパティウィンドウのListColumnsプロパティから開かれる「カラムの編集」ダイアログボックスで[追加]ボタンをクリックします。カラムを1つ追加すると、CalendarGcComboBoxCellTypeのヘッダと項目には列が1つ追加されます。
コードからカラムを追加するには、ListColumnCollectionのAddメソッドまたはAddRangeメソッドを使用します。
次は、Addメソッドを使用してカラムを1つ追加するサンプルコードです。ここではカラムの名前(ヘッダに表示されるテキスト)を指定してカラムを追加しています。
Imports InputManCell = GrapeCity.Win.CalendarGrid.InputMan Dim today As DateTime = DateTime.Today Dim GcComboBoxCellType As New InputManCell.CalendarGcComboBoxCellType() GcComboBoxCellType.ListColumns.Add(New InputManCell.ListColumn("カラム1")) GcCalendarGrid1.Content(today).Rows(1).Cells(0).CellType = GcComboBoxCellType GcCalendarGrid1.ScrollIntoView(today)
using InputManCell = GrapeCity.Win.CalendarGrid.InputMan; var today = DateTime.Today; var gcComboBoxCellType = new InputManCell.CalendarGcComboBoxCellType(); gcComboBoxCellType.ListColumns.Add(new InputManCell.ListColumn("カラム1")); gcCalendarGrid1.Content[today].Rows[1].Cells[0].CellType = gcComboBoxCellType; gcCalendarGrid1.ScrollIntoView(today);
カラム(ListColumn)は、主に次のプロパティを設定できます。
カラムの各設定は、既定値を設定しておくことによって、繰り返し設定を変更する手間を省略できます。カラムの既定値は、デザイナのプロパティウィンドウのListDefaultColumnプロパティから開かれる「カラムの既定値の設定」ダイアログで編集することができます。
デフォルトカラムは、ListDefaultColumnプロパティで設定します。ListDefaultColumnは、DefaultListColumn型のオブジェクトで以下のプロパティを設定することができます。
CalendarGcComboBoxCellTypeからカラムを削除するには、デザイナのプロパティウィンドウのListColumnsプロパティから開かれる「カラムの編集」ダイアログで、削除したいカラムを選択して[削除]ボタンをクリックします。カラムを1つ削除すると、CalendarGcComboBoxCellTypeのヘッダと項目から選択しカラムが1つ削除されます。
コードからカラムを削除するには、ListColumnCollectionのRemoveメソッドまたはRemoveAtメソッドを使用します。
次のコードは、RemoveAtメソッドを使用して先頭のカラムを1つ削除するサンプルコードです。
このサンプルでは、テンプレートのRowセクションにCalendarGcComboBoxCellType が配置されていることを前提とします。
Imports GrapeCity.Win.CalendarGrid Imports InputManCell = GrapeCity.Win.CalendarGrid.InputMan Dim today As DateTime = DateTime.Today Dim cellPos As CalendarCellPosition = GcCalendarGrid1.CurrentCellPosition Dim GcComboBoxCellType As InputManCell.CalendarGcComboBoxCellType = _ DirectCast(GcCalendarGrid1.Content(cellPos.Date).Rows(cellPos.RowIndex).Cells(cellPos.ColumnIndex).CellType, InputManCell.CalendarGcComboBoxCellType) GcComboBoxCellType.ListColumns.RemoveAt(0) GcCalendarGrid1.Content(today).Rows(1).Cells(0).CellType = GcComboBoxCellType GcCalendarGrid1.ScrollIntoView(today)
using GrapeCity.Win.CalendarGrid; using InputManCell = GrapeCity.Win.CalendarGrid.InputMan; var today = DateTime.Today; CalendarCellPosition cellPos = gcCalendarGrid1.CurrentCellPosition; InputManCell.CalendarGcComboBoxCellType gcComboBoxCellType = (gcCalendarGrid1.Content[cellPos.Date].Rows[cellPos.RowIndex].Cells[cellPos.ColumnIndex].CellType as InputManCell.CalendarGcComboBoxCellType); gcComboBoxCellType.ListColumns.RemoveAt(0); gcCalendarGrid1.Content[today].Rows[1].Cells[0].CellType = gcComboBoxCellType; gcCalendarGrid1.ScrollIntoView(today);
カラムのリサイズListHeader.AllowResizeプロパティをTrueに設定すると、アプリケーションの実行時にユーザーはマウス操作等でカラムのサイズを自由に変更できるようになります。
実行時にカラムのサイズ(幅)を変更するには、サイズを変更したいカラムの境界線の位置でマウスの左ボタンを押し、変更したいサイズに合わせてマウスカーソルを移動し、左ボタンを離します。
CalendarGcComboBoxCellType.ListHeaderPaneオブジェクトのVisibleプロパティを使用します。
リストボックスにヘッダを表示するには、ListHeaderPaneプロパティが参照するListHeaderPaneオブジェクトのVisibleプロパティをTrueに設定します。ListHeaderPaneは、ヘッダ領域の全体を表すオブジェクトで、ヘッダの外観などを設定することができます。ヘッダの外観の設定方法については、「外観を変更する」を参照してください。
リストボックスにカラムが設定されるとヘッダにはカラムヘッダが表示されます。
カラムヘッダの操作は、ListColumn.Headerプロパティで行います。Headerプロパティは、ListHeader型のプロパティです。
CalendarGcComboBoxCellType.ListColumn オブジェクトの Header プロパティを使用します。
ヘッダのタイトルを変更するには、ListHeader.Textプロパティを使用します。
以下にヘッダのテキストを変更する例を示します。次のサンプルコードでは、リストボックスに予め2つのカラムが追加されていることを前提にしています。
Imports InputManCell = GrapeCity.Win.CalendarGrid.InputMan Dim today As DateTime = DateTime.Today Dim GcComboBoxCellType As InputManCell.CalendarGcComboBoxCellType = _ DirectCast(GcCalendarGrid1(today)(1, 0).CellType, InputManCell.CalendarGcComboBoxCellType) GcComboBoxCellType.ListColumns(0).Header.Text = "カラム1" GcComboBoxCellType.ListColumns(1).Header.Text = "カラム2"
using InputManCell = GrapeCity.Win.CalendarGrid.InputMan; var today = DateTime.Today; InputManCell.CalendarGcComboBoxCellType gcComboBoxCellType = (gcCalendarGrid1[today][1, 0].CellType as InputManCell.CalendarGcComboBoxCellType); gcComboBoxCellType.ListColumns[0].Header.Text = "カラム1"; gcComboBoxCellType.ListColumns[1].Header.Text = "カラム2";
カラムヘッダにはテキスト以外に画像を表示することができます。
画像を表示するには、ListHeader.Imageプロパティを使用します。
Imageプロパティには、表示する画像のインデックスを設定します。Imageプロパティに設定するインデックスは、セルのImageListプロパティに設定したImageListオブジェクトのImagesプロパティが参照するImageList.ImageCollectionのインデックスです。
表示された画像の位置は、ListHeader.TextAttachAlignmentプロパティで設定します。
また、画像とテキストの距離は、ListHeader.ImageTextSpaceプロパティで設定します。
以下にヘッダに画像を変更する例を示します。次のサンプルコードでは、リストボックスに予め2つのカラムが追加されていることを前提にしています。
Imports GrapeCity.Win.CalendarGrid Imports InputManCell = GrapeCity.Win.CalendarGrid.InputMan Dim today As DateTime = DateTime.Today Dim GcComboBoxCellType As InputManCell.CalendarGcComboBoxCellType = _ DirectCast(GcCalendarGrid1(today)(1, 0).CellType, InputManCell.CalendarGcComboBoxCellType) ' ImageListプロパティを設定 Dim iList As New ImageList() iList.Images.Add(Image.FromFile("C:\Image1.bmp")) iList.Images.Add(Image.FromFile("C:\Image2.bmp")) GcComboBoxCellType.ImageList = iList ' ヘッダに画像を設定 GcComboBoxCellType.ListColumns(0).Header.Image = 0 GcComboBoxCellType.ListColumns(0).Header.TextAttachAlignment = InputManCell.AttachAlignment.LeftMiddle GcComboBoxCellType.ListColumns(0).Header.ImageTextSpace = 3 GcComboBoxCellType.ListColumns(1).Header.Image = 1 GcComboBoxCellType.ListColumns(1).Header.TextAttachAlignment = InputManCell.AttachAlignment.LeftMiddle GcComboBoxCellType.ListColumns(1).Header.ImageTextSpace = 3
using GrapeCity.Win.CalendarGrid; using InputManCell = GrapeCity.Win.CalendarGrid.InputMan; var today = DateTime.Today; InputManCell.CalendarGcComboBoxCellType gcComboBoxCellType = (gcCalendarGrid1[today][1, 0].CellType as InputManCell.CalendarGcComboBoxCellType); // ImageListプロパティを設定 ImageList iList = new ImageList(); iList.Images.Add(Image.FromFile("C:\\Image1.bmp")); iList.Images.Add(Image.FromFile("C:\\Image2.bmp")); gcComboBoxCellType.ImageList = iList; // ヘッダに画像を設定 gcComboBoxCellType.ListColumns[0].Header.Image = 0; gcComboBoxCellType.ListColumns[0].Header.TextAttachAlignment = InputManCell.AttachAlignment.LeftMiddle; gcComboBoxCellType.ListColumns[0].Header.ImageTextSpace = 3; gcComboBoxCellType.ListColumns[1].Header.Image = 1; gcComboBoxCellType.ListColumns[1].Header.TextAttachAlignment = InputManCell.AttachAlignment.LeftMiddle; gcComboBoxCellType.ListColumns[1].Header.ImageTextSpace = 3;
ListHeader.Ellipsisプロパティを使用すると、ヘッダのテキストの長さがカラムの幅より大きいとき、省略文字を表示するかどうか設定することができます。
注意 ソート機能は、CalendarGcComboBoxCellTypeがデータソースに接続している場合には無効となります。 |
ソートの方法(昇順または降順)を設定するには、カラムのSortOrderプロパティを使用します。SortOrderは、System.Windows.Forms.SortOrder型のプロパティです。
SortOrderの値 | 説明 |
---|---|
SortOrder.None |
ソートなし |
SortOrder.Ascending |
昇順 |
SortOrder.Descending |
降順 |
次のサンプルコードは、先頭のカラムを基準に昇順でソートする例です。
Imports InputManCell = GrapeCity.Win.CalendarGrid.InputMan Dim today As DateTime = DateTime.Today Dim gcComboBoxCellType = New InputManCell.CalendarGcComboBoxCellType() ' リストボックスにカラムを追加 GcComboBoxCellType.ListColumns.AddRange(New InputManCell.ListColumn() {New InputManCell.ListColumn("カラム1"), New InputManCell.ListColumn("カラム2")}) ' リストボックスに項目を追加 GcComboBoxCellType.Items.AddRange(New InputManCell.ListItem() { New InputManCell.ListItem(New InputManCell.SubItem() {New InputManCell.SubItem("BBB"), New InputManCell.SubItem("ううう")}), New InputManCell.ListItem(New InputManCell.SubItem() {New InputManCell.SubItem("CCC"), New InputManCell.SubItem("あああ")}), New InputManCell.ListItem(New InputManCell.SubItem() {New InputManCell.SubItem("AAA"), New InputManCell.SubItem("いいい")}) }) ' ソートの基準をカラム1に指定し、ソート方法を昇順に設定 GcComboBoxCellType.ListSortColumnIndex = 0 GcComboBoxCellType.ListColumns(0).SortOrder = SortOrder.Ascending GcCalendarGrid1.Content(today).Rows(1).Cells(0).CellType = gcComboBoxCellType
using InputManCell = GrapeCity.Win.CalendarGrid.InputMan; var today = DateTime.Today; var gcComboBoxCellType = new InputManCell.CalendarGcComboBoxCellType(); // リストボックスにカラムを追加 gcComboBoxCellType.ListColumns.AddRange(new InputManCell.ListColumn[] { new InputManCell.ListColumn("カラム1"), new InputManCell.ListColumn("カラム2") }); // リストボックスに項目を追加 gcComboBoxCellType.Items.AddRange(new InputManCell.ListItem[] { new InputManCell.ListItem(new InputManCell.SubItem[]{new InputManCell.SubItem("BBB"), new InputManCell.SubItem("ううう")}), new InputManCell.ListItem(new InputManCell.SubItem[]{new InputManCell.SubItem("CCC"), new InputManCell.SubItem("あああ")}), new InputManCell.ListItem(new InputManCell.SubItem[]{new InputManCell.SubItem("AAA"), new InputManCell.SubItem("いいい")}) }); // ソートの基準をカラム1に指定し、ソート方法を昇順に設定 gcComboBoxCellType.ListSortColumnIndex = 0; gcComboBoxCellType.ListColumns[0].SortOrder = SortOrder.Ascending; gcCalendarGrid1.Content[today].Rows[1].Cells[0].CellType = gcComboBoxCellType;
(図) 上記サンプルコードを適用したセル
ヘッダに用意されたソート機能を使用すれば、アプリケーション実行時にユーザーが動的にソートを行うこともできます。ユーザーにソートを許可するには、ヘッダのClickableプロパティをTrueに設定します。
ClickableプロパティをTrueに設定するとヘッダをクリックすることで、クリックしたカラムの内容で項目がソートされます。ヘッダをクリックする毎に並び替えが昇順と降順で切り替わります。項目が昇順でソートされているか、降順でソートされているかは、ヘッダに表示されたソートインジケータの向きで判別することができます。
次のサンプルコードは、ヘッダでのソートを許可する例です。
Imports InputManCell = GrapeCity.Win.CalendarGrid.InputMan Dim today As DateTime = DateTime.Today Dim gcComboBoxCellType = New InputManCell.CalendarGcComboBoxCellType() ' リストボックスにカラムを追加 gcComboBoxCellType.ListColumns.AddRange(New InputManCell.ListColumn() {New InputManCell.ListColumn("カラム1"), New InputManCell.ListColumn("カラム2")}) ' リストボックスに項目を追加 gcComboBoxCellType.Items.AddRange(New InputManCell.ListItem() { _ New InputManCell.ListItem(New InputManCell.SubItem() {New InputManCell.SubItem("BBB"), New InputManCell.SubItem("ううう")}), _ New InputManCell.ListItem(New InputManCell.SubItem() {New InputManCell.SubItem("CCC"), New InputManCell.SubItem("あああ")}), _ New InputManCell.ListItem(New InputManCell.SubItem() {New InputManCell.SubItem("AAA"), New InputManCell.SubItem("いいい")}) _ }) ' ヘッダをクリックできるように設定 gcComboBoxCellType.ListColumns(0).Header.Clickable = True gcComboBoxCellType.ListColumns(1).Header.Clickable = True GcCalendarGrid1.Content(today).Rows(1).Cells(0).CellType = gcComboBoxCellType
using InputManCell = GrapeCity.Win.CalendarGrid.InputMan; var today = DateTime.Today; var gcComboBoxCellType = new InputManCell.CalendarGcComboBoxCellType(); // リストボックスにカラムを追加 gcComboBoxCellType.ListColumns.AddRange(new InputManCell.ListColumn[] { new InputManCell.ListColumn("カラム1"), new InputManCell.ListColumn("カラム2") }); // リストボックスに項目を追加 gcComboBoxCellType.Items.AddRange(new InputManCell.ListItem[] { new InputManCell.ListItem(new InputManCell.SubItem[]{new InputManCell.SubItem("BBB"), new InputManCell.SubItem("ううう")}), new InputManCell.ListItem(new InputManCell.SubItem[]{new InputManCell.SubItem("CCC"), new InputManCell.SubItem("あああ")}), new InputManCell.ListItem(new InputManCell.SubItem[]{new InputManCell.SubItem("AAA"), new InputManCell.SubItem("いいい")}) }); // ヘッダをクリックできるように設定 gcComboBoxCellType.ListColumns[0].Header.Clickable = true; gcComboBoxCellType.ListColumns[1].Header.Clickable = true; gcCalendarGrid1.Content[today].Rows[1].Cells[0].CellType = gcComboBoxCellType;
リストボックス(ドロップダウンウィンドウ)は、DropDown.AutoWidthプロパティを設定して幅を自動調整できます。
AutoWidthプロパティをTrueに設定すると、追加されているカラムを全て表示するようにリストボックスの幅が調整されます。
注意 ドロップダウンウィンドウがマウスによってリサイズされた場合にはリサイズ後のサイズが保持され、プロパティの設定は無視されます。 |
リストボックス(ドロップダウンウィンドウ)は、次のプロパティによって高さを設定することが可能です。
プロパティの種類 | 説明 |
---|---|
DropDown.Height |
ドロップダウンウィンドウの高さを取得または設定します。 |
DropDownMaxHeight |
ドロップダウンウィンドウの最大の高さを取得または設定します。 |
MaxDropDownItems |
ドロップダウンウィンドウに表示される項目の最大数を取得または設定します。 |
これらのプロパティには優先度があり、高さは優先度順で設定されます。
DropDown.Height > DropDownMaxHeight > MaxDropDownItems |
注意 ドロップダウンウィンドウがマウスによってリサイズされた場合にはリサイズ後のサイズが保持され、プロパティの設定は無視されます。 |