ガントチャート作成日記

あいかわらずのんびりと作成中。
タスクの削除を付けたが、チャートの削除をまだつけていないことに気づいた。
っていうかそれ以前にデータの保存処理を付けてないし、初期の日付範囲とかも一切つけていない。



プロジェクトの初期設定として、プロジェクトの開始日・終了日を変更できるようにすることから始めるべきかな・・・。

頑張ったところとしては、左側のタスクの一番左側のタスクの縦幅を広げて、大きいグループの範囲を広げた時に、濃い線をタスクの一覧とガントチャートの一覧に表示して、どこまでがグループに属しているかをわかりやすくしたことと、マウスで複数のチャートを選択・移動できるようにした。

グループを表現する線についてはGanttGridTemplateSelecter.csとGanttGridTaskViewTemplateSelecter.csにパターンを追加して、DataTemplateを新しく定義してこちゃこちゃすればできるけど、マウスでの移動については一苦労した。
CanvasコントロールをGridコントロールの下に張り付けて、Rectを新たに描画している。

Canvasコントロールを追加したことでスクロールバーがうまく出なくなってしまったので、SizeChangeイベントで変更するようにした。

マウスの範囲選択でGridコントロール上のチャートを選択するのもネットで調べてみるといろいろとサンプルがある。
世の中にはすごい人がいるなぁ。

<ソース>
        #region 右側のCanvasのサイズを合わせる

        // マウスで複数選択をさせるためにCanvasコントロールを利用しているがCanvasコントロールはScrollBarが出しずらい
        // ガントチャートの上にCanvasをTransportで重ねることも考えたが、チャートをクリックできなくなってしまう。
        // Canvasコントロールをクリックしたときの通知などをチャート側に伝えるようにすればよいが、さすがに手間なので
        // Canvasコントロールのサイズを変更しScrollBarが出るようにした。

        /// <summary>
        /// 幅を合わせる
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void gridCalender_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            Grid grid = (Grid)sender;
            CalenderBaseCanvas.Width = e.NewSize.Width;
        }

        /// <summary>
        /// 高さはタスク一覧側と同じになるので合わせる
        /// gridCalender側と合わせるとタスクが少ないときにスクロールバーが上に出てしまう
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void icTaskGrid_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            CalenderBaseCanvas.Height = icTaskGrid.ActualHeight;
        }
        #endregion

<DownLoad>

ガントチャート作成日記

久しぶりの更新。
ガントチャートを自分で自由に作成できるツールを作ってみているが、いい感じになってきた。(保存はできないけど・・・。)

左側に一覧を作って、自分で縦幅を自由に変えて、グループを表現しつつ、右側にチャートやメモを配置していく。

スマホのゲームをしながらだからいつになるかわからないけど・・・。


試行錯誤をしながらだが、根本は変わらない。Gridコントロールにコントロールを配置していくだけ。DataTemplateSelecterでDataTemplateを切り替えてコントロールを切り替えていく。慣れてくると簡単に表現できるようになってくるので楽しい。
Paintイベントで頑張る必要もないので作りやすい。
ただし、データ数が多くなると速度が気になりそう・・・。

まぁ趣味だしいいよね。

<DownLoad>

PowerShellでEdgeを自動化(インストール不要。参考:郵便追跡サービス自動操作)

1.経緯について  RPAのソフトをインストールできないので、これまでVBSでCreateObjectでブラウザの自動操作をすることがたまにあった。 ※いざというときの手札として持っているだけで安心感が段違い  見た目上IEがインストールされていなくても、CreateObject...