インフラジスティックス・ジャパン株式会社のBlog

インフラジスティックス・ジャパン株式会社のチームメンバーが技術トレンド、製品Tips、サポート情報からライセンス、日々の業務から感じることなど、さまざまなトピックについてお伝えするBlogです。

GanttViewのグリッド部分のカスタマイズ

プロジェクト管理や工程管理など、タスクの進捗やスケジュールを確認するためのガントチャート。弊社製品では各プラットフォームにて用意されていますが、今日はWindowsForms向けのUltraGanttViewについてTipsを紹介します。

image 

グリッド部分のカスタマイズについては、UltraGanttView の GridSettings クラスにより、背景色やフォーマットの設定を行う事ができます。

            //選択セルの色設定
            this.ultraGanttView1.GridSettings.SelectionOverlayColor = Color.Green;
            //DateTime列のフォーマットを変更
            this.ultraGanttView1.GridSettings.ColumnSettings["DateTime"].Format = "yyyy/MM/dd HH:mm:ss";

しかし、この方法でのカスタマイズでは出来る範囲は限られており、より細かなプロパティ設定や、グリッドイベントをハンドルして処理を行うというような事ができません。

UltraGanttViewコントロールのグリッド部分は内部的には UltraGrid が利用されており、以下のコードで UltraGrid を抜き出すことができます。この抜き出したグリッドに対してカスタマイズを行う事で、UltraGrid と同じ容量でイベントハンドリングやグリッド特有のカスタマイズを行っていくことができます。

[グリッドの取得]

            //Gridの取得
            var grid = this.ultraGanttView1.GetType().InvokeMember("grid", BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic, null, ultraGanttView1, null) as UltraGrid;

[取得したグリッドのカスタマイズ]

            // **********************
            // GridSettingsでは実現できないカスタマイズを実装
            // **********************
            // 編集時のマスク文字の指定
            grid.DisplayLayout.Bands[0].Columns["DateTime"].MaskInput = "mm/dd hh:mm:ss";
            // リサイズ方法の指定
            grid.DisplayLayout.Override.RowSizing = RowSizing.AutoFree;
            // 編集時に利用されるコントロールの指定
            grid.DisplayLayout.Bands[0].Columns["DateTime"].EditorComponent = new UltraCalendarCombo();
            // イベントハンドリング
            grid.AfterExitEditMode += grid_AfterExitEditMode;

この方法を使うことで、UltraGrid と同じ要領で複雑なカスタマイズを組み込んでいくことができます!

[関連ページ]

GridSettingsによるカスタマイズ

弊社製品は機能制限なしのトライアル版もご用意しています。ダウンロードはこちらから。

jp.infragistics.com