- [DATABASE] Hướng dẫn thêm và cập nhật Extended Property Column trong Table Sqlserver
- [DEVEXPRESS] Hướng dẫn sử dụng Vertical Gridview để hiển thị thông tin sản phẩm
- [C#] Hướng dẫn sử dụng Json Schema để Validate chuỗi string có phải json
- [C#] Hướng dẫn sử dụng công cụ Clean Code trên Visual Studio
- [C#] Hướng dẫn Drag and Drop File vào RichTextBox
- [C#] Hướng dẫn tạo hiệu ứng Karaoke Text Effect Winform
- [C#] Sử dụng thư viện ZedGraph vẽ biểu đồ Line, Bar, Pie trên Winform
- [DATABASE] Hướng dẫn sort sắp xếp địa chỉ IP trên sqlserver sử dụng hàm PARSENAME
- [C#] Theo dõi sử kiện process Start hay Stop trên Winform
- [ASP.NET] Chia sẻ source code chụp hình sử dụng camera trên website
- [C#] Chạy ứng dụng trên Virtual Desktop (màn hình ảo) Winform
- [C#] Mã hóa và giải mã Data Protection API trên winform
- [C#] Hướng dẫn tạo Gradient Background trên Winform
- [DATABASE] Hướng dẫn convert Epoch to DateTime trong sqlserver
- [DATABASE] Hướng dẫn sử dụng STRING_AGG và CONCAT_WS trong sqlserver 2017
- [C#] Hướng dẫn Copy With All Property in Class Object
- [DEVEXPRESS] Hướng dẫn load Json DataSource vào GridView
- [C#] Hướng dẫn tạo chữ ký trên winform Signature Pad
- [DEVEXPRESS] Format code T-SQL highlight in RichEditControl
- [C#] Hướng dẫn upload file, hình ảnh từ Winform lên server API ASP.NET Core
[Devexpress] Biểu đồ Gantt là gì? Hướng dẫn lập trình vẽ biểu đồ Gantt dự án VB.NET
Ứng dụng biểu đồ Gantt để quản lý dự án hiệu quả.
Biểu đồ Gantt là gì?
Biểu đồ Gantt là một dạng biểu đồ thường được sử dụng để quản lý dự án, là một trong những cách phổ biến và hữu dụng để trình bày các hoạt động (nhiệm vụ hoặc sự kiện) được trình bày dựa trên thời gian. Phía bên trái của biểu đồ là danh sách các hoạt động và dọc theo phía trên là thời gian thích hợp. Mỗi hoạt động được biểu thị bằng một thanh dài, phản ảnh ngày bắt đầu, thời gian và ngày kết thúc, điều này cho phép bạn nhìn thấy trong nháy mắt:
- Tên các hoạt động
- Thời gian mỗi hoạt động bắt đầu và kết thúc
- Hoạt động đó sẽ kéo dài trong thời gian bao lâu
- Các trường hợp chồng chéo về thời gian giữa các hoạt động
- Thời gian bắt đầu và kết thúc của cả dự án
Nhìn chung, Gantt chart hiển thị cho bạn việc gì cần phải hoàn thành hoạt động (activities) và khi nào cần hoàn thành (when)
Lịch sử ra đời biểu đồ Gantt
Biểu đồ Gantt lần đầu tiên được công bố vào giữa những năm 90 của thế kỷ 18 bởi Karol Adamiecki, một kỹ sư và đồng thời là chủ một nhà máy thép ở miền nam Ba Lan, có quan tâm đến những ý tưởng quản lý và kỹ thuật. Tuy nhiên phải đến 15 năm sau, khi Henry Gantt, một kỹ sư và nhà tư vấn quản lý người Mỹ đã đưa ra phiên bản đồ thị của riêng mình thì dạng biểu đồ này mới trở nên phổ biến ở các nước phương tây. Chính vì vậy, người ta dùng tên của Henry Gantt để đặt tên cho biểu đồ này.
Biểu đồ Gantt truyền thống được tạo bằng cách vẽ tay rất công phu, mỗi khi dự án có thay đổi thì biểu đồ Gantt cũng cần được sửa đổi hoặc vẽ lại. Điều này đã tạo nên một hạn chế lớn đối với việc ứng dụng biểu đồ Gantt. Tuy nhiên với sự ra đời của máy tính và các phần mềm máy tính, biểu đồ Gantt ngày nay có thể được khởi tạo, cập nhật và in ra một cách dễ dàng.
Hiện tại, người ta sử dụng biểu đồ Gantt chủ yếu để theo dõi tiến độ dự án hoặc công việc. Biều đồ này còn có thể hiển thị thêm các thông tin về các nhiệm vụ khác nhau hoặc các giai đoạn của dự án, ví dụ như các nhiệm vụ liên quan đến nhau như thế nào, mỗi công việc đã tiến triển đến đâu, những nguồn lực được sử dụng cho từng nhiệm vụ…
Bây giờ mình sẽ demo ứng dụng vẽ biểu đồ Gantt sử dụng công cụ Chart control trong Devexpress bằng ngôn ngữ VB.NET
Giao diện demo biểu đồ gantt:
Source code:
Imports DevExpress.XtraCharts
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
' Tạo mới biểu đồ
Dim overlappedGanttChart As New ChartControl()
' Tạo 2 line chart gantt
Dim series1 As New Series("Kế hoạch", ViewType.Gantt)
Dim series2 As New Series("Hoàn thành", ViewType.Gantt)
series1.ValueScaleType = ScaleType.DateTime
series2.ValueScaleType = ScaleType.DateTime
' Cài đặt ngày bắt đầu và kết thúc cho từng line chart
series1.Points.Add(New SeriesPoint("Thiết kế thi công Resort ABC",
New DateTime() {New DateTime(2013, 10, 15), New DateTime(2019, 5, 10)}))
series1.Points.Add(New SeriesPoint("Hỗ trợ khách hàng 2016",
New DateTime() {New DateTime(2015, 2, 1), New DateTime(2016, 2, 1)}))
series1.Points.Add(New SeriesPoint("Triển khai dự án ERP",
New DateTime() {New DateTime(2016, 2, 1), New DateTime(2016, 12, 31)}))
series1.Points.Add(New SeriesPoint("Nghiên cứu mở rộng sản phẩm",
New DateTime() {New DateTime(2016, 5, 1), New DateTime(2016, 12, 31)}))
series1.Points.Add(New SeriesPoint("Test sản phẩm",
New DateTime() {New DateTime(2016, 8, 1), New DateTime(2016, 11, 30)}))
series1.Points.Add(New SeriesPoint("Test 14/11/2016",
New DateTime() {New DateTime(2016, 10, 1), New DateTime(2017, 1, 31)}))
series1.Points.Add(New SeriesPoint("Dự án ngày 29/11",
New DateTime() {New DateTime(2016, 11, 5), New DateTime(2017, 1, 31)}))
series1.Points.Add(New SeriesPoint("Tuần 45/2016",
New DateTime() {New DateTime(2016, 11, 7), New DateTime(2017, 11, 12)}))
series2.Points.Add(New SeriesPoint("Thiết kế thi công Resort ABC",
New DateTime() {New DateTime(2013, 10, 15), New DateTime(2016, 8, 26)}))
series2.Points.Add(New SeriesPoint("Hỗ trợ khách hàng 2016",
New DateTime() {New DateTime(2015, 2, 1), New DateTime(2015, 5, 26)}))
series2.Points.Add(New SeriesPoint("Triển khai dự án ERP",
New DateTime() {New DateTime(2016, 2, 1), New DateTime(2016, 9, 26)}))
series2.Points.Add(New SeriesPoint("Nghiên cứu mở rộng sản phẩm",
New DateTime() {New DateTime(2016, 5, 1), New DateTime(2016, 11, 1)}))
series2.Points.Add(New SeriesPoint("Test sản phẩm",
New DateTime() {New DateTime(2016, 8, 1), New DateTime(2016, 9, 30)}))
series2.Points.Add(New SeriesPoint("Test 14/11/2016",
New DateTime() {New DateTime(2016, 10, 1), New DateTime(2017, 1, 31)}))
series2.Points.Add(New SeriesPoint("Dự án ngày 29/11",
New DateTime() {New DateTime(2016, 11, 5), New DateTime(2017, 1, 1)}))
overlappedGanttChart.Series.AddRange(New Series() {series1, series2})
CType(series1.View, GanttSeriesView).BarWidth = 0.6
CType(series2.View, GanttSeriesView).BarWidth = 0.2
Dim myDiagram As GanttDiagram = CType(overlappedGanttChart.Diagram, GanttDiagram)
myDiagram.AxisY.Interlaced = True
myDiagram.AxisY.GridSpacing = 10
myDiagram.AxisY.Label.Angle = -30
myDiagram.AxisY.DateTimeOptions.Format = DateTimeFormat.ShortDate
CType(series1.View, GanttSeriesView).LinkOptions.ArrowHeight = 7
CType(series1.View, GanttSeriesView).LinkOptions.ArrowWidth = 11
For i As Integer = 1 To series1.Points.Count - 1
series1.Points(i).Relations.Add(series1.Points(i - 1))
Next i
overlappedGanttChart.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Right
overlappedGanttChart.Titles.Add(New ChartTitle())
overlappedGanttChart.Titles(0).Text = "BIỂU ĐỒ GANTT DỰ ÁN RESORT ABC"
overlappedGanttChart.Dock = DockStyle.Fill
Me.Controls.Add(overlappedGanttChart)
End Sub
End Class
CHÚC CÁC BẠN THÀNH CÔNG!