2010-05-18 163 views
1

我已經在Flex中創建了一個用於創建簡單時間表的程序,類似於MS Project或Vico Control。我有一個問題想要解決。 (你可以在這裏看到:OnTime Project Scheduling tool made in Flex自定義數據網格顯示任務之間的連接

時間表的任務被表示爲甘特圖,爲此我在DataGrid的一行中創建了一個itemRenderer,任務顯示爲甘特圖,但我也會喜歡顯示任務之間的連通性

請看看下面的圖片,看看我在這裏試圖完成什麼:(上圖是datagrid現在的樣子,下面是我想要的樣子添加) alt text http://img202.imageshack.us/img202/1399/gantt.jpg

有關如何在DataGrid的項目渲染器中執行此操作的任何建議?

非常感謝 拉迪斯拉夫

+0

任何人有任何評論...? – Ladislav 2010-05-19 15:27:17

+0

見下文。我告訴過你我們會說話。 – Robusto 2010-05-20 16:28:46

回答

1

好的,這是你需要做的。

  1. 在你的數據提供程序,有一個字段是一個對象(你應該讓一個類),其中包含以下屬性: 開始:數字(百分比) 長度:數字(百分比) 指數:詮釋 [可選道具isFirst:Boolean,isLast:Boolean]

  2. 使用容器(讓我們說Canvas)創建一個itemRenderer,並使用圖形類繪製一個矩形,其左邊對應於start屬性。這將是itemRender寬度的百分比,並且可以通過類的updateDisplayList protected方法中的unscaledWidth確定,您將覆蓋該方法。同樣,矩形的寬度對應於對象的長度屬性,以Canvas寬度的百分比表示。給它任何你喜歡的高度。

  3. 繪製連接器。再次使用圖形類來繪製水平線進出矩形的邊。給這些不變的長度。從水平線的末端繪製線條:左側爲0,右側爲高度,右側爲高度。

  4. 找出需要多長時間繪製中間連接器才能看起來連接到它上面的線。 這隻需要在itemRenderer的頂部完成。

  5. 如果isStart = true(對象的索引爲0),則不要在矩形的左邊或頂部繪製任何東西。如果isEnd = true(對象的索引是ArrayCollection.length -1),則不要在右邊或底部繪製任何東西。

然後你就完成了。您需要了解如何使用圖形對象進行繪製,但這非常簡單,無論如何,這都是您應該具備的功能。

+0

嘿羅布斯托, 將盡力使它工作,並讓你知道你的結果,thanx Ladislav – Ladislav 2010-05-21 06:19:53

相關問題