1

MS Project や Vico Control に似た、単純なスケジュールを作成するためのプログラムを Flex で作成しました。解決したい問題が 1 つあります。(ここで確認できます: Flex で作成された OnTime Project Scheduling ツール

スケジュールのタスクはガント チャートとして表され、DataGrid の行の 1 つに itemRenderer を作成しました。タスクはガント ダイアグラムとして示されていますが、タスク間の接続性も示したいと思います。

下の画像を見て、ここで何を達成しようとしているのかを確認してください: (上は現在のデータグリッドの外観の画像で、下は追加したいものです) alt text http://img202.imageshack .us/img202/1399/gantt.jpg

DataGrid の項目レンダラー内でこれを行う方法について何か提案はありますか?

どうもありがとうラディスラフ

4

1 に答える 1

1

OK、これがあなたがする必要があることです。

  1. dataProvider で、1 つのフィールドを次のプロパティを含むオブジェクト (クラスにする必要があります) にします。

  2. コンテナー (Canvas としましょう) を使用して itemRenderer を作成し、グラフィックス クラスを使用して四角形を描画します。その左端は start プロパティに対応します。これは、itemRender の幅のパーセンテージになり、オーバーライドするクラスの updateDisplayList 保護メソッドの unscaledWidth から決定できます。同様に、長方形の幅は、キャンバスの幅のパーセンテージとして、オブジェクトの長さプロパティに対応します。好きな高さにしてください。

  3. コネクタを描画します。グラフィックス クラスを再度使用して、四角形の辺の内外に水平線を描画します。これらを一定の長さにします。水平線の端から線を引きます。左側の線は 0 まで、右側の線は this.height まで下げます。

  4. 中間コネクタがその上の線に接続されているように見えるようにするには、中間コネクタをどこまで引く必要があるかを計算します。これは、itemRenderer の上部に対してのみ行う必要があります。

  5. isStart=true (オブジェクトのインデックスが 0) の場合、長方形の左側または上部には何も描画しません。isEnd=true (オブジェクトのインデックスが ArrayCollection.length -1) の場合、右または下には何も描画しません。

これで完了です。グラフィックス オブジェクトを使用して描画する方法を理解する必要がありますが、これは非常に簡単であり、とにかくレパートリーに入れておく必要があります。

于 2010-05-20T15:30:23.490 に答える