在 Delphi Grid 中實現:每行首欄顯示核取方塊,支援行拖曳排序。參考圖片效果。

CheckBox 欄、RowDragDrop 事件、排序模式,幾行程式碼完成,穩定專業。TStringGrid / TDrawGrid 自繪 (高難度)OnDrawCell 中繪製核取框 (用 DrawFrameControl 或自繪)。TList 或 TBits 記錄各行選中狀態。OnMouseDown 擊測第 0 欄切換狀態並 InvalidateCell。SortIndex: Integer 欄位。OnMouseDown 記錄起始行,OnMouseMove 判斷拖曳閾值顯示插入標線,OnMouseUp 計算目標位置,調整資料陣列順序並重新賦值 SortIndex,最後 Invalidate。TListView 的 DragMode = dmAutomatic 配合 OnDragOver, OnDragDrop 實現 (需模擬 Grid 行高)。| 方案 | 開發時間 | 維護性 | 功能完整度 |
|---|---|---|---|
| 第三方控件 | 極短 | 高 | 完整 (含編輯、匯出、分組...) |
| 原生自繪 | 長 (數天~週) | 低 (邊界情況多) | 僅核心功能 |
除非專案極度精簡或禁止第三方元件,強烈建議購買/使用成熟 Grid 控件套件。