- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
[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!